From e334d8afd0a654aa845f720122b876807459b90d Mon Sep 17 00:00:00 2001
From: Lius <Lius2225@163.com>
Date: 星期二, 09 九月 2025 17:56:26 +0800
Subject: [PATCH] 设备调拨、借用、归还流程审批调整

---
 lxzn-module-eam/src/main/java/org/jeecg/modules/eam/request/EamEquipmentTransferRequest.java                   |   42 +
 lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/entity/EamEquipmentTransfer.java                    |  127 ++++--
 lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/IEamSparePartRequisitionService.java               |    2 
 lxzn-boot-base-core/src/main/java/org/jeecg/common/constant/CommonConstant.java                                |   11 
 lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysUserServiceImpl.java |   15 
 lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamEquipmentTransferServiceImpl.java          |  257 +++++++++---
 lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/constant/EquipmentLeanOutStatusEnum.java            |    7 
 lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamEquipmentTransferController.java             |   10 
 lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamSparePartRequisitionServiceImpl.java       |    5 
 lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/IEamEquipmentLeanOutService.java                   |    2 
 lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamEquipmentLeanOutServiceImpl.java           |  210 ++++++---
 /dev/null                                                                                                      |  152 -------
 lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/constant/BusinessCodeConst.java                     |    4 
 lxzn-module-eam/src/main/java/org/jeecg/modules/eam/request/EamEquipmentLeanOutRequest.java                    |  105 +++-
 lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/entity/EamEquipmentLeanOut.java                     |  169 +++----
 lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamSparePartRequisitionController.java          |    4 
 lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/EamEquipmentSealUpMapper.java                       |    5 
 lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/ISysUserService.java         |   10 
 lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/constant/EquipmentTransferStatusEnum.java           |    6 
 19 files changed, 636 insertions(+), 507 deletions(-)

diff --git a/lxzn-boot-base-core/src/main/java/org/jeecg/common/constant/CommonConstant.java b/lxzn-boot-base-core/src/main/java/org/jeecg/common/constant/CommonConstant.java
index ef6acb1..f4539dc 100644
--- a/lxzn-boot-base-core/src/main/java/org/jeecg/common/constant/CommonConstant.java
+++ b/lxzn-boot-base-core/src/main/java/org/jeecg/common/constant/CommonConstant.java
@@ -366,6 +366,17 @@
     String YN_Y = "Y";
     String YN_N = "N";
 
