Pārlūkot izejas kodu

Merge branch 'master' into dev-wgk

Gaokun Wang 6 mēneši atpakaļ
vecāks
revīzija
6c7ea24644
20 mainītis faili ar 2817 papildinājumiem un 0 dzēšanām
  1. 145 0
      als-modules/agile-assurance/src/main/java/org/eco/als/controller/FaultStatisticsController.java
  2. 137 0
      als-modules/agile-assurance/src/main/java/org/eco/als/controller/JudgeFaultLogicController.java
  3. 219 0
      als-modules/agile-assurance/src/main/java/org/eco/als/domain/FaultStatistics.java
  4. 49 0
      als-modules/agile-assurance/src/main/java/org/eco/als/domain/JudgeFaultLogic.java
  5. 359 0
      als-modules/agile-assurance/src/main/java/org/eco/als/domain/bo/FaultStatisticsBo.java
  6. 56 0
      als-modules/agile-assurance/src/main/java/org/eco/als/domain/bo/JudgeFaultLogicBo.java
  7. 272 0
      als-modules/agile-assurance/src/main/java/org/eco/als/domain/vo/FaultStatisticsImportVo.java
  8. 303 0
      als-modules/agile-assurance/src/main/java/org/eco/als/domain/vo/FaultStatisticsVo.java
  9. 54 0
      als-modules/agile-assurance/src/main/java/org/eco/als/domain/vo/JudgeFaultLogicImportVo.java
  10. 74 0
      als-modules/agile-assurance/src/main/java/org/eco/als/domain/vo/JudgeFaultLogicVo.java
  11. 134 0
      als-modules/agile-assurance/src/main/java/org/eco/als/listener/FaultStatisticsImportListener.java
  12. 128 0
      als-modules/agile-assurance/src/main/java/org/eco/als/listener/JudgeFaultLogicImportListener.java
  13. 16 0
      als-modules/agile-assurance/src/main/java/org/eco/als/mapper/FaultStatisticsMapper.java
  14. 16 0
      als-modules/agile-assurance/src/main/java/org/eco/als/mapper/JudgeFaultLogicMapper.java
  15. 95 0
      als-modules/agile-assurance/src/main/java/org/eco/als/service/IFaultStatisticsService.java
  16. 95 0
      als-modules/agile-assurance/src/main/java/org/eco/als/service/IJudgeFaultLogicService.java
  17. 214 0
      als-modules/agile-assurance/src/main/java/org/eco/als/service/impl/FaultStatisticsServiceImpl.java
  18. 186 0
      als-modules/agile-assurance/src/main/java/org/eco/als/service/impl/JudgeFaultLogicServiceImpl.java
  19. 7 0
      als-modules/agile-assurance/src/main/resources/mapper/als/JudgeFaultLogicMapper.xml
  20. 258 0
      als-start/src/main/resources/db/dm/V1_0_0_5__als-ddl.sql

+ 145 - 0
als-modules/agile-assurance/src/main/java/org/eco/als/controller/FaultStatisticsController.java

@@ -0,0 +1,145 @@
+package org.eco.als.controller;
+
+import lombok.RequiredArgsConstructor;
+import jakarta.servlet.http.HttpServletResponse;
+import cn.hutool.core.collection.CollUtil;
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import org.eco.als.domain.vo.AirConfigurationImportVo;
+import org.eco.als.domain.vo.AirConfigurationVo;
+import org.eco.als.listener.AirConfigurationImportListener;
+import org.eco.als.listener.FaultStatisticsImportListener;
+import org.eco.common.excel.core.ExcelResult;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.validation.annotation.Validated;
+import org.eco.common.core.core.domain.CommonResult;
+import org.eco.common.log.annotation.Log;
+import org.eco.common.log.enums.BusinessType;
+import org.eco.common.security.utils.LoginHelper;
+import org.eco.common.core.core.domain.model.LoginUser;
+import org.eco.common.web.annotation.RepeatSubmit;
+import org.eco.common.excel.utils.ExcelUtil;
+import org.eco.common.web.core.BaseController;
+import jakarta.annotation.Resource;
+import org.eco.als.domain.vo.FaultStatisticsImportVo;
+import org.eco.als.domain.vo.FaultStatisticsVo;
+import org.eco.als.domain.bo.FaultStatisticsBo;
+import org.eco.als.service.IFaultStatisticsService;
+import org.springframework.web.multipart.MultipartFile;
+    import org.eco.common.core.core.page.PageResult;
+
+import java.util.List;
+import java.util.ArrayList;
+
+/**
+ * 故障统计Controller
+ *
+ * @author wgk
+ * @date 2024-12-13
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/als/faultStatistics")
+public class FaultStatisticsController extends BaseController {
+    @Resource
+    private IFaultStatisticsService faultStatisticsService;
+
+    /**
+     * 查询故障统计列表
+     */
+    @SaCheckPermission("als:faultStatistics:list")
+    @GetMapping("/list")
+    public CommonResult<PageResult<FaultStatisticsVo>> list(FaultStatisticsBo faultStatisticsBo) {
+        return CommonResult.success(faultStatisticsService.selectPage(faultStatisticsBo));
+    }
+
+    /**
+     * 查询故障统计列表
+     */
+    @SaCheckPermission("als:faultStatistics:list")
+    @GetMapping("/listAll")
+    public CommonResult<List<FaultStatisticsVo>> listAll(FaultStatisticsBo faultStatisticsBo) {
+        return CommonResult.success(faultStatisticsService.selectList(faultStatisticsBo));
+    }
+
+    /**
+     * 导出故障统计列表
+     */
+//    @SaCheckPermission("als:faultStatistics:export")
+    @Log(title = "故障统计", businessType = BusinessType.EXPORT)
+    @GetMapping("/export")
+    public void export(HttpServletResponse response, FaultStatisticsBo faultStatisticsBo) {
+        List<FaultStatisticsVo> list = faultStatisticsService.selectList(faultStatisticsBo);
+        ExcelUtil.exportExcel(list, "故障统计", FaultStatisticsVo.class, response);
+    }
+
+    @SaCheckPermission("als:faultStatistics:import")
+    @GetMapping("/importTemplate")
+    public void importTemplate(HttpServletResponse response) {
+        ExcelUtil.exportExcel(new ArrayList<>(), "故障统计", FaultStatisticsImportVo.class, response);
+    }
+
+    /**
+     * 导入故障统计列表
+     */
+    @Log(title = "故障统计", businessType = BusinessType.IMPORT)
+    @PostMapping("/importData")
+    public CommonResult<Void> importData(MultipartFile file, boolean updateSupport) throws Exception {
+        LoginUser loginUser = LoginHelper.getLoginUser();
+        ExcelResult<FaultStatisticsImportVo> result = ExcelUtil.importExcel(file.getInputStream(), FaultStatisticsImportVo.class, new FaultStatisticsImportListener(updateSupport, loginUser));
+        return CommonResult.success(result.getAnalysis().getLogInfo());
+    }
+
+    /**
+     * 获取故障统计详细信息
+     */
+    @SaCheckPermission("als:faultStatistics:query")
+    @GetMapping(value = "/{id}")
+    public CommonResult<FaultStatisticsVo> getInfo(@PathVariable Long id) {
+        return CommonResult.success(faultStatisticsService.selectById(id));
+    }
+
+    /**
+     * 新增故障统计
+     */
+    @SaCheckPermission("als:faultStatistics:add")
+    @Log(title = "故障统计", businessType = BusinessType.INSERT)
+    @RepeatSubmit()
+    @PostMapping
+    public CommonResult<Void> add(@Validated @RequestBody FaultStatisticsBo faultStatisticsBo) {
+        boolean inserted = faultStatisticsService.insert(faultStatisticsBo);
+        if (!inserted) {
+            return CommonResult.fail("新增故障统计记录失败!");
+        }
+        return CommonResult.success();
+    }
+
+    /**
+     * 修改故障统计
+     */
+    @SaCheckPermission("als:faultStatistics:edit")
+    @Log(title = "故障统计", businessType = BusinessType.UPDATE)
+    @RepeatSubmit()
+    @PutMapping
+    public CommonResult<Void> edit(@Validated @RequestBody FaultStatisticsBo faultStatisticsBo) {
+        boolean updated = faultStatisticsService.update(faultStatisticsBo);
+        if (!updated) {
+            return CommonResult.fail("修改故障统计记录失败!");
+        }
+        return CommonResult.success();
+    }
+
+    /**
+     * 删除故障统计
+     */
+    @SaCheckPermission("als:faultStatistics:remove")
+    @Log(title = "故障统计", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public CommonResult<Void> remove(@PathVariable Long[] ids) {
+        boolean deleted = faultStatisticsService.deleteByIds(ids);
+        if (!deleted) {
+            return CommonResult.fail("删除故障统计记录失败!");
+        }
+        return CommonResult.success();
+    }
+}

+ 137 - 0
als-modules/agile-assurance/src/main/java/org/eco/als/controller/JudgeFaultLogicController.java

