Ver código fonte

通讯管理增删改查,故障管理增删改

caowencheng 6 meses atrás
pai
commit
959d7286cf
81 arquivos alterados com 5977 adições e 683 exclusões
  1. 0 1
      als-modules/agile-assurance/src/main/java/org/eco/als/controller/AirConfigurationController.java
  2. 12 1
      als-modules/agile-assurance/src/main/java/org/eco/als/controller/AlgorithmController.java
  3. 143 0
      als-modules/agile-assurance/src/main/java/org/eco/als/controller/CommunicationController.java
  4. 159 0
      als-modules/agile-assurance/src/main/java/org/eco/als/controller/FaultStatisticsController.java
  5. 137 0
      als-modules/agile-assurance/src/main/java/org/eco/als/controller/JudgeFaultLogicController.java
  6. 4 2
      als-modules/agile-assurance/src/main/java/org/eco/als/controller/LifePredictionController.java
  7. 0 121
      als-modules/agile-assurance/src/main/java/org/eco/als/controller/LifePredictionResultController.java
  8. 138 0
      als-modules/agile-assurance/src/main/java/org/eco/als/controller/LifetimeSparePartsController.java
  9. 141 0
      als-modules/agile-assurance/src/main/java/org/eco/als/controller/QaHistoryController.java
  10. 13 12
      als-modules/agile-assurance/src/main/java/org/eco/als/controller/SmTaskController.java
  11. 64 0
      als-modules/agile-assurance/src/main/java/org/eco/als/domain/Communication.java
  12. 219 0
      als-modules/agile-assurance/src/main/java/org/eco/als/domain/FaultStatistics.java
  13. 49 0
      als-modules/agile-assurance/src/main/java/org/eco/als/domain/JudgeFaultLogic.java
  14. 12 9
      als-modules/agile-assurance/src/main/java/org/eco/als/domain/LifePrediction.java
  15. 72 0
      als-modules/agile-assurance/src/main/java/org/eco/als/domain/LifetimeSpareParts.java
  16. 73 0
      als-modules/agile-assurance/src/main/java/org/eco/als/domain/QaHistory.java
  17. 5 7
      als-modules/agile-assurance/src/main/java/org/eco/als/domain/bo/AlgorithmBo.java
  18. 87 0
      als-modules/agile-assurance/src/main/java/org/eco/als/domain/bo/CommunicationBo.java
  19. 359 0
      als-modules/agile-assurance/src/main/java/org/eco/als/domain/bo/FaultStatisticsBo.java
  20. 56 0
      als-modules/agile-assurance/src/main/java/org/eco/als/domain/bo/JudgeFaultLogicBo.java
  21. 18 12
      als-modules/agile-assurance/src/main/java/org/eco/als/domain/bo/LifePredictionBo.java
  22. 0 65
      als-modules/agile-assurance/src/main/java/org/eco/als/domain/bo/LifePredictionResultBo.java
  23. 91 0
      als-modules/agile-assurance/src/main/java/org/eco/als/domain/bo/LifetimeSparePartsBo.java
  24. 1 1
      als-modules/agile-assurance/src/main/java/org/eco/als/domain/bo/ModelBo.java
  25. 60 0
      als-modules/agile-assurance/src/main/java/org/eco/als/domain/bo/QaHistoryBo.java
  26. 272 0
      als-modules/agile-assurance/src/main/java/org/eco/als/domain/vo/FaultStatisticsImportVo.java
  27. 306 0
      als-modules/agile-assurance/src/main/java/org/eco/als/domain/vo/FaultStatisticsVo.java
  28. 44 0
      als-modules/agile-assurance/src/main/java/org/eco/als/domain/vo/FaultStatisticsWbVo.java
  29. 54 0
      als-modules/agile-assurance/src/main/java/org/eco/als/domain/vo/JudgeFaultLogicImportVo.java
  30. 74 0
      als-modules/agile-assurance/src/main/java/org/eco/als/domain/vo/JudgeFaultLogicVo.java
  31. 0 94
      als-modules/agile-assurance/src/main/java/org/eco/als/domain/vo/LifePredictionResultVo.java
  32. 17 16
      als-modules/agile-assurance/src/main/java/org/eco/als/domain/vo/LifePredictionVo.java
  33. 83 0
      als-modules/agile-assurance/src/main/java/org/eco/als/domain/vo/LifetimeSparePartsImportVo.java
  34. 104 0
      als-modules/agile-assurance/src/main/java/org/eco/als/domain/vo/LifetimeSparePartsVo.java
  35. 76 0
      als-modules/agile-assurance/src/main/java/org/eco/als/domain/vo/QaHistoryImportVo.java
  36. 98 0
      als-modules/agile-assurance/src/main/java/org/eco/als/domain/vo/QaHistoryVo.java
  37. 12 30
      als-modules/agile-assurance/src/main/java/org/eco/als/domain/vo/SmTaskImportVo.java
  38. 12 12
      als-modules/agile-assurance/src/main/java/org/eco/als/domain/vo/SmTaskVo.java
  39. 11 0
      als-modules/agile-assurance/src/main/java/org/eco/als/es/mapper/EsFaultCaseMapper.java
  40. 128 0
      als-modules/agile-assurance/src/main/java/org/eco/als/listener/CommunicationImportListener.java
  41. 134 0
      als-modules/agile-assurance/src/main/java/org/eco/als/listener/FaultStatisticsImportListener.java
  42. 128 0
      als-modules/agile-assurance/src/main/java/org/eco/als/listener/JudgeFaultLogicImportListener.java
  43. 134 0
      als-modules/agile-assurance/src/main/java/org/eco/als/listener/LifetimeSparePartsImportListener.java
  44. 128 0
      als-modules/agile-assurance/src/main/java/org/eco/als/listener/QaHistoryImportListener.java
  45. 9 3
      als-modules/agile-assurance/src/main/java/org/eco/als/listener/SmTaskImportListener.java
  46. 19 0
      als-modules/agile-assurance/src/main/java/org/eco/als/mapper/CommunicationMapper.java
  47. 16 0
      als-modules/agile-assurance/src/main/java/org/eco/als/mapper/FaultStatisticsMapper.java
  48. 16 0
      als-modules/agile-assurance/src/main/java/org/eco/als/mapper/JudgeFaultLogicMapper.java
  49. 0 16
      als-modules/agile-assurance/src/main/java/org/eco/als/mapper/LifePredictionResultMapper.java
  50. 16 0
      als-modules/agile-assurance/src/main/java/org/eco/als/mapper/LifetimeSparePartsMapper.java
  51. 16 0
      als-modules/agile-assurance/src/main/java/org/eco/als/mapper/QaHistoryMapper.java
  52. 1 0
      als-modules/agile-assurance/src/main/java/org/eco/als/service/IAlgorithmService.java
  53. 95 0
      als-modules/agile-assurance/src/main/java/org/eco/als/service/ICommunicationService.java
  54. 113 0
      als-modules/agile-assurance/src/main/java/org/eco/als/service/IFaultStatisticsService.java
  55. 95 0
      als-modules/agile-assurance/src/main/java/org/eco/als/service/IJudgeFaultLogicService.java
  56. 0 86
      als-modules/agile-assurance/src/main/java/org/eco/als/service/ILifePredictionResultService.java
  57. 1 1
      als-modules/agile-assurance/src/main/java/org/eco/als/service/ILifePredictionService.java
  58. 95 0
      als-modules/agile-assurance/src/main/java/org/eco/als/service/ILifetimeSparePartsService.java
  59. 7 0
      als-modules/agile-assurance/src/main/java/org/eco/als/service/IModelService.java
  60. 103 0
      als-modules/agile-assurance/src/main/java/org/eco/als/service/IQaHistoryService.java
  61. 94 13
      als-modules/agile-assurance/src/main/java/org/eco/als/service/impl/AlgorithmService.java
  62. 202 0
      als-modules/agile-assurance/src/main/java/org/eco/als/service/impl/CommunicationServiceImpl.java
  63. 261 0
      als-modules/agile-assurance/src/main/java/org/eco/als/service/impl/FaultStatisticsServiceImpl.java
  64. 186 0
      als-modules/agile-assurance/src/main/java/org/eco/als/service/impl/JudgeFaultLogicServiceImpl.java
  65. 0 173
      als-modules/agile-assurance/src/main/java/org/eco/als/service/impl/LifePredictionResultServiceImpl.java
  66. 8 8
      als-modules/agile-assurance/src/main/java/org/eco/als/service/impl/LifePredictionServiceImpl.java
  67. 190 0
      als-modules/agile-assurance/src/main/java/org/eco/als/service/impl/LifetimeSparePartsServiceImpl.java
  68. 5 0
      als-modules/agile-assurance/src/main/java/org/eco/als/service/impl/ModelServiceImpl.java
  69. 203 0
      als-modules/agile-assurance/src/main/java/org/eco/als/service/impl/QaHistoryServiceImpl.java
  70. 15 0
      als-modules/agile-assurance/src/main/resources/mapper/als/CommunicationMapper.xml
  71. 7 0
      als-modules/agile-assurance/src/main/resources/mapper/als/JudgeFaultLogicMapper.xml
  72. 7 0
      als-modules/agile-assurance/src/main/resources/mapper/als/LifetimeSparePartsMapper.xml
  73. 7 0
      als-modules/agile-assurance/src/main/resources/mapper/als/QaHistoryMapper.xml
  74. 2 0
      als-start/src/main/resources/application-dev.yml
  75. 74 0
      als-start/src/main/resources/db/dm/V1_0_0_5_1214__als-ddl.sql
  76. 9 0
      als-start/src/main/resources/db/dm/V1_0_0_5__als-1212-ddl.sql
  77. 37 0
      als-start/src/main/resources/db/dm/V1_0_0_6__als-1213-ddl.sql
  78. 259 0
      als-start/src/main/resources/db/dm/V1_1_0_5__als-ddl.sql
  79. 66 0
      als-start/src/main/resources/db/dm/V1_1_0_6_1214__als-ddl.sql
  80. 5 0
      als-start/src/main/resources/db/dm/V1_1_0_7_1216__als-ddl.sql
  81. 10 0
      als-start/src/main/resources/db/dm/V1_1_0_8_1216__als-dml.sql

+ 0 - 1
als-modules/agile-assurance/src/main/java/org/eco/als/controller/AirConfigurationController.java

@@ -49,7 +49,6 @@ public class AirConfigurationController extends BaseController {
         return CommonResult.success(list);
     }
 