+    /**
+     * 1鏄�0鍚�
+     */
+    String YN_O = "0";
+    String YN_1 = "1";
+
+    /**
+     * 1閫氳繃 2椹冲洖
+     */
+    String APPROVED = "1";
+    String REJECTED = "2";
 
     /**===============================================================================================*/
     /**
diff --git a/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/constant/BusinessCodeConst.java b/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/constant/BusinessCodeConst.java
index 8e7cd95..7dc5b61 100644
--- a/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/constant/BusinessCodeConst.java
+++ b/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/constant/BusinessCodeConst.java
@@ -68,5 +68,9 @@
     String PCR0006 = "PCR0006";
     //澶囦欢绠$悊鍛�
     String PCR0007 = "PCR0007";
+    //鍗曚綅棰嗗
+    String PCR0008 = "PCR0008";
+    //鍏徃棰嗗
+    String PCR0009 = "PCR0009";
 
 }
diff --git a/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/constant/EquipmentLeanOutStatusEnum.java b/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/constant/EquipmentLeanOutStatusEnum.java
index 787a0c6..a83b663 100644
--- a/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/constant/EquipmentLeanOutStatusEnum.java
+++ b/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/constant/EquipmentLeanOutStatusEnum.java
@@ -2,9 +2,12 @@
 
 public enum EquipmentLeanOutStatusEnum {
     WAIT_SUBMIT, //寰呮彁浜�
-    WAIT_APPROVAL, //寰呭鎵�
+    WAIT_APPROVAL_OUT, //寰呬娇鐢ㄥ崟浣嶅嚭鍘傚鎵�
+    WAIT_APPROVAL_IN, //寰呭叆鍘傚鎵�
     WAIT_RETURN, //寰呭綊杩�
-    WAIT_CONFIRM, //寰呯‘璁�
+    WAIT_CONFIRM_RETURN, //寰呭綊杩樻柟纭
+    WAIT_CONFIRM_BORROW, //寰呭�熺敤鏂圭‘璁�
+    REJECT, //宸查┏鍥�
     COMPLETE, //宸插畬鎴�
     ;
     public static EquipmentLeanOutStatusEnum getInstance(String code) {
diff --git a/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/constant/EquipmentTransferStatusEnum.java b/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/constant/EquipmentTransferStatusEnum.java
index f061fb2..e5b0d58 100644
--- a/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/constant/EquipmentTransferStatusEnum.java
+++ b/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/constant/EquipmentTransferStatusEnum.java
@@ -6,7 +6,11 @@
  */
 public enum EquipmentTransferStatusEnum {
     WAIT_SUBMIT, //寰呮彁浜�
-    WAIT_CHECK, //寰呭鏍�
+    WAIT_USE_LEADER_CHECK, //寰呬娇鐢ㄥ崟浣嶉瀵煎鎵�
+    WAIT_TRANSFER_LEADER_CHECK, //寰呰皟鍏ュ崟浣嶉瀵煎鎵�
+    WAIT_EXTERNAL_CONFIRM, //寰呮満鍔ㄥ姙纭浜�
+    WAIT_COMPANY_LEADER_CHECK, //寰呭叕鍙搁瀵煎鎵�
+    REJECT, //宸查┏鍥�
     COMPLETE, //宸插畬鎴�
     ;
 
diff --git a/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/entity/EamEquipmentLeanOut.java b/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/entity/EamEquipmentLeanOut.java
index 0ab7939..e99c3ba 100644
--- a/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/entity/EamEquipmentLeanOut.java
+++ b/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/entity/EamEquipmentLeanOut.java
@@ -16,157 +16,144 @@
 
 import java.io.Serializable;
 import java.util.Date;
-
 /**
  * @Description: 璁惧鍊熷嚭褰掕繕
  * @Author: jeecg-boot
- * @Date: 2025-05-13
+ * @Date:   2025-05-13
  * @Version: V1.0
  */
 @Data
 @TableName("eam_equipment_lean_out")
 @EqualsAndHashCode(callSuper = false)
 @Accessors(chain = true)
-@ApiModel(value = "eam_equipment_lean_out瀵硅薄", description = "璁惧鍊熷嚭褰掕繕")
+@ApiModel(value="eam_equipment_lean_out瀵硅薄", description="璁惧鍊熷嚭褰掕繕")
 public class EamEquipmentLeanOut implements Serializable {
 
-    /**
-     * 涓婚敭
-     */
+    /**涓婚敭*/
     @TableId(type = IdType.ASSIGN_ID)
     @ApiModelProperty(value = "涓婚敭")
     private String id;
-    /**
-     * 鍒涘缓浜�
-     */
+    /**鍒涘缓浜�*/
     @ApiModelProperty(value = "鍒涘缓浜�")
     private String createBy;
-    /**
-     * 鍒涘缓鏃堕棿
-     */
+    /**鍒涘缓鏃堕棿*/
     @ApiModelProperty(value = "鍒涘缓鏃堕棿")
     private Date createTime;
-    /**
-     * 鏇存柊浜�
-     */
+    /**鏇存柊浜�*/
     @ApiModelProperty(value = "鏇存柊浜�")
     private String updateBy;
-    /**
-     * 鏇存柊鏃堕棿
-     */
+    /**鏇存柊鏃堕棿*/
     @ApiModelProperty(value = "鏇存柊鏃堕棿")
     private Date updateTime;
-    /**
-     * 鍒犻櫎鏍囪
-     */
+    /**鍒犻櫎鏍囪*/
     @ApiModelProperty(value = "鍒犻櫎鏍囪")
     private Integer delFlag;
-    /**
-     * 璁惧ID
-     */
+    /**璁惧ID*/
     @ApiModelProperty(value = "璁惧ID")
     private String equipmentId;
-    /**
-     * 鍗曟嵁鍙�
-     */
+    /**鍗曟嵁鍙�*/
     @Excel(name = "鍗曟嵁鍙�", width = 15)
     @ApiModelProperty(value = "鍗曟嵁鍙�")
     private String code;
-    /**
-     * 鍊熷叆閮ㄩ棬
-     */
+    /**鍊熷叆閮ㄩ棬*/
     @Excel(name = "鍊熷叆閮ㄩ棬", width = 15, dictTable = "mdc_production", dicText = "production_name", dicCode = "id")
     @ApiModelProperty(value = "鍊熷叆閮ㄩ棬")
     @Dict(dicCode = "mdc_production, production_name, id")
     private String leanDepartId;
-    /**
-     * 鍊熷叆璐d换浜�
-     */
+    /**鍊熷叆璐d换浜�*/
     @Excel(name = "鍊熷叆璐d换浜�", width = 15)
     @ApiModelProperty(value = "鍊熷叆璐d换浜�")
     @Dict(dicCode = "sys_user, realname, username")
     private String leanPerson;
-    /**
-     * 鍊熺敤鍘熷洜
-     */
+    /**鍊熺敤鍘熷洜*/
     @ApiModelProperty(value = "鍊熺敤鍘熷洜")
     private String leanReason;
-    /**
-     * 瀹℃壒绫诲瀷
-     */
-    @ApiModelProperty(value = "瀹℃壒绫诲瀷")
-    @Dict(dicCode = "approved_rejected")
-    private String approvalDealType;
-    /**
-     * 鍊熷嚭鐘舵��
-     */
+    /**鍊熷嚭鐘舵��*/
     @Excel(name = "鍊熷嚭鐘舵��", width = 15)
     @ApiModelProperty(value = "鍊熷嚭鐘舵��")
     @Dict(dicCode = "equipment_lean_out_status")
     private String leanStatus;
-    /**
-     * 鍊熷嚭寮�濮嬫椂闂�
-     */
+    /**鍊熷嚭寮�濮嬫椂闂�*/
     @ApiModelProperty(value = "鍊熷嚭鏃堕棿")
     @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
     @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Date leanStartTime;
-    /**
-     * 鍊熷嚭褰掕繕鏃堕棿
-     */
+    /**鍊熷嚭褰掕繕鏃堕棿*/
     @ApiModelProperty(value = "褰掕繕鏃堕棿")
     @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
     @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Date leanEndTime;
-    /**
-     * 瀹℃牳浜�
-     */
-    @Excel(name = "瀹℃牳浜�", width = 15)
-    @ApiModelProperty(value = "瀹℃牳浜�")
+    /**浣跨敤杞﹂棿瀹℃牳浜�*/
+    @Excel(name = "浣跨敤杞﹂棿瀹℃牳浜�", width = 15)
+    @ApiModelProperty(value = "浣跨敤杞﹂棿瀹℃牳浜�")
     @Dict(dicCode = "sys_user, realname, username")
-    private String approvalUser;
-    /**
-     * 瀹℃牳鎰忚
-     */
-    @Excel(name = "瀹℃牳鎰忚", width = 15)
-    @ApiModelProperty(value = "瀹℃牳鎰忚")
-    private String approvalComment;
-    /**
-     * 瀹℃牳鏃堕棿
-     */
-    @ApiModelProperty(value = "瀹℃牳鏃堕棿")
+    private String useApprovalUser;
+    /**浣跨敤杞﹂棿瀹℃壒绫诲瀷*/
+    @ApiModelProperty(value = "浣跨敤杞﹂棿瀹℃壒绫诲瀷")
+    @Dict(dicCode = "approved_rejected")
+    private String useApprovalDealType;
+    /**浣跨敤杞﹂棿瀹℃牳鎰忚*/
+    @Excel(name = "浣跨敤杞﹂棿瀹℃牳鎰忚", width = 15)
+    @ApiModelProperty(value = "浣跨敤杞﹂棿瀹℃牳鎰忚")
+    private String useApprovalComment;
+    /**浣跨敤杞﹂棿瀹℃牳鏃堕棿*/
+    @ApiModelProperty(value = "浣跨敤杞﹂棿瀹℃牳鏃堕棿")
     @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
     @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-    private Date approvalTime;
-    /**
-     * 纭浜�
-     */
-    @Excel(name = "纭浜�", width = 15)
-    @ApiModelProperty(value = "纭浜�")
+    private Date useApprovalTime;
+
+    /**鍊熺敤杞﹂棿瀹℃牳浜�*/
+    @Excel(name = "鍊熺敤杞﹂棿瀹℃牳浜�", width = 15)
+    @ApiModelProperty(value = "鍊熺敤杞﹂棿瀹℃牳浜�")
     @Dict(dicCode = "sys_user, realname, username")
-    private String confirmUser;
-    /**
-     * 纭鎰忚
-     */
-    @Excel(name = "纭鎰忚", width = 15)
-    @ApiModelProperty(value = "纭鎰忚")
-    private String confirmComment;
-    /**
-     * 纭鏃堕棿
-     */
-    @ApiModelProperty(value = "纭鏃堕棿")
+    private String leanOutApprovalUser;
+    /**鍊熺敤杞﹂棿瀹℃壒绫诲瀷*/
+    @ApiModelProperty(value = "鍊熺敤杞﹂棿瀹℃壒绫诲瀷")
+    @Dict(dicCode = "approved_rejected")
+    private String leanOutApprovalDealType;
+    /**鍊熺敤杞﹂棿瀹℃牳鎰忚*/
+    @Excel(name = "鍊熺敤杞﹂棿瀹℃牳鎰忚", width = 15)
+    @ApiModelProperty(value = "浣跨敤杞﹂棿瀹℃牳鎰忚")
+    private String leanOutApprovalComment;
+    /**鍊熺敤杞﹂棿瀹℃牳鏃堕棿*/
+    @ApiModelProperty(value = "鍊熺敤杞﹂棿瀹℃牳鏃堕棿")
     @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
     @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-    private Date confirmTime;
-    /**
-     * 澶囨敞
-     */
+    private Date leanOutApprovalTime;
+
+    /**浣跨敤杞﹂棿纭浜�*/
+    @Excel(name = "浣跨敤杞﹂棿纭浜�", width = 15)
+    @ApiModelProperty(value = "浣跨敤杞﹂棿纭浜�")
+    @Dict(dicCode = "sys_user, realname, username")
+    private String useConfirmUser;
+    /**纭鎰忚*/
+    @Excel(name = "浣跨敤杞﹂棿纭鎰忚", width = 15)
+    @ApiModelProperty(value = "浣跨敤杞﹂棿纭鎰忚")
+    private String useConfirmComment;
+    /**浣跨敤杞﹂棿纭鏃堕棿*/
+    @ApiModelProperty(value = "浣跨敤杞﹂棿纭鏃堕棿")
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date useConfirmTime;
+    /**鍊熺敤杞﹂棿纭浜�*/
+    @Excel(name = "鍊熺敤杞﹂棿纭浜�", width = 15)
+    @ApiModelProperty(value = "鍊熺敤杞﹂棿纭浜�")
+    @Dict(dicCode = "sys_user, realname, username")
+    private String leanOutConfirmUser;
+    /**鍊熺敤杞﹂棿纭鎰忚*/
+    @Excel(name = "鍊熺敤杞﹂棿纭鎰忚", width = 15)
+    @ApiModelProperty(value = "鍊熺敤杞﹂棿纭鎰忚")
+    private String leanOutConfirmComment;
+    /**鍊熺敤杞﹂棿纭鏃堕棿*/
+    @ApiModelProperty(value = "鍊熺敤杞﹂棿纭鏃堕棿")
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date leanOutConfirmTime;
+    /**澶囨敞*/
     @Excel(name = "澶囨敞", width = 15)
     @ApiModelProperty(value = "澶囨敞")
     private String remark;
-    /**
-     * 澶囨敞
-     */
+    /**澶囨敞*/
     @Excel(name = "褰掕繕澶囨敞", width = 15)
     @ApiModelProperty(value = "褰掕繕澶囨敞")
     private String returnComment;
diff --git a/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/entity/EamEquipmentTransfer.java b/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/entity/EamEquipmentTransfer.java
index 8fc1465..e41b24c 100644
--- a/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/entity/EamEquipmentTransfer.java
+++ b/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/entity/EamEquipmentTransfer.java
@@ -1,8 +1,6 @@
 package org.jeecg.modules.eam.entity;
 
-import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
@@ -10,6 +8,7 @@
 import lombok.EqualsAndHashCode;
 import lombok.experimental.Accessors;
 import org.jeecg.common.aspect.annotation.Dict;
+import org.jeecg.common.system.base.entity.JeecgEntity;
 import org.jeecgframework.poi.excel.annotation.Excel;
 
 import java.io.Serializable;
@@ -26,36 +25,10 @@
 @EqualsAndHashCode(callSuper = false)
 @Accessors(chain = true)
 @ApiModel(value = "eam_equipment_transfer瀵硅薄", description = "璁惧褰掑睘鍙樺姩")
-public class EamEquipmentTransfer implements Serializable {
+public class EamEquipmentTransfer extends JeecgEntity implements Serializable {
 
-    /**
-     * 涓婚敭
-     */
-    @TableId(type = IdType.ASSIGN_ID)
-    @ApiModelProperty(value = "涓婚敭")
-    private String id;
-    /**
-     * 鍒涘缓浜�
-     */
-    @Excel(name = "鍒涘缓浜�", width = 15)
-    @ApiModelProperty(value = "鍒涘缓浜�")
-    private String createBy;
-    /**
-     * 鍒涘缓鏃堕棿
-     */
-    @ApiModelProperty(value = "鍒涘缓鏃堕棿")
-    private Date createTime;
-    /**
-     * 鏇存柊浜�
-     */
-    @Excel(name = "鏇存柊浜�", width = 15)
-    @ApiModelProperty(value = "鏇存柊浜�")
-    private String updateBy;
-    /**
-     * 鏇存柊鏃堕棿
-     */
-    @ApiModelProperty(value = "鏇存柊鏃堕棿")
-    private Date updateTime;
+    private static final long serialVersionUID = -1869845900682810093L;
+
     /**
      * 鍒犻櫎鏍囪
      */
@@ -114,28 +87,94 @@
     @ApiModelProperty(value = "鍙樺姩鏃ユ湡")
     private Date transferTime;
     /**
-     * 瀹℃牳浜�
+     * 浣跨敤鍗曚綅棰嗗
      */
-    @Excel(name = "瀹℃牳浜�", width = 15)
-    @ApiModelProperty(value = "瀹℃牳浜�")
+    @Excel(name = "浣跨敤鍗曚綅棰嗗", width = 15)
+    @ApiModelProperty(value = "浣跨敤鍗曚綅棰嗗")
     @Dict(dicCode = "sys_user, realname, username")
-    private String approvalUser;
+    private String useLeader;
     /**
-     * 瀹℃牳绫诲瀷
+     * 浣跨敤鍗曚綅棰嗗瀹℃牳绫诲瀷
      */
-    @ApiModelProperty(value = "瀹℃牳绫诲瀷")
+    @ApiModelProperty(value = "浣跨敤鍗曚綅棰嗗瀹℃牳绫诲瀷")
     @Dict(dicCode = "approved_rejected")
-    private String approvalDealType;
+    private String useLeaderApprovalDealType;
     /**
-     * 瀹℃牳鎰忚
+     * 浣跨敤鍗曚綅棰嗗瀹℃牳鎰忚
      */
-    @ApiModelProperty(value = "瀹℃牳鎰忚")
-    private String approvalComment;
+    @ApiModelProperty(value = "浣跨敤鍗曚綅棰嗗瀹℃牳鎰忚")
+    private String useLeaderApprovalComment;
     /**
-     * 瀹℃牳鏃堕棿
+     * 浣跨敤鍗曚綅棰嗗瀹℃牳鏃堕棿
      */
-    @ApiModelProperty(value = "瀹℃牳鏃堕棿")
-    private Date approvalTime;
+    @ApiModelProperty(value = "浣跨敤鍗曚綅棰嗗瀹℃牳鏃堕棿")
+    private Date useLeaderApprovalTime;
+    /**
+     * 璋冨叆鍗曚綅棰嗗
+     */
+    @Excel(name = "璋冨叆鍗曚綅棰嗗", width = 15)
+    @ApiModelProperty(value = "璋冨叆鍗曚綅棰嗗")
+    @Dict(dicCode = "sys_user, realname, username")
+    private String transferLeader;
+    /**
+     * 璋冨叆鍗曚綅棰嗗瀹℃牳绫诲瀷
+     */
+    @ApiModelProperty(value = "璋冨叆鍗曚綅棰嗗瀹℃牳绫诲瀷")
+    @Dict(dicCode = "approved_rejected")
+    private String transferLeaderApprovalDealType;
+    /**
+     * 璋冨叆鍗曚綅棰嗗瀹℃牳鎰忚
+     */
+    @ApiModelProperty(value = "璋冨叆鍗曚綅棰嗗瀹℃牳鎰忚")
+    private String transferLeaderApprovalComment;
+    /**
+     * 璋冨叆鍗曚綅棰嗗瀹℃牳鏃堕棿
+     */
+    @ApiModelProperty(value = "璋冨叆鍗曚綅棰嗗瀹℃牳鏃堕棿")
+    private Date transferLeaderApprovalTime;
+    /**
+     * 鏈哄姩鍔炵‘璁や汉
+     */
+    @Excel(name = "鏈哄姩鍔炵‘璁や汉", width = 15)
+    @ApiModelProperty(value = "鏈哄姩鍔炵‘璁や汉")
+    @Dict(dicCode = "sys_user, realname, username")
+    private String externalConfirm;
+    /**
+     * 鏈哄姩鍔炵‘璁ゆ椂闂�
+     */
+    @ApiModelProperty(value = "鏈哄姩鍔炵‘璁ゆ椂闂�")
+    private Date externalConfirmTime;
+    /**
+     * 鏄惁闇�瑕佸叕鍙搁瀵煎鎵�
+     */
+    @Excel(name = "鏄惁闇�瑕佸叕鍙搁瀵煎鎵�", width = 15)
+    @ApiModelProperty(value = "鏄惁闇�瑕佸叕鍙搁瀵煎鎵�")
+    @Dict(dicCode = "yn")
+    private String companyLeaderCheck;
+
+    /**
+     * 鍏徃棰嗗
+     */
+    @Excel(name = "鍏徃棰嗗", width = 15)
+    @ApiModelProperty(value = "鍏徃棰嗗")
+    @Dict(dicCode = "sys_user, realname, username")
+    private String companyLeader;
+    /**
+     * 鍏徃棰嗗瀹℃牳绫诲瀷
+     */
+    @ApiModelProperty(value = "鍏徃棰嗗瀹℃牳绫诲瀷")
+    @Dict(dicCode = "approved_rejected")
+    private String companyLeaderApprovalDealType;
+    /**
+     * 鍏徃棰嗗瀹℃牳鎰忚
+     */
+    @ApiModelProperty(value = "鍏徃棰嗗瀹℃牳鎰忚")
+    private String companyLeaderApprovalComment;
+    /**
+     * 鍏徃棰嗗瀹℃牳鏃堕棿
+     */
+    @ApiModelProperty(value = "鍏徃棰嗗瀹℃牳鏃堕棿")
+    private Date companyLeaderApprovalTime;
     /**
      * 澶囨敞
      */
diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamEquipmentTransferController.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamEquipmentTransferController.java
index f45c9b8..bf2b2cd 100644
--- a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamEquipmentTransferController.java
+++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamEquipmentTransferController.java
@@ -123,9 +123,8 @@
     @DeleteMapping(value = "/delete")
     public Result<?> delete(@RequestParam(name = "id", required = true) String id) {
         EamEquipmentTransfer entity = eamEquipmentTransferService.getById(id);
-        if (entity != null) {
-            entity.setDelFlag(CommonConstant.DEL_FLAG_1);
-            eamEquipmentTransferService.updateById(entity);
+        if (entity != null && !EquipmentTransferStatusEnum.WAIT_SUBMIT.name().equals(entity.getTransferStatus())) {
+            eamEquipmentTransferService.removeById(entity);
         }
         return Result.OK("鍒犻櫎鎴愬姛!");
     }
@@ -140,13 +139,12 @@
     @ApiOperation(value = "璁惧褰掑睘鍙樺姩-鎵归噺鍒犻櫎", notes = "璁惧褰掑睘鍙樺姩-鎵归噺鍒犻櫎")
     @DeleteMapping(value = "/deleteBatch")
     public Result<?> deleteBatch(@RequestParam(name = "ids", required = true) String ids) {
-        this.eamEquipmentTransferService.removeByIds(Arrays.asList(ids.split(",")));
         List<String> list = Arrays.asList(ids.split(","));
         list.forEach(id -> {
             EamEquipmentTransfer entity = eamEquipmentTransferService.getById(id);
-            if (entity != null) {
+            if (entity != null && !EquipmentTransferStatusEnum.WAIT_SUBMIT.name().equals(entity.getTransferStatus())) {
                 entity.setDelFlag(CommonConstant.DEL_FLAG_1);
-                eamEquipmentTransferService.updateById(entity);
+                eamEquipmentTransferService.removeById(entity);
             }
         });
         return Result.OK("鎵归噺鍒犻櫎鎴愬姛锛�");
diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamSparePartRequisitionController.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamSparePartRequisitionController.java
index f50edfc..6ed9eb7 100644
--- a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamSparePartRequisitionController.java
+++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamSparePartRequisitionController.java
@@ -14,10 +14,8 @@
 import org.jeecg.common.system.vo.LoginUser;
 import org.jeecg.common.util.DateUtils;
 import org.jeecg.modules.eam.constant.BusinessCodeConst;
-import org.jeecg.modules.eam.entity.EamEquipmentLeanOut;
 import org.jeecg.modules.eam.entity.EamSparePartRequisition;
 import org.jeecg.modules.eam.entity.EamSparePartRequisitionDetail;
-import org.jeecg.modules.eam.request.EamEquipmentLeanOutRequest;
 import org.jeecg.modules.eam.request.EamSparePartRequisitionRequest;
 import org.jeecg.modules.eam.service.IEamSparePartRequisitionDetailService;
 import org.jeecg.modules.eam.service.IEamSparePartRequisitionService;
@@ -27,8 +25,6 @@
 import lombok.extern.slf4j.Slf4j;
 import org.jeecg.common.system.base.controller.JeecgController;
 
-import org.jeecg.modules.system.service.ISysBusinessCodeRuleService;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.servlet.ModelAndView;
 import io.swagger.annotations.Api;
diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/entity/EamEquipmentLeanOut.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/entity/EamEquipmentLeanOut.java
deleted file mode 100644
index b4202d8..0000000
--- a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/entity/EamEquipmentLeanOut.java
+++ /dev/null
@@ -1,132 +0,0 @@
-package org.jeecg.modules.eam.entity;
-
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableId;
-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.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;
-/**
- * @Description: 璁惧鍊熷嚭褰掕繕
- * @Author: jeecg-boot
- * @Date:   2025-05-13
- * @Version: V1.0
- */
-@Data
-@TableName("eam_equipment_lean_out")
-@EqualsAndHashCode(callSuper = false)
-@Accessors(chain = true)
-@ApiModel(value="eam_equipment_lean_out瀵硅薄", description="璁惧鍊熷嚭褰掕繕")
-public class EamEquipmentLeanOut implements Serializable {
-    
-	/**涓婚敭*/
-	@TableId(type = IdType.ASSIGN_ID)
-    @ApiModelProperty(value = "涓婚敭")
-	private String id;
-	/**鍒涘缓浜�*/
-    @ApiModelProperty(value = "鍒涘缓浜�")
-	private String createBy;
-	/**鍒涘缓鏃堕棿*/
-    @ApiModelProperty(value = "鍒涘缓鏃堕棿")
-	private Date createTime;
-	/**鏇存柊浜�*/
-    @ApiModelProperty(value = "鏇存柊浜�")
-	private String updateBy;
-	/**鏇存柊鏃堕棿*/
-    @ApiModelProperty(value = "鏇存柊鏃堕棿")
-	private Date updateTime;
-	/**鍒犻櫎鏍囪*/
-    @ApiModelProperty(value = "鍒犻櫎鏍囪")
-	private Integer delFlag;
-	/**璁惧ID*/
-    @ApiModelProperty(value = "璁惧ID")
-	private String equipmentId;
-	/**鍗曟嵁鍙�*/
-	@Excel(name = "鍗曟嵁鍙�", width = 15)
-    @ApiModelProperty(value = "鍗曟嵁鍙�")
-	private String code;
-	/**鍊熷叆閮ㄩ棬*/
-	@Excel(name = "鍊熷叆閮ㄩ棬", width = 15, dictTable = "mdc_production", dicText = "production_name", dicCode = "id")
-    @ApiModelProperty(value = "鍊熷叆閮ㄩ棬")
-	@Dict(dicCode = "mdc_production, production_name, id")
-	private String leanDepartId;
-	/**鍊熷叆璐d换浜�*/
-	@Excel(name = "鍊熷叆璐d换浜�", width = 15)
-    @ApiModelProperty(value = "鍊熷叆璐d换浜�")
-	@Dict(dicCode = "sys_user, realname, username")
-	private String leanPerson;
-	/**鍊熺敤鍘熷洜*/
-	@ApiModelProperty(value = "鍊熺敤鍘熷洜")
-	private String leanReason;
-	/**瀹℃壒绫诲瀷*/
-	@ApiModelProperty(value = "瀹℃壒绫诲瀷")
-	@Dict(dicCode = "approved_rejected")
-	private String approvalDealType;
-	/**鍊熷嚭鐘舵��*/
-	@Excel(name = "鍊熷嚭鐘舵��", width = 15)
-    @ApiModelProperty(value = "鍊熷嚭鐘舵��")
-	@Dict(dicCode = "equipment_lean_out_status")
-	private String leanStatus;
-	/**鍊熷嚭寮�濮嬫椂闂�*/
-    @ApiModelProperty(value = "鍊熷嚭鏃堕棿")
-	@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
-	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-	private Date leanStartTime;
-	/**鍊熷嚭褰掕繕鏃堕棿*/
-    @ApiModelProperty(value = "褰掕繕鏃堕棿")
-	@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
-	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-	private Date leanEndTime;
-	/**瀹℃牳浜�*/
-	@Excel(name = "瀹℃牳浜�", width = 15)
-    @ApiModelProperty(value = "瀹℃牳浜�")
-	@Dict(dicCode = "sys_user, realname, username")
-	private String approvalUser;
-	/**瀹℃牳鎰忚*/
-	@Excel(name = "瀹℃牳鎰忚", width = 15)
-	@ApiModelProperty(value = "瀹℃牳鎰忚")
-	private String approvalComment;
-	/**瀹℃牳鏃堕棿*/
-    @ApiModelProperty(value = "瀹℃牳鏃堕棿")
-	@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
-	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-	private Date approvalTime;
-	/**纭浜�*/
-	@Excel(name = "纭浜�", width = 15)
-	@ApiModelProperty(value = "纭浜�")
-	@Dict(dicCode = "sys_user, realname, username")
-	private String confirmUser;
-	/**纭鎰忚*/
-	@Excel(name = "纭鎰忚", width = 15)
-	@ApiModelProperty(value = "纭鎰忚")
-	private String confirmComment;
-	/**纭鏃堕棿*/
-	@ApiModelProperty(value = "纭鏃堕棿")
-	@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
-	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-	private Date confirmTime;
-	/**澶囨敞*/
-	@Excel(name = "澶囨敞", width = 15)
-    @ApiModelProperty(value = "澶囨敞")
-	private String remark;
-	/**澶囨敞*/
-	@Excel(name = "褰掕繕澶囨敞", width = 15)
-	@ApiModelProperty(value = "褰掕繕澶囨敞")
-	private String returnComment;
-
-	//鍒楄〃灞曠ず
-	@TableField(exist = false)
-	private String equipmentCode;
-	@TableField(exist = false)
-	private String equipmentName;
-}
diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/entity/EamEquipmentScrap.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/entity/EamEquipmentScrap.java
deleted file mode 100644
index 8d245d6..0000000
--- a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/entity/EamEquipmentScrap.java
+++ /dev/null
@@ -1,151 +0,0 @@
-package org.jeecg.modules.eam.entity;
-
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-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 java.io.Serializable;
-import java.util.Date;
-
-/**
- * @Description: 璁惧鎶ュ簾(杞)
- * @Author: jeecg-boot
- * @Date: 2025-05-15
- * @Version: V1.0
- */
-@Data
-@TableName("eam_equipment_scrap")
-@EqualsAndHashCode(callSuper = false)
-@Accessors(chain = true)
-@ApiModel(value = "eam_equipment_scrap瀵硅薄", description = "璁惧鎶ュ簾(杞)")
-public class EamEquipmentScrap implements Serializable {
-
-    /**
-     * 涓婚敭
-     */
-    @TableId(type = IdType.ASSIGN_ID)
-    @ApiModelProperty(value = "涓婚敭")
-    private String id;
-    /**
-     * 鍒涘缓浜�
-     */
-    @Excel(name = "鍒涘缓浜�", width = 15)
-    @ApiModelProperty(value = "鍒涘缓浜�")
-    private String createBy;
-    /**
-     * 鍒涘缓鏃堕棿
-     */
-    @ApiModelProperty(value = "鍒涘缓鏃堕棿")
-    private Date createTime;
-    /**
-     * 鏇存柊浜�
-     */
-    @Excel(name = "鏇存柊浜�", width = 15)
-    @ApiModelProperty(value = "鏇存柊浜�")
-    private String updateBy;
-    /**
-     * 鏇存柊鏃堕棿
-     */
-    @ApiModelProperty(value = "鏇存柊鏃堕棿")
-    private Date updateTime;
-    /**
-     * 鍒犻櫎鏍囪
-     */
-    @Excel(name = "鍒犻櫎鏍囪", width = 15)
-    @ApiModelProperty(value = "鍒犻櫎鏍囪")
-    private Integer delFlag;
-    /**
-     * 鍗曟嵁鍙�
-     */
-    @Excel(name = "鍗曟嵁鍙�", width = 15)
-    @ApiModelProperty(value = "鍗曟嵁鍙�")
-    private String code;
-    /**
-     * 璁惧ID
-     */
-    @Excel(name = "璁惧ID", width = 15)
-    @ApiModelProperty(value = "璁惧ID")
-    private String equipmentId;
-    /**
-     * 杞/鎶ュ簾
-     */
-    @Excel(name = "杞/鎶ュ簾", width = 15)
-    @ApiModelProperty(value = "杞/鎶ュ簾")
-    @Dict(dicCode = "scrap_sell")
-    private String scrapType;
-    /**
-     * 鐢宠浜�
-     */
-    @Excel(name = "鐢宠浜�", width = 15)
-    @ApiModelProperty(value = "鐢宠浜�")
-    @Dict(dicCode = "sys_user, realname, username")
-    private String reportUser;
-    /**
-     * 澶勭疆鏃堕棿
-     */
-    @ApiModelProperty(value = "澶勭疆鏃堕棿")
-    private Date scrapTime;
-    /**
-     * 澶勭疆鐞嗙敱
-     */
-    @Excel(name = "澶勭疆鐞嗙敱", width = 15)
-    @ApiModelProperty(value = "澶勭疆鐞嗙敱")
-    private String scrapReason;
-    /**
-     * 澶勭疆閲戦
-     */
-    @Excel(name = "澶勭疆閲戦", width = 15)
-    @ApiModelProperty(value = "澶勭疆閲戦")
-    private java.math.BigDecimal scrapAmount;
-    /**
-     * 鎶ュ簾鐘舵��
-     */
-    @Excel(name = "鎶ュ簾鐘舵��", width = 15)
-    @ApiModelProperty(value = "鎶ュ簾鐘舵��")
-    @Dict(dicCode = "equipment_scrap_status")
-    private String scrapStatus;
-    /**
-     * 瀹℃牳浜�
-     */
-    @Excel(name = "瀹℃牳浜�", width = 15)
-    @ApiModelProperty(value = "瀹℃牳浜�")
-    @Dict(dicCode = "sys_user, realname, username")
-    private String approvalUser;
-    /**
-     * 瀹℃牳绫诲瀷
-     */
-    @Excel(name = "瀹℃牳绫诲瀷", width = 15)
-    @ApiModelProperty(value = "瀹℃牳绫诲瀷")
-    private String approvalDealType;
-    /**
-     * 瀹℃牳鎰忚
-     */
-    @Excel(name = "瀹℃牳鎰忚", width = 15)
-    @ApiModelProperty(value = "瀹℃牳鎰忚")
-    private String approvalComment;
-    /**
-     * 瀹℃牳鏃堕棿
-     */
-    @ApiModelProperty(value = "瀹℃牳鏃堕棿")
-    private Date approvalTime;
-    /**
-     * 澶囨敞
-     */
-    @Excel(name = "澶囨敞", width = 15)
-    @ApiModelProperty(value = "澶囨敞")
-    private String remark;
-
-    //鍒楄〃灞曠ず
-    @TableField(exist = false)
-    private String equipmentCode;
-    @TableField(exist = false)
-    private String equipmentName;
-}
diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/entity/EamEquipmentSealUp.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/entity/EamEquipmentSealUp.java
deleted file mode 100644
index 9f91cce..0000000
--- a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/entity/EamEquipmentSealUp.java
+++ /dev/null
@@ -1,188 +0,0 @@
-package org.jeecg.modules.eam.entity;
-
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableId;
-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.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;
-
-/**
- * @Description: 璁惧灏佸瓨鍚皝
- * @Author: jeecg-boot
- * @Date: 2025-05-13
- * @Version: V1.0
- */
-@Data
-@TableName("eam_equipment_seal_up")
-@EqualsAndHashCode(callSuper = false)
-@Accessors(chain = true)
-@ApiModel(value = "eam_equipment_seal_up瀵硅薄", description = "璁惧灏佸瓨鍚皝")
-public class EamEquipmentSealUp implements Serializable {
-
-    /**
-     * 涓婚敭
-     */
-    @TableId(type = IdType.ASSIGN_ID)
-    @ApiModelProperty(value = "涓婚敭")
-    private String id;
-    /**
-     * 鍒涘缓浜�
-     */
-    @Excel(name = "鍒涘缓浜�", width = 15)
-    @ApiModelProperty(value = "鍒涘缓浜�")
-    private String createBy;
-    /**
-     * 鍒涘缓鏃堕棿
-     */
-    @ApiModelProperty(value = "鍒涘缓鏃堕棿")
-    private Date createTime;
-    /**
-     * 鏇存柊浜�
-     */
-    @Excel(name = "鏇存柊浜�", width = 15)
-    @ApiModelProperty(value = "鏇存柊浜�")
-    private String updateBy;
-    /**
-     * 鏇存柊鏃堕棿
-     */
-    @ApiModelProperty(value = "鏇存柊鏃堕棿")
-    private Date updateTime;
-    /**
-     * 鍒犻櫎鏍囪
-     */
-    @Excel(name = "鍒犻櫎鏍囪", width = 15)
-    @ApiModelProperty(value = "鍒犻櫎鏍囪")
-    private Integer delFlag;
-    /**
-     * 璁惧ID
-     */
-    @Excel(name = "璁惧ID", width = 15)
-    @ApiModelProperty(value = "璁惧ID")
-    private String equipmentId;
-    /**
-     * 鍗曟嵁鍙�
-     */
-    @Excel(name = "鍗曟嵁鍙�", width = 15)
-    @ApiModelProperty(value = "鍗曟嵁鍙�")
-    private String code;
-    /**
-     * 鐢宠浜�
-     */
-    @Excel(name = "鐢宠浜�", width = 15)
-    @ApiModelProperty(value = "鐢宠浜�")
-    @Dict(dicCode = "sys_user, realname, username")
-    private String reportUser;
-    /**
-     * 灏佸瓨寮�濮嬫椂闂�
-     */
-    @ApiModelProperty(value = "灏佸瓨寮�濮嬫椂闂�")
-    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
-    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-    private Date sealStartTime;
-    /**
-     * 灏佸瓨缁撴潫鏃堕棿
-     */
-    @ApiModelProperty(value = "灏佸瓨缁撴潫鏃堕棿")
-    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
-    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-    private Date sealEndTime;
-    /**
-     * 灏佸瓨鍘熷洜
-     */
-    @Excel(name = "灏佸瓨鍘熷洜", width = 15)
-    @ApiModelProperty(value = "灏佸瓨鍘熷洜")
-    private String sealUpReason;
-    /**
-     * 灏佸瓨鐘舵��
-     */
-    @Excel(name = "灏佸瓨鐘舵��", width = 15)
-    @ApiModelProperty(value = "灏佸瓨鐘舵��")
-    @Dict(dicCode = "equipment_seal_up_status")
-    private String sealStatus;
-    /**
-     * 瀹℃牳浜�
-     */
-    @Excel(name = "瀹℃牳浜�", width = 15)
-    @ApiModelProperty(value = "瀹℃牳浜�")
-    private String approvalUser;
-    /**
-     * 瀹℃牳鏃堕棿
-     */
-    @ApiModelProperty(value = "瀹℃牳鏃堕棿")
-    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
-    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-    private Date approvalTime;
-    /**
-     * 澶囨敞
-     */
-    @Excel(name = "澶囨敞", width = 15)
-    @ApiModelProperty(value = "澶囨敞")
-    private String remark;
-    /**
-     * 瀹℃牳绫诲瀷
-     */
-    @Excel(name = "瀹℃牳绫诲瀷", width = 15)
-    @ApiModelProperty(value = "瀹℃牳绫诲瀷")
-    private String approvalDealType;
-    /**
-     * 瀹℃牳鎰忚
-     */
-    @Excel(name = "瀹℃牳鎰忚", width = 15)
-    @ApiModelProperty(value = "瀹℃牳鎰忚")
-    private String approvalComment;
-    /**
-     * 鍚皝鐢宠浜�
-     */
-    @Excel(name = "鍚皝鐢宠浜�", width = 15)
-    @ApiModelProperty(value = "鍚皝鐢宠浜�")
-    private String unsealReportUser;
-    /**
-     * 鍚皝鍘熷洜
-     */
-    @Excel(name = "鍚皝鍘熷洜", width = 15)
-    @ApiModelProperty(value = "鍚皝鍘熷洜")
-    private String unsealReason;
-    /**
-     * 鍚皝瀹℃牳浜�
-     */
-    @Excel(name = "鍚皝瀹℃牳浜�", width = 15)
-    @ApiModelProperty(value = "鍚皝瀹℃牳浜�")
-    private String unsealApprovalUser;
-    /**
-     * 鍚皝瀹℃牳鏃堕棿
-     */
-    @Excel(name = "鍚皝瀹℃牳鏃堕棿", width = 15)
-    @ApiModelProperty(value = "鍚皝瀹℃牳鏃堕棿")
-    private Date unsealApprovalTime;
-    /**
-     * 鍚皝瀹℃牳绫诲瀷
-     */
-    @Excel(name = "鍚皝瀹℃牳绫诲瀷", width = 15)
-    @ApiModelProperty(value = "鍚皝瀹℃牳绫诲瀷")
-    private String unsealApprovalDealType;
-    /**
-     * 鍚皝瀹℃牳鎰忚
-     */
-    @Excel(name = "鍚皝瀹℃牳鎰忚", width = 15)
-    @ApiModelProperty(value = "鍚皝瀹℃牳鎰忚")
-    private String unsealApprovalComment;
-
-
-    //鍒楄〃灞曠ず
-    @TableField(exist = false)
-    private String equipmentCode;
-    @TableField(exist = false)
-    private String equipmentName;
-
-}
diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/entity/EamEquipmentTransfer.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/entity/EamEquipmentTransfer.java
deleted file mode 100644
index 8fc1465..0000000
--- a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/entity/EamEquipmentTransfer.java
+++ /dev/null
@@ -1,152 +0,0 @@
-package org.jeecg.modules.eam.entity;
-
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-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 java.io.Serializable;
-import java.util.Date;
-
-/**
- * @Description: 璁惧褰掑睘鍙樺姩
- * @Author: jeecg-boot
- * @Date: 2025-05-13
- * @Version: V1.0
- */
-@Data
-@TableName("eam_equipment_transfer")
-@EqualsAndHashCode(callSuper = false)
-@Accessors(chain = true)
-@ApiModel(value = "eam_equipment_transfer瀵硅薄", description = "璁惧褰掑睘鍙樺姩")
-public class EamEquipmentTransfer implements Serializable {
-
-    /**
-     * 涓婚敭
-     */
-    @TableId(type = IdType.ASSIGN_ID)
-    @ApiModelProperty(value = "涓婚敭")
-    private String id;
-    /**
-     * 鍒涘缓浜�
-     */
-    @Excel(name = "鍒涘缓浜�", width = 15)
-    @ApiModelProperty(value = "鍒涘缓浜�")
-    private String createBy;
-    /**
-     * 鍒涘缓鏃堕棿
-     */
-    @ApiModelProperty(value = "鍒涘缓鏃堕棿")
-    private Date createTime;
-    /**
-     * 鏇存柊浜�
-     */
-    @Excel(name = "鏇存柊浜�", width = 15)
-    @ApiModelProperty(value = "鏇存柊浜�")
-    private String updateBy;
-    /**
-     * 鏇存柊鏃堕棿
-     */
-    @ApiModelProperty(value = "鏇存柊鏃堕棿")
-    private Date updateTime;
-    /**
-     * 鍒犻櫎鏍囪
-     */
-    @Excel(name = "鍒犻櫎鏍囪", width = 15)
-    @ApiModelProperty(value = "鍒犻櫎鏍囪")
-    private Integer delFlag;
-    /**
-     * 鍗曟嵁鍙�
-     */
-    @Excel(name = "鍗曟嵁鍙�", width = 15)
-    @ApiModelProperty(value = "鍗曟嵁鍙�")
-    private String code;
-    /**
-     * 璁惧ID
-     */
-    @Excel(name = "璁惧ID", width = 15)
-    @ApiModelProperty(value = "璁惧ID")
-    private String equipmentId;
-    /**
-     * 璋冨嚭閮ㄩ棬
-     */
-    @Excel(name = "璋冨嚭閮ㄩ棬", width = 15)
-    @ApiModelProperty(value = "璋冨嚭閮ㄩ棬")
-    @Dict(dicCode = "mdc_production, production_name, id")
-    private String oldDepartId;
-    /**
-     * 璋冨叆閮ㄩ棬
-     */
-    @Excel(name = "璋冨叆閮ㄩ棬", width = 15)
-    @ApiModelProperty(value = "璋冨叆閮ㄩ棬")
-    @Dict(dicCode = "mdc_production, production_name, id")
-    private String newDepartId;
-    /**
-     * 鐢宠浜�
-     */
-    @Excel(name = "鐢宠浜�", width = 15)
-    @ApiModelProperty(value = "鐢宠浜�")
-    @Dict(dicCode = "sys_user, realname, username")
-    private String reportUser;
-    /**
-     * 鍙樺姩鍘熷洜
-     */
-    @Excel(name = "鍙樺姩鍘熷洜", width = 15)
-    @ApiModelProperty(value = "鍙樺姩鍘熷洜")
-    private String transferReason;
-    /**
-     * 鍙樺姩鐘舵��
-     */
-    @Excel(name = "鍙樺姩鐘舵��", width = 15)
-    @ApiModelProperty(value = "鍙樺姩鐘舵��")
-    @Dict(dicCode = "equipment_transfer_status")
-    private String transferStatus;
-    /**
-     * 鍙樺姩鏃ユ湡
-     */
-    @ApiModelProperty(value = "鍙樺姩鏃ユ湡")
-    private Date transferTime;
-    /**
-     * 瀹℃牳浜�
-     */
-    @Excel(name = "瀹℃牳浜�", width = 15)
-    @ApiModelProperty(value = "瀹℃牳浜�")
-    @Dict(dicCode = "sys_user, realname, username")
-    private String approvalUser;
-    /**
-     * 瀹℃牳绫诲瀷
-     */
-    @ApiModelProperty(value = "瀹℃牳绫诲瀷")
-    @Dict(dicCode = "approved_rejected")
-    private String approvalDealType;
-    /**
-     * 瀹℃牳鎰忚
-     */
-    @ApiModelProperty(value = "瀹℃牳鎰忚")
-    private String approvalComment;
-    /**
-     * 瀹℃牳鏃堕棿
-     */
-    @ApiModelProperty(value = "瀹℃牳鏃堕棿")
-    private Date approvalTime;
-    /**
-     * 澶囨敞
-     */
-    @Excel(name = "澶囨敞", width = 15)
-    @ApiModelProperty(value = "澶囨敞")
-    private String remark;
-
-    //鍒楄〃灞曠ず
-    @TableField(exist = false)
-    private String equipmentCode;
-    @TableField(exist = false)
-    private String equipmentName;
-
-}
diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/EamEquipmentSealUpMapper.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/EamEquipmentSealUpMapper.java
index 284dce0..0684dfe 100644
--- a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/EamEquipmentSealUpMapper.java
+++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/EamEquipmentSealUpMapper.java
@@ -1,15 +1,12 @@
 package org.jeecg.modules.eam.mapper;
 
-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 com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import org.apache.ibatis.annotations.Param;
-import org.jeecg.modules.eam.entity.EamEquipmentLeanOut;
-import org.jeecg.modules.eam.entity.EamEquipmentSealUp;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.jeecg.modules.eam.entity.EamEquipmentSealUp;
 
 /**
  * @Description: 璁惧灏佸瓨鍚皝
diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/request/EamEquipmentLeanOutRequest.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/request/EamEquipmentLeanOutRequest.java
index d928cd7..06f4dd7 100644
--- a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/request/EamEquipmentLeanOutRequest.java
+++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/request/EamEquipmentLeanOutRequest.java
@@ -43,6 +43,8 @@
      * 鍒涘缓鏃堕棿
      */
     @ApiModelProperty(value = "鍒涘缓鏃堕棿")
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Date createTime;
     /**
      * 鏇存柊浜�
@@ -53,6 +55,8 @@
      * 鏇存柊鏃堕棿
      */
     @ApiModelProperty(value = "鏇存柊鏃堕棿")
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Date updateTime;
     /**
      * 鍒犻櫎鏍囪
@@ -67,22 +71,17 @@
     /**
      * 鍗曟嵁鍙�
      */
-    @Excel(name = "鍗曟嵁鍙�", width = 15)
     @ApiModelProperty(value = "鍗曟嵁鍙�")
     private String code;
     /**
      * 鍊熷叆閮ㄩ棬
      */
-    @Excel(name = "鍊熷叆閮ㄩ棬", width = 15, dictTable = "mdc_production", dicText = "production_name", dicCode = "id")
     @ApiModelProperty(value = "鍊熷叆閮ㄩ棬")
-    @Dict(dicCode = "mdc_production, production_name, id")
     private String leanDepartId;
     /**
      * 鍊熷叆璐d换浜�
      */
-    @Excel(name = "鍊熷叆璐d换浜�", width = 15)
     @ApiModelProperty(value = "鍊熷叆璐d换浜�")
-    @Dict(dicCode = "sys_user, realname, username")
     private String leanPerson;
     /**
      * 鍊熺敤鍘熷洜
@@ -90,17 +89,9 @@
     @ApiModelProperty(value = "鍊熺敤鍘熷洜")
     private String leanReason;
     /**
-     * 瀹℃壒绫诲瀷
-     */
-    @ApiModelProperty(value = "瀹℃壒绫诲瀷")
-    @Dict(dicCode = "approved_rejected")
-    private String approvalDealType;
-    /**
      * 鍊熷嚭鐘舵��
      */
-    @Excel(name = "鍊熷嚭鐘舵��", width = 15)
     @ApiModelProperty(value = "鍊熷嚭鐘舵��")
-    @Dict(dicCode = "equipment_lean_out_status")
     private String leanStatus;
     /**
      * 鍊熷嚭寮�濮嬫椂闂�
@@ -117,55 +108,93 @@
     @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Date leanEndTime;
     /**
-     * 瀹℃牳浜�
+     * 浣跨敤杞﹂棿瀹℃牳浜�
      */
-    @Excel(name = "瀹℃牳浜�", width = 15)
-    @ApiModelProperty(value = "瀹℃牳浜�")
-    @Dict(dicCode = "sys_user, realname, username")
-    private String approvalUser;
+    @ApiModelProperty(value = "浣跨敤杞﹂棿瀹℃牳浜�")
+    private String useApprovalUser;
     /**
-     * 瀹℃牳鎰忚
+     * 浣跨敤杞﹂棿瀹℃壒绫诲瀷
      */
-    @Excel(name = "瀹℃牳鎰忚", width = 15)
-    @ApiModelProperty(value = "瀹℃牳鎰忚")
-    private String approvalComment;
+    @ApiModelProperty(value = "浣跨敤杞﹂棿瀹℃壒绫诲瀷")
+    private String useApprovalDealType;
     /**
-     * 瀹℃牳鏃堕棿
+     * 浣跨敤杞﹂棿瀹℃牳鎰忚
      */
-    @ApiModelProperty(value = "瀹℃牳鏃堕棿")
+    @ApiModelProperty(value = "浣跨敤杞﹂棿瀹℃牳鎰忚")
+    private String useApprovalComment;
+    /**
+     * 浣跨敤杞﹂棿瀹℃牳鏃堕棿
+     */
+    @ApiModelProperty(value = "浣跨敤杞﹂棿瀹℃牳鏃堕棿")
     @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
     @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-    private Date approvalTime;
+    private Date useApprovalTime;
+
     /**
-     * 纭浜�
+     * 鍊熺敤杞﹂棿瀹℃牳浜�
      */
-    @Excel(name = "纭浜�", width = 15)
-    @ApiModelProperty(value = "纭浜�")
-    @Dict(dicCode = "sys_user, realname, username")
-    private String confirmUser;
+    @ApiModelProperty(value = "鍊熺敤杞﹂棿瀹℃牳浜�")
+    private String leanOutApprovalUser;
+    /**
+     * 鍊熺敤杞﹂棿瀹℃壒绫诲瀷
+     */
+    @ApiModelProperty(value = "鍊熺敤杞﹂棿瀹℃壒绫诲瀷")
+    private String leanOutApprovalDealType;
+    /**
+     * 鍊熺敤杞﹂棿瀹℃牳鎰忚
+     */
+    @ApiModelProperty(value = "浣跨敤杞﹂棿瀹℃牳鎰忚")
+    private String leanOutApprovalComment;
+    /**
+     * 鍊熺敤杞﹂棿瀹℃牳鏃堕棿
+     */
+    @ApiModelProperty(value = "鍊熺敤杞﹂棿瀹℃牳鏃堕棿")
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date leanOutApprovalTime;
+
+    /**
+     * 浣跨敤杞﹂棿纭浜�
+     */
+    @ApiModelProperty(value = "浣跨敤杞﹂棿纭浜�")
+    private String useConfirmUser;
     /**
      * 纭鎰忚
      */
-    @Excel(name = "纭鎰忚", width = 15)
-    @ApiModelProperty(value = "纭鎰忚")
-    private String confirmComment;
+    @ApiModelProperty(value = "浣跨敤杞﹂棿纭鎰忚")
+    private String useConfirmComment;
     /**
-     * 纭鏃堕棿
+     * 浣跨敤杞﹂棿纭鏃堕棿
      */
-    @ApiModelProperty(value = "纭鏃堕棿")
+    @ApiModelProperty(value = "浣跨敤杞﹂棿纭鏃堕棿")
     @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
     @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-    private Date confirmTime;
+    private Date useConfirmTime;
+    /**
+     * 鍊熺敤杞﹂棿纭浜�
+     */
+    @ApiModelProperty(value = "鍊熺敤杞﹂棿纭浜�")
+    private String leanOutConfirmUser;
+    /**
+     * 鍊熺敤杞﹂棿纭鎰忚
+     */
+    @ApiModelProperty(value = "鍊熺敤杞﹂棿纭鎰忚")
+    private String leanOutConfirmComment;
+    /**
+     * 鍊熺敤杞﹂棿纭鏃堕棿
+     */
+    @ApiModelProperty(value = "鍊熺敤杞﹂棿纭鏃堕棿")
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date leanOutConfirmTime;
     /**
      * 澶囨敞
      */
-    @Excel(name = "澶囨敞", width = 15)
     @ApiModelProperty(value = "澶囨敞")
     private String remark;
     /**
      * 澶囨敞
      */
-    @Excel(name = "褰掕繕澶囨敞", width = 15)
     @ApiModelProperty(value = "褰掕繕澶囨敞")
     private String returnComment;
 
diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/request/EamEquipmentTransferRequest.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/request/EamEquipmentTransferRequest.java
index 612227e..3a492b5 100644
--- a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/request/EamEquipmentTransferRequest.java
+++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/request/EamEquipmentTransferRequest.java
@@ -6,7 +6,6 @@
 import lombok.EqualsAndHashCode;
 import lombok.experimental.Accessors;
 import org.jeecg.modules.flowable.domain.vo.FlowTaskVo;
-import org.jeecgframework.poi.excel.annotation.Excel;
 
 import java.io.Serializable;
 import java.util.Date;
@@ -91,27 +90,40 @@
     @ApiModelProperty(value = "鍙樺姩鏃ユ湡")
     private Date transferTime;
     /**
-     * 瀹℃牳浜�
+     * 浣跨敤鍗曚綅棰嗗瀹℃牳绫诲瀷
      */
-    @Excel(name = "瀹℃牳浜�", width = 15)
-    @ApiModelProperty(value = "瀹℃牳浜�")
-    private String approvalUser;
+    @ApiModelProperty(value = "浣跨敤鍗曚綅棰嗗瀹℃牳绫诲瀷")
+    private String useLeaderApprovalDealType;
     /**
-     * 瀹℃牳鏃堕棿
+     * 浣跨敤鍗曚綅棰嗗瀹℃牳鎰忚
      */
-    @ApiModelProperty(value = "瀹℃牳鏃堕棿")
-    private Date approvalTime;
+    @ApiModelProperty(value = "浣跨敤鍗曚綅棰嗗瀹℃牳鎰忚")
+    private String useLeaderApprovalComment;
     /**
-     * 瀹℃牳绫诲瀷
+     * 璋冨叆鍗曚綅棰嗗瀹℃牳绫诲瀷
      */
-    @Excel(name = "瀹℃牳绫诲瀷", width = 15)
-    @ApiModelProperty(value = "瀹℃牳绫诲瀷")
-    private String approvalDealType;
+    @ApiModelProperty(value = "璋冨叆鍗曚綅棰嗗瀹℃牳绫诲瀷")
+    private String transferLeaderApprovalDealType;
     /**
-     * 瀹℃牳鎰忚
+     * 璋冨叆鍗曚綅棰嗗瀹℃牳鎰忚
      */
-    @ApiModelProperty(value = "瀹℃牳鎰忚")
-    private String approvalComment;
+    @ApiModelProperty(value = "璋冨叆鍗曚綅棰嗗瀹℃牳鎰忚")
+    private String transferLeaderApprovalComment;
+    /**
+     * 鏄惁闇�瑕佸叕鍙搁瀵煎鎵�
+     */
+    @ApiModelProperty(value = "鏄惁闇�瑕佸叕鍙搁瀵煎鎵�")
+    private String companyLeaderCheck;
+    /**
+     * 鍏徃棰嗗瀹℃牳绫诲瀷
+     */
+    @ApiModelProperty(value = "鍏徃棰嗗瀹℃牳绫诲瀷")
+    private String companyLeaderApprovalDealType;
+    /**
+     * 鍏徃棰嗗瀹℃牳鎰忚
+     */
+    @ApiModelProperty(value = "鍏徃棰嗗瀹℃牳鎰忚")
+    private String companyLeaderApprovalComment;
     /**
      * 澶囨敞
      */
diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/IEamEquipmentLeanOutService.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/IEamEquipmentLeanOutService.java
index 536bb59..145568c 100644
--- a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/IEamEquipmentLeanOutService.java
+++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/IEamEquipmentLeanOutService.java
@@ -2,8 +2,8 @@
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import org.jeecg.modules.eam.entity.EamEquipmentLeanOut;
 import com.baomidou.mybatisplus.extension.service.IService;
+import org.jeecg.modules.eam.entity.EamEquipmentLeanOut;
 import org.jeecg.modules.eam.request.EamEquipmentLeanOutQuery;
 import org.jeecg.modules.eam.request.EamEquipmentLeanOutRequest;
 
diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/IEamSparePartRequisitionService.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/IEamSparePartRequisitionService.java
index 1b6871f..8e28ab1 100644
--- a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/IEamSparePartRequisitionService.java
+++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/IEamSparePartRequisitionService.java
@@ -1,9 +1,7 @@
 package org.jeecg.modules.eam.service;
 
-import org.jeecg.modules.eam.entity.EamEquipmentLeanOut;
 import org.jeecg.modules.eam.entity.EamSparePartRequisition;
 import com.baomidou.mybatisplus.extension.service.IService;
-import org.jeecg.modules.eam.request.EamEquipmentLeanOutRequest;
 import org.jeecg.modules.eam.request.EamSparePartRequisitionRequest;
 
 import java.util.List;
diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamEquipmentLeanOutServiceImpl.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamEquipmentLeanOutServiceImpl.java
index 96b741d..cf33510 100644
--- a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamEquipmentLeanOutServiceImpl.java
+++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamEquipmentLeanOutServiceImpl.java
@@ -22,7 +22,6 @@
 import org.jeecg.modules.eam.constant.*;
 import org.jeecg.modules.eam.entity.EamEquipment;
 import org.jeecg.modules.eam.entity.EamEquipmentLeanOut;
-import org.jeecg.modules.eam.entity.EamEquipmentSealUp;
 import org.jeecg.modules.eam.mapper.EamEquipmentLeanOutMapper;
 import org.jeecg.modules.eam.request.EamEquipmentLeanOutQuery;
 import org.jeecg.modules.eam.request.EamEquipmentLeanOutRequest;
@@ -210,7 +209,7 @@
             throw new JeecgBootException("褰撳墠鐢ㄦ埛鏃犳硶缂栬緫鍊熺敤璁板綍锛�");
         }
         UpdateWrapper<EamEquipmentLeanOut> updateWrapper = new UpdateWrapper<>();
-        updateWrapper.set("lean_status", EquipmentLeanOutStatusEnum.WAIT_APPROVAL.name());
+        updateWrapper.set("lean_status", EquipmentLeanOutStatusEnum.WAIT_APPROVAL_OUT.name());
         updateWrapper.eq("id", id);
         updateWrapper.eq("lean_person", sysUser.getUsername());
         boolean success = super.update(updateWrapper);
@@ -237,7 +236,7 @@
         Result result = flowDefinitionService.startProcessInstanceByKey("equipment_lean_out", variables);
         if (result != null) {
             entity.setLeanStartTime(new Date());
-            entity.setLeanStatus(EquipmentLeanOutStatusEnum.WAIT_APPROVAL.name());
+            entity.setLeanStatus(EquipmentLeanOutStatusEnum.WAIT_APPROVAL_OUT.name());
             //淇濆瓨宸ュ崟
             equipmentLeanOutMapper.updateById(entity);
             return result.isSuccess();
@@ -282,7 +281,7 @@
         Result result = flowDefinitionService.startProcessInstanceByKey("equipment_return", variables);
         if (result != null) {
             entity.setLeanEndTime(new Date());
-            entity.setLeanStatus(EquipmentLeanOutStatusEnum.WAIT_CONFIRM.name());
+            entity.setLeanStatus(EquipmentLeanOutStatusEnum.WAIT_CONFIRM_RETURN.name());
             //淇濆瓨宸ュ崟
             equipmentLeanOutMapper.updateById(entity);
             return result.isSuccess();
@@ -303,7 +302,7 @@
         if (user == null || StrUtil.isBlank(user.getId())) {
             throw new JeecgBootException("鏈幏鍙栧埌鐧诲綍鐢ㄦ埛锛岃閲嶆柊鐧诲綍鍚庡啀璇曪紒");
         }
-        request.setApprovalUser(user.getUsername());
+//        request.setApprovalUser(user.getUsername());
         // 鑾峰彇娴佺▼涓氬姟璁板綍
         FlowMyBusiness flowMyBusiness = flowMyBusinessService.getFlowMyBusiness(request.getInstanceId());
         if (flowMyBusiness == null) {
@@ -324,89 +323,146 @@
             throw new JeecgBootException("璁惧涓嶅瓨鍦紝璇锋鏌ワ紒");
         }
 
-        EquipmentLeanOutStatusEnum status = EquipmentLeanOutStatusEnum.getInstance(entity.getLeanStatus());
-        if (status == null) {
-            return null;
-        }
-        //娴佺▼鍙橀噺
-        Map<String, Object> values = new HashMap<>();
-        switch (status) {
-            // 瀹℃壒
-            case WAIT_APPROVAL:
-                //鎵ц瀹屾垚
-                values.put("dataId", entity.getId());
-                values.put("organization", request.getApprovalComment());
-                values.put("comment", request.getApprovalComment());
-                values.put("approvalDealType", request.getApprovalDealType());
-                request.setComment(request.getApprovalComment());
-                entity.setApprovalUser(user.getUsername());// 瀹℃牳浜�
-                entity.setApprovalComment(request.getApprovalComment());// 瀹℃牳鎰忚
-                entity.setApprovalTime(new Date());// 瀹℃牳鏃堕棿
-                entity.setApprovalDealType(request.getApprovalDealType()); // 瀹℃壒绫诲瀷
-                // 楠岃瘉閫氳繃杩樻槸椹冲洖
-                if (request.getApprovalDealType().equals("1")) {
-                    //璁剧疆entity
-                    entity.setLeanStatus(EquipmentLeanOutStatusEnum.WAIT_RETURN.name());
-                    List<String> userApprovalList = new ArrayList<>(Collections.singletonList(entity.getLeanPerson()));
-                    values.put("NextAssignee", userApprovalList);
-                } else {
-                    //璁剧疆entity
-                    entity.setLeanStatus(EquipmentLeanOutStatusEnum.COMPLETE.name());
-                    // 淇敼璁惧鐘舵��
-                    equipment.setAssetStatus(AssetStatusEnum.NORMAL.name());
-                    eamEquipmentService.updateById(equipment);
-                }
-                break;
-            // 褰掕繕
-            case WAIT_RETURN:
-                if (StringUtils.isBlank(equipment.getEquipmentManager())) {
-                    throw new JeecgBootException("璁惧鏈垎閰嶈澶囩鐞嗗憳锛屾棤娉曡繘鍏ヤ笅绾у鎵癸紒");
-                }
-                List<String> userApprovalList = new ArrayList<>(Collections.singletonList(entity.getLeanPerson()));
-                userApprovalList.add(equipment.getEquipmentManager());
-                values.put("dataId", entity.getId());
-                values.put("organization", request.getReturnComment());
-                values.put("comment", request.getReturnComment());
-                values.put("NextAssignee", userApprovalList);
-                values.put("approvalDealType", "1");
-                request.setComment(request.getReturnComment());
-                entity.setLeanEndTime(new Date()); //褰掕繕鏃堕棿
-                //璁剧疆entity
-                entity.setLeanStatus(EquipmentLeanOutStatusEnum.WAIT_CONFIRM.name());
-                entity.setApprovalUser(user.getUsername());// 瀹℃牳浜�
-                entity.setLeanEndTime(new Date());// 褰掕繕鏃堕棿
-                entity.setReturnComment(request.getReturnComment());// 褰掕繕澶囨敞
-                break;
-            // 褰掕繕纭
-            case WAIT_CONFIRM:
-                values.put("approvalDealType", "1");
-                values.put("dataId", entity.getId());
-                values.put("organization", request.getConfirmComment());
-                values.put("comment", request.getConfirmComment());
-                request.setComment(request.getConfirmComment());
-                //璁剧疆entity
-                entity.setApprovalUser(user.getUsername());// 瀹℃牳浜�
-                entity.setLeanStatus(EquipmentLeanOutStatusEnum.COMPLETE.name());
-                entity.setConfirmUser(user.getUsername());
-                entity.setConfirmComment(request.getConfirmComment());
-                entity.setConfirmTime(new Date());
-                // 淇敼璁惧鐘舵��0
-                equipment.setAssetStatus(AssetStatusEnum.NORMAL.name());
-                eamEquipmentService.updateById(equipment);
-                break;
-        }
-        request.setValues(values);
+        //璁剧疆娴佺▼鍙橀噺
+        setupProcessVariables(request, entity, user, equipment);
 
         // 瀹屾垚娴佺▼浠诲姟
         Result result = flowTaskService.complete(request);
         if (!result.isSuccess()) {
             throw new JeecgBootException("瀹℃壒澶辫触锛岃鍒锋柊鏌ョ湅锛�");
         }
+
+        // 鏍规嵁浠诲姟瀹屾垚缁撴灉鏇存柊宸ュ崟鐘舵��
+        updateOrderStatus(result, request, entity, user, equipment);
+
         //淇濆瓨宸ュ崟
         equipmentLeanOutMapper.updateById(entity);
         return entity;
     }
 
+    /**
+     * 鏇存柊宸ュ崟鐘舵��
+     * @param result
+     * @param request
+     * @param entity
+     * @param user
+     * @param equipment
+     */
+    private void updateOrderStatus(Result result, EamEquipmentLeanOutRequest request, EamEquipmentLeanOut entity, LoginUser user, EamEquipment equipment) {
+        if (result.isSuccess()) {
+            EquipmentLeanOutStatusEnum status = EquipmentLeanOutStatusEnum.getInstance(entity.getLeanStatus());
+            switch (status) {
+                case WAIT_APPROVAL_OUT:
+                    entity.setUseApprovalUser(user.getUsername());
+                    entity.setUseApprovalComment(request.getUseApprovalComment());
+                    entity.setUseApprovalTime(new Date());
+                    entity.setUseApprovalDealType(request.getUseApprovalDealType());
+                    if (CommonConstant.APPROVED.equals(request.getUseApprovalDealType())) {
+                        entity.setLeanStatus(EquipmentLeanOutStatusEnum.WAIT_APPROVAL_IN.name());
+                    } else {
+                        entity.setLeanStatus(EquipmentLeanOutStatusEnum.REJECT.name());
+                        equipment.setAssetStatus(AssetStatusEnum.LEAN_OUT.name());
+                        eamEquipmentService.updateById(equipment);
+                    }
+                    request.setComment("浣跨敤鍗曚綅鍑哄巶瀹℃壒缁撴潫");
+                    break;
+                case WAIT_APPROVAL_IN:
+                    entity.setLeanOutApprovalUser(user.getUsername());
+                    entity.setLeanOutApprovalComment(request.getLeanOutApprovalComment());
+                    entity.setLeanOutApprovalTime(new Date());
+                    entity.setLeanOutApprovalDealType(request.getLeanOutApprovalDealType());
+                    if (CommonConstant.APPROVED.equals(request.getLeanOutApprovalDealType())) {
+                        entity.setLeanStatus(EquipmentLeanOutStatusEnum.WAIT_RETURN.name());
+                    } else {
+                        entity.setLeanStatus(EquipmentLeanOutStatusEnum.REJECT.name());
+                        equipment.setAssetStatus(AssetStatusEnum.LEAN_OUT.name());
+                        eamEquipmentService.updateById(equipment);
+                    }
+                    request.setComment("鍊熺敤鍗曚綅鍏ュ巶瀹℃壒缁撴潫");
+                    break;
+                case WAIT_CONFIRM_RETURN:
+                    entity.setLeanOutConfirmUser(user.getUsername());
+                    entity.setLeanOutConfirmComment(request.getLeanOutConfirmComment());
+                    entity.setLeanOutConfirmTime(new Date());
+                    entity.setLeanStatus(EquipmentLeanOutStatusEnum.WAIT_CONFIRM_BORROW.name());
+                    request.setComment("鍊熺敤鍗曚綅褰掕繕瀹℃壒缁撴潫");
+                    break;
+                case WAIT_CONFIRM_BORROW:
+                    entity.setUseConfirmUser(user.getUsername());
+                    entity.setUseConfirmComment(request.getUseConfirmComment());
+                    entity.setUseConfirmTime(new Date());
+                    entity.setLeanStatus(EquipmentLeanOutStatusEnum.COMPLETE.name());
+                    equipment.setAssetStatus(AssetStatusEnum.NORMAL.name());
+                    eamEquipmentService.updateById(equipment);
+                    request.setComment("浣跨敤鍗曚綅褰掕繕纭缁撴潫");
+                    break;
+            }
+        }
+    }
+
+    /**
+     * 鏇存柊娴佺▼鐘舵��
+     *
+     * @param request
+     * @param entity
+     * @param user
+     * @param equipment
+     */
+    private void setupProcessVariables(EamEquipmentLeanOutRequest request, EamEquipmentLeanOut entity, LoginUser user, EamEquipment equipment) {
+        Map<String, Object> values = new HashMap<>();
+        List<UserSelector> userSelectors;
+        List<String> userApprovalList;
+        EquipmentLeanOutStatusEnum status = EquipmentLeanOutStatusEnum.getInstance(entity.getLeanStatus());
+        switch (status) {
+            case WAIT_APPROVAL_OUT:
+                // 浣跨敤鍗曚綅鍑哄巶瀹℃壒瀹屾垚
+                values.put("dataId", entity.getId());
+                values.put("organization", request.getUseApprovalComment());
+                values.put("comment", request.getUseApprovalComment());
+                if (CommonConstant.APPROVED.equals(request.getUseApprovalDealType())) {
+                    // 閫氳繃
+                    values.put("approvalDealType", request.getUseApprovalDealType());
+                    // 鑾峰彇涓嬩竴姝ュ鎵逛汉
+                    userSelectors = sysUserService.selectOperatorList(entity.getLeanDepartId(), BusinessCodeConst.PCR0008);
+                    if (CollectionUtil.isEmpty(userSelectors)) {
+                        throw new JeecgBootException("鏈垎閰嶅�熺敤杞﹂棿鍗曚綅棰嗗锛屾棤娉曡繘鍏ヤ笅绾у鎵癸紒");
+                    }
+                    userApprovalList = userSelectors.stream().map(UserSelector::getUsername).collect(Collectors.toList());
+                    values.put("NextAssignee", userApprovalList);
+                } else {
+                    // 椹冲洖
+                    values.put("approvalDealType", request.getUseApprovalDealType());
+                }
+                break;
+            case WAIT_APPROVAL_IN:
+                // 鍊熺敤鍗曚綅鍏ュ巶瀹℃壒瀹屾垚
+                values.put("dataId", entity.getId());
+                values.put("organization", request.getLeanOutApprovalComment());
+                values.put("comment", request.getLeanOutApprovalComment());
+                break;
+            case WAIT_CONFIRM_RETURN:
+                // 褰掕繕鍗曚綅纭瀹屾垚
+                values.put("dataId", entity.getId());
+                values.put("organization", request.getLeanOutConfirmComment());
+                values.put("comment", request.getLeanOutConfirmComment());
+                // 鑾峰彇涓嬩竴姝ュ鎵逛汉
+                userSelectors = sysUserService.selectOperatorList(equipment.getOrgId(), BusinessCodeConst.PCR0008);
+                if (CollectionUtil.isEmpty(userSelectors)) {
+                    throw new JeecgBootException("鏈垎閰嶄娇鐢ㄨ溅闂村崟浣嶉瀵硷紝鏃犳硶杩涘叆涓嬬骇瀹℃壒锛�");
+                }
+                userApprovalList = userSelectors.stream().map(UserSelector::getUsername).collect(Collectors.toList());
+                values.put("NextAssignee", userApprovalList);
+                break;
+            case WAIT_CONFIRM_BORROW:
+                // 鍊熷嚭鏂圭‘璁ゅ畬鎴�
+                values.put("dataId", entity.getId());
+                values.put("organization", request.getUseConfirmComment());
+                values.put("comment", request.getUseConfirmComment());
+                break;
+        }
+        request.setValues(values);
+    }
+
 
     @Override
     public void afterFlowHandle(FlowMyBusiness business) {
diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamEquipmentTransferServiceImpl.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamEquipmentTransferServiceImpl.java
index b25c467..80d72f9 100644
--- a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamEquipmentTransferServiceImpl.java
+++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamEquipmentTransferServiceImpl.java
@@ -88,8 +88,8 @@
             //娌℃湁閫夋嫨璁惧锛屾牴鎹溅闂磋繃婊よ澶�
             queryWrapper.exists("select 1 from mdc_user_production t where t.user_id={0} and t.pro_id=e.org_id ", sysUser.getId());
         }
-        //鎺у埗寰呮彁浜ょ姸鎬佺殑鏁版嵁鍙兘鏈汉鏌ョ湅
-        queryWrapper.and(i -> i.ne("wmo.transfer_status", EquipmentTransferStatusEnum.WAIT_SUBMIT).or().eq("wmo.report_user", sysUser.getUsername()));
+//        鎺у埗寰呮彁浜ょ姸鎬佺殑鏁版嵁鍙兘鏈汉鏌ョ湅
+//        queryWrapper.and(i -> i.ne("wmo.transfer_status", EquipmentTransferStatusEnum.WAIT_SUBMIT).or().eq("wmo.report_user", sysUser.getUsername()));
         //鏌ヨ鏉′欢杩囨护
         if (query != null) {
             if (StringUtils.isNotBlank(query.getEquipmentId())) {
@@ -144,7 +144,6 @@
             throw new JeecgBootException("褰撳墠璁惧灞炰簬姝よ溅闂达紝涓嶉渶瑕佸彉鍔紒");
         }
         request.setOldDepartId(equipment.getOrgId());
-        request.setReportUser(sysUser.getUsername());
         return equipmentTransferMapper.insert(request) > 0;
     }
 
@@ -156,47 +155,43 @@
             throw new JeecgBootException("瑕佹彁浜ょ殑鏁版嵁涓嶅瓨鍦紝璇峰埛鏂伴噸璇曪紒");
         }
         if (!EquipmentTransferStatusEnum.WAIT_SUBMIT.name().equals(entity.getTransferStatus())) {
-            throw new JeecgBootException("褰撳墠鏁版嵁鐘舵�佷笉鍏佽缂栬緫锛�");
+            throw new JeecgBootException("璇ュ伐鍗曞凡杩涜杩囨彁浜わ紒");
         }
         //妫�鏌ヨ澶�
         EamEquipment equipment = eamEquipmentService.getById(entity.getEquipmentId());
         if (equipment == null) {
-            throw new JeecgBootException("璁惧涓嶅瓨鍦紒");
+            throw new JeecgBootException("璁惧涓嶅瓨鍦紝鎻愪氦澶辫触锛�");
         }
+        // 鍒嗛厤缁欎娇鐢ㄥ崟浣嶉瀵�
+        List<UserSelector> userSelectors = sysUserService.selectOperatorList(equipment.getEquipmentCode(), equipment.getOrgId(), BusinessCodeConst.PCR0008);
+        if (CollectionUtil.isEmpty(userSelectors)) {
+            throw new JeecgBootException("璁惧鏈垎閰嶇粰鍗曚綅棰嗗锛屾棤娉曡繘鍏ヤ笅绾у鎵癸紒");
+        }
+        List<String> usernames = userSelectors.stream().map(UserSelector::getUsername).collect(Collectors.toList());
         LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
-        if (sysUser == null) {
-            throw new JeecgBootException("褰撳墠鐢ㄦ埛鏃犳硶缂栬緫杞璁板綍锛�");
+        if (sysUser == null || !BusinessCodeConst.PCR0004.equals(sysUser.getPost())) {
+            throw new JeecgBootException("涓嶆槸璁惧绠$悊鍛橈紝鏃犳硶鎻愪氦姝ゅ伐鍗曪紒");
         }
-        UpdateWrapper<EamEquipmentTransfer> updateWrapper = new UpdateWrapper<>();
-        updateWrapper.set("transfer_status", EquipmentSealUpStatusEnum.WAIT_SUBMIT.name());
-        updateWrapper.eq("id", id);
-        updateWrapper.eq("report_user", sysUser.getUsername());
-        boolean success = super.update(updateWrapper);
-        if (success) {
-            equipment.setAssetStatus(AssetStatusEnum.DEALT.name()); // 璁惧杞
-            eamEquipmentService.updateById(equipment);
-        }
+        entity.setTransferTime(new Date());
+        entity.setReportUser(sysUser.getUsername());
+        entity.setTransferStatus(EquipmentTransferStatusEnum.WAIT_USE_LEADER_CHECK.name());
+        //淇濆瓨宸ュ崟
+        equipmentTransferMapper.updateById(entity);
+
         //鍚姩瀹℃壒娴佺▼
-        flowCommonService.initActBusiness("宸ュ崟鍙�:" + entity.getCode() + ";璁惧缂栧彿: " + equipment.getEquipmentCode() + ";杩涜璁惧杞",
+        flowCommonService.initActBusiness("宸ュ崟鍙�:" + entity.getCode() + ";璁惧缂栧彿: " + equipment.getEquipmentCode() + ";杩涜璁惧璋冩嫧",
                 entity.getId(), "IEamEquipmentTransferService", "equipment_transfer", null);
         Map<String, Object> variables = new HashMap<>();
         variables.put("dataId", entity.getId());
         variables.put("organization", entity.getTransferReason());
         variables.put("comment", entity.getTransferReason());
         variables.put("proofreading", true);
-        // 鍒嗛厤缁欒澶囩鐞嗗憳
-        List<UserSelector> userSelectors = sysUserService.selectOperatorList(equipment.getEquipmentCode(), equipment.getOrgId(), BusinessCodeConst.PCR0004);
-        if (CollectionUtil.isEmpty(userSelectors)) {
-            throw new JeecgBootException("璁惧鏈垎閰嶇粰璁惧绠$悊鍛橈紝鏃犳硶杩涘叆涓嬬骇瀹℃壒锛�");
-        }
-        List<String> usernames = userSelectors.stream().map(UserSelector::getUsername).collect(Collectors.toList());
+
         variables.put("NextAssignee", usernames);
         Result result = flowDefinitionService.startProcessInstanceByKey("equipment_transfer", variables);
         if (result != null) {
-            entity.setTransferTime(new Date());
-            entity.setTransferStatus(EquipmentTransferStatusEnum.WAIT_CHECK.name());
-            //淇濆瓨宸ュ崟
-            equipmentTransferMapper.updateById(entity);
+            equipment.setAssetStatus(AssetStatusEnum.DEALT.name()); // 璁惧璋冩嫧
+            eamEquipmentService.updateById(equipment);
             return result.isSuccess();
         }
         return true;
@@ -215,7 +210,6 @@
         if (user == null || StrUtil.isBlank(user.getId())) {
             throw new JeecgBootException("鏈幏鍙栧埌鐧诲綍鐢ㄦ埛锛岃閲嶆柊鐧诲綍鍚庡啀璇曪紒");
         }
-        request.setApprovalUser(user.getUsername());
         // 鑾峰彇娴佺▼涓氬姟璁板綍
         FlowMyBusiness flowMyBusiness = flowMyBusinessService.getFlowMyBusiness(request.getInstanceId());
         if (flowMyBusiness == null) {
@@ -236,50 +230,182 @@
             throw new JeecgBootException("璁惧涓嶅瓨鍦紝璇锋鏌ワ紒");
         }
 
-        EquipmentTransferStatusEnum status = EquipmentTransferStatusEnum.getInstance(entity.getTransferStatus());
-        if (status == null) {
-            return null;
-        }
-        //娴佺▼鍙橀噺
-        Map<String, Object> values = new HashMap<>();
-        // 瀹℃壒
-        if (status == EquipmentTransferStatusEnum.WAIT_CHECK) {//鎵ц瀹屾垚
-            values.put("dataId", entity.getId());
-            values.put("organization", request.getApprovalComment());
-            values.put("comment", request.getApprovalComment());
-            values.put("approvalDealType", request.getApprovalDealType());
-            request.setComment(request.getApprovalComment());
-            entity.setApprovalUser(user.getUsername());// 瀹℃牳浜�
-            entity.setApprovalComment(request.getApprovalComment());// 瀹℃牳鎰忚
-            entity.setApprovalTime(new Date());// 瀹℃牳鏃堕棿
-            entity.setApprovalDealType(request.getApprovalDealType()); // 瀹℃壒绫诲瀷
-            // 楠岃瘉閫氳繃杩樻槸椹冲洖
-            if (request.getApprovalDealType().equals("1")) {
-                //璁剧疆entity
-                entity.setTransferStatus(EquipmentTransferStatusEnum.COMPLETE.name());
-                List<String> userApprovalList = new ArrayList<>(Collections.singletonList(entity.getReportUser()));
-                values.put("NextAssignee", userApprovalList);
-            } else {
-                //璁剧疆entity
-                entity.setTransferStatus(EquipmentTransferStatusEnum.COMPLETE.name());
-            }
-            // 淇敼璁惧鐘舵��
-            equipment.setAssetStatus(AssetStatusEnum.NORMAL.name());
-            entity.setApprovalUser(user.getUsername());
-            entity.setApprovalComment(request.getApprovalComment());
-            entity.setApprovalTime(new Date());
-            eamEquipmentService.updateById(equipment);
-        }
-        request.setValues(values);
+        //璁剧疆娴佺▼鍙橀噺
+        setupProcessVariables(request, entity, user, equipment);
 
         // 瀹屾垚娴佺▼浠诲姟
         Result result = flowTaskService.complete(request);
         if (!result.isSuccess()) {
             throw new JeecgBootException("瀹℃壒澶辫触锛岃鍒锋柊鏌ョ湅锛�");
         }
+
+        // 鏍规嵁浠诲姟瀹屾垚缁撴灉鏇存柊宸ュ崟鐘舵��
+        updateOrderStatus(result, request, entity, user, equipment);
+
         //淇濆瓨宸ュ崟
         equipmentTransferMapper.updateById(entity);
         return entity;
+    }
+
+    /**
+     * 璁剧疆宸ュ崟淇℃伅
+     *
+     * @param result
+     * @param request
+     * @param entity
+     * @param user
+     */
+    private void updateOrderStatus(Result result, EamEquipmentTransferRequest request, EamEquipmentTransfer entity, LoginUser user, EamEquipment equipment) {
+        if (result.isSuccess()) {
+            EquipmentTransferStatusEnum status = EquipmentTransferStatusEnum.getInstance(entity.getTransferStatus());
+            switch (status) {
+                case WAIT_USE_LEADER_CHECK:
+                    // 浣跨敤鍗曚綅棰嗗瀹℃壒缁撴潫
+                    entity.setUseLeader(user.getUsername());
+                    entity.setUseLeaderApprovalComment(request.getUseLeaderApprovalComment());
+                    entity.setUseLeaderApprovalTime(new Date());
+                    entity.setUseLeaderApprovalDealType(request.getUseLeaderApprovalDealType());
+                    if (CommonConstant.APPROVED.equals(request.getUseLeaderApprovalDealType())) {
+                        entity.setTransferStatus(EquipmentTransferStatusEnum.WAIT_TRANSFER_LEADER_CHECK.name());
+                    } else {
+                        entity.setTransferStatus(EquipmentTransferStatusEnum.REJECT.name());
+                        equipment.setAssetStatus(AssetStatusEnum.NORMAL.name()); // 璁惧璋冩嫧
+                        eamEquipmentService.updateById(equipment);
+                    }
+                    break;
+                case WAIT_TRANSFER_LEADER_CHECK:
+                    // 璋冨叆鍗曚綅棰嗗瀹℃壒缁撴潫
+                    entity.setTransferLeader(user.getUsername());
+                    entity.setTransferLeaderApprovalComment(request.getTransferLeaderApprovalComment());
+                    entity.setTransferLeaderApprovalTime(new Date());
+                    entity.setTransferLeaderApprovalDealType(request.getTransferLeaderApprovalDealType());
+                    if (CommonConstant.APPROVED.equals(request.getTransferLeaderApprovalDealType())) {
+                        entity.setTransferStatus(EquipmentTransferStatusEnum.WAIT_EXTERNAL_CONFIRM.name());
+                    } else {
+                        entity.setTransferStatus(EquipmentTransferStatusEnum.REJECT.name());
+                        equipment.setAssetStatus(AssetStatusEnum.NORMAL.name()); // 璁惧璋冩嫧
+                        eamEquipmentService.updateById(equipment);
+                    }
+                    break;
+                case WAIT_EXTERNAL_CONFIRM:
+                    // 鏈哄姩鍔炵‘璁ょ粨鏉�
+                    entity.setExternalConfirm(user.getUsername());
+                    entity.setExternalConfirmTime(new Date());
+                    entity.setCompanyLeaderCheck(request.getCompanyLeaderCheck());
+                    if (CommonConstant.YN_1.equals(request.getCompanyLeaderCheck())) {
+                        entity.setTransferStatus(EquipmentTransferStatusEnum.WAIT_COMPANY_LEADER_CHECK.name());
+                    } else {
+                        entity.setTransferStatus(EquipmentTransferStatusEnum.COMPLETE.name());
+                        equipment.setOrgId(entity.getNewDepartId());
+                        equipment.setAssetStatus(AssetStatusEnum.NORMAL.name()); // 璁惧璋冩嫧
+                        eamEquipmentService.updateById(equipment);
+                    }
+                    break;
+                case WAIT_COMPANY_LEADER_CHECK:
+                    // 鍏徃棰嗗瀹℃壒缁撴潫
+                    entity.setCompanyLeader(user.getUsername());
+                    entity.setCompanyLeaderApprovalTime(new Date());
+                    entity.setCompanyLeaderApprovalComment(request.getCompanyLeaderApprovalComment());
+                    entity.setCompanyLeaderApprovalDealType(request.getCompanyLeaderApprovalDealType());
+                    if (CommonConstant.APPROVED.equals(request.getCompanyLeaderApprovalDealType())) {
+                        entity.setTransferStatus(EquipmentTransferStatusEnum.COMPLETE.name());
+                        equipment.setOrgId(entity.getNewDepartId());
+                    } else {
+                        entity.setTransferStatus(EquipmentTransferStatusEnum.REJECT.name());
+                    }
+                    equipment.setAssetStatus(AssetStatusEnum.NORMAL.name()); // 璁惧璋冩嫧
+                    eamEquipmentService.updateById(equipment);
+                    break;
+            }
+        }
+    }
+
+    /**
+     * 璁剧疆娴佺▼鍙橀噺
+     *
+     * @param request
+     * @param entity
+     * @param user
+     * @param equipment
+     */
+    private void setupProcessVariables(EamEquipmentTransferRequest request, EamEquipmentTransfer entity, LoginUser user, EamEquipment equipment) {
+        Map<String, Object> values = new HashMap<>();
+        List<UserSelector> userSelectors;
+        List<String> userApprovalList;
+        EquipmentTransferStatusEnum status = EquipmentTransferStatusEnum.getInstance(entity.getTransferStatus());
+        switch (status) {
+            case WAIT_USE_LEADER_CHECK:
+                // 浣跨敤鍗曚綅棰嗗瀹℃壒缁撴潫
+                values.put("dataId", entity.getId());
+                values.put("organization", request.getUseLeaderApprovalComment());
+                values.put("comment", request.getUseLeaderApprovalComment());
+                if (CommonConstant.APPROVED.equals(request.getUseLeaderApprovalDealType())) {
+                    // 閫氳繃
+                    values.put("approvalDealType", request.getUseLeaderApprovalDealType());
+                    // 鑾峰彇涓嬩竴姝ュ鎵逛汉
+                    userSelectors = sysUserService.selectOperatorList(entity.getNewDepartId(), BusinessCodeConst.PCR0008);
+                    if (CollectionUtil.isEmpty(userSelectors)) {
+                        throw new JeecgBootException("鏈垎閰嶈皟鍏ュ崟浣嶉瀵硷紝鏃犳硶杩涘叆涓嬬骇瀹℃壒锛�");
+                    }
+                    userApprovalList = userSelectors.stream().map(UserSelector::getUsername).collect(Collectors.toList());
+                    values.put("NextAssignee", userApprovalList);
+                } else {
+                    // 椹冲洖
+                    values.put("approvalDealType", request.getUseLeaderApprovalDealType());
+                }
+                request.setComment("浣跨敤鍗曚綅棰嗗瀹℃壒缁撴潫");
+                break;
+            case WAIT_TRANSFER_LEADER_CHECK:
+                // 璋冨叆鍗曚綅棰嗗瀹℃壒缁撴潫
+                values.put("dataId", entity.getId());
+                values.put("organization", request.getTransferLeaderApprovalComment());
+                values.put("comment", request.getTransferLeaderApprovalComment());
+                if (CommonConstant.APPROVED.equals(request.getTransferLeaderApprovalDealType())) {
+                    // 閫氳繃
+                    values.put("approvalDealType", request.getTransferLeaderApprovalDealType());
+                    // 鑾峰彇涓嬩竴姝ュ鎵逛汉
+                    userSelectors = sysUserService.selectOperatorList(equipment.getEquipmentCode(), equipment.getOrgId(), BusinessCodeConst.PCR0006);
+                    if (CollectionUtil.isEmpty(userSelectors)) {
+                        throw new JeecgBootException("璁惧鏈垎閰嶇粰鏈哄姩鍔烇紝鏃犳硶杩涘叆涓嬬骇瀹℃壒锛�");
+                    }
+                    userApprovalList = userSelectors.stream().map(UserSelector::getUsername).collect(Collectors.toList());
+                    values.put("NextAssignee", userApprovalList);
+                } else {
+                    // 椹冲洖
+                    values.put("approvalDealType", request.getTransferLeaderApprovalDealType());
+                }
+                request.setComment("璋冨叆鍗曚綅棰嗗瀹℃壒缁撴潫");
+                break;
+            case WAIT_EXTERNAL_CONFIRM:
+                // 鏈哄姩鍔炵‘璁ょ粨鏉�
+                values.put("dataId", entity.getId());
+                values.put("organization", "鏈哄姩鍔炵‘璁ょ粨鏉�");
+                values.put("comment", "鏈哄姩鍔炵‘璁ょ粨鏉�");
+                if (CommonConstant.YN_1.equals(request.getCompanyLeaderCheck())) {
+                    // 闇�瑕�
+                    values.put("confirmation", request.getCompanyLeaderCheck());
+                    // 娴佺▼杞埌鍏徃棰嗗瀹℃壒
+                    // 鑾峰彇涓嬩竴姝ュ鎵逛汉
+                    userSelectors = sysUserService.selectOperatorList(BusinessCodeConst.PCR0009);
+                    if (CollectionUtil.isEmpty(userSelectors)) {
+                        throw new JeecgBootException("璁惧鏈垎閰嶇粰鍏徃棰嗗锛屾棤娉曡繘鍏ヤ笅绾у鎵癸紒");
+                    }
+                    userApprovalList = userSelectors.stream().map(UserSelector::getUsername).collect(Collectors.toList());
+                    values.put("NextAssignee", userApprovalList);
+                } else {
+                    values.put("confirmation", request.getCompanyLeaderCheck());
+                }
+                request.setComment("鏈哄姩鍔炵‘璁ょ粨鏉�");
+                break;
+            case WAIT_COMPANY_LEADER_CHECK:
+                // 鍏徃棰嗗瀹℃壒缁撴潫
+                values.put("dataId", entity.getId());
+                values.put("organization", request.getCompanyLeaderApprovalComment());
+                values.put("comment", request.getCompanyLeaderApprovalComment());
+                request.setComment("鍏徃棰嗗瀹℃壒缁撴潫");
+                break;
+        }
+        request.setValues(values);
     }
 
     @Override
@@ -331,7 +457,10 @@
 
     @Override
     public List<String> flowCandidateUsernamesOfTask(String taskNameId, Map<String, Object> values) {
-        return null;
+        //涓氬姟鏄惁骞查娴佺▼锛屼笟鍔″共棰勶紝娴佺▼骞查锛屾寚瀹氫汉鍛樿繘琛屽鐞�
+        //鑾峰彇涓嬩竴姝ュ鐞嗕汉
+        Object object = values.get("NextAssignee");
+        return (List<String>) object;
     }
 
     /**
diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamSparePartRequisitionServiceImpl.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamSparePartRequisitionServiceImpl.java
index fcb97d7..510207d 100644
--- a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamSparePartRequisitionServiceImpl.java
+++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamSparePartRequisitionServiceImpl.java
@@ -6,18 +6,13 @@
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-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.exception.JeecgBootException;
 import org.jeecg.common.system.vo.LoginUser;
-import org.jeecg.modules.eam.constant.AssetStatusEnum;
 import org.jeecg.modules.eam.constant.BusinessCodeConst;
-import org.jeecg.modules.eam.constant.EquipmentLeanOutStatusEnum;
-import org.jeecg.modules.eam.entity.EamEquipment;
-import org.jeecg.modules.eam.entity.EamEquipmentLeanOut;
 import org.jeecg.modules.eam.entity.EamSparePartRequisition;
 import org.jeecg.modules.eam.entity.EamSparePartRequisitionDetail;
 import org.jeecg.modules.eam.mapper.EamSparePartRequisitionMapper;
diff --git a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/ISysUserService.java b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/ISysUserService.java
index 103f93a..046d670 100644
--- a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/ISysUserService.java
+++ b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/ISysUserService.java
@@ -333,10 +333,18 @@
 
 	/**
 	 * 閫夋嫨鐢ㄦ埛
+	 * @param productionId 閫夋嫨鐨勮溅闂碔D
 	 * @param positionCode 宀椾綅缂栧彿
 	 * @return
 	 */
-	List<UserSelector> selectOperatorList( String positionCode);
+	List<UserSelector> selectOperatorList(String productionId, String positionCode);
+
+	/**
+	 * 閫夋嫨鐢ㄦ埛
+	 * @param positionCode 宀椾綅缂栧彿
+	 * @return
+	 */
+	List<UserSelector> selectOperatorList(String positionCode);
 
 	/**
 	 * 鏍规嵁鐢ㄦ埛鍚嶆壒閲忚幏鍙栫湡瀹炲鍚嶆槧灏�
diff --git a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysUserServiceImpl.java b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysUserServiceImpl.java
index 8d9799b..c1ce9a5 100644
--- a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysUserServiceImpl.java
+++ b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysUserServiceImpl.java
@@ -765,6 +765,21 @@
 	}
 
 	@Override
+	public List<UserSelector> selectOperatorList(String productionId, String positionCode) {
+		LambdaQueryWrapper<SysUser> queryWrapper = new LambdaQueryWrapper<>();
+		queryWrapper.eq(SysUser::getPost, positionCode);
+		if(StringUtils.isNotBlank(productionId)) {
+			queryWrapper.exists("select 1 from mdc_user_production t where t.user_id=sys_user.id and t.pro_id={0}", productionId);
+		}
+		queryWrapper.eq(SysUser::getDelFlag, CommonConstant.DEL_FLAG_0);
+		queryWrapper.eq(SysUser::getStatus, CommonConstant.DEL_FLAG_1);
+		queryWrapper.orderByDesc(SysUser::getId);
+		List<SysUser> sysUsers = userMapper.selectList(queryWrapper);
+		List<UserSelector> collect = sysUsers.stream().map(user -> new UserSelector(user.getId(), user.getUsername(), user.getRealname())).collect(Collectors.toList());
+		return collect;
+	}
+
+	@Override
 	public List<UserSelector> selectOperatorList(String positionCode) {
 		LambdaQueryWrapper<SysUser> queryWrapper = new LambdaQueryWrapper<>();
 		queryWrapper.eq(SysUser::getPost, positionCode);

--
Gitblit v1.9.3