@@ -0,0 +1,137 @@
+package org.eco.als.controller;
+
+import lombok.RequiredArgsConstructor;
+import jakarta.servlet.http.HttpServletResponse;
+import cn.hutool.core.collection.CollUtil;
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.validation.annotation.Validated;
+import org.eco.common.core.core.domain.CommonResult;
+import org.eco.common.log.annotation.Log;
+import org.eco.common.log.enums.BusinessType;
+import org.eco.common.security.utils.LoginHelper;
+import org.eco.common.core.core.domain.model.LoginUser;
+import org.eco.common.web.annotation.RepeatSubmit;
+import org.eco.common.excel.utils.ExcelUtil;
+import org.eco.common.web.core.BaseController;
+import jakarta.annotation.Resource;
+import org.eco.als.domain.vo.JudgeFaultLogicImportVo;
+import org.eco.als.domain.vo.JudgeFaultLogicVo;
+import org.eco.als.domain.bo.JudgeFaultLogicBo;
+import org.eco.als.service.IJudgeFaultLogicService;
+import org.springframework.web.multipart.MultipartFile;
+    import org.eco.common.core.core.page.PageResult;
+
+import java.util.List;
+import java.util.ArrayList;
+
+/**
+ * 判故逻辑Controller
+ *
+ * @author wgk
+ * @date 2024-12-11
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/als/judgeFaultLogic")
+public class JudgeFaultLogicController extends BaseController {
+    @Resource
+    private IJudgeFaultLogicService judgeFaultLogicService;
+
+/**
+ * 查询判故逻辑列表
+ */
+@SaCheckPermission("als:judgeFaultLogic:list")
+@GetMapping("/list")
+    public CommonResult<PageResult<JudgeFaultLogicVo>> list(JudgeFaultLogicBo judgeFaultLogicBo) {
+        return CommonResult.success(judgeFaultLogicService.selectPage(judgeFaultLogicBo));
+    }
+
+    /**
+     * 导出判故逻辑列表
+     */
+    @SaCheckPermission("als:judgeFaultLogic:export")
+    @Log(title = "判故逻辑", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public CommonResult<Void> export(JudgeFaultLogicBo judgeFaultLogicBo) {
+        LoginUser loginUser = LoginHelper.getLoginUser();
+        List<JudgeFaultLogicVo> list = judgeFaultLogicService.selectList(judgeFaultLogicBo);
+        if (CollUtil.isEmpty(list)) {
+            return CommonResult.fail("导出列表为空");
+        }
+            judgeFaultLogicService.asyncExport(list, "判故逻辑", loginUser);
+        return CommonResult.success();
+    }
+
+    @SaCheckPermission("als:judgeFaultLogic:import")
+    @PostMapping("/importTemplate")
+    public void importTemplate(HttpServletResponse response) {
+        ExcelUtil.exportExcel(new ArrayList<>(), "判故逻辑", JudgeFaultLogicImportVo.class, response);
+    }
+
+    /**
+     * 导入判故逻辑列表
+     */
+    @Log(title = "判故逻辑", businessType = BusinessType.IMPORT)
+    @SaCheckPermission("als:judgeFaultLogic:import")
+    @PostMapping("/importData")
+    public CommonResult<Void> importData(MultipartFile file, boolean updateSupport) {
+        LoginUser loginUser = LoginHelper.getLoginUser();
+            judgeFaultLogicService.asyncImportData(file, updateSupport, loginUser);
+        return CommonResult.success();
+    }
+
+    /**
+     * 获取判故逻辑详细信息
+     */
+    @SaCheckPermission("als:judgeFaultLogic:query")
+    @GetMapping(value = "/{id}")
+    public CommonResult<JudgeFaultLogicVo> getInfo(@PathVariable Long id) {
+        return CommonResult.success(judgeFaultLogicService.selectById(id));
+    }
+
+    /**
+     * 新增判故逻辑
+     */
+    @SaCheckPermission("als:judgeFaultLogic:add")
+    @Log(title = "判故逻辑", businessType = BusinessType.INSERT)
+    @RepeatSubmit()
+    @PostMapping
+    public CommonResult<Void> add(@Validated @RequestBody JudgeFaultLogicBo judgeFaultLogicBo) {
+        boolean inserted = judgeFaultLogicService.insert(judgeFaultLogicBo);
+        if (!inserted) {
+            return CommonResult.fail("新增判故逻辑记录失败!");
+        }
+        return CommonResult.success();
+    }
+
+    /**
+     * 修改判故逻辑
+     */
+    @SaCheckPermission("als:judgeFaultLogic:edit")
+    @Log(title = "判故逻辑", businessType = BusinessType.UPDATE)
+    @RepeatSubmit()
+    @PutMapping
+    public CommonResult<Void> edit(@Validated @RequestBody JudgeFaultLogicBo judgeFaultLogicBo) {
+        boolean updated = judgeFaultLogicService.update(judgeFaultLogicBo);
+        if (!updated) {
+            return CommonResult.fail("修改判故逻辑记录失败!");
+        }
+        return CommonResult.success();
+    }
+
+    /**
+     * 删除判故逻辑
+     */
+    @SaCheckPermission("als:judgeFaultLogic:remove")
+    @Log(title = "判故逻辑", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public CommonResult<Void> remove(@PathVariable Long[] ids) {
+        boolean deleted = judgeFaultLogicService.deleteByIds(ids);
+        if (!deleted) {
+            return CommonResult.fail("删除判故逻辑记录失败!");
+        }
+        return CommonResult.success();
+    }
+}

+ 219 - 0
als-modules/agile-assurance/src/main/java/org/eco/als/domain/FaultStatistics.java

@@ -0,0 +1,219 @@
+package org.eco.als.domain;
+
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.mybatisflex.annotation.Column;
+import com.mybatisflex.annotation.Id;
+import com.mybatisflex.annotation.Table;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serial;
+import org.eco.common.orm.core.domain.BaseEntity;
+
+/**
+ * 故障统计对象 als_fault_statistics_t
+ *
+ * @author wgk
+ * @date 2024-12-13
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@Table(value = "als_fault_statistics_t")
+public class FaultStatistics extends BaseEntity {
+@Serial
+private static final long serialVersionUID = 1L;
+
+    /** 编号 */
+    @Id
+    private Long id;
+
+    /** 日期 */
+    private Date statisticsDate;
+
+    /** 战区 */
+    private String warZone;
+
+    /** 军 */
+    private String army;
+
+    /** 师 */
+    private String division;
+
+    /** 团 */
+    private String groups;
+
+    /** 中队 */
+    private String squadron;
+
+    /** 飞机号 */
+    private String aircraftNum;
+
+    /** 机型 */
+    private String aircraftModel;
+
+    /** 出厂号码 */
+    private String factoryNum;
+
+    /** 机件类型 */
+    private String machineType;
+
+    /** 机件号 */
+    private String machineNum;
+
+    /** 机件型别 */
+    private String machineModel;
+
+    /** 机件名称 */
+    private String machineName;
+
+    /** 起落 */
+    private String landingGear;
+
+    /** 专业 */
+    private String major;
+
+    /** 故障件名称 */
+    private String faultyPartsName;
+
+    /** 故障件型别 */
+    private String faultyPartsModel;
+
+    /** 故障件号码 */
+    private String faultyPartsNum;
+
+    /** 故障件所属发动机型别 */
+    private String engineModel;
+
+    /** 故障件所属发动机号码 */
+    private String engineNum;
+
+    /** 故障件所属发动机号码 */
+    private String engineSerialNum;
+
+    /** 故障件位置 */
+    private String faultyPartsPosition;
+
+    /** 故障现象 */
+    private String faultyPhenomenon;
+
+    /** 故障发生地点 */
+    private String faultyPlace;
+
+    /** 发现时机 */
+    private String findOpportunity;
+
+    /** 系统 */
+    private String systems;
+
+    /** 计时类型 */
+    private String timingType;
+
+    /** 故障件制造厂 */
+    private String faultyPartsManufacturer;
+
+    /** 故障件翻修厂 */
+    private String faultyPartsRenovate;
+
+    /** 故障件装本机工作时次 */
+    private String installationTime;
+
+    /** 故障件总工作时次 */
+    private String totalWorkTime;
+
+    /** 故障件修后时次 */
+    private String repairTime;
+
+    /** 故换件型别 */
+    private String replacementPartsModel;
+
+    /** 故换件号码 */
+    private String replacementPartsNum;
+
+    /** 故换件制造厂 */
+    private String replacementPartsManufacturer;
+
+    /** 故换件总工作时次 */
+    private String replacementTotalWorkTime;
+
+    /** 故换件翻修厂 */
+    private String replacementPartsRenovate;
+
+    /** 故换件修后时次 */
+    private String replacementRepairTime;
+
+    /** 故障失常码 */
+    private String faultyAbnormalCode;
+
+    /** 故障件装机日期 */
+    private Date faultyPartsInstallDate;
+
+    /** 故障原因 */
+    private String faultyReason;
+
+    /** 故障性质 */
+    private String faultyNature;
+
+    /** 故障责任 */
+    private String faultyResponsibility;
+
+    /** 故障后果 */
+    private String faultyConsequence;
+
+    /** 处理意见 */
+    private String handlingSuggestions;
+
+    /** 影响次数 */
+    private String influenceFrequency;
+
+    /** 误飞次数 */
+    private String errorFlyFrequency;
+
+    /** 判明方法 */
+    private String identificationMethod;
+
+    /** 发现人 */
+    private String discoveredPeople;
+
+    /** 排除方法 */
+    private String exclusionMethod;
+
+    /** 排故人 */
+    private String exclusionPeople;
+
+    /** 审核人 */
+    private String examinePeople;
+
+    /** 审核时间 */
+    private Date examineTime;
+
+    /** 排除日期 */
+    private Date exclusionDate;
+
+    /** 排故工时 */
+    private String exclusionWorkTime;
+
+    /** 排故人数 */
+    private String exclusionPeopleNum;
+
+    /** 排故时间 */
+    private String exclusionTime;
+
+    /** 是否立功 */
+    private String isAchievement;
+
+    /** 需要试飞 */
+    private String needTestFly;
+
+    /** 维修状态 */
+    private String repairStatus;
+
+    /** 备注 */
+    private String remarks;
+
+    /** 删除标识(1删除 0未删除) */
+    @Column(isLogicDelete = true)
+    private Integer delFlag;
+
+
+}

+ 49 - 0
als-modules/agile-assurance/src/main/java/org/eco/als/domain/JudgeFaultLogic.java

@@ -0,0 +1,49 @@
+package org.eco.als.domain;
+
+import com.mybatisflex.annotation.Column;
+import com.mybatisflex.annotation.Id;
+import com.mybatisflex.annotation.Table;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serial;
+import org.eco.common.orm.core.domain.BaseEntity;
+
+/**
+ * 判故逻辑对象 als_judge_fault_logic_t
+ *
+ * @author wgk
+ * @date 2024-12-11
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@Table(value = "als_judge_fault_logic_t")
+public class JudgeFaultLogic extends BaseEntity {
+@Serial
+private static final long serialVersionUID = 1L;
+
+    /** 编号 */
+    @Id
+    private Long id;
+
+    /** 机型 */
+    private String model;
+
+    /** HMC码 */
+    private String hmcCode;
+
+    /** 参数列 */
+    private String parameterColumn;
+
+    /** 模型 */
+    private String pattern;
+
+    /** 备注 */
+    private String remarks;
+
+    /** 删除标识(1删除 0未删除) */
+    @Column(isLogicDelete = true)
+    private Integer delFlag;
+
+
+}

+ 359 - 0
als-modules/agile-assurance/src/main/java/org/eco/als/domain/bo/FaultStatisticsBo.java

@@ -0,0 +1,359 @@
+package org.eco.als.domain.bo;
+
+import org.eco.als.domain.FaultStatistics;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import jakarta.validation.constraints.*;
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.eco.common.orm.core.domain.BaseEntity;
+
+/**
+ * 故障统计业务对象 als_fault_statistics_t
+ *
+ * @author wgk
+ * @date 2024-12-13
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@AutoMapper(target = FaultStatistics.class, reverseConvertGenerate = false)
+public class FaultStatisticsBo extends BaseEntity{
+    /**
+     * 编号
+     */
+//    @NotNull(message = "编号不能为空")
+    private Long id;
+
+    /**
+     * 日期
+     */
+    @NotNull(message = "日期不能为空")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date statisticsDate;
+
+    /**
+     * 开始日期
+     */
+//    @NotNull(message = "日期不能为空")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date startStatisticsDate;
+
+    /**
+     * 结束日期
+     */
+//    @NotNull(message = "日期不能为空")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date endStatisticsDate;
+
+    /**
+     * 战区
+     */
+    private String warZone;
+
+    /**
+     * 军
+     */
+    private String army;
+
+    /**
+     * 师
+     */
+    private String division;
+
+    /**
+     * 团
+     */
+    private String groups;
+
+    /**
+     * 中队
+     */
+    private String squadron;
+
+    /**
+     * 飞机号
+     */
+    private String aircraftNum;
+
+    /**
+     * 机型
+     */
+    private String aircraftModel;
+
+    /**
+     * 出厂号码
+     */
+    private String factoryNum;
+
+    /**
+     * 机件类型
+     */
+    private String machineType;
+
+    /**
+     * 机件号
+     */
+    private String machineNum;
+
+    /**
+     * 机件型别
+     */
+    private String machineModel;
+
+    /**
+     * 机件名称
+     */
+    private String machineName;
+
+    /**
+     * 起落
+     */
+    private String landingGear;
+
+    /**
+     * 专业
+     */
+    private String major;
+
+    /**
+     * 故障件名称
+     */
+    private String faultyPartsName;
+
+    /**
+     * 故障件型别
+     */
+    private String faultyPartsModel;
+
+    /**
+     * 故障件号码
+     */
+    private String faultyPartsNum;
+
+    /**
+     * 故障件所属发动机型别
+     */
+    private String engineModel;
+
+    /**
+     * 故障件所属发动机号码
+     */
+    private String engineNum;
+
+    /**
+     * 故障件所属发动机序号
+     */
+    private String engineSerialNum;
+
+    /**
+     * 故障件位置
+     */
+    private String faultyPartsPosition;
+
+    /**
+     * 故障现象
+     */
+    private String faultyPhenomenon;
+
+    /**
+     * 故障发生地点
+     */
+    private String faultyPlace;
+
+    /**
+     * 发现时机
+     */
+    private String findOpportunity;
+
+    /**
+     * 系统
+     */
+    private String systems;
+
+    /**
+     * 计时类型
+     */
+    private String timingType;
+
+    /**
+     * 故障件制造厂
+     */
+    private String faultyPartsManufacturer;
+
+    /**
+     * 故障件翻修厂
+     */
+    private String faultyPartsRenovate;
+
+    /**
+     * 故障件装本机工作时次
+     */
+    @NotBlank(message = "故障件装本机工作时次不能为空")
+    private String installationTime;
+
+    /**
+     * 故障件总工作时次
+     */
+    @NotBlank(message = "故障件总工作时次不能为空")
+    private String totalWorkTime;
+
+    /**
+     * 故障件修后时次
+     */
+    private String repairTime;
+
+    /**
+     * 故换件型别
+     */
+    private String replacementPartsModel;
+
+    /**
+     * 故换件号码
+     */
+    private String replacementPartsNum;
+
+    /**
+     * 故换件制造厂
+     */
+    private String replacementPartsManufacturer;
+
+    /**
+     * 故换件总工作时次
+     */
+    private String replacementTotalWorkTime;
+
+    /**
+     * 故换件翻修厂
+     */
+    private String replacementPartsRenovate;
+
+    /**
+     * 故换件修后时次
+     */
+    private String replacementRepairTime;
+
+    /**
+     * 故障失常码
+     */
+    private String faultyAbnormalCode;
+
+    /**
+     * 故障件装机日期
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date faultyPartsInstallDate;
+
+    /**
+     * 故障原因
+     */
+    private String faultyReason;
+
+    /**
+     * 故障性质
+     */
+    private String faultyNature;
+
+    /**
+     * 故障责任
+     */
+    private String faultyResponsibility;
+
+    /**
+     * 故障后果
+     */
+    private String faultyConsequence;
+
+    /**
+     * 处理意见
+     */
+    private String handlingSuggestions;
+
+    /**
+     * 影响次数
+     */
+    private String influenceFrequency;
+
+    /**
+     * 误飞次数
+     */
+    private String errorFlyFrequency;
+
+    /**
+     * 判明方法
+     */
+    private String identificationMethod;
+
+    /**
+     * 发现人
+     */
+    private String discoveredPeople;
+
+    /**
+     * 排除方法
+     */
+    private String exclusionMethod;
+
+    /**
+     * 排故人
+     */
+    private String exclusionPeople;
+
+    /**
+     * 审核人
+     */
+    private String examinePeople;
+
+    /**
+     * 审核时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date examineTime;
+
+    /**
+     * 排除日期
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date exclusionDate;
+
+    /**
+     * 排故工时
+     */
+    private String exclusionWorkTime;
+
+    /**
+     * 排故人数
+     */
+    private String exclusionPeopleNum;
+
+    /**
+     * 排故时间
+     */
+    private String exclusionTime;
+
+    /**
+     * 是否立功
+     */
+    private String isAchievement;
+
+    /**
+     * 需要试飞
+     */
+    private String needTestFly;
+
+    /**
+     * 维修状态
+     */
+    private String repairStatus;
+
+    /**
+     * 备注
+     */
+    private String remarks;
+
+
+    /**
+     * 去重字段
+     */
+    private String distinctField;
+}

