From c7e9e47f7b75dd0a88c929d7fb0713e5f638fdf1 Mon Sep 17 00:00:00 2001
From: jiazx0107 <jiazx0107@163.com>
Date: 星期日, 08 二月 2026 19:08:11 +0800
Subject: [PATCH] 调整工单审核功能,调整出入库工单排序

---
 fzzy-igdss-core/src/main/java/com/fzzy/work/service/BizWorkService.java |  157 +++++++++++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 141 insertions(+), 16 deletions(-)

diff --git a/fzzy-igdss-core/src/main/java/com/fzzy/work/service/BizWorkService.java b/fzzy-igdss-core/src/main/java/com/fzzy/work/service/BizWorkService.java
index 1261414..59d0e85 100644
--- a/fzzy-igdss-core/src/main/java/com/fzzy/work/service/BizWorkService.java
+++ b/fzzy-igdss-core/src/main/java/com/fzzy/work/service/BizWorkService.java
@@ -4,6 +4,7 @@
 import com.fzzy.igds.data.BaseResp;
 import com.fzzy.igds.domain.InoutNoticeIn;
 import com.fzzy.igds.domain.InoutNoticeOut;
+import com.fzzy.igds.domain.PledgeContract;
 import com.fzzy.igds.utils.ContextUtil;
 import com.fzzy.work.data.WorkStatus;
 import com.fzzy.work.data.WorkBizType;
@@ -11,7 +12,9 @@
 import com.fzzy.work.domain.WorkOrder;
 import com.fzzy.work.domain.WorkOrderConf;
 import com.fzzy.work.domain.WorkOrderProcess;
+import com.ruoyi.common.core.domain.entity.SysUser;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
@@ -66,7 +69,7 @@
         work.setDeptId(data.getDeptId());
         work.setCompanyId(data.getCompanyId());
         work.setUpdateTime(new Date());
-        work.setTitle("鍏ュ簱閫氱煡鍗曞鎵�");
+        work.setTitle(data.getName()+"-瀹℃壒");
         work.setConfId(conf.getId());
         work.setStatus(WorkStatus.STATUS_30.getCode());
         work.setReceiveTime(new Date());
@@ -84,7 +87,7 @@
         process.setAssigneeName(work.getCreateBy());
         process.setAssigneeId(work.getCreateById());
         process.setNode(WorkNode.NODE_START.getCode());
-        orderProcessService.addData(process);
+        orderProcessService.addData(process, false);
 
         return BaseResp.success();
     }
@@ -111,7 +114,7 @@
         work.setDeptId(data.getDeptId());
         work.setCompanyId(data.getCompanyId());
         work.setUpdateTime(new Date());
-        work.setTitle("鍑哄簱閫氱煡鍗曞鎵�");
+        work.setTitle(data.getName()+"-瀹℃壒");
         work.setConfId(conf.getId());
         work.setStatus(WorkStatus.STATUS_30.getCode());
         work.setReceiveTime(new Date());
@@ -129,7 +132,7 @@
         process.setAssigneeName(work.getCreateBy());
         process.setAssigneeId(work.getCreateById());
         process.setNode(WorkNode.NODE_START.getCode());
-        orderProcessService.addData(process);
+        orderProcessService.addData(process, false);
 
         return BaseResp.success();
     }
