From 99d6db0aab044b740ce02f57872c1e38ae647b58 Mon Sep 17 00:00:00 2001
From: lyh <925863403@qq.com>
Date: 星期二, 29 七月 2025 19:00:50 +0800
Subject: [PATCH] 三不原则分析 中心修改 台账导入导出字段修改

---
 lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/service/impl/EamReportThreeNoSpareServiceImpl.java      |  298 ++++++++++++++++++++++
 lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/service/impl/EamEquipmentServiceImpl.java               |    2 
 lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamReportThreeNoSpareController.java                |   49 +++
 lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/constant/EamReportThreeNoSpareEnum.java                 |   12 
 lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/mapper/EamRepairOrderMapper.java                        |    2 
 lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/service/IEamReportThreeNoSpareService.java              |   27 ++
 lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/entity/EamEquipment.java                                |    2 
 lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/mapper/xml/EamReportThreeNoSpareMapper.xml              |   19 +
 lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/service/impl/EamReportRepairServiceImpl.java            |   12 
 lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/dto/EamEquipmentDto.java                                |    2 
 lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/mapper/EamReportThreeNoSpareMapper.java                 |    5 
 lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/entity/EamReportThreeNoSpare.java                       |   47 +++
 lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/request/EamReportThreeNoSpareQuery.java                 |  139 ++++++++++
 lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/BaseFactoryServiceImpl.java |    1 
 lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/dto/EamReportThreeNoSpareDto.java                       |  131 ++++++++++
 15 files changed, 733 insertions(+), 15 deletions(-)

diff --git a/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/constant/EamReportThreeNoSpareEnum.java b/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/constant/EamReportThreeNoSpareEnum.java
new file mode 100644
index 0000000..4b43c44
--- /dev/null
+++ b/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/constant/EamReportThreeNoSpareEnum.java
@@ -0,0 +1,12 @@
+package org.jeecg.modules.eam.constant;
+
+public enum EamReportThreeNoSpareEnum {
+    //寰呮彁浜�
+    PENDING_SUBMIT,
+    //寰呭鎵�
+    PENDING_APPROVAL,
+    //宸插畬鎴�
+    REPAIR_COMPLETED,
+    //宸查┏鍥�
+    REJECTED;
+}
diff --git a/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/dto/EamEquipmentDto.java b/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/dto/EamEquipmentDto.java
index bdf3a30..20023b9 100644
--- a/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/dto/EamEquipmentDto.java
+++ b/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/dto/EamEquipmentDto.java
@@ -269,7 +269,7 @@
     /**
      * 楠屾敹鏃ユ湡
      */
-    @Excel(name = "鎶曠敤鏃ユ湡", width = 25, format = "yyyy/MM/dd", orderNum = "29")
+    @Excel(name = "楠屾敹鏃ユ湡", width = 25, format = "yyyy/MM/dd", orderNum = "29")
     @ApiModelProperty(value = "楠屾敹鏃ユ湡")
     @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
     @DateTimeFormat(pattern = "yyyy-MM-dd")
diff --git a/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/dto/EamReportThreeNoSpareDto.java b/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/dto/EamReportThreeNoSpareDto.java
new file mode 100644
index 0000000..7aae2a1
--- /dev/null
+++ b/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/dto/EamReportThreeNoSpareDto.java
@@ -0,0 +1,131 @@
+package org.jeecg.modules.eam.dto;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+import org.jeecg.modules.flowable.domain.vo.FlowTaskVo;
+import org.jeecgframework.poi.excel.annotation.Excel;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * @Description: 鈥滀笁涓嶆斁杩囩殑鍘熷垯鈥濆垎鏋愯〃
+ * @Author: jeecg-boot
+ * @Date:   2025-07-17
+ * @Version: V1.0
+ */
+@Data
+@TableName("eam_report_three_no_spare")
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value="eam_report_three_no_spare瀵硅薄", description="鈥滀笁涓嶆斁杩囩殑鍘熷垯鈥濆垎鏋愯〃")
+public class EamReportThreeNoSpareDto extends FlowTaskVo implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+	/**涓婚敭*/
+	@TableId(type = IdType.ASSIGN_ID)
+    @ApiModelProperty(value = "涓婚敭")
+    private String id;
+	/**鍒涘缓浜�*/
+    @ApiModelProperty(value = "鍒涘缓浜�")
+    private String createBy;
+	/**鍒涘缓鏃ユ湡*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "鍒涘缓鏃ユ湡")
+    private Date createTime;
+	/**鏇存柊浜�*/
+    @ApiModelProperty(value = "鏇存柊浜�")
+    private String updateBy;
+	/**鏇存柊鏃ユ湡*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "鏇存柊鏃ユ湡")
+    private Date updateTime;
+	/**鍒犻櫎鏍囪*/
+	@Excel(name = "鍒犻櫎鏍囪", width = 15)
+    @ApiModelProperty(value = "鍒犻櫎鏍囪")
+    @TableLogic
+    private Integer delFlag;
+	/**鎶ヤ慨ID*/
+	@Excel(name = "鎶ヤ慨ID", width = 15)
+    @ApiModelProperty(value = "鎶ヤ慨ID")
+    private String reportId;
+	/**璁惧ID*/
+	@Excel(name = "璁惧ID", width = 15)
+    @ApiModelProperty(value = "璁惧ID")
+    private String equipmentId;
+    /**鎻愪氦鐘舵��*/
+    @Excel(name = "鎻愪氦鐘舵��", width = 15)
+    @ApiModelProperty(value = "鎻愪氦鐘舵��")
+    private String submitStatus;
+	/**鍘熷洜鍒嗘瀽*/
+	@Excel(name = "鍘熷洜鍒嗘瀽", width = 15)
+    @ApiModelProperty(value = "鍘熷洜鍒嗘瀽")
+    private String causeAnalysis;
+	/**鍩硅鏁欒偛*/
+	@Excel(name = "鍩硅鏁欒偛", width = 15)
+    @ApiModelProperty(value = "鍩硅鏁欒偛")
+    private String isTrainingEducation;
+	/**鍩硅褰㈠紡*/
+	@Excel(name = "鍩硅褰㈠紡", width = 15)
+    @ApiModelProperty(value = "鍩硅褰㈠紡")
+    private String trainingFormat;
+	/**鍩硅鍐呭*/
+	@Excel(name = "鍩硅鍐呭", width = 15)
+    @ApiModelProperty(value = "鍩硅鍐呭")
+    private String trainingContent;
+	/**鍩硅浜�*/
+	@Excel(name = "鍩硅浜�", width = 15)
+    @ApiModelProperty(value = "鍩硅浜�")
+    private String trainingUser;
+	/**鍩硅鏃堕棿*/
+	@Excel(name = "鍩硅鏃堕棿", width = 15, format = "yyyy-MM-dd")
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    @ApiModelProperty(value = "鍩硅鏃堕棿")
+    private Date trainingUserTime;
+    /**棰勯槻鎺柦*/
+    @Excel(name = "棰勯槻鎺柦", width = 15)
+    @ApiModelProperty(value = "棰勯槻鎺柦")
+    private String preventionMeasures;
+    /**鍗曚綅棰嗗*/
+    @Excel(name = "鍗曚綅棰嗗", width = 15)
+    @ApiModelProperty(value = "鍗曚綅棰嗗")
+    private String unitLeader;
+    /**棰嗗鎰忚*/
+    @Excel(name = "棰嗗鎰忚", width = 15)
+    @ApiModelProperty(value = "棰嗗鎰忚")
+    private String leaderOpinion;
+    /**棰嗗纭缁撴灉*/
+    @Excel(name = "棰嗗纭缁撴灉", width = 15)
+    @ApiModelProperty(value = "棰嗗纭缁撴灉")
+    private String leaderConfirmResult;
+    /**棰嗗纭鏃堕棿*/
+    @Excel(name = "棰嗗纭鏃堕棿", width = 15, format = "yyyy-MM-dd")
+    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    @ApiModelProperty(value = "棰嗗纭鏃堕棿")
+    private Date leaderConfirmTime;
+    /**浜嬫晠鐜拌薄*/
+    @Excel(name = "浜嬫晠鐜拌薄", width = 15)
+    @ApiModelProperty(value = "浜嬫晠鐜拌薄")
+    private transient String accidentPhenomenon;
+    /**閲囧彇鎺柦*/
+    @Excel(name = "閲囧彇鎺柦", width = 15)
+    @ApiModelProperty(value = "閲囧彇鎺柦")
+    private transient String measure;
+    /**閫犳垚缁撴灉*/
+    @Excel(name = "閫犳垚缁撴灉", width = 15)
+    @ApiModelProperty(value = "閫犳垚缁撴灉")
+    private transient String causingResults;
+}
diff --git a/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/entity/EamEquipment.java b/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/entity/EamEquipment.java
index 3aded91..7462ff2 100644
--- a/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/entity/EamEquipment.java
+++ b/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/entity/EamEquipment.java
@@ -280,7 +280,7 @@
     /**
      * 楠屾敹鏃ユ湡
      */