+ 56 - 0
als-modules/agile-assurance/src/main/java/org/eco/als/domain/bo/JudgeFaultLogicBo.java

@@ -0,0 +1,56 @@
+package org.eco.als.domain.bo;
+
+import org.eco.als.domain.JudgeFaultLogic;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import jakarta.validation.constraints.*;
+import org.eco.common.orm.core.domain.BaseEntity;
+
+/**
+ * 判故逻辑业务对象 als_judge_fault_logic_t
+ *
+ * @author wgk
+ * @date 2024-12-11
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@AutoMapper(target = JudgeFaultLogic.class, reverseConvertGenerate = false)
+public class JudgeFaultLogicBo extends BaseEntity{
+    /**
+     * 编号
+     */
+//    @NotNull(message = "编号不能为空")
+    private Long id;
+
+    /**
+     * 机型
+     */
+    @NotBlank(message = "机型不能为空")
+    private String model;
+
+    /**
+     * HMC码
+     */
+    @NotBlank(message = "HMC码不能为空")
+    private String hmcCode;
+
+    /**
+     * 参数列
+     */
+    @NotBlank(message = "参数列不能为空")
+    private String parameterColumn;
+
+    /**
+     * 模型
+     */
+    @NotBlank(message = "模型不能为空")
+    private String pattern;
+
+    /**
+     * 查询关键字
+     */
+    private String keyWord;
+
+
+}

+ 272 - 0
als-modules/agile-assurance/src/main/java/org/eco/als/domain/vo/FaultStatisticsImportVo.java

@@ -0,0 +1,272 @@
+package org.eco.als.domain.vo;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 故障统计导入视图对象 als_fault_statistics_t
+ *
+ * @author wgk
+ * @date 2024-12-13
+ */
+
+@Data
+@NoArgsConstructor
+@ExcelIgnoreUnannotated
+@AutoMapper(target = AirConfigurationVo.class, convertGenerate = false)
+public class FaultStatisticsImportVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /** 日期 */
+    @ExcelProperty(value = "日期")
+    private Date statisticsDate;
+
+    /** 战区 */
+    @ExcelProperty(value = "战区")
+    private String warZone;
+
+    /** 军 */
+    @ExcelProperty(value = "军")
+    private String army;
+
+    /** 师 */
+    @ExcelProperty(value = "师")
+    private String division;
+
+    /** 团 */
+    @ExcelProperty(value = "团")
+    private String groups;
+
+    /** 中队 */
+    @ExcelProperty(value = "中队")
+    private String squadron;
+
+    /** 飞机号 */
+    @ExcelProperty(value = "飞机号")
+    private String aircraftNum;
+
+    /** 机型 */
+    @ExcelProperty(value = "机型")
+    private String aircraftModel;
+
+    /** 出厂号码 */
+    @ExcelProperty(value = "出厂号码")
+    private String factoryNum;
+
+    /** 机件类型 */
+    @ExcelProperty(value = "机件类型")
+    private String machineType;
+
+    /** 机件号 */
+    @ExcelProperty(value = "机件号")
+    private String machineNum;
+
+    /** 机件型别 */
+    @ExcelProperty(value = "机件型别")
+    private String machineModel;
+
+    /** 机件名称 */
+    @ExcelProperty(value = "机件名称")
+    private String machineName;
+
+    /** 起落 */
+    @ExcelProperty(value = "起落")
+    private String landingGear;
+
+    /** 专业 */
+    @ExcelProperty(value = "专业")
+    private String major;
+
+    /** 故障件名称 */
+    @ExcelProperty(value = "故障件名称")
+    private String faultyPartsName;
+
+    /** 故障件型别 */
+    @ExcelProperty(value = "故障件型别")
+    private String faultyPartsModel;
+
+    /** 故障件号码 */
+    @ExcelProperty(value = "故障件号码")
+    private String faultyPartsNum;
+
+    /** 故障件所属发动机型别 */
+    @ExcelProperty(value = "故障件所属发动机型别")
+    private String engineModel;
+
+    /** 故障件所属发动机号码 */
+    @ExcelProperty(value = "故障件所属发动机号码")
+    private String engineNum;
+
+    /** 故障件所属发动机序号 */
+    @ExcelProperty(value = "故障件所属发动机序号")
+    private String engineSerialNum;
+
+    /** 故障件位置 */
+    @ExcelProperty(value = "故障件位置")
+    private String faultyPartsPosition;
+
+    /** 故障现象 */
+    @ExcelProperty(value = "故障现象")
+    private String faultyPhenomenon;
+
+    /** 故障发生地点 */
+    @ExcelProperty(value = "故障发生地点")
+    private String faultyPlace;
+
+    /** 发现时机 */
+    @ExcelProperty(value = "发现时机")
+    private String findOpportunity;
+
+    /** 系统 */
+    @ExcelProperty(value = "系统")
+    private String systems;
+
+    /** 计时类型 */
+    @ExcelProperty(value = "计时类型")
+    private String timingType;
+
+    /** 故障件制造厂 */
+    @ExcelProperty(value = "故障件制造厂")
+    private String faultyPartsManufacturer;
+
+    /** 故障件翻修厂 */
+    @ExcelProperty(value = "故障件翻修厂")
+    private String faultyPartsRenovate;
+
+    /** 故障件装本机工作时次 */
+    @ExcelProperty(value = "故障件装本机工作时次")
+    private String installationTime;
+
+    /** 故障件总工作时次 */
+    @ExcelProperty(value = "故障件总工作时次")
+    private String totalWorkTime;
+
+    /** 故障件修后时次 */
+    @ExcelProperty(value = "故障件修后时次")
+    private String repairTime;
+
+    /** 故换件型别 */
+    @ExcelProperty(value = "故换件型别")
+    private String replacementPartsModel;
+
+    /** 故换件号码 */
+    @ExcelProperty(value = "故换件号码")
+    private String replacementPartsNum;
+
+    /** 故换件制造厂 */
+    @ExcelProperty(value = "故换件制造厂")
+    private String replacementPartsManufacturer;
+
+    /** 故换件总工作时次 */
+    @ExcelProperty(value = "故换件总工作时次")
+    private String replacementTotalWorkTime;
+
+    /** 故换件翻修厂 */
+    @ExcelProperty(value = "故换件翻修厂")
+    private String replacementPartsRenovate;
+
+    /** 故换件修后时次 */
+    @ExcelProperty(value = "故换件修后时次")
+    private String replacementRepairTime;
+
+    /** 故障失常码 */
+    @ExcelProperty(value = "故障失常码")
+    private String faultyAbnormalCode;
+
+    /** 故障件装机日期 */
+    @ExcelProperty(value = "故障件装机日期")
+    private Date faultyPartsInstallDate;
+
+    /** 故障原因 */
+    @ExcelProperty(value = "故障原因")
+    private String faultyReason;
+
+    /** 故障性质 */
+    @ExcelProperty(value = "故障性质")
+    private String faultyNature;
+
+    /** 故障责任 */
+    @ExcelProperty(value = "故障责任")
+    private String faultyResponsibility;
+
+    /** 故障后果 */
+    @ExcelProperty(value = "故障后果")
+    private String faultyConsequence;
+
+    /** 处理意见 */
+    @ExcelProperty(value = "处理意见")
+    private String handlingSuggestions;
+
+    /** 影响次数 */
+    @ExcelProperty(value = "影响次数")
+    private String influenceFrequency;
+
+    /** 误飞次数 */
+    @ExcelProperty(value = "误飞次数")
+    private String errorFlyFrequency;
+
+    /** 判明方法 */
+    @ExcelProperty(value = "判明方法")
+    private String identificationMethod;
+
+    /** 发现人 */
+    @ExcelProperty(value = "发现人")
+    private String discoveredPeople;
+
+    /** 排除方法 */
+    @ExcelProperty(value = "排除方法")
+    private String exclusionMethod;
+
+    /** 排故人 */
+    @ExcelProperty(value = "排故人")
+    private String exclusionPeople;
+
+    /** 审核人 */
+    @ExcelProperty(value = "审核人")
+    private String examinePeople;
+
+    /** 审核时间 */
+    @ExcelProperty(value = "审核时间")
+    private Date examineTime;
+
+    /** 排除日期 */
+    @ExcelProperty(value = "排除日期")
+    private Date exclusionDate;
+
+    /** 排故工时 */
+    @ExcelProperty(value = "排故工时")
+    private String exclusionWorkTime;
+
+    /** 排故人数 */
+    @ExcelProperty(value = "排故人数")
+    private String exclusionPeopleNum;
+
+    /** 排故时间 */
+    @ExcelProperty(value = "排故时间")
+    private String exclusionTime;
+
+    /** 是否立功 */
+    @ExcelProperty(value = "是否立功")
+    private String isAchievement;
+
+    /** 需要试飞 */
+    @ExcelProperty(value = "需要试飞")
+    private String needTestFly;
+
+    /** 维修状态 */
+    @ExcelProperty(value = "维修状态")
+    private String repairStatus;
+
+    /** 备注 */
+    @ExcelProperty(value = "备注")
+    private String remarks;
+}

+ 303 - 0
als-modules/agile-assurance/src/main/java/org/eco/als/domain/vo/FaultStatisticsVo.java

