From 05683f2b2bdbdbe21cf17ad523c21ab338bd1c54 Mon Sep 17 00:00:00 2001
From: wuxw <928255095@qq.com>
Date: 星期二, 19 七月 2022 21:49:55 +0800
Subject: [PATCH] 优化添加设备 功能

---
 service-common/src/main/java/com/java110/common/smo/impl/OaWorkflowUserInnerServiceSMOImpl.java |  113 +++++++++++++++++++++++++++++++++++++++++++++-----------
 1 files changed, 91 insertions(+), 22 deletions(-)

diff --git a/service-common/src/main/java/com/java110/common/smo/impl/OaWorkflowUserInnerServiceSMOImpl.java b/service-common/src/main/java/com/java110/common/smo/impl/OaWorkflowUserInnerServiceSMOImpl.java
index d9753e2..0f15842 100644
--- a/service-common/src/main/java/com/java110/common/smo/impl/OaWorkflowUserInnerServiceSMOImpl.java
+++ b/service-common/src/main/java/com/java110/common/smo/impl/OaWorkflowUserInnerServiceSMOImpl.java
@@ -2,6 +2,7 @@
 
 
 import com.alibaba.fastjson.JSONObject;
+import com.java110.core.annotation.Java110Transactional;
 import com.java110.core.base.smo.BaseServiceSMO;
 import com.java110.core.factory.GenerateCodeFactory;
 import com.java110.dto.PageDto;
@@ -18,16 +19,8 @@
 import com.java110.utils.util.Assert;
 import com.java110.utils.util.DateUtil;
 import com.java110.utils.util.StringUtil;
-import org.activiti.bpmn.model.BpmnModel;
-import org.activiti.bpmn.model.FlowElement;
-import org.activiti.bpmn.model.FlowNode;
-import org.activiti.bpmn.model.SequenceFlow;
-import org.activiti.bpmn.model.UserTask;
-import org.activiti.engine.HistoryService;
-import org.activiti.engine.ProcessEngine;
-import org.activiti.engine.RepositoryService;
-import org.activiti.engine.RuntimeService;
-import org.activiti.engine.TaskService;
+import org.activiti.bpmn.model.*;
+import org.activiti.engine.*;
 import org.activiti.engine.history.HistoricProcessInstance;
 import org.activiti.engine.history.HistoricTaskInstance;
 import org.activiti.engine.history.HistoricTaskInstanceQuery;
@@ -38,7 +31,7 @@
 import org.activiti.engine.task.Task;
 import org.activiti.engine.task.TaskQuery;
 import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+import com.java110.core.log.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RestController;
@@ -90,7 +83,7 @@
         variables.put("startUserId", reqJson.getString("createUserId"));
         variables.put("nextUserId", reqJson.getString("createUserId"));
         UserDto userDto = new UserDto();
-        userDto.setUserId(reqJson.getString("nextUserId"));
+        userDto.setUserId(reqJson.getString("createUserId"));
         List<UserDto> users = userInnerServiceSMOImpl.getUsers(userDto);
 
         Assert.listOnlyOne(users, "鐢ㄦ埛涓嶅瓨鍦�");
@@ -111,7 +104,7 @@
         oaWorkflowDataPo.setDataId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_dataId));
         oaWorkflowDataPo.setEvent(OaWorkflowDataDto.EVENT_COMMIT);
         oaWorkflowDataPo.setPreDataId("-1");
-        oaWorkflowDataPo.setStaffId(reqJson.getString("nextUserId"));
+        oaWorkflowDataPo.setStaffId(reqJson.getString("createUserId"));
         oaWorkflowDataPo.setStaffName(users.get(0).getName());
         oaWorkflowDataPo.setStartTime(DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_A));
         oaWorkflowDataPo.setStoreId(reqJson.getString("storeId"));
@@ -264,6 +257,7 @@
     }
 
 
+    @Java110Transactional
     public boolean completeTask(@RequestBody JSONObject reqJson) {
         TaskService taskService = processEngine.getTaskService();
         Task task = taskService.createTaskQuery().taskId(reqJson.getString("taskId")).singleResult();
@@ -271,8 +265,13 @@
             throw new IllegalArgumentException("浠诲姟宸插鐞�");
         }
 