-    @Excel(name = "鎶曠敤鏃ユ湡", width = 25, format = "yyyy/MM/dd", orderNum = "29")
+    @Excel(name = "楠屾敹鏃ユ湡", width = 25, format = "yyyy/MM/dd", orderNum = "29")
     @ApiModelProperty(value = "楠屾敹鏃ユ湡")
     @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
     @DateTimeFormat(pattern = "yyyy-MM-dd")
diff --git a/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/entity/EamReportThreeNoSpare.java b/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/entity/EamReportThreeNoSpare.java
index 6f80781..8e57471 100644
--- a/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/entity/EamReportThreeNoSpare.java
+++ b/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/entity/EamReportThreeNoSpare.java
@@ -56,7 +56,7 @@
 	@Excel(name = "鍒犻櫎鏍囪", width = 15)
     @ApiModelProperty(value = "鍒犻櫎鏍囪")
     @TableLogic
-    private String delFlag;
+    private Integer delFlag;
 	/**鎶ヤ慨ID*/
 	@Excel(name = "鎶ヤ慨ID", width = 15)
     @ApiModelProperty(value = "鎶ヤ慨ID")
@@ -65,13 +65,18 @@
 	@Excel(name = "璁惧ID", width = 15)
     @ApiModelProperty(value = "璁惧ID")
     private String equipmentId;
+    /**鎻愪氦鐘舵��*/
+    @Excel(name = "鎻愪氦鐘舵��", width = 15)
+    @ApiModelProperty(value = "鎻愪氦鐘舵��")
+    @Dict(dicCode = "report_three_no_spare_submit_status")
+    private String submitStatus;
 	/**鍘熷洜鍒嗘瀽*/
 	@Excel(name = "鍘熷洜鍒嗘瀽", width = 15)
     @ApiModelProperty(value = "鍘熷洜鍒嗘瀽")
     private String causeAnalysis;
-	/**鍩硅鏁欒偛鏄� 鍚�*/
-	@Excel(name = "鍩硅鏁欒偛鏄� 鍚�", width = 15)
-    @ApiModelProperty(value = "鍩硅鏁欒偛鏄� 鍚�")
+	/**鍩硅鏁欒偛*/
+	@Excel(name = "鍩硅鏁欒偛", width = 15)
+    @ApiModelProperty(value = "鍩硅鏁欒偛")
     private String isTrainingEducation;
 	/**鍩硅褰㈠紡*/
 	@Excel(name = "鍩硅褰㈠紡", width = 15)
@@ -91,4 +96,38 @@
     @DateTimeFormat(pattern="yyyy-MM-dd")
     @ApiModelProperty(value = "鍩硅鏃堕棿")
     private Date trainingUserTime;
+    /**棰勯槻鎺柦*/
+    @Excel(name = "棰勯槻鎺柦", width = 15)
+    @ApiModelProperty(value = "棰勯槻鎺柦")
+    private String preventionMeasures;
+    /**鍗曚綅棰嗗*/
+    @Excel(name = "鍗曚綅棰嗗", width = 15)
+    @ApiModelProperty(value = "鍗曚綅棰嗗")
+    private String unitLeader;
+    /**棰嗗鎰忚*/
+    @Excel(name = "棰嗗鎰忚", width = 15)
+    @ApiModelProperty(value = "棰嗗鎰忚")
+    private String leaderOpinion;
+    /**棰嗗纭鏃堕棿*/
+    @Excel(name = "棰嗗纭鏃堕棿", width = 15, format = "yyyy-MM-dd")
+    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    @ApiModelProperty(value = "棰嗗纭鏃堕棿")
+    private Date leaderConfirmTime;
+    /**棰嗗纭缁撴灉*/
+    @Excel(name = "棰嗗纭缁撴灉", width = 15)
+    @ApiModelProperty(value = "棰嗗纭缁撴灉")
+    private String leaderConfirmResult;
+    /**浜嬫晠鐜拌薄*/
+    @Excel(name = "浜嬫晠鐜拌薄", width = 15)
+    @ApiModelProperty(value = "浜嬫晠鐜拌薄")
+    private transient String accidentPhenomenon;
+    /**閲囧彇鎺柦*/
+    @Excel(name = "閲囧彇鎺柦", width = 15)
+    @ApiModelProperty(value = "閲囧彇鎺柦")
+    private transient String measure;
+    /**閫犳垚缁撴灉*/
+    @Excel(name = "閫犳垚缁撴灉", width = 15)
+    @ApiModelProperty(value = "閫犳垚缁撴灉")
+    private transient String causingResults;
 }