@@ -0,0 +1,303 @@
+package org.eco.als.domain.vo;
+
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.eco.als.domain.FaultStatistics;
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import org.eco.common.excel.annotation.ExcelDictFormat;
+import org.eco.common.excel.convert.ExcelDictConvert;
+import com.eco.common.mapper.constant.MapperConstant;
+import com.eco.common.mapper.annotation.FieldMapper;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import java.io.Serial;
+import java.io.Serializable;
+import org.eco.common.orm.core.domain.BaseEntity;
+
+/**
+ * 故障统计视图对象 als_fault_statistics_t
+ *
+ * @author wgk
+ * @date 2024-12-13
+ */
+@Data
+@ExcelIgnoreUnannotated
+@EqualsAndHashCode(callSuper = true)
+@AutoMapper(target = FaultStatistics.class)
+public class FaultStatisticsVo extends BaseEntity implements Serializable {
+
+@Serial
+private static final long serialVersionUID = 1L;
+
+    /** 编号 */
+//    @ExcelProperty(value = "编号")
+    private Long id;
+
+    /** 日期 */
+    @ExcelProperty(value = "日期")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private String statisticsDate;
+
+    /** 战区 */
+    @ExcelProperty(value = "战区")
+    private String warZone;
+
+    /** 军 */
+    @ExcelProperty(value = "军")
+    private String army;
+
+    /** 师 */
+    @ExcelProperty(value = "师")
+    private String division;
+
+    /** 团 */
+    @ExcelProperty(value = "团")
+    private String groups;
+
+    /** 中队 */
+    @ExcelProperty(value = "中队")
+    private String squadron;
+
+    /** 飞机号 */
+    @ExcelProperty(value = "飞机号")
+    private String aircraftNum;
+
+    /** 机型 */
+    @ExcelProperty(value = "机型")
+    private String aircraftModel;
+
+    /** 出厂号码 */
+    @ExcelProperty(value = "出厂号码")
+    private String factoryNum;
+
+    /** 机件类型 */
+    @ExcelProperty(value = "机件类型")
+    private String machineType;
+
+    /** 机件号 */
+    @ExcelProperty(value = "机件号")
+    private String machineNum;
+
+    /** 机件型别 */
+    @ExcelProperty(value = "机件型别")
+    private String machineModel;
+
+    /** 机件名称 */
+    @ExcelProperty(value = "机件名称")
+    private String machineName;
+
+    /** 起落 */
+    @ExcelProperty(value = "起落")
+    private String landingGear;
+
+    /** 专业 */
+    @ExcelProperty(value = "专业")
+    private String major;
+
+    /** 故障件名称 */
+    @ExcelProperty(value = "故障件名称")
+    private String faultyPartsName;
+
+    /** 故障件型别 */
+    @ExcelProperty(value = "故障件型别")
+    private String faultyPartsModel;
+
+    /** 故障件号码 */
+    @ExcelProperty(value = "故障件号码")
+    private String faultyPartsNum;
+
+    /** 故障件所属发动机型别 */
+    @ExcelProperty(value = "故障件所属发动机型别")
+    private String engineModel;
+
+    /** 故障件所属发动机号码 */
+    @ExcelProperty(value = "故障件所属发动机号码")
+    private String engineNum;
+
+    /** 故障件所属发动机序号 */
+    @ExcelProperty(value = "故障件所属发动机序号")
+    private String engineSerialNum;
+
+    /** 故障件位置 */
+    @ExcelProperty(value = "故障件位置")
+    private String faultyPartsPosition;
+
+    /** 故障现象 */
+    @ExcelProperty(value = "故障现象")
+    private String faultyPhenomenon;
+
+    /** 故障发生地点 */
+    @ExcelProperty(value = "故障发生地点")
+    private String faultyPlace;
+
+    /** 发现时机 */
+    @ExcelProperty(value = "发现时机")
+    private String findOpportunity;
+
+    /** 系统 */
+    @ExcelProperty(value = "系统")
+    private String systems;
+
+    /** 计时类型 */
+    @ExcelProperty(value = "计时类型")
+    private String timingType;
+
+    /** 故障件制造厂 */
+    @ExcelProperty(value = "故障件制造厂")
+    private String faultyPartsManufacturer;
+
+    /** 故障件翻修厂 */
+    @ExcelProperty(value = "故障件翻修厂")
+    private String faultyPartsRenovate;
+
+    /** 故障件装本机工作时次 */
+    @ExcelProperty(value = "故障件装本机工作时次")
+    private String installationTime;
+
+    /** 故障件总工作时次 */
+    @ExcelProperty(value = "故障件总工作时次")
+    private String totalWorkTime;
+
+    /** 故障件修后时次 */
+    @ExcelProperty(value = "故障件修后时次")
+    private String repairTime;
+
+    /** 故换件型别 */
+    @ExcelProperty(value = "故换件型别")
+    private String replacementPartsModel;
+
+    /** 故换件号码 */
+    @ExcelProperty(value = "故换件号码")
+    private String replacementPartsNum;
+
+    /** 故换件制造厂 */
+    @ExcelProperty(value = "故换件制造厂")
+    private String replacementPartsManufacturer;
+
+    /** 故换件总工作时次 */
+    @ExcelProperty(value = "故换件总工作时次")
+    private String replacementTotalWorkTime;
+
+    /** 故换件翻修厂 */
+    @ExcelProperty(value = "故换件翻修厂")
+    private String replacementPartsRenovate;
+
+    /** 故换件修后时次 */
+    @ExcelProperty(value = "故换件修后时次")
+    private String replacementRepairTime;
+
+    /** 故障失常码 */
+    @ExcelProperty(value = "故障失常码")
+    private String faultyAbnormalCode;
+
+    /** 故障件装机日期 */
+    @ExcelProperty(value = "故障件装机日期")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private String faultyPartsInstallDate;
+
+    /** 故障原因 */
+    @ExcelProperty(value = "故障原因")
+    private String faultyReason;
+
+    /** 故障性质 */
+    @ExcelProperty(value = "故障性质")
+    private String faultyNature;
+
+    /** 故障责任 */
+    @ExcelProperty(value = "故障责任")
+    private String faultyResponsibility;
+
+    /** 故障后果 */
+    @ExcelProperty(value = "故障后果")
+    private String faultyConsequence;
+
+    /** 处理意见 */
+    @ExcelProperty(value = "处理意见")
+    private String handlingSuggestions;
+
+    /** 影响次数 */
+    @ExcelProperty(value = "影响次数")
+    private String influenceFrequency;
+
+    /** 误飞次数 */
+    @ExcelProperty(value = "误飞次数")
+    private String errorFlyFrequency;
+
+    /** 判明方法 */
+    @ExcelProperty(value = "判明方法")
+    private String identificationMethod;
+
+    /** 发现人 */
+    @ExcelProperty(value = "发现人")
+    private String discoveredPeople;
+
+    /** 排除方法 */
+    @ExcelProperty(value = "排除方法")
+    private String exclusionMethod;
+
+    /** 排故人 */
+    @ExcelProperty(value = "排故人")
+    private String exclusionPeople;
+
+    /** 审核人 */
+    @ExcelProperty(value = "审核人")
+    private String examinePeople;
+
+    /** 审核时间 */
+    @ExcelProperty(value = "审核时间")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private String examineTime;
+
+    /** 排除日期 */
+    @ExcelProperty(value = "排除日期")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private String exclusionDate;
+
+    /** 排故工时 */
+    @ExcelProperty(value = "排故工时")
+    private String exclusionWorkTime;
+
+    /** 排故人数 */
+    @ExcelProperty(value = "排故人数")
+    private String exclusionPeopleNum;
+
+    /** 排故时间 */
+    @ExcelProperty(value = "排故时间")
+    private String exclusionTime;
+
+    /** 是否立功 */
+    @ExcelProperty(value = "是否立功")
+    private String isAchievement;
+
+    /** 需要试飞 */
+    @ExcelProperty(value = "需要试飞")
+    private String needTestFly;
+
+    /** 维修状态 */
+    @ExcelProperty(value = "维修状态")
+    private String repairStatus;
+
+    /** 备注 */
+    @ExcelProperty(value = "备注")
+    private String remarks;
+
+    /** 删除标识(1删除 0未删除) */
+//    @ExcelProperty(value = "删除标识(1删除 0未删除)")
+    private Integer delFlag;
+
+
+    /**
+     * 创建人名称
+     */
+//    @FieldMapper(type = MapperConstant.USER_ID_TO_NAME, mapper = "createBy")
+    private String createByName;
+
+    /**
+     * 创建人名称
+     */
+//    @FieldMapper(type = MapperConstant.USER_ID_TO_NAME, mapper = "updateBy")
+    private String updateByName;
+
+}

+ 54 - 0
als-modules/agile-assurance/src/main/java/org/eco/als/domain/vo/JudgeFaultLogicImportVo.java

@@ -0,0 +1,54 @@
+package org.eco.als.domain.vo;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import org.eco.common.excel.annotation.ExcelDictFormat;
+import org.eco.common.excel.convert.ExcelDictConvert;
+import lombok.Data;
+import java.io.Serial;
+import java.io.Serializable;
+import lombok.NoArgsConstructor;
+
+/**
+ * 判故逻辑导入视图对象 als_judge_fault_logic_t
+ *
+ * @author wgk
+ * @date 2024-12-11
+ */
+
+@Data
+@NoArgsConstructor
+@ExcelIgnoreUnannotated
+public class JudgeFaultLogicImportVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+
+                /** 机型 */
+                    @ExcelProperty(value = "机型")
+                private String model;
+
+                /** HMC码 */
+                    @ExcelProperty(value = "HMC码")
+                private String hmcCode;
+
+                /** 参数列 */
+                    @ExcelProperty(value = "参数列", converter = ExcelDictConvert.class)
+                    @ExcelDictFormat(dictType = "sys_device_type")
+                private String parameterColumn;
+
+                /** 模型 */
+                    @ExcelProperty(value = "模型")
+                private String pattern;
+
+                /** 备注 */
+                    @ExcelProperty(value = "备注")
+                    private String remarks;
+
+                /** 删除标识(1删除 0未删除) */
+                    @ExcelProperty(value = "删除标识(1删除 0未删除)")
+                    private Integer delFlag;
+
+
+}

+ 74 - 0
als-modules/agile-assurance/src/main/java/org/eco/als/domain/vo/JudgeFaultLogicVo.java

@@ -0,0 +1,74 @@
+package org.eco.als.domain.vo;
+
+import org.eco.als.domain.JudgeFaultLogic;
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import org.eco.common.excel.annotation.ExcelDictFormat;
+import org.eco.common.excel.convert.ExcelDictConvert;
+import com.eco.common.mapper.constant.MapperConstant;
+import com.eco.common.mapper.annotation.FieldMapper;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import java.io.Serial;
+import java.io.Serializable;
+import org.eco.common.orm.core.domain.BaseEntity;
+
+/**
+ * 判故逻辑视图对象 als_judge_fault_logic_t
+ *
+ * @author wgk
+ * @date 2024-12-11
+ */
+@Data
+@ExcelIgnoreUnannotated
+@EqualsAndHashCode(callSuper = true)
+@AutoMapper(target = JudgeFaultLogic.class)
+public class JudgeFaultLogicVo extends BaseEntity implements Serializable {
+
+@Serial
+private static final long serialVersionUID = 1L;
+
+    /** 编号 */
+    @ExcelProperty(value = "编号")
+    private Long id;
+
+    /** 机型 */
+    @ExcelProperty(value = "机型")
+    private String model;
+
+    /** HMC码 */
+    @ExcelProperty(value = "HMC码")
+    private String hmcCode;
+
+    /** 参数列 */
+    @ExcelProperty(value = "参数列", converter = ExcelDictConvert.class)
+    @ExcelDictFormat(dictType = "sys_device_type")
+    private String parameterColumn;
+
+    /** 模型 */
+    @ExcelProperty(value = "模型")
+    private String pattern;
+
+    /** 备注 */
+    @ExcelProperty(value = "备注")
+    private String remarks;
+
+    /** 删除标识(1删除 0未删除) */
+    @ExcelProperty(value = "删除标识(1删除 0未删除)")
+    private Integer delFlag;
+
+
+    /**
+     * 创建人名称
+     */
+    @FieldMapper(type = MapperConstant.USER_ID_TO_NAME, mapper = "createBy")
+    private String createByName;
+
+    /**
+     * 创建人名称
+     */
+    @FieldMapper(type = MapperConstant.USER_ID_TO_NAME, mapper = "updateBy")
+    private String updateByName;
+
+}

+ 134 - 0
als-modules/agile-assurance/src/main/java/org/eco/als/listener/FaultStatisticsImportListener.java