-        //鎵╁睍 宸ヤ綔娴佸姛鑳�
-        doTaskAuditAgree(reqJson);
+        //鍒ゆ柇鏄惁涓虹粨鏉熸祦绋�
+        if ("1500".equals(reqJson.getString("auditCode"))) {
+            doTaskFinish(reqJson);
+        } else {
+            //鎵╁睍 宸ヤ綔娴佸姛鑳�
+            doTaskAuditAgree(reqJson);
+        }
 
         String processInstanceId = task.getProcessInstanceId();
         Authentication.setAuthenticatedUserId(reqJson.getString("nextUserId"));
@@ -286,6 +285,25 @@
             return true;
         }
         return false;
+    }
+
+    private void doTaskFinish(JSONObject reqJson) {
+        OaWorkflowDataDto oaWorkflowDataDto = new OaWorkflowDataDto();
+        oaWorkflowDataDto.setStoreId(reqJson.getString("storeId"));
+        oaWorkflowDataDto.setBusinessKey(reqJson.getString("id"));
+        oaWorkflowDataDto.setPage(1);
+        oaWorkflowDataDto.setRow(1);
+        List<OaWorkflowDataDto> oaWorkflowDataDtos = oaWorkflowDataInnerServiceSMOImpl.queryOaWorkflowDatas(oaWorkflowDataDto);
+
+        if (oaWorkflowDataDtos == null || oaWorkflowDataDtos.size() < 1) {
+            return;
+        }
+        //淇敼 褰撳墠 涓哄畬鎴�
+        OaWorkflowDataPo oaWorkflowDataPo = new OaWorkflowDataPo();
+        oaWorkflowDataPo.setDataId(oaWorkflowDataDtos.get(0).getDataId());
+        oaWorkflowDataPo.setEndTime(DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_A));
+        oaWorkflowDataPo.setContext(reqJson.getString("auditMessage"));
+        oaWorkflowDataInnerServiceSMOImpl.updateOaWorkflowData(oaWorkflowDataPo);
     }
 
     /**
@@ -314,7 +332,7 @@
             oaWorkflowDataPo = new OaWorkflowDataPo();
             oaWorkflowDataPo.setBusinessKey(reqJson.getString("id"));
             oaWorkflowDataPo.setFlowId(reqJson.getString("flowId"));
-            oaWorkflowDataPo.setContext(reqJson.getString("auditMessage"));
+            oaWorkflowDataPo.setContext("");
             oaWorkflowDataPo.setDataId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_dataId));
             oaWorkflowDataPo.setEvent(OaWorkflowDataDto.EVENT_COMMIT);
             oaWorkflowDataPo.setPreDataId(preDataId);
@@ -329,12 +347,18 @@
         oaWorkflowDataPo = new OaWorkflowDataPo();
         oaWorkflowDataPo.setDataId(oaWorkflowDataDtos.get(0).getDataId());
         oaWorkflowDataPo.setEndTime(DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_A));
+        oaWorkflowDataPo.setContext(reqJson.getString("auditMessage"));
         oaWorkflowDataInnerServiceSMOImpl.updateOaWorkflowData(oaWorkflowDataPo);
+
+        //濡傛灉涓�-1 涓嶆彃鍏ヤ换鍔�
+        if ("-1".equals(reqJson.getString("nextUserId"))) {
+            return;
+        }
 
         oaWorkflowDataPo = new OaWorkflowDataPo();
         oaWorkflowDataPo.setBusinessKey(reqJson.getString("id"));
         oaWorkflowDataPo.setFlowId(reqJson.getString("flowId"));
-        oaWorkflowDataPo.setContext(reqJson.getString("auditMessage"));
+        oaWorkflowDataPo.setContext("");
         oaWorkflowDataPo.setDataId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_dataId));
         oaWorkflowDataPo.setEvent(OaWorkflowDataDto.EVENT_COMMIT);
         oaWorkflowDataPo.setPreDataId(oaWorkflowDataDtos.get(0).getDataId());
@@ -351,6 +375,7 @@
      * @param reqJson
      * @return
      */
