From 657ae0775ce6f6895487d2a4bc2f24a568742cca Mon Sep 17 00:00:00 2001
From: java110 <928255095@qq.com>
Date: 星期一, 13 九月 2021 15:51:13 +0800
Subject: [PATCH] 优化流程结束环节
---
service-common/src/main/java/com/java110/common/smo/impl/OaWorkflowUserInnerServiceSMOImpl.java | 86 +++++++++++++++++++++++++++++++++++--------
1 files changed, 70 insertions(+), 16 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 30e5f48..21b3878 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
@@ -18,16 +18,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;
@@ -271,8 +263,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 +283,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 +330,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 +345,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());
@@ -381,12 +403,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());
@@ -451,6 +474,7 @@
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());
@@ -460,7 +484,7 @@
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 +577,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 +592,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