@@ -163,15 +166,86 @@
     }
 
     /**
+     *
+     * 鏍规嵁鍑哄叆搴撻�氱煡鍗曞惎鍔ㄥ鎵瑰伐鍗�
+     * @param data 鍑哄叆搴撳伐鍗曟暟鎹�
+     * @return 鍝嶅簲缁撴灉
+     */
+    public BaseResp startByBackMoney(PledgeContract data, WorkOrderConf conf) {
+
+        if (null == conf) conf = confService.getByDeptId(data.getPledgeDept(), WorkBizType.TYPE_10);
+
+        if (Constant.YN_N.equals(conf.getValTag())) return BaseResp.error("娴佺▼鏈惎鐢�");
+
+        //鍒涘缓宸ュ崟
+        WorkOrder work = new WorkOrder();
+        work.setId(ContextUtil.generateOrderId("WARN"));
+        work.setBizType(WorkBizType.TYPE_50.getCode());
+        work.setBusinessId(data.getId());
+        work.setBankId(data.getPledgeBank());
+        work.setBusinessUrl("com.fzzy.igds.PledgeContract-Detail.d");
+        work.setCreateTime(new Date());
+        work.setDeptId(data.getPledgeDept());
+        work.setCompanyId(data.getCompanyId());
+        work.setUpdateTime(new Date());
+        work.setTitle("璐ㄦ娂鍚堝悓杩樻鎻愰啋");
+        work.setConfId(conf.getId());
+        work.setStatus(WorkStatus.STATUS_30.getCode());
+        work.setReceiveTime(new Date());
+
+        work.setDescription("褰撳墠鍚堝悓<" + data.getName() + ">涓嬭川鎶间粨搴�<" + data.getDepotNames() + ">搴撳瓨閲忛噾棰濅綆浜庡緟杩樻閲戦锛岄渶瑕佽繘琛岃繕娆撅紒");
+
+        work.setCreateBy("绯荤粺鐢熸垚");
+        work.setCreateById("sys");
+        work.setUpdateBy("绯荤粺鐢熸垚");
+
+        String nextNode = this.getNextNode(WorkNode.NODE_START.getCode(), conf).getCode();
+        work.setNode(nextNode);
+        orderService.addData(work);
+
+        //娣诲姞璁板綍
+        WorkOrderProcess process = new WorkOrderProcess();
+        process.setId(ContextUtil.UUID());
+        process.setAction("鎻愪氦");
+        process.setCreateTime(new Date());
+        process.setOrderId(work.getId());
+        process.setAssigneeName(work.getCreateBy());
+        process.setAssigneeId(work.getCreateById());
+        process.setNode(WorkNode.NODE_START.getCode());
+        orderProcessService.addData(process, false);
+
+        return BaseResp.success();
+    }
+
+    /**
      * 鑾峰彇寰呭鐞嗗伐鍗�
      * @return 澶勭悊缁撴灉
      */
     public BaseResp todoByProcess(WorkOrderProcess process) {
 
+        String action = process.getAction();
+        if (StringUtils.isEmpty(action)) {
+            return BaseResp.error("娌℃湁璇嗗埆鍒板鐞嗗姩浣滐紝璇烽噸鏂板皾璇�");
+        }
+
         log.info("-----宸ュ崟澶勭悊-----{}", process);
         //鑾峰彇宸ュ崟
         WorkOrder work = orderService.selectById(process.getOrderId());
         if (null == work) return BaseResp.error("褰撳墠宸ュ崟宸蹭笉瀛樺湪");
+
+        if (work.getStatus().equals(WorkStatus.STATUS_50.getCode())
+                || work.getStatus().equals(WorkStatus.STATUS_60.getCode())) {
+            return BaseResp.error("褰撳墠宸ュ崟宸插鐞嗭紝璇峰埛鏂伴〉闈㈤噸璇曪紒锛�");
+        }
+
+
+        //鍒ゆ柇鏄笉鏄寚瀹氬鐞嗕汉
+        SysUser user = ContextUtil.getLoginUser();
+        if (StringUtils.isNotEmpty(work.getAssigneeId())) {
+            if (!work.getAssigneeId().equals(user.getLoginName())) {
+                return BaseResp.error("褰撳墠宸ュ崟宸插垎閰嶅叾浠栦汉澶勭悊锛岃鍕垮鐞�");
+            }
+        }
 
         String curNode = process.getNode();
         //鑾峰彇澶勭悊浜�
@@ -184,42 +258,93 @@
         if (null == conf) return BaseResp.error("褰撳墠宸ュ崟鏈厤缃祦绋�");
 
 
-        String action = process.getAction();
         //娣诲姞璁板綍
         process.setId(ContextUtil.UUID());
         process.setCreateTime(new Date());
         process.setOrderId(work.getId());
-        process.setAssigneeName(ContextUtil.getLoginUserName());
-        process.setAssigneeId(ContextUtil.getLoginName());
+        process.setAssigneeName(user.getUserName());
+        process.setAssigneeId(user.getLoginName());
 
-        WorkNode node = this.getNextNode(work.getNode(), conf);
+        WorkNode nextNode = this.getNextNode(work.getNode(), conf);
 
-        log.info("宸ュ崟瀹℃壒锛歿}锛屽綋鍓嶈妭鐐癸細{}锛屼笅涓�鑺傜偣锛歿}", work.getTitle(), work.getNode(), node);
+        log.info("宸ュ崟瀹℃壒锛歿}锛屾墽琛屽姩浣滐細{}锛屽綋鍓嶈妭鐐癸細{}锛屼笅涓�鑺傜偣锛歿}", work.getTitle(), action, work.getNode(), nextNode);
 
         //閫氳繃鎿嶄綔
         if ("pass".equals(action)) {
             process.setAction("閫氳繃");
-            process.setNode(node.getCode());
-
+            process.setNode(work.getNode());
             //缁撴潫鍒ゆ柇锛屽鏋滄槸缁撴潫鑺傜偣锛屽垯缁撴潫宸ュ崟
-            if(WorkNode.NODE_END.getCode().equals(process.getNode())){
+            if (WorkNode.NODE_END.getCode().equals(nextNode.getCode())) {
                 work.setStatus(WorkStatus.STATUS_50.getCode());
+                work.setAssigneeName(process.getAssigneeName());
+                work.setAssigneeId(process.getAssigneeId());
+                work.setNode(nextNode.getCode());
                 orderService.complete(work);
+            }else{
+                work.setNode(nextNode.getCode());
+                work.setStatus(WorkStatus.STATUS_30.getCode());
+                orderService.updateData(work);
             }
+
+            //澧炲姞瀹℃壒璁板綍
+            orderProcessService.addData(process, WorkNode.NODE_END.equals(nextNode));
+            return BaseResp.success();
         }
 
         //鎷掔粷鎿嶄綔
         if ("refuse".equals(action)) {
             process.setAction("鎷掔粷");
-            process.setNode(WorkNode.NODE_END.getCode());
+            process.setNode(work.getNode());
+
             work.setStatus(WorkStatus.STATUS_60.getCode());
 
             orderService.complete(work);
+            
+            //澧炲姞瀹℃壒璁板綍
+            orderProcessService.addData(process, true);
+
+            return BaseResp.success();
         }
 
-        //澧炲姞瀹℃壒璁板綍
-        orderProcessService.addData(process);
+        //寮傚父澶勭悊
+        if ("error".equals(action)) {
+            process.setAction("寮傚父澶勭悊");
+            process.setNode(work.getNode());
+            work.setStatus(WorkStatus.STATUS_50.getCode());
 
-        return BaseResp.success();
+//            work.setAssigneeName(process.getAssigneeName());
+//            work.setAssigneeId(process.getAssigneeId());
+
+
+            orderService.complete(work);
+
+            //澧炲姞瀹℃壒璁板綍
+            orderProcessService.addData(process, true);
+
+            return BaseResp.success();
+        }
+
+        //杞氦鎴栬�呮寚娲炬搷浣�
+        if ("transfer".equals(action)) {
+
+            if (StringUtils.isEmpty(process.getAssigneeName())) {
+                return BaseResp.error("璇烽�夋嫨澶勭悊浜�");
+            }
+
+            process.setAction("杞氦/鎸囨淳");
+            process.setNode(work.getNode());
+            String info = user.getUserName() + "杞氦缁�" + process.getAssigneeName() + "澶勭悊锛屽鐞嗗缓璁細" + process.getRemark();
+            process.setRemark(info);
+            //鏇存柊澶勭悊浜�
+            work.setAssigneeId(process.getAssigneeId());
+            work.setAssigneeName(process.getAssigneeName());
+
+            orderService.updateData(work);
+
+            orderProcessService.addData(process, false);
+            return BaseResp.success();
+        }
+
+        return BaseResp.error("绯荤粺娌℃湁璇嗗埆鍒版搷浣滃姩浣滐紝鏈墽琛岀浉鍏虫祦绋嬪鎵�");
     }
 }

--
Gitblit v1.9.3