diff --git a/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/mapper/EamRepairOrderMapper.java b/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/mapper/EamRepairOrderMapper.java
index 8788003..5213ff2 100644
--- a/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/mapper/EamRepairOrderMapper.java
+++ b/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/mapper/EamRepairOrderMapper.java
@@ -12,7 +12,7 @@
 import java.util.List;
 
 /**
- * @Description: 缁翠慨宸ュ崟
+ * @Description: ertns
  * @Author: Lius
  * @Date: 2025-04-03
  */
diff --git a/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/mapper/EamReportThreeNoSpareMapper.java b/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/mapper/EamReportThreeNoSpareMapper.java
index 8bb0376..48a01f9 100644
--- a/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/mapper/EamReportThreeNoSpareMapper.java
+++ b/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/mapper/EamReportThreeNoSpareMapper.java
@@ -2,9 +2,13 @@
 
 import java.util.List;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Constants;
 import org.apache.ibatis.annotations.Param;
 import org.jeecg.modules.eam.entity.EamReportThreeNoSpare;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.jeecg.modules.eam.request.EamReportThreeNoSpareQuery;
 
 /**
  * @Description: 鈥滀笁涓嶆斁杩囩殑鍘熷垯鈥濆垎鏋愯〃
@@ -14,4 +18,5 @@
  */
 public interface EamReportThreeNoSpareMapper extends BaseMapper<EamReportThreeNoSpare> {
 
+    IPage<EamReportThreeNoSpareQuery> queryPageList(IPage<EamReportThreeNoSpareQuery> page, @Param(Constants.WRAPPER) QueryWrapper<EamReportThreeNoSpareQuery> EamReportThreeNoSpareQuery);
 }
diff --git a/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/mapper/xml/EamReportThreeNoSpareMapper.xml b/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/mapper/xml/EamReportThreeNoSpareMapper.xml
index 9de7c1a..c3d6173 100644
--- a/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/mapper/xml/EamReportThreeNoSpareMapper.xml
+++ b/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/mapper/xml/EamReportThreeNoSpareMapper.xml
@@ -2,4 +2,23 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="org.jeecg.modules.eam.mapper.EamReportThreeNoSpareMapper">
 
+    <select id="queryPageList" resultType="org.jeecg.modules.eam.request.EamReportThreeNoSpareQuery">
+        SELECT
+            ertns.*,
+            e.equipment_code,
+            e.equipment_name,
+            e.equipment_model,
+            e.installation_position,
+            erar.accident_phenomenon,
+            erar.measure,
+            erar.causing_results
+        FROM eam_report_three_no_spare ertns
+                 LEFT JOIN eam_report_accidents_register erar
+                           ON ertns.report_id = erar.report_id
+                               AND erar.del_flag = 0
+                 INNER JOIN eam_equipment e
+                            ON erar.equipment_id = e.id
+                                AND e.del_flag = 0
+            ${ew.customSqlSegment}
+    </select>
 </mapper>
