From b0cce93617ea3d4940f1304f2150d8481e1b8a2b Mon Sep 17 00:00:00 2001
From: 上海郢昱 <15922366+miu-haiqing@user.noreply.gitee.com>
Date: 星期一, 07 九月 2026 15:33:20 +0800
Subject: [PATCH] 不合格处理:OA回调新增结束标识字段,每个节点审批结束都更新一次流程信息

---
 inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsUnqualifiedHandlerServiceImpl.java |   66 +++++++++++++++++++++------------
 1 files changed, 42 insertions(+), 24 deletions(-)

diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsUnqualifiedHandlerServiceImpl.java b/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsUnqualifiedHandlerServiceImpl.java
index d8b2c19..4b910ca 100644
--- a/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsUnqualifiedHandlerServiceImpl.java
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsUnqualifiedHandlerServiceImpl.java
@@ -191,9 +191,28 @@
         return Result.success();
     }
 
+    /**
+     * 杩斿洖绗竴涓笉涓虹┖鐨勫瓧绗︿覆
+     * @param values
+     * @return
+     */
+    public static String firstNotBlank(String... values) {
+        if (values == null) {
+            return null;
+        }
+
+        for (String value : values) {
+            if (StringUtils.isNotBlank(value)) {
+                return value;
+            }
+        }
+
+        return null;
+    }
+
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public void unqualifiedHandlerOACallback(Long oaWorkId, String checkResult, JSONObject response) {
+    public void unqualifiedHandlerOACallback(Long oaWorkId, String checkResult,String endFlag, JSONObject response) {
         // 娌℃湁杩欎釜灏辩粨鏉�
         Long count1 = baseMapper.selectCount(Wrappers.<InsUnqualifiedHandler>lambdaQuery()
                 .eq(InsUnqualifiedHandler::getRequestId, Integer.valueOf(String.valueOf(oaWorkId))));
@@ -206,10 +225,12 @@
         clcsMap.put("1","閫�璐�");
         clcsMap.put("2","閮ㄥ垎閫�璐�");
         clcsMap.put("3","闄嶇骇浣跨敤");
+        //娴佺▼缁撴潫鎵嶄慨鏀筼a鐘舵��
+        boolean hasChangeOaState = StringUtils.isNotBlank(endFlag) && endFlag.equals("1");
         //oa鐘舵�侊細3閫氳繃 4椹冲洖
         Integer oaState = "1".equals(checkResult) ? 3 : 4;
         baseMapper.update(null, new LambdaUpdateWrapper<InsUnqualifiedHandler>()
-                .set(InsUnqualifiedHandler::getOaState, oaState)
+                .set(hasChangeOaState,InsUnqualifiedHandler::getOaState, oaState)
                 .set(InsUnqualifiedHandler::getClassification,response.getString("flclassification"))
                 .eq(InsUnqualifiedHandler::getRequestId, Integer.valueOf(String.valueOf(oaWorkId))));
         //淇濆瓨oa瀹℃壒娴佺▼璁板綍
@@ -218,30 +239,31 @@
         for (Object workflowRequestLog : workflowRequestLogs) {
             JSONObject jsonObject = JSONObject.parseObject(JSONObject.toJSONString(workflowRequestLog));
             CommonOa oa = new CommonOa();
-            oa.setApprover(jsonObject.getString("operatorName"));
-            oa.setOperateId(jsonObject.getLong("operateId"));
-            oa.setWorkflowId(oaWorkId);
-            oa.setOperation(jsonObject.getString("operateType"));
-            oa.setApprovalDate(jsonObject.getString("operateDate"));
-            oa.setNodeName(jsonObject.getString("nodeName"));
-            oa.setApprovalTime(jsonObject.getString("operateTime"));
             //璁剧疆鍚勮妭鐐圭殑澶勭悊鎰忚
+            oa.setApprover(jsonObject.getString("operatorName"));//瀹℃壒浜�
+            oa.setOperateId(jsonObject.getLong("operateId"));//瀹℃壒浜篿d
+            oa.setWorkflowId(oaWorkId);//娴佺▼id
+            oa.setApprovalDate(jsonObject.getString("operateDate"));//瀹℃壒鏃ユ湡
+            oa.setNodeName(jsonObject.getString("nodeName"));//鑺傜偣鍚嶇О
+            oa.setApprovalTime(jsonObject.getString("operateTime"));//瀹℃壒鏃堕棿
             if(StringUtils.isNotBlank(oa.getNodeName())){
+                String operateType = jsonObject.getString("operateType");//鑺傜偣鎿嶄綔
+                String approvalOpinion = jsonObject.getString("remark");//澶勭悊鎰忚鎻忚堪
+                oa.setOperation(operateType);
+                oa.setApprovalOpinion(approvalOpinion);
                 if(oa.getNodeName().contains("璐ㄩ噺")){
-                    oa.setOperation(clcsMap.get(response.getString("clcs1")));
-                    oa.setApprovalOpinion(response.getString("dbhgcpdclyqdealwiththenonconfo"));//1.瀵逛笉鍚堟牸浜у搧鐨勫鐞嗚姹�
+                    oa.setOperation(firstNotBlank(clcsMap.get(response.getString("clcs1")),operateType));
+                    oa.setApprovalOpinion(firstNotBlank(response.getString("dbhgcpdclyqdealwiththenonconfo"),approvalOpinion));//1.瀵逛笉鍚堟牸浜у搧鐨勫鐞嗚姹�
                 }else if(oa.getNodeName().contains("宸ヨ壓")){
-                    oa.setApprovalOpinion(response.getString("gjyqimprovementrequirements"));//2.鏀硅繘瑕佹眰
+                    oa.setApprovalOpinion(firstNotBlank(response.getString("gjyqimprovementrequirements"),approvalOpinion));//2.鏀硅繘瑕佹眰
                 }else if(oa.getNodeName().contains("鎶�鏈�")){
-                    oa.setOperation(clcsMap.get(response.getString("clcs2")));
-                    oa.setApprovalOpinion(response.getString("csyqactionrequirement"));//3.鎺柦瑕佹眰
+                    oa.setOperation(firstNotBlank(clcsMap.get(response.getString("clcs2")),operateType));
+                    oa.setApprovalOpinion(firstNotBlank(response.getString("csyqactionrequirement"),approvalOpinion));//3.鎺柦瑕佹眰
                 }else if(oa.getNodeName().contains("鎬荤粡鐞�")){
-                    oa.setOperation(clcsMap.get(response.getString("clcs3")));
-                    oa.setApprovalOpinion(response.getString("zzclyqfinaltreatmentrequiremen"));//4.鏈�缁堝鐞嗚姹�
+                    oa.setOperation(firstNotBlank(clcsMap.get(response.getString("clcs3")),operateType));
+                    oa.setApprovalOpinion(firstNotBlank(response.getString("zzclyqfinaltreatmentrequiremen"),approvalOpinion));//4.鏈�缁堝鐞嗚姹�
                 }else if(oa.getNodeName().contains("鏍哥畻")){
-                    oa.setApprovalOpinion(response.getString("spyqcompensationrequirement"));//5.绱㈣禂瑕佹眰
-                }else{
-                    oa.setApprovalOpinion(jsonObject.getString("remark"));
+                    oa.setApprovalOpinion(firstNotBlank(response.getString("spyqcompensationrequirement"),approvalOpinion));//5.绱㈣禂瑕佹眰
                 }
             }
 
@@ -276,11 +298,6 @@
     @Override
     @Transactional(rollbackFor = Exception.class)
     public boolean addUnqualifiedHandler(UnqualifiedHandlerDto unqualifiedHandlerDto) {
-        long count = this.count(Wrappers.<InsUnqualifiedHandler>lambdaQuery()
-                .in(InsUnqualifiedHandler::getInsOrderId, unqualifiedHandlerDto.getSelectOrderIds()));
-        if (count > 0) {
-            throw new ErrorException("瀛樺湪宸叉彁浜よ繃涓嶅悎鏍煎鐞嗙殑璁㈠崟");
-        }
         //鐢熸垚鍒嗙粍id
         String groupId = insUnqualifiedHandlerNumberGenerator.generateNumberWithPrefix(6, "GROUP", InsUnqualifiedHandler::getGroupId);
         // 鍘熸潗鏂欑紪鍙峰垏鍓�
@@ -328,6 +345,7 @@
         if(isUpdated){
             //鎺ㄩ�丱A
             PushOADto pushOADto = new PushOADto();
+            pushOADto.setGroupId(unqualifiedHandlerDto.getGroupId());
             pushOADto.setHandlerId(unqualifiedHandlerDto.getId());
             pushOADto.setContract(unqualifiedHandlerDto.getContract());
             pushOA(pushOADto);

--
Gitblit v1.9.3