@@ -0,0 +1,134 @@
+package org.eco.als.listener;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.util.ObjectUtil;
+import com.alibaba.excel.context.AnalysisContext;
+import com.alibaba.excel.event.AnalysisEventListener;
+import org.eco.common.core.exception.BusinessException;
+import org.eco.common.core.utils.SpringUtils;
+import org.eco.common.core.utils.ValidatorUtils;
+import org.eco.common.excel.core.ExcelListener;
+import org.eco.common.excel.core.ExcelResult;
+import org.eco.common.excel.entity.ExcelResultRes;
+import org.eco.common.core.core.domain.model.LoginUser;
+import org.eco.als.domain.bo.FaultStatisticsBo;
+import org.eco.als.domain.vo.FaultStatisticsImportVo;
+import org.eco.als.domain.vo.FaultStatisticsVo;
+import org.eco.als.service.IFaultStatisticsService;
+import lombok.extern.slf4j.Slf4j;
+
+import java.util.List;
+
+/**
+ * 故障统计自定义导入
+ *
+ * @author wgk
+ */
+@Slf4j
+public class FaultStatisticsImportListener extends AnalysisEventListener<FaultStatisticsImportVo> implements ExcelListener<FaultStatisticsImportVo> {
+    private final IFaultStatisticsService faultStatisticsService;
+
+    private final Boolean isUpdateSupport;
+    private final LoginUser loginUser;
+    private int successNum = 0;
+    private int failureNum = 0;
+    private final StringBuilder successMsg = new StringBuilder();
+    private final StringBuilder failureMsg = new StringBuilder();
+
+    public FaultStatisticsImportListener(Boolean isUpdateSupport, LoginUser loginUser) {
+        this.faultStatisticsService = SpringUtils.getBean(IFaultStatisticsService.class);
+        this.isUpdateSupport = isUpdateSupport;
+        this.loginUser = loginUser;
+    }
+
+    @Override
+    public void invoke(FaultStatisticsImportVo faultStatisticsVo, AnalysisContext context) {
+        try {
+
+            FaultStatisticsBo faultStatisticsBo = BeanUtil.toBean(faultStatisticsVo, FaultStatisticsBo.class);
+
+            //TODO:根据某个字段,查询数据库表中是否存在记录,不存在就新增,存在就更新
+            FaultStatisticsVo faultStatisticsVo1 = null;
+
+            //faultStatisticsVo1 = faultStatisticsService.selectBySomefield(faultStatisticsVo.getSomefield());
+            if (ObjectUtil.isNull(faultStatisticsVo1)) {
+                //不存在就新增
+                setBo(faultStatisticsBo);
+                ValidatorUtils.validate(faultStatisticsBo);
+                boolean inserted = faultStatisticsService.insert(faultStatisticsBo);
+
+                if (inserted) {
+                    successNum++;
+                    successMsg.append("<br/>").append(successNum).append("、故障统计 记录导入成功");
+                } else {
+                    failureNum++;
+                    failureMsg.append("<br/>").append(failureNum).append("、故障统计 记录导入失败");
+                }
+            } else if (isUpdateSupport) {
+                //存在就更新
+                faultStatisticsBo.setId(faultStatisticsVo1.getId());//主键
+                faultStatisticsBo.setVersion(faultStatisticsVo1.getVersion());
+                boolean updated = faultStatisticsService.update(faultStatisticsBo);
+                if (updated) {
+                    successNum++;
+                    successMsg.append("<br/>").append(successNum).append("、故障统计 记录更新成功");
+                } else {
+                    failureNum++;
+                    failureMsg.append("<br/>").append(failureNum).append("、故障统计 记录更新失败");
+                }
+            }
+        } catch (Exception e) {
+            failureNum++;
+            String msg = "<br/>" + failureNum + "、故障统计 记录导入失败:";
+            failureMsg.append(msg).append(e.getMessage());
+            log.error(msg, e);
+        }
+    }
+    private void setBo(FaultStatisticsBo faultStatisticsBo) {
+        faultStatisticsBo.setVersion(0);
+        if (ObjectUtil.isNull(loginUser)) {
+            faultStatisticsBo.setCreateBy(1L);
+            faultStatisticsBo.setUpdateBy(1L);
+            faultStatisticsBo.setTenantId(0L);
+        } else {
+            faultStatisticsBo.setUpdateBy(loginUser.getUserId());
+            faultStatisticsBo.setCreateBy(loginUser.getUserId());
+            faultStatisticsBo.setTenantId(loginUser.getTenantId());
+        }
+    }
+
+    @Override
+    public void doAfterAllAnalysed(AnalysisContext context) {
+        log.info("解析完成");
+    }
+
+    @Override
+    public ExcelResult<FaultStatisticsImportVo> getExcelResult() {
+        return new ExcelResult<>() {
+
+            @Override
+            public ExcelResultRes getAnalysis() {
+                if (failureNum > 0 && successNum == 0) {
+                    failureMsg.insert(0, "很抱歉,导入失败!共 " + failureNum + " 条数据没有成功导入,错误如下:");
+                    return ExcelResultRes.builder().logInfo(failureMsg.toString()).status("0").build();
+                } else if (failureNum > 0 && successNum > 0) {
+                    failureMsg.insert(0, "很抱歉,部分导入失败!共 " + failureNum + " 条数据没有成功导入,错误如下:");
+                    return ExcelResultRes.builder().logInfo(failureMsg.toString()).status("2").build();
+                } else {
+                    successMsg.insert(0, "恭喜您,数据已全部导入成功!共 " + successNum + " 条,数据如下:");
+                    return ExcelResultRes.builder().logInfo(successMsg.toString()).status("1").build();
+                }
+            }
+
+            @Override
+            public List<FaultStatisticsImportVo> getList() {
+                return null;
+            }
+
+            @Override
+            public List<String> getErrorList() {
+                return null;
+            }
+        };
+    }
+}

+ 128 - 0
als-modules/agile-assurance/src/main/java/org/eco/als/listener/JudgeFaultLogicImportListener.java

@@ -0,0 +1,128 @@
+package org.eco.als.listener;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.util.ObjectUtil;
+import com.alibaba.excel.context.AnalysisContext;
+import com.alibaba.excel.event.AnalysisEventListener;
+import org.eco.common.core.exception.BusinessException;
+import org.eco.common.core.utils.SpringUtils;
+import org.eco.common.core.utils.ValidatorUtils;
+import org.eco.common.excel.core.ExcelListener;
+import org.eco.common.excel.core.ExcelResult;
+import org.eco.common.excel.entity.ExcelResultRes;
+import org.eco.common.core.core.domain.model.LoginUser;
+import org.eco.als.domain.bo.JudgeFaultLogicBo;
+import org.eco.als.domain.vo.JudgeFaultLogicImportVo;
+import org.eco.als.domain.vo.JudgeFaultLogicVo;
+import org.eco.als.service.IJudgeFaultLogicService;
+import lombok.extern.slf4j.Slf4j;
+
+import java.util.List;
+
+/**
+ * 判故逻辑自定义导入
+ *
+ * @author wgk
+ */
+@Slf4j
+public class JudgeFaultLogicImportListener extends AnalysisEventListener<JudgeFaultLogicImportVo> implements ExcelListener<JudgeFaultLogicImportVo> {
+    private final IJudgeFaultLogicService judgeFaultLogicService;
+
+    private final Boolean isUpdateSupport;
+    private final LoginUser loginUser;
+    private int successNum = 0;
+    private int failureNum = 0;
+    private final StringBuilder successMsg = new StringBuilder();
+    private final StringBuilder failureMsg = new StringBuilder();
+
+    public JudgeFaultLogicImportListener(Boolean isUpdateSupport, LoginUser loginUser) {
+        this.judgeFaultLogicService = SpringUtils.getBean(IJudgeFaultLogicService.class);
+        this.isUpdateSupport = isUpdateSupport;
+        this.loginUser = loginUser;
+    }
+
+    @Override
+    public void invoke(JudgeFaultLogicImportVo judgeFaultLogicVo, AnalysisContext context) {
+        try {
+
+            JudgeFaultLogicBo judgeFaultLogicBo = BeanUtil.toBean(judgeFaultLogicVo, JudgeFaultLogicBo.class);
+
+            //TODO:根据某个字段,查询数据库表中是否存在记录,不存在就新增,存在就更新
+            JudgeFaultLogicVo judgeFaultLogicVo1 = null;
+
+            //judgeFaultLogicVo1 = judgeFaultLogicService.selectBySomefield(judgeFaultLogicVo.getSomefield());
+            if (ObjectUtil.isNull(judgeFaultLogicVo1)) {
+                //不存在就新增
+                setBo(judgeFaultLogicBo);
+                ValidatorUtils.validate(judgeFaultLogicBo);
+                boolean inserted = judgeFaultLogicService.insert(judgeFaultLogicBo);
+
+                if (inserted) {
+                    successNum++;
+                    successMsg.append("<br/>").append(successNum).append("、判故逻辑 记录导入成功");
+                } else {
+                    failureNum++;
+                    failureMsg.append("<br/>").append(failureNum).append("、判故逻辑 记录导入失败");
+                }
+            } else if (isUpdateSupport) {
+                //存在就更新
+                judgeFaultLogicBo.setId(judgeFaultLogicVo1.getId());//主键
+                judgeFaultLogicBo.setVersion(judgeFaultLogicVo1.getVersion());
+                boolean updated = judgeFaultLogicService.update(judgeFaultLogicBo);
+                if (updated) {
+                    successNum++;
+                    successMsg.append("<br/>").append(successNum).append("、判故逻辑 记录更新成功");
+                } else {
+                    failureNum++;
+                    failureMsg.append("<br/>").append(failureNum).append("、判故逻辑 记录更新失败");
+                }
+            }
+        } catch (Exception e) {
+            failureNum++;
+            String msg = "<br/>" + failureNum + "、判故逻辑 记录导入失败:";
+            failureMsg.append(msg).append(e.getMessage());
+            log.error(msg, e);
+        }
+    }
+    private void setBo(JudgeFaultLogicBo judgeFaultLogicBo) {
+        judgeFaultLogicBo.setVersion(0);
+        judgeFaultLogicBo.setCreateBy(loginUser.getUserId());
+        judgeFaultLogicBo.setUpdateBy(loginUser.getUserId());
+        judgeFaultLogicBo.setTenantId(loginUser.getTenantId());
+    }
+
+    @Override
+    public void doAfterAllAnalysed(AnalysisContext context) {
+        log.info("解析完成");
+    }
+
+    @Override
+    public ExcelResult<JudgeFaultLogicImportVo> getExcelResult() {
+        return new ExcelResult<>() {
+
+            @Override
+            public ExcelResultRes getAnalysis() {
+                if (failureNum > 0 && successNum == 0) {
+                    failureMsg.insert(0, "很抱歉,导入失败!共 " + failureNum + " 条数据没有成功导入,错误如下:");
+                    return ExcelResultRes.builder().logInfo(failureMsg.toString()).status("0").build();
+                } else if (failureNum > 0 && successNum > 0) {
+                    failureMsg.insert(0, "很抱歉,部分导入失败!共 " + failureNum + " 条数据没有成功导入,错误如下:");
+                    return ExcelResultRes.builder().logInfo(failureMsg.toString()).status("2").build();
+                } else {
+                    successMsg.insert(0, "恭喜您,数据已全部导入成功!共 " + successNum + " 条,数据如下:");
+                    return ExcelResultRes.builder().logInfo(successMsg.toString()).status("1").build();
+                }
+            }
+
+            @Override
+            public List<JudgeFaultLogicImportVo> getList() {
+                return null;
+            }
+
+            @Override
+            public List<String> getErrorList() {
+                return null;
+            }
+        };
+    }
+}

+ 16 - 0
als-modules/agile-assurance/src/main/java/org/eco/als/mapper/FaultStatisticsMapper.java

@@ -0,0 +1,16 @@
+package org.eco.als.mapper;
+
+import com.mybatisflex.core.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+import org.eco.als.domain.FaultStatistics;
+
+/**
+ * 故障统计Mapper接口
+ *
+ * @author wgk
+ * @date 2024-12-13
+ */
+@Mapper
+public interface FaultStatisticsMapper extends BaseMapper<FaultStatistics> {
+
+}

+ 16 - 0
als-modules/agile-assurance/src/main/java/org/eco/als/mapper/JudgeFaultLogicMapper.java

@@ -0,0 +1,16 @@
+package org.eco.als.mapper;
+
+import com.mybatisflex.core.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+import org.eco.als.domain.JudgeFaultLogic;
+
+/**
+ * 判故逻辑Mapper接口
+ *
+ * @author wgk
+ * @date 2024-12-11
+ */
+@Mapper
+public interface JudgeFaultLogicMapper extends BaseMapper<JudgeFaultLogic> {
+
+}

+ 95 - 0
als-modules/agile-assurance/src/main/java/org/eco/als/service/IFaultStatisticsService.java

