From bdcb64f0293f27e2dfb3de12a60f6e8412cb962b Mon Sep 17 00:00:00 2001
From: java110 <928255095@qq.com>
Date: 星期四, 26 五月 2022 01:45:22 +0800
Subject: [PATCH] 退费修改为 从证书地址中获取

---
 service-common/src/main/java/com/java110/common/smo/impl/OaWorkflowUserInnerServiceSMOImpl.java |  355 ++++++++++++++++++++++++++++++++++++++++++++++------------
 1 files changed, 281 insertions(+), 74 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 8ee1d53..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,33 +2,36 @@
 
 
 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;
 import com.java110.dto.auditMessage.AuditMessageDto;
+import com.java110.dto.oaWorkflowData.OaWorkflowDataDto;
 import com.java110.dto.user.UserDto;
 import com.java110.dto.workflow.WorkflowDto;
 import com.java110.entity.audit.AuditUser;
 import com.java110.intf.common.IOaWorkflowUserInnerServiceSMO;
 import com.java110.intf.common.IWorkflowInnerServiceSMO;
+import com.java110.intf.oa.IOaWorkflowDataInnerServiceSMO;
 import com.java110.intf.user.IUserInnerServiceSMO;
+import com.java110.po.oaWorkflowData.OaWorkflowDataPo;
 import com.java110.utils.util.Assert;
+import com.java110.utils.util.DateUtil;
 import com.java110.utils.util.StringUtil;
 import org.activiti.bpmn.model.*;
 import org.activiti.engine.*;
-import org.activiti.engine.history.HistoricActivityInstance;
 import org.activiti.engine.history.HistoricProcessInstance;
 import org.activiti.engine.history.HistoricTaskInstance;
 import org.activiti.engine.history.HistoricTaskInstanceQuery;
 import org.activiti.engine.impl.identity.Authentication;
-import org.activiti.engine.impl.persistence.entity.ProcessDefinitionEntity;
 import org.activiti.engine.query.Query;
-import org.activiti.engine.runtime.Execution;
 import org.activiti.engine.runtime.ProcessInstance;
 import org.activiti.engine.task.Comment;
 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;
@@ -64,6 +67,9 @@
     @Autowired
     private RepositoryService repositoryService;
 