+    @Java110Transactional
     public boolean changeTaskToOtherUser(@RequestBody JSONObject reqJson) {
 
         //鏌ヨ褰撳墠鑺傜偣
@@ -381,12 +406,13 @@
         oaWorkflowDataPo = new OaWorkflowDataPo();
         oaWorkflowDataPo.setDataId(oaWorkflowDataDtos.get(0).getDataId());
         oaWorkflowDataPo.setEndTime(DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_A));
+        oaWorkflowDataPo.setContext(reqJson.getString("auditMessage"));
         oaWorkflowDataInnerServiceSMOImpl.updateOaWorkflowData(oaWorkflowDataPo);
 
         oaWorkflowDataPo = new OaWorkflowDataPo();
         oaWorkflowDataPo.setBusinessKey(reqJson.getString("id"));
         oaWorkflowDataPo.setFlowId(reqJson.getString("flowId"));
-        oaWorkflowDataPo.setContext(reqJson.getString("auditMessage"));
+        oaWorkflowDataPo.setContext("");
         oaWorkflowDataPo.setDataId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_dataId));
         oaWorkflowDataPo.setEvent(OaWorkflowDataDto.EVENT_TRANSFER);
         oaWorkflowDataPo.setPreDataId(oaWorkflowDataDtos.get(0).getDataId());
@@ -397,13 +423,25 @@
         oaWorkflowDataInnerServiceSMOImpl.saveOaWorkflowData(oaWorkflowDataPo);
         return true;
     }
-
+    @Java110Transactional
     public boolean goBackTask(@RequestBody JSONObject reqJson) {
         TaskService taskService = processEngine.getTaskService();
         Task task = taskService.createTaskQuery().taskId(reqJson.getString("taskId")).singleResult();
         if (task == null) {
             throw new IllegalArgumentException("浠诲姟宸插鐞�");
         }
+//        //閫�鍥炵粰鎻愪氦鑰�
+//        if ("1400".equals(reqJson.getString("auditCode"))) {
+//            String processInstanceId = task.getProcessInstanceId();
+//            Authentication.setAuthenticatedUserId(reqJson.getString("startUserId"));
+//            taskService.addComment(reqJson.getString("taskId"), processInstanceId, reqJson.getString("auditMessage"));
+//            Map<String, Object> variables = new HashMap<String, Object>();
+//            variables.put("nextUserId", reqJson.getString("startUserId"));
+//            variables.put("auditCode", reqJson.getString("auditCode"));
+//            taskService.complete(reqJson.getString("taskId"), variables);
+//
+//            return true;
+//        }
 
         String event = doTaskAuditUnAgree(reqJson);
         if (OaWorkflowDataDto.EVENT_COMMIT.equals(event)) { //鎻愪氦鐘舵��
@@ -442,7 +480,7 @@
 
         oaWorkflowDataDto = new OaWorkflowDataDto();
         oaWorkflowDataDto.setStoreId(reqJson.getString("storeId"));
-        oaWorkflowDataDto.setDataId(reqJson.getString(oaWorkflowDataDtos.get(0).getPreDataId()));
+        oaWorkflowDataDto.setDataId(oaWorkflowDataDtos.get(0).getPreDataId());
         oaWorkflowDataDto.setPage(1);
         oaWorkflowDataDto.setRow(1);
         List<OaWorkflowDataDto> preOaWorkflowDataDtos = oaWorkflowDataInnerServiceSMOImpl.queryOaWorkflowDatas(oaWorkflowDataDto);
@@ -451,16 +489,17 @@
         OaWorkflowDataPo oaWorkflowDataPo = new OaWorkflowDataPo();
         oaWorkflowDataPo.setDataId(oaWorkflowDataDtos.get(0).getDataId());
         oaWorkflowDataPo.setEndTime(DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_A));
+        oaWorkflowDataPo.setContext(reqJson.getString("auditMessage"));
         oaWorkflowDataInnerServiceSMOImpl.updateOaWorkflowData(oaWorkflowDataPo);
 
         reqJson.put("nextUserId", preOaWorkflowDataDtos.get(0).getStaffId());
         if ("1400".equals(reqJson.getString("auditCode"))) {
-            reqJson.put("nextUserId", reqJson.getString("createUserId"));
+            reqJson.put("nextUserId", reqJson.getString("startUserId"));
         }
         oaWorkflowDataPo = new OaWorkflowDataPo();
         oaWorkflowDataPo.setBusinessKey(preOaWorkflowDataDtos.get(0).getBusinessKey());
         oaWorkflowDataPo.setFlowId(preOaWorkflowDataDtos.get(0).getFlowId());
-        oaWorkflowDataPo.setContext(reqJson.getString("auditMessage"));
+        oaWorkflowDataPo.setContext("");
         oaWorkflowDataPo.setDataId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_dataId));
         oaWorkflowDataPo.setEvent(preOaWorkflowDataDtos.get(0).getEvent());
         oaWorkflowDataPo.setPreDataId(oaWorkflowDataDtos.get(0).getPreDataId());
