Эх сурвалжийг харах

新增有寿件增删改查及导入导出

彭笙 4 сар өмнө
parent
commit
4f93c6674d
19 өөрчлөгдсөн 1097 нэмэгдсэн , 58 устгасан
  1. 10 1
      als-modules/agile-assurance/src/main/java/org/eco/als/controller/FaultStatisticsController.java
  2. 138 0
      als-modules/agile-assurance/src/main/java/org/eco/als/controller/LifetimeSparePartsController.java
  3. 13 12
      als-modules/agile-assurance/src/main/java/org/eco/als/controller/SmTaskController.java
  4. 72 0
      als-modules/agile-assurance/src/main/java/org/eco/als/domain/LifetimeSpareParts.java
  5. 91 0
      als-modules/agile-assurance/src/main/java/org/eco/als/domain/bo/LifetimeSparePartsBo.java
  6. 3 0
      als-modules/agile-assurance/src/main/java/org/eco/als/domain/vo/FaultStatisticsVo.java
  7. 83 0
      als-modules/agile-assurance/src/main/java/org/eco/als/domain/vo/LifetimeSparePartsImportVo.java
  8. 104 0
      als-modules/agile-assurance/src/main/java/org/eco/als/domain/vo/LifetimeSparePartsVo.java
  9. 12 30
      als-modules/agile-assurance/src/main/java/org/eco/als/domain/vo/SmTaskImportVo.java
  10. 12 12
      als-modules/agile-assurance/src/main/java/org/eco/als/domain/vo/SmTaskVo.java
  11. 134 0
      als-modules/agile-assurance/src/main/java/org/eco/als/listener/LifetimeSparePartsImportListener.java
  12. 9 3
      als-modules/agile-assurance/src/main/java/org/eco/als/listener/SmTaskImportListener.java
  13. 16 0
      als-modules/agile-assurance/src/main/java/org/eco/als/mapper/LifetimeSparePartsMapper.java
  14. 8 0
      als-modules/agile-assurance/src/main/java/org/eco/als/service/IFaultStatisticsService.java
  15. 95 0
      als-modules/agile-assurance/src/main/java/org/eco/als/service/ILifetimeSparePartsService.java
  16. 34 0
      als-modules/agile-assurance/src/main/java/org/eco/als/service/impl/FaultStatisticsServiceImpl.java
  17. 190 0
      als-modules/agile-assurance/src/main/java/org/eco/als/service/impl/LifetimeSparePartsServiceImpl.java
  18. 7 0
      als-modules/agile-assurance/src/main/resources/mapper/als/LifetimeSparePartsMapper.xml
  19. 66 0
      als-start/src/main/resources/db/dm/V1_1_0_6_1214__als-ddl.sql

+ 10 - 1
als-modules/agile-assurance/src/main/java/org/eco/als/controller/FaultStatisticsController.java

@@ -59,6 +59,15 @@ public class FaultStatisticsController extends BaseController {
         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));
+    }
+
     /**
      * 外部查询故障统计列表
      */
@@ -70,7 +79,7 @@ public class FaultStatisticsController extends BaseController {
     /**
      * 导出故障统计列表
      */
-//    @SaCheckPermission("als:faultStatistics:export")
+    @SaCheckPermission("als:faultStatistics:export")
     @Log(title = "故障统计", businessType = BusinessType.EXPORT)
     @GetMapping("/export")
     public void export(HttpServletResponse response, FaultStatisticsBo faultStatisticsBo) {

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

+ 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());
     }
 
     /**

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

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

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

@@ -300,4 +300,7 @@ private static final long serialVersionUID = 1L;
 //    @FieldMapper(type = MapperConstant.USER_ID_TO_NAME, mapper = "updateBy")
     private String updateByName;
 
+    /** 统计数量 */
+    private Integer nameCount;
+
 }

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

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

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

+ 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

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

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

@@ -34,6 +34,14 @@ public interface IFaultStatisticsService extends IBaseService<FaultStatistics> {
      */
     List<FaultStatisticsVo> selectList(FaultStatisticsBo faultStatisticsBo);
 
+    /**
+     * 查询故障统计数量
+     *
+     * @param faultStatisticsBo 故障统计Bo
+     * @return 故障统计集合
+     */
+    public List<FaultStatisticsVo> Statistics(FaultStatisticsBo faultStatisticsBo);
+
     /**
      * 外部查询故障统计列表
      *

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

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

@@ -94,6 +94,28 @@ public class FaultStatisticsServiceImpl extends BaseServiceImpl<FaultStatisticsM
         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;
+    }
+
     /**
      * 查询故障统计
      *
@@ -119,6 +141,18 @@ public class FaultStatisticsServiceImpl extends BaseServiceImpl<FaultStatisticsM
             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);
+    }
+
     /**
      * 外部查询故障统计列表
      *

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

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

+ 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 '更新时间';