diff --git a/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/request/EamReportThreeNoSpareQuery.java b/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/request/EamReportThreeNoSpareQuery.java
new file mode 100644
index 0000000..ccd7df6
--- /dev/null
+++ b/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/request/EamReportThreeNoSpareQuery.java
@@ -0,0 +1,139 @@
+package org.jeecg.modules.eam.request;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+import org.jeecg.common.aspect.annotation.Dict;
+import org.jeecgframework.poi.excel.annotation.Excel;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+import java.util.Date;
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@ApiModel(value="涓変笉鍘熷垯", description="涓変笉鍘熷垯")
+public class EamReportThreeNoSpareQuery implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    /**涓婚敭*/
+    @TableId(type = IdType.ASSIGN_ID)
+    @ApiModelProperty(value = "涓婚敭")
+    private String id;
+    /**鍒涘缓浜�*/
+    @ApiModelProperty(value = "鍒涘缓浜�")
+    private String createBy;
+    /**鍒涘缓鏃ユ湡*/
+    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "鍒涘缓鏃ユ湡")
+    private Date createTime;
+    /**鏇存柊浜�*/
+    @ApiModelProperty(value = "鏇存柊浜�")
+    private String updateBy;
+    /**鏇存柊鏃ユ湡*/
+    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "鏇存柊鏃ユ湡")
+    private Date updateTime;
+    /**鍒犻櫎鏍囪*/
+    @Excel(name = "鍒犻櫎鏍囪", width = 15)
+    @ApiModelProperty(value = "鍒犻櫎鏍囪")
+    @TableLogic
+    private Integer delFlag;
+    /**鎶ヤ慨ID*/
+    @Excel(name = "鎶ヤ慨ID", width = 15)
+    @ApiModelProperty(value = "鎶ヤ慨ID")
+    private String reportId;
+    /**璁惧ID*/
+    @Excel(name = "璁惧ID", width = 15)
+    @ApiModelProperty(value = "璁惧ID")
+    private String equipmentId;
+    /**鎻愪氦鐘舵��*/
+    @Excel(name = "鎻愪氦鐘舵��", width = 15)
+    @ApiModelProperty(value = "鎻愪氦鐘舵��")
+    @Dict(dicCode = "report_three_no_spare_submit_status")
+    private String submitStatus;
+    /**鍘熷洜鍒嗘瀽*/
+    @Excel(name = "鍘熷洜鍒嗘瀽", width = 15)
+    @ApiModelProperty(value = "鍘熷洜鍒嗘瀽")
+    private String causeAnalysis;
+    /**鍩硅鏁欒偛*/
+    @Excel(name = "鍩硅鏁欒偛", width = 15)
+    @ApiModelProperty(value = "鍩硅鏁欒偛")
+    @Dict(dicCode = "yn")
+    private String isTrainingEducation;
+    /**鍩硅褰㈠紡*/
+    @Excel(name = "鍩硅褰㈠紡", width = 15)
+    @ApiModelProperty(value = "鍩硅褰㈠紡")
+    private String trainingFormat;
+    /**鍩硅鍐呭*/
+    @Excel(name = "鍩硅鍐呭", width = 15)
+    @ApiModelProperty(value = "鍩硅鍐呭")
+    private String trainingContent;
+    /**鍩硅浜�*/
+    @Excel(name = "鍩硅浜�", width = 15)
+    @ApiModelProperty(value = "鍩硅浜�")
+    @Dict(dictTable = "sys_user", dicText = "realname", dicCode = "username")
+    private String trainingUser;
+    /**鍩硅鏃堕棿*/
+    @Excel(name = "鍩硅鏃堕棿", width = 15, format = "yyyy-MM-dd")
+    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    @ApiModelProperty(value = "鍩硅鏃堕棿")
+    private Date trainingUserTime;
+    /**棰勯槻鎺柦*/
+    @Excel(name = "棰勯槻鎺柦", width = 15)
+    @ApiModelProperty(value = "棰勯槻鎺柦")
+    private String preventionMeasures;
+    /**鍗曚綅棰嗗*/
+    @Excel(name = "鍗曚綅棰嗗", width = 15)
+    @ApiModelProperty(value = "鍗曚綅棰嗗")
+    @Dict(dictTable = "sys_user", dicText = "realname", dicCode = "username")
+    private String unitLeader;
+    /**棰嗗鎰忚*/
+    @Excel(name = "棰嗗鎰忚", width = 15)
+    @ApiModelProperty(value = "棰嗗鎰忚")
+    private String leaderOpinion;
+    /**棰嗗纭缁撴灉*/
+    @Excel(name = "棰嗗纭缁撴灉", width = 15)
+    @ApiModelProperty(value = "棰嗗纭缁撴灉")
+    private String leaderConfirmResult;
+    /**棰嗗纭鏃堕棿*/
+    @Excel(name = "棰嗗纭鏃堕棿", width = 15, format = "yyyy-MM-dd")
+    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    @ApiModelProperty(value = "棰嗗纭鏃堕棿")
+    private Date leaderConfirmTime;
+    /**浜嬫晠鐜拌薄*/
+    @Excel(name = "浜嬫晠鐜拌薄", width = 15)
+    @ApiModelProperty(value = "浜嬫晠鐜拌薄")
+    private transient String accidentPhenomenon;
+    /**閲囧彇鎺柦*/
+    @Excel(name = "閲囧彇鎺柦", width = 15)
+    @ApiModelProperty(value = "閲囧彇鎺柦")
+    private transient String measure;
+    /**閫犳垚缁撴灉*/
+    @Excel(name = "閫犳垚缁撴灉", width = 15)
+    @ApiModelProperty(value = "閫犳垚缁撴灉")
+    private transient String causingResults;
+
+    //鍒楄〃灞曠ず
+    @TableField(exist = false)
+    private String equipmentCode;
+    @TableField(exist = false)
+    private String equipmentName;
+    @TableField(exist = false)
+    private String equipmentModel;
+    @TableField(exist = false)
+    private String installationPosition;
+    private String column;
+    private String order;
+}
diff --git a/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/service/IEamReportThreeNoSpareService.java b/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/service/IEamReportThreeNoSpareService.java
index 33e4793..0556c50 100644
--- a/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/service/IEamReportThreeNoSpareService.java
+++ b/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/service/IEamReportThreeNoSpareService.java
@@ -1,7 +1,13 @@
 package org.jeecg.modules.eam.service;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.modules.eam.dto.EamReportAccidentsRegisterDto;
+import org.jeecg.modules.eam.dto.EamReportThreeNoSpareDto;
 import org.jeecg.modules.eam.entity.EamReportThreeNoSpare;
 import com.baomidou.mybatisplus.extension.service.IService;
+import org.jeecg.modules.eam.request.EamReportThreeNoSpareQuery;
 
 /**
  * @Description: 鈥滀笁涓嶆斁杩囩殑鍘熷垯鈥濆垎鏋愯〃
@@ -11,4 +17,25 @@
  */
 public interface IEamReportThreeNoSpareService extends IService<EamReportThreeNoSpare> {
 
+    /**
+     * 鍒嗛〉鍒楄〃
+     * @param page
+     * @param EamReportThreeNoSpareQuery
+     * @return
+     */
+    IPage<EamReportThreeNoSpareQuery> pageList(Page<EamReportThreeNoSpareQuery> page, EamReportThreeNoSpareQuery EamReportThreeNoSpareQuery);
+
+    /**
+     * 鎿嶄綔宸ユ彁浜�-鍙戣捣娴佺▼
+     * @param id
+     * @return
+     */
+    Result<?> submit(String id);
+
+    /**
+     * 娴佺▼瀹℃牳
+     * @param eamReportThreeNoSpareDto
+     */
+    Result<?> audit(EamReportThreeNoSpareDto eamReportThreeNoSpareDto);
+
 }
