|
@@ -588,8 +588,8 @@ public class ApproveCommonBusinessImpl implements IApproveCommonBusiness {
|
|
OperateRespVO operateRespVO = null;
|
|
OperateRespVO operateRespVO = null;
|
|
try {
|
|
try {
|
|
|
|
|
|
- ApproveRecordInfo approveRecordInfo = approveRecordService.findByProcessInstanceId(processInstanceId);
|
|
+ ApproveRecordInfo approveRecordInfo = approveRecordService.findByProcessInstanceId(processInstanceId);
|
|
- approvalInfoDTO = approveRecordInfo.toApprovalInfo();
|
|
+ approvalInfoDTO = approveRecordInfo.toApprovalInfo();
|
|
if (approvalInfoDTO == null) {
|
|
if (approvalInfoDTO == null) {
|
|
approveResultEnum = ApproveResultEnum.FAIL;
|
|
approveResultEnum = ApproveResultEnum.FAIL;
|
|
failMsg = "审批单不存在";
|
|
failMsg = "审批单不存在";
|
|
@@ -600,24 +600,24 @@ public class ApproveCommonBusinessImpl implements IApproveCommonBusiness {
|
|
ResourceInfoDTO resourceInfoVo = updateResourceInfo(operateReqDTO, approvalInfoDTO.getResourceInfoVo());
|
|
ResourceInfoDTO resourceInfoVo = updateResourceInfo(operateReqDTO, approvalInfoDTO.getResourceInfoVo());
|
|
approvalInfoDTO.setResourceInfoVo(resourceInfoVo);
|
|
approvalInfoDTO.setResourceInfoVo(resourceInfoVo);
|
|
|
|
|
|
- String flowType = approvalInfoDTO.getFlowType();
|
|
+ String flowType = approvalInfoDTO.getFlowType();
|
|
FlowTypeEnum flowTypeEnum = EnumUtils.enumOf(FlowTypeEnum.class, flowType);
|
|
FlowTypeEnum flowTypeEnum = EnumUtils.enumOf(FlowTypeEnum.class, flowType);
|
|
- ContentRespDTO contentRespDTO = approveBusiness.generalContentRespVO(flowTypeEnum, resourceInfoVo);
|
|
+ ContentRespDTO contentRespDTO = approveBusiness.generalContentRespVO(flowTypeEnum, resourceInfoVo);
|
|
- approvalInfoDTO.setApplyContent(JSON.toJSONString(contentRespDTO));
|
|
+ approvalInfoDTO.setApplyContent(JSON.toJSONString(contentRespDTO));
|
|
|
|
|
|
String alreadyRedListApprove = approvalInfoDTO.getAlreadyRedListApprove();
|
|
String alreadyRedListApprove = approvalInfoDTO.getAlreadyRedListApprove();
|
|
- TaskHistoryDetailVo taskHistoryDetailVo = workflowClientFactory.getWorkflowTaskClient().queryTaskDetail(taskId);
|
|
+ TaskHistoryDetailVo taskHistoryDetailVo = workflowClientFactory.getWorkflowTaskClient().queryTaskDetail(taskId);
|
|
String taskHistoryDetailVoName = taskHistoryDetailVo.getName();
|
|
String taskHistoryDetailVoName = taskHistoryDetailVo.getName();
|
|
String taskCode = taskHistoryDetailVo.getTaskCode();
|
|
String taskCode = taskHistoryDetailVo.getTaskCode();
|
|
|
|
|
|
String approvalInfoTaskId = approvalInfoDTO.getTaskId();
|
|
String approvalInfoTaskId = approvalInfoDTO.getTaskId();
|
|
String approvalInfoId = approvalInfoDTO.getId();
|
|
String approvalInfoId = approvalInfoDTO.getId();
|
|
String approveNo = approvalInfoDTO.getApproveNo();
|
|
String approveNo = approvalInfoDTO.getApproveNo();
|
|
- String businessCode = approvalInfoDTO.getBusinessCode();
|
|
+ String businessCode = approvalInfoDTO.getBusinessCode();
|
|
String applicantIdcard = approvalInfoDTO.getApplicantIdcard();
|
|
String applicantIdcard = approvalInfoDTO.getApplicantIdcard();
|
|
|
|
|
|
|
|
|
|
-
|
|
+
|
|
if (approveWorkFlowOperationEnum.equals(ApproveWorkFlowOperationEnum.RECALL)
|
|
if (approveWorkFlowOperationEnum.equals(ApproveWorkFlowOperationEnum.RECALL)
|
|
|| approveWorkFlowOperationEnum.equals(ApproveWorkFlowOperationEnum.BACK)) {
|
|
|| approveWorkFlowOperationEnum.equals(ApproveWorkFlowOperationEnum.BACK)) {
|
|
boolean enableOperate = isEnableOperateRecallBack(operateReqDTO, approvalInfoTaskId, taskCode);
|
|
boolean enableOperate = isEnableOperateRecallBack(operateReqDTO, approvalInfoTaskId, taskCode);
|
|
@@ -629,12 +629,29 @@ public class ApproveCommonBusinessImpl implements IApproveCommonBusiness {
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ if (approveWorkFlowOperationEnum.equals(ApproveWorkFlowOperationEnum.SUSPEND)
|
|
|
|
+ || approveWorkFlowOperationEnum.equals(ApproveWorkFlowOperationEnum.ACTIVATE)
|
|
|
|
+ || approveWorkFlowOperationEnum.equals(ApproveWorkFlowOperationEnum.REDO) ) {
|
|
|
|
+ boolean enableOperate = isEnableOperateSuspendActivateRedo(operateReqDTO, approvalInfoTaskId, taskCode);
|
|
|
|
+ if (!enableOperate) {
|
|
|
|
+ return ResponseUtil.dtoFail("该节点不支持此项操作");
|
|
|
|
+ }
|
|
|
|
+ if (StringUtils.isNotEmpty(approvalInfoTaskId)) {
|
|
|
|
+ taskId = approvalInfoTaskId;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
operateRespVO = dcucAuthBusiness.checkHitRedList(applicantIdcard, flowTypeEnum, resourceInfoVo);
|
|
operateRespVO = dcucAuthBusiness.checkHitRedList(applicantIdcard, flowTypeEnum, resourceInfoVo);
|
|
String redListTip = operateRespVO.getRedListTip();
|
|
String redListTip = operateRespVO.getRedListTip();
|
|
Boolean hitRedList = operateRespVO.getHitRedList();
|
|
Boolean hitRedList = operateRespVO.getHitRedList();
|
|
|
|
|
|
|
|
|
|
boolean alreadyRedListApproveBoolean = EnumUtils.enumOf(BooleanEnum.class, alreadyRedListApprove).booleanValue;
|
|
boolean alreadyRedListApproveBoolean = EnumUtils.enumOf(BooleanEnum.class, alreadyRedListApprove).booleanValue;
|
|
|
|
+
|
|
|
|
+
|
|
if (approveWorkFlowOperationEnum.equals(ApproveWorkFlowOperationEnum.COMPLETE_AGREE)) {
|
|
if (approveWorkFlowOperationEnum.equals(ApproveWorkFlowOperationEnum.COMPLETE_AGREE)) {
|
|
|
|
|
|
if (needCheckRedList && (!alreadyRedListApproveBoolean)) {
|
|
if (needCheckRedList && (!alreadyRedListApproveBoolean)) {
|
|
@@ -654,7 +671,7 @@ public class ApproveCommonBusinessImpl implements IApproveCommonBusiness {
|
|
|
|
|
|
|
|
|
|
this.buildTaskRequest(taskRequest, approvalInfoDTO, taskRequestUserInfoDTO, activitiHolderList, null, operateRespVO.getHitRedList());
|
|
this.buildTaskRequest(taskRequest, approvalInfoDTO, taskRequestUserInfoDTO, activitiHolderList, null, operateRespVO.getHitRedList());
|
|
-
|
|
+
|
|
BaseOperateReqDTO baseOperateReqDTO = BaseOperateReqDTO.builder()
|
|
BaseOperateReqDTO baseOperateReqDTO = BaseOperateReqDTO.builder()
|
|
.operateIdcard(ProofsUtil.getIdcard())
|
|
.operateIdcard(ProofsUtil.getIdcard())
|
|
.taskId(taskId)
|
|
.taskId(taskId)
|
|
@@ -668,7 +685,9 @@ public class ApproveCommonBusinessImpl implements IApproveCommonBusiness {
|
|
.hitRedList(operateRespVO.getHitRedList())
|
|
.hitRedList(operateRespVO.getHitRedList())
|
|
.build();
|
|
.build();
|
|
|
|
|
|
- processInstanceVO = baseApproveOperate(baseOperateReqDTO);
|
|
+
|
|
|
|
+ processInstanceVO = baseApproveOperate(baseOperateReqDTO);
|
|
|
|
+
|
|
List<TaskHistoryDetailVo> afterTaskRunDetailVos = processInstanceVO.getTaskRunDetailVos();
|
|
List<TaskHistoryDetailVo> afterTaskRunDetailVos = processInstanceVO.getTaskRunDetailVos();
|
|
|
|
|
|
if (CollectionUtils.isNotEmpty(afterTaskRunDetailVos)) {
|
|
if (CollectionUtils.isNotEmpty(afterTaskRunDetailVos)) {
|
|
@@ -686,10 +705,11 @@ public class ApproveCommonBusinessImpl implements IApproveCommonBusiness {
|
|
|
|
|
|
logger.info("=====节点提交后开始生成待办和已办=====");
|
|
logger.info("=====节点提交后开始生成待办和已办=====");
|
|
|
|
|
|
|
|
+
|
|
approveBusiness.afterTaskCommitTask(taskId, approveWorkFlowOperationEnum, taskRequestUserInfoDTO.getIdCard(), taskRequestUserInfoDTO.getUserName(), afterTaskRunDetailVos);
|
|
approveBusiness.afterTaskCommitTask(taskId, approveWorkFlowOperationEnum, taskRequestUserInfoDTO.getIdCard(), taskRequestUserInfoDTO.getUserName(), afterTaskRunDetailVos);
|
|
|
|
|
|
logger.info("====是否发送消息标志位:{}====", sendMessageFlag);
|
|
logger.info("====是否发送消息标志位:{}====", sendMessageFlag);
|
|
- if (sendMessageFlag) {
|
|
+ if (sendMessageFlag) {
|
|
ApproveMessage approveMessage = taskRequest.getApproveMessage();
|
|
ApproveMessage approveMessage = taskRequest.getApproveMessage();
|
|
String message = approveMessage.getMessage();
|
|
String message = approveMessage.getMessage();
|
|
|
|
|
|
@@ -707,6 +727,8 @@ public class ApproveCommonBusinessImpl implements IApproveCommonBusiness {
|
|
}
|
|
}
|
|
approveRecordInfo.setFinalApprovalResult(approvalInfoDTO.getApproveResult());
|
|
approveRecordInfo.setFinalApprovalResult(approvalInfoDTO.getApproveResult());
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+
|
|
|
|
|
|
approveBusiness.buildTaskInfoByProcessInstanceId(approvalInfoDTO, afterTaskRunDetailVos);
|
|
approveBusiness.buildTaskInfoByProcessInstanceId(approvalInfoDTO, afterTaskRunDetailVos);
|
|
logger.info("====当前任务详情:{}====", JSONObject.toJSON(afterTaskRunDetailVos));
|
|
logger.info("====当前任务详情:{}====", JSONObject.toJSON(afterTaskRunDetailVos));
|
|
@@ -786,7 +808,7 @@ public class ApproveCommonBusinessImpl implements IApproveCommonBusiness {
|
|
|
|
|
|
logger.info("=====approveInfo->workflowClientFactory taskRequest:{}", JsonUtils.toJSONString(taskRequest));
|
|
logger.info("=====approveInfo->workflowClientFactory taskRequest:{}", JsonUtils.toJSONString(taskRequest));
|
|
|
|
|
|
- switch (approveWorkFlowOperationEnum) {
|
|
+ switch (approveWorkFlowOperationEnum) {
|
|
case COMPLETE_AGREE:
|
|
case COMPLETE_AGREE:
|
|
vo = workflowClientFactory.getWorkflowTaskClient().commitTask(taskId, taskRequest, WorkFlowOprationEnum.COMPLETE_AGREE, operateIdcard);
|
|
vo = workflowClientFactory.getWorkflowTaskClient().commitTask(taskId, taskRequest, WorkFlowOprationEnum.COMPLETE_AGREE, operateIdcard);
|
|
|
|
|
|
@@ -803,10 +825,23 @@ public class ApproveCommonBusinessImpl implements IApproveCommonBusiness {
|
|
case RECALL:
|
|
case RECALL:
|
|
vo = workflowClientFactory.getWorkflowTaskClient().recallTask(taskId, taskRequest, operateIdcard);
|
|
vo = workflowClientFactory.getWorkflowTaskClient().recallTask(taskId, taskRequest, operateIdcard);
|
|
break;
|
|
break;
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ case SUSPEND:
|
|
|
|
+ vo = workflowClientFactory.getWorkflowTaskClient().handleTaskForSuspend(taskId, operateIdcard);
|
|
|
|
+ break;
|
|
|
|
+ case ACTIVATE:
|
|
|
|
+ vo = workflowClientFactory.getWorkflowTaskClient().handleTaskForActivate(taskId, operateIdcard);
|
|
|
|
+ break;
|
|
|
|
+ case REDO:
|
|
|
|
+ vo = workflowClientFactory.getWorkflowTaskClient().handleTaskForRedo(taskId, operateIdcard);
|
|
|
|
+ break;
|
|
|
|
+
|
|
default:
|
|
default:
|
|
break;
|
|
break;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ System.err.println(JSONObject.toJSONString(vo));
|
|
buildApproveCirculationInfoAndSave(approveRecordId, vo, approveWorkFlowOperationEnum.getValue(), taskRequestUserInfoDTO, taskRequest.getApproveMessage().getMessage(), approveNo, processNo);
|
|
buildApproveCirculationInfoAndSave(approveRecordId, vo, approveWorkFlowOperationEnum.getValue(), taskRequestUserInfoDTO, taskRequest.getApproveMessage().getMessage(), approveNo, processNo);
|
|
return vo;
|
|
return vo;
|
|
}
|
|
}
|
|
@@ -823,6 +858,7 @@ public class ApproveCommonBusinessImpl implements IApproveCommonBusiness {
|
|
* @param processNo 流程编号
|
|
* @param processNo 流程编号
|
|
*/
|
|
*/
|
|
private void buildApproveCirculationInfoAndSave(String approveRecordId, ProcessInstanceVO vo, String operateType, TaskRequestUserInfoDTO taskRequestUserInfoDTO, String msg, String approveNo, String processNo) {
|
|
private void buildApproveCirculationInfoAndSave(String approveRecordId, ProcessInstanceVO vo, String operateType, TaskRequestUserInfoDTO taskRequestUserInfoDTO, String msg, String approveNo, String processNo) {
|
|
|
|
+
|
|
ApproveCirculationInfo approveCirculationInfo = new ApproveCirculationInfo();
|
|
ApproveCirculationInfo approveCirculationInfo = new ApproveCirculationInfo();
|
|
approveCirculationInfo.setApproveRecordId(approveRecordId);
|
|
approveCirculationInfo.setApproveRecordId(approveRecordId);
|
|
approveCirculationInfo.setApproveNo(approveNo);
|
|
approveCirculationInfo.setApproveNo(approveNo);
|
|
@@ -837,7 +873,14 @@ public class ApproveCommonBusinessImpl implements IApproveCommonBusiness {
|
|
approveCirculationInfo.setOperateUserOrg(taskRequestUserInfoDTO.getOrgName());
|
|
approveCirculationInfo.setOperateUserOrg(taskRequestUserInfoDTO.getOrgName());
|
|
approveCirculationInfo.setOperateUserOrgId(taskRequestUserInfoDTO.getOrgCode());
|
|
approveCirculationInfo.setOperateUserOrgId(taskRequestUserInfoDTO.getOrgCode());
|
|
approveCirculationInfo.setApproveOpinion(msg);
|
|
approveCirculationInfo.setApproveOpinion(msg);
|
|
- approveCirculationInfo.setOperateTimeConsuming(String.valueOf(DateUtil.between(vo.getTaskHistoryDetailVo().getEndTime(), vo.getTaskHistoryDetailVo().getStartTime(), DateUnit.SECOND)));
|
|
+
|
|
|
|
+
|
|
|
|
+ Date tmpDate = new Date();
|
|
|
|
+ if(vo.getTaskHistoryDetailVo().getEndTime() != null){
|
|
|
|
+ tmpDate = vo.getTaskHistoryDetailVo().getEndTime();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ approveCirculationInfo.setOperateTimeConsuming(String.valueOf(DateUtil.between(tmpDate, vo.getTaskHistoryDetailVo().getStartTime(), DateUnit.SECOND)));
|
|
|
|
|
|
approveCirculationInfo.setElectronicSignature(null);
|
|
approveCirculationInfo.setElectronicSignature(null);
|
|
approveCirculationInfo.setIsDeleted(BooleanEnum.FALSE.getValue());
|
|
approveCirculationInfo.setIsDeleted(BooleanEnum.FALSE.getValue());
|
|
@@ -1218,4 +1261,40 @@ public class ApproveCommonBusinessImpl implements IApproveCommonBusiness {
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ * 是否支持挂起、激活、终止操作
|
|
|
|
+ *
|
|
|
|
+ * @param operateReqDTO 请求
|
|
|
|
+ * @param approvalInfoTaskId 当前任务ID
|
|
|
|
+ * @param taskCode 任务代码
|
|
|
|
+ * @return 是否支持
|
|
|
|
+ */
|
|
|
|
+ protected boolean isEnableOperateSuspendActivateRedo(OperateReqDTO operateReqDTO, String approvalInfoTaskId, String taskCode) {
|
|
|
|
+ ApproveWorkFlowOperationEnum approveWorkFlowOperationEnum = operateReqDTO.getApproveWorkFlowOperationEnum();
|
|
|
|
+ String taskId = operateReqDTO.getTaskId();
|
|
|
|
+ String processInstanceId = operateReqDTO.getProcessInstanceId();
|
|
|
|
+
|
|
|
|
+ Assert.notNull(approveWorkFlowOperationEnum);
|
|
|
|
+ Assert.notBlank(taskId);
|
|
|
|
+ Assert.notBlank(processInstanceId);
|
|
|
|
+
|
|
|
|
+ boolean isEnable = false;
|
|
|
|
+ if (approveWorkFlowOperationEnum.equals(ApproveWorkFlowOperationEnum.SUSPEND)) {
|
|
|
|
+
|
|
|
|
+ isEnable = workFlowBusiness.checkOperateOptionOfCurrentStep(taskId, processInstanceId, taskCode, OperateOptionEnum._BTN_SUSPEND_COMMIT);
|
|
|
|
+ } else if(approveWorkFlowOperationEnum.equals(ApproveWorkFlowOperationEnum.ACTIVATE)){
|
|
|
|
+
|
|
|
|
+ isEnable = workFlowBusiness.checkOperateOptionOfCurrentStep(taskId, processInstanceId, taskCode, OperateOptionEnum._BTN_RECOVER);
|
|
|
|
+ } else if(approveWorkFlowOperationEnum.equals(ApproveWorkFlowOperationEnum.REDO)){
|
|
|
|
+
|
|
|
|
+ isEnable = workFlowBusiness.checkOperateOptionOfCurrentStep(taskId, processInstanceId, taskCode, OperateOptionEnum._BTN_REDO_COMMIT);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ logger.info("=====节点的{}操作权限判断结果为:{}======", approveWorkFlowOperationEnum, isEnable);
|
|
|
|
+ return isEnable && !approvalInfoTaskId.equalsIgnoreCase(ApproveConstants.END_STR);
|
|
|
|
+ }
|
|
}
|
|
}
|