+    @Autowired
+    private IOaWorkflowDataInnerServiceSMO oaWorkflowDataInnerServiceSMOImpl;
+
 
     /**
      * 鍚姩娴佺▼
@@ -76,6 +82,12 @@
         //variables.put("reqJson", reqJson);
         variables.put("startUserId", reqJson.getString("createUserId"));
         variables.put("nextUserId", reqJson.getString("createUserId"));
+        UserDto userDto = new UserDto();
+        userDto.setUserId(reqJson.getString("createUserId"));
+        List<UserDto> users = userInnerServiceSMOImpl.getUsers(userDto);
+
+        Assert.listOnlyOne(users, "鐢ㄦ埛涓嶅瓨鍦�");
+
         ProcessInstance processInstance = runtimeService.startProcessInstanceByKey(getWorkflowDto(reqJson.getString("flowId")), reqJson.getString("id"), variables);
         //灏嗗緱鍒扮殑瀹炰緥娴佺▼id鍊艰祴缁欎箣鍓嶈缃殑鍙橀噺
         String processInstanceId = processInstance.getId();
@@ -83,6 +95,20 @@
         reqJson.put("processInstanceId", processInstanceId);
         //绗竴涓妭鐐硅嚜鍔ㄦ彁浜�
         //autoFinishFirstTask(reqJson);
+        //鍒峰叆鎵╁睍琛�
+        OaWorkflowDataPo oaWorkflowDataPo = null;
+        oaWorkflowDataPo = new OaWorkflowDataPo();
+        oaWorkflowDataPo.setBusinessKey(reqJson.getString("id"));
+        oaWorkflowDataPo.setFlowId(reqJson.getString("flowId"));
+        oaWorkflowDataPo.setContext(reqJson.getString("auditMessage"));
+        oaWorkflowDataPo.setDataId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_dataId));
+        oaWorkflowDataPo.setEvent(OaWorkflowDataDto.EVENT_COMMIT);
+        oaWorkflowDataPo.setPreDataId("-1");
+        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"));
+        oaWorkflowDataInnerServiceSMOImpl.saveOaWorkflowData(oaWorkflowDataPo);
         return reqJson;
     }
 
@@ -231,12 +257,22 @@
     }
 
 
+    @Java110Transactional
     public boolean completeTask(@RequestBody JSONObject reqJson) {
         TaskService taskService = processEngine.getTaskService();
         Task task = taskService.createTaskQuery().taskId(reqJson.getString("taskId")).singleResult();
         if (task == null) {
             throw new IllegalArgumentException("浠诲姟宸插鐞�");
         }
+
+        //鍒ゆ柇鏄惁涓虹粨鏉熸祦绋�
+        if ("1500".equals(reqJson.getString("auditCode"))) {
+            doTaskFinish(reqJson);
+        } else {
+            //鎵╁睍 宸ヤ綔娴佸姛鑳�
+            doTaskAuditAgree(reqJson);
+        }
+
         String processInstanceId = task.getProcessInstanceId();
         Authentication.setAuthenticatedUserId(reqJson.getString("nextUserId"));
         taskService.addComment(reqJson.getString("taskId"), processInstanceId, reqJson.getString("auditMessage"));
@@ -251,88 +287,229 @@
         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);
+    }
+
+    /**
+     * 澶勭悊 瀹℃牳鐘舵��
+     *
+     * @param reqJson
+     */
+    private void doTaskAuditAgree(JSONObject reqJson) {
+        UserDto userDto = new UserDto();
+        userDto.setUserId(reqJson.getString("nextUserId"));
+        List<UserDto> users = userInnerServiceSMOImpl.getUsers(userDto);
+
+        Assert.listOnlyOne(users, "鐢ㄦ埛涓嶅瓨鍦�");
+
+        String preDataId = "-1";
+        //鏌ヨ褰撳墠鑺傜偣
+        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);
+
+        OaWorkflowDataPo oaWorkflowDataPo = null;
+        if (oaWorkflowDataDtos == null || oaWorkflowDataDtos.size() < 1) {
+            oaWorkflowDataPo = new OaWorkflowDataPo();
+            oaWorkflowDataPo.setBusinessKey(reqJson.getString("id"));
+            oaWorkflowDataPo.setFlowId(reqJson.getString("flowId"));
+            oaWorkflowDataPo.setContext("");
+            oaWorkflowDataPo.setDataId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_dataId));
+            oaWorkflowDataPo.setEvent(OaWorkflowDataDto.EVENT_COMMIT);
+            oaWorkflowDataPo.setPreDataId(preDataId);
+            oaWorkflowDataPo.setStaffId(reqJson.getString("nextUserId"));
+            oaWorkflowDataPo.setStaffName(users.get(0).getName());
+            oaWorkflowDataPo.setStartTime(DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_A));
+            oaWorkflowDataPo.setStoreId(reqJson.getString("storeId"));
+            oaWorkflowDataInnerServiceSMOImpl.saveOaWorkflowData(oaWorkflowDataPo);
+            return;
+        }
+        //淇敼 褰撳墠 涓哄畬鎴�
+        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("");
+        oaWorkflowDataPo.setDataId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_dataId));
+        oaWorkflowDataPo.setEvent(OaWorkflowDataDto.EVENT_COMMIT);
+        oaWorkflowDataPo.setPreDataId(oaWorkflowDataDtos.get(0).getDataId());
+        oaWorkflowDataPo.setStaffId(reqJson.getString("nextUserId"));
+        oaWorkflowDataPo.setStaffName(users.get(0).getName());
+        oaWorkflowDataPo.setStartTime(DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_A));
+        oaWorkflowDataPo.setStoreId(reqJson.getString("storeId"));
+        oaWorkflowDataInnerServiceSMOImpl.saveOaWorkflowData(oaWorkflowDataPo);
+    }
+
+    /**
+     * 杞姙
+     *
+     * @param reqJson
+     * @return
+     */
+    @Java110Transactional
     public boolean changeTaskToOtherUser(@RequestBody 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);
+
+        Assert.listOnlyOne(oaWorkflowDataDtos, "鏁版嵁閿欒鏈寘鍚笂绾ф暟鎹�");
+
+        UserDto userDto = new UserDto();
+        userDto.setUserId(reqJson.getString("nextUserId"));
+        List<UserDto> users = userInnerServiceSMOImpl.getUsers(userDto);
+
+        Assert.listOnlyOne(users, "鐢ㄦ埛涓嶅瓨鍦�");
+
         TaskService taskService = processEngine.getTaskService();
         Task task = taskService.createTaskQuery().taskId(reqJson.getString("taskId")).singleResult();
         String processInstanceId = task.getProcessInstanceId();
         taskService.addComment(reqJson.getString("taskId"), processInstanceId, reqJson.getString("auditMessage"));
         taskService.setAssignee(reqJson.getString("taskId"), reqJson.getString("nextUserId"));
         //taskService.setOwner(reqJson.getString("taskId"), reqJson.getString("nextUserId"));