diff --git a/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/service/impl/EamEquipmentServiceImpl.java b/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/service/impl/EamEquipmentServiceImpl.java
index a5ad134..5dbd7b1 100644
--- a/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/service/impl/EamEquipmentServiceImpl.java
+++ b/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/service/impl/EamEquipmentServiceImpl.java
@@ -62,7 +62,7 @@
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-//    @EquipmentHistoryLog(operationTag = EquipmentOperationTagEnum.ACCEPTANCE, businessTable = "eam_equipment")
+    @EquipmentHistoryLog(operationTag = EquipmentOperationTagEnum.ACCEPTANCE, businessTable = "eam_equipment")
     public EamEquipment saveEquipment(EamEquipment eamEquipment) {
         if (eamEquipment == null) {
             return null;
diff --git a/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/service/impl/EamReportRepairServiceImpl.java b/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/service/impl/EamReportRepairServiceImpl.java
index a544284..d91513b 100644
--- a/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/service/impl/EamReportRepairServiceImpl.java
+++ b/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/service/impl/EamReportRepairServiceImpl.java
@@ -63,6 +63,8 @@
     private IEamRepairOrderService iEamRepairOrderService;
     @Autowired
     private ISysBusinessCodeRuleService businessCodeRuleService;
+    @Autowired
+    private IEamReportThreeNoSpareService eamReportThreeNoSpareService;
     /**
      * 鍒嗛〉鍒楄〃
      *
@@ -205,10 +207,20 @@
             //娣诲姞璁惧浜嬫晠鐧昏琛�
             EamReportAccidentsRegister eamReportAccidentsRegister = new EamReportAccidentsRegister();
             BeanUtils.copyProperties(eamReportRepairRequest, eamReportAccidentsRegister);
+            eamReportAccidentsRegister.setId(null);
             eamReportAccidentsRegister.setReportId(eamReportRepair.getId());
             eamReportAccidentsRegister.setDelFlag(Integer.valueOf(CommonConstant.DEFAULT_0));
             eamReportAccidentsRegister.setRegisterStatus(EamReportAccidentsRegisterEnum.PENDING_SUBMIT.name());
             iEamReportAccidentsRegisterService.save(eamReportAccidentsRegister);
+            //鐢熸垚涓変笉鍘熷垯
+            EamReportThreeNoSpare eamReportThreeNoSpare = new EamReportThreeNoSpare();
+            BeanUtils.copyProperties(eamReportRepairRequest, eamReportThreeNoSpare);
+            eamReportThreeNoSpare.setId(null);
+            eamReportThreeNoSpare.setReportId(eamReportRepair.getId());
+            eamReportThreeNoSpare.setPreventionMeasures(eamReportAccidentsRegister.getTakeSteps());
+            eamReportThreeNoSpare.setSubmitStatus(EamReportThreeNoSpareEnum.PENDING_SUBMIT.name());
+            eamReportThreeNoSpare.setDelFlag(Integer.valueOf(CommonConstant.DEFAULT_0));
+            eamReportThreeNoSpareService.save(eamReportThreeNoSpare);
         }
         //鐢熸垚缁翠慨宸ュ崟
         EamRepairOrder eamRepairOrder=new EamRepairOrder();
diff --git a/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/service/impl/EamReportThreeNoSpareServiceImpl.java b/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/service/impl/EamReportThreeNoSpareServiceImpl.java
index f874280..709081b 100644
--- a/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/service/impl/EamReportThreeNoSpareServiceImpl.java
+++ b/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/service/impl/EamReportThreeNoSpareServiceImpl.java
@@ -1,11 +1,53 @@
 package org.jeecg.modules.eam.service.impl;
 
+import cn.hutool.core.util.StrUtil;
+import com.alibaba.fastjson.JSON;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.shiro.SecurityUtils;
+import org.flowable.engine.TaskService;
+import org.flowable.task.api.Task;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.constant.CommonConstant;
+import org.jeecg.common.constant.DataBaseConstant;
+import org.jeecg.common.exception.JeecgBootException;
+import org.jeecg.common.system.vo.LoginUser;
+import org.jeecg.common.util.oConvertUtils;
+import org.jeecg.modules.eam.constant.BusinessCodeConst;
+import org.jeecg.modules.eam.constant.EamReportThreeNoSpareEnum;
+import org.jeecg.modules.eam.dto.EamReportThreeNoSpareDto;
+import org.jeecg.modules.eam.entity.EamEquipment;
 import org.jeecg.modules.eam.entity.EamReportThreeNoSpare;
 import org.jeecg.modules.eam.mapper.EamReportThreeNoSpareMapper;
+import org.jeecg.modules.eam.request.EamReportThreeNoSpareQuery;
+import org.jeecg.modules.eam.service.IEamEquipmentService;
+import org.jeecg.modules.eam.service.IEamReportRepairService;
 import org.jeecg.modules.eam.service.IEamReportThreeNoSpareService;
+import org.jeecg.modules.flowable.apithird.business.entity.FlowMyBusiness;
+import org.jeecg.modules.flowable.apithird.business.service.IFlowMyBusinessService;
+import org.jeecg.modules.flowable.apithird.service.FlowCallBackServiceI;
+import org.jeecg.modules.flowable.apithird.service.FlowCommonService;
+import org.jeecg.modules.flowable.service.IFlowDefinitionService;
+import org.jeecg.modules.flowable.service.IFlowTaskService;
+import org.jeecg.modules.system.entity.BaseFactory;
+import org.jeecg.modules.system.entity.BaseFactoryUser;
+import org.jeecg.modules.system.service.IBaseFactoryService;
+import org.jeecg.modules.system.service.IBaseFactoryUserService;
+import org.jeecg.modules.system.service.ISysUserService;
+import org.jeecg.modules.system.vo.UserSelector;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
 
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+import javax.annotation.Resource;
+import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * @Description: 鈥滀笁涓嶆斁杩囩殑鍘熷垯鈥濆垎鏋愯〃
@@ -13,7 +55,259 @@
  * @Date:   2025-07-17
  * @Version: V1.0
  */
-@Service
-public class EamReportThreeNoSpareServiceImpl extends ServiceImpl<EamReportThreeNoSpareMapper, EamReportThreeNoSpare> implements IEamReportThreeNoSpareService {
+@Service("eamReportThreeNoSpareService")
+public class EamReportThreeNoSpareServiceImpl extends ServiceImpl<EamReportThreeNoSpareMapper, EamReportThreeNoSpare> implements IEamReportThreeNoSpareService , FlowCallBackServiceI {
 
+    @Autowired
+    private IBaseFactoryUserService baseFactoryUserService;
+    @Autowired
+    private IBaseFactoryService baseFactoryService;
+    @Autowired
+    @Lazy
+    private IEamReportRepairService iEamReportRepairService;
+    @Resource
+    private FlowCommonService flowCommonService;
+
+    @Resource
+    private IFlowDefinitionService flowDefinitionService;
+
+    @Resource
+    private IEamEquipmentService eamEquipmentService;
+
+    @Resource
+    private IFlowMyBusinessService flowMyBusinessService;
+
+    @Resource
+    private TaskService taskService;
+
+    @Resource
+    private IFlowTaskService flowTaskService;
+
+    @Autowired
+    private ISysUserService sysUserService;
+
+
+    /**
+     * 鍒嗛〉鍒楄〃
+     * @param page
+     * @param EamReportThreeNoSpareQuery
+     * @return
+     */
+    @Override
+    public IPage<EamReportThreeNoSpareQuery> pageList(Page<EamReportThreeNoSpareQuery> page, EamReportThreeNoSpareQuery EamReportThreeNoSpareQuery){
+        QueryWrapper<EamReportThreeNoSpareQuery> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("ertns.del_flag", CommonConstant.DEL_FLAG_0);
+        //鐢ㄦ埛鏁版嵁鏉冮檺
+        LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
+        if (sysUser == null) {
+            return page;
+        }
+        if (StringUtils.isNotBlank(sysUser.getEamEquipmentIds())) {
+            //閫夋嫨浜嗚澶囷紝鏍规嵁璁惧id杩囨护璁惧
+            List<String> equipArr = Arrays.asList(sysUser.getEamEquipmentIds().split(","));
+            queryWrapper.in("e.equipment_code", equipArr);
+        } else {
+            //娌℃湁閫夋嫨璁惧锛屾牴鎹腑蹇冭繃婊よ澶�
+            List<BaseFactoryUser> baseFactoryUserList = baseFactoryUserService.
+                    list(new LambdaQueryWrapper<BaseFactoryUser>().eq(BaseFactoryUser::getUserId, sysUser.getId()));
+            if (!CollectionUtils.isEmpty(baseFactoryUserList)) {
+                Set<String> factoryIds = baseFactoryUserList.stream().map(BaseFactoryUser::getFactoryId).collect(Collectors.toSet());
+                Set<String> factoryCode = baseFactoryService.listByIds(factoryIds).stream().map(BaseFactory::getOrgCode).collect(Collectors.toSet());
+                queryWrapper.in("e.factory_org_code", factoryCode);
+            } else {
+                return page;
+            }
+        }
+        //鏌ヨ鏉′欢杩囨护
+        if (EamReportThreeNoSpareQuery != null) {
+            if (StringUtils.isNotBlank(EamReportThreeNoSpareQuery.getEquipmentId())) {
+                queryWrapper.eq("ertns.equipment_id", EamReportThreeNoSpareQuery.getEquipmentId());
+            }
+            if (StringUtils.isNotBlank(EamReportThreeNoSpareQuery.getEquipmentCode())) {
+                queryWrapper.like("e.equipment_code", EamReportThreeNoSpareQuery.getEquipmentCode());
+            }
+            if (StringUtils.isNotBlank(EamReportThreeNoSpareQuery.getEquipmentName())) {
+                queryWrapper.like("e.equipment_name", EamReportThreeNoSpareQuery.getEquipmentName());
+            }
+            if (StringUtils.isNotBlank(EamReportThreeNoSpareQuery.getSubmitStatus())) {
+                queryWrapper.eq("ertns.submit_status", EamReportThreeNoSpareQuery.getSubmitStatus());
+            }
+            if (StringUtils.isNotBlank(EamReportThreeNoSpareQuery.getCauseAnalysis())) {
+                queryWrapper.like("ertns.cause_analysis", EamReportThreeNoSpareQuery.getCauseAnalysis());
+            }
+            if (StringUtils.isNotBlank(EamReportThreeNoSpareQuery.getTrainingFormat())) {
+                queryWrapper.like("ertns.training_format", EamReportThreeNoSpareQuery.getTrainingFormat());
+            }
+            if (StringUtils.isNotBlank(EamReportThreeNoSpareQuery.getTrainingContent())) {
+                queryWrapper.like("ertns.training_content", EamReportThreeNoSpareQuery.getTrainingContent());
+            }
+            //鎺掑簭
+            if (StringUtils.isNotBlank(EamReportThreeNoSpareQuery.getColumn()) && StringUtils.isNotBlank(EamReportThreeNoSpareQuery.getOrder())) {
+                String column = EamReportThreeNoSpareQuery.getColumn();
+                if (column.endsWith(CommonConstant.DICT_TEXT_SUFFIX)) {
+                    column = column.substring(0, column.lastIndexOf(CommonConstant.DICT_TEXT_SUFFIX));
+                }
+                if (DataBaseConstant.SQL_ASC.equalsIgnoreCase(EamReportThreeNoSpareQuery.getOrder())) {
+                    queryWrapper.orderByAsc("ertns." + oConvertUtils.camelToUnderline(column));
+                } else {
+                    queryWrapper.orderByDesc("ertns." + oConvertUtils.camelToUnderline(column));
+                }
+            } else {
+                queryWrapper.orderByDesc("ertns.create_time");
+            }
+        } else {
+            queryWrapper.orderByDesc("ertns.create_time");
+        }
+        return baseMapper.queryPageList(page, queryWrapper);
+    }
+
+    /**
+     * 鎿嶄綔宸ユ彁浜�-鍙戣捣娴佺▼
+     * @param id
+     * @return
+     */
+    @Override
+    public Result<?> submit(String id){
+        EamReportThreeNoSpare eamReportThreeNoSpare=this.getById(id);
+        LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal();
+        EamEquipment eamEquipment = eamEquipmentService.getById(eamReportThreeNoSpare.getEquipmentId());
+        //鏍规嵁user鐨勫矖浣嶈繘琛屽垽鏂笅涓�姝ュ鐞嗕汉
+        List<UserSelector> userSelectorList = sysUserService.selectOperatorList(eamEquipment.getEquipmentCode(), eamEquipment.getFactoryOrgCode(), BusinessCodeConst.PCR0019);
+        // 鍚姩璁惧浜嬫晠鐧昏娴佺▼
+        flowCommonService.initActBusiness("璁惧缂栧彿锛�" + eamEquipment.getEquipmentCode() + ", 璁惧鍚嶇О锛�" + eamEquipment.getEquipmentName()+"鍙戣捣鈥滀笁涓嶆斁杩囩殑鍘熷垯鈥濆垎鏋愭祦绋�",
+                eamReportThreeNoSpare.getId(),
+                "eamReportThreeNoSpareService",
+                "eam_report_three_no_spare",
+                null);
+        Map<String, Object> variables = new HashMap<>();
+        variables.put("dataId", eamReportThreeNoSpare.getId());
+        variables.put("organization", "鍩硅浜烘彁浜ゅ惎鍔ㄦ祦绋�");
+        variables.put("comment", "鍩硅浜烘彁浜ゅ崟鍚姩娴佺▼");
+        variables.put("proofreading", true);
+        if (CollectionUtils.isEmpty(userSelectorList)) {
+            throw new JeecgBootException("璁惧鏈瓨鍦ㄥ鏍搁瀵硷紝鏃犳硶杩涘叆涓嬬骇瀹℃壒锛�");
+        }else {
+            List<String> usernameList = userSelectorList.stream().map(UserSelector::getUsername).collect(Collectors.toList());
+            variables.put("NextAssignee", usernameList);
+        }
+        Result result = flowDefinitionService.startProcessInstanceByKey("eam_report_three_no_spare", variables);
+        if (!result.isSuccess()) {
+            return Result.error("娴佺▼鍚姩澶辫触");
+        } else {
+            eamReportThreeNoSpare.setTrainingUser(user.getUsername());
+            eamReportThreeNoSpare.setTrainingUserTime(new Date());
+            eamReportThreeNoSpare.setSubmitStatus(EamReportThreeNoSpareEnum.PENDING_APPROVAL.name());
+            this.updateById(eamReportThreeNoSpare);
+            return result;
+        }
+    }
+
+    /**
+     * 娴佺▼瀹℃牳
+     * @param eamReportThreeNoSpareDto
+     */
+    @Override
+    public Result<?> audit(EamReportThreeNoSpareDto eamReportThreeNoSpareDto){
+        EamReportThreeNoSpare eamReportThreeNoSpare = this.baseMapper.selectById(eamReportThreeNoSpareDto.getId());
+        if (eamReportThreeNoSpare == null) {
+            throw new JeecgBootException("宸ュ崟涓嶅瓨鍦紝璇峰埛鏂伴噸璇曪紒");
+        }
+        // 鑾峰彇褰撳墠鐧诲綍鐢ㄦ埛
+        LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal();
+        if (user == null || StrUtil.isBlank(user.getId())) {
+            throw new JeecgBootException("鏈幏鍙栧埌鐧诲綍鐢ㄦ埛锛岃閲嶆柊鐧诲綍鍚庡啀璇曪紒");
+        }
+        eamReportThreeNoSpareDto.setAssignee(user.getUsername());
+        // 鑾峰彇娴佺▼涓氬姟璁板綍
+        FlowMyBusiness flowMyBusiness = flowMyBusinessService.getFlowMyBusiness(eamReportThreeNoSpareDto.getInstanceId());
+        if (flowMyBusiness == null) {
+            throw new JeecgBootException("娴佺▼瀹炰緥涓嶅瓨鍦紝璇峰埛鏂板悗閲嶈瘯锛�");
+        }
+        boolean userAuthorized = isUserAuthorized(flowMyBusiness, user);
+        if (!userAuthorized) {
+            throw new JeecgBootException("鐢ㄦ埛鏃犳潈鎿嶄綔姝や换鍔★紝璇峰埛鏂板悗閲嶈瘯锛�");
+        }
+        // 璁ら浠诲姟
+        if (!claimTask(flowMyBusiness.getTaskId(), user)) {
+            throw new JeecgBootException("浠诲姟涓嶅瓨鍦ㄣ�佸凡瀹屾垚鎴栧凡琚粬浜鸿棰嗭紒");
+        }
+        EamEquipment equipment = eamEquipmentService.getById(eamReportThreeNoSpareDto.getEquipmentId());
+        if (equipment == null) {
+            throw new JeecgBootException("璁惧涓嶅瓨鍦紝璇锋鏌ワ紒");
+        }
+        //娴佺▼鍙橀噺
+        Map<String, Object> values = new HashMap<>();
+        values.put("dataId", eamReportThreeNoSpareDto.getId());
+        values.put("assignee", user.getId());
+        if(StrUtil.isEmpty(eamReportThreeNoSpareDto.getLeaderOpinion())){
+            eamReportThreeNoSpareDto.setLeaderOpinion("");
+        }
+        values.put("organization", eamReportThreeNoSpareDto.getLeaderOpinion());
+        values.put("comment", eamReportThreeNoSpareDto.getLeaderOpinion());
+        values.put("leaderConfirmResult", eamReportThreeNoSpareDto.getLeaderConfirmResult());
+        values.put("proofreading", true);
+        if ("1".equals(eamReportThreeNoSpareDto.getLeaderConfirmResult())){
+            eamReportThreeNoSpare.setSubmitStatus(EamReportThreeNoSpareEnum.REPAIR_COMPLETED.name());
+        }else {
+            eamReportThreeNoSpare.setSubmitStatus(EamReportThreeNoSpareEnum.REJECTED.name());
+        }
+        eamReportThreeNoSpare.setUnitLeader(user.getUsername());
+        eamReportThreeNoSpare.setLeaderOpinion(eamReportThreeNoSpareDto.getLeaderOpinion());
+        eamReportThreeNoSpare.setLeaderConfirmResult(eamReportThreeNoSpareDto.getLeaderConfirmResult());
+        eamReportThreeNoSpare.setLeaderConfirmTime(new Date());
+        eamReportThreeNoSpareDto.setComment(eamReportThreeNoSpareDto.getLeaderOpinion());
+        eamReportThreeNoSpareDto.setValues(values);
+        //淇濆瓨宸ュ崟
+        this.updateById(eamReportThreeNoSpare);
+        Result result = flowTaskService.complete(eamReportThreeNoSpareDto);
+        if (!result.isSuccess()) {
+            throw new JeecgBootException("瀹℃壒澶辫触锛岃鍒锋柊鏌ョ湅锛�");
+        }
+        return Result.ok("瀹℃壒鎴愬姛");
+    }
+
+    private boolean claimTask(String taskId, LoginUser user) {
+        Task task = taskService.createTaskQuery().taskId(taskId).singleResult();
+        if (task == null) {
+            return false;
+        }
+        if (task.getAssignee() != null && !task.getAssignee().equals(user.getUsername())) {
+            return false;
+        }
+        taskService.claim(taskId, user.getUsername());
+        return true;
+    }
+
+    /**
+     * 鍒ゆ柇鐢ㄦ埛鏄惁鎷ユ湁姝ゆ潈闄�
+     * @param flowMyBusiness
+     * @param user
+     * @return
+     */
+    private boolean isUserAuthorized(FlowMyBusiness flowMyBusiness, LoginUser user) {
+        List<String> todoUsers = JSON.parseArray(flowMyBusiness.getTodoUsers(), String.class);
+        return todoUsers != null && todoUsers.contains(user.getUsername());
+    }
+
+    @Override
+    public void afterFlowHandle(FlowMyBusiness business) {
+
+    }
+
+    @Override
+    public Object getBusinessDataById(String dataId) {
+        return null;
+    }
+
+    @Override
+    public Map<String, Object> flowValuesOfTask(String taskNameId, Map<String, Object> values) {
+        return Collections.emptyMap();
+    }
+
+    @Override
+    public List<String> flowCandidateUsernamesOfTask(String taskNameId, Map<String, Object> values) {
+        //鑾峰彇涓嬩竴姝ュ鐞嗕汉
+        Object object = values.get("NextAssignee");
+        return (List<String>) object;
+    }
 }
diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamReportThreeNoSpareController.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamReportThreeNoSpareController.java
index fd153a0..a30a494 100644
--- a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamReportThreeNoSpareController.java
+++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamReportThreeNoSpareController.java
@@ -1,6 +1,7 @@
 package org.jeecg.modules.eam.controller;
 
 import java.util.Arrays;
+import java.util.Date;
 import java.util.List;
 import java.util.Map;
 import java.util.stream.Collectors;
@@ -9,10 +10,16 @@
 import java.net.URLDecoder;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
+
+import cn.hutool.core.util.StrUtil;
+import org.apache.shiro.SecurityUtils;
 import org.jeecg.common.api.vo.Result;
 import org.jeecg.common.system.query.QueryGenerator;
+import org.jeecg.common.system.vo.LoginUser;
 import org.jeecg.common.util.oConvertUtils;
+import org.jeecg.modules.eam.dto.EamReportThreeNoSpareDto;
 import org.jeecg.modules.eam.entity.EamReportThreeNoSpare;
+import org.jeecg.modules.eam.request.EamReportThreeNoSpareQuery;
 import org.jeecg.modules.eam.service.IEamReportThreeNoSpareService;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@@ -53,7 +60,7 @@
 	/**
 	 * 鍒嗛〉鍒楄〃鏌ヨ
 	 *
-	 * @param eamReportThreeNoSpare
+	 * @param eamReportThreeNoSpareQuery
 	 * @param pageNo
 	 * @param pageSize
 	 * @param req
@@ -62,13 +69,12 @@
 	//@AutoLog(value = "鈥滀笁涓嶆斁杩囩殑鍘熷垯鈥濆垎鏋愯〃-鍒嗛〉鍒楄〃鏌ヨ")
 	@ApiOperation(value="鈥滀笁涓嶆斁杩囩殑鍘熷垯鈥濆垎鏋愯〃-鍒嗛〉鍒楄〃鏌ヨ", notes="鈥滀笁涓嶆斁杩囩殑鍘熷垯鈥濆垎鏋愯〃-鍒嗛〉鍒楄〃鏌ヨ")
 	@GetMapping(value = "/list")
-	public Result<IPage<EamReportThreeNoSpare>> queryPageList(EamReportThreeNoSpare eamReportThreeNoSpare,
+	public Result<IPage<EamReportThreeNoSpareQuery>> queryPageList(EamReportThreeNoSpareQuery eamReportThreeNoSpareQuery,
 								   @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
 								   @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
 								   HttpServletRequest req) {
-		QueryWrapper<EamReportThreeNoSpare> queryWrapper = QueryGenerator.initQueryWrapper(eamReportThreeNoSpare, req.getParameterMap());
-		Page<EamReportThreeNoSpare> page = new Page<EamReportThreeNoSpare>(pageNo, pageSize);
-		IPage<EamReportThreeNoSpare> pageList = eamReportThreeNoSpareService.page(page, queryWrapper);
+		Page<EamReportThreeNoSpareQuery> page = new Page<EamReportThreeNoSpareQuery>(pageNo, pageSize);
+		IPage<EamReportThreeNoSpareQuery> pageList = eamReportThreeNoSpareService.pageList(page, eamReportThreeNoSpareQuery);
 		return Result.OK(pageList);
 	}
 
@@ -98,10 +104,43 @@
 	//@RequiresPermissions("org.jeecg.modules.mdc:eam_report_three_no_spare:edit")
 	@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
 	public Result<String> edit(@RequestBody EamReportThreeNoSpare eamReportThreeNoSpare) {
+		LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal();
+		eamReportThreeNoSpare.setTrainingUser(user.getUsername());
+		eamReportThreeNoSpare.setTrainingUserTime(new Date());
 		eamReportThreeNoSpareService.updateById(eamReportThreeNoSpare);
 		return Result.OK("缂栬緫鎴愬姛!");
 	}
 
+	 /**
+	  * 鎿嶄綔宸ユ彁浜�-鍙戣捣娴佺▼
+	  * @param id
+	  * @return
+	  */
+	 @ApiOperation(value = "鈥滀笁涓嶆斁杩囩殑鍘熷垯鈥濆垎鏋愯〃--鎻愪氦", notes = "鈥滀笁涓嶆斁杩囩殑鍘熷垯鈥濆垎鏋愯〃--鎻愪氦")
+	 @GetMapping(value = "/submit")
+	 public Result<?> submit(String id){
+		 eamReportThreeNoSpareService.submit(id);
+		 return Result.OK("鎻愪氦鎴愬姛锛�");
+	 }
+
+	 /**
+	  * 娴佺▼瀹℃牳
+	  * @param eamReportThreeNoSpareDto
+	  */
+	 @AutoLog(value = "鈥滀笁涓嶆斁杩囩殑鍘熷垯鈥濆垎鏋愯〃--鎵ц/瀹℃壒")
+	 @ApiOperation(value = "鈥滀笁涓嶆斁杩囩殑鍘熷垯鈥濆垎鏋愯〃--鎵ц/瀹℃壒", notes = "鈥滀笁涓嶆斁杩囩殑鍘熷垯鈥濆垎鏋愯〃--鎵ц/瀹℃壒")
+	 @PostMapping(value = "/perform")
+	 public Result<?> audit(@RequestBody EamReportThreeNoSpareDto eamReportThreeNoSpareDto){
+		 if (eamReportThreeNoSpareDto == null) {
+			 return Result.error("瀹℃壒鐨勫璞′笉鑳戒负绌猴紒");
+		 }
+		 // 妫�鏌ヨ姹傚弬鏁�
+		 if (StrUtil.isBlank(eamReportThreeNoSpareDto.getTaskId()) || StrUtil.isBlank(eamReportThreeNoSpareDto.getDataId()) || StrUtil.isBlank(eamReportThreeNoSpareDto.getInstanceId())) {
+			 return Result.error("瀹℃壒浠诲姟閿欒鎴栦笉瀛樺湪锛�");
+		 }
+		 return eamReportThreeNoSpareService.audit(eamReportThreeNoSpareDto);
+	 }
+
 	/**
 	 *   閫氳繃id鍒犻櫎
 	 *
diff --git a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/BaseFactoryServiceImpl.java b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/BaseFactoryServiceImpl.java
index 0062273..a7d6cfd 100644
--- a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/BaseFactoryServiceImpl.java
+++ b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/BaseFactoryServiceImpl.java
@@ -225,6 +225,7 @@
         QueryWrapper<BaseFactory> baseFactoryQueryWrapper = new QueryWrapper<>();
         baseFactoryQueryWrapper.eq(StrUtil.isNotEmpty(baseFactory.getFactoryCode()), "factory_code", baseFactory.getFactoryCode());
         baseFactoryQueryWrapper.eq("del_flag", CommonConstant.DEL_FLAG_0.toString());
+        baseFactoryQueryWrapper.ne(baseFactory.getId() != null, "id", baseFactory.getId());
         if (this.getOne(baseFactoryQueryWrapper) != null) {
             throw new JeecgBootException("鏈烘瀯缂栫爜宸插瓨鍦�");
         }

--
Gitblit v1.9.3