From 95c90e04b516325648e8a3d69e726555d1f7d05e Mon Sep 17 00:00:00 2001
From: Lius <Lius2225@163.com>
Date: 星期三, 10 九月 2025 14:51:07 +0800
Subject: [PATCH] 设备借用、归还流程审批调整

---
 lxzn-module-eam/src/main/java/org/jeecg/modules/eam/request/EamEquipmentLeanOutRequest.java          |   10 +++++
 lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/entity/EamEquipmentLeanOut.java           |    8 ++++
 lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamEquipmentLeanOutServiceImpl.java |   78 ++++++++++++++++++++++++---------------
 3 files changed, 66 insertions(+), 30 deletions(-)

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 e99c3ba..c4bdb77 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
@@ -126,6 +126,10 @@
     @ApiModelProperty(value = "浣跨敤杞﹂棿纭浜�")
     @Dict(dicCode = "sys_user, realname, username")
     private String useConfirmUser;
+    /**浣跨敤杞﹂棿纭瀹℃壒绫诲瀷*/
+    @ApiModelProperty(value = "浣跨敤杞﹂棿纭瀹℃壒绫诲瀷")
+    @Dict(dicCode = "approved_rejected")
+    private String useConfirmDealType;
     /**纭鎰忚*/
     @Excel(name = "浣跨敤杞﹂棿纭鎰忚", width = 15)
     @ApiModelProperty(value = "浣跨敤杞﹂棿纭鎰忚")
@@ -140,6 +144,10 @@
     @ApiModelProperty(value = "鍊熺敤杞﹂棿纭浜�")
     @Dict(dicCode = "sys_user, realname, username")
     private String leanOutConfirmUser;
+    /**鍊熺敤杞﹂棿纭瀹℃壒绫诲瀷*/
+    @ApiModelProperty(value = "鍊熺敤杞﹂棿纭瀹℃壒绫诲瀷")
+    @Dict(dicCode = "approved_rejected")
+    private String leanOutConfirmDealType;
     /**鍊熺敤杞﹂棿纭鎰忚*/
     @Excel(name = "鍊熺敤杞﹂棿纭鎰忚", width = 15)
     @ApiModelProperty(value = "鍊熺敤杞﹂棿纭鎰忚")
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 06f4dd7..e13429b 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
@@ -159,6 +159,11 @@
     @ApiModelProperty(value = "浣跨敤杞﹂棿纭浜�")
     private String useConfirmUser;
     /**
+     * 浣跨敤杞﹂棿纭瀹℃壒绫诲瀷
+     */
+    @ApiModelProperty(value = "浣跨敤杞﹂棿纭瀹℃壒绫诲瀷")
+    private String useConfirmDealType;
+    /**
      * 纭鎰忚
      */
     @ApiModelProperty(value = "浣跨敤杞﹂棿纭鎰忚")
@@ -176,6 +181,11 @@
     @ApiModelProperty(value = "鍊熺敤杞﹂棿纭浜�")
     private String leanOutConfirmUser;
     /**
+     * 鍊熺敤杞﹂棿纭瀹℃壒绫诲瀷
+     */
+    @ApiModelProperty(value = "鍊熺敤杞﹂棿纭瀹℃壒绫诲瀷")
+    private String leanOutConfirmDealType;
+    /**
      * 鍊熺敤杞﹂棿纭鎰忚
      */
     @ApiModelProperty(value = "鍊熺敤杞﹂棿纭鎰忚")
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 cf33510..dcca6a6 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
@@ -194,7 +194,7 @@
             throw new JeecgBootException("瑕佹彁浜ょ殑鏁版嵁涓嶅瓨鍦紝璇峰埛鏂伴噸璇曪紒");
         }
         if (!EquipmentLeanOutStatusEnum.WAIT_SUBMIT.name().equals(entity.getLeanStatus())) {
-            throw new JeecgBootException("褰撳墠鏁版嵁鐘舵�佷笉鍏佽缂栬緫锛�");
+            throw new JeecgBootException("璇ュ伐鍗曞凡杩涜杩囨彁浜わ紒");
         }
         //妫�鏌ヨ澶�
         EamEquipment equipment = eamEquipmentService.getById(entity.getEquipmentId());
@@ -204,9 +204,15 @@
         if (!AssetStatusEnum.NORMAL.name().equals(equipment.getAssetStatus())) {
             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<EamEquipmentLeanOut> updateWrapper = new UpdateWrapper<>();
         updateWrapper.set("lean_status", EquipmentLeanOutStatusEnum.WAIT_APPROVAL_OUT.name());
@@ -230,8 +236,6 @@
             variables.put("comment", entity.getLeanReason());
         }
         variables.put("proofreading", true);