+
+        OaWorkflowDataPo oaWorkflowDataPo = null;
+        //淇敼 褰撳墠 涓哄畬鎴�
+        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("");
+        oaWorkflowDataPo.setDataId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_dataId));
+        oaWorkflowDataPo.setEvent(OaWorkflowDataDto.EVENT_TRANSFER);
+        oaWorkflowDataPo.setPreDataId(oaWorkflowDataDtos.get(0).getDataId());
+        oaWorkflowDataPo.setStaffId(reqJson.getString("nextUserId"));
+        oaWorkflowDataPo.setStaffName(users.get(0).getName());
+        oaWorkflowDataPo.setStartTime(DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_A));
+        oaWorkflowDataPo.setStoreId(reqJson.getString("storeId"));
+        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("娴佺▼鏈惎鍔ㄦ垨宸叉墽琛屽畬鎴愶紝鏃犳硶閫�鍥�");
+            throw new IllegalArgumentException("浠诲姟宸插鐞�");
         }
-        List<HistoricTaskInstance> htiList = historyService.createHistoricTaskInstanceQuery()
-                .processInstanceBusinessKey(reqJson.getString("id"))
-                .orderByTaskCreateTime()
-                .asc()
-                .list();
-        String myTaskId = null;
-        HistoricTaskInstance myTask = null;
-        for (HistoricTaskInstance hti : htiList) {
-            if (reqJson.getString("curUserId").equals(hti.getAssignee())) {
-                myTaskId = hti.getId();
-                myTask = hti;
-                break;
-            }
+//        //閫�鍥炵粰鎻愪氦鑰�
+//        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)) { //鎻愪氦鐘舵��
+            String processInstanceId = task.getProcessInstanceId();
+            Authentication.setAuthenticatedUserId(reqJson.getString("nextUserId"));
+            taskService.addComment(reqJson.getString("taskId"), processInstanceId, reqJson.getString("auditMessage"));
+            Map<String, Object> variables = new HashMap<String, Object>();
+            variables.put("nextUserId", reqJson.getString("nextUserId"));
+            variables.put("auditCode", reqJson.getString("auditCode"));
+            taskService.complete(reqJson.getString("taskId"), variables);
+        } else { //杞崟
+            taskService.setAssignee(reqJson.getString("taskId"), reqJson.getString("nextUserId"));
         }
-        if (null == myTaskId) {
-            throw new IllegalArgumentException("璇ヤ换鍔¢潪褰撳墠鐢ㄦ埛鎻愪氦锛屾棤娉曢��鍥�");
-        }
-
-        String processDefinitionId = myTask.getProcessDefinitionId();
-        ProcessDefinitionEntity processDefinitionEntity = (ProcessDefinitionEntity) repositoryService.createProcessDefinitionQuery().processDefinitionId(processDefinitionId).singleResult();
-        BpmnModel bpmnModel = repositoryService.getBpmnModel(processDefinitionId);
-
-        //鍙橀噺
-//		Map<String, VariableInstance> variables = runtimeService.getVariableInstances(currentTask.getExecutionId());
-        String myActivityId = null;
-        List<HistoricActivityInstance> haiList = historyService.createHistoricActivityInstanceQuery()
-                .executionId(myTask.getExecutionId()).finished().list();
-        for (HistoricActivityInstance hai : haiList) {
-            if (myTaskId.equals(hai.getTaskId())) {
-                myActivityId = hai.getActivityId();
-                break;
-            }
-        }
-        FlowNode myFlowNode = (FlowNode) bpmnModel.getMainProcess().getFlowElement(myActivityId);
-
-
-        Execution execution = runtimeService.createExecutionQuery().executionId(task.getExecutionId()).singleResult();
-        String activityId = execution.getActivityId();
-        logger.warn("------->> activityId:" + activityId);
-        FlowNode flowNode = (FlowNode) bpmnModel.getMainProcess().getFlowElement(activityId);
-
-        //璁板綍鍘熸椿鍔ㄦ柟鍚�
-        List<SequenceFlow> oriSequenceFlows = new ArrayList<SequenceFlow>();
-        oriSequenceFlows.addAll(flowNode.getOutgoingFlows());
-
-        //娓呯悊娲诲姩鏂瑰悜
-        flowNode.getOutgoingFlows().clear();
-        //寤虹珛鏂版柟鍚�
-        List<SequenceFlow> newSequenceFlowList = new ArrayList<SequenceFlow>();
-        SequenceFlow newSequenceFlow = new SequenceFlow();
-        newSequenceFlow.setId("newSequenceFlowId");
-        newSequenceFlow.setSourceFlowElement(flowNode);
-        newSequenceFlow.setTargetFlowElement(myFlowNode);
-        newSequenceFlowList.add(newSequenceFlow);
-        flowNode.setOutgoingFlows(newSequenceFlowList);
-
-        Authentication.setAuthenticatedUserId(reqJson.getString("curUserId"));
-        taskService.addComment(task.getId(), task.getProcessInstanceId(), "閫�鍥烇紝" + reqJson.getString("auditMessage"));
-
-        Map<String, Object> currentVariables = new HashMap<String, Object>();
-        currentVariables.put("applier", reqJson.getString("curUserId"));
-        //瀹屾垚浠诲姟
-        taskService.complete(task.getId(), currentVariables);
-        //鎭㈠鍘熸柟鍚�
-        flowNode.setOutgoingFlows(oriSequenceFlows);
         return true;