@@ -0,0 +1,95 @@
+package org.eco.als.service;
+
+import java.util.List;
+import org.eco.common.core.core.domain.model.LoginUser;
+import org.eco.als.domain.FaultStatistics;
+import org.eco.als.domain.vo.FaultStatisticsVo;
+import org.eco.als.domain.bo.FaultStatisticsBo;
+import org.eco.common.orm.core.service.IBaseService;
+import org.springframework.scheduling.annotation.Async;
+import org.springframework.web.multipart.MultipartFile;
+import org.eco.common.core.core.page.PageResult;
+
+/**
+ * 故障统计Service接口
+ *
+ * @author wgk
+ * @date 2024-12-13
+ */
+public interface IFaultStatisticsService extends IBaseService<FaultStatistics> {
+    /**
+     * 查询故障统计
+     *
+     * @param id 故障统计主键
+     * @return 故障统计
+     */
+        FaultStatisticsVo selectById(Long id);
+    /**
+     * 查询故障统计列表
+     *
+     * @param faultStatisticsBo 故障统计Bo
+     * @return 故障统计集合
+     */
+    List<FaultStatisticsVo> selectList(FaultStatisticsBo faultStatisticsBo);
+
+    /**
+     * 分页查询故障统计列表
+     *
+     * @param faultStatisticsBo 故障统计Bo
+     * @return 分页故障统计集合
+     */
+    PageResult<FaultStatisticsVo> selectPage(FaultStatisticsBo faultStatisticsBo);
+
+    /**
+     * 新增故障统计
+     *
+     * @param faultStatisticsBo 故障统计Bo
+     * @return 结果:true 操作成功,false 操作失败
+     */
+    boolean insert(FaultStatisticsBo faultStatisticsBo);
+
+    /**
+     * 新增故障统计,前台提供主键值,一般用于导入的场合
+     *
+     * @param faultStatisticsBo 故障统计Bo
+     * @return 结果:true 操作成功,false 操作失败
+     */
+    boolean insertWithPk(FaultStatisticsBo faultStatisticsBo);
+
+    /**
+     * 修改故障统计
+     *
+     * @param faultStatisticsBo 故障统计Bo
+     * @return 结果:true 更新成功,false 更新失败
+     */
+    boolean update(FaultStatisticsBo faultStatisticsBo);
+
+    /**
+     * 批量删除故障统计
+     *
+     * @param ids 需要删除的故障统计主键集合
+     * @return 结果:true 删除成功,false 删除失败
+     */
+    boolean deleteByIds(Long[] ids);
+
+    /**
+     * 异步导入
+     *
+     * @param file          导入的文件
+     * @param updateSupport 是否覆盖
+     * @param user          用户上下文信息
+     */
+    @Async
+    void asyncImportData(MultipartFile file, boolean updateSupport, LoginUser user);
+
+    /**
+     * asyncExport 异步导出
+     *
+     * @param listVo    数据列表
+     * @param sheetName 文件名称
+     * @param user      上下文
+     */
+    @Async
+    void asyncExport(List<FaultStatisticsVo> listVo, String sheetName, LoginUser user);
+
+}

+ 95 - 0
als-modules/agile-assurance/src/main/java/org/eco/als/service/IJudgeFaultLogicService.java

@@ -0,0 +1,95 @@
+package org.eco.als.service;
+
+import java.util.List;
+import org.eco.common.core.core.domain.model.LoginUser;
+import org.eco.als.domain.JudgeFaultLogic;
+import org.eco.als.domain.vo.JudgeFaultLogicVo;
+import org.eco.als.domain.bo.JudgeFaultLogicBo;
+import org.eco.common.orm.core.service.IBaseService;
+import org.springframework.scheduling.annotation.Async;
+import org.springframework.web.multipart.MultipartFile;
+import org.eco.common.core.core.page.PageResult;
+
+/**
+ * 判故逻辑Service接口
+ *
+ * @author wgk
+ * @date 2024-12-11
+ */
+public interface IJudgeFaultLogicService extends IBaseService<JudgeFaultLogic> {
+    /**
+     * 查询判故逻辑
+     *
+     * @param id 判故逻辑主键
+     * @return 判故逻辑
+     */
+        JudgeFaultLogicVo selectById(Long id);
+    /**
+     * 查询判故逻辑列表
+     *
+     * @param judgeFaultLogicBo 判故逻辑Bo
+     * @return 判故逻辑集合
+     */
+    List<JudgeFaultLogicVo> selectList(JudgeFaultLogicBo judgeFaultLogicBo);
+
+    /**
+     * 分页查询判故逻辑列表
+     *
+     * @param judgeFaultLogicBo 判故逻辑Bo
+     * @return 分页判故逻辑集合
+     */
+    PageResult<JudgeFaultLogicVo> selectPage(JudgeFaultLogicBo judgeFaultLogicBo);
+
+    /**
+     * 新增判故逻辑
+     *
+     * @param judgeFaultLogicBo 判故逻辑Bo
+     * @return 结果:true 操作成功,false 操作失败
+     */
+    boolean insert(JudgeFaultLogicBo judgeFaultLogicBo);
+
+    /**
+     * 新增判故逻辑,前台提供主键值,一般用于导入的场合
+     *
+     * @param judgeFaultLogicBo 判故逻辑Bo
+     * @return 结果:true 操作成功,false 操作失败
+     */
+    boolean insertWithPk(JudgeFaultLogicBo judgeFaultLogicBo);
+
+    /**
+     * 修改判故逻辑
+     *
+     * @param judgeFaultLogicBo 判故逻辑Bo
+     * @return 结果:true 更新成功,false 更新失败
+     */
+    boolean update(JudgeFaultLogicBo judgeFaultLogicBo);
+
+    /**
+     * 批量删除判故逻辑
+     *
+     * @param ids 需要删除的判故逻辑主键集合
+     * @return 结果:true 删除成功,false 删除失败
+     */
+    boolean deleteByIds(Long[] ids);
+
+    /**
+     * 异步导入
+     *
+     * @param file          导入的文件
+     * @param updateSupport 是否覆盖
+     * @param user          用户上下文信息
+     */
+    @Async
+    void asyncImportData(MultipartFile file, boolean updateSupport, LoginUser user);
+
+    /**
+     * asyncExport 异步导出
+     *
+     * @param listVo    数据列表
+     * @param sheetName 文件名称
+     * @param user      上下文
+     */
+    @Async
+    void asyncExport(List<JudgeFaultLogicVo> listVo, String sheetName, LoginUser user);
+
+}

+ 214 - 0
als-modules/agile-assurance/src/main/java/org/eco/als/service/impl/FaultStatisticsServiceImpl.java

@@ -0,0 +1,214 @@
+package org.eco.als.service.impl;
+
+import java.util.Arrays;
+import java.util.List;
+
+import cn.hutool.core.util.ObjectUtil;
+import com.mybatisflex.core.paginate.Page;
+import com.mybatisflex.core.query.QueryWrapper;
+import lombok.extern.slf4j.Slf4j;
+import org.eco.common.core.core.domain.model.LoginUser;
+import org.eco.common.excel.entity.ExcelResultRes;
+import org.eco.common.excel.service.IExcelService;
+import org.eco.common.core.utils.bean.BeanUtils;
+import org.eco.common.core.utils.MapstructUtils;
+import org.eco.system.service.IImportExportService;
+import org.eco.common.core.utils.StringUtils;
+import org.eco.system.domain.bo.ImportExportBo;
+import org.eco.common.orm.core.page.PageQuery;
+import org.eco.common.core.core.page.PageResult;
+import org.eco.common.orm.core.service.impl.BaseServiceImpl;
+import jakarta.annotation.Resource;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.multipart.MultipartFile;
+import java.io.IOException;
+import org.eco.als.mapper.FaultStatisticsMapper;
+import org.eco.als.domain.FaultStatistics;
+import org.eco.als.domain.bo.FaultStatisticsBo;
+import org.eco.als.domain.vo.FaultStatisticsVo;
+import org.eco.als.domain.vo.FaultStatisticsImportVo;
+import org.eco.als.listener.FaultStatisticsImportListener;
+import org.eco.als.service.IFaultStatisticsService;
+import static org.eco.als.domain.table.FaultStatisticsTableDef.FAULT_STATISTICS;
+
+/**
+ * 故障统计Service业务层处理
+ *
+ * @author wgk
+ * @date 2024-12-13
+ */
+@Service
+@Slf4j
+public class FaultStatisticsServiceImpl extends BaseServiceImpl<FaultStatisticsMapper, FaultStatistics> implements IFaultStatisticsService {
+    @Resource
+    private FaultStatisticsMapper faultStatisticsMapper;
+
+    @Resource
+    private IExcelService excelService;
+
+    @Resource
+    private IImportExportService importExportService;
+
+    @Override
+    public QueryWrapper query() {
+        return super.query().from(FAULT_STATISTICS);
+    }
+
+    private QueryWrapper buildQueryWrapper(FaultStatisticsBo faultStatisticsBo) {
+        QueryWrapper queryWrapper = super.buildBaseQueryWrapper();
+        queryWrapper.and(FAULT_STATISTICS.STATISTICS_DATE.eq
+        (faultStatisticsBo.getStatisticsDate()));
+        queryWrapper.and(FAULT_STATISTICS.WAR_ZONE.eq
+        (faultStatisticsBo.getWarZone()));
+
+        queryWrapper.and(FAULT_STATISTICS.GROUPS.eq
+            (faultStatisticsBo.getGroups()));
+        queryWrapper.and(FAULT_STATISTICS.MAJOR.eq
+        (faultStatisticsBo.getMajor()));
+        queryWrapper.and(FAULT_STATISTICS.AIRCRAFT_MODEL.eq
+            (faultStatisticsBo.getAircraftModel()));
+        queryWrapper.and(FAULT_STATISTICS.AIRCRAFT_NUM.eq
+            (faultStatisticsBo.getAircraftNum()));
+        queryWrapper.and(FAULT_STATISTICS.FAULTY_PARTS_NAME.eq
+            (faultStatisticsBo.getFaultyPartsName()));
+
+        if(faultStatisticsBo.getStartStatisticsDate() != null && faultStatisticsBo.getEndStatisticsDate() != null){
+            queryWrapper.between("statistics_date", faultStatisticsBo.getStartStatisticsDate(), faultStatisticsBo.getEndStatisticsDate());
+        }
+        if(faultStatisticsBo.getDistinctField() != null){
+            if(faultStatisticsBo.getDistinctField().equals("groups")){
+                queryWrapper.select("DISTINCT groups"); // 指定去重字段
+            }else if(faultStatisticsBo.getDistinctField().equals("major")){
+                queryWrapper.select("DISTINCT major");
+            }else if(faultStatisticsBo.getDistinctField().equals("aircraft_model")){
+                queryWrapper.select("DISTINCT aircraft_model");
+            }else if(faultStatisticsBo.getDistinctField().equals("aircraft_num")){
+                queryWrapper.select("DISTINCT aircraft_num");
+            }else if(faultStatisticsBo.getDistinctField().equals("faulty_parts_name")){
+                queryWrapper.select("DISTINCT faulty_parts_name");
+            }
+        }
+
+        return queryWrapper;
+    }
+
+    /**
+     * 查询故障统计
+     *
+     * @param id 故障统计主键
+     * @return 故障统计
+     */
+    @Override
+    public FaultStatisticsVo selectById(Long id) {
+            return this.getOneAs(query().where(FAULT_STATISTICS.ID.eq(id)), FaultStatisticsVo.class);
+
+    }
+
+
+    /**
+     * 查询故障统计列表
+     *
+     * @param faultStatisticsBo 故障统计Bo
+     * @return 故障统计集合
+     */
+    @Override
+    public List<FaultStatisticsVo> selectList(FaultStatisticsBo faultStatisticsBo) {
+        QueryWrapper queryWrapper = buildQueryWrapper(faultStatisticsBo);
+            return this.listAs(queryWrapper, FaultStatisticsVo.class);
+    }
+
+    /**
+     * 分页查询故障统计列表
+     *
+     * @param faultStatisticsBo 故障统计Bo
+     * @return 分页故障统计集合
+     */
+    @Override
+    public PageResult<FaultStatisticsVo> selectPage(FaultStatisticsBo faultStatisticsBo) {
+        QueryWrapper queryWrapper = buildQueryWrapper(faultStatisticsBo);
+            Page<FaultStatisticsVo> page = this.pageAs(PageQuery.build(), queryWrapper, FaultStatisticsVo.class);
+        return PageResult.build(page);
+    }
+
+    /**
+     * 新增故障统计
+     *
+     * @param faultStatisticsBo 故障统计Bo
+     * @return 结果:true 操作成功,false 操作失败
+     */
+    @Override
+    public boolean insert(FaultStatisticsBo faultStatisticsBo) {
+    FaultStatistics faultStatistics =MapstructUtils.convert(faultStatisticsBo, FaultStatistics. class);
+
+        return this.save(faultStatistics);//使用全局配置的雪花算法主键生成器生成ID值
+    }
+
+    /**
+     * 新增故障统计,前台提供主键值,一般用于导入的场合
+     *
+     * @param faultStatisticsBo 故障统计Bo
+     * @return 结果:true 操作成功,false 操作失败
+     */
+    @Override
+    public boolean insertWithPk(FaultStatisticsBo faultStatisticsBo)
+    {
+        FaultStatistics faultStatistics = MapstructUtils.convert(faultStatisticsBo, FaultStatistics.class);
+
+
+            return faultStatisticsMapper.insertWithPk(faultStatistics) > 0;//前台传来主键值
+    }
+
+    /**
+     * 修改故障统计
+     *
+     * @param faultStatisticsBo 故障统计Bo
+     * @return 结果:true 更新成功,false 更新失败
+     */
+    @Override
+    public boolean update(FaultStatisticsBo faultStatisticsBo) {
+        FaultStatistics faultStatistics =MapstructUtils.convert(faultStatisticsBo, FaultStatistics. class);
+        if (ObjectUtil.isNotNull(faultStatistics) && ObjectUtil.isNotNull(faultStatistics.getId())){
+            boolean updated = this.updateById(faultStatistics);
+                return updated;
+        }
+        return false;
+    }
+
+    @Override
+    public void asyncImportData(MultipartFile file, boolean updateSupport, LoginUser loginUser) {
+        ExcelResultRes result;
+        try {
+            String name = file.getOriginalFilename();
+            result = excelService.importExcel(file.getInputStream(), name, FaultStatisticsImportVo.class, new FaultStatisticsImportListener(updateSupport, loginUser));
+        } catch (IOException e) {
+            throw new RuntimeException(e);
+        }
+        boolean flag = importExportService.saveInfo(result, loginUser, "0");
+        if (flag) {
+            log.info("异步导入日志写入成功");
+        }
+    }
+
+    @Override
+    public void asyncExport(List<FaultStatisticsVo> listVo, String sheetName, LoginUser loginUser) {
+        ExcelResultRes result = excelService.exportExcel(listVo, sheetName, FaultStatisticsVo.class);
+        boolean flag = importExportService.saveInfo(result, loginUser, "1");
+        if (flag) {
+            log.info("异步导出日志写入成功");
+        }
+    }
+
+    /**
+     * 批量删除故障统计
+     *
+     * @param ids 需要删除的故障统计主键集合
+     * @return 结果:true 删除成功,false 删除失败
+     */
+    @Transactional
+    @Override
+    public boolean deleteByIds(Long[] ids) {
+        return this.removeByIds(Arrays.asList(ids));
+    }
+
+}

