|
@@ -11,6 +11,7 @@ import com.qmth.distributed.print.business.bean.flow.link.FlowTaskNode;
|
|
import com.qmth.distributed.print.business.bean.result.*;
|
|
import com.qmth.distributed.print.business.bean.result.*;
|
|
import com.qmth.distributed.print.business.entity.*;
|
|
import com.qmth.distributed.print.business.entity.*;
|
|
import com.qmth.distributed.print.business.enums.CustomFlowMultipleUserApproveTypeEnum;
|
|
import com.qmth.distributed.print.business.enums.CustomFlowMultipleUserApproveTypeEnum;
|
|
|
|
+import com.qmth.distributed.print.business.enums.CustomFlowRejectResubmitTypeEnum;
|
|
import com.qmth.distributed.print.business.enums.CustomFlowTypeEnum;
|
|
import com.qmth.distributed.print.business.enums.CustomFlowTypeEnum;
|
|
import com.qmth.distributed.print.business.enums.ExamStatusEnum;
|
|
import com.qmth.distributed.print.business.enums.ExamStatusEnum;
|
|
import com.qmth.distributed.print.business.service.*;
|
|
import com.qmth.distributed.print.business.service.*;
|
|
@@ -374,17 +375,25 @@ public class ActivitiServiceImpl implements ActivitiService {
|
|
//获取当前流程和下一流程setup
|
|
//获取当前流程和下一流程setup
|
|
currFlowTaskResult = gson.fromJson(gson.toJson(setupMap.get(userTask.getId())), FlowTaskResult.class);
|
|
currFlowTaskResult = gson.fromJson(gson.toJson(setupMap.get(userTask.getId())), FlowTaskResult.class);
|
|
if (approvePass == FlowApprovePassEnum.PASS) {
|
|
if (approvePass == FlowApprovePassEnum.PASS) {
|
|
|
|
+ int currSetup = currFlowTaskResult.getSetup().intValue();
|
|
|
|
+ currSetup = currSetup == setupMap.size() - 1 ? 0 : currSetup + 1;
|
|
//驳回再提交时,需要走网关路线
|
|
//驳回再提交时,需要走网关路线
|
|
if (tfFlowApprove.getStatus() == FlowStatusEnum.REJECT) {
|
|
if (tfFlowApprove.getStatus() == FlowStatusEnum.REJECT) {
|
|
- //获取最后一条审批记录,确认网关走向流程节点
|
|
|
|
- TFFlowLog tfFlowLogLast = tfFlowLogService.findByLast(flowId, examTask.getSchoolId(), FlowApproveOperationEnum.REJECT);
|
|
|
|
- Optional.ofNullable(tfFlowLogLast).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("流程驳回节点数据为空"));
|
|
|
|
|
|
+ //获取驳回路线
|
|
|
|
+ FlowTaskResult flowTaskResultRejectLinkDto = null;
|
|
|
|
+ Map<String, FlowTaskResult> rejectLinkMap = null;
|
|
|
|
+ if (Objects.nonNull(tfFlowApprove.getRejectLink())) {
|
|
|
|
+ rejectLinkMap = JacksonUtil.readJson(tfFlowApprove.getRejectLink(), Map.class);
|
|
|
|
+ if (Objects.nonNull(rejectLinkMap.get(userTask.getId()))) {
|
|
|
|
+ flowTaskResultRejectLinkDto = gson.fromJson(gson.toJson(rejectLinkMap.get(userTask.getId())), FlowTaskResult.class);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
|
|
nextFlowTaskResult = this.getNextFlowTaskResult(nrOfCompletedInstances,
|
|
nextFlowTaskResult = this.getNextFlowTaskResult(nrOfCompletedInstances,
|
|
nrOfInstances,
|
|
nrOfInstances,
|
|
currFlowTaskResult,
|
|
currFlowTaskResult,
|
|
nextFlowTaskResult,
|
|
nextFlowTaskResult,
|
|
- tfFlowLogLast.getApproveSetup().intValue(),
|
|
|
|
|
|
+ Objects.nonNull(flowTaskResultRejectLinkDto) ? flowTaskResultRejectLinkDto.getSetup() : currSetup,
|
|
setupMap,
|
|
setupMap,
|
|
gson,
|
|
gson,
|
|
approvePass);
|
|
approvePass);
|
|
@@ -399,10 +408,12 @@ public class ActivitiServiceImpl implements ActivitiService {
|
|
nextFlowTaskResult,
|
|
nextFlowTaskResult,
|
|
map,
|
|
map,
|
|
id);
|
|
id);
|
|
- } else {//走正常路线
|
|
|
|
- int currSetup = currFlowTaskResult.getSetup().intValue();
|
|
|
|
- currSetup = currSetup == setupMap.size() - 1 ? 0 : currSetup + 1;
|
|
|
|
|
|
|
|
|
|
+ if (Objects.nonNull(flowTaskResultRejectLinkDto)) {
|
|
|
|
+ rejectLinkMap.remove(userTask.getId());
|
|
|
|
+ tfFlowApprove.setRejectLink(rejectLinkMap.size() == 0 ? null : JacksonUtil.parseJson(rejectLinkMap));
|
|
|
|
+ }
|
|
|
|
+ } else {//走正常路线
|
|
nextFlowTaskResult = this.getNextFlowTaskResult(nrOfCompletedInstances,
|
|
nextFlowTaskResult = this.getNextFlowTaskResult(nrOfCompletedInstances,
|
|
nrOfInstances,
|
|
nrOfInstances,
|
|
currFlowTaskResult,
|
|
currFlowTaskResult,
|
|
@@ -439,9 +450,12 @@ public class ActivitiServiceImpl implements ActivitiService {
|
|
this.approveReject(multiInstance,
|
|
this.approveReject(multiInstance,
|
|
map,
|
|
map,
|
|
id,
|
|
id,
|
|
|
|
+ currFlowTaskResult,
|
|
nextFlowTaskResult,
|
|
nextFlowTaskResult,
|
|
tfFlowApprove,
|
|
tfFlowApprove,
|
|
- tfFlowLog);
|
|
|
|
|
|
+ tfFlowLog,
|
|
|
|
+ agginessMap,
|
|
|
|
+ gson);
|
|
}
|
|
}
|
|
//获取流程变量
|
|
//获取流程变量
|
|
this.getAgginess(nextFlowTaskResult,
|
|
this.getAgginess(nextFlowTaskResult,
|
|
@@ -590,16 +604,22 @@ public class ActivitiServiceImpl implements ActivitiService {
|
|
* @param multiInstance
|
|
* @param multiInstance
|
|
* @param map
|
|
* @param map
|
|
* @param id
|
|
* @param id
|
|
|
|
+ * @param currFlowTaskResult
|
|
* @param nextFlowTaskResult
|
|
* @param nextFlowTaskResult
|
|
* @param tfFlowApprove
|
|
* @param tfFlowApprove
|
|
* @param tfFlowLog
|
|
* @param tfFlowLog
|
|
|
|
+ * @param agginessMap
|
|
|
|
+ * @param gson
|
|
*/
|
|
*/
|
|
protected void approveReject(boolean multiInstance,
|
|
protected void approveReject(boolean multiInstance,
|
|
Map<String, Object> map,
|
|
Map<String, Object> map,
|
|
String id,
|
|
String id,
|
|
|
|
+ FlowTaskResult currFlowTaskResult,
|
|
FlowTaskResult nextFlowTaskResult,
|
|
FlowTaskResult nextFlowTaskResult,
|
|
TFFlowApprove tfFlowApprove,
|
|
TFFlowApprove tfFlowApprove,
|
|
- TFFlowLog tfFlowLog) {
|
|
|
|
|
|
+ TFFlowLog tfFlowLog,
|
|
|
|
+ Map<String, CustomFlowVarDto> agginessMap,
|
|
|
|
+ Gson gson) {
|
|
if (multiInstance) {
|
|
if (multiInstance) {
|
|
map.computeIfAbsent(FlowApproveOperationEnum.REJECT.getId() + id, v -> 1);
|
|
map.computeIfAbsent(FlowApproveOperationEnum.REJECT.getId() + id, v -> 1);
|
|
}
|
|
}
|
|
@@ -607,6 +627,17 @@ public class ActivitiServiceImpl implements ActivitiService {
|
|
tfFlowApprove.setSetup(nextFlowTaskResult.getSetup());
|
|
tfFlowApprove.setSetup(nextFlowTaskResult.getSetup());
|
|
tfFlowApprove.setStatus(FlowStatusEnum.REJECT);
|
|
tfFlowApprove.setStatus(FlowStatusEnum.REJECT);
|
|
tfFlowLog.setApproveOperation(FlowApproveOperationEnum.REJECT);
|
|
tfFlowLog.setApproveOperation(FlowApproveOperationEnum.REJECT);
|
|
|
|
+ CustomFlowVarDto customFlowVarDto = gson.fromJson(gson.toJson(agginessMap.get(currFlowTaskResult.getTaskKey())), CustomFlowVarDto.class);
|
|
|
|
+ if (Objects.nonNull(customFlowVarDto) && customFlowVarDto.getRejectResubmitType() == CustomFlowRejectResubmitTypeEnum.PREV_STEP) {
|
|
|
|
+ Map<String, FlowTaskResult> rejectLinkMap = null;
|
|
|
|
+ if (Objects.nonNull(tfFlowApprove.getRejectLink())) {
|
|
|
|
+ rejectLinkMap = JacksonUtil.readJson(tfFlowApprove.getRejectLink(), Map.class);
|
|
|
|
+ } else {
|
|
|
|
+ rejectLinkMap = new HashMap<>();
|
|
|
|
+ }
|
|
|
|
+ rejectLinkMap.put(nextFlowTaskResult.getTaskKey(), currFlowTaskResult);
|
|
|
|
+ tfFlowApprove.setRejectLink(JacksonUtil.parseJson(rejectLinkMap));
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|