@@ -553,10 +592,13 @@
         List<SequenceFlow> outgoingFlows = flowNode.getOutgoingFlows();
         JSONObject taskObj = null;
         taskObj = new JSONObject();
+        taskObj.put("assignee", "-1"); //  榛樿 涓嶉渶瑕佹寚瀹氫笅涓�涓鐞嗕汉 琛ㄧず缁撴潫
+        boolean isReturn = false;
         //閬嶅巻杈撳嚭杩炵嚎
         for (SequenceFlow outgoingFlow : outgoingFlows) {
             //鑾峰彇杈撳嚭鑺傜偣鍏冪礌
             FlowElement targetFlowElement = outgoingFlow.getTargetFlowElement();
+            isReturn = false;
             //鎺掗櫎闈炵敤鎴蜂换鍔℃帴鐐�
             if (targetFlowElement instanceof UserTask) {
                 //鍒ゆ柇杈撳嚭鑺傜偣鐨別l琛ㄨ揪寮�
@@ -565,12 +607,39 @@
                 if (isCondition(outgoingFlow.getConditionExpression(), vars)) {
                     //true 鑾峰彇杈撳嚭鑺傜偣鍚嶇О
                     taskObj.put("back", outgoingFlow.getTargetFlowElement().getName());
+                    isReturn = true;
                 }
                 vars.put("auditCode", "1400");
                 if (isCondition(outgoingFlow.getConditionExpression(), vars)) {
                     //true 鑾峰彇杈撳嚭鑺傜偣鍚嶇О
                     taskObj.put("backIndex", outgoingFlow.getTargetFlowElement().getName());
+                    isReturn = true;
                 }
+                //缁撴潫
+                vars.put("auditCode", "1500");
+                if (isCondition(outgoingFlow.getConditionExpression(), vars)) {
+                    //true 鑾峰彇杈撳嚭鑺傜偣鍚嶇О
+                    taskObj.put("exit", outgoingFlow.getTargetFlowElement().getName());
+                    isReturn = true;
+                }
+                if (!isReturn) {
+                    String assignee = ((UserTask) targetFlowElement).getAssignee();
+                    if (!StringUtil.isEmpty(assignee) && assignee.indexOf("${") < 0) {
+                        taskObj.put("assignee", assignee); // 涓嬩竴鑺傜偣澶勭悊浜�
+                    }
+                    if ("${startUserId}".equals(assignee)) {
+                        taskObj.put("assignee", reqJson.getString("startUserId")); // 寮�濮嬩汉
+                    }
+                    if ("${nextUserId}".equals(assignee)) {
+                        taskObj.put("assignee", "-2"); // 闇�瑕佸墠鍙版寚瀹�
+                    }
+                    taskObj.put("next", outgoingFlow.getTargetFlowElement().getName());
+                }
+            }
+            //濡傛灉涓嬩竴涓负 缁撴潫鑺傜偣
+            if (targetFlowElement instanceof EndEvent) {
+                //true 鑾峰彇杈撳嚭鑺傜偣鍚嶇О
+                taskObj.put("exit", "1");
             }
         }
         tasks.add(taskObj);

--
Gitblit v1.8.0