+ 186 - 0
als-modules/agile-assurance/src/main/java/org/eco/als/service/impl/JudgeFaultLogicServiceImpl.java

@@ -0,0 +1,186 @@
+package org.eco.als.service.impl;
+
+import java.util.Arrays;
+import java.util.List;
+
+import cn.hutool.core.util.ObjectUtil;
+import com.mybatisflex.core.paginate.Page;
+import com.mybatisflex.core.query.QueryWrapper;
+import lombok.extern.slf4j.Slf4j;
+import org.eco.common.core.core.domain.model.LoginUser;
+import org.eco.common.excel.entity.ExcelResultRes;
+import org.eco.common.excel.service.IExcelService;
+import org.eco.common.core.utils.bean.BeanUtils;
+import org.eco.common.core.utils.MapstructUtils;
+import org.eco.system.service.IImportExportService;
+import org.eco.common.core.utils.StringUtils;
+import org.eco.system.domain.bo.ImportExportBo;
+import org.eco.common.orm.core.page.PageQuery;
+import org.eco.common.core.core.page.PageResult;
+import org.eco.common.orm.core.service.impl.BaseServiceImpl;
+import jakarta.annotation.Resource;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.multipart.MultipartFile;
+import java.io.IOException;
+import org.eco.als.mapper.JudgeFaultLogicMapper;
+import org.eco.als.domain.JudgeFaultLogic;
+import org.eco.als.domain.bo.JudgeFaultLogicBo;
+import org.eco.als.domain.vo.JudgeFaultLogicVo;
+import org.eco.als.domain.vo.JudgeFaultLogicImportVo;
+import org.eco.als.listener.JudgeFaultLogicImportListener;
+import org.eco.als.service.IJudgeFaultLogicService;
+import static org.eco.als.domain.table.JudgeFaultLogicTableDef.JUDGE_FAULT_LOGIC;
+
+/**
+ * 判故逻辑Service业务层处理
+ *
+ * @author wgk
+ * @date 2024-12-11
+ */
+@Service
+@Slf4j
+public class JudgeFaultLogicServiceImpl extends BaseServiceImpl<JudgeFaultLogicMapper, JudgeFaultLogic> implements IJudgeFaultLogicService {
+    @Resource
+    private JudgeFaultLogicMapper judgeFaultLogicMapper;
+
+    @Resource
+    private IExcelService excelService;
+
+    @Resource
+    private IImportExportService importExportService;
+
+    @Override
+    public QueryWrapper query() {
+        return super.query().from(JUDGE_FAULT_LOGIC);
+    }
+
+    private QueryWrapper buildQueryWrapper(JudgeFaultLogicBo judgeFaultLogicBo) {
+        QueryWrapper queryWrapper = super.buildBaseQueryWrapper();
+        queryWrapper.or(JUDGE_FAULT_LOGIC.MODEL.like
+        (judgeFaultLogicBo.getKeyWord()));
+        queryWrapper.or(JUDGE_FAULT_LOGIC.HMC_CODE.like
+        (judgeFaultLogicBo.getKeyWord()));
+
+        return queryWrapper;
+    }
+
+    /**
+     * 查询判故逻辑
+     *
+     * @param id 判故逻辑主键
+     * @return 判故逻辑
+     */
+    @Override
+    public JudgeFaultLogicVo selectById(Long id) {
+            return this.getOneAs(query().where(JUDGE_FAULT_LOGIC.ID.eq(id)), JudgeFaultLogicVo.class);
+
+    }
+
+
+    /**
+     * 查询判故逻辑列表
+     *
+     * @param judgeFaultLogicBo 判故逻辑Bo
+     * @return 判故逻辑集合
+     */
+    @Override
+    public List<JudgeFaultLogicVo> selectList(JudgeFaultLogicBo judgeFaultLogicBo) {
+        QueryWrapper queryWrapper = buildQueryWrapper(judgeFaultLogicBo);
+            return this.listAs(queryWrapper, JudgeFaultLogicVo.class);
+    }
+
+    /**
+     * 分页查询判故逻辑列表
+     *
+     * @param judgeFaultLogicBo 判故逻辑Bo
+     * @return 分页判故逻辑集合
+     */
+    @Override
+    public PageResult<JudgeFaultLogicVo> selectPage(JudgeFaultLogicBo judgeFaultLogicBo) {
+        QueryWrapper queryWrapper = buildQueryWrapper(judgeFaultLogicBo);
+            Page<JudgeFaultLogicVo> page = this.pageAs(PageQuery.build(), queryWrapper, JudgeFaultLogicVo.class);
+        return PageResult.build(page);
+    }
+
+    /**
+     * 新增判故逻辑
+     *
+     * @param judgeFaultLogicBo 判故逻辑Bo
+     * @return 结果:true 操作成功,false 操作失败
+     */
+    @Override
+    public boolean insert(JudgeFaultLogicBo judgeFaultLogicBo) {
+    JudgeFaultLogic judgeFaultLogic =MapstructUtils.convert(judgeFaultLogicBo, JudgeFaultLogic. class);
+
+        return this.save(judgeFaultLogic);//使用全局配置的雪花算法主键生成器生成ID值
+    }
+
+    /**
+     * 新增判故逻辑,前台提供主键值,一般用于导入的场合
+     *
+     * @param judgeFaultLogicBo 判故逻辑Bo
+     * @return 结果:true 操作成功,false 操作失败
+     */
+    @Override
+    public boolean insertWithPk(JudgeFaultLogicBo judgeFaultLogicBo)
+    {
+        JudgeFaultLogic judgeFaultLogic = MapstructUtils.convert(judgeFaultLogicBo, JudgeFaultLogic.class);
+
+
+            return judgeFaultLogicMapper.insertWithPk(judgeFaultLogic) > 0;//前台传来主键值
+    }
+
+    /**
+     * 修改判故逻辑
+     *
+     * @param judgeFaultLogicBo 判故逻辑Bo
+     * @return 结果:true 更新成功,false 更新失败
+     */
+    @Override
+    public boolean update(JudgeFaultLogicBo judgeFaultLogicBo) {
+        JudgeFaultLogic judgeFaultLogic =MapstructUtils.convert(judgeFaultLogicBo, JudgeFaultLogic. class);
+        if (ObjectUtil.isNotNull(judgeFaultLogic) && ObjectUtil.isNotNull(judgeFaultLogic.getId())){
+            boolean updated = this.updateById(judgeFaultLogic);
+                return updated;
+        }
+        return false;
+    }
+
+    @Override
+    public void asyncImportData(MultipartFile file, boolean updateSupport, LoginUser loginUser) {
+        ExcelResultRes result;
+        try {
+            String name = file.getOriginalFilename();
+            result = excelService.importExcel(file.getInputStream(), name, JudgeFaultLogicImportVo.class, new JudgeFaultLogicImportListener(updateSupport, loginUser));
+        } catch (IOException e) {
+            throw new RuntimeException(e);
+        }
+        boolean flag = importExportService.saveInfo(result, loginUser, "0");
+        if (flag) {
+            log.info("异步导入日志写入成功");
+        }
+    }
+
+    @Override
+    public void asyncExport(List<JudgeFaultLogicVo> listVo, String sheetName, LoginUser loginUser) {
+        ExcelResultRes result = excelService.exportExcel(listVo, sheetName, JudgeFaultLogicVo.class);
+        boolean flag = importExportService.saveInfo(result, loginUser, "1");
+        if (flag) {
+            log.info("异步导出日志写入成功");
+        }
+    }
+
+    /**
+     * 批量删除判故逻辑
+     *
+     * @param ids 需要删除的判故逻辑主键集合
+     * @return 结果:true 删除成功,false 删除失败
+     */
+    @Transactional
+    @Override
+    public boolean deleteByIds(Long[] ids) {
+        return this.removeByIds(Arrays.asList(ids));
+    }
+
+}

+ 7 - 0
als-modules/agile-assurance/src/main/resources/mapper/als/JudgeFaultLogicMapper.xml

@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+    PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+    "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.eco.als.mapper.JudgeFaultLogicMapper">
+
+</mapper>

+ 258 - 0
als-start/src/main/resources/db/dm/V1_0_0_5__als-ddl.sql