-    @SaCheckPermission("als:airConfiguration:import")
     @PostMapping("/importTemplate")
     public void importTemplate(HttpServletResponse response) {
         ExcelUtil.exportExcel(new ArrayList<>(), "飞机构型", AirConfigurationImportVo.class, response);

+ 12 - 1
als-modules/agile-assurance/src/main/java/org/eco/als/controller/AlgorithmController.java

@@ -59,13 +59,24 @@ public class AlgorithmController {
      * @param algorithmBo 入参
      * @return org.eco.common.core.core.domain.CommonResult<java.lang.String> 结果
      **/
-    @SaCheckPermission("als:algorithm:execute")
     @PostMapping("/execute/fault")
     public CommonResult<String> executeFault(@Validated @RequestBody AlgorithmBo algorithmBo) {
         String result = algorithmService.executeFault(algorithmBo);
         return StrUtil.isBlank(result) ? CommonResult.fail() : CommonResult.success(result, "");
     }
 
+    /**
+     * 退化评估
+     *
+     * @param algorithmBo 入参
+     * @return org.eco.common.core.core.domain.CommonResult<java.lang.String> 结果
+     **/
+    @PostMapping("/execute/evaluation")
+    public CommonResult<String> executeEvaluation(@Validated @RequestBody AlgorithmBo algorithmBo) {
+        String result = algorithmService.executeEvaluation(algorithmBo);
+        return StrUtil.isBlank(result) ? CommonResult.fail() : CommonResult.success(result, "");
+    }
+
     /**
      * 执行任务管理
      *

+ 143 - 0
als-modules/agile-assurance/src/main/java/org/eco/als/controller/CommunicationController.java

@@ -0,0 +1,143 @@
+package org.eco.als.controller;
+
+import jakarta.servlet.http.HttpServletRequest;
+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.CommunicationImportVo;
+import org.eco.als.domain.vo.CommunicationVo;
+import org.eco.als.domain.bo.CommunicationBo;
+import org.eco.als.service.ICommunicationService;
+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-14
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/als/communication")
+public class CommunicationController extends BaseController {
+    @Resource
+    private ICommunicationService communicationService;
+
+/**
+ * 查询通讯管理列表
+ */
+@SaCheckPermission("als:communication:list")
+@GetMapping("/list")
+    public CommonResult<PageResult<CommunicationVo>> list(CommunicationBo communicationBo, HttpServletRequest request) {
+    String param = request.getParameter("queryParam");
+    if (param!=null && !param.isEmpty() ){
+        communicationBo.setName(param);
+        communicationBo.setId((long) Integer.parseInt(param));
+    }
+        return CommonResult.success(communicationService.selectPage(communicationBo));
+    }
+
+    /**
+     * 导出通讯管理列表
+     */
+    @SaCheckPermission("als:communication:export")
+    @Log(title = "通讯管理", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public CommonResult<Void> export(CommunicationBo communicationBo) {
+        LoginUser loginUser = LoginHelper.getLoginUser();
+        List<CommunicationVo> list = communicationService.selectList(communicationBo);
+        if (CollUtil.isEmpty(list)) {
+            return CommonResult.fail("导出列表为空");
+        }
+            communicationService.asyncExport(list, "通讯管理", loginUser);
+        return CommonResult.success();
+    }
+
+    @SaCheckPermission("als:communication:import")
+    @PostMapping("/importTemplate")
+    public void importTemplate(HttpServletResponse response) {
+        ExcelUtil.exportExcel(new ArrayList<>(), "通讯管理", CommunicationImportVo.class, response);
+    }
+
+    /**
+     * 导入通讯管理列表
+     */
+    @Log(title = "通讯管理", businessType = BusinessType.IMPORT)
+    @SaCheckPermission("als:communication:import")
+    @PostMapping("/importData")
+    public CommonResult<Void> importData(MultipartFile file, boolean updateSupport) {
+        LoginUser loginUser = LoginHelper.getLoginUser();
+            communicationService.asyncImportData(file, updateSupport, loginUser);
+        return CommonResult.success();
+    }
+
+    /**
+     * 获取通讯管理详细信息
+     */
+    @SaCheckPermission("als:communication:query")
+    @GetMapping(value = "/{id}")
+    public CommonResult<CommunicationVo> getInfo(@PathVariable Long id) {
+        return CommonResult.success(communicationService.selectById(id));
+    }
+
+    /**
+     * 新增通讯管理
+     */
+    @SaCheckPermission("als:communication:add")
+    @Log(title = "通讯管理", businessType = BusinessType.INSERT)
+    @RepeatSubmit()
+    @PostMapping
+    public CommonResult<Void> add(@Validated @RequestBody CommunicationBo communicationBo) {
+        boolean inserted = communicationService.insert(communicationBo);
+        if (!inserted) {
+            return CommonResult.fail("新增通讯管理记录失败!");
+        }
+        return CommonResult.success();
+    }
+
+    /**
+     * 修改通讯管理
+     */
+    @SaCheckPermission("als:communication:edit")
+    @Log(title = "通讯管理", businessType = BusinessType.UPDATE)
+    @RepeatSubmit()
+    @PutMapping
+    public CommonResult<Void> edit(@Validated @RequestBody CommunicationBo communicationBo) {
+        boolean updated = communicationService.update(communicationBo);
+        if (!updated) {
+            return CommonResult.fail("修改通讯管理记录失败!");
+        }
+        return CommonResult.success();
+    }
+
+    /**
+     * 删除通讯管理
+     */
+    @SaCheckPermission("als:communication:remove")
+    @Log(title = "通讯管理", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public CommonResult<Void> remove(@PathVariable Long[] ids) {
+        boolean deleted = communicationService.deleteByIds(ids);
+        if (!deleted) {
+            return CommonResult.fail("删除通讯管理记录失败!");
+        }
+        return CommonResult.success();
+    }
+}

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

@@ -0,0 +1,159 @@
+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.*;
+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.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:list")
+    @GetMapping("/statistics")
+    public CommonResult<List<FaultStatisticsVo>> Statistics(FaultStatisticsBo faultStatisticsBo) {
+        return CommonResult.success(faultStatisticsService.Statistics(faultStatisticsBo));
+    }
+
+    /**
+     * 外部查询故障统计列表
+     */
+    @GetMapping("/outsideListAll")
+    public CommonResult<List<FaultStatisticsWbVo>> outsideListAll(FaultStatisticsBo faultStatisticsBo) {
+        return CommonResult.success(faultStatisticsService.outsideListAll(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();
+    }
+}

+ 4 - 2
als-modules/agile-assurance/src/main/java/org/eco/als/controller/LifePredictionController.java

@@ -2,8 +2,10 @@ package org.eco.als.controller;
 
 import cn.dev33.satoken.annotation.SaCheckPermission;
 import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.util.ObjectUtil;
 import jakarta.annotation.Resource;
 import lombok.RequiredArgsConstructor;
+import org.eco.als.domain.LifePrediction;
 import org.eco.als.domain.bo.LifePredictionBo;
 import org.eco.als.domain.vo.LifePredictionVo;
 import org.eco.als.service.ILifePredictionService;
@@ -83,8 +85,8 @@ public class LifePredictionController extends BaseController {
     @RepeatSubmit()
     @PostMapping
     public CommonResult<Void> add(@Validated @RequestBody LifePredictionBo lifePredictionBo) {
-        boolean inserted = lifePredictionService.insert(lifePredictionBo);
-        if (!inserted) {
+        LifePrediction lifePrediction = lifePredictionService.insert(lifePredictionBo);
+        if (ObjectUtil.isNull(lifePrediction)) {
             return CommonResult.fail("新增寿命预测记录失败!");
         }
         return CommonResult.success();

+ 0 - 121
als-modules/agile-assurance/src/main/java/org/eco/als/controller/LifePredictionResultController.java

@@ -1,121 +0,0 @@
-package org.eco.als.controller;
-
-import cn.dev33.satoken.annotation.SaCheckPermission;
-import cn.hutool.core.collection.CollUtil;
-import jakarta.annotation.Resource;
-import lombok.RequiredArgsConstructor;
-import org.eco.als.domain.bo.LifePredictionResultBo;
-import org.eco.als.domain.vo.LifePredictionResultVo;
-import org.eco.als.service.ILifePredictionResultService;
-import org.eco.common.core.core.domain.CommonResult;
-import org.eco.common.core.core.domain.model.LoginUser;
-import org.eco.common.core.core.page.PageResult;
-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.web.annotation.RepeatSubmit;
-import org.eco.common.web.core.BaseController;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.DeleteMapping;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.PutMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-import java.util.List;
-
-/**
- * 寿命预测结果Controller
- *
- * @author wgk
- * @date 2024-07-26
- */
-@Validated
-@RequiredArgsConstructor
-@RestController
-@RequestMapping("/als/lifePredictionResult")
-public class LifePredictionResultController extends BaseController {
-    @Resource
-    private ILifePredictionResultService lifePredictionResultService;
-
-    /**
-     * 查询寿命预测结果列表
-     */
-    @SaCheckPermission("als:lifePredictionResult:list")
-    @GetMapping("/list")
-    public CommonResult<PageResult<LifePredictionResultVo>> list(LifePredictionResultBo lifePredictionResultBo) {
-        return CommonResult.success(lifePredictionResultService.selectPage(lifePredictionResultBo));
-    }
-
-    /**
-     * 导出寿命预测结果列表
-     */
-    @SaCheckPermission("als:lifePredictionResult:export")
-    @Log(title = "寿命预测结果", businessType = BusinessType.EXPORT)
-    @PostMapping("/export")
-    public CommonResult<Void> export(LifePredictionResultBo lifePredictionResultBo) {
-        LoginUser loginUser = LoginHelper.getLoginUser();
-        List<LifePredictionResultVo> list = lifePredictionResultService.selectList(lifePredictionResultBo);
-        if (CollUtil.isEmpty(list)) {
-            return CommonResult.fail("导出列表为空");
-        }
-        lifePredictionResultService.asyncExport(list, "寿命预测结果", loginUser);
-        return CommonResult.success();
-    }
-
-    /**
-     * 获取寿命预测结果详细信息
-     */
-    @SaCheckPermission("als:lifePredictionResult:query")
-    @GetMapping(value = "/{id}")
-    public CommonResult<LifePredictionResultVo> getInfo(@PathVariable Long id) {
-        return CommonResult.success(lifePredictionResultService.selectById(id));
-    }
-
-    /**
-     * 新增寿命预测结果
-     */
-    @SaCheckPermission("als:lifePredictionResult:add")
-    @Log(title = "寿命预测结果", businessType = BusinessType.INSERT)
-    @RepeatSubmit()
-    @PostMapping
-    public CommonResult<Void> add(@Validated @RequestBody LifePredictionResultBo lifePredictionResultBo) {
-        boolean inserted = lifePredictionResultService.insert(lifePredictionResultBo);
-        if (!inserted) {
-            return CommonResult.fail("新增寿命预测结果记录失败!");
-        }
-        return CommonResult.success();
-    }
-
-    /**
-     * 修改寿命预测结果
-     */
-    @SaCheckPermission("als:lifePredictionResult:edit")
-    @Log(title = "寿命预测结果", businessType = BusinessType.UPDATE)
-    @RepeatSubmit()
-    @PutMapping
-    public CommonResult<Void> edit(@Validated @RequestBody LifePredictionResultBo lifePredictionResultBo) {
-        boolean updated = lifePredictionResultService.update(lifePredictionResultBo);
-        if (!updated) {
-            return CommonResult.fail("修改寿命预测结果记录失败!");
-        }
-        return CommonResult.success();
-    }
-
-    /**
-     * 删除寿命预测结果
-     */
-    @SaCheckPermission("als:lifePredictionResult:remove")
-    @Log(title = "寿命预测结果", businessType = BusinessType.DELETE)
-    @DeleteMapping("/{ids}")
-    public CommonResult<Void> remove(@PathVariable Long[] ids) {
-        boolean deleted = lifePredictionResultService.deleteByIds(ids);
-        if (!deleted) {
-            return CommonResult.fail("删除寿命预测结果记录失败!");
-        }
-        return CommonResult.success();
-    }
-}

+ 138 - 0
als-modules/agile-assurance/src/main/java/org/eco/als/controller/LifetimeSparePartsController.java

@@ -0,0 +1,138 @@
+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.bo.FaultStatisticsBo;
+import org.eco.als.domain.vo.FaultStatisticsImportVo;
+import org.eco.als.domain.vo.FaultStatisticsVo;
+import org.eco.als.listener.FaultStatisticsImportListener;
+import org.eco.als.listener.LifetimeSparePartsImportListener;
+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.LifetimeSparePartsImportVo;
+import org.eco.als.domain.vo.LifetimeSparePartsVo;
+import org.eco.als.domain.bo.LifetimeSparePartsBo;
+import org.eco.als.service.ILifetimeSparePartsService;
+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-14
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/als/lifetimeSpareParts")
+public class LifetimeSparePartsController extends BaseController {
+    @Resource
+    private ILifetimeSparePartsService lifetimeSparePartsService;
+
+/**
+ * 查询有寿件列表
+ */
+@SaCheckPermission("als:lifetimeSpareParts:list")
+@GetMapping("/list")
+    public CommonResult<PageResult<LifetimeSparePartsVo>> list(LifetimeSparePartsBo lifetimeSparePartsBo) {
+        return CommonResult.success(lifetimeSparePartsService.selectPage(lifetimeSparePartsBo));
+    }
+
+    /**
+     * 导出有寿件列表
+     */
+    @SaCheckPermission("als:lifetimeSpareParts:export")
+    @Log(title = "有寿件", businessType = BusinessType.EXPORT)
+    @GetMapping("/export")
+    public void export(HttpServletResponse response, LifetimeSparePartsBo lifetimeSparePartsBo) {
+        List<LifetimeSparePartsVo> list = lifetimeSparePartsService.selectList(lifetimeSparePartsBo);
+        ExcelUtil.exportExcel(list, "有寿件", LifetimeSparePartsVo.class, response);
+    }
+
+    @SaCheckPermission("als:lifetimeSpareParts:import")
+    @GetMapping("/importTemplate")
+    public void importTemplate(HttpServletResponse response) {
+        ExcelUtil.exportExcel(new ArrayList<>(), "有寿件", LifetimeSparePartsImportVo.class, response);
+    }
+
+    /**
+     * 导入有寿件列表
+     */
+    @Log(title = "有寿件", businessType = BusinessType.IMPORT)
+    @SaCheckPermission("als:lifetimeSpareParts:import")
+    @PostMapping("/importData")
+    public CommonResult<Void> importData(MultipartFile file, boolean updateSupport) throws Exception {
+        LoginUser loginUser = LoginHelper.getLoginUser();
+        ExcelResult<LifetimeSparePartsImportVo> result = ExcelUtil.importExcel(file.getInputStream(), LifetimeSparePartsImportVo.class, new LifetimeSparePartsImportListener(updateSupport, loginUser));
+        return CommonResult.success(result.getAnalysis().getLogInfo());
+    }
+
+    /**
+     * 获取有寿件详细信息
+     */
+    @SaCheckPermission("als:lifetimeSpareParts:query")
+    @GetMapping(value = "/{id}")
+    public CommonResult<LifetimeSparePartsVo> getInfo(@PathVariable Long id) {
+        return CommonResult.success(lifetimeSparePartsService.selectById(id));
+    }
+
+    /**
+     * 新增有寿件
+     */
+    @SaCheckPermission("als:lifetimeSpareParts:add")
+    @Log(title = "有寿件", businessType = BusinessType.INSERT)
+    @RepeatSubmit()
+    @PostMapping
+    public CommonResult<Void> add(@Validated @RequestBody LifetimeSparePartsBo lifetimeSparePartsBo) {
+        boolean inserted = lifetimeSparePartsService.insert(lifetimeSparePartsBo);
+        if (!inserted) {
+            return CommonResult.fail("新增有寿件记录失败!");
+        }
+        return CommonResult.success();
+    }
+
+    /**
+     * 修改有寿件
+     */
+    @SaCheckPermission("als:lifetimeSpareParts:edit")
+    @Log(title = "有寿件", businessType = BusinessType.UPDATE)
+    @RepeatSubmit()
+    @PutMapping
+    public CommonResult<Void> edit(@Validated @RequestBody LifetimeSparePartsBo lifetimeSparePartsBo) {
+        boolean updated = lifetimeSparePartsService.update(lifetimeSparePartsBo);
+        if (!updated) {
+            return CommonResult.fail("修改有寿件记录失败!");
+        }
+        return CommonResult.success();
+    }
+
+    /**
+     * 删除有寿件
+     */
+    @SaCheckPermission("als:lifetimeSpareParts:remove")
+    @Log(title = "有寿件", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public CommonResult<Void> remove(@PathVariable Long[] ids) {
+        boolean deleted = lifetimeSparePartsService.deleteByIds(ids);
+        if (!deleted) {
+            return CommonResult.fail("删除有寿件记录失败!");
+        }
+        return CommonResult.success();
+    }
+}

+ 141 - 0
als-modules/agile-assurance/src/main/java/org/eco/als/controller/QaHistoryController.java

@@ -0,0 +1,141 @@
+package org.eco.als.controller;
+
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import cn.hutool.core.collection.CollUtil;
+import jakarta.annotation.Resource;
+import jakarta.servlet.http.HttpServletResponse;
+import lombok.RequiredArgsConstructor;
+import org.eco.als.domain.bo.QaHistoryBo;
+import org.eco.als.domain.vo.QaHistoryImportVo;
+import org.eco.als.domain.vo.QaHistoryVo;
+import org.eco.als.service.IQaHistoryService;
+import org.eco.common.core.core.domain.CommonResult;
+import org.eco.common.core.core.domain.model.LoginUser;
+import org.eco.common.core.core.page.PageResult;
+import org.eco.common.excel.utils.ExcelUtil;
+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.web.annotation.RepeatSubmit;
+import org.eco.common.web.core.BaseController;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 问答历史记录Controller
+ *
+ * @author wgk
+ * @date 2024-12-13
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/als/qaHistory")
+public class QaHistoryController extends BaseController {
+    @Resource
+    private IQaHistoryService qaHistoryService;
+
+    /**
+     * 查询问答历史记录列表
+     */
+    @GetMapping("/list")
+    public CommonResult<PageResult<QaHistoryVo>> list(QaHistoryBo qaHistoryBo) {
+        return CommonResult.success(qaHistoryService.selectPage(qaHistoryBo));
+    }
+    /**
+     * 查询问答历史记录列表不分页
+     */
+    @GetMapping("/list/all")
+    public CommonResult<List<QaHistoryVo>> listAll(QaHistoryBo qaHistoryBo) {
+        return CommonResult.success(qaHistoryService.selectList(qaHistoryBo));
+    }
+
+    /**
+     * 导出问答历史记录列表
+     */
+    @Log(title = "问答历史记录", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public CommonResult<Void> export(QaHistoryBo qaHistoryBo) {
+        LoginUser loginUser = LoginHelper.getLoginUser();
+        List<QaHistoryVo> list = qaHistoryService.selectList(qaHistoryBo);
+        if (CollUtil.isEmpty(list)) {
+            return CommonResult.fail("导出列表为空");
+        }
+        qaHistoryService.asyncExport(list, "问答历史记录", loginUser);
+        return CommonResult.success();
+    }
+
+    @PostMapping("/importTemplate")
+    public void importTemplate(HttpServletResponse response) {
+        ExcelUtil.exportExcel(new ArrayList<>(), "问答历史记录", QaHistoryImportVo.class, response);
+    }
+
+    /**
+     * 导入问答历史记录列表
+     */
+    @PostMapping("/importData")
+    public CommonResult<Void> importData(MultipartFile file, boolean updateSupport) {
+        LoginUser loginUser = LoginHelper.getLoginUser();
+        qaHistoryService.asyncImportData(file, updateSupport, loginUser);
+        return CommonResult.success();
+    }
+
+    /**
+     * 获取问答历史记录详细信息
+     */
+    @GetMapping(value = "/{id}")
+    public CommonResult<QaHistoryVo> getInfo(@PathVariable Long id) {
+        return CommonResult.success(qaHistoryService.selectById(id));
+    }
+
+    /**
+     * 新增问答历史记录
+     */
+    @RepeatSubmit()
+    @PostMapping
+    public CommonResult<Void> add(@Validated @RequestBody QaHistoryBo qaHistoryBo) {
+        boolean inserted = qaHistoryService.insert(qaHistoryBo);
+        if (!inserted) {
+            return CommonResult.fail("新增问答历史记录记录失败!");
+        }
+        return CommonResult.success();
+    }
+
+    /**
+     * 修改问答历史记录
+     */
+    @RepeatSubmit()
+    @PutMapping
+    public CommonResult<Void> edit(@Validated @RequestBody QaHistoryBo qaHistoryBo) {
+        boolean updated = qaHistoryService.update(qaHistoryBo);
+        if (!updated) {
+            return CommonResult.fail("修改问答历史记录记录失败!");
+        }
+        return CommonResult.success();
+    }
+
+    /**
+     * 删除问答历史记录
+     */
+    @DeleteMapping("/{ids}")
+    public CommonResult<Void> remove(@PathVariable Long[] ids) {
+        boolean deleted = qaHistoryService.deleteByIds(ids);
+        if (!deleted) {
+            return CommonResult.fail("删除问答历史记录记录失败!");
+        }
+        return CommonResult.success();
+    }
+
+    /**
+     * 查询问答历史记录列表不分页
+     */
+    @SaCheckPermission("als:qaHistory:list")
+    @GetMapping("/group")
+    public CommonResult<List<QaHistoryVo>> questionList() {
+        return CommonResult.success(qaHistoryService.groupQuestion());
+    }
+}

+ 13 - 12
als-modules/agile-assurance/src/main/java/org/eco/als/controller/SmTaskController.java

@@ -5,14 +5,20 @@ import cn.hutool.core.collection.CollUtil;
 import jakarta.annotation.Resource;
 import jakarta.servlet.http.HttpServletResponse;
 import lombok.RequiredArgsConstructor;
+import org.eco.als.domain.bo.FaultStatisticsBo;
 import org.eco.als.domain.bo.SmTaskBo;
 import org.eco.als.domain.bo.SubTaskBo;
+import org.eco.als.domain.vo.FaultStatisticsImportVo;
+import org.eco.als.domain.vo.FaultStatisticsVo;
 import org.eco.als.domain.vo.SmTaskImportVo;
 import org.eco.als.domain.vo.SmTaskVo;
+import org.eco.als.listener.FaultStatisticsImportListener;
+import org.eco.als.listener.SmTaskImportListener;
 import org.eco.als.service.ISmTaskService;
 import org.eco.common.core.core.domain.CommonResult;
 import org.eco.common.core.core.domain.model.LoginUser;
 import org.eco.common.core.core.page.PageResult;
+import org.eco.common.excel.core.ExcelResult;
 import org.eco.common.excel.utils.ExcelUtil;
 import org.eco.common.log.annotation.Log;
 import org.eco.common.log.enums.BusinessType;
@@ -54,19 +60,14 @@ public class SmTaskController extends BaseController {
      */
     @SaCheckPermission("als:smTask:export")
     @Log(title = "定检任务", businessType = BusinessType.EXPORT)
-    @PostMapping("/export")
-    public CommonResult<Void> export(SmTaskBo smTaskBo) {
-        LoginUser loginUser = LoginHelper.getLoginUser();
+    @GetMapping("/export")
+    public void export(HttpServletResponse response, SmTaskBo smTaskBo) {
         List<SmTaskVo> list = smTaskService.selectList(smTaskBo);
-        if (CollUtil.isEmpty(list)) {
-            return CommonResult.fail("导出列表为空");
-        }
-        smTaskService.asyncExport(list, "定检任务", loginUser);
-        return CommonResult.success();
+        ExcelUtil.exportExcel(list, "定检任务", SmTaskVo.class, response);
     }
 
     @SaCheckPermission("als:smTask:import")
-    @PostMapping("/importTemplate")
+    @GetMapping("/importTemplate")
     public void importTemplate(HttpServletResponse response) {
         ExcelUtil.exportExcel(new ArrayList<>(), "定检任务", SmTaskImportVo.class, response);
     }
@@ -77,10 +78,10 @@ public class SmTaskController extends BaseController {
     @Log(title = "定检任务", businessType = BusinessType.IMPORT)
     @SaCheckPermission("als:smTask:import")
     @PostMapping("/importData")
-    public CommonResult<Void> importData(MultipartFile file, boolean updateSupport) {
+    public CommonResult<Void> importData(MultipartFile file, boolean updateSupport) throws Exception {
         LoginUser loginUser = LoginHelper.getLoginUser();
-        smTaskService.asyncImportData(file, updateSupport, loginUser);
-        return CommonResult.success();
+        ExcelResult<SmTaskImportVo> result = ExcelUtil.importExcel(file.getInputStream(), SmTaskImportVo.class, new SmTaskImportListener(updateSupport, loginUser));
+        return CommonResult.success(result.getAnalysis().getLogInfo());
     }
 
     /**

+ 64 - 0
als-modules/agile-assurance/src/main/java/org/eco/als/domain/Communication.java

@@ -0,0 +1,64 @@
+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_communication_t
+ *
+ * @author wgk
+ * @date 2024-12-14
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@Table(value = "als_communication_t")
+public class Communication extends BaseEntity {
+@Serial
+private static final long serialVersionUID = 1L;
+
+    /** 编号 */
+    @Id
+    private Long id;
+
+    /** 名称 */
+    private String name;
+
+    /** IP地址 */
+    private String ipAddress;
+
+    /** 网段 */
+    private String networkSegment;
+
+    /** 子网掩码 */
+    private String subnetMask;
+
+    /** DNS */
+    private String dns;
+
+    /** 网关 */
+    private String gateway;
+
+    /** http */
+    private String http;
+
+    /** 端口号 */
+    private String port;
+
+    /** 用户名 */
+    private String userName;
+
+    /** 密码 */
+    private String password;
+
+    /** 删除标识(1删除 0未删除) */
+    @Column(isLogicDelete = true)
+    private Integer delFlag;
+
+
+}

+ 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;
+
+
+}

+ 12 - 9
als-modules/agile-assurance/src/main/java/org/eco/als/domain/LifePrediction.java

@@ -32,6 +32,14 @@ public class LifePrediction extends BaseEntity {
      * 机号
      */
     private String aircraftId;
+    /**
+     * 机型
+     */
+    private String aircraftType;
+    /**
+     * 编号
+     */
+    private String code;
     /**
      * 部件名称
      */
@@ -42,25 +50,20 @@ public class LifePrediction extends BaseEntity {
      */
     private String model;
 
-    /**
-     * 所属系统
-     */
-    private String system;
-
     /**
      * 处理方式
      */
     private String methodType;
 
     /**
-     * 剩余时长(h
+     * 状态(1正常
      */
-    private String remainTiem;
+    private String status;
 
     /**
-     * 状态(1正常)
+     * 结果
      */
-    private String status;
+    private String resultContent;
 
     /**
      * 删除标识(1删除 0未删除)

+ 72 - 0
als-modules/agile-assurance/src/main/java/org/eco/als/domain/LifetimeSpareParts.java

@@ -0,0 +1,72 @@
+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_lifetime_spare_parts_t
+ *
+ * @author wgk
+ * @date 2024-12-14
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@Table(value = "als_lifetime_spare_parts_t")
+public class LifetimeSpareParts extends BaseEntity {
+@Serial
+private static final long serialVersionUID = 1L;
+
+    /** 编号 */
+    @Id
+    private Long id;
+
+    /** 飞机编目 */
+    private String airId;
+
+    /** 飞机机号 */
+    private String airModelId;
+
+    /** 构型Id */
+    private String configId;
+
+    /** 部件名称 */
+    private String componentName;
+
+    /** 部件型号 */
+    private String componentModel;
+
+    /** 部件编码 */
+    private String componentNum;
+
+    /** 出厂日期 */
+    private Date factoryDate;
+
+    /** 当前安装飞机 */
+    private String currentInstallAircraft;
+
+    /** 工作时次 */
+    private String workTime;
+
+    /** 额定寿命 */
+    private String ratedLifetime;
+
+    /** 剩余寿命 */
+    private String remainingLifetime;
+
+    /** 备注 */
+    private String remarks;
+
+    /** 删除标识(1删除 0未删除) */
+    @Column(isLogicDelete = true)
+    private Integer delFlag;
+
+
+}

+ 73 - 0
als-modules/agile-assurance/src/main/java/org/eco/als/domain/QaHistory.java

@@ -0,0 +1,73 @@
+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 org.eco.common.orm.core.domain.BaseEntity;
+
+import java.io.Serial;
+
+/**
+ * 问答历史记录对象 als_qa_history_t
+ *
+ * @author wgk
+ * @date 2024-12-13
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@Table(value = "als_qa_history_t")
+public class QaHistory extends BaseEntity {
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 唯一ID
+     */
+    @Id
+    private Long id;
+
+    /**
+     * 当前用户
+     */
+    private String userId;
+
+    /**
+     * 问题
+     */
+    private String question;
+
+    /**
+     * 回答
+     */
+    private String answer;
+
+    /**
+     *图谱相关
+     */
+    private String graph;
+
+    /**
+     * 文件ID
+     */
+    private Long ossId;
+
+    /**
+     * 文件名称
+     */
+    private String fileName;
+
+    /**
+     * 备注
+     */
+    private String remarks;
+
+    /**
+     * 删除标识(1删除 0未删除)
+     */
+    @Column(isLogicDelete = true)
+    private Integer delFlag;
+
+
+}

+ 5 - 7
als-modules/agile-assurance/src/main/java/org/eco/als/domain/bo/AlgorithmBo.java

@@ -1,7 +1,5 @@
 package org.eco.als.domain.bo;
 
-import jakarta.validation.constraints.NotBlank;
-import jakarta.validation.constraints.NotNull;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import org.eco.common.orm.core.domain.BaseEntity;
@@ -20,7 +18,6 @@ public class AlgorithmBo extends BaseEntity {
     /**
      * 模型Id
      */
-    @NotNull(message = "模型Id不能为空")
     private Long modelId;
 
     /**
@@ -31,19 +28,16 @@ public class AlgorithmBo extends BaseEntity {
     /**
      * 数据Id
      */
-    @NotNull(message = "数据Id不能为空")
     private Long ossId;
 
     /**
      * 机号Id
      */
-    @NotNull(message = "机号Id不能为空")
     private String aircraftId;
 
     /**
      * 架次号
      */
-    @NotBlank(message = "架次号不能为空")
     private String sortieNo;
 
     /**
@@ -51,10 +45,14 @@ public class AlgorithmBo extends BaseEntity {
      */
     private String param;
 
+    /**
+     * 部件Id
+     */
+    private String partId;
+
     /**
      * 数据列
      */
-    @NotNull(message = "数据列不能为空")
     private String[] columnData;
 
     /**

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

@@ -0,0 +1,87 @@
+package org.eco.als.domain.bo;
+
+import org.eco.als.domain.Communication;
+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_communication_t
+ *
+ * @author wgk
+ * @date 2024-12-14
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@AutoMapper(target = Communication.class, reverseConvertGenerate = false)
+public class CommunicationBo extends BaseEntity{
+    /**
+     * 编号
+     */
+    @NotNull(message = "编号不能为空")
+    private Long id;
+
+    /**
+     * 名称
+     */
+    @NotBlank(message = "名称不能为空")
+    private String name;
+
+    /**
+     * IP地址
+     */
+    @NotBlank(message = "IP地址不能为空")
+    private String ipAddress;
+
+    /**
+     * 网段
+     */
+    @NotBlank(message = "网段不能为空")
+    private String networkSegment;
+
+    /**
+     * 子网掩码
+     */
+    @NotBlank(message = "子网掩码不能为空")
+    private String subnetMask;
+
+    /**
+     * DNS
+     */
+    @NotBlank(message = "DNS不能为空")
+    private String dns;
+
+    /**
+     * 网关
+     */
+    @NotBlank(message = "网关不能为空")
+    private String gateway;
+
+    /**
+     * http
+     */
+    @NotBlank(message = "http不能为空")
+    private String http;
+
+    /**
+     * 端口号
+     */
+    @NotBlank(message = "端口号不能为空")
+    private String port;
+
+    /**
+     * 用户名
+     */
+    @NotBlank(message = "用户名不能为空")
+    private String userName;
+
+    /**
+     * 密码
+     */
+    @NotBlank(message = "密码不能为空")
+    private String password;
+
+
+}

+ 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;
+
+
+}

+ 18 - 12
als-modules/agile-assurance/src/main/java/org/eco/als/domain/bo/LifePredictionBo.java

@@ -1,8 +1,7 @@
 package org.eco.als.domain.bo;
 
 import io.github.linpeilie.annotations.AutoMapper;
-import jakarta.validation.constraints.NotBlank;
-import jakarta.validation.constraints.NotNull;
+import lombok.Builder;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import org.eco.als.domain.LifePrediction;
@@ -14,6 +13,7 @@ import org.eco.common.orm.core.domain.BaseEntity;
  * @author wgk
  * @date 2024-07-26
  */
+@Builder
 @Data
 @EqualsAndHashCode(callSuper = true)
 @AutoMapper(target = LifePrediction.class, reverseConvertGenerate = false)
@@ -26,35 +26,41 @@ public class LifePredictionBo extends BaseEntity {
     /**
      * 机号Id
      */
-    @NotNull(message = "机号不能为空")
     private String aircraftId;
 
+    /**
+     * 机型
+     */
+    private String aircraftType;
+
+    /**
+     * 编码
+     */
+    private String code;
+
     /**
      * 部件名称
      */
-    @NotBlank(message = "部件名称不能为空")
     private String name;
 
     /**
      * 型号
      */
-    @NotBlank(message = "型号不能为空")
     private String model;
 
-    /**
-     * 所属系统
-     */
-    private String system;
-
     /**
      * 处理方式
      */
     private String methodType;
+    /**
+     * 状态
+     */
+    private String status;
 
     /**
-     * 剩余时长(h)
+     * 结果
      */
-    private String remainTiem;
+    private String resultContent;
 
 
 }

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

@@ -1,65 +0,0 @@
-package org.eco.als.domain.bo;
-
-import io.github.linpeilie.annotations.AutoMapper;
-import jakarta.validation.constraints.NotBlank;
-import jakarta.validation.constraints.NotNull;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import org.eco.als.domain.LifePredictionResult;
-import org.eco.common.orm.core.domain.BaseEntity;
-
-/**
- * 寿命预测结果业务对象 als_life_prediction_result_t
- *
- * @author wgk
- * @date 2024-07-26
- */
-@Data
-@EqualsAndHashCode(callSuper = true)
-@AutoMapper(target = LifePredictionResult.class, reverseConvertGenerate = false)
-public class LifePredictionResultBo extends BaseEntity {
-    /**
-     * 编号
-     */
-    private Long id;
-
-    /**
-     * 寿命预测编号
-     */
-    @NotNull(message = "寿命预测编号不能为空")
-    private Long lifeId;
-
-    /**
-     * 机号Id
-     */
-    @NotNull(message = "机号不能为空")
-    private String aircraftId;
-
-    /**
-     * 部件名称
-     */
-    @NotBlank(message = "部件名称不能为空")
-    private String name;
-
-    /**
-     * 型号
-     */
-    private String model;
-
-    /**
-     * 所属系统
-     */
-    private String system;
-
-    /**
-     * 处理方式
-     */
-    private String methodType;
-
-    /**
-     * 剩余时长(h)
-     */
-    private String remainTiem;
-
-
-}

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

@@ -0,0 +1,91 @@
+package org.eco.als.domain.bo;
+
+import org.eco.als.domain.LifetimeSpareParts;
+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_lifetime_spare_parts_t
+ *
+ * @author wgk
+ * @date 2024-12-14
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@AutoMapper(target = LifetimeSpareParts.class, reverseConvertGenerate = false)
+public class LifetimeSparePartsBo extends BaseEntity{
+    /**
+     * 编号
+     */
+    private Long id;
+
+    /**
+     * 飞机编目
+     */
+    private String airId;
+
+    /**
+     * 飞机机号
+     */
+    private String airModelId;
+
+    /**
+     * 构型Id
+     */
+    private String configId;
+
+    /**
+     * 部件名称
+     */
+    @NotBlank(message = "部件名称不能为空")
+    private String componentName;
+
+    /**
+     * 部件型号
+     */
+    @NotBlank(message = "部件型号不能为空")
+    private String componentModel;
+
+    /**
+     * 部件编码
+     */
+    @NotBlank(message = "部件编码不能为空")
+    private String componentNum;
+
+    /**
+     * 出厂日期
+     */
+    @NotNull(message = "出厂日期不能为空")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date factoryDate;
+
+    /**
+     * 当前安装飞机
+     */
+    @NotBlank(message = "当前安装飞机不能为空")
+    private String currentInstallAircraft;
+
+    /**
+     * 工作时次
+     */
+    @NotBlank(message = "工作时次不能为空")
+    private String workTime;
+
+    /**
+     * 额定寿命
+     */
+    @NotBlank(message = "额定寿命不能为空")
+    private String ratedLifetime;
+
+    /**
+     * 剩余寿命
+     */
+    private String remainingLifetime;
+
+
+}

+ 1 - 1
als-modules/agile-assurance/src/main/java/org/eco/als/domain/bo/ModelBo.java

@@ -46,7 +46,7 @@ public class ModelBo extends BaseEntity {
     private String param;
 
     /**
-     * 参数
+     * 部件Id
      */
     private String partId;
 

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

@@ -0,0 +1,60 @@
+package org.eco.als.domain.bo;
+
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.eco.als.domain.QaHistory;
+import org.eco.common.orm.core.domain.BaseEntity;
+
+/**
+ * 问答历史记录业务对象 als_qa_history_t
+ *
+ * @author wgk
+ * @date 2024-12-13
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@AutoMapper(target = QaHistory.class, reverseConvertGenerate = false)
+public class QaHistoryBo extends BaseEntity {
+    /**
+     * 唯一ID
+     */
+    private Long id;
+
+    /**
+     * 当前用户
+     */
+    private String userId;
+
+    /**
+     * 问题
+     */
+    private String question;
+
+    /**
+     * 回答
+     */
+    private String answer;
+
+    /**
+     *图谱相关
+     */
+    private String graph;
+
+    /**
+     * 文件ID
+     */
+    private Long ossId;
+
+    /**
+     * 文件名称
+     */
+    private String fileName;
+
+    /**
+     * 备注
+     */
+    private String remarks;
+
+
+}

+ 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;
+}

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

@@ -0,0 +1,306 @@
+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;
+
+    /** 统计数量 */
+    private Integer nameCount;
+
+}

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

@@ -0,0 +1,44 @@
+package org.eco.als.domain.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.eco.als.domain.FaultStatistics;
+import org.eco.common.orm.core.domain.BaseEntity;
+
+import java.util.Date;
+
+/**
+ * 故障统计业务对象 als_fault_statistics_t
+ *
+ * @author wgk
+ * @date 2024-12-13
+ */
+@Data
+//@EqualsAndHashCode(callSuper = true)
+@AutoMapper(target = FaultStatistics.class, reverseConvertGenerate = false)
+public class FaultStatisticsWbVo {
+
+    /**
+     * 日期
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date statisticsDate;
+
+    /**
+     * 故障件名称
+     */
+    private String faultyPartsName;
+
+    /**
+     * 故障件装本机工作时次
+     */
+    private String installationTime;
+
+    /**
+     * 故障件装机日期
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date faultyPartsInstallDate;
+}

+ 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;
+
+}

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

@@ -1,94 +0,0 @@
-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.EqualsAndHashCode;
-import org.eco.als.domain.LifePredictionResult;
-import org.eco.common.excel.annotation.ExcelDictFormat;
-import org.eco.common.excel.convert.ExcelDictConvert;
-import org.eco.common.orm.core.domain.BaseEntity;
-
-import java.io.Serial;
-import java.io.Serializable;
-
-/**
- * 寿命预测结果视图对象 als_life_prediction_result_t
- *
- * @author wgk
- * @date 2024-07-26
- */
-@Data
-@ExcelIgnoreUnannotated
-@EqualsAndHashCode(callSuper = true)
-@AutoMapper(target = LifePredictionResult.class)
-public class LifePredictionResultVo extends BaseEntity implements Serializable {
-
-    @Serial
-    private static final long serialVersionUID = 1L;
-
-    /**
-     * 编号
-     */
-    @ExcelProperty(value = "编号")
-    private Long id;
-
-    /**
-     * 寿命预测编号
-     */
-    @ExcelProperty(value = "寿命预测编号")
-    private Long lifeId;
-
-    /**
-     * 机号Id
-     */
-    private String aircraftId;
-
-
-    /**
-     * 部件名称
-     */
-    @ExcelProperty(value = "部件名称")
-    private String name;
-
-    /**
-     * 型号
-     */
-    @ExcelProperty(value = "型号")
-    private String model;
-
-    /**
-     * 所属系统
-     */
-    @ExcelProperty(value = "所属系统")
-    private String system;
-
-    /**
-     * 处理方式
-     */
-    @ExcelProperty(value = "处理方式", converter = ExcelDictConvert.class)
-    @ExcelDictFormat(dictType = "common_type")
-    private String methodType;
-
-    /**
-     * 剩余时长(h)
-     */
-    @ExcelProperty(value = "剩余时长", converter = ExcelDictConvert.class)
-    @ExcelDictFormat(readConverterExp = "h=")
-    private String remainTiem;
-
-    /**
-     * 状态(1正常)
-     */
-    @ExcelProperty(value = "状态(1正常)")
-    private String status;
-
-    /**
-     * 删除标识(1删除 0未删除)
-     */
-    @ExcelProperty(value = "删除标识(1删除 0未删除)")
-    private Integer delFlag;
-
-
-}

+ 17 - 16
als-modules/agile-assurance/src/main/java/org/eco/als/domain/vo/LifePredictionVo.java

@@ -6,8 +6,6 @@ import io.github.linpeilie.annotations.AutoMapper;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import org.eco.als.domain.LifePrediction;
-import org.eco.common.excel.annotation.ExcelDictFormat;
-import org.eco.common.excel.convert.ExcelDictConvert;
 import org.eco.common.orm.core.domain.BaseEntity;
 
 import java.io.Serial;
@@ -39,6 +37,16 @@ public class LifePredictionVo extends BaseEntity implements Serializable {
      */
     private String aircraftId;
 
+    /**
+     * 机型
+     */
+    private String aircraftType;
+    /**
+     * 编号
+     */
+    @ExcelProperty(value = "部件编号")
+    private String code;
+
 
     /**
      * 部件名称
@@ -52,32 +60,25 @@ public class LifePredictionVo extends BaseEntity implements Serializable {
     @ExcelProperty(value = "型号")
     private String model;
 
-    /**
-     * 所属系统
-     */
-    @ExcelProperty(value = "所属系统")
-    private String system;
 
     /**
      * 处理方式
      */
-    @ExcelProperty(value = "处理方式", converter = ExcelDictConvert.class)
-    @ExcelDictFormat(dictType = "common_type")
+    @ExcelProperty(value = "处理方式")
     private String methodType;
 
-    /**
-     * 剩余时长(h)
-     */
-    @ExcelProperty(value = "剩余时长", converter = ExcelDictConvert.class)
-    @ExcelDictFormat(readConverterExp = "h=")
-    private String remainTiem;
-
     /**
      * 状态(1正常)
      */
     @ExcelProperty(value = "状态(1正常)")
     private String status;
 
+    /**
+     * 结果
+     */
+    @ExcelProperty(value = "结果")
+    private String resultContent;
+
     /**
      * 删除标识(1删除 0未删除)
      */

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

@@ -0,0 +1,83 @@
+package org.eco.als.domain.vo;
+
+    import java.util.Date;
+    import com.fasterxml.jackson.annotation.JsonFormat;
+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_lifetime_spare_parts_t
+ *
+ * @author wgk
+ * @date 2024-12-14
+ */
+
+@Data
+@NoArgsConstructor
+@ExcelIgnoreUnannotated
+public class LifetimeSparePartsImportVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+
+                /** 飞机机号 */
+                @ExcelProperty(value = "机型")
+                private String airModelId;
+
+                /** 飞机编目 */
+                    @ExcelProperty(value = "编目")
+                private String airId;
+
+                /** 构型Id */
+                    @ExcelProperty(value = "构型")
+                private String configId;
+
+                /** 部件名称 */
+                    @ExcelProperty(value = "部件名称")
+                private String componentName;
+
+                /** 部件型号 */
+                    @ExcelProperty(value = "部件型号")
+                private String componentModel;
+
+                /** 部件编码 */
+                    @ExcelProperty(value = "部件编码")
+                private String componentNum;
+
+                /** 出厂日期 */
+                    @ExcelProperty(value = "出厂日期")
+                private Date factoryDate;
+
+                /** 当前安装飞机 */
+                    @ExcelProperty(value = "当前安装飞机")
+                private String currentInstallAircraft;
+
+                /** 工作时次 */
+                    @ExcelProperty(value = "工作时次")
+                private String workTime;
+
+                /** 额定寿命 */
+                    @ExcelProperty(value = "额定寿命")
+                private String ratedLifetime;
+
+                /** 剩余寿命 */
+                    @ExcelProperty(value = "剩余寿命")
+                private String remainingLifetime;
+
+                /** 备注 */
+//                    @ExcelProperty(value = "备注")
+                    private String remarks;
+
+                /** 删除标识(1删除 0未删除) */
+//                    @ExcelProperty(value = "删除标识(1删除 0未删除)")
+                    private Integer delFlag;
+
+
+}

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

@@ -0,0 +1,104 @@
+package org.eco.als.domain.vo;
+
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.eco.als.domain.LifetimeSpareParts;
+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_lifetime_spare_parts_t
+ *
+ * @author wgk
+ * @date 2024-12-14
+ */
+@Data
+@ExcelIgnoreUnannotated
+@EqualsAndHashCode(callSuper = true)
+@AutoMapper(target = LifetimeSpareParts.class)
+public class LifetimeSparePartsVo extends BaseEntity implements Serializable {
+
+@Serial
+private static final long serialVersionUID = 1L;
+
+    /** 编号 */
+//    @ExcelProperty(value = "编号")
+    private Long id;
+
+    /** 飞机机号 */
+    @ExcelProperty(value = "机型")
+    private String airModelId;
+
+    /** 飞机编目 */
+    @ExcelProperty(value = "编目")
+    private String airId;
+
+    /** 构型Id */
+    @ExcelProperty(value = "构型")
+    private String configId;
+
+    /** 部件名称 */
+    @ExcelProperty(value = "部件名称")
+    private String componentName;
+
+    /** 部件型号 */
+    @ExcelProperty(value = "部件型号")
+    private String componentModel;
+
+    /** 部件编码 */
+    @ExcelProperty(value = "部件编码")
+    private String componentNum;
+
+    /** 出厂日期 */
+    @ExcelProperty(value = "出厂日期")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private String factoryDate;
+
+    /** 当前安装飞机 */
+    @ExcelProperty(value = "当前安装飞机")
+    private String currentInstallAircraft;
+
+    /** 工作时次 */
+    @ExcelProperty(value = "工作时次")
+    private String workTime;
+
+    /** 额定寿命 */
+    @ExcelProperty(value = "额定寿命")
+    private String ratedLifetime;
+
+    /** 剩余寿命 */
+    @ExcelProperty(value = "剩余寿命")
+    private String remainingLifetime;
+
+    /** 备注 */
+//    @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;
+
+}

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

@@ -0,0 +1,76 @@
+package org.eco.als.domain.vo;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serial;
+import java.io.Serializable;
+
+/**
+ * 问答历史记录导入视图对象 als_qa_history_t
+ *
+ * @author wgk
+ * @date 2024-12-13
+ */
+
+@Data
+@NoArgsConstructor
+@ExcelIgnoreUnannotated
+public class QaHistoryImportVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+
+    /**
+     * 当前用户
+     */
+    @ExcelProperty(value = "当前用户")
+    private String userId;
+
+    /**
+     * 问题
+     */
+    @ExcelProperty(value = "问题")
+    private String question;
+
+    /**
+     * 回答
+     */
+    @ExcelProperty(value = "回答")
+    private String answer;
+
+    /**
+     *图谱相关
+     */
+    @ExcelProperty(value = "图谱相关")
+    private String graph;
+
+    /**
+     * 文件ID
+     */
+    @ExcelProperty(value = "文件ID")
+    private Long ossId;
+
+    /**
+     * 文件名称
+     */
+    @ExcelProperty(value = "文件名称")
+    private String fileName;
+
+    /**
+     * 备注
+     */
+    @ExcelProperty(value = "备注")
+    private String remarks;
+
+    /**
+     * 删除标识(1删除 0未删除)
+     */
+    @ExcelProperty(value = "删除标识(1删除 0未删除)")
+    private Integer delFlag;
+
+
+}

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

@@ -0,0 +1,98 @@
+package org.eco.als.domain.vo;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.eco.common.mapper.annotation.FieldMapper;
+import com.eco.common.mapper.constant.MapperConstant;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.eco.als.domain.QaHistory;
+import org.eco.common.orm.core.domain.BaseEntity;
+
+import java.io.Serial;
+import java.io.Serializable;
+
+/**
+ * 问答历史记录视图对象 als_qa_history_t
+ *
+ * @author wgk
+ * @date 2024-12-13
+ */
+@Data
+@ExcelIgnoreUnannotated
+@EqualsAndHashCode(callSuper = true)
+@AutoMapper(target = QaHistory.class)
+public class QaHistoryVo extends BaseEntity implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 唯一ID
+     */
+    @ExcelProperty(value = "唯一ID")
+    private Long id;
+
+    /**
+     * 当前用户
+     */
+    @ExcelProperty(value = "当前用户")
+    private String userId;
+
+    /**
+     * 问题
+     */
+    @ExcelProperty(value = "问题")
+    private String question;
+
+    /**
+     * 回答
+     */
+    @ExcelProperty(value = "回答")
+    private String answer;
+
+    /**
+     *图谱相关
+     */
+    @ExcelProperty(value = "图谱相关")
+    private String graph;
+
+    /**
+     * 文件ID
+     */
+    @ExcelProperty(value = "文件ID")
+    private Long ossId;
+
+    /**
+     * 文件名称
+     */
+    @ExcelProperty(value = "文件名称")
+    private String fileName;
+
+    /**
+     * 备注
+     */
+    @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;
+
+}

+ 12 - 30
als-modules/agile-assurance/src/main/java/org/eco/als/domain/vo/SmTaskImportVo.java

@@ -2,44 +2,46 @@ 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_sm_task_t
+ * 故障统计导入视图对象 als_fault_statistics_t
  *
  * @author wgk
- * @date 2024-11-20
+ * @date 2024-12-13
  */
 
 @Data
 @NoArgsConstructor
 @ExcelIgnoreUnannotated
+@AutoMapper(target = AirConfigurationVo.class, convertGenerate = false)
 public class SmTaskImportVo implements Serializable {
 
     @Serial
     private static final long serialVersionUID = 1L;
 
-
-    /**
-     * 机号
-     */
-    @ExcelProperty(value = "机号")
-    private String aircraftId;
-
     /**
      * 机型
      */
     @ExcelProperty(value = "机型")
     private String aircraftModel;
 
+    /**
+     * 机号
+     */
+    @ExcelProperty(value = "编目")
+    private String aircraftId;
+
     /**
      * 任务名称
      */
-    @ExcelProperty(value = "任务名称")
+    @ExcelProperty(value = "检查项名称")
     private String name;
 
     /**
@@ -60,12 +62,6 @@ public class SmTaskImportVo implements Serializable {
     @ExcelProperty(value = "周期")
     private String periodTime;
 
-    /**
-     * 剩余时间
-     */
-    @ExcelProperty(value = "剩余时间")
-    private String remainTime;
-
     /**
      * 负责人
      */
@@ -83,18 +79,4 @@ public class SmTaskImportVo implements Serializable {
      */
     @ExcelProperty(value = "任务内容")
     private String contents;
-
-    /**
-     * 备注
-     */
-    @ExcelProperty(value = "备注")
-    private String remark;
-
-    /**
-     * 删除标识(1删除 0未删除)
-     */
-    @ExcelProperty(value = "删除标识(1删除 0未删除)")
-    private Integer delFlag;
-
-
 }

+ 12 - 12
als-modules/agile-assurance/src/main/java/org/eco/als/domain/vo/SmTaskVo.java

@@ -29,25 +29,25 @@ public class SmTaskVo extends BaseEntity implements Serializable {
     /**
      * 编号
      */
-    @ExcelProperty(value = "编号")
+//    @ExcelProperty(value = "编号")
     private Long id;
 
-    /**
-     * 机号
-     */
-    @ExcelProperty(value = "机号")
-    private String aircraftId;
-
     /**
      * 机型
      */
     @ExcelProperty(value = "机型")
     private String aircraftModel;
 
+    /**
+     * 机号
+     */
+    @ExcelProperty(value = "编目")
+    private String aircraftId;
+
     /**
      * 任务名称
      */
-    @ExcelProperty(value = "任务名称")
+    @ExcelProperty(value = "检查项名称")
     private String name;
 
     /**
@@ -71,7 +71,7 @@ public class SmTaskVo extends BaseEntity implements Serializable {
     /**
      * 剩余时间
      */
-    @ExcelProperty(value = "剩余时间")
+//    @ExcelProperty(value = "剩余时间")
     private String remainTime;
 
     /**
@@ -95,19 +95,19 @@ public class SmTaskVo extends BaseEntity implements Serializable {
     /**
      * 备注
      */
-    @ExcelProperty(value = "备注")
+//    @ExcelProperty(value = "备注")
     private String remark;
 
     /**
      * 任务状态
      */
-    @ExcelProperty(value = "任务状态")
+//    @ExcelProperty(value = "任务状态")
     private String status;
 
     /**
      * 删除标识(1删除 0未删除)
      */
-    @ExcelProperty(value = "删除标识(1删除 0未删除)")
+//    @ExcelProperty(value = "删除标识(1删除 0未删除)")
     private Integer delFlag;
 
 

+ 11 - 0
als-modules/agile-assurance/src/main/java/org/eco/als/es/mapper/EsFaultCaseMapper.java

@@ -0,0 +1,11 @@
+package org.eco.als.es.mapper;
+
+
+import org.dromara.easyes.core.core.BaseEsMapper;
+import org.eco.als.domain.FaultCase;
+
+/**
+ * es 故障案例
+ */
+public interface EsFaultCaseMapper extends BaseEsMapper<FaultCase> {
+}

+ 128 - 0
als-modules/agile-assurance/src/main/java/org/eco/als/listener/CommunicationImportListener.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.CommunicationBo;
+import org.eco.als.domain.vo.CommunicationImportVo;
+import org.eco.als.domain.vo.CommunicationVo;
+import org.eco.als.service.ICommunicationService;
+import lombok.extern.slf4j.Slf4j;
+
+import java.util.List;
+
+/**
+ * 通讯管理自定义导入
+ *
+ * @author wgk
+ */
+@Slf4j
+public class CommunicationImportListener extends AnalysisEventListener<CommunicationImportVo> implements ExcelListener<CommunicationImportVo> {
+    private final ICommunicationService communicationService;
+
+    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 CommunicationImportListener(Boolean isUpdateSupport, LoginUser loginUser) {
+        this.communicationService = SpringUtils.getBean(ICommunicationService.class);
+        this.isUpdateSupport = isUpdateSupport;
+        this.loginUser = loginUser;
+    }
+
+    @Override
+    public void invoke(CommunicationImportVo communicationVo, AnalysisContext context) {
+        try {
+
+            CommunicationBo communicationBo = BeanUtil.toBean(communicationVo, CommunicationBo.class);
+
+            //TODO:根据某个字段,查询数据库表中是否存在记录,不存在就新增,存在就更新
+            CommunicationVo communicationVo1 = null;
+
+            //communicationVo1 = communicationService.selectBySomefield(communicationVo.getSomefield());
+            if (ObjectUtil.isNull(communicationVo1)) {
+                //不存在就新增
+                setBo(communicationBo);
+                ValidatorUtils.validate(communicationBo);
+                boolean inserted = communicationService.insert(communicationBo);
+
+                if (inserted) {
+                    successNum++;
+                    successMsg.append("<br/>").append(successNum).append("、通讯管理 记录导入成功");
+                } else {
+                    failureNum++;
+                    failureMsg.append("<br/>").append(failureNum).append("、通讯管理 记录导入失败");
+                }
+            } else if (isUpdateSupport) {
+                //存在就更新
+                communicationBo.setId(communicationVo1.getId());//主键
+                communicationBo.setVersion(communicationVo1.getVersion());
+                boolean updated = communicationService.update(communicationBo);
+                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(CommunicationBo communicationBo) {
+        communicationBo.setVersion(0);
+        communicationBo.setCreateBy(loginUser.getUserId());
+        communicationBo.setUpdateBy(loginUser.getUserId());
+        communicationBo.setTenantId(loginUser.getTenantId());
+    }
+
+    @Override
+    public void doAfterAllAnalysed(AnalysisContext context) {
+        log.info("解析完成");
+    }
+
+    @Override
+    public ExcelResult<CommunicationImportVo> 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<CommunicationImportVo> getList() {
+                return null;
+            }
+
+            @Override
+            public List<String> getErrorList() {
+                return null;
+            }
+        };
+    }
+}

+ 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;
+            }
+        };
+    }
+}

+ 134 - 0
als-modules/agile-assurance/src/main/java/org/eco/als/listener/LifetimeSparePartsImportListener.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.LifetimeSparePartsBo;
+import org.eco.als.domain.vo.LifetimeSparePartsImportVo;
+import org.eco.als.domain.vo.LifetimeSparePartsVo;
+import org.eco.als.service.ILifetimeSparePartsService;
+import lombok.extern.slf4j.Slf4j;
+
+import java.util.List;
+
+/**
+ * 有寿件自定义导入
+ *
+ * @author wgk
+ */
+@Slf4j
+public class LifetimeSparePartsImportListener extends AnalysisEventListener<LifetimeSparePartsImportVo> implements ExcelListener<LifetimeSparePartsImportVo> {
+    private final ILifetimeSparePartsService lifetimeSparePartsService;
+
+    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 LifetimeSparePartsImportListener(Boolean isUpdateSupport, LoginUser loginUser) {
+        this.lifetimeSparePartsService = SpringUtils.getBean(ILifetimeSparePartsService.class);
+        this.isUpdateSupport = isUpdateSupport;
+        this.loginUser = loginUser;
+    }
+
+    @Override
+    public void invoke(LifetimeSparePartsImportVo lifetimeSparePartsVo, AnalysisContext context) {
+        try {
+
+            LifetimeSparePartsBo lifetimeSparePartsBo = BeanUtil.toBean(lifetimeSparePartsVo, LifetimeSparePartsBo.class);
+
+            //TODO:根据某个字段,查询数据库表中是否存在记录,不存在就新增,存在就更新
+            LifetimeSparePartsVo lifetimeSparePartsVo1 = null;
+
+            //lifetimeSparePartsVo1 = lifetimeSparePartsService.selectBySomefield(lifetimeSparePartsVo.getSomefield());
+            if (ObjectUtil.isNull(lifetimeSparePartsVo1)) {
+                //不存在就新增
+                setBo(lifetimeSparePartsBo);
+                ValidatorUtils.validate(lifetimeSparePartsBo);
+                boolean inserted = lifetimeSparePartsService.insert(lifetimeSparePartsBo);
+
+                if (inserted) {
+                    successNum++;
+                    successMsg.append("<br/>").append(successNum).append("、有寿件 记录导入成功");
+                } else {
+                    failureNum++;
+                    failureMsg.append("<br/>").append(failureNum).append("、有寿件 记录导入失败");
+                }
+            } else if (isUpdateSupport) {
+                //存在就更新
+                lifetimeSparePartsBo.setId(lifetimeSparePartsVo1.getId());//主键
+                lifetimeSparePartsBo.setVersion(lifetimeSparePartsVo1.getVersion());
+                boolean updated = lifetimeSparePartsService.update(lifetimeSparePartsBo);
+                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(LifetimeSparePartsBo lifetimeSparePartsBo) {
+        lifetimeSparePartsBo.setVersion(0);
+        if (ObjectUtil.isNull(loginUser)) {
+            lifetimeSparePartsBo.setCreateBy(1L);
+            lifetimeSparePartsBo.setUpdateBy(1L);
+            lifetimeSparePartsBo.setTenantId(0L);
+        } else {
+            lifetimeSparePartsBo.setUpdateBy(loginUser.getUserId());
+            lifetimeSparePartsBo.setCreateBy(loginUser.getUserId());
+            lifetimeSparePartsBo.setTenantId(loginUser.getTenantId());
+        }
+    }
+
+    @Override
+    public void doAfterAllAnalysed(AnalysisContext context) {
+        log.info("解析完成");
+    }
+
+    @Override
+    public ExcelResult<LifetimeSparePartsImportVo> 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<LifetimeSparePartsImportVo> getList() {
+                return null;
+            }
+
+            @Override
+            public List<String> getErrorList() {
+                return null;
+            }
+        };
+    }
+}

+ 128 - 0
als-modules/agile-assurance/src/main/java/org/eco/als/listener/QaHistoryImportListener.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 lombok.extern.slf4j.Slf4j;
+import org.eco.als.domain.bo.QaHistoryBo;
+import org.eco.als.domain.vo.QaHistoryImportVo;
+import org.eco.als.domain.vo.QaHistoryVo;
+import org.eco.als.service.IQaHistoryService;
+import org.eco.common.core.core.domain.model.LoginUser;
+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 java.util.List;
+
+/**
+ * 问答历史记录自定义导入
+ *
+ * @author wgk
+ */
+@Slf4j
+public class QaHistoryImportListener extends AnalysisEventListener<QaHistoryImportVo> implements ExcelListener<QaHistoryImportVo> {
+    private final IQaHistoryService qaHistoryService;
+
+    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 QaHistoryImportListener(Boolean isUpdateSupport, LoginUser loginUser) {
+        this.qaHistoryService = SpringUtils.getBean(IQaHistoryService.class);
+        this.isUpdateSupport = isUpdateSupport;
+        this.loginUser = loginUser;
+    }
+
+    @Override
+    public void invoke(QaHistoryImportVo qaHistoryVo, AnalysisContext context) {
+        try {
+
+            QaHistoryBo qaHistoryBo = BeanUtil.toBean(qaHistoryVo, QaHistoryBo.class);
+
+            //TODO:根据某个字段,查询数据库表中是否存在记录,不存在就新增,存在就更新
+            QaHistoryVo qaHistoryVo1 = null;
+
+            //qaHistoryVo1 = qaHistoryService.selectBySomefield(qaHistoryVo.getSomefield());
+            if (ObjectUtil.isNull(qaHistoryVo1)) {
+                //不存在就新增
+                setBo(qaHistoryBo);
+                ValidatorUtils.validate(qaHistoryBo);
+                boolean inserted = qaHistoryService.insert(qaHistoryBo);
+
+                if (inserted) {
+                    successNum++;
+                    successMsg.append("<br/>").append(successNum).append("、问答历史记录 记录导入成功");
+                } else {
+                    failureNum++;
+                    failureMsg.append("<br/>").append(failureNum).append("、问答历史记录 记录导入失败");
+                }
+            } else if (isUpdateSupport) {
+                //存在就更新
+                qaHistoryBo.setId(qaHistoryVo1.getId());//主键
+                qaHistoryBo.setVersion(qaHistoryVo1.getVersion());
+                boolean updated = qaHistoryService.update(qaHistoryBo);
+                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(QaHistoryBo qaHistoryBo) {
+        qaHistoryBo.setVersion(0);
+        qaHistoryBo.setCreateBy(loginUser.getUserId());
+        qaHistoryBo.setUpdateBy(loginUser.getUserId());
+        qaHistoryBo.setTenantId(loginUser.getTenantId());
+    }
+
+    @Override
+    public void doAfterAllAnalysed(AnalysisContext context) {
+        log.info("解析完成");
+    }
+
+    @Override
+    public ExcelResult<QaHistoryImportVo> 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<QaHistoryImportVo> getList() {
+                return null;
+            }
+
+            @Override
+            public List<String> getErrorList() {
+                return null;
+            }
+        };
+    }
+}

+ 9 - 3
als-modules/agile-assurance/src/main/java/org/eco/als/listener/SmTaskImportListener.java

@@ -86,9 +86,15 @@ public class SmTaskImportListener extends AnalysisEventListener<SmTaskImportVo>
 
     private void setBo(SmTaskBo smTaskBo) {
         smTaskBo.setVersion(0);
-        smTaskBo.setCreateBy(loginUser.getUserId());
-        smTaskBo.setUpdateBy(loginUser.getUserId());
-        smTaskBo.setTenantId(loginUser.getTenantId());
+        if (ObjectUtil.isNull(loginUser)) {
+            smTaskBo.setCreateBy(1L);
+            smTaskBo.setUpdateBy(1L);
+            smTaskBo.setTenantId(0L);
+        } else {
+            smTaskBo.setUpdateBy(loginUser.getUserId());
+            smTaskBo.setCreateBy(loginUser.getUserId());
+            smTaskBo.setTenantId(loginUser.getTenantId());
+        }
     }
 
     @Override

+ 19 - 0
als-modules/agile-assurance/src/main/java/org/eco/als/mapper/CommunicationMapper.java

@@ -0,0 +1,19 @@
+package org.eco.als.mapper;
+
+import com.mybatisflex.core.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+import org.eco.als.domain.Communication;
+
+import java.util.List;
+
+/**
+ * 通讯管理Mapper接口
+ *
+ * @author wgk
+ * @date 2024-12-14
+ */
+@Mapper
+public interface CommunicationMapper extends BaseMapper<Communication> {
+
+    int del(List<Long> ids);
+}

+ 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> {
+
+}

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

@@ -1,16 +0,0 @@
-package org.eco.als.mapper;
-
-import com.mybatisflex.core.BaseMapper;
-import org.apache.ibatis.annotations.Mapper;
-import org.eco.als.domain.LifePredictionResult;
-
-/**
- * 寿命预测结果Mapper接口
- *
- * @author wgk
- * @date 2024-07-26
- */
-@Mapper
-public interface LifePredictionResultMapper extends BaseMapper<LifePredictionResult> {
-
-}

+ 16 - 0
als-modules/agile-assurance/src/main/java/org/eco/als/mapper/LifetimeSparePartsMapper.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.LifetimeSpareParts;
+
+/**
+ * 有寿件Mapper接口
+ *
+ * @author wgk
+ * @date 2024-12-14
+ */
+@Mapper
+public interface LifetimeSparePartsMapper extends BaseMapper<LifetimeSpareParts> {
+
+}

+ 16 - 0
als-modules/agile-assurance/src/main/java/org/eco/als/mapper/QaHistoryMapper.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.QaHistory;
+
+/**
+ * 问答历史记录Mapper接口
+ *
+ * @author wgk
+ * @date 2024-12-13
+ */
+@Mapper
+public interface QaHistoryMapper extends BaseMapper<QaHistory> {
+
+}

+ 1 - 0
als-modules/agile-assurance/src/main/java/org/eco/als/service/IAlgorithmService.java

@@ -17,6 +17,7 @@ public interface IAlgorithmService {
     String executeFalseAlarm(AlgorithmBo algorithmBo);
 
     String executeFault(AlgorithmBo algorithmBo);
+    String executeEvaluation(AlgorithmBo algorithmBo);
 
     String batchExecute(TaskBo taskBo);
 

+ 95 - 0
als-modules/agile-assurance/src/main/java/org/eco/als/service/ICommunicationService.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.Communication;
+import org.eco.als.domain.vo.CommunicationVo;
+import org.eco.als.domain.bo.CommunicationBo;
+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-14
+ */
+public interface ICommunicationService extends IBaseService<Communication> {
+    /**
+     * 查询通讯管理
+     *
+     * @param id 通讯管理主键
+     * @return 通讯管理
+     */
+        CommunicationVo selectById(Long id);
+    /**
+     * 查询通讯管理列表
+     *
+     * @param communicationBo 通讯管理Bo
+     * @return 通讯管理集合
+     */
+    List<CommunicationVo> selectList(CommunicationBo communicationBo);
+
+    /**
+     * 分页查询通讯管理列表
+     *
+     * @param communicationBo 通讯管理Bo
+     * @return 分页通讯管理集合
+     */
+    PageResult<CommunicationVo> selectPage(CommunicationBo communicationBo);
+
+    /**
+     * 新增通讯管理
+     *
+     * @param communicationBo 通讯管理Bo
+     * @return 结果:true 操作成功,false 操作失败
+     */
+    boolean insert(CommunicationBo communicationBo);
+
+    /**
+     * 新增通讯管理,前台提供主键值,一般用于导入的场合
+     *
+     * @param communicationBo 通讯管理Bo
+     * @return 结果:true 操作成功,false 操作失败
+     */
+    boolean insertWithPk(CommunicationBo communicationBo);
+
+    /**
+     * 修改通讯管理
+     *
+     * @param communicationBo 通讯管理Bo
+     * @return 结果:true 更新成功,false 更新失败
+     */
+    boolean update(CommunicationBo communicationBo);
+
+    /**
+     * 批量删除通讯管理
+     *
+     * @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<CommunicationVo> listVo, String sheetName, LoginUser user);
+
+}

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

@@ -0,0 +1,113 @@
+package org.eco.als.service;
+
+import java.util.List;
+
+import org.eco.als.domain.vo.FaultStatisticsWbVo;
+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 故障统计集合
+     */
+    public List<FaultStatisticsVo> Statistics(FaultStatisticsBo faultStatisticsBo);
+
+    /**
+     * 外部查询故障统计列表
+     *
+     * @param faultStatisticsBo 故障统计Bo
+     * @return 故障统计集合
+     */
+    public List<FaultStatisticsWbVo> outsideListAll(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);
+
+}

+ 0 - 86
als-modules/agile-assurance/src/main/java/org/eco/als/service/ILifePredictionResultService.java

@@ -1,86 +0,0 @@
-package org.eco.als.service;
-
-import org.eco.als.domain.LifePredictionResult;
-import org.eco.als.domain.bo.LifePredictionResultBo;
-import org.eco.als.domain.vo.LifePredictionResultVo;
-import org.eco.common.core.core.domain.model.LoginUser;
-import org.eco.common.core.core.page.PageResult;
-import org.eco.common.orm.core.service.IBaseService;
-import org.springframework.scheduling.annotation.Async;
-
-import java.util.List;
-
-/**
- * 寿命预测结果Service接口
- *
- * @author wgk
- * @date 2024-07-26
- */
-public interface ILifePredictionResultService extends IBaseService<LifePredictionResult> {
-    /**
-     * 查询寿命预测结果
-     *
-     * @param id 寿命预测结果主键
-     * @return 寿命预测结果
-     */
-    LifePredictionResultVo selectById(Long id);
-
-    /**
-     * 查询寿命预测结果列表
-     *
-     * @param lifePredictionResultBo 寿命预测结果Bo
-     * @return 寿命预测结果集合
-     */
-    List<LifePredictionResultVo> selectList(LifePredictionResultBo lifePredictionResultBo);
-
-    /**
-     * 分页查询寿命预测结果列表
-     *
-     * @param lifePredictionResultBo 寿命预测结果Bo
-     * @return 分页寿命预测结果集合
-     */
-    PageResult<LifePredictionResultVo> selectPage(LifePredictionResultBo lifePredictionResultBo);
-
-    /**
-     * 新增寿命预测结果
-     *
-     * @param lifePredictionResultBo 寿命预测结果Bo
-     * @return 结果:true 操作成功,false 操作失败
-     */
-    boolean insert(LifePredictionResultBo lifePredictionResultBo);
-
-    /**
-     * 新增寿命预测结果,前台提供主键值,一般用于导入的场合
-     *
-     * @param lifePredictionResultBo 寿命预测结果Bo
-     * @return 结果:true 操作成功,false 操作失败
-     */
-    boolean insertWithPk(LifePredictionResultBo lifePredictionResultBo);
-
-    /**
-     * 修改寿命预测结果
-     *
-     * @param lifePredictionResultBo 寿命预测结果Bo
-     * @return 结果:true 更新成功,false 更新失败
-     */
-    boolean update(LifePredictionResultBo lifePredictionResultBo);
-
-    /**
-     * 批量删除寿命预测结果
-     *
-     * @param ids 需要删除的寿命预测结果主键集合
-     * @return 结果:true 删除成功,false 删除失败
-     */
-    boolean deleteByIds(Long[] ids);
-
-    /**
-     * asyncExport 异步导出
-     *
-     * @param listVo    数据列表
-     * @param sheetName 文件名称
-     * @param user      上下文
-     */
-    @Async
-    void asyncExport(List<LifePredictionResultVo> listVo, String sheetName, LoginUser user);
-
-}

+ 1 - 1
als-modules/agile-assurance/src/main/java/org/eco/als/service/ILifePredictionService.java

@@ -47,7 +47,7 @@ public interface ILifePredictionService extends IBaseService<LifePrediction> {
      * @param lifePredictionBo 寿命预测Bo
      * @return 结果:true 操作成功,false 操作失败
      */
-    boolean insert(LifePredictionBo lifePredictionBo);
+    LifePrediction insert(LifePredictionBo lifePredictionBo);
 
     /**
      * 新增寿命预测,前台提供主键值,一般用于导入的场合

+ 95 - 0
als-modules/agile-assurance/src/main/java/org/eco/als/service/ILifetimeSparePartsService.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.LifetimeSpareParts;
+import org.eco.als.domain.vo.LifetimeSparePartsVo;
+import org.eco.als.domain.bo.LifetimeSparePartsBo;
+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-14
+ */
+public interface ILifetimeSparePartsService extends IBaseService<LifetimeSpareParts> {
+    /**
+     * 查询有寿件
+     *
+     * @param id 有寿件主键
+     * @return 有寿件
+     */
+        LifetimeSparePartsVo selectById(Long id);
+    /**
+     * 查询有寿件列表
+     *
+     * @param lifetimeSparePartsBo 有寿件Bo
+     * @return 有寿件集合
+     */
+    List<LifetimeSparePartsVo> selectList(LifetimeSparePartsBo lifetimeSparePartsBo);
+
+    /**
+     * 分页查询有寿件列表
+     *
+     * @param lifetimeSparePartsBo 有寿件Bo
+     * @return 分页有寿件集合
+     */
+    PageResult<LifetimeSparePartsVo> selectPage(LifetimeSparePartsBo lifetimeSparePartsBo);
+
+    /**
+     * 新增有寿件
+     *
+     * @param lifetimeSparePartsBo 有寿件Bo
+     * @return 结果:true 操作成功,false 操作失败
+     */
+    boolean insert(LifetimeSparePartsBo lifetimeSparePartsBo);
+
+    /**
+     * 新增有寿件,前台提供主键值,一般用于导入的场合
+     *
+     * @param lifetimeSparePartsBo 有寿件Bo
+     * @return 结果:true 操作成功,false 操作失败
+     */
+    boolean insertWithPk(LifetimeSparePartsBo lifetimeSparePartsBo);
+
+    /**
+     * 修改有寿件
+     *
+     * @param lifetimeSparePartsBo 有寿件Bo
+     * @return 结果:true 更新成功,false 更新失败
+     */
+    boolean update(LifetimeSparePartsBo lifetimeSparePartsBo);
+
+    /**
+     * 批量删除有寿件
+     *
+     * @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<LifetimeSparePartsVo> listVo, String sheetName, LoginUser user);
+
+}

+ 7 - 0
als-modules/agile-assurance/src/main/java/org/eco/als/service/IModelService.java

@@ -25,6 +25,13 @@ public interface IModelService extends IBaseService<Model> {
      * @return 模型信息
      */
     ModelVo selectById(Long id);
+    /**
+     * 查询模型信息
+     *
+     * @param partId 部件
+     * @return 模型信息
+     */
+    ModelVo selectByPartId(String partId);
 
     /**
      * 查询模型信息列表

+ 103 - 0
als-modules/agile-assurance/src/main/java/org/eco/als/service/IQaHistoryService.java

@@ -0,0 +1,103 @@
+package org.eco.als.service;
+
+import org.eco.als.domain.QaHistory;
+import org.eco.als.domain.bo.QaHistoryBo;
+import org.eco.als.domain.vo.QaHistoryVo;
+import org.eco.common.core.core.domain.model.LoginUser;
+import org.eco.common.core.core.page.PageResult;
+import org.eco.common.orm.core.service.IBaseService;
+import org.springframework.scheduling.annotation.Async;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.util.List;
+
+/**
+ * 问答历史记录Service接口
+ *
+ * @author wgk
+ * @date 2024-12-13
+ */
+public interface IQaHistoryService extends IBaseService<QaHistory> {
+    /**
+     * 查询问答历史记录
+     *
+     * @param id 问答历史记录主键
+     * @return 问答历史记录
+     */
+    QaHistoryVo selectById(Long id);
+
+    /**
+     * 查询问答历史记录列表
+     *
+     * @param qaHistoryBo 问答历史记录Bo
+     * @return 问答历史记录集合
+     */
+    List<QaHistoryVo> selectList(QaHistoryBo qaHistoryBo);
+    /**
+     * 查询问答历史记录统计
+     *
+     * @return 问答历史记录集合
+     */
+    List<QaHistoryVo> groupQuestion();
+
+    /**
+     * 分页查询问答历史记录列表
+     *
+     * @param qaHistoryBo 问答历史记录Bo
+     * @return 分页问答历史记录集合
+     */
+    PageResult<QaHistoryVo> selectPage(QaHistoryBo qaHistoryBo);
+
+    /**
+     * 新增问答历史记录
+     *
+     * @param qaHistoryBo 问答历史记录Bo
+     * @return 结果:true 操作成功,false 操作失败
+     */
+    boolean insert(QaHistoryBo qaHistoryBo);
+
+    /**
+     * 新增问答历史记录,前台提供主键值,一般用于导入的场合
+     *
+     * @param qaHistoryBo 问答历史记录Bo
+     * @return 结果:true 操作成功,false 操作失败
+     */
+    boolean insertWithPk(QaHistoryBo qaHistoryBo);
+
+    /**
+     * 修改问答历史记录
+     *
+     * @param qaHistoryBo 问答历史记录Bo
+     * @return 结果:true 更新成功,false 更新失败
+     */
+    boolean update(QaHistoryBo qaHistoryBo);
+
+    /**
+     * 批量删除问答历史记录
+     *
+     * @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<QaHistoryVo> listVo, String sheetName, LoginUser user);
+
+}

+ 94 - 13
als-modules/agile-assurance/src/main/java/org/eco/als/service/impl/AlgorithmService.java

@@ -8,11 +8,10 @@ import cn.hutool.json.JSONObject;
 import cn.hutool.json.JSONUtil;
 import jakarta.annotation.Resource;
 import lombok.extern.slf4j.Slf4j;
-import org.eco.als.domain.FalseAlarm;
-import org.eco.als.domain.FaultDiagnosis;
-import org.eco.als.domain.PreProcessing;
-import org.eco.als.domain.Warning;
+import org.eco.als.domain.*;
 import org.eco.als.domain.bo.*;
+import org.eco.als.domain.vo.AirConfigurationVo;
+import org.eco.als.domain.vo.DataImportVo;
 import org.eco.als.domain.vo.ModelHttpVo;
 import org.eco.als.domain.vo.ModelVo;
 import org.eco.als.service.*;
@@ -25,14 +24,12 @@ import org.eco.common.core.utils.StringUtils;
 import org.eco.common.core.utils.file.FileUtils;
 import org.eco.system.domain.vo.SysOssVo;
 import org.eco.system.service.ISysOssService;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.io.File;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 /**
  * @Description: AlgorithmService
@@ -64,9 +61,20 @@ public class AlgorithmService implements IAlgorithmService {
     private IFaultDiagnosisService faultDiagnosisService;
     @Resource
     private IFaultDiagnosisResultService faultDiagnosisResultService;
+    @Resource
+    private IDataImportService dataImportService;
+    @Resource
+    private IAirConfigurationService airConfigurationService;
+    @Resource
+    private ILifePredictionService lifePredictionService;
 
     @Resource
     private ITaskService taskService;
+    @Resource
+    private IQaHistoryService qaHistoryService;
+
+    @Value("${kgqa.ask-url}")
+    private String askUrl;
 
     private static ModelHttpVo sendHttp(ModelVo modelVo, Map<String, Object> map) {
         try {
@@ -202,10 +210,11 @@ public class AlgorithmService implements IAlgorithmService {
     @Transactional
     public String executeFault(AlgorithmBo algorithmBo) {
         // 模型相关信息
-        ModelVo modelVo = modelService.selectById(algorithmBo.getModelId());
+        ModelVo modelVo = modelService.selectByPartId(algorithmBo.getPartId());
         if (ObjectUtil.isNull(modelVo)) {
             throw new BusinessException("模型信息为空,请检查!");
         }
+        algorithmBo.setColumnData(modelVo.getColumnData().split(","));
         SysOssVo sysOssVo = getSysOssVo(algorithmBo);
         if (sysOssVo == null) {
             return null;
@@ -215,7 +224,7 @@ public class AlgorithmService implements IAlgorithmService {
             .aircraftId(algorithmBo.getAircraftId())
             .modelType(modelVo.getType())
             .sortieNo(algorithmBo.getSortieNo())
-            .param(algorithmBo.getParam())
+            .param(algorithmBo.getPartId())
             .status("0")
             .columnData(Arrays.toString(algorithmBo.getColumnData()))
             .build();
@@ -232,6 +241,7 @@ public class AlgorithmService implements IAlgorithmService {
             diagnosisBo.setResultContent(httpVo.getData());
             faultDiagnosisService.update(diagnosisBo);
             FaultDiagnosisResultBo resultBo = FaultDiagnosisResultBo.builder()
+                .diagnosisId(diagnosisBo.getId())
                 .aircraftId(diagnosisBo.getAircraftId())
                 .diagnosisId(diagnosisBo.getId())
                 .resultContent(httpVo.getData())
@@ -242,6 +252,57 @@ public class AlgorithmService implements IAlgorithmService {
         return httpVo != null ? httpVo.getData() : null;
     }
 
+    @Override
+    @Transactional
+    public String executeEvaluation(AlgorithmBo algorithmBo) {
+        AirConfigurationVo airConfigurationVo = airConfigurationService.selectById(Long.valueOf(algorithmBo.getPartId()));
+        DataImportBo dataImportBo = new DataImportBo();
+        dataImportBo.setAircraftId(algorithmBo.getAircraftId());
+        List<DataImportVo> dataImportVos = dataImportService.selectList(dataImportBo);
+        // 模型相关信息
+        ModelVo modelVo = modelService.selectByPartId(algorithmBo.getPartId());
+        if (ObjectUtil.isNull(modelVo)) {
+            throw new BusinessException("模型信息为空,请检查!");
+        }
+        if (StrUtil.isBlank(modelVo.getColumnData())) {
+            throw new BusinessException("参数列不能为空,请检查!");
+        }
+        algorithmBo.setColumnData(modelVo.getColumnData().split(","));
+        List<String> urls = new ArrayList<>();
+        dataImportVos.forEach(el -> {
+            algorithmBo.setOssId(el.getOssId());
+            SysOssVo sysOssVo = getSysOssVo(algorithmBo);
+            if (ObjectUtil.isNotNull(sysOssVo)) {
+                urls.add(sysOssVo.getUrl());
+            }
+        });
+        // 插入退化评估记录
+        LifePredictionBo lifePredictionBo = LifePredictionBo.builder()
+            .name(airConfigurationVo.getName())
+            .model(airConfigurationVo.getSpecsModel())
+            .aircraftId(algorithmBo.getAircraftId())
+            .aircraftType(airConfigurationVo.getAircraftType())
+            .code(airConfigurationVo.getConCode())
+            .status("0")
+            .build();
+        LifePrediction lifePrediction = lifePredictionService.insert(lifePredictionBo);
+
+        // 参数
+        Map<String, Object> map = StrUtil.isBlank(algorithmBo.getParam()) ? new HashMap<>() : new HashMap<>(JSONUtil.parseObj(algorithmBo.getParam()));
+        map.put("url", urls.getFirst());
+        // 请求
+        ModelHttpVo httpVo = sendHttp(modelVo, map);
+        if (httpVo != null && httpVo.getStatus() == 200) {
+            // 更新退化评估状态
+            lifePredictionBo.setId(lifePrediction.getId());
+            lifePredictionBo.setStatus("1");
+            lifePredictionBo.setVersion(lifePrediction.getVersion());
+            lifePredictionBo.setResultContent(httpVo.getData());
+            lifePredictionService.update(lifePredictionBo);
+        }
+        return httpVo != null ? httpVo.getData() : null;
+    }
+
     private SysOssVo getSysOssVo(AlgorithmBo algorithmBo) {
         SysOssVo sysOss = ossService.getById(algorithmBo.getOssId());
         if (ObjectUtil.isNull(sysOss)) {
@@ -301,11 +362,31 @@ public class AlgorithmService implements IAlgorithmService {
 
     @Override
     public String executeQa(QaBo qaBo) {
-        String url = "http://192.168.0.102:8000/ask/";
         Map<String, Object> map = new HashMap<>();
         map.put("user_id", qaBo.getUserId());
         map.put("question", qaBo.getQuestion());
-        String result = HttpUtils.postJson(url, map);
-        return result;
+        String result = HttpUtils.postJson(askUrl, map);
+        JSONObject jsonObject = JSONUtil.parseObj(result);
+        String data = jsonObject.getStr("data");
+        String code = jsonObject.getStr("code");
+        String msg = jsonObject.getStr("msg");
+        if (!StrUtil.equals(code, "200")) {
+            throw new BusinessException(msg);
+        }
+        JSONObject answerJson = JSONUtil.parseObj(data);
+        String ossId = answerJson.getStr("ossID");
+        String userId = answerJson.getStr("user_id");
+        String fileName = answerJson.getStr("file_name");
+        String graph = answerJson.getStr("graph");
+        String answer = answerJson.getStr("answer");
+        QaHistoryBo qaHistoryBo = new QaHistoryBo();
+        qaHistoryBo.setAnswer(answer);
+        qaHistoryBo.setOssId(Long.valueOf(ossId));
+        qaHistoryBo.setUserId(userId);
+        qaHistoryBo.setQuestion(qaBo.getQuestion());
+        qaHistoryBo.setFileName(fileName);
+        qaHistoryBo.setGraph(graph);
+        qaHistoryService.insert(qaHistoryBo);
+        return data;
     }
 }

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

@@ -0,0 +1,202 @@
+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.CommunicationMapper;
+import org.eco.als.domain.Communication;
+import org.eco.als.domain.bo.CommunicationBo;
+import org.eco.als.domain.vo.CommunicationVo;
+import org.eco.als.domain.vo.CommunicationImportVo;
+import org.eco.als.listener.CommunicationImportListener;
+import org.eco.als.service.ICommunicationService;
+import static org.eco.als.domain.table.CommunicationTableDef.COMMUNICATION;
+
+/**
+ * 通讯管理Service业务层处理
+ *
+ * @author wgk
+ * @date 2024-12-14
+ */
+@Service
+@Slf4j
+public class CommunicationServiceImpl extends BaseServiceImpl<CommunicationMapper, Communication> implements ICommunicationService {
+    @Resource
+    private CommunicationMapper communicationMapper;
+
+    @Resource
+    private IExcelService excelService;
+
+    @Resource
+    private IImportExportService importExportService;
+
+    @Override
+    public QueryWrapper query() {
+        return super.query().from(COMMUNICATION);
+    }
+
+    private QueryWrapper buildQueryWrapper(CommunicationBo communicationBo) {
+        QueryWrapper queryWrapper = super.buildBaseQueryWrapper();
+        queryWrapper.and(COMMUNICATION.NAME.like
+        (communicationBo.getName()));
+        queryWrapper.and(COMMUNICATION.IP_ADDRESS.eq
+        (communicationBo.getIpAddress()));
+        queryWrapper.and(COMMUNICATION.NETWORK_SEGMENT.eq
+        (communicationBo.getNetworkSegment()));
+        queryWrapper.and(COMMUNICATION.SUBNET_MASK.eq
+        (communicationBo.getSubnetMask()));
+        queryWrapper.and(COMMUNICATION.DNS.eq
+        (communicationBo.getDns()));
+        queryWrapper.and(COMMUNICATION.GATEWAY.eq
+        (communicationBo.getGateway()));
+        queryWrapper.and(COMMUNICATION.HTTP.eq
+        (communicationBo.getHttp()));
+        queryWrapper.and(COMMUNICATION.PORT.eq
+        (communicationBo.getPort()));
+        queryWrapper.and(COMMUNICATION.USER_NAME.like
+        (communicationBo.getUserName()));
+        queryWrapper.and(COMMUNICATION.PASSWORD.eq
+        (communicationBo.getPassword()));
+
+        return queryWrapper;
+    }
+
+    /**
+     * 查询通讯管理
+     *
+     * @param id 通讯管理主键
+     * @return 通讯管理
+     */
+    @Override
+    public CommunicationVo selectById(Long id) {
+            return this.getOneAs(query().where(COMMUNICATION.ID.eq(id)), CommunicationVo.class);
+
+    }
+
+
+    /**
+     * 查询通讯管理列表
+     *
+     * @param communicationBo 通讯管理Bo
+     * @return 通讯管理集合
+     */
+    @Override
+    public List<CommunicationVo> selectList(CommunicationBo communicationBo) {
+        QueryWrapper queryWrapper = buildQueryWrapper(communicationBo);
+            return this.listAs(queryWrapper, CommunicationVo.class);
+    }
+
+    /**
+     * 分页查询通讯管理列表
+     *
+     * @param communicationBo 通讯管理Bo
+     * @return 分页通讯管理集合
+     */
+    @Override
+    public PageResult<CommunicationVo> selectPage(CommunicationBo communicationBo) {
+        QueryWrapper queryWrapper = buildQueryWrapper(communicationBo);
+            Page<CommunicationVo> page = this.pageAs(PageQuery.build(), queryWrapper, CommunicationVo.class);
+        return PageResult.build(page);
+    }
+
+    /**
+     * 新增通讯管理
+     *
+     * @param communicationBo 通讯管理Bo
+     * @return 结果:true 操作成功,false 操作失败
+     */
+    @Override
+    public boolean insert(CommunicationBo communicationBo) {
+    Communication communication =MapstructUtils.convert(communicationBo, Communication. class);
+
+        return this.save(communication);//使用全局配置的雪花算法主键生成器生成ID值
+    }
+
+    /**
+     * 新增通讯管理,前台提供主键值,一般用于导入的场合
+     *
+     * @param communicationBo 通讯管理Bo
+     * @return 结果:true 操作成功,false 操作失败
+     */
+    @Override
+    public boolean insertWithPk(CommunicationBo communicationBo)
+    {
+        Communication communication = MapstructUtils.convert(communicationBo, Communication.class);
+
+
+            return communicationMapper.insertWithPk(communication) > 0;//前台传来主键值
+    }
+
+    /**
+     * 修改通讯管理
+     *
+     * @param communicationBo 通讯管理Bo
+     * @return 结果:true 更新成功,false 更新失败
+     */
+    @Override
+    public boolean update(CommunicationBo communicationBo) {
+        Communication communication =MapstructUtils.convert(communicationBo, Communication. class);
+        if (ObjectUtil.isNotNull(communication) && ObjectUtil.isNotNull(communication.getId())){
+            boolean updated = this.updateById(communication);
+                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, CommunicationImportVo.class, new CommunicationImportListener(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<CommunicationVo> listVo, String sheetName, LoginUser loginUser) {
+        ExcelResultRes result = excelService.exportExcel(listVo, sheetName, CommunicationVo.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));
+    }
+
+}

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

@@ -0,0 +1,261 @@
+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.als.domain.vo.FaultStatisticsWbVo;
+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;
+    }
+
+    private QueryWrapper buildStatisticsWrapper(FaultStatisticsBo faultStatisticsBo) {
+        QueryWrapper queryWrapper = super.buildBaseQueryWrapper();
+
+        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());
+        }
+        queryWrapper.select("faulty_parts_name,COUNT(*) as name_count").groupBy("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 List<FaultStatisticsVo> Statistics(FaultStatisticsBo faultStatisticsBo) {
+        QueryWrapper queryWrapper = buildStatisticsWrapper(faultStatisticsBo);
+        return this.listAs(queryWrapper, FaultStatisticsVo.class);
+    }
+
+    /**
+     * 外部查询故障统计列表
+     *
+     * @param faultStatisticsBo 故障统计Bo
+     * @return 故障统计集合
+     */
+    @Override
+    public List<FaultStatisticsWbVo> outsideListAll(FaultStatisticsBo faultStatisticsBo) {
+        QueryWrapper queryWrapper = buildQueryWrapper(faultStatisticsBo);
+        return this.listAs(queryWrapper, FaultStatisticsWbVo.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));
+    }
+
+}

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

@@ -1,173 +0,0 @@
-package org.eco.als.service.impl;
-
-import cn.hutool.core.util.ObjectUtil;
-import com.mybatisflex.core.paginate.Page;
-import com.mybatisflex.core.query.QueryWrapper;
-import jakarta.annotation.Resource;
-import lombok.extern.slf4j.Slf4j;
-import org.eco.als.domain.LifePredictionResult;
-import org.eco.als.domain.bo.LifePredictionResultBo;
-import org.eco.als.domain.vo.LifePredictionResultVo;
-import org.eco.als.mapper.LifePredictionResultMapper;
-import org.eco.als.service.ILifePredictionResultService;
-import org.eco.common.core.core.domain.model.LoginUser;
-import org.eco.common.core.core.page.PageResult;
-import org.eco.common.core.utils.MapstructUtils;
-import org.eco.common.excel.entity.ExcelResultRes;
-import org.eco.common.excel.service.IExcelService;
-import org.eco.common.orm.core.page.PageQuery;
-import org.eco.common.orm.core.service.impl.BaseServiceImpl;
-import org.eco.system.service.IImportExportService;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-
-import java.util.Arrays;
-import java.util.List;
-
-import static org.eco.als.domain.table.LifePredictionResultTableDef.LIFE_PREDICTION_RESULT;
-
-/**
- * 寿命预测结果Service业务层处理
- *
- * @author wgk
- * @date 2024-07-26
- */
-@Service
-@Slf4j
-public class LifePredictionResultServiceImpl extends BaseServiceImpl<LifePredictionResultMapper, LifePredictionResult> implements ILifePredictionResultService {
-    @Resource
-    private LifePredictionResultMapper lifePredictionResultMapper;
-
-    @Resource
-    private IExcelService excelService;
-
-    @Resource
-    private IImportExportService importExportService;
-
-    @Override
-    public QueryWrapper query() {
-        return super.query().from(LIFE_PREDICTION_RESULT);
-    }
-
-    private QueryWrapper buildQueryWrapper(LifePredictionResultBo lifePredictionResultBo) {
-        QueryWrapper queryWrapper = super.buildBaseQueryWrapper();
-        queryWrapper.and(LIFE_PREDICTION_RESULT.LIFE_ID.eq
-            (lifePredictionResultBo.getLifeId()));
-        queryWrapper.and(LIFE_PREDICTION_RESULT.AIRCRAFT_ID.eq
-            (lifePredictionResultBo.getAircraftId()));
-        queryWrapper.and(LIFE_PREDICTION_RESULT.NAME.like
-            (lifePredictionResultBo.getName()));
-        queryWrapper.and(LIFE_PREDICTION_RESULT.MODEL.eq
-            (lifePredictionResultBo.getModel()));
-        queryWrapper.and(LIFE_PREDICTION_RESULT.SYSTEM.eq
-            (lifePredictionResultBo.getSystem()));
-        queryWrapper.and(LIFE_PREDICTION_RESULT.METHOD_TYPE.eq
-            (lifePredictionResultBo.getMethodType()));
-        queryWrapper.and(LIFE_PREDICTION_RESULT.REMAIN_TIEM.eq
-            (lifePredictionResultBo.getRemainTiem()));
-
-        return queryWrapper;
-    }
-
-    /**
-     * 查询寿命预测结果
-     *
-     * @param id 寿命预测结果主键
-     * @return 寿命预测结果
-     */
-    @Override
-    public LifePredictionResultVo selectById(Long id) {
-        return this.getOneAs(query().where(LIFE_PREDICTION_RESULT.ID.eq(id)), LifePredictionResultVo.class);
-
-    }
-
-
-    /**
-     * 查询寿命预测结果列表
-     *
-     * @param lifePredictionResultBo 寿命预测结果Bo
-     * @return 寿命预测结果集合
-     */
-    @Override
-    public List<LifePredictionResultVo> selectList(LifePredictionResultBo lifePredictionResultBo) {
-        QueryWrapper queryWrapper = buildQueryWrapper(lifePredictionResultBo);
-        return this.listAs(queryWrapper, LifePredictionResultVo.class);
-    }
-
-    /**
-     * 分页查询寿命预测结果列表
-     *
-     * @param lifePredictionResultBo 寿命预测结果Bo
-     * @return 分页寿命预测结果集合
-     */
-    @Override
-    public PageResult<LifePredictionResultVo> selectPage(LifePredictionResultBo lifePredictionResultBo) {
-        QueryWrapper queryWrapper = buildQueryWrapper(lifePredictionResultBo);
-        Page<LifePredictionResultVo> page = this.pageAs(PageQuery.build(), queryWrapper, LifePredictionResultVo.class);
-        return PageResult.build(page);
-    }
-
-    /**
-     * 新增寿命预测结果
-     *
-     * @param lifePredictionResultBo 寿命预测结果Bo
-     * @return 结果:true 操作成功,false 操作失败
-     */
-    @Override
-    public boolean insert(LifePredictionResultBo lifePredictionResultBo) {
-        LifePredictionResult lifePredictionResult = MapstructUtils.convert(lifePredictionResultBo, LifePredictionResult.class);
-
-        return this.save(lifePredictionResult);//使用全局配置的雪花算法主键生成器生成ID值
-    }
-
-    /**
-     * 新增寿命预测结果,前台提供主键值,一般用于导入的场合
-     *
-     * @param lifePredictionResultBo 寿命预测结果Bo
-     * @return 结果:true 操作成功,false 操作失败
-     */
-    @Override
-    public boolean insertWithPk(LifePredictionResultBo lifePredictionResultBo) {
-        LifePredictionResult lifePredictionResult = MapstructUtils.convert(lifePredictionResultBo, LifePredictionResult.class);
-
-
-        return lifePredictionResultMapper.insertWithPk(lifePredictionResult) > 0;//前台传来主键值
-    }
-
-    /**
-     * 修改寿命预测结果
-     *
-     * @param lifePredictionResultBo 寿命预测结果Bo
-     * @return 结果:true 更新成功,false 更新失败
-     */
-    @Override
-    public boolean update(LifePredictionResultBo lifePredictionResultBo) {
-        LifePredictionResult lifePredictionResult = MapstructUtils.convert(lifePredictionResultBo, LifePredictionResult.class);
-        if (ObjectUtil.isNotNull(lifePredictionResult) && ObjectUtil.isNotNull(lifePredictionResult.getId())) {
-            return this.updateById(lifePredictionResult);
-        }
-        return false;
-    }
-
-    @Override
-    public void asyncExport(List<LifePredictionResultVo> listVo, String sheetName, LoginUser loginUser) {
-        ExcelResultRes result = excelService.exportExcel(listVo, sheetName, LifePredictionResultVo.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));
-    }
-
-}

+ 8 - 8
als-modules/agile-assurance/src/main/java/org/eco/als/service/impl/LifePredictionServiceImpl.java

@@ -58,15 +58,15 @@ public class LifePredictionServiceImpl extends BaseServiceImpl<LifePredictionMap
         }
         queryWrapper.and(LIFE_PREDICTION.NAME.like
             (lifePredictionBo.getName()));
+        queryWrapper.and(LIFE_PREDICTION.CODE.eq
+            (lifePredictionBo.getCode()));
+        queryWrapper.and(LIFE_PREDICTION.RESULT_CONTENT.like
+            (lifePredictionBo.getResultContent()));
         queryWrapper.and(LIFE_PREDICTION.MODEL.eq
             (lifePredictionBo.getModel()));
-        queryWrapper.and(LIFE_PREDICTION.SYSTEM.eq
-            (lifePredictionBo.getSystem()));
         queryWrapper.and(LIFE_PREDICTION.METHOD_TYPE.eq
             (lifePredictionBo.getMethodType()));
-        queryWrapper.and(LIFE_PREDICTION.REMAIN_TIEM.eq
-            (lifePredictionBo.getRemainTiem()));
-
+        queryWrapper.orderBy(LIFE_PREDICTION.CREATE_TIME.desc());
         return queryWrapper;
     }
 
@@ -115,10 +115,10 @@ public class LifePredictionServiceImpl extends BaseServiceImpl<LifePredictionMap
      * @return 结果:true 操作成功,false 操作失败
      */
     @Override
-    public boolean insert(LifePredictionBo lifePredictionBo) {
+    public LifePrediction insert(LifePredictionBo lifePredictionBo) {
         LifePrediction lifePrediction = MapstructUtils.convert(lifePredictionBo, LifePrediction.class);
-
-        return this.save(lifePrediction);//使用全局配置的雪花算法主键生成器生成ID值
+        this.save(lifePrediction);
+        return lifePrediction;//使用全局配置的雪花算法主键生成器生成ID值
     }
 
     /**

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

@@ -0,0 +1,190 @@
+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.LifetimeSparePartsMapper;
+import org.eco.als.domain.LifetimeSpareParts;
+import org.eco.als.domain.bo.LifetimeSparePartsBo;
+import org.eco.als.domain.vo.LifetimeSparePartsVo;
+import org.eco.als.domain.vo.LifetimeSparePartsImportVo;
+import org.eco.als.listener.LifetimeSparePartsImportListener;
+import org.eco.als.service.ILifetimeSparePartsService;
+import static org.eco.als.domain.table.LifetimeSparePartsTableDef.LIFETIME_SPARE_PARTS;
+
+/**
+ * 有寿件Service业务层处理
+ *
+ * @author wgk
+ * @date 2024-12-14
+ */
+@Service
+@Slf4j
+public class LifetimeSparePartsServiceImpl extends BaseServiceImpl<LifetimeSparePartsMapper, LifetimeSpareParts> implements ILifetimeSparePartsService {
+    @Resource
+    private LifetimeSparePartsMapper lifetimeSparePartsMapper;
+
+    @Resource
+    private IExcelService excelService;
+
+    @Resource
+    private IImportExportService importExportService;
+
+    @Override
+    public QueryWrapper query() {
+        return super.query().from(LIFETIME_SPARE_PARTS);
+    }
+
+    private QueryWrapper buildQueryWrapper(LifetimeSparePartsBo lifetimeSparePartsBo) {
+        QueryWrapper queryWrapper = super.buildBaseQueryWrapper();
+        queryWrapper.and(LIFETIME_SPARE_PARTS.AIR_ID.eq
+        (lifetimeSparePartsBo.getAirId()));
+        queryWrapper.and(LIFETIME_SPARE_PARTS.AIR_MODEL_ID.eq
+        (lifetimeSparePartsBo.getAirModelId()));
+        queryWrapper.and(LIFETIME_SPARE_PARTS.CONFIG_ID.eq
+        (lifetimeSparePartsBo.getConfigId()));
+        queryWrapper.and(LIFETIME_SPARE_PARTS.COMPONENT_NAME.like
+        (lifetimeSparePartsBo.getComponentName()));
+
+        return queryWrapper;
+    }
+
+    /**
+     * 查询有寿件
+     *
+     * @param id 有寿件主键
+     * @return 有寿件
+     */
+    @Override
+    public LifetimeSparePartsVo selectById(Long id) {
+            return this.getOneAs(query().where(LIFETIME_SPARE_PARTS.ID.eq(id)), LifetimeSparePartsVo.class);
+
+    }
+
+
+    /**
+     * 查询有寿件列表
+     *
+     * @param lifetimeSparePartsBo 有寿件Bo
+     * @return 有寿件集合
+     */
+    @Override
+    public List<LifetimeSparePartsVo> selectList(LifetimeSparePartsBo lifetimeSparePartsBo) {
+        QueryWrapper queryWrapper = buildQueryWrapper(lifetimeSparePartsBo);
+            return this.listAs(queryWrapper, LifetimeSparePartsVo.class);
+    }
+
+    /**
+     * 分页查询有寿件列表
+     *
+     * @param lifetimeSparePartsBo 有寿件Bo
+     * @return 分页有寿件集合
+     */
+    @Override
+    public PageResult<LifetimeSparePartsVo> selectPage(LifetimeSparePartsBo lifetimeSparePartsBo) {
+        QueryWrapper queryWrapper = buildQueryWrapper(lifetimeSparePartsBo);
+            Page<LifetimeSparePartsVo> page = this.pageAs(PageQuery.build(), queryWrapper, LifetimeSparePartsVo.class);
+        return PageResult.build(page);
+    }
+
+    /**
+     * 新增有寿件
+     *
+     * @param lifetimeSparePartsBo 有寿件Bo
+     * @return 结果:true 操作成功,false 操作失败
+     */
+    @Override
+    public boolean insert(LifetimeSparePartsBo lifetimeSparePartsBo) {
+    LifetimeSpareParts lifetimeSpareParts =MapstructUtils.convert(lifetimeSparePartsBo, LifetimeSpareParts. class);
+
+        return this.save(lifetimeSpareParts);//使用全局配置的雪花算法主键生成器生成ID值
+    }
+
+    /**
+     * 新增有寿件,前台提供主键值,一般用于导入的场合
+     *
+     * @param lifetimeSparePartsBo 有寿件Bo
+     * @return 结果:true 操作成功,false 操作失败
+     */
+    @Override
+    public boolean insertWithPk(LifetimeSparePartsBo lifetimeSparePartsBo)
+    {
+        LifetimeSpareParts lifetimeSpareParts = MapstructUtils.convert(lifetimeSparePartsBo, LifetimeSpareParts.class);
+
+
+            return lifetimeSparePartsMapper.insertWithPk(lifetimeSpareParts) > 0;//前台传来主键值
+    }
+
+    /**
+     * 修改有寿件
+     *
+     * @param lifetimeSparePartsBo 有寿件Bo
+     * @return 结果:true 更新成功,false 更新失败
+     */
+    @Override
+    public boolean update(LifetimeSparePartsBo lifetimeSparePartsBo) {
+        LifetimeSpareParts lifetimeSpareParts =MapstructUtils.convert(lifetimeSparePartsBo, LifetimeSpareParts. class);
+        if (ObjectUtil.isNotNull(lifetimeSpareParts) && ObjectUtil.isNotNull(lifetimeSpareParts.getId())){
+            boolean updated = this.updateById(lifetimeSpareParts);
+                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, LifetimeSparePartsImportVo.class, new LifetimeSparePartsImportListener(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<LifetimeSparePartsVo> listVo, String sheetName, LoginUser loginUser) {
+        ExcelResultRes result = excelService.exportExcel(listVo, sheetName, LifetimeSparePartsVo.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));
+    }
+
+}

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

@@ -76,6 +76,11 @@ public class ModelServiceImpl extends BaseServiceImpl<ModelMapper, Model> implem
 
     }
 
+    @Override
+    public ModelVo selectByPartId(String partId) {
+        return this.getOneAs(query().where(MODEL.PART_ID.eq(partId)), ModelVo.class);
+    }
+
 
     /**
      * 查询模型信息列表

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

@@ -0,0 +1,203 @@
+package org.eco.als.service.impl;
+
+import cn.hutool.core.util.ObjectUtil;
+import com.mybatisflex.core.paginate.Page;
+import com.mybatisflex.core.query.QueryMethods;
+import com.mybatisflex.core.query.QueryWrapper;
+import jakarta.annotation.Resource;
+import lombok.extern.slf4j.Slf4j;
+import org.eco.als.domain.QaHistory;
+import org.eco.als.domain.bo.QaHistoryBo;
+import org.eco.als.domain.vo.QaHistoryImportVo;
+import org.eco.als.domain.vo.QaHistoryVo;
+import org.eco.als.listener.QaHistoryImportListener;
+import org.eco.als.mapper.QaHistoryMapper;
+import org.eco.als.service.IQaHistoryService;
+import org.eco.common.core.core.domain.model.LoginUser;
+import org.eco.common.core.core.page.PageResult;
+import org.eco.common.core.utils.MapstructUtils;
+import org.eco.common.excel.entity.ExcelResultRes;
+import org.eco.common.excel.service.IExcelService;
+import org.eco.common.orm.core.page.PageQuery;
+import org.eco.common.orm.core.service.impl.BaseServiceImpl;
+import org.eco.system.service.IImportExportService;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.IOException;
+import java.util.Arrays;
+import java.util.List;
+
+import static com.mybatisflex.core.query.QueryMethods.avg;
+import static org.eco.als.domain.table.QaHistoryTableDef.QA_HISTORY;
+
+/**
+ * 问答历史记录Service业务层处理
+ *
+ * @author wgk
+ * @date 2024-12-13
+ */
+@Service
+@Slf4j
+public class QaHistoryServiceImpl extends BaseServiceImpl<QaHistoryMapper, QaHistory> implements IQaHistoryService {
+    @Resource
+    private QaHistoryMapper qaHistoryMapper;
+
+    @Resource
+    private IExcelService excelService;
+
+    @Resource
+    private IImportExportService importExportService;
+
+    @Override
+    public QueryWrapper query() {
+        return super.query().from(QA_HISTORY);
+    }
+
+    private QueryWrapper buildQueryWrapper(QaHistoryBo qaHistoryBo) {
+        QueryWrapper queryWrapper = super.buildBaseQueryWrapper();
+        queryWrapper.and(QA_HISTORY.USER_ID.eq
+            (qaHistoryBo.getUserId()));
+        queryWrapper.and(QA_HISTORY.QUESTION.eq
+            (qaHistoryBo.getQuestion()));
+        queryWrapper.and(QA_HISTORY.ANSWER.eq
+            (qaHistoryBo.getAnswer()));
+        queryWrapper.and(QA_HISTORY.GRAPH.eq
+            (qaHistoryBo.getAnswer()));
+        queryWrapper.and(QA_HISTORY.OSS_ID.eq
+            (qaHistoryBo.getOssId()));
+        queryWrapper.and(QA_HISTORY.FILE_NAME.like
+            (qaHistoryBo.getFileName()));
+        queryWrapper.and(QA_HISTORY.REMARKS.eq
+            (qaHistoryBo.getRemarks()));
+        queryWrapper.orderBy(QA_HISTORY.CREATE_TIME.desc());
+
+        return queryWrapper;
+    }
+
+    /**
+     * 查询问答历史记录
+     *
+     * @param id 问答历史记录主键
+     * @return 问答历史记录
+     */
+    @Override
+    public QaHistoryVo selectById(Long id) {
+        return this.getOneAs(query().where(QA_HISTORY.ID.eq(id)), QaHistoryVo.class);
+
+    }
+
+
+    /**
+     * 查询问答历史记录列表
+     *
+     * @param qaHistoryBo 问答历史记录Bo
+     * @return 问答历史记录集合
+     */
+    @Override
+    public List<QaHistoryVo> selectList(QaHistoryBo qaHistoryBo) {
+        QueryWrapper queryWrapper = buildQueryWrapper(qaHistoryBo);
+        return this.listAs(queryWrapper, QaHistoryVo.class);
+    }
+
+    @Override
+    public List<QaHistoryVo> groupQuestion() {
+        QueryWrapper queryWrapper = super.buildBaseQueryWrapper();
+        queryWrapper.select(QA_HISTORY.QUESTION, QueryMethods.count(QA_HISTORY.QUESTION).as("couns")).groupBy(QA_HISTORY.QUESTION).orderBy("couns", false);
+        return this.listAs(queryWrapper, QaHistoryVo.class);
+    }
+
+    /**
+     * 分页查询问答历史记录列表
+     *
+     * @param qaHistoryBo 问答历史记录Bo
+     * @return 分页问答历史记录集合
+     */
+    @Override
+    public PageResult<QaHistoryVo> selectPage(QaHistoryBo qaHistoryBo) {
+        QueryWrapper queryWrapper = buildQueryWrapper(qaHistoryBo);
+        Page<QaHistoryVo> page = this.pageAs(PageQuery.build(), queryWrapper, QaHistoryVo.class);
+        return PageResult.build(page);
+    }
+
+    /**
+     * 新增问答历史记录
+     *
+     * @param qaHistoryBo 问答历史记录Bo
+     * @return 结果:true 操作成功,false 操作失败
+     */
+    @Override
+    public boolean insert(QaHistoryBo qaHistoryBo) {
+        QaHistory qaHistory = MapstructUtils.convert(qaHistoryBo, QaHistory.class);
+
+        return this.save(qaHistory);//使用全局配置的雪花算法主键生成器生成ID值
+    }
+
+    /**
+     * 新增问答历史记录,前台提供主键值,一般用于导入的场合
+     *
+     * @param qaHistoryBo 问答历史记录Bo
+     * @return 结果:true 操作成功,false 操作失败
+     */
+    @Override
+    public boolean insertWithPk(QaHistoryBo qaHistoryBo) {
+        QaHistory qaHistory = MapstructUtils.convert(qaHistoryBo, QaHistory.class);
+
+
+        return qaHistoryMapper.insertWithPk(qaHistory) > 0;//前台传来主键值
+    }
+
+    /**
+     * 修改问答历史记录
+     *
+     * @param qaHistoryBo 问答历史记录Bo
+     * @return 结果:true 更新成功,false 更新失败
+     */
+    @Override
+    public boolean update(QaHistoryBo qaHistoryBo) {
+        QaHistory qaHistory = MapstructUtils.convert(qaHistoryBo, QaHistory.class);
+        if (ObjectUtil.isNotNull(qaHistory) && ObjectUtil.isNotNull(qaHistory.getId())) {
+            boolean updated = this.updateById(qaHistory);
+            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, QaHistoryImportVo.class, new QaHistoryImportListener(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<QaHistoryVo> listVo, String sheetName, LoginUser loginUser) {
+        ExcelResultRes result = excelService.exportExcel(listVo, sheetName, QaHistoryVo.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));
+    }
+
+}

+ 15 - 0
als-modules/agile-assurance/src/main/resources/mapper/als/CommunicationMapper.xml

@@ -0,0 +1,15 @@
+<?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.CommunicationMapper">
+
+    <delete id="del" parameterType="java.util.List">
+        UPDATE 'als_communication_t'
+        SET del_flag = 1
+        WHERE id IN
+        <foreach collection="list" item="id" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+</mapper>

+ 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>

+ 7 - 0
als-modules/agile-assurance/src/main/resources/mapper/als/LifetimeSparePartsMapper.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.LifetimeSparePartsMapper">
+
+</mapper>

+ 7 - 0
als-modules/agile-assurance/src/main/resources/mapper/als/QaHistoryMapper.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.QaHistoryMapper">
+
+</mapper>

+ 2 - 0
als-start/src/main/resources/application-dev.yml

@@ -171,3 +171,5 @@ easy-es:
   banner: false # 默认为true 打印banner 若您不期望打印banner,可配置为false
   username: #es用户名,若无则删去此行配置
   password: #es密码,若无则删去此行配置
+kgqa:
+  ask-url: http://192.168.0.103:8000/kgqa/ask/

+ 74 - 0
als-start/src/main/resources/db/dm/V1_0_0_5_1214__als-ddl.sql

@@ -0,0 +1,74 @@
+DROP TABLE "lqbz"."als_fault_case_t";
+CREATE TABLE "lqbz"."als_fault_case_t"
+(
+"id" BIGINT NOT NULL,
+"aircraft_type_id" varchar(255),
+"aircraft_type_name" varchar(255),
+"aircraft_system_id" varchar(255),
+"aircraft_system_name" varchar(255),
+"aircraft_subsystem_id" varchar(255),
+"aircraft_subsystem_name" varchar(255),
+"author" varchar(255),
+"fault_phenomenon" varchar(255),
+"fault_cause" varchar(255),
+"fault_tree_path" varchar(255),
+"fault_picture_path" varchar(255),
+"troubleshooting_method_path" varchar(255),
+"view_count" varchar(255),
+"order_by" varchar(255),
+"tenant_id" BIGINT,
+"version" INTEGER,
+"del_flag" BIT DEFAULT 0,
+"create_by" BIGINT,
+"create_time" TIMESTAMP(6),
+"update_by" BIGINT,
+"update_time" TIMESTAMP(6),
+NOT CLUSTER PRIMARY KEY("id")) STORAGE(ON "MAIN", CLUSTERBTR);
+
+COMMENT ON TABLE "lqbz"."als_fault_case_t" IS '故障案例';
+
+COMMENT ON COLUMN "lqbz"."als_fault_case_t"."id" IS '编号';
+
+COMMENT ON COLUMN "lqbz"."als_fault_case_t"."aircraft_type_id" IS '飞机编号';
+
+COMMENT ON COLUMN "lqbz"."als_fault_case_t"."aircraft_type_name" IS '机型';
+
+COMMENT ON COLUMN "lqbz"."als_fault_case_t"."aircraft_system_id" IS '系统编号';
+
+COMMENT ON COLUMN "lqbz"."als_fault_case_t"."aircraft_system_name" IS '系统';
+
+COMMENT ON COLUMN "lqbz"."als_fault_case_t"."aircraft_subsystem_id" IS '分系统编号';
+
+COMMENT ON COLUMN "lqbz"."als_fault_case_t"."aircraft_subsystem_name" IS '分系统';
+
+COMMENT ON COLUMN "lqbz"."als_fault_case_t"."author" IS '作者';
+
+COMMENT ON COLUMN "lqbz"."als_fault_case_t"."fault_phenomenon" IS '故障现象';
+
+COMMENT ON COLUMN "lqbz"."als_fault_case_t"."fault_cause" IS '故障原因';
+
+COMMENT ON COLUMN "lqbz"."als_fault_case_t"."fault_tree_path" IS '故障树';
+
+COMMENT ON COLUMN "lqbz"."als_fault_case_t"."fault_picture_path" IS '故障图';
+
+COMMENT ON COLUMN "lqbz"."als_fault_case_t"."troubleshooting_method_path" IS '排故方法';
+
+COMMENT ON COLUMN "lqbz"."als_fault_case_t"."view_count" IS '查看次数';
+
+COMMENT ON COLUMN "lqbz"."als_fault_case_t"."order_by" IS '排序';
+
+COMMENT ON COLUMN "lqbz"."als_fault_case_t"."fault_cause" IS '故障原因';
+
+COMMENT ON COLUMN "lqbz"."als_fault_case_t"."tenant_id" IS '租户号';
+
+COMMENT ON COLUMN "lqbz"."als_fault_case_t"."version" IS '乐观锁';
+
+COMMENT ON COLUMN "lqbz"."als_fault_case_t"."del_flag" IS '删除标识(1删除 0未删除)';
+
+COMMENT ON COLUMN "lqbz"."als_fault_case_t"."create_by" IS '创建人';
+
+COMMENT ON COLUMN "lqbz"."als_fault_case_t"."create_time" IS '创建时间';
+
+COMMENT ON COLUMN "lqbz"."als_fault_case_t"."update_by" IS '更新人';
+
+COMMENT ON COLUMN "lqbz"."als_fault_case_t"."update_time" IS '更新时间';

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

@@ -0,0 +1,9 @@
+ALTER TABLE "lqbz"."als_life_prediction_t" ADD COLUMN "aircraft_type" VARCHAR2(255);
+ALTER TABLE "lqbz"."als_life_prediction_t" ADD COLUMN "code" VARCHAR2(255);
+ALTER TABLE "lqbz"."als_life_prediction_t" ADD COLUMN "result_content" VARCHAR2(4000);
+ALTER TABLE "lqbz"."als_life_prediction_t" MODIFY "aircraft_id" VARCHAR2(255) NULL;
+ALTER TABLE "lqbz"."als_life_prediction_t" DROP "SYSTEM";
+ALTER TABLE "lqbz"."als_life_prediction_t" DROP "remain_tiem";
+COMMENT ON COLUMN "lqbz"."als_life_prediction_t"."aircraft_type" IS '飞机型号';
+COMMENT ON COLUMN "lqbz"."als_life_prediction_t"."code" IS '编码';
+DROP TABLE "lqbz"."als_life_prediction_result_t";

+ 37 - 0
als-start/src/main/resources/db/dm/V1_0_0_6__als-1213-ddl.sql

@@ -0,0 +1,37 @@
+DROP TABLE IF EXISTS "lqbz"."als_qa_history_t";
+CREATE TABLE "lqbz"."als_qa_history_t"(
+                                         id bigint NOT NULL,
+                                         user_id VARCHAR2(255),
+                                         question VARCHAR2(5000),
+                                         answer TEXT,
+                                         graph TEXT,
+                                         oss_id bigint,
+                                         file_name VARCHAR2(255),
+                                         remarks VARCHAR2(900),
+                                         tenant_id bigint,
+                                         del_flag bit DEFAULT  0,
+                                         version INTEGER,
+                                         create_by bigint,
+                                         create_time TIMESTAMP,
+                                         update_by bigint,
+                                         update_time TIMESTAMP
+);
+
+ALTER TABLE "lqbz"."als_qa_history_t" ADD CONSTRAINT PRIMARY KEY (id);
+
+COMMENT ON TABLE "lqbz"."als_qa_history_t" IS '问答历史记录';
+COMMENT ON COLUMN "lqbz"."als_qa_history_t"."id" IS '唯一ID';
+COMMENT ON COLUMN "lqbz"."als_qa_history_t"."user_id" IS '当前用户';
+COMMENT ON COLUMN "lqbz"."als_qa_history_t"."question" IS '问题';
+COMMENT ON COLUMN "lqbz"."als_qa_history_t"."answer" IS '回答';
+COMMENT ON COLUMN "lqbz"."als_qa_history_t"."graph" IS '图谱相关';
+COMMENT ON COLUMN "lqbz"."als_qa_history_t"."oss_id" IS '文件ID';
+COMMENT ON COLUMN "lqbz"."als_qa_history_t"."file_name" IS '文件名称';
+COMMENT ON COLUMN "lqbz"."als_qa_history_t"."remarks" IS '备注';
+COMMENT ON COLUMN "lqbz"."als_qa_history_t"."tenant_id" IS '租户号';
+COMMENT ON COLUMN "lqbz"."als_qa_history_t"."del_flag" IS '删除标识(1删除 0未删除)';
+COMMENT ON COLUMN "lqbz"."als_qa_history_t"."version" IS '乐观锁';
+COMMENT ON COLUMN "lqbz"."als_qa_history_t"."create_by" IS '创建人';
+COMMENT ON COLUMN "lqbz"."als_qa_history_t"."create_time" IS '创建时间';
+COMMENT ON COLUMN "lqbz"."als_qa_history_t"."update_by" IS '更新人';
+COMMENT ON COLUMN "lqbz"."als_qa_history_t"."update_time" IS '更新时间';

+ 259 - 0
als-start/src/main/resources/db/dm/V1_1_0_5__als-ddl.sql

@@ -0,0 +1,259 @@
+DROP TABLE IF EXISTS "lqbz"."als_judge_fault_logic_t";
+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 '更新时间';
+DROP TABLE IF EXISTS "lqbz"."als_fault_statistics_t";
+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 '更新时间';
+

+ 66 - 0
als-start/src/main/resources/db/dm/V1_1_0_6_1214__als-ddl.sql

@@ -0,0 +1,66 @@
+DROP TABLE IF EXISTS "lqbz"."als_lifetime_spare_parts_t";
+CREATE TABLE "lqbz"."als_lifetime_spare_parts_t"
+(
+    "id" BIGINT NOT NULL,
+    "air_id" VARCHAR2(255),
+    "air_model_id" VARCHAR2(255),
+    "config_id" VARCHAR2(255),
+    "component_name" VARCHAR2(255),
+    "component_model" VARCHAR2(255),
+    "component_num" VARCHAR2(255),
+    "factory_date" DATE,
+    "current_install_aircraft" VARCHAR2(255),
+    "work_time" VARCHAR2(255),
+    "rated_lifetime" VARCHAR2(255),
+    "remaining_lifetime" 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_lifetime_spare_parts_t" IS '有寿件';
+
+COMMENT ON COLUMN "lqbz"."als_lifetime_spare_parts_t"."id" IS '编号';
+
+COMMENT ON COLUMN "lqbz"."als_lifetime_spare_parts_t"."air_id" IS '飞机编目';
+
+COMMENT ON COLUMN "lqbz"."als_lifetime_spare_parts_t"."air_model_id" IS '飞机机号';
+
+COMMENT ON COLUMN "lqbz"."als_lifetime_spare_parts_t"."config_id" IS '构型Id';
+
+COMMENT ON COLUMN "lqbz"."als_lifetime_spare_parts_t"."component_name" IS '部件名称';
+
+COMMENT ON COLUMN "lqbz"."als_lifetime_spare_parts_t"."component_model" IS '部件型号';
+
+COMMENT ON COLUMN "lqbz"."als_lifetime_spare_parts_t"."component_num" IS '部件编码';
+
+COMMENT ON COLUMN "lqbz"."als_lifetime_spare_parts_t"."factory_date" IS '出厂日期';
+
+COMMENT ON COLUMN "lqbz"."als_lifetime_spare_parts_t"."current_install_aircraft" IS '当前安装飞机';
+
+COMMENT ON COLUMN "lqbz"."als_lifetime_spare_parts_t"."work_time" IS '工作时次';
+
+COMMENT ON COLUMN "lqbz"."als_lifetime_spare_parts_t"."rated_lifetime" IS '额定寿命';
+
+COMMENT ON COLUMN "lqbz"."als_lifetime_spare_parts_t"."remaining_lifetime" IS '剩余寿命';
+
+COMMENT ON COLUMN "lqbz"."als_lifetime_spare_parts_t"."remarks" IS '备注';
+
+COMMENT ON COLUMN "lqbz"."als_lifetime_spare_parts_t"."tenant_id" IS '租户号';
+
+COMMENT ON COLUMN "lqbz"."als_lifetime_spare_parts_t"."del_flag" IS '删除标识(1删除 0未删除)';
+
+COMMENT ON COLUMN "lqbz"."als_lifetime_spare_parts_t"."version" IS '乐观锁';
+
+COMMENT ON COLUMN "lqbz"."als_lifetime_spare_parts_t"."create_by" IS '创建人';
+
+COMMENT ON COLUMN "lqbz"."als_lifetime_spare_parts_t"."create_time" IS '创建时间';
+
+COMMENT ON COLUMN "lqbz"."als_lifetime_spare_parts_t"."update_by" IS '更新人';
+
+COMMENT ON COLUMN "lqbz"."als_lifetime_spare_parts_t"."update_time" IS '更新时间';

+ 5 - 0
als-start/src/main/resources/db/dm/V1_1_0_7_1216__als-ddl.sql

@@ -0,0 +1,5 @@
+
+alter table "lqbz".T_CARRYING_AVMAT_USE_REGISTER add USED_NUM INT;
+
+
+alter table "lqbz".T_CARRYING_MAINTE_ORGAN add USED_NUM REAL;

+ 10 - 0
als-start/src/main/resources/db/dm/V1_1_0_8_1216__als-dml.sql

@@ -0,0 +1,10 @@
+truncate table "lqbz"."T_ENV_FACTOR";
+
+INSERT INTO "lqbz"."T_ENV_FACTOR"("ENV_FACTOR_ID","ENV","FACTOR","REMARK","IS_DELETED","CREATE_BY","CREATE_TIME","UPDATE_BY","UPDATE_TIME","ENV_TYPE","ENV_STATUS") VALUES('093c98ea-2450-424a-837e-8750fb1d5abf','沿海地区',1.21,'',0,null,null,null,null,null,'0');
+INSERT INTO "lqbz"."T_ENV_FACTOR"("ENV_FACTOR_ID","ENV","FACTOR","REMARK","IS_DELETED","CREATE_BY","CREATE_TIME","UPDATE_BY","UPDATE_TIME","ENV_TYPE","ENV_STATUS") VALUES('29269c6c-acc4-4541-a743-1f8badd9a01d','高温多雨',1.3,'',0,null,null,null,null,null,'0');
+INSERT INTO "lqbz"."T_ENV_FACTOR"("ENV_FACTOR_ID","ENV","FACTOR","REMARK","IS_DELETED","CREATE_BY","CREATE_TIME","UPDATE_BY","UPDATE_TIME","ENV_TYPE","ENV_STATUS") VALUES('37614feb-ebfa-42a2-92a3-dd8eed61c3f9','炎热梅雨',1.4,'',0,null,null,null,null,null,'0');
+INSERT INTO "lqbz"."T_ENV_FACTOR"("ENV_FACTOR_ID","ENV","FACTOR","REMARK","IS_DELETED","CREATE_BY","CREATE_TIME","UPDATE_BY","UPDATE_TIME","ENV_TYPE","ENV_STATUS") VALUES('4574749c-fdc0-4650-a38e-08f242c2e8d7','温暖潮湿',1.5,'',0,null,null,null,null,null,'0');
+INSERT INTO "lqbz"."T_ENV_FACTOR"("ENV_FACTOR_ID","ENV","FACTOR","REMARK","IS_DELETED","CREATE_BY","CREATE_TIME","UPDATE_BY","UPDATE_TIME","ENV_TYPE","ENV_STATUS") VALUES('92824f0a-9037-4c24-b803-6f3696e32e5f','暖温地区',1.22,'',0,null,null,null,null,null,'0');
+INSERT INTO "lqbz"."T_ENV_FACTOR"("ENV_FACTOR_ID","ENV","FACTOR","REMARK","IS_DELETED","CREATE_BY","CREATE_TIME","UPDATE_BY","UPDATE_TIME","ENV_TYPE","ENV_STATUS") VALUES('07b4f1f70b89442ba9897039281b6345','温差大地区',1.9,'',0,null,null,null,null,null,'0');
+INSERT INTO "lqbz"."T_ENV_FACTOR"("ENV_FACTOR_ID","ENV","FACTOR","REMARK","IS_DELETED","CREATE_BY","CREATE_TIME","UPDATE_BY","UPDATE_TIME","ENV_TYPE","ENV_STATUS") VALUES('4ffa2aad81d7457e8d35566b55771e11','寒冷地区',1.1,'',0,null,null,null,null,null,'0');
+INSERT INTO "lqbz"."T_ENV_FACTOR"("ENV_FACTOR_ID","ENV","FACTOR","REMARK","IS_DELETED","CREATE_BY","CREATE_TIME","UPDATE_BY","UPDATE_TIME","ENV_TYPE","ENV_STATUS") VALUES('632509aef1b147a3910eb24af345a175','高原寒冷',1.2,'',0,null,null,null,null,null,'0');