+    }
+
+    /**
+     * 瀹℃牳涓嶅悓鎰� 閫�鍥�
+     *
+     * @param reqJson
+     */
+    private String doTaskAuditUnAgree(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);
+
+        Assert.listOnlyOne(oaWorkflowDataDtos, "娌℃湁涓婄骇澶勭悊浜�");
+
+        if ("-1".equals(oaWorkflowDataDtos.get(0).getPreDataId())) {
+            throw new IllegalArgumentException("娌℃湁涓婄骇澶勭悊浜�");
+        }
+
+        oaWorkflowDataDto = new OaWorkflowDataDto();
+        oaWorkflowDataDto.setStoreId(reqJson.getString("storeId"));
+        oaWorkflowDataDto.setDataId(oaWorkflowDataDtos.get(0).getPreDataId());
+        oaWorkflowDataDto.setPage(1);
+        oaWorkflowDataDto.setRow(1);
+        List<OaWorkflowDataDto> preOaWorkflowDataDtos = oaWorkflowDataInnerServiceSMOImpl.queryOaWorkflowDatas(oaWorkflowDataDto);
+
+        //灏嗙幇鍦ㄨ妭鐐瑰鐞嗕负瀹屾垚
+        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("startUserId"));
+        }
+        oaWorkflowDataPo = new OaWorkflowDataPo();
+        oaWorkflowDataPo.setBusinessKey(preOaWorkflowDataDtos.get(0).getBusinessKey());
+        oaWorkflowDataPo.setFlowId(preOaWorkflowDataDtos.get(0).getFlowId());
+        oaWorkflowDataPo.setContext("");
+        oaWorkflowDataPo.setDataId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_dataId));
+        oaWorkflowDataPo.setEvent(preOaWorkflowDataDtos.get(0).getEvent());
+        oaWorkflowDataPo.setPreDataId(oaWorkflowDataDtos.get(0).getPreDataId());
+        oaWorkflowDataPo.setStaffId(reqJson.getString("nextUserId"));
+        oaWorkflowDataPo.setStaffName(preOaWorkflowDataDtos.get(0).getStaffName());
+        oaWorkflowDataPo.setStartTime(DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_A));
+        oaWorkflowDataPo.setStoreId(preOaWorkflowDataDtos.get(0).getStoreId());
+        oaWorkflowDataInnerServiceSMOImpl.saveOaWorkflowData(oaWorkflowDataPo);
+
+        return oaWorkflowDataDtos.get(0).getEvent();
     }
 
     public List<AuditMessageDto> getAuditMessage(@RequestBody JSONObject reqJson) {
@@ -415,24 +592,54 @@
         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琛ㄨ揪寮�
                 Map vars = new HashMap();
-                vars.put("auditCode","1200");
+                vars.put("auditCode", "1200");
                 if (isCondition(outgoingFlow.getConditionExpression(), vars)) {
                     //true 鑾峰彇杈撳嚭鑺傜偣鍚嶇О
-                    taskObj.put("back",outgoingFlow.getTargetFlowElement().getName());
+                    taskObj.put("back", outgoingFlow.getTargetFlowElement().getName());
+                    isReturn = true;
                 }
-                vars.put("auditCode","1400");
+                vars.put("auditCode", "1400");
                 if (isCondition(outgoingFlow.getConditionExpression(), vars)) {
                     //true 鑾峰彇杈撳嚭鑺傜偣鍚嶇О
-                    taskObj.put("backIndex",outgoingFlow.getTargetFlowElement().getName());
+                    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