|
@@ -11,23 +11,50 @@ import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
|
|
|
import com.dragoninfo.dcuc.common.utils.ResponseUtil;
|
|
|
import com.dragoninfo.dcuc.duceap.enums.ManageDisposeTypeEnum;
|
|
|
-import com.dragonsoft.dcuc.approve.business.*;
|
|
|
+import com.dragonsoft.dcuc.approve.business.IApproveBaseBusiness;
|
|
|
+import com.dragonsoft.dcuc.approve.business.IApproveBusiness;
|
|
|
+import com.dragonsoft.dcuc.approve.business.IApproveCommonBusiness;
|
|
|
+import com.dragonsoft.dcuc.approve.business.IApproveLogBusiness;
|
|
|
+import com.dragonsoft.dcuc.approve.business.IWorkFlowBusiness;
|
|
|
import com.dragonsoft.dcuc.approve.business.external.IDcucAuthBusiness;
|
|
|
import com.dragonsoft.dcuc.approve.constants.ApproveConstants;
|
|
|
-import com.dragonsoft.dcuc.approve.enumresources.*;
|
|
|
+import com.dragonsoft.dcuc.approve.enumresources.ApproveResultEnum;
|
|
|
+import com.dragonsoft.dcuc.approve.enumresources.ApproveWorkFlowOperationEnum;
|
|
|
+import com.dragonsoft.dcuc.approve.enumresources.ApproveWorkFlowTaskStateEnum;
|
|
|
+import com.dragonsoft.dcuc.approve.enumresources.CommitTypeEnum;
|
|
|
+import com.dragonsoft.dcuc.approve.enumresources.FlowTypeEnum;
|
|
|
+import com.dragonsoft.dcuc.approve.enumresources.OperateOptionEnum;
|
|
|
+import com.dragonsoft.dcuc.approve.enumresources.PermissionValidTypeEnum;
|
|
|
import com.dragonsoft.dcuc.approve.event.ApproveEventPublish;
|
|
|
import com.dragonsoft.dcuc.approve.model.ApproveCirculationInfo;
|
|
|
import com.dragonsoft.dcuc.approve.model.ApproveRecordInfo;
|
|
|
import com.dragonsoft.dcuc.approve.model.TaskAssignRecord;
|
|
|
-import com.dragonsoft.dcuc.approve.model.dto.*;
|
|
|
+import com.dragonsoft.dcuc.approve.model.dto.ApprovalInfoDTO;
|
|
|
+import com.dragonsoft.dcuc.approve.model.dto.ApproveMessageInfoDTO;
|
|
|
+import com.dragonsoft.dcuc.approve.model.dto.BaseOperateReqDTO;
|
|
|
+import com.dragonsoft.dcuc.approve.model.dto.ContentRespDTO;
|
|
|
+import com.dragonsoft.dcuc.approve.model.dto.LogDto;
|
|
|
+import com.dragonsoft.dcuc.approve.model.dto.OperateReqDTO;
|
|
|
+import com.dragonsoft.dcuc.approve.model.dto.ResourceInfoDTO;
|
|
|
+import com.dragonsoft.dcuc.approve.model.dto.TaskRequestUserInfoDTO;
|
|
|
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.ResourceInfoReqVO;
|
|
|
-import com.dragonsoft.dcuc.approve.model.resp.*;
|
|
|
+import com.dragonsoft.dcuc.approve.model.resp.ApprovalInfoRespVO;
|
|
|
+import com.dragonsoft.dcuc.approve.model.resp.ApproveCommentVo;
|
|
|
+import com.dragonsoft.dcuc.approve.model.resp.OperateRespVO;
|
|
|
+import com.dragonsoft.dcuc.approve.model.resp.ProcessStatusDetailVo;
|
|
|
+import com.dragonsoft.dcuc.approve.model.resp.ProcessStatusVo;
|
|
|
+import com.dragonsoft.dcuc.approve.model.resp.TaskOutgoingVo;
|
|
|
+import com.dragonsoft.dcuc.approve.model.resp.TaskVo;
|
|
|
import com.dragonsoft.dcuc.approve.model.vo.ApproveTaskRequestVo;
|
|
|
import com.dragonsoft.dcuc.approve.properties.ApproveProperties;
|
|
|
-import com.dragonsoft.dcuc.approve.service.*;
|
|
|
+import com.dragonsoft.dcuc.approve.service.IApproveActHiTaskService;
|
|
|
+import com.dragonsoft.dcuc.approve.service.IApproveActRunTaskService;
|
|
|
+import com.dragonsoft.dcuc.approve.service.IApproveCirculationService;
|
|
|
+import com.dragonsoft.dcuc.approve.service.IApproveRecordService;
|
|
|
+import com.dragonsoft.dcuc.approve.service.ITaskAssignRecordService;
|
|
|
import com.dragonsoft.dcuc.approve.utils.ProofsUtil;
|
|
|
import com.dragonsoft.duceap.base.entity.http.ResponseDTO;
|
|
|
import com.dragonsoft.duceap.base.entity.http.ResponseStatus;
|
|
@@ -41,7 +68,13 @@ import com.dragonsoft.duceap.commons.util.enums.EnumUtils;
|
|
|
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.*;
|
|
|
+import com.dragonsoft.duceap.duwf.api.model.ActivitiHolder;
|
|
|
+import com.dragonsoft.duceap.duwf.api.model.ApproveMessage;
|
|
|
+import com.dragonsoft.duceap.duwf.api.model.ProcessInstanceVO;
|
|
|
+import com.dragonsoft.duceap.duwf.api.model.TaskHistoryDetailVo;
|
|
|
+import com.dragonsoft.duceap.duwf.api.model.TaskRequest;
|
|
|
+import com.dragonsoft.duceap.duwf.api.model.TransMessage;
|
|
|
+import com.dragonsoft.duceap.duwf.api.model.WorkflowRequestData;
|
|
|
import com.dragonsoft.duceap.workflow.client.WorkflowClientFactory;
|
|
|
import com.dragonsoft.duceap.workflow.enums.WorkFlowOprationEnum;
|
|
|
import org.slf4j.Logger;
|
|
@@ -55,9 +88,19 @@ import org.springframework.transaction.annotation.Transactional;
|
|
|
import javax.validation.Valid;
|
|
|
import javax.validation.constraints.NotBlank;
|
|
|
import javax.validation.constraints.NotNull;
|
|
|
-import java.util.*;
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.Calendar;
|
|
|
+import java.util.Collections;
|
|
|
+import java.util.Comparator;
|
|
|
+import java.util.Date;
|
|
|
+import java.util.HashSet;
|
|
|
+import java.util.List;
|
|
|
+import java.util.Set;
|
|
|
+import java.util.TreeSet;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
+import static com.dragonsoft.dcuc.approve.constants.ApproveConstants.END_STR;
|
|
|
+
|
|
|
/**
|
|
|
* 代码千万行,注释第一行,编码不规范,同事两行泪
|
|
|
*
|
|
@@ -170,15 +213,15 @@ public class ApproveCommonBusinessImpl implements IApproveCommonBusiness {
|
|
|
|
|
|
@Override
|
|
|
public Page<TaskVo> queryApproveList(Searchable searchable) {
|
|
|
- //获取当前查询条件的状态值
|
|
|
+ // 获取当前查询条件的状态值
|
|
|
String state = searchable.getSearchFilterByKey("state_eq").getValue().toString();
|
|
|
searchable.removeSearchFilter("state", SearchOperator.eq);
|
|
|
ApproveWorkFlowTaskStateEnum approveWorkFlowTaskStateEnum = EnumUtils.enumOf(ApproveWorkFlowTaskStateEnum.class, state);
|
|
|
if (ApproveWorkFlowTaskStateEnum.FINISH.equals(approveWorkFlowTaskStateEnum)) {
|
|
|
- //已办列表
|
|
|
+ // 已办列表
|
|
|
return approveActHiTaskService.buildApproveActHiTask(searchable);
|
|
|
} else {
|
|
|
- //待办列表
|
|
|
+ // 待办列表
|
|
|
return approveActRunTaskService.buildApproveActRunTask(searchable);
|
|
|
}
|
|
|
}
|
|
@@ -202,7 +245,7 @@ public class ApproveCommonBusinessImpl implements IApproveCommonBusiness {
|
|
|
try {
|
|
|
logger.info("====开始处理表单提交,data:{}====", JSONObject.toJSONString(approvalInfoReqVO));
|
|
|
|
|
|
- //构建ApprovalInfo对象
|
|
|
+ // 构建ApprovalInfo对象
|
|
|
approvalInfoDTO = buildApprovalInfo(approvalInfoReqVO);
|
|
|
// 设置流程相关信息
|
|
|
approveBusiness.setProcessInfo(approvalInfoDTO);
|
|
@@ -218,7 +261,7 @@ public class ApproveCommonBusinessImpl implements IApproveCommonBusiness {
|
|
|
ContentRespDTO contentRespDTO = approveBusiness.generalContentRespVO(flowTypeEnum, resourceInfoDTO);
|
|
|
approvalInfoDTO.setApplyContent(JSON.toJSONString(contentRespDTO));
|
|
|
}
|
|
|
- //构建ApprovalResourceInfo资源对象
|
|
|
+ // 构建ApprovalResourceInfo资源对象
|
|
|
// 生成审批单号
|
|
|
String approveNo = approvalInfoReqVO.getApproveTaskId();
|
|
|
if (StrUtil.isBlank(approveNo)) {
|
|
@@ -227,23 +270,23 @@ public class ApproveCommonBusinessImpl implements IApproveCommonBusiness {
|
|
|
approveNo = approveBaseBusiness.buildApproveNo(appCode, applicantOrgCode);
|
|
|
}
|
|
|
|
|
|
- //判断是否需要提交,创建流程
|
|
|
+ // 判断是否需要提交,创建流程
|
|
|
String operateType = approvalInfoReqVO.getOperateType();
|
|
|
CommitTypeEnum commitTypeEnum = EnumUtils.enumOf(CommitTypeEnum.class, operateType);
|
|
|
if (CommitTypeEnum.APPLY_COMMIT.equals(commitTypeEnum)) {
|
|
|
- //创建流程
|
|
|
+ // 创建流程
|
|
|
logger.info("===开始提交=====");
|
|
|
- //构建ApproveTaskRequestVo,用于工作流给待办中心发送消息,需设置业务类型和业务id,因工作流对接多方应用且都需要给待办发消息
|
|
|
+ // 构建ApproveTaskRequestVo,用于工作流给待办中心发送消息,需设置业务类型和业务id,因工作流对接多方应用且都需要给待办发消息
|
|
|
ApproveTaskRequestVo approveTaskRequestVo = this.buildTaskRequestVo(approvalInfoDTO);
|
|
|
String flowType = approvalInfoReqVO.getFlowType();
|
|
|
approveTaskRequestVo.setFlowType(flowType);
|
|
|
- //构建工作流申请的taskRequest对象
|
|
|
+ // 构建工作流申请的taskRequest对象
|
|
|
TaskRequest<ApproveTaskRequestVo> taskRequest = new TaskRequest<>();
|
|
|
- //设置自定义对象ApproveTaskRequestVo
|
|
|
+ // 设置自定义对象ApproveTaskRequestVo
|
|
|
taskRequest.setData(approveTaskRequestVo);
|
|
|
String userId = approvalInfoDTO.getApplicantIdcard();
|
|
|
logger.info("===提交的用户是:{}===", userId);
|
|
|
- //调用工作流创建流程
|
|
|
+ // 调用工作流创建流程
|
|
|
processInstanceVO = workflowClientFactory.getWorkflowTaskClient().startTaskByCode(approvalInfoReqVO.getBusinessCode(),
|
|
|
"", taskRequest, userId);
|
|
|
String processInstanceId = processInstanceVO.getProcessInstanceId();
|
|
@@ -251,7 +294,7 @@ public class ApproveCommonBusinessImpl implements IApproveCommonBusiness {
|
|
|
|
|
|
approvalInfoDTO.setProcessInstanceId(processInstanceId);
|
|
|
|
|
|
- //流程开启后生成待办(刚开启的节点没有已办事宜)
|
|
|
+ // 流程开启后生成待办(刚开启的节点没有已办事宜)
|
|
|
approveBusiness.createTodoAfterProcessStart(processInstanceVO, approvalInfoDTO);
|
|
|
|
|
|
TaskRequestUserInfoDTO taskRequestUserInfoDTO = new TaskRequestUserInfoDTO();
|
|
@@ -263,9 +306,9 @@ public class ApproveCommonBusinessImpl implements IApproveCommonBusiness {
|
|
|
ResourceInfoDTO resourceInfoDTO = ResourceInfoDTO.parseResourceInfoReqVO(resourceInfoReqVO);
|
|
|
OperateRespVO operateRespVO = dcucAuthBusiness.checkHitRedList(applicantIdcard, flowTypeEnum, resourceInfoDTO);
|
|
|
|
|
|
- //构建流转的taskRequest
|
|
|
+ // 构建流转的taskRequest
|
|
|
TaskRequest<ApproveTaskRequestVo> commitTaskRequest = new TaskRequest<>();
|
|
|
- //再次构建taskRequest
|
|
|
+ // 再次构建taskRequest
|
|
|
this.buildTaskRequest(commitTaskRequest, approvalInfoDTO, taskRequestUserInfoDTO, approvalInfoReqVO.getActivitiHolderList(),
|
|
|
processInstanceVO.getTaskRunDetailVos().get(0).getId(), operateRespVO.getHitRedList());
|
|
|
|
|
@@ -286,13 +329,13 @@ public class ApproveCommonBusinessImpl implements IApproveCommonBusiness {
|
|
|
.hitRedList(operateRespVO.getHitRedList())
|
|
|
.build();
|
|
|
|
|
|
- //调用工作流提交节点,审批时使用申请人的身份证号码
|
|
|
+ // 调用工作流提交节点,审批时使用申请人的身份证号码
|
|
|
processInstanceVO = baseApproveOperate(baseOperateReqDTO);
|
|
|
if (CollectionUtils.isNotEmpty(taskRunDetailVos)) {
|
|
|
sendMessageFlag = false;
|
|
|
}
|
|
|
logger.info("工作流申请流程:【{}】,taskId:【{}】", JSON.toJSONString(processInstanceVO), taskDetailVo.getId());
|
|
|
- //生成待办,更新已办数据
|
|
|
+ // 生成待办,更新已办数据
|
|
|
logger.info("====开始执行提交后续动作====");
|
|
|
List<TaskHistoryDetailVo> afterTaskRunDetailVos = processInstanceVO.getTaskRunDetailVos();
|
|
|
approveBusiness.afterTaskCommitTask(taskDetailVo.getId(), ApproveWorkFlowOperationEnum.COMPLETE_AGREE,
|
|
@@ -301,27 +344,27 @@ public class ApproveCommonBusinessImpl implements IApproveCommonBusiness {
|
|
|
logger.info("===发送消息标志:{}====", sendMessageFlag);
|
|
|
if (sendMessageFlag) {
|
|
|
ApproveMessageInfoDTO approveMessageInfoDTO = ApproveMessageInfoDTO.newInstance(approvalInfoDTO, ApproveWorkFlowOperationEnum.COMPLETE_AGREE, "");
|
|
|
- //发送消息
|
|
|
+ // 发送消息
|
|
|
approveEventPublish.publishApproveFinalResultEvent(approveMessageInfoDTO);
|
|
|
approveResult = ApproveResultEnum.SUCCESS;
|
|
|
}
|
|
|
}
|
|
|
approvalInfoDTO.setApproveResult(approveResult.value);
|
|
|
- //构建任务id、任务标识码、任务名称字段,多个均以,相隔
|
|
|
- //需使用最新的processInstanceVO
|
|
|
+ // 构建任务id、任务标识码、任务名称字段,多个均以,相隔
|
|
|
+ // 需使用最新的processInstanceVO
|
|
|
approveBusiness.buildTaskInfoByProcessInstanceId(approvalInfoDTO, processInstanceVO.getTaskRunDetailVos());
|
|
|
logger.info("===保存表单信息====");
|
|
|
- //将原本的旧表对象构建成模式3的新表对象
|
|
|
+ // 将原本的旧表对象构建成模式3的新表对象
|
|
|
} else {
|
|
|
logger.info("===保存表单信息====");
|
|
|
approvalInfoDTO.setUpdateTime(new Date());
|
|
|
approvalInfoDTO.setUpdateUser(ProofsUtil.getIdcard());
|
|
|
}
|
|
|
|
|
|
- //将原本的旧表对象构建成模式3的新表对象
|
|
|
+ // 将原本的旧表对象构建成模式3的新表对象
|
|
|
approveRecordInfo = approveRecordService.buildApproveRecordInfo(approvalInfoDTO, approveNo);
|
|
|
approveRecordInfo.setCreateTime(oldCreateTime);
|
|
|
- //保存数据
|
|
|
+ // 保存数据
|
|
|
approveRecordService.save(approveRecordInfo);
|
|
|
} catch (Exception e) {
|
|
|
approveResultEnum = ApproveResultEnum.FAIL;
|
|
@@ -350,29 +393,29 @@ public class ApproveCommonBusinessImpl implements IApproveCommonBusiness {
|
|
|
ProcessInstanceVO processInstanceVO = null;
|
|
|
ApproveResultEnum approveResultEnum = ApproveResultEnum.SUCCESS;
|
|
|
String failMsg = "";
|
|
|
- //是否需要保存修改日志(若是调用了保存接口则无需。)
|
|
|
+ // 是否需要保存修改日志(若是调用了保存接口则无需。)
|
|
|
boolean needSaveUpdateLog = true;
|
|
|
- //是否需要保存操作日志(已创建了流程,此次只是修改表单但是不提交)
|
|
|
+ // 是否需要保存操作日志(已创建了流程,此次只是修改表单但是不提交)
|
|
|
boolean needSaveOperateLog = false;
|
|
|
|
|
|
- //是否发送消息给权限中心,默认发送
|
|
|
+ // 是否发送消息给权限中心,默认发送
|
|
|
boolean sendMessageFlag = true;
|
|
|
try {
|
|
|
logger.info("=======" + JSONObject.toJSONString(approvalInfoUpdateReqVO) + "========");
|
|
|
- //实例id
|
|
|
+ // 实例id
|
|
|
String instanceId = approvalInfoUpdateReqVO.getProcessInstanceId();
|
|
|
- //判断实例id是否存在,不存在的话,原本为草稿状态
|
|
|
+ // 判断实例id是否存在,不存在的话,原本为草稿状态
|
|
|
if (StringUtils.isEmpty(instanceId)) {
|
|
|
ApprovalInfoReqVO approvalInfoReqVO = new ApprovalInfoReqVO();
|
|
|
BeanUtils.copyProperties(approvalInfoUpdateReqVO, approvalInfoReqVO);
|
|
|
|
|
|
if (StringUtils.isNotEmpty(approvalId)) {
|
|
|
logger.info("====删除草稿信息====");
|
|
|
- //草稿状态下,先删除原本表单
|
|
|
+ // 草稿状态下,先删除原本表单
|
|
|
approveRecordService.deleteById(approvalId);
|
|
|
}
|
|
|
needSaveUpdateLog = false;
|
|
|
- //调用保存接口
|
|
|
+ // 调用保存接口
|
|
|
ApproveRecordInfo result = approveService.saveBase(approvalInfoReqVO, ManageDisposeTypeEnum.UPDATE, approvalInfoDTO.getCreateTime());
|
|
|
return ResponseUtil.newInstance(result.getProcessInstanceId());
|
|
|
} else {
|
|
@@ -391,15 +434,15 @@ public class ApproveCommonBusinessImpl implements IApproveCommonBusiness {
|
|
|
ResourceInfoDTO resourceInfoDTO = ResourceInfoDTO.parseResourceInfoReqVO(resourceInfoReqVO);
|
|
|
approvalInfoDTO.setResourceInfoVo(resourceInfoDTO);
|
|
|
BeanUtils.copyProperties(approvalInfoUpdateReqVO, approvalInfoDTO);
|
|
|
- //判断有效期类型
|
|
|
+ // 判断有效期类型
|
|
|
String permissionValidType = approvalInfoUpdateReqVO.getPermissionValidType();
|
|
|
PermissionValidTypeEnum permissionValidTypeEnum = EnumUtils.enumOf(PermissionValidTypeEnum.class, permissionValidType);
|
|
|
if (permissionValidTypeEnum.equals(PermissionValidTypeEnum.CUSTOM)) {
|
|
|
- //自定义类型,需设置开始、结束时间
|
|
|
+ // 自定义类型,需设置开始、结束时间
|
|
|
approvalInfoDTO.setStartTime(approvalInfoUpdateReqVO.getStartTime());
|
|
|
approvalInfoDTO.setEndTime(approveBaseBusiness.parseEndTime(approvalInfoUpdateReqVO.getEndTime()));
|
|
|
} else {
|
|
|
- //长期类型,开始、结束时间设置为空
|
|
|
+ // 长期类型,开始、结束时间设置为空
|
|
|
approvalInfoDTO.setStartTime(null);
|
|
|
approvalInfoDTO.setEndTime(null);
|
|
|
}
|
|
@@ -410,18 +453,18 @@ public class ApproveCommonBusinessImpl implements IApproveCommonBusiness {
|
|
|
@Valid @NotNull ResourceInfoDTO resourceInfoRespVO = approvalInfoDTO.getResourceInfoVo();
|
|
|
ContentRespDTO contentRespDTO = approveBusiness.generalContentRespVO(flowTypeEnum, resourceInfoRespVO);
|
|
|
approvalInfoDTO.setApplyContent(JSON.toJSONString(contentRespDTO));
|
|
|
- //构建模式3新表单表对象
|
|
|
+ // 构建模式3新表单表对象
|
|
|
approveRecordInfo = approveRecordService.buildApproveRecordInfo(approvalInfoDTO, approvalInfoDTO.getApproveNo());
|
|
|
approveRecordInfo.setAlreadyRedListApprove(BooleanEnum.FALSE.value);
|
|
|
- //修改模式3新表单表
|
|
|
+ // 修改模式3新表单表
|
|
|
approveRecordService.updateById(approveRecordInfo);
|
|
|
|
|
|
- //判断实例id是否存在,存在的话,原本为非草稿状态
|
|
|
- //原本为非草稿状态,点击保存并提交,需要
|
|
|
+ // 判断实例id是否存在,存在的话,原本为非草稿状态
|
|
|
+ // 原本为非草稿状态,点击保存并提交,需要
|
|
|
@NotBlank String operateType = approvalInfoUpdateReqVO.getOperateType();
|
|
|
CommitTypeEnum commitTypeEnum = EnumUtils.enumOf(CommitTypeEnum.class, operateType);
|
|
|
if (CommitTypeEnum.APPLY_COMMIT.equals(commitTypeEnum)) {
|
|
|
- //根据实例id获取流程当前待办数组
|
|
|
+ // 根据实例id获取流程当前待办数组
|
|
|
List<TaskHistoryDetailVo> list = workflowClientFactory.getWorkflowProcessClient()
|
|
|
.queryTaskDetailByProcessInstanceId(approvalInfoDTO.getProcessInstanceId());
|
|
|
TaskRequest<ApproveTaskRequestVo> taskRequest = new TaskRequest<>();
|
|
@@ -434,7 +477,7 @@ public class ApproveCommonBusinessImpl implements IApproveCommonBusiness {
|
|
|
|
|
|
OperateRespVO operateRespVO = dcucAuthBusiness.checkHitRedList(applicantIdcard, flowTypeEnum, resourceInfoRespVO);
|
|
|
|
|
|
- //构建工作流请求体
|
|
|
+ // 构建工作流请求体
|
|
|
this.buildTaskRequest(taskRequest, approvalInfoDTO, taskRequestUserInfoDTO, approvalInfoUpdateReqVO.getActivitiHolderList(), null, operateRespVO.getHitRedList());
|
|
|
|
|
|
for (TaskHistoryDetailVo taskDetailVo : list) {
|
|
@@ -452,34 +495,34 @@ public class ApproveCommonBusinessImpl implements IApproveCommonBusiness {
|
|
|
.hitRedList(operateRespVO.getHitRedList())
|
|
|
.build();
|
|
|
|
|
|
- //循环提交当前待办任务
|
|
|
+ // 循环提交当前待办任务
|
|
|
processInstanceVO = baseApproveOperate(baseOperateReqDTO);
|
|
|
List<TaskHistoryDetailVo> taskRunDetailVos = processInstanceVO.getTaskRunDetailVos();
|
|
|
if (CollectionUtils.isNotEmpty(taskRunDetailVos)) {
|
|
|
- //若存在待办任务,说明流程未结束,无需发送消息给权限中心
|
|
|
+ // 若存在待办任务,说明流程未结束,无需发送消息给权限中心
|
|
|
sendMessageFlag = false;
|
|
|
}
|
|
|
logger.info("工作流申请流程:【{}】,taskId:【{}】", JSON.toJSONString(processInstanceVO), taskDetailVoId);
|
|
|
- //构建任务id、任务标识码、任务名称字段,多个均以,相隔
|
|
|
+ // 构建任务id、任务标识码、任务名称字段,多个均以,相隔
|
|
|
approveBusiness.buildTaskInfoByProcessInstanceId(approvalInfoDTO, taskRunDetailVos);
|
|
|
|
|
|
- //生成待办&已办
|
|
|
+ // 生成待办&已办
|
|
|
logger.info("=====节点提交后开始生成待办和已办=====");
|
|
|
|
|
|
approveBusiness.afterTaskCommitTask(taskDetailVoId, ApproveWorkFlowOperationEnum.COMPLETE_AGREE, taskRequestUserInfoDTO.getIdCard(), taskRequestUserInfoDTO.getUserName(), taskRunDetailVos);
|
|
|
}
|
|
|
logger.info("====发送结果标志:{}", sendMessageFlag);
|
|
|
if (sendMessageFlag) {
|
|
|
- //构建消息体并发送到kafka
|
|
|
+ // 构建消息体并发送到kafka
|
|
|
ApproveMessageInfoDTO approveMessageInfoDTO = ApproveMessageInfoDTO.newInstance(approvalInfoDTO, ApproveWorkFlowOperationEnum.COMPLETE_AGREE, "");
|
|
|
|
|
|
approveEventPublish.publishApproveFinalResultEvent(approveMessageInfoDTO);
|
|
|
approveRecordInfo.setFinalApprovalResult(ApproveResultEnum.SUCCESS.getValue());
|
|
|
}
|
|
|
logger.info("===保存表单信息====");
|
|
|
- //构建任务id、任务标识码、任务名称字段,多个均以,相隔
|
|
|
+ // 构建任务id、任务标识码、任务名称字段,多个均以,相隔
|
|
|
buildUpdateInfo(approveRecordInfo, approvalInfoDTO);
|
|
|
- //修改
|
|
|
+ // 修改
|
|
|
approveRecordService.updateById(approveRecordInfo);
|
|
|
needSaveOperateLog = true;
|
|
|
}
|
|
@@ -529,13 +572,13 @@ public class ApproveCommonBusinessImpl implements IApproveCommonBusiness {
|
|
|
if (taskRequest == null) {
|
|
|
taskRequest = new TaskRequest<>();
|
|
|
}
|
|
|
- //设置自定义对象
|
|
|
+ // 设置自定义对象
|
|
|
ApproveTaskRequestVo approveTaskRequestVo = new ApproveTaskRequestVo();
|
|
|
//,指定是否为科信人员
|
|
|
approveTaskRequestVo.setKxPeople(kxPeople);
|
|
|
// 判断是否需要红名单审批
|
|
|
approveTaskRequestVo.setRedList(needRedListApprove);
|
|
|
- //设置业务表单信息
|
|
|
+ // 设置业务表单信息
|
|
|
approveTaskRequestVo.setBusinessKey(approvalInfoDTO.getId());
|
|
|
approveTaskRequestVo.setApplyTitle(approvalInfoDTO.getProcessTitle());
|
|
|
approveTaskRequestVo.setApplyContent(approvalInfoDTO.getApplyContent());
|
|
@@ -546,11 +589,11 @@ public class ApproveCommonBusinessImpl implements IApproveCommonBusiness {
|
|
|
approveTaskRequestVo.setHandleUser(userInfo == null ? taskRequestUserInfoDTO.getIdCard() : userInfo.getIdcard());
|
|
|
approveTaskRequestVo.setHandleUserName(userInfo == null ? taskRequestUserInfoDTO.getUserName() : userInfo.getUserName());
|
|
|
taskRequest.setData(approveTaskRequestVo);
|
|
|
- //判断下一任务处理人是否为空
|
|
|
+ // 判断下一任务处理人是否为空
|
|
|
if (CollectionUtils.isNotEmpty(activitiHolderList)) {
|
|
|
TransMessage transMessage = new TransMessage();
|
|
|
if (StringUtils.isNotEmpty(taskId)) {
|
|
|
- //通过任务id获取任务分支
|
|
|
+ // 通过任务id获取任务分支
|
|
|
List<TaskOutgoingVo> list = workFlowBusiness.buildTaskOutgoingVoList(taskId);
|
|
|
if (CollectionUtils.isNotEmpty(list)) {
|
|
|
for (ActivitiHolder activitiHolder : activitiHolderList) {
|
|
@@ -581,15 +624,15 @@ public class ApproveCommonBusinessImpl implements IApproveCommonBusiness {
|
|
|
ProcessInstanceVO processInstanceVO = null;
|
|
|
ApproveResultEnum approveResultEnum = ApproveResultEnum.SUCCESS;
|
|
|
String failMsg = "";
|
|
|
- //是否发送消息到kafka,默认发
|
|
|
+ // 是否发送消息到kafka,默认发
|
|
|
boolean sendMessageFlag = true;
|
|
|
|
|
|
boolean needSendRedListRisk = false;
|
|
|
OperateRespVO operateRespVO = null;
|
|
|
try {
|
|
|
- //根据实例id或任务id获取申请表单并构建成旧ApprovalInfo对象
|
|
|
- ApproveRecordInfo approveRecordInfo = approveRecordService.findByProcessInstanceId(processInstanceId); //获取表单数据
|
|
|
- approvalInfoDTO = approveRecordInfo.toApprovalInfo(); //构建为旧表单数据 建成旧ApprovalInfo对象
|
|
|
+ // 根据实例id或任务id获取申请表单并构建成旧ApprovalInfo对象
|
|
|
+ ApproveRecordInfo approveRecordInfo = approveRecordService.findByProcessInstanceId(processInstanceId); // 获取表单数据
|
|
|
+ approvalInfoDTO = approveRecordInfo.toApprovalInfo(); // 构建为旧表单数据 建成旧ApprovalInfo对象
|
|
|
if (approvalInfoDTO == null) {
|
|
|
approveResultEnum = ApproveResultEnum.FAIL;
|
|
|
failMsg = "审批单不存在";
|
|
@@ -600,24 +643,24 @@ public class ApproveCommonBusinessImpl implements IApproveCommonBusiness {
|
|
|
ResourceInfoDTO resourceInfoVo = updateResourceInfo(operateReqDTO, approvalInfoDTO.getResourceInfoVo());
|
|
|
approvalInfoDTO.setResourceInfoVo(resourceInfoVo);
|
|
|
|
|
|
- String flowType = approvalInfoDTO.getFlowType(); //权限申请类型 重要? 应用功能授权 数据授权 任务等
|
|
|
+ String flowType = approvalInfoDTO.getFlowType(); // 权限申请类型 重要? 应用功能授权 数据授权 任务等
|
|
|
FlowTypeEnum flowTypeEnum = EnumUtils.enumOf(FlowTypeEnum.class, flowType);
|
|
|
- ContentRespDTO contentRespDTO = approveBusiness.generalContentRespVO(flowTypeEnum, resourceInfoVo);//响应的界面显示信息
|
|
|
- approvalInfoDTO.setApplyContent(JSON.toJSONString(contentRespDTO)); //申请内容记录
|
|
|
+ ContentRespDTO contentRespDTO = approveBusiness.generalContentRespVO(flowTypeEnum, resourceInfoVo);// 响应的界面显示信息
|
|
|
+ approvalInfoDTO.setApplyContent(JSON.toJSONString(contentRespDTO)); // 申请内容记录
|
|
|
|
|
|
String alreadyRedListApprove = approvalInfoDTO.getAlreadyRedListApprove();
|
|
|
- TaskHistoryDetailVo taskHistoryDetailVo = workflowClientFactory.getWorkflowTaskClient().queryTaskDetail(taskId); //历史审批信息
|
|
|
+ TaskHistoryDetailVo taskHistoryDetailVo = workflowClientFactory.getWorkflowTaskClient().queryTaskDetail(taskId); // 历史审批信息
|
|
|
String taskHistoryDetailVoName = taskHistoryDetailVo.getName();
|
|
|
String taskCode = taskHistoryDetailVo.getTaskCode();
|
|
|
|
|
|
String approvalInfoTaskId = approvalInfoDTO.getTaskId();
|
|
|
String approvalInfoId = approvalInfoDTO.getId();
|
|
|
String approveNo = approvalInfoDTO.getApproveNo();
|
|
|
- String businessCode = approvalInfoDTO.getBusinessCode(); //流程编号
|
|
|
+ String businessCode = approvalInfoDTO.getBusinessCode(); // 流程编号
|
|
|
String applicantIdcard = approvalInfoDTO.getApplicantIdcard();
|
|
|
|
|
|
- //判断操作类型是否支持
|
|
|
- //如果是 回退 或者 撤回,需要先看下 当前审批流程实例 是否支持
|
|
|
+ // 判断操作类型是否支持
|
|
|
+ // 如果是 回退 或者 撤回,需要先看下 当前审批流程实例 是否支持
|
|
|
if (approveWorkFlowOperationEnum.equals(ApproveWorkFlowOperationEnum.RECALL)
|
|
|
|| approveWorkFlowOperationEnum.equals(ApproveWorkFlowOperationEnum.BACK)) {
|
|
|
boolean enableOperate = isEnableOperateRecallBack(operateReqDTO, approvalInfoTaskId, taskCode);
|
|
@@ -629,11 +672,11 @@ public class ApproveCommonBusinessImpl implements IApproveCommonBusiness {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- //TODO 增加 挂起(Suspend),激活(Activate),终止(Redo) 哪种情况的支持操作
|
|
|
- //TODO add wanghao
|
|
|
+ // TODO 增加 挂起(Suspend),激活(Activate),终止(Redo) 哪种情况的支持操作
|
|
|
+ // TODO add wanghao
|
|
|
if (approveWorkFlowOperationEnum.equals(ApproveWorkFlowOperationEnum.SUSPEND)
|
|
|
|| approveWorkFlowOperationEnum.equals(ApproveWorkFlowOperationEnum.ACTIVATE)
|
|
|
- || approveWorkFlowOperationEnum.equals(ApproveWorkFlowOperationEnum.REDO) ) {
|
|
|
+ || approveWorkFlowOperationEnum.equals(ApproveWorkFlowOperationEnum.REDO)) {
|
|
|
boolean enableOperate = isEnableOperateSuspendActivateRedo(operateReqDTO, approvalInfoTaskId, taskCode);
|
|
|
if (!enableOperate) {
|
|
|
return ResponseUtil.dtoFail("该节点不支持此项操作");
|
|
@@ -643,7 +686,6 @@ public class ApproveCommonBusinessImpl implements IApproveCommonBusiness {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-
|
|
|
operateRespVO = dcucAuthBusiness.checkHitRedList(applicantIdcard, flowTypeEnum, resourceInfoVo);
|
|
|
String redListTip = operateRespVO.getRedListTip();
|
|
|
Boolean hitRedList = operateRespVO.getHitRedList();
|
|
@@ -651,7 +693,7 @@ public class ApproveCommonBusinessImpl implements IApproveCommonBusiness {
|
|
|
// 判断是否红名单审批
|
|
|
boolean alreadyRedListApproveBoolean = EnumUtils.enumOf(BooleanEnum.class, alreadyRedListApprove).booleanValue;
|
|
|
|
|
|
- //开始执行操作内容--同意
|
|
|
+ // 开始执行操作内容--同意
|
|
|
if (approveWorkFlowOperationEnum.equals(ApproveWorkFlowOperationEnum.COMPLETE_AGREE)) {
|
|
|
// 需要检查红名单且还未进行红名单审批
|
|
|
if (needCheckRedList && (!alreadyRedListApproveBoolean)) {
|
|
@@ -669,9 +711,9 @@ public class ApproveCommonBusinessImpl implements IApproveCommonBusiness {
|
|
|
needSendRedListRisk = (!needCheckRedList) && (!alreadyRedListApproveBoolean) && (!taskName.contains(ApproveConstants.RED_LIST));
|
|
|
}
|
|
|
|
|
|
- //构建工作流请求体
|
|
|
+ // 构建工作流请求体
|
|
|
this.buildTaskRequest(taskRequest, approvalInfoDTO, taskRequestUserInfoDTO, activitiHolderList, null, operateRespVO.getHitRedList());
|
|
|
- //节点构建
|
|
|
+ // 节点构建
|
|
|
BaseOperateReqDTO baseOperateReqDTO = BaseOperateReqDTO.builder()
|
|
|
.operateIdcard(ProofsUtil.getIdcard())
|
|
|
.taskId(taskId)
|
|
@@ -685,13 +727,13 @@ public class ApproveCommonBusinessImpl implements IApproveCommonBusiness {
|
|
|
.hitRedList(operateRespVO.getHitRedList())
|
|
|
.build();
|
|
|
|
|
|
- //节点信息提交
|
|
|
- processInstanceVO = baseApproveOperate(baseOperateReqDTO); //执行审批操作 //TODO 主要改这里
|
|
|
+ // 节点信息提交
|
|
|
+ processInstanceVO = baseApproveOperate(baseOperateReqDTO); // 执行审批操作 //TODO 主要改这里
|
|
|
|
|
|
List<TaskHistoryDetailVo> afterTaskRunDetailVos = processInstanceVO.getTaskRunDetailVos();
|
|
|
|
|
|
if (CollectionUtils.isNotEmpty(afterTaskRunDetailVos)) {
|
|
|
- //若有待办,说明流程未结束,则不发
|
|
|
+ // 若有待办,说明流程未结束,则不发
|
|
|
sendMessageFlag = false;
|
|
|
}
|
|
|
|
|
@@ -702,24 +744,25 @@ public class ApproveCommonBusinessImpl implements IApproveCommonBusiness {
|
|
|
approvalInfoDTO.setAlreadyRedListApprove(BooleanEnum.TRUE.value);
|
|
|
}
|
|
|
|
|
|
- //生成待办&已办
|
|
|
+ // 生成待办&已办
|
|
|
logger.info("=====节点提交后开始生成待办和已办=====");
|
|
|
|
|
|
- //删除代办---新增已办, 用的两张表记录的,不是状态位?
|
|
|
+ // 删除代办---新增已办, 用的两张表记录的,不是状态位?
|
|
|
approveBusiness.afterTaskCommitTask(taskId, approveWorkFlowOperationEnum, taskRequestUserInfoDTO.getIdCard(), taskRequestUserInfoDTO.getUserName(), afterTaskRunDetailVos);
|
|
|
|
|
|
logger.info("====是否发送消息标志位:{}====", sendMessageFlag);
|
|
|
- if (sendMessageFlag) { //往kafka 推送消息 给下一步审批人?
|
|
|
+ if (sendMessageFlag) { // 往kafka 推送消息 给下一步审批人?
|
|
|
ApproveMessage approveMessage = taskRequest.getApproveMessage();
|
|
|
String message = approveMessage.getMessage();
|
|
|
- //构建消息体并发送
|
|
|
+ // 构建消息体并发送
|
|
|
sendMessage(approveWorkFlowOperationEnum, approvalInfoDTO, message);
|
|
|
- //设置流程状态结果
|
|
|
+ // 设置流程状态结果
|
|
|
switch (approveWorkFlowOperationEnum) {
|
|
|
case COMPLETE_AGREE:
|
|
|
approvalInfoDTO.setApproveResult(ApproveResultEnum.SUCCESS.getValue());
|
|
|
break;
|
|
|
case COMPLETE_DISAGREE:
|
|
|
+ case REDO:
|
|
|
approvalInfoDTO.setApproveResult(ApproveResultEnum.FAIL.getValue());
|
|
|
break;
|
|
|
default:
|
|
@@ -728,14 +771,14 @@ public class ApproveCommonBusinessImpl implements IApproveCommonBusiness {
|
|
|
approveRecordInfo.setFinalApprovalResult(approvalInfoDTO.getApproveResult());
|
|
|
}
|
|
|
|
|
|
- //更新任务信息
|
|
|
- //构建任务id、任务标识码、任务名称字段,多个均以,相隔
|
|
|
+ // 更新任务信息
|
|
|
+ // 构建任务id、任务标识码、任务名称字段,多个均以,相隔
|
|
|
approveBusiness.buildTaskInfoByProcessInstanceId(approvalInfoDTO, afterTaskRunDetailVos);
|
|
|
logger.info("====当前任务详情:{}====", JSONObject.toJSON(afterTaskRunDetailVos));
|
|
|
logger.info("====开始更新审批单信息====");
|
|
|
- //设置表单信息
|
|
|
+ // 设置表单信息
|
|
|
buildUpdateInfo(approveRecordInfo, approvalInfoDTO);
|
|
|
- //修改表单
|
|
|
+ // 修改表单
|
|
|
approveRecordService.updateById(approveRecordInfo);
|
|
|
} catch (Exception e) {
|
|
|
logger.error("operate error", e);
|
|
@@ -795,7 +838,7 @@ public class ApproveCommonBusinessImpl implements IApproveCommonBusiness {
|
|
|
boolean hitRedList = baseOperateReqDTO.getHitRedList();
|
|
|
|
|
|
taskRequest = buildTaskRequest(taskRequest, approvalInfoDTO, taskRequestUserInfoDTO, null, null, hitRedList);
|
|
|
- //判断是否有审批信息,若无,默认设置
|
|
|
+ // 判断是否有审批信息,若无,默认设置
|
|
|
if (null == taskRequest.getApproveMessage()) {
|
|
|
ApproveMessage approveMessage = new ApproveMessage();
|
|
|
approveMessage.setApproveState(approveWorkFlowOperationEnum.getValue());
|
|
@@ -811,12 +854,12 @@ public class ApproveCommonBusinessImpl implements IApproveCommonBusiness {
|
|
|
switch (approveWorkFlowOperationEnum) { // TODO 增加调用 挂起等判断
|
|
|
case COMPLETE_AGREE:
|
|
|
vo = workflowClientFactory.getWorkflowTaskClient().commitTask(taskId, taskRequest, WorkFlowOprationEnum.COMPLETE_AGREE, operateIdcard);
|
|
|
- //保存任务指派人记录信息
|
|
|
+ // 保存任务指派人记录信息
|
|
|
insertTaskAssignRecord(vo, approveWorkFlowOperationEnum, operateIdcard, taskRequest, approveRecordId);
|
|
|
break;
|
|
|
case COMPLETE_DISAGREE:
|
|
|
vo = workflowClientFactory.getWorkflowTaskClient().commitTask(taskId, taskRequest, WorkFlowOprationEnum.COMPLETE_DISAGREE, operateIdcard);
|
|
|
- //保存任务指派人记录信息
|
|
|
+ // 保存任务指派人记录信息
|
|
|
insertTaskAssignRecord(vo, approveWorkFlowOperationEnum, operateIdcard, taskRequest, approveRecordId);
|
|
|
break;
|
|
|
case BACK:
|
|
@@ -826,7 +869,7 @@ public class ApproveCommonBusinessImpl implements IApproveCommonBusiness {
|
|
|
vo = workflowClientFactory.getWorkflowTaskClient().recallTask(taskId, taskRequest, operateIdcard);
|
|
|
break;
|
|
|
|
|
|
- //TODO add wanghao
|
|
|
+ // TODO add wanghao
|
|
|
case SUSPEND:
|
|
|
vo = workflowClientFactory.getWorkflowTaskClient().handleTaskForSuspend(taskId, operateIdcard);
|
|
|
break;
|
|
@@ -834,15 +877,25 @@ public class ApproveCommonBusinessImpl implements IApproveCommonBusiness {
|
|
|
vo = workflowClientFactory.getWorkflowTaskClient().handleTaskForActivate(taskId, operateIdcard);
|
|
|
break;
|
|
|
case REDO:
|
|
|
- vo = workflowClientFactory.getWorkflowTaskClient().handleTaskForRedo(taskId, operateIdcard);
|
|
|
+ // vo = workflowClientFactory.getWorkflowTaskClient().handleTaskForRedo(taskId, operateIdcard);
|
|
|
+ TaskHistoryDetailVo historyVo = workflowClientFactory.getWorkflowTaskClient().queryTaskDetail(taskId);
|
|
|
+ vo = new ProcessInstanceVO();
|
|
|
+ TaskHistoryDetailVo historyDetailVo = new TaskHistoryDetailVo();
|
|
|
+ historyDetailVo.setName(historyVo.getName());
|
|
|
+ historyDetailVo.setTaskCode(END_STR);
|
|
|
+ historyDetailVo.setStartTime(historyVo.getStartTime());
|
|
|
+ historyDetailVo.setEndTime(new Date());
|
|
|
+ historyDetailVo.setTaskDefinitionKey(historyVo.getTaskDefinitionKey());
|
|
|
+ vo.setTaskHistoryDetailVo(historyDetailVo);
|
|
|
+ vo.setPocessDefinitionId(historyVo.getProcessDefinitionId());
|
|
|
+ vo.setProcessInstanceId(historyVo.getProcessInstanceId());
|
|
|
break;
|
|
|
-
|
|
|
default:
|
|
|
break;
|
|
|
}
|
|
|
- //构建审批记录表
|
|
|
+ // 构建审批记录表
|
|
|
System.err.println(JSONObject.toJSONString(vo));
|
|
|
- buildApproveCirculationInfoAndSave(approveRecordId, vo, approveWorkFlowOperationEnum.getValue(), taskRequestUserInfoDTO, taskRequest.getApproveMessage().getMessage(), approveNo, processNo);
|
|
|
+ buildApproveCirculationInfoAndSave(approveRecordId, vo, approveWorkFlowOperationEnum, taskRequestUserInfoDTO, taskRequest.getApproveMessage().getMessage(), approveNo, processNo);
|
|
|
return vo;
|
|
|
}
|
|
|
|
|
@@ -857,35 +910,37 @@ public class ApproveCommonBusinessImpl implements IApproveCommonBusiness {
|
|
|
* @param approveNo 审批编号
|
|
|
* @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, ApproveWorkFlowOperationEnum operateType,
|
|
|
+ TaskRequestUserInfoDTO taskRequestUserInfoDTO, String msg, String approveNo, String processNo) {
|
|
|
|
|
|
ApproveCirculationInfo approveCirculationInfo = new ApproveCirculationInfo();
|
|
|
approveCirculationInfo.setApproveRecordId(approveRecordId);
|
|
|
approveCirculationInfo.setApproveNo(approveNo);
|
|
|
approveCirculationInfo.setProcessNo(processNo);
|
|
|
- approveCirculationInfo.setNodeName(vo.getTaskHistoryDetailVo().getName());
|
|
|
- approveCirculationInfo.setNodeNo(vo.getTaskHistoryDetailVo().getTaskCode());
|
|
|
- approveCirculationInfo.setTaskKey(vo.getTaskHistoryDetailVo().getTaskDefinitionKey());
|
|
|
- approveCirculationInfo.setOperateType(operateType);
|
|
|
- approveCirculationInfo.setOperateTime(DateUtils.getTimeStr(vo.getTaskHistoryDetailVo().getEndTime(), DateConst.HYPHEN_DISPLAY_TIME));
|
|
|
+ approveCirculationInfo.setOperateType(operateType.getValue());
|
|
|
approveCirculationInfo.setOperateUserName(taskRequestUserInfoDTO.getUserName());
|
|
|
approveCirculationInfo.setOperateUserId(taskRequestUserInfoDTO.getIdCard());
|
|
|
approveCirculationInfo.setOperateUserOrg(taskRequestUserInfoDTO.getOrgName());
|
|
|
approveCirculationInfo.setOperateUserOrgId(taskRequestUserInfoDTO.getOrgCode());
|
|
|
approveCirculationInfo.setApproveOpinion(msg);
|
|
|
|
|
|
- //TODO add wanghao 解决 挂起 无endtime 问题
|
|
|
- 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)));
|
|
|
- //TODO 电子签名内容待定,先设置个null
|
|
|
+ // TODO 电子签名内容待定,先设置个null
|
|
|
approveCirculationInfo.setElectronicSignature(null);
|
|
|
approveCirculationInfo.setIsDeleted(BooleanEnum.FALSE.getValue());
|
|
|
approveCirculationInfo.setCreateUser(taskRequestUserInfoDTO.getIdCard());
|
|
|
approveCirculationInfo.setCreateTime(new Date());
|
|
|
+
|
|
|
+ approveCirculationInfo.setNodeName(vo.getTaskHistoryDetailVo().getName());
|
|
|
+ approveCirculationInfo.setNodeNo(vo.getTaskHistoryDetailVo().getTaskCode());
|
|
|
+ approveCirculationInfo.setTaskKey(vo.getTaskHistoryDetailVo().getTaskDefinitionKey());
|
|
|
+ approveCirculationInfo.setOperateTime(DateUtils.getTimeStr(vo.getTaskHistoryDetailVo().getEndTime(), DateConst.HYPHEN_DISPLAY_TIME));
|
|
|
+ // TODO add wanghao 解决 挂起 无endtime 问题
|
|
|
+ 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)));
|
|
|
approveCirculationInfoService.save(approveCirculationInfo);
|
|
|
}
|
|
|
|
|
@@ -923,7 +978,7 @@ public class ApproveCommonBusinessImpl implements IApproveCommonBusiness {
|
|
|
WorkflowRequestData workflowRequestData = new WorkflowRequestData();
|
|
|
ApproveMessage approveMessage = new ApproveMessage();
|
|
|
workflowRequestData.setApproveMessage(approveMessage);
|
|
|
- //转办接口
|
|
|
+ // 转办接口
|
|
|
workflowClientFactory.getWorkflowTaskClient().taskOperationAssign(agentReqVO.getTaskId(), agentReqVO.getAssigneeUser(),
|
|
|
ProofsUtil.getIdcard(), workflowRequestData);
|
|
|
}
|
|
@@ -934,23 +989,22 @@ public class ApproveCommonBusinessImpl implements IApproveCommonBusiness {
|
|
|
return ResponseUtil.newInstance(Collections.emptyList());
|
|
|
}
|
|
|
|
|
|
- //step1 审批历史记录
|
|
|
+ // step1 审批历史记录
|
|
|
List<ApproveCirculationInfo> hisTaskMapNew = this.getProcessPathNew(processInstanceId);
|
|
|
|
|
|
return approveCirculationInfoService.buildApproveCommentVo(hisTaskMapNew);
|
|
|
}
|
|
|
|
|
|
-
|
|
|
@Override
|
|
|
public Integer queryApproveQty(Searchable searchable) {
|
|
|
- //获取已办列表
|
|
|
+ // 获取已办列表
|
|
|
Page<TaskVo> page = queryApproveList(searchable);
|
|
|
return (int) page.getTotalElements();
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public Integer queryMyRequestQty() {
|
|
|
- //获取表单列表
|
|
|
+ // 获取表单列表
|
|
|
String currentUserId = ProofsUtil.getIdcard();
|
|
|
return approveRecordService.getUserRequestCount(currentUserId);
|
|
|
|
|
@@ -963,7 +1017,7 @@ public class ApproveCommonBusinessImpl implements IApproveCommonBusiness {
|
|
|
ApproveResultEnum approveResultEnum = ApproveResultEnum.SUCCESS;
|
|
|
String failMsg = "";
|
|
|
try {
|
|
|
- //获取表单信息
|
|
|
+ // 获取表单信息
|
|
|
approvalInfoDTO = getApproveRecord(id);
|
|
|
if (approvalInfoDTO == null) {
|
|
|
approveResultEnum = ApproveResultEnum.FAIL;
|
|
@@ -972,7 +1026,7 @@ public class ApproveCommonBusinessImpl implements IApproveCommonBusiness {
|
|
|
}
|
|
|
|
|
|
if (StringUtils.isNotEmpty(approvalInfoDTO.getTaskId())) {
|
|
|
- if (approvalInfoDTO.getTaskId().equalsIgnoreCase(ApproveConstants.END_STR)) {
|
|
|
+ if (approvalInfoDTO.getTaskId().equalsIgnoreCase(END_STR)) {
|
|
|
approveResultEnum = ApproveResultEnum.FAIL;
|
|
|
failMsg = "流程已结束,不允许删除";
|
|
|
return ResponseDTO.fail("流程已结束,不允许删除");
|
|
@@ -980,11 +1034,11 @@ public class ApproveCommonBusinessImpl implements IApproveCommonBusiness {
|
|
|
}
|
|
|
|
|
|
boolean callBackEnableFlag = false;
|
|
|
- //判断是否是草稿状态
|
|
|
+ // 判断是否是草稿状态
|
|
|
if (StringUtils.isNotEmpty(approvalInfoDTO.getProcessInstanceId())) {
|
|
|
- //1. 获取当前结点可以操作的类型
|
|
|
- //2. 判断是否可以执行撤销操作,若可以执行撤销,否则返回错误信息
|
|
|
- //3. 将流程实例信息(审批端)的删除标志置1
|
|
|
+ // 1. 获取当前结点可以操作的类型
|
|
|
+ // 2. 判断是否可以执行撤销操作,若可以执行撤销,否则返回错误信息
|
|
|
+ // 3. 将流程实例信息(审批端)的删除标志置1
|
|
|
|
|
|
String taskIds = approvalInfoDTO.getTaskId();
|
|
|
String taskCodes = approvalInfoDTO.getApproveTaskIdentifier();
|
|
@@ -998,10 +1052,10 @@ public class ApproveCommonBusinessImpl implements IApproveCommonBusiness {
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
- //判断并执行撤销操作
|
|
|
+ // 判断并执行撤销操作
|
|
|
if (callBackEnableFlag) {
|
|
|
for (String taskId : arrTaskId) {
|
|
|
- //执行流程撤销操作,撤销会删除流程
|
|
|
+ // 执行流程撤销操作,撤销会删除流程
|
|
|
workflowClientFactory.getWorkflowTaskClient().handleTaskForRedo(taskId, ProofsUtil.getIdcard());
|
|
|
}
|
|
|
} else {
|
|
@@ -1010,15 +1064,15 @@ public class ApproveCommonBusinessImpl implements IApproveCommonBusiness {
|
|
|
return ResponseDTO.fail("当前节点不允许删除操作");
|
|
|
}
|
|
|
}
|
|
|
- //执行表单表逻辑删除
|
|
|
+ // 执行表单表逻辑删除
|
|
|
approveRecordService.deleteById(id);
|
|
|
ApproveMessageInfoDTO approveMessageInfoDTO = ApproveMessageInfoDTO.newInstance(approvalInfoDTO, ApproveWorkFlowOperationEnum.RECALL, "");
|
|
|
approveEventPublish.publishApproveFinalResultEvent(approveMessageInfoDTO);
|
|
|
|
|
|
- //删除所有已办
|
|
|
+ // 删除所有已办
|
|
|
approveActHiTaskService.deleteByApplyRecordId(id);
|
|
|
|
|
|
- //删除所有待办
|
|
|
+ // 删除所有待办
|
|
|
approveActRunTaskService.deleteByApplyRecordId(id);
|
|
|
} catch (Exception e) {
|
|
|
approveResultEnum = ApproveResultEnum.FAIL;
|
|
@@ -1034,7 +1088,7 @@ public class ApproveCommonBusinessImpl implements IApproveCommonBusiness {
|
|
|
|
|
|
@Override
|
|
|
public ResponseDTO<ApprovalInfoRespVO> queryApproveDetail(String id) {
|
|
|
- //获取表单信息
|
|
|
+ // 获取表单信息
|
|
|
ApprovalInfoDTO approvalInfoDTO = getApproveRecord(id);
|
|
|
if (approvalInfoDTO == null) {
|
|
|
return ResponseUtil.dtoFail("申请表单不存在");
|
|
@@ -1043,10 +1097,9 @@ public class ApproveCommonBusinessImpl implements IApproveCommonBusiness {
|
|
|
return ResponseUtil.newInstance(approvalInfoRespVO);
|
|
|
}
|
|
|
|
|
|
-
|
|
|
@Override
|
|
|
public ResponseDTO<List<ProcessStatusVo>> approveStatus(String processInstanceId) {
|
|
|
- //获取表单信息
|
|
|
+ // 获取表单信息
|
|
|
ApproveRecordInfo approveRecordInfo = approveRecordService.findByProcessInstanceId(processInstanceId);
|
|
|
ApprovalInfoDTO approvalInfoDTO = approveRecordInfo.toApprovalInfo();
|
|
|
if (approvalInfoDTO == null) {
|
|
@@ -1056,16 +1109,15 @@ public class ApproveCommonBusinessImpl implements IApproveCommonBusiness {
|
|
|
return approveStatusByBusinessId(approvalInfoId);
|
|
|
}
|
|
|
|
|
|
-
|
|
|
@Override
|
|
|
public ResponseDTO<List<ProcessStatusVo>> approveStatusByBusinessId(String approveRecordId) {
|
|
|
- //通过审批记录
|
|
|
+ // 通过审批记录
|
|
|
List<ApproveCirculationInfo> processPathNew = approveCirculationInfoService.getListByApproveRecordId(approveRecordId);
|
|
|
- //根据任务定义key去重
|
|
|
+ // 根据任务定义key去重
|
|
|
List<ApproveCirculationInfo> processPath = processPathNew.stream()
|
|
|
.collect(Collectors.collectingAndThen(Collectors.toCollection(() ->
|
|
|
new TreeSet<>(Comparator.comparing(ApproveCirculationInfo::getTaskKey))), ArrayList::new));
|
|
|
- //根据创建时间排序
|
|
|
+ // 根据创建时间排序
|
|
|
List<ApproveCirculationInfo> sortList = processPath.stream()
|
|
|
.sorted(Comparator.comparing(ApproveCirculationInfo::getCreateTime))
|
|
|
.collect(Collectors.toList());
|
|
@@ -1077,7 +1129,7 @@ public class ApproveCommonBusinessImpl implements IApproveCommonBusiness {
|
|
|
processStatusVo.setNodeName(approveCirculationInfo.getNodeName());
|
|
|
String taskKey = approveCirculationInfo.getTaskKey();
|
|
|
|
|
|
- //通过审批记录(分组)
|
|
|
+ // 通过审批记录(分组)
|
|
|
List<ApproveCirculationInfo> childList = approveCirculationInfoService.getListByApproveRecordIdAndTaskKey(approveRecordId, taskKey);
|
|
|
Set<ProcessStatusDetailVo> taskVos = new HashSet<>();
|
|
|
if (CollectionUtils.isNotEmpty(childList)) {
|
|
@@ -1112,7 +1164,6 @@ public class ApproveCommonBusinessImpl implements IApproveCommonBusiness {
|
|
|
return ResponseUtil.newInstance(collect);
|
|
|
}
|
|
|
|
|
|
-
|
|
|
/**
|
|
|
* 根据流程实例完成的节点
|
|
|
*
|
|
@@ -1120,13 +1171,13 @@ public class ApproveCommonBusinessImpl implements IApproveCommonBusiness {
|
|
|
* @return 审批意见
|
|
|
*/
|
|
|
private List<ApproveCirculationInfo> getProcessPathNew(String processInstanceId) {
|
|
|
- //获取表单信息
|
|
|
+ // 获取表单信息
|
|
|
ApproveRecordInfo approveRecordInfo = approveRecordService.findByProcessInstanceId(processInstanceId);
|
|
|
if (approveRecordInfo == null) {
|
|
|
throw new IllegalArgumentException(String.format("processInstanceId:%s can't find ApprovalInfo", processInstanceId));
|
|
|
}
|
|
|
String approvalInfoId = approveRecordInfo.getId();
|
|
|
- //通过表单id查询审批记录
|
|
|
+ // 通过表单id查询审批记录
|
|
|
return approveCirculationInfoService.getListByApproveRecordId(approvalInfoId);
|
|
|
}
|
|
|
|
|
@@ -1152,7 +1203,6 @@ public class ApproveCommonBusinessImpl implements IApproveCommonBusiness {
|
|
|
return taskRequestVo;
|
|
|
}
|
|
|
|
|
|
-
|
|
|
/**
|
|
|
* 通过表单id查询并构建旧表单对象
|
|
|
*
|
|
@@ -1160,7 +1210,7 @@ public class ApproveCommonBusinessImpl implements IApproveCommonBusiness {
|
|
|
* @return 审批信息
|
|
|
*/
|
|
|
public ApprovalInfoDTO getApproveRecord(String id) {
|
|
|
- //表单查询
|
|
|
+ // 表单查询
|
|
|
ApproveRecordInfo approveRecordInfo = approveRecordService.selectOne(id);
|
|
|
if (approveRecordInfo != null) {
|
|
|
return approveRecordInfo.toApprovalInfo();
|
|
@@ -1196,7 +1246,6 @@ public class ApproveCommonBusinessImpl implements IApproveCommonBusiness {
|
|
|
return approvalInfoDTO;
|
|
|
}
|
|
|
|
|
|
-
|
|
|
/**
|
|
|
* 是否支持撤回、退回操作
|
|
|
*
|
|
@@ -1216,14 +1265,14 @@ public class ApproveCommonBusinessImpl implements IApproveCommonBusiness {
|
|
|
|
|
|
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);
|
|
|
+ return isEnable && !approvalInfoTaskId.equalsIgnoreCase(END_STR);
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -1233,7 +1282,7 @@ public class ApproveCommonBusinessImpl implements IApproveCommonBusiness {
|
|
|
* @param approvalInfoDTO 审批信息
|
|
|
*/
|
|
|
protected void sendMessage(ApproveWorkFlowOperationEnum approveWorkFlowOperationEnum, ApprovalInfoDTO approvalInfoDTO, String approveMessage) {
|
|
|
- //构建消息体并发送
|
|
|
+ // 构建消息体并发送
|
|
|
ApproveMessageInfoDTO approveMessageInfoDTO = ApproveMessageInfoDTO.newInstance(approvalInfoDTO, approveWorkFlowOperationEnum, approveMessage);
|
|
|
approveEventPublish.publishApproveFinalResultEvent(approveMessageInfoDTO);
|
|
|
}
|
|
@@ -1260,11 +1309,9 @@ public class ApproveCommonBusinessImpl implements IApproveCommonBusiness {
|
|
|
return resourceInfoDTO;
|
|
|
}
|
|
|
|
|
|
+ // TODO 增加 挂起(Suspend),激活(Activate),终止(Redo) 哪种情况的支持操作
|
|
|
+ // TODO add wanghao
|
|
|
|
|
|
-
|
|
|
-
|
|
|
- //TODO 增加 挂起(Suspend),激活(Activate),终止(Redo) 哪种情况的支持操作
|
|
|
- //TODO add wanghao
|
|
|
/**
|
|
|
* 是否支持挂起、激活、终止操作
|
|
|
*
|
|
@@ -1284,17 +1331,17 @@ public class ApproveCommonBusinessImpl implements IApproveCommonBusiness {
|
|
|
|
|
|
boolean isEnable = false;
|
|
|
if (approveWorkFlowOperationEnum.equals(ApproveWorkFlowOperationEnum.SUSPEND)) {
|
|
|
- //查询当前任务是否支持挂起操作(工作流节点是否有配置 挂起 操作) 以及业务逻辑是否支持
|
|
|
+ // 查询当前任务是否支持挂起操作(工作流节点是否有配置 挂起 操作) 以及业务逻辑是否支持
|
|
|
isEnable = workFlowBusiness.checkOperateOptionOfCurrentStep(taskId, processInstanceId, taskCode, OperateOptionEnum._BTN_SUSPEND_COMMIT);
|
|
|
- } else if(approveWorkFlowOperationEnum.equals(ApproveWorkFlowOperationEnum.ACTIVATE)){
|
|
|
- //查询当前任务是否支持挂起操作(工作流节点是否有配置 激活 操作) 以及业务逻辑是否支持
|
|
|
+ } else if (approveWorkFlowOperationEnum.equals(ApproveWorkFlowOperationEnum.ACTIVATE)) {
|
|
|
+ // 查询当前任务是否支持挂起操作(工作流节点是否有配置 激活 操作) 以及业务逻辑是否支持
|
|
|
isEnable = workFlowBusiness.checkOperateOptionOfCurrentStep(taskId, processInstanceId, taskCode, OperateOptionEnum._BTN_RECOVER);
|
|
|
- } else if(approveWorkFlowOperationEnum.equals(ApproveWorkFlowOperationEnum.REDO)){
|
|
|
- //查询当前任务是否支持挂起操作(工作流节点是否有配置 终止 操作) 以及业务逻辑是否支持
|
|
|
+ } 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);
|
|
|
+ return isEnable && !approvalInfoTaskId.equalsIgnoreCase(END_STR);
|
|
|
}
|
|
|
}
|