|
@@ -3,12 +3,12 @@ package com.dragonsoft.dcuc.approve.service.impl;
|
|
|
import cn.hutool.core.bean.BeanUtil;
|
|
|
import cn.hutool.core.date.DateUnit;
|
|
|
import cn.hutool.core.date.DateUtil;
|
|
|
+import cn.hutool.core.lang.Assert;
|
|
|
import cn.hutool.core.util.StrUtil;
|
|
|
import com.alibaba.fastjson.JSON;
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
|
|
|
-import com.dragoninfo.dcuc.common.entity.Proofs;
|
|
|
import com.dragoninfo.dcuc.common.utils.ResponseUtil;
|
|
|
import com.dragoninfo.dcuc.duceap.enums.ManageDisposeTypeEnum;
|
|
|
import com.dragonsoft.dcuc.approve.business.IApproveBusiness;
|
|
@@ -16,6 +16,10 @@ import com.dragonsoft.dcuc.approve.business.IApproveLogBusiness;
|
|
|
import com.dragonsoft.dcuc.approve.business.IDcucAuthBusiness;
|
|
|
import com.dragonsoft.dcuc.approve.business.IWorkFlowBusiness;
|
|
|
import com.dragonsoft.dcuc.approve.constants.ApproveConstants;
|
|
|
+import com.dragonsoft.dcuc.approve.dto.BaseOperateReqDTO;
|
|
|
+import com.dragonsoft.dcuc.approve.dto.ContentRespDTO;
|
|
|
+import com.dragonsoft.dcuc.approve.dto.OperateReqDTO;
|
|
|
+import com.dragonsoft.dcuc.approve.dto.ResourceInfoDTO;
|
|
|
import com.dragonsoft.dcuc.approve.enumresources.*;
|
|
|
import com.dragonsoft.dcuc.approve.model.ApprovalInfo;
|
|
|
import com.dragonsoft.dcuc.approve.model.ApproveCirculationInfo;
|
|
@@ -24,7 +28,7 @@ import com.dragonsoft.dcuc.approve.model.TaskAssignRecord;
|
|
|
import com.dragonsoft.dcuc.approve.model.req.AgentReqVO;
|
|
|
import com.dragonsoft.dcuc.approve.model.req.ApprovalInfoReqVO;
|
|
|
import com.dragonsoft.dcuc.approve.model.req.ApprovalInfoUpdateReqVO;
|
|
|
-import com.dragonsoft.dcuc.approve.model.req.ResourceInfoDTO;
|
|
|
+import com.dragonsoft.dcuc.approve.model.req.ResourceInfoReqVO;
|
|
|
import com.dragonsoft.dcuc.approve.model.resp.*;
|
|
|
import com.dragonsoft.dcuc.approve.model.vo.ApproveMessageInfoDTO;
|
|
|
import com.dragonsoft.dcuc.approve.model.vo.ApproveTaskRequestVo;
|
|
@@ -32,17 +36,17 @@ import com.dragonsoft.dcuc.approve.model.vo.LogDto;
|
|
|
import com.dragonsoft.dcuc.approve.model.vo.TaskRequestUserInfoDTO;
|
|
|
import com.dragonsoft.dcuc.approve.properties.ApproveProperties;
|
|
|
import com.dragonsoft.dcuc.approve.service.*;
|
|
|
-import com.dragonsoft.dcuc.approve.threadlocal.ThreadLocalProofsHolder;
|
|
|
import com.dragonsoft.dcuc.approve.utils.ProofsUtil;
|
|
|
import com.dragonsoft.duceap.base.entity.http.ResponseDTO;
|
|
|
import com.dragonsoft.duceap.base.entity.http.ResponseStatus;
|
|
|
import com.dragonsoft.duceap.base.entity.security.BaseSecurityUser;
|
|
|
import com.dragonsoft.duceap.base.enums.BooleanEnum;
|
|
|
+import com.dragonsoft.duceap.base.utils.UserContextUtils;
|
|
|
import com.dragonsoft.duceap.commons.util.UUIDUtils;
|
|
|
import com.dragonsoft.duceap.commons.util.date.DateConst;
|
|
|
import com.dragonsoft.duceap.commons.util.date.DateUtils;
|
|
|
import com.dragonsoft.duceap.commons.util.enums.EnumUtils;
|
|
|
-import com.dragonsoft.duceap.core.context.ContextUtils;
|
|
|
+import com.dragonsoft.duceap.commons.util.json.JsonUtils;
|
|
|
import com.dragonsoft.duceap.core.search.Searchable;
|
|
|
import com.dragonsoft.duceap.core.search.enums.SearchOperator;
|
|
|
import com.dragonsoft.duceap.duwf.api.model.*;
|
|
@@ -154,9 +158,10 @@ public class ApproveServiceImpl implements IApproveService {
|
|
|
if (StrUtil.isBlank(applyContent)) {
|
|
|
String flowType = approvalInfo.getFlowType();
|
|
|
FlowTypeEnum flowTypeEnum = EnumUtils.enumOf(FlowTypeEnum.class, flowType);
|
|
|
- @Valid @NotNull ResourceInfoDTO resourceInfoDTO = approvalInfoReqVO.getResourceInfoDTO();
|
|
|
- ContentRespVO contentRespVO = approveBusiness.generalContentRespVO(flowTypeEnum, resourceInfoDTO);
|
|
|
- approvalInfo.setApplyContent(JSON.toJSONString(contentRespVO));
|
|
|
+ @Valid @NotNull ResourceInfoReqVO resourceInfoReqVO = approvalInfoReqVO.getResourceInfoDTO();
|
|
|
+ ResourceInfoDTO resourceInfoDTO = ResourceInfoDTO.parseResourceInfoReqVO(resourceInfoReqVO);
|
|
|
+ ContentRespDTO contentRespDTO = approveBusiness.generalContentRespVO(flowTypeEnum, resourceInfoDTO);
|
|
|
+ approvalInfo.setApplyContent(JSON.toJSONString(contentRespDTO));
|
|
|
}
|
|
|
//构建ApprovalResourceInfo资源对象
|
|
|
// 生成审批单号
|
|
@@ -193,8 +198,9 @@ public class ApproveServiceImpl implements IApproveService {
|
|
|
taskRequestUserInfoDTO.setIdCard(approvalInfoReqVO.getApplicantIdcard());
|
|
|
taskRequestUserInfoDTO.setUserName(approvalInfoReqVO.getApplicantName());
|
|
|
String applicantIdcard = approvalInfoReqVO.getApplicantIdcard();
|
|
|
- @Valid @NotNull ResourceInfoDTO resourceInfoDTO = approvalInfoReqVO.getResourceInfoDTO();
|
|
|
+ @Valid @NotNull ResourceInfoReqVO resourceInfoReqVO = approvalInfoReqVO.getResourceInfoDTO();
|
|
|
FlowTypeEnum flowTypeEnum = EnumUtils.enumOf(FlowTypeEnum.class, flowType);
|
|
|
+ ResourceInfoDTO resourceInfoDTO = ResourceInfoDTO.parseResourceInfoReqVO(resourceInfoReqVO);
|
|
|
OperateRespVO operateRespVO = dcucAuthBusiness.checkHitRedList(applicantIdcard, flowTypeEnum, resourceInfoDTO);
|
|
|
|
|
|
//构建流转的taskRequest
|
|
@@ -206,10 +212,22 @@ public class ApproveServiceImpl implements IApproveService {
|
|
|
ApproveResultEnum approveResult = ApproveResultEnum.APPROVE_ING;
|
|
|
if (CollectionUtils.isNotEmpty(taskRunDetailVos)) {
|
|
|
for (TaskHistoryDetailVo taskDetailVo : taskRunDetailVos) {
|
|
|
+
|
|
|
+ BaseOperateReqDTO baseOperateReqDTO = BaseOperateReqDTO.builder()
|
|
|
+ .operateIdcard(applicantIdcard)
|
|
|
+ .taskId(taskDetailVo.getId())
|
|
|
+ .operationEnum(ApproveWorkFlowOperationEnum.COMPLETE_AGREE)
|
|
|
+ .taskRequest(commitTaskRequest)
|
|
|
+ .approvalInfo(approvalInfo)
|
|
|
+ .taskRequestUserInfoDTO(taskRequestUserInfoDTO)
|
|
|
+ .approveNo(approveNo)
|
|
|
+ .processNo(approvalInfo.getBusinessCode())
|
|
|
+ .approveRecordId(approvalInfo.getId())
|
|
|
+ .hitRedList(operateRespVO.getHitRedList())
|
|
|
+ .build();
|
|
|
+
|
|
|
//调用工作流提交节点,审批时使用申请人的身份证号码
|
|
|
- processInstanceVO = baseApproveOperate(applicantIdcard, taskDetailVo.getId(), ApproveWorkFlowOperationEnum.COMPLETE_AGREE,
|
|
|
- commitTaskRequest, approvalInfo, taskRequestUserInfoDTO, approveNo, approvalInfo.getBusinessCode(), approvalInfo.getId(),
|
|
|
- operateRespVO.getHitRedList());
|
|
|
+ processInstanceVO = baseApproveOperate(baseOperateReqDTO);
|
|
|
if (CollectionUtils.isNotEmpty(taskRunDetailVos)) {
|
|
|
sendMessageFlag = false;
|
|
|
}
|
|
@@ -309,8 +327,9 @@ public class ApproveServiceImpl implements IApproveService {
|
|
|
if (StrUtil.isBlank(approvalInfoUpdateReqVO.getFlowType())) {
|
|
|
approvalInfoUpdateReqVO.setFlowType(approvalInfo.getFlowType());
|
|
|
}
|
|
|
-
|
|
|
- approvalInfo.setResourceInfoVo(approvalInfoUpdateReqVO.getResourceInfoDTO());
|
|
|
+ ResourceInfoReqVO resourceInfoReqVO = approvalInfoUpdateReqVO.getResourceInfoDTO();
|
|
|
+ ResourceInfoDTO resourceInfoDTO = ResourceInfoDTO.parseResourceInfoReqVO(resourceInfoReqVO);
|
|
|
+ approvalInfo.setResourceInfoVo(resourceInfoDTO);
|
|
|
BeanUtils.copyProperties(approvalInfoUpdateReqVO, approvalInfo);
|
|
|
//判断有效期类型
|
|
|
String permissionValidType = approvalInfoUpdateReqVO.getPermissionValidType();
|
|
@@ -328,9 +347,9 @@ public class ApproveServiceImpl implements IApproveService {
|
|
|
approvalInfo.setUpdateUser(ProofsUtil.getIdcard());
|
|
|
String flowType = approvalInfo.getFlowType();
|
|
|
FlowTypeEnum flowTypeEnum = EnumUtils.enumOf(FlowTypeEnum.class, flowType);
|
|
|
- @Valid @NotNull ResourceInfoDTO resourceInfoDTO = approvalInfo.getResourceInfoVo();
|
|
|
- ContentRespVO contentRespVO = approveBusiness.generalContentRespVO(flowTypeEnum, resourceInfoDTO);
|
|
|
- approvalInfo.setApplyContent(JSON.toJSONString(contentRespVO));
|
|
|
+ @Valid @NotNull ResourceInfoDTO resourceInfoRespVO = approvalInfo.getResourceInfoVo();
|
|
|
+ ContentRespDTO contentRespDTO = approveBusiness.generalContentRespVO(flowTypeEnum, resourceInfoRespVO);
|
|
|
+ approvalInfo.setApplyContent(JSON.toJSONString(contentRespDTO));
|
|
|
//构建模式3新表单表对象
|
|
|
approveRecordInfo = approveRecordService.buildApproveRecordInfo(approvalInfo, approvalInfo.getApproveNo());
|
|
|
approveRecordInfo.setAlreadyRedListApprove(BooleanEnum.FALSE.value);
|
|
@@ -353,17 +372,28 @@ public class ApproveServiceImpl implements IApproveService {
|
|
|
taskRequestUserInfoDTO.setOrgCode(approvalInfoUpdateReqVO.getApplicantOrgCode());
|
|
|
taskRequestUserInfoDTO.setOrgName(approvalInfoUpdateReqVO.getApplicantOrgName());
|
|
|
|
|
|
- OperateRespVO operateRespVO = dcucAuthBusiness.checkHitRedList(applicantIdcard, flowTypeEnum, resourceInfoDTO);
|
|
|
+ OperateRespVO operateRespVO = dcucAuthBusiness.checkHitRedList(applicantIdcard, flowTypeEnum, resourceInfoRespVO);
|
|
|
|
|
|
//构建工作流请求体
|
|
|
this.buildTaskRequest(taskRequest, approvalInfo, taskRequestUserInfoDTO, approvalInfoUpdateReqVO.getActivitiHolderList(), null, operateRespVO.getHitRedList());
|
|
|
|
|
|
for (TaskHistoryDetailVo taskDetailVo : list) {
|
|
|
String taskDetailVoId = taskDetailVo.getId();
|
|
|
+ BaseOperateReqDTO baseOperateReqDTO = BaseOperateReqDTO.builder()
|
|
|
+ .operateIdcard(ProofsUtil.getIdcard())
|
|
|
+ .taskId(taskDetailVoId)
|
|
|
+ .operationEnum(ApproveWorkFlowOperationEnum.COMPLETE_AGREE)
|
|
|
+ .taskRequest(taskRequest)
|
|
|
+ .approvalInfo(approvalInfo)
|
|
|
+ .taskRequestUserInfoDTO(taskRequestUserInfoDTO)
|
|
|
+ .approveNo(approveRecordInfo.getApproveNo())
|
|
|
+ .processNo(approvalInfo.getBusinessCode())
|
|
|
+ .approveRecordId(approvalInfo.getId())
|
|
|
+ .hitRedList(operateRespVO.getHitRedList())
|
|
|
+ .build();
|
|
|
+
|
|
|
//循环提交当前待办任务
|
|
|
- processInstanceVO = baseApproveOperate(ProofsUtil.getIdcard(), taskDetailVoId, ApproveWorkFlowOperationEnum.COMPLETE_AGREE,
|
|
|
- taskRequest, approvalInfo, taskRequestUserInfoDTO, approveRecordInfo.getApproveNo(), approveRecordInfo.getBusinessCode(),
|
|
|
- approveRecordInfo.getId(), operateRespVO.getHitRedList());
|
|
|
+ processInstanceVO = baseApproveOperate(baseOperateReqDTO);
|
|
|
List<TaskHistoryDetailVo> taskRunDetailVos = processInstanceVO.getTaskRunDetailVos();
|
|
|
if (CollectionUtils.isNotEmpty(taskRunDetailVos)) {
|
|
|
//若存在待办任务,说明流程未结束,无需发送消息给权限中心
|
|
@@ -452,7 +482,7 @@ public class ApproveServiceImpl implements IApproveService {
|
|
|
String appCode = approveProperties.getAppCode();
|
|
|
approveTaskRequestVo.setBusinessSystem(appCode);
|
|
|
approveTaskRequestVo.setBusinessType(approvalInfo.getBusinessCode());
|
|
|
- BaseSecurityUser userInfo = ContextUtils.getUserInfo();
|
|
|
+ BaseSecurityUser userInfo = UserContextUtils.getCurrentUser();
|
|
|
approveTaskRequestVo.setHandleUser(userInfo == null ? taskRequestUserInfoDTO.getIdCard() : userInfo.getIdcard());
|
|
|
approveTaskRequestVo.setHandleUserName(userInfo == null ? taskRequestUserInfoDTO.getUserName() : userInfo.getUserName());
|
|
|
taskRequest.setData(approveTaskRequestVo);
|
|
@@ -477,9 +507,16 @@ public class ApproveServiceImpl implements IApproveService {
|
|
|
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
@Override
|
|
|
- public ResponseDTO<OperateRespVO> approveOperate(String taskId, String processInstanceId, ApproveWorkFlowOperationEnum
|
|
|
- approveWorkFlowOperationEnum, TaskRequest<ApproveTaskRequestVo> taskRequest, TaskRequestUserInfoDTO taskRequestUserInfoDTO,
|
|
|
- List<ActivitiHolder> activitiHolderList, Boolean needCheckRedList) {
|
|
|
+ public ResponseDTO<OperateRespVO> approveOperate(OperateReqDTO operateReqDTO) {
|
|
|
+
|
|
|
+ String taskId = operateReqDTO.getTaskId();
|
|
|
+ String processInstanceId = operateReqDTO.getProcessInstanceId();
|
|
|
+ ApproveWorkFlowOperationEnum approveWorkFlowOperationEnum = operateReqDTO.getApproveWorkFlowOperationEnum();
|
|
|
+ TaskRequest<ApproveTaskRequestVo> taskRequest = operateReqDTO.getTaskRequest();
|
|
|
+ TaskRequestUserInfoDTO taskRequestUserInfoDTO = operateReqDTO.getTaskRequestUserInfoDTO();
|
|
|
+ List<ActivitiHolder> activitiHolderList = operateReqDTO.getActivitiHolderList();
|
|
|
+ Boolean needCheckRedList = operateReqDTO.getNeedCheckRedList();
|
|
|
+
|
|
|
ApprovalInfo approvalInfo = null;
|
|
|
ProcessInstanceVO processInstanceVO = null;
|
|
|
ApproveResultEnum approveResultEnum = ApproveResultEnum.SUCCESS;
|
|
@@ -499,7 +536,15 @@ public class ApproveServiceImpl implements IApproveService {
|
|
|
return ResponseUtil.dtoFail("审批单不存在");
|
|
|
}
|
|
|
|
|
|
- ResourceInfoDTO resourceInfoVo = approvalInfo.getResourceInfoVo();
|
|
|
+ // 更新审批操作设置的资源信息
|
|
|
+ ResourceInfoDTO resourceInfoVo = updateResourceInfo(operateReqDTO, approvalInfo.getResourceInfoVo());
|
|
|
+ approvalInfo.setResourceInfoVo(resourceInfoVo);
|
|
|
+
|
|
|
+ String flowType = approvalInfo.getFlowType();
|
|
|
+ FlowTypeEnum flowTypeEnum = EnumUtils.enumOf(FlowTypeEnum.class, flowType);
|
|
|
+ ContentRespDTO contentRespDTO = approveBusiness.generalContentRespVO(flowTypeEnum, resourceInfoVo);
|
|
|
+ approvalInfo.setApplyContent(JSON.toJSONString(contentRespDTO));
|
|
|
+
|
|
|
String alreadyRedListApprove = approvalInfo.getAlreadyRedListApprove();
|
|
|
TaskHistoryDetailVo taskHistoryDetailVo = workflowClientFactory.getWorkflowTaskClient().queryTaskDetail(taskId);
|
|
|
String taskHistoryDetailVoName = taskHistoryDetailVo.getName();
|
|
@@ -507,25 +552,16 @@ public class ApproveServiceImpl implements IApproveService {
|
|
|
|
|
|
String approvalInfoTaskId = approvalInfo.getTaskId();
|
|
|
String approvalInfoId = approvalInfo.getId();
|
|
|
- String flowType = approvalInfo.getFlowType();
|
|
|
String approveNo = approvalInfo.getApproveNo();
|
|
|
String businessCode = approvalInfo.getBusinessCode();
|
|
|
String applicantIdcard = approvalInfo.getApplicantIdcard();
|
|
|
|
|
|
//判断操作类型是否支持
|
|
|
+
|
|
|
if (approveWorkFlowOperationEnum.equals(ApproveWorkFlowOperationEnum.RECALL)
|
|
|
|| approveWorkFlowOperationEnum.equals(ApproveWorkFlowOperationEnum.BACK)) {
|
|
|
- //通过任务id获取任务详情
|
|
|
- boolean isEnable;
|
|
|
- if (approveWorkFlowOperationEnum.equals(ApproveWorkFlowOperationEnum.RECALL)) {
|
|
|
- //查询当前任务是否支持撤回操作(工作流节点是否有配置撤回操作)
|
|
|
- isEnable = workFlowBusiness.checkOperateOptionOfCurrentStep(taskId, processInstanceId, taskCode, OperateOptionEnum._BTN_WITH_DRAW_COMMIT);
|
|
|
- } else {
|
|
|
- //查询当前任务是否支持退回操作(工作流节点是否有配置退回操作)
|
|
|
- isEnable = workFlowBusiness.checkOperateOptionOfCurrentStep(taskId, processInstanceId, taskCode, OperateOptionEnum._BTN_BACK_COMMIT);
|
|
|
- }
|
|
|
- logger.info("=====节点的{}操作权限判断结果为:{}======", approveWorkFlowOperationEnum, isEnable);
|
|
|
- if (!isEnable || approvalInfoTaskId.equalsIgnoreCase(ApproveConstants.END_STR)) {
|
|
|
+ boolean enableOperate = isEnableOperateRecallBack(operateReqDTO, approvalInfoTaskId, taskCode);
|
|
|
+ if (!enableOperate) {
|
|
|
return ResponseUtil.dtoFail("该节点不支持此项操作");
|
|
|
}
|
|
|
if (StringUtils.isNotEmpty(approvalInfoTaskId)) {
|
|
@@ -533,7 +569,6 @@ public class ApproveServiceImpl implements IApproveService {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- FlowTypeEnum flowTypeEnum = EnumUtils.enumOf(FlowTypeEnum.class, flowType);
|
|
|
operateRespVO = dcucAuthBusiness.checkHitRedList(applicantIdcard, flowTypeEnum, resourceInfoVo);
|
|
|
String redListTip = operateRespVO.getRedListTip();
|
|
|
Boolean hitRedList = operateRespVO.getHitRedList();
|
|
@@ -560,9 +595,20 @@ public class ApproveServiceImpl implements IApproveService {
|
|
|
//构建工作流请求体
|
|
|
this.buildTaskRequest(taskRequest, approvalInfo, taskRequestUserInfoDTO, activitiHolderList, null, operateRespVO.getHitRedList());
|
|
|
//节点提交
|
|
|
- Proofs proofs = ThreadLocalProofsHolder.getProofs();
|
|
|
- processInstanceVO = baseApproveOperate(proofs.getIdcard(), taskId, approveWorkFlowOperationEnum,
|
|
|
- taskRequest, approvalInfo, taskRequestUserInfoDTO, approveNo, businessCode, approvalInfoId, operateRespVO.getHitRedList());
|
|
|
+ BaseOperateReqDTO baseOperateReqDTO = BaseOperateReqDTO.builder()
|
|
|
+ .operateIdcard(ProofsUtil.getIdcard())
|
|
|
+ .taskId(taskId)
|
|
|
+ .operationEnum(approveWorkFlowOperationEnum)
|
|
|
+ .taskRequest(taskRequest)
|
|
|
+ .approvalInfo(approvalInfo)
|
|
|
+ .taskRequestUserInfoDTO(taskRequestUserInfoDTO)
|
|
|
+ .approveNo(approveNo)
|
|
|
+ .processNo(businessCode)
|
|
|
+ .approveRecordId(approvalInfoId)
|
|
|
+ .hitRedList(operateRespVO.getHitRedList())
|
|
|
+ .build();
|
|
|
+
|
|
|
+ processInstanceVO = baseApproveOperate(baseOperateReqDTO);
|
|
|
List<TaskHistoryDetailVo> afterTaskRunDetailVos = processInstanceVO.getTaskRunDetailVos();
|
|
|
|
|
|
if (CollectionUtils.isNotEmpty(afterTaskRunDetailVos)) {
|
|
@@ -585,8 +631,8 @@ public class ApproveServiceImpl implements IApproveService {
|
|
|
logger.info("====是否发送消息标志位:{}====", sendMessageFlag);
|
|
|
if (sendMessageFlag) {
|
|
|
//构建消息体并发送
|
|
|
- ApproveMessageInfoDTO approveMessageInfoDTO = ApproveMessageInfoDTO.newInstance(approvalInfo, approveWorkFlowOperationEnum);
|
|
|
- approveBusiness.sendApproveResultMessage(approveMessageInfoDTO);
|
|
|
+ sendMessage(approveWorkFlowOperationEnum, approvalInfo);
|
|
|
+
|
|
|
//设置流程状态结果
|
|
|
switch (approveWorkFlowOperationEnum) {
|
|
|
case COMPLETE_AGREE:
|
|
@@ -598,13 +644,13 @@ public class ApproveServiceImpl implements IApproveService {
|
|
|
default:
|
|
|
break;
|
|
|
}
|
|
|
-
|
|
|
}
|
|
|
//构建任务id、任务标识码、任务名称字段,多个均以,相隔
|
|
|
approveBusiness.buildTaskInfoByProcessInstanceId(approvalInfo, afterTaskRunDetailVos);
|
|
|
logger.info("====当前任务详情:{}====", JSONObject.toJSON(afterTaskRunDetailVos));
|
|
|
logger.info("====开始更新审批单信息====");
|
|
|
//设置表单信息
|
|
|
+
|
|
|
buildUpdateInfo(approveRecordInfo, approvalInfo);
|
|
|
//修改表单
|
|
|
approveRecordService.updateById(approveRecordInfo);
|
|
@@ -639,25 +685,32 @@ public class ApproveServiceImpl implements IApproveService {
|
|
|
approveRecordInfo.setAlreadyRedListApprove(approvalInfo.getAlreadyRedListApprove());
|
|
|
approveRecordInfo.setUpdateTime(new Date());
|
|
|
approveRecordInfo.setUpdateUser(ProofsUtil.getIdcard());
|
|
|
+
|
|
|
+ ResourceInfoDTO resourceInfoVo = approvalInfo.getResourceInfoVo();
|
|
|
+ approveBusiness.setResourceInfoData(approveRecordInfo, resourceInfoVo);
|
|
|
+
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 基础提交
|
|
|
*
|
|
|
- * @param operateIdcard 操作人Idcard
|
|
|
- * @param taskId 任务ID
|
|
|
- * @param approveWorkFlowOperationEnum 提交类型
|
|
|
- * @param taskRequest 请求体
|
|
|
- * @param approvalInfo 审批信息
|
|
|
- * @param approveNo 审批单号
|
|
|
- * @param processNo 处理单号
|
|
|
- * @param approveRecordId 审批记录单号
|
|
|
+ * @param baseOperateReqDTO 基础提交请求
|
|
|
* @return 流程信息
|
|
|
*/
|
|
|
- public ProcessInstanceVO baseApproveOperate(String operateIdcard, String taskId, ApproveWorkFlowOperationEnum
|
|
|
- approveWorkFlowOperationEnum, TaskRequest<ApproveTaskRequestVo> taskRequest, ApprovalInfo approvalInfo,
|
|
|
- TaskRequestUserInfoDTO taskRequestUserInfoDTO, String approveNo,
|
|
|
- String processNo, String approveRecordId, boolean hitRedList) {
|
|
|
+ public ProcessInstanceVO baseApproveOperate(BaseOperateReqDTO baseOperateReqDTO) {
|
|
|
+ Assert.notNull(baseOperateReqDTO);
|
|
|
+
|
|
|
+ String operateIdcard = baseOperateReqDTO.getOperateIdcard();
|
|
|
+ String taskId = baseOperateReqDTO.getTaskId();
|
|
|
+ ApproveWorkFlowOperationEnum approveWorkFlowOperationEnum = baseOperateReqDTO.getOperationEnum();
|
|
|
+ TaskRequest<ApproveTaskRequestVo> taskRequest = baseOperateReqDTO.getTaskRequest();
|
|
|
+ ApprovalInfo approvalInfo = baseOperateReqDTO.getApprovalInfo();
|
|
|
+ TaskRequestUserInfoDTO taskRequestUserInfoDTO = baseOperateReqDTO.getTaskRequestUserInfoDTO();
|
|
|
+ String approveNo = baseOperateReqDTO.getApproveNo();
|
|
|
+ String processNo = baseOperateReqDTO.getProcessNo();
|
|
|
+ String approveRecordId = baseOperateReqDTO.getApproveRecordId();
|
|
|
+ boolean hitRedList = baseOperateReqDTO.getHitRedList();
|
|
|
+
|
|
|
taskRequest = buildTaskRequest(taskRequest, approvalInfo, taskRequestUserInfoDTO, null, null, hitRedList);
|
|
|
//判断是否有审批信息,若无,默认设置
|
|
|
if (null == taskRequest.getApproveMessage()) {
|
|
@@ -669,6 +722,9 @@ public class ApproveServiceImpl implements IApproveService {
|
|
|
|
|
|
ProcessInstanceVO vo = null;
|
|
|
logger.info("=====approveInfo->applicantIdCard:{},传入的idCard是:{}=====", approvalInfo.getApplicantIdcard(), operateIdcard);
|
|
|
+
|
|
|
+ logger.info("=====approveInfo->workflowClientFactory taskRequest:{}", JsonUtils.toJSONString(taskRequest));
|
|
|
+
|
|
|
switch (approveWorkFlowOperationEnum) {
|
|
|
case COMPLETE_AGREE:
|
|
|
vo = workflowClientFactory.getWorkflowTaskClient().commitTask(taskId, taskRequest, WorkFlowOprationEnum.COMPLETE_AGREE, operateIdcard);
|
|
@@ -963,7 +1019,7 @@ public class ApproveServiceImpl implements IApproveService {
|
|
|
//获取表单信息
|
|
|
ApproveRecordInfo approveRecordInfo = approveRecordService.findByProcessInstanceId(processInstanceId);
|
|
|
if (approveRecordInfo == null) {
|
|
|
- throw new IllegalArgumentException(String.format("processInstanceId:%s con't find ApprovalInfo", processInstanceId));
|
|
|
+ throw new IllegalArgumentException(String.format("processInstanceId:%s can't find ApprovalInfo", processInstanceId));
|
|
|
}
|
|
|
String approvalInfoId = approveRecordInfo.getId();
|
|
|
//通过表单id查询审批记录
|
|
@@ -1023,12 +1079,77 @@ public class ApproveServiceImpl implements IApproveService {
|
|
|
approvalInfo.setId(UUIDUtils.getUUID());
|
|
|
approvalInfo.setCreateTime(new Date());
|
|
|
|
|
|
- @Valid @NotNull ResourceInfoDTO resourceInfoDTO = approvalInfoReqVO.getResourceInfoDTO();
|
|
|
+ @Valid @NotNull ResourceInfoReqVO resourceInfoRespVO = approvalInfoReqVO.getResourceInfoDTO();
|
|
|
|
|
|
+ ResourceInfoDTO resourceInfoDTO = ResourceInfoDTO.parseResourceInfoReqVO(resourceInfoRespVO);
|
|
|
approvalInfo.setResourceInfoVo(resourceInfoDTO);
|
|
|
|
|
|
return approvalInfo;
|
|
|
}
|
|
|
|
|
|
|
|
|
+ /**
|
|
|
+ * 是否支持撤回、退回操作
|
|
|
+ *
|
|
|
+ * @param operateReqDTO 请求
|
|
|
+ * @param approvalInfoTaskId 当前任务ID
|
|
|
+ * @param taskCode 任务代码
|
|
|
+ * @return 是否支持
|
|
|
+ */
|
|
|
+ protected boolean isEnableOperateRecallBack(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;
|
|
|
+ if (approveWorkFlowOperationEnum.equals(ApproveWorkFlowOperationEnum.RECALL)) {
|
|
|
+ //查询当前任务是否支持撤回操作(工作流节点是否有配置撤回操作)
|
|
|
+ isEnable = workFlowBusiness.checkOperateOptionOfCurrentStep(taskId, processInstanceId, taskCode, OperateOptionEnum._BTN_WITH_DRAW_COMMIT);
|
|
|
+ } else {
|
|
|
+ //查询当前任务是否支持退回操作(工作流节点是否有配置退回操作)
|
|
|
+ isEnable = workFlowBusiness.checkOperateOptionOfCurrentStep(taskId, processInstanceId, taskCode, OperateOptionEnum._BTN_BACK_COMMIT);
|
|
|
+ }
|
|
|
+ logger.info("=====节点的{}操作权限判断结果为:{}======", approveWorkFlowOperationEnum, isEnable);
|
|
|
+ return isEnable && !approvalInfoTaskId.equalsIgnoreCase(ApproveConstants.END_STR);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 发生消息
|
|
|
+ *
|
|
|
+ * @param approveWorkFlowOperationEnum 操作类型
|
|
|
+ * @param approvalInfo 审批信息
|
|
|
+ */
|
|
|
+ protected void sendMessage(ApproveWorkFlowOperationEnum approveWorkFlowOperationEnum, ApprovalInfo approvalInfo) {
|
|
|
+ //构建消息体并发送
|
|
|
+ ApproveMessageInfoDTO approveMessageInfoDTO = ApproveMessageInfoDTO.newInstance(approvalInfo, approveWorkFlowOperationEnum);
|
|
|
+ approveBusiness.sendApproveResultMessage(approveMessageInfoDTO);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 更新审批操作设置的资源信息
|
|
|
+ *
|
|
|
+ * @param operateReqDTO 操作请求
|
|
|
+ * @param resourceInfoDTO 资源信息
|
|
|
+ * @return 资源信息
|
|
|
+ */
|
|
|
+ protected ResourceInfoDTO updateResourceInfo(OperateReqDTO operateReqDTO, ResourceInfoDTO resourceInfoDTO) {
|
|
|
+ Assert.notNull(operateReqDTO);
|
|
|
+ String visitResourceCode = operateReqDTO.getVisitResourceCode();
|
|
|
+ String visitResourceName = operateReqDTO.getVisitResourceName();
|
|
|
+ // 如果没有设置访问资源则为空
|
|
|
+ if (StrUtil.isNotBlank(visitResourceCode)
|
|
|
+ && StrUtil.isNotBlank(visitResourceName)) {
|
|
|
+ resourceInfoDTO.setVisitResourceCode(visitResourceCode);
|
|
|
+ resourceInfoDTO.setVisitResourceName(visitResourceName);
|
|
|
+ resourceInfoDTO.setDisagreeVisitResourceCode(operateReqDTO.getDisagreeVisitResourceCode());
|
|
|
+ resourceInfoDTO.setDisagreeVisitResourceName(operateReqDTO.getDisagreeVisitResourceName());
|
|
|
+ }
|
|
|
+ return resourceInfoDTO;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
}
|