-        List<String> usernames = new ArrayList<>();
-        usernames.add(equipment.getEquipmentManager());
         variables.put("NextAssignee", usernames);
         Result result = flowDefinitionService.startProcessInstanceByKey("equipment_lean_out", variables);
         if (result != null) {
@@ -259,9 +263,14 @@
         if (equipment == null) {
             throw new JeecgBootException("璁惧涓嶅瓨鍦紒");
         }
+        // 鍒嗛厤缁欏�熺敤鍗曚綅棰嗗
+        List<UserSelector> userSelectors = sysUserService.selectOperatorList(entity.getLeanDepartId(), BusinessCodeConst.PCR0008);
+        if (CollectionUtil.isEmpty(userSelectors)) {
+            throw new JeecgBootException("璁惧鏈垎閰嶇粰鍗曚綅棰嗗锛屾棤娉曡繘鍏ヤ笅绾у鎵癸紒");
+        }
         LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
-        if (sysUser == null) {
-            throw new JeecgBootException("褰撳墠鐢ㄦ埛鏃犳硶缂栬緫灏佸瓨璁板綍锛�");
+        if (sysUser == null || !BusinessCodeConst.PCR0004.equals(sysUser.getPost())) {
+            throw new JeecgBootException("涓嶆槸璁惧绠$悊鍛橈紝鏃犳硶鎻愪氦姝ゅ伐鍗曪紒");
         }
         //鍚姩瀹℃壒娴佺▼
         flowCommonService.initActBusiness("宸ュ崟鍙�:" + entity.getCode() + ";璁惧缂栧彿: " + equipment.getEquipmentCode() + ";杩涜璁惧褰掕繕",
@@ -271,11 +280,7 @@
         variables.put("organization", "鏂板褰掕繕榛樿褰掕繕娴佺▼");
         variables.put("comment", "鏂板褰掕繕榛樿褰掕繕娴佺▼");
         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_return", variables);
@@ -361,10 +366,7 @@
                         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());
@@ -375,26 +377,31 @@
                         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("鍊熺敤鍗曚綅褰掕繕瀹℃壒缁撴潫");
+                    entity.setLeanOutConfirmDealType(request.getLeanOutConfirmDealType());
+                    if (CommonConstant.APPROVED.equals(request.getLeanOutConfirmDealType())) {
+                        entity.setLeanStatus(EquipmentLeanOutStatusEnum.WAIT_CONFIRM_BORROW.name());
+                    } else {
+                        entity.setLeanStatus(EquipmentLeanOutStatusEnum.WAIT_RETURN.name());
+                    }
                     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("浣跨敤鍗曚綅褰掕繕纭缁撴潫");
+                    entity.setUseConfirmDealType(request.getUseConfirmDealType());
+                    if (CommonConstant.APPROVED.equals(request.getUseConfirmDealType())) {
+                        entity.setLeanStatus(EquipmentLeanOutStatusEnum.COMPLETE.name());
+                        equipment.setAssetStatus(AssetStatusEnum.NORMAL.name());
+                        eamEquipmentService.updateById(equipment);
+                    } else {
+                        entity.setLeanStatus(EquipmentLeanOutStatusEnum.WAIT_RETURN.name());
+                    }
                     break;
             }
         }
@@ -433,31 +440,42 @@
                     // 椹冲洖
                     values.put("approvalDealType", request.getUseApprovalDealType());
                 }
+                request.setComment("浣跨敤鍗曚綅鍑哄巶瀹℃壒瀹屾垚");
                 break;
             case WAIT_APPROVAL_IN:
                 // 鍊熺敤鍗曚綅鍏ュ巶瀹℃壒瀹屾垚
                 values.put("dataId", entity.getId());
                 values.put("organization", request.getLeanOutApprovalComment());
                 values.put("comment", request.getLeanOutApprovalComment());
+                request.setComment("鍊熺敤鍗曚綅鍏ュ巶瀹℃壒瀹屾垚");
                 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("鏈垎閰嶄娇鐢ㄨ溅闂村崟浣嶉瀵硷紝鏃犳硶杩涘叆涓嬬骇瀹℃壒锛�");
+                if (CommonConstant.APPROVED.equals(request.getLeanOutConfirmDealType())) {
+                    // 閫氳繃
+                    values.put("approvalDealType", request.getLeanOutConfirmDealType());
+                    // 鑾峰彇涓嬩竴姝ュ鎵逛汉
+                    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);
+                } else {
+                    // 椹冲洖
+                    values.put("approvalDealType", request.getLeanOutConfirmDealType());
                 }
-                userApprovalList = userSelectors.stream().map(UserSelector::getUsername).collect(Collectors.toList());
-                values.put("NextAssignee", userApprovalList);
+                request.setComment("鍊熺敤鍗曚綅棰嗗纭瀹屾垚");
                 break;
             case WAIT_CONFIRM_BORROW:
                 // 鍊熷嚭鏂圭‘璁ゅ畬鎴�
                 values.put("dataId", entity.getId());
                 values.put("organization", request.getUseConfirmComment());
                 values.put("comment", request.getUseConfirmComment());
+                request.setComment("浣跨敤鍗曚綅棰嗗纭瀹屾垚");
                 break;
         }
         request.setValues(values);

--
Gitblit v1.9.3