@@ -0,0 +1,258 @@
+CREATE TABLE "lqbz"."als_judge_fault_logic_t"
+(
+    "id" BIGINT NOT NULL,
+    "model" VARCHAR2(255),
+    "HMC_code" VARCHAR2(255),
+    "parameter_column" VARCHAR2(1000),
+    "pattern" VARCHAR2(255),
+    "remarks" VARCHAR2(900),
+    "tenant_id" BIGINT,
+    "del_flag" BIT DEFAULT 0,
+    "version" INTEGER,
+    "create_by" VARCHAR2(8188),
+    "create_time" TIMESTAMP(6),
+    "update_by" VARCHAR2(8188),
+    "update_time" TIMESTAMP(6),
+    NOT CLUSTER PRIMARY KEY("id")) STORAGE(ON "MAIN", CLUSTERBTR);
+
+COMMENT ON TABLE "lqbz"."als_judge_fault_logic_t" IS '判故逻辑';
+
+COMMENT ON COLUMN "lqbz"."als_judge_fault_logic_t"."id" IS '编号';
+
+COMMENT ON COLUMN "lqbz"."als_judge_fault_logic_t"."model" IS '机型';
+
+COMMENT ON COLUMN "lqbz"."als_judge_fault_logic_t"."HMC_code" IS 'HMC码';
+
+COMMENT ON COLUMN "lqbz"."als_judge_fault_logic_t"."parameter_column" IS '参数列';
+
+COMMENT ON COLUMN "lqbz"."als_judge_fault_logic_t"."pattern" IS '模型';
+
+COMMENT ON COLUMN "lqbz"."als_judge_fault_logic_t"."remarks" IS '备注';
+
+COMMENT ON COLUMN "lqbz"."als_judge_fault_logic_t"."tenant_id" IS '租户号';
+
+COMMENT ON COLUMN "lqbz"."als_judge_fault_logic_t"."del_flag" IS '删除标识(1删除 0未删除)';
+
+COMMENT ON COLUMN "lqbz"."als_judge_fault_logic_t"."version" IS '乐观锁';
+
+COMMENT ON COLUMN "lqbz"."als_judge_fault_logic_t"."create_by" IS '创建人';
+
+COMMENT ON COLUMN "lqbz"."als_judge_fault_logic_t"."create_time" IS '创建时间';
+
+COMMENT ON COLUMN "lqbz"."als_judge_fault_logic_t"."update_by" IS '更新人';
+
+COMMENT ON COLUMN "lqbz"."als_judge_fault_logic_t"."update_time" IS '更新时间';
+
+CREATE TABLE "lqbz"."als_fault_statistics_t"
+(
+    "id" BIGINT NOT NULL,
+    "statistics_date" DATE,
+    "war_zone" VARCHAR2(255),
+    "army" VARCHAR2(255),
+    "division" VARCHAR2(255),
+    "groups" VARCHAR2(255),
+    "squadron" VARCHAR2(255),
+    "aircraft_num" VARCHAR2(255),
+    "aircraft_model" VARCHAR2(255),
+    "factory_num" VARCHAR2(255),
+    "machine_type" VARCHAR2(255),
+    "machine_num" VARCHAR2(255),
+    "machine_model" VARCHAR2(255),
+    "machine_name" VARCHAR2(255),
+    "landing_gear" VARCHAR2(255),
+    "major" VARCHAR2(255),
+    "faulty_parts_name" VARCHAR2(255),
+    "faulty_parts_model" VARCHAR2(255),
+    "faulty_parts_num" VARCHAR2(255),
+    "engine_model" VARCHAR2(255),
+    "engine_num" VARCHAR2(255),
+    "engine_serial_num" VARCHAR2(255),
+    "faulty_parts_position" VARCHAR2(255),
+    "faulty_phenomenon" VARCHAR2(500),
+    "faulty_place" VARCHAR2(255),
+    "find_opportunity" VARCHAR2(255),
+    "systems" VARCHAR2(255),
+    "timing_type" VARCHAR2(255),
+    "faulty_parts_manufacturer" VARCHAR2(255),
+    "faulty_parts_renovate" VARCHAR2(255),
+    "installation_time" VARCHAR2(255),
+    "total_work_time" VARCHAR2(255),
+    "repair_time" VARCHAR2(255),
+    "replacement_parts_model" VARCHAR2(255),
+    "replacement_parts_num" VARCHAR2(255),
+    "replacement_parts_manufacturer" VARCHAR2(255),
+    "replacement_total_work_time" VARCHAR2(255),
+    "replacement_parts_renovate" VARCHAR2(255),
+    "replacement_repair_time" VARCHAR2(255),
+    "faulty_abnormal_code" VARCHAR2(255),
+    "faulty_parts_install_date" DATE,
+    "faulty_reason" VARCHAR2(500),
+    "faulty_nature" VARCHAR2(500),
+    "faulty_responsibility" VARCHAR2(500),
+    "faulty_consequence" VARCHAR2(500),
+    "handling_suggestions" VARCHAR2(500),
+    "influence_frequency" VARCHAR2(255),
+    "error_fly_frequency" VARCHAR2(255),
+    "identification_method" VARCHAR2(500),
+    "discovered_people" VARCHAR2(255),
+    "exclusion_method" VARCHAR2(500),
+    "exclusion_people" VARCHAR2(255),
+    "examine_people" VARCHAR2(255),
+    "examine_time" TIMESTAMP(6),
+    "exclusion_date" DATE,
+    "exclusion_work_time" VARCHAR2(255),
+    "exclusion_people_num" VARCHAR2(255),
+    "exclusion_time" VARCHAR2(255),
+    "is_achievement" VARCHAR2(255),
+    "need_test_fly" VARCHAR2(255),
+    "repair_status" VARCHAR2(255),
+    "remarks" VARCHAR2(900),
+    "tenant_id" BIGINT,
+    "del_flag" BIT DEFAULT 0,
+    "version" INTEGER,
+    "create_by" VARCHAR2(8188),
+    "create_time" TIMESTAMP(6),
+    "update_by" VARCHAR2(8188),
+    "update_time" TIMESTAMP(6),
+    NOT CLUSTER PRIMARY KEY("id")) STORAGE(ON "MAIN", CLUSTERBTR);
+
+COMMENT ON TABLE "lqbz"."als_fault_statistics_t" IS '故障统计';
+
+COMMENT ON COLUMN "lqbz"."als_fault_statistics_t"."id" IS '编号';
+
+COMMENT ON COLUMN "lqbz"."als_fault_statistics_t"."statistics_date" IS '日期';
+
+COMMENT ON COLUMN "lqbz"."als_fault_statistics_t"."war_zone" IS '战区';
+
+COMMENT ON COLUMN "lqbz"."als_fault_statistics_t"."army" IS '军';
+
+COMMENT ON COLUMN "lqbz"."als_fault_statistics_t"."division" IS '师';
+
+COMMENT ON COLUMN "lqbz"."als_fault_statistics_t"."groups" IS '团';
+
+COMMENT ON COLUMN "lqbz"."als_fault_statistics_t"."squadron" IS '中队';
+
+COMMENT ON COLUMN "lqbz"."als_fault_statistics_t"."aircraft_num" IS '飞机号';
+
+COMMENT ON COLUMN "lqbz"."als_fault_statistics_t"."aircraft_model" IS '机型';
+
+COMMENT ON COLUMN "lqbz"."als_fault_statistics_t"."factory_num" IS '出厂号码';
+
+COMMENT ON COLUMN "lqbz"."als_fault_statistics_t"."machine_type" IS '机件类型';
+
+COMMENT ON COLUMN "lqbz"."als_fault_statistics_t"."machine_num" IS '机件号';
+
+COMMENT ON COLUMN "lqbz"."als_fault_statistics_t"."machine_model" IS '机件型别';
+
+COMMENT ON COLUMN "lqbz"."als_fault_statistics_t"."machine_name" IS '机件名称';
+
+COMMENT ON COLUMN "lqbz"."als_fault_statistics_t"."landing_gear" IS '起落';
+
+COMMENT ON COLUMN "lqbz"."als_fault_statistics_t"."major" IS '专业';
+
+COMMENT ON COLUMN "lqbz"."als_fault_statistics_t"."faulty_parts_name" IS '故障件名称';
+
+COMMENT ON COLUMN "lqbz"."als_fault_statistics_t"."faulty_parts_model" IS '故障件型别';
+
+COMMENT ON COLUMN "lqbz"."als_fault_statistics_t"."faulty_parts_num" IS '故障件号码';
+
+COMMENT ON COLUMN "lqbz"."als_fault_statistics_t"."engine_model" IS '故障件所属发动机型别';
+
+COMMENT ON COLUMN "lqbz"."als_fault_statistics_t"."engine_num" IS '故障件所属发动机号码';
+
+COMMENT ON COLUMN "lqbz"."als_fault_statistics_t"."engine_serial_num" IS '故障件所属发动机号码';
+
+COMMENT ON COLUMN "lqbz"."als_fault_statistics_t"."faulty_parts_position" IS '故障件位置';
+
+COMMENT ON COLUMN "lqbz"."als_fault_statistics_t"."faulty_phenomenon" IS '故障现象';
+
+COMMENT ON COLUMN "lqbz"."als_fault_statistics_t"."faulty_place" IS '故障发生地点';
+
+COMMENT ON COLUMN "lqbz"."als_fault_statistics_t"."find_opportunity" IS '发现时机';
+
+COMMENT ON COLUMN "lqbz"."als_fault_statistics_t"."systems" IS '系统';
+
+COMMENT ON COLUMN "lqbz"."als_fault_statistics_t"."timing_type" IS '计时类型';
+
+COMMENT ON COLUMN "lqbz"."als_fault_statistics_t"."faulty_parts_manufacturer" IS '故障件制造厂';
+
+COMMENT ON COLUMN "lqbz"."als_fault_statistics_t"."faulty_parts_renovate" IS '故障件翻修厂';
+
+COMMENT ON COLUMN "lqbz"."als_fault_statistics_t"."installation_time" IS '故障件装本机工作时次';
+
+COMMENT ON COLUMN "lqbz"."als_fault_statistics_t"."total_work_time" IS '故障件总工作时次';
+
+COMMENT ON COLUMN "lqbz"."als_fault_statistics_t"."repair_time" IS '故障件修后时次';
+
+COMMENT ON COLUMN "lqbz"."als_fault_statistics_t"."replacement_parts_model" IS '故换件型别';
+
+COMMENT ON COLUMN "lqbz"."als_fault_statistics_t"."replacement_parts_num" IS '故换件号码';
+
+COMMENT ON COLUMN "lqbz"."als_fault_statistics_t"."replacement_parts_manufacturer" IS '故换件制造厂';
+
+COMMENT ON COLUMN "lqbz"."als_fault_statistics_t"."replacement_total_work_time" IS '故换件总工作时次';
+
+COMMENT ON COLUMN "lqbz"."als_fault_statistics_t"."replacement_parts_renovate" IS '故换件翻修厂';
+
+COMMENT ON COLUMN "lqbz"."als_fault_statistics_t"."replacement_repair_time" IS '故换件修后时次';
+
+COMMENT ON COLUMN "lqbz"."als_fault_statistics_t"."faulty_abnormal_code" IS '故障失常码';
+
+COMMENT ON COLUMN "lqbz"."als_fault_statistics_t"."faulty_parts_install_date" IS '故障件装机日期';
+
+COMMENT ON COLUMN "lqbz"."als_fault_statistics_t"."faulty_reason" IS '故障原因';
+
+COMMENT ON COLUMN "lqbz"."als_fault_statistics_t"."faulty_nature" IS '故障性质';
+
+COMMENT ON COLUMN "lqbz"."als_fault_statistics_t"."faulty_responsibility" IS '故障责任';
+
+COMMENT ON COLUMN "lqbz"."als_fault_statistics_t"."faulty_consequence" IS '故障后果';
+
+COMMENT ON COLUMN "lqbz"."als_fault_statistics_t"."handling_suggestions" IS '处理意见';
+
+COMMENT ON COLUMN "lqbz"."als_fault_statistics_t"."influence_frequency" IS '影响次数';
+
+COMMENT ON COLUMN "lqbz"."als_fault_statistics_t"."error_fly_frequency" IS '误飞次数';
+
+COMMENT ON COLUMN "lqbz"."als_fault_statistics_t"."identification_method" IS '判明方法';
+
+COMMENT ON COLUMN "lqbz"."als_fault_statistics_t"."discovered_people" IS '发现人';
+
+COMMENT ON COLUMN "lqbz"."als_fault_statistics_t"."exclusion_method" IS '排除方法';
+
+COMMENT ON COLUMN "lqbz"."als_fault_statistics_t"."exclusion_people" IS '排故人';
+
+COMMENT ON COLUMN "lqbz"."als_fault_statistics_t"."examine_people" IS '审核人';
+
+COMMENT ON COLUMN "lqbz"."als_fault_statistics_t"."examine_time" IS '审核时间';
+
+COMMENT ON COLUMN "lqbz"."als_fault_statistics_t"."exclusion_date" IS '排除日期';
+
+COMMENT ON COLUMN "lqbz"."als_fault_statistics_t"."exclusion_work_time" IS '排故工时';
+
+COMMENT ON COLUMN "lqbz"."als_fault_statistics_t"."exclusion_people_num" IS '排故人数';
+
+COMMENT ON COLUMN "lqbz"."als_fault_statistics_t"."exclusion_time" IS '排故时间';
+
+COMMENT ON COLUMN "lqbz"."als_fault_statistics_t"."is_achievement" IS '是否立功';
+
+COMMENT ON COLUMN "lqbz"."als_fault_statistics_t"."need_test_fly" IS '需要试飞';
+
+COMMENT ON COLUMN "lqbz"."als_fault_statistics_t"."repair_status" IS '维修状态';
+
+COMMENT ON COLUMN "lqbz"."als_fault_statistics_t"."remarks" IS '备注';
+
+COMMENT ON COLUMN "lqbz"."als_fault_statistics_t"."tenant_id" IS '租户号';
+
+COMMENT ON COLUMN "lqbz"."als_fault_statistics_t"."del_flag" IS '删除标识(1删除 0未删除)';
+
+COMMENT ON COLUMN "lqbz"."als_fault_statistics_t"."version" IS '乐观锁';
+
+COMMENT ON COLUMN "lqbz"."als_fault_statistics_t"."create_by" IS '创建人';
+
+COMMENT ON COLUMN "lqbz"."als_fault_statistics_t"."create_time" IS '创建时间';
+
+COMMENT ON COLUMN "lqbz"."als_fault_statistics_t"."update_by" IS '更新人';
+
+COMMENT ON COLUMN "lqbz"."als_fault_statistics_t"."update_time" IS '更新时间';
+