|
@@ -16,6 +16,7 @@ import com.dragonsoft.approve.common.ErrorCode;
|
|
|
import com.dragonsoft.dcuc.approve.componet.DcucHelper;
|
|
|
import com.dragonsoft.dcuc.approve.config.ApproveConfig;
|
|
|
import com.dragonsoft.dcuc.approve.config.KafkaConfig;
|
|
|
+import com.dragonsoft.dcuc.approve.enumresources.ApproveResultEnum;
|
|
|
import com.dragonsoft.dcuc.approve.enumresources.ApproveWorkFlowOprationEnum;
|
|
|
import com.dragonsoft.dcuc.approve.enumresources.OperateOptionEnum;
|
|
|
import com.dragonsoft.dcuc.approve.enumresources.YesNoEnum;
|
|
@@ -28,7 +29,6 @@ import com.dragonsoft.dcuc.approve.model.IdEntity;
|
|
|
import com.dragonsoft.dcuc.approve.model.req.AgentDTO;
|
|
|
import com.dragonsoft.dcuc.approve.model.req.ApprovalInfoDTO;
|
|
|
import com.dragonsoft.dcuc.approve.model.req.ApprovalInfoUpdateDTO;
|
|
|
-import com.dragonsoft.dcuc.approve.model.req.ApproveOperateDTO;
|
|
|
import com.dragonsoft.dcuc.approve.model.resp.*;
|
|
|
import com.dragonsoft.dcuc.approve.service.IApproveService;
|
|
|
import com.dragonsoft.duceap.base.entity.http.ResponseDTO;
|
|
@@ -238,8 +238,10 @@ public class ApproveService implements IApproveService {
|
|
|
Map<String,String> userData = new HashMap<>();
|
|
|
userData.put("idCard",approvalInfoDTO.getApplicantIdcard());
|
|
|
userData.put("userName",approvalInfoDTO.getApplicantName());
|
|
|
- this.buildTaskRequest(taskRequest,approvalInfo,userData);
|
|
|
+
|
|
|
+ this.buildTaskRequest(taskRequest,approvalInfo,userData, approvalInfoDTO.getActivitiHolderList(), vo.getTaskRunDetailVos().get(0).getId());
|
|
|
boolean sendMessageFlag = true;
|
|
|
+ String approveResult = ApproveResultEnum.APPROVEING.getValue();
|
|
|
if(CollectionUtils.isNotEmpty(vo.getTaskRunDetailVos())){
|
|
|
for(TaskHistoryDetailVo taskDetailVo: vo.getTaskRunDetailVos()){
|
|
|
vo = baseApproveOperate(taskDetailVo.getId(), ApproveWorkFlowOprationEnum.COMPLETE_AGREE,
|
|
@@ -252,8 +254,10 @@ public class ApproveService implements IApproveService {
|
|
|
logger.info("===发送消息标志:{}====",sendMessageFlag);
|
|
|
if(sendMessageFlag){
|
|
|
sendApproveResultMessage(vo.getProcessInstanceId(),approvalInfo.getMessageId(),ApproveWorkFlowOprationEnum.COMPLETE_AGREE);
|
|
|
+ approveResult = ApproveResultEnum.SUCCESS.getValue();
|
|
|
}
|
|
|
}
|
|
|
+ approvalInfo.setApproveResult(approveResult);
|
|
|
approvalInfo = this.buildTaskInfoByProcessInstanceId(approvalInfo, vo.getTaskRunDetailVos());
|
|
|
logger.info("===保存表单信息====");
|
|
|
approvalInfoMapper.insert(approvalInfo);
|
|
@@ -356,7 +360,7 @@ public class ApproveService implements IApproveService {
|
|
|
Map<String,String> userData = new HashMap<>();
|
|
|
userData.put("idCard",approvalInfoDTO.getApplicantIdcard());
|
|
|
userData.put("userName",approvalInfoDTO.getApplicantName());
|
|
|
- this.buildTaskRequest(taskRequest,approvalInfo,userData);
|
|
|
+ this.buildTaskRequest(taskRequest,approvalInfo,userData, approvalInfoDTO.getActivitiHolderList(), null);
|
|
|
boolean sendMessageFlag = true;
|
|
|
for(TaskHistoryDetailVo taskDetailVo: list){
|
|
|
ProcessInstanceVO vo = baseApproveOperate(taskDetailVo.getId(),
|
|
@@ -370,6 +374,7 @@ public class ApproveService implements IApproveService {
|
|
|
logger.info("====发送结果标志:{}",sendMessageFlag);
|
|
|
if(sendMessageFlag){
|
|
|
sendApproveResultMessage(approvalInfo.getProcessInstanceId(),approvalInfo.getMessageId(),ApproveWorkFlowOprationEnum.COMPLETE_AGREE);
|
|
|
+ approvalInfo.setApproveResult(ApproveResultEnum.SUCCESS.getValue());
|
|
|
}
|
|
|
logger.info("===保存表单信息====");
|
|
|
//approvalInfoMapper.updateById(approvalInfo);
|
|
@@ -406,9 +411,13 @@ public class ApproveService implements IApproveService {
|
|
|
/**
|
|
|
* 构建工作流请求体
|
|
|
* @param taskRequest
|
|
|
+ * @param approvalInfo
|
|
|
+ * @param userData
|
|
|
+ * @param activitiHolderList
|
|
|
+ * @param taskId 任务id,新增时需要手动传(因为新增的时候没有任务id可以查询)
|
|
|
* @return
|
|
|
*/
|
|
|
- private TaskRequest buildTaskRequest(TaskRequest taskRequest,ApprovalInfo approvalInfo,Map<String,String> userData) {
|
|
|
+ private TaskRequest buildTaskRequest(TaskRequest taskRequest, ApprovalInfo approvalInfo, Map<String, String> userData, List<ActivitiHolder> activitiHolderList, String taskId) {
|
|
|
String idCard = "";
|
|
|
if(null != approvalInfo && StringUtils.isNotEmpty(approvalInfo.getApplicantIdcard())){
|
|
|
idCard = approvalInfo.getApplicantIdcard();
|
|
@@ -433,6 +442,18 @@ public class ApproveService implements IApproveService {
|
|
|
approveTaskRequestVo.setHandleUser(userInfo == null?userData.get("idCard"):userInfo.getIdcard());
|
|
|
approveTaskRequestVo.setHandleUserName(userInfo == null?userData.get("userName"):userInfo.getUserName());
|
|
|
taskRequest.setData(approveTaskRequestVo);
|
|
|
+ if (CollectionUtils.isNotEmpty(activitiHolderList)){
|
|
|
+ TransMessage transMessage = new TransMessage();
|
|
|
+ if (StringUtils.isNotEmpty(taskId)){
|
|
|
+ //通过任务id获取任务分支
|
|
|
+ List<TaskOutgoingVo> list = buildTaskOutgoingVoList(taskId);
|
|
|
+ for (ActivitiHolder activitiHolder: activitiHolderList){
|
|
|
+ activitiHolder.setActivitiId(list.get(0).getActivitiId());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ transMessage.setActivitiHolders(activitiHolderList);
|
|
|
+ taskRequest.setTransMessage(transMessage);
|
|
|
+ }
|
|
|
return taskRequest;
|
|
|
}
|
|
|
|
|
@@ -444,11 +465,12 @@ public class ApproveService implements IApproveService {
|
|
|
* @param taskId 任务id
|
|
|
* @param approveWorkFlowOprationEnum
|
|
|
* @param taskRequest
|
|
|
+ * @param activitiHolderList
|
|
|
* @return
|
|
|
*/
|
|
|
@Override
|
|
|
- public ResponseStatus approveOperate(String taskId,String processInstanceId, ApproveWorkFlowOprationEnum
|
|
|
- approveWorkFlowOprationEnum, TaskRequest taskRequest,String idcard,Map<String,String> userData) {
|
|
|
+ public ResponseStatus approveOperate(String taskId, String processInstanceId, ApproveWorkFlowOprationEnum
|
|
|
+ approveWorkFlowOprationEnum, TaskRequest taskRequest, String idcard, Map<String, String> userData, List<ActivitiHolder> activitiHolderList) {
|
|
|
ApprovalInfo approvalInfo = null;
|
|
|
LambdaQueryWrapper<ApprovalInfo> where = null;
|
|
|
if(approvalInfo == null){
|
|
@@ -486,7 +508,7 @@ public class ApproveService implements IApproveService {
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- this.buildTaskRequest(taskRequest,approvalInfo,userData);
|
|
|
+ this.buildTaskRequest(taskRequest,approvalInfo,userData, activitiHolderList, null);
|
|
|
String idCard = getCurrentUserId(idcard);
|
|
|
ProcessInstanceVO processInstanceVO= baseApproveOperate(taskId,approveWorkFlowOprationEnum,
|
|
|
taskRequest, approvalInfo,idCard,userData);
|
|
@@ -496,7 +518,18 @@ public class ApproveService implements IApproveService {
|
|
|
}
|
|
|
logger.info("====是否发送消息标志位:{}====",sendMessageFlag);
|
|
|
if(sendMessageFlag){
|
|
|
- sendApproveResultMessage(processInstanceVO.getProcessInstanceId(),approvalInfo.getMessageId(),ApproveWorkFlowOprationEnum.COMPLETE_AGREE);
|
|
|
+ sendApproveResultMessage(processInstanceVO.getProcessInstanceId(),approvalInfo.getMessageId(), approveWorkFlowOprationEnum);
|
|
|
+ switch (approveWorkFlowOprationEnum){
|
|
|
+ case COMPLETE_AGREE:
|
|
|
+ approvalInfo.setApproveResult(ApproveResultEnum.SUCCESS.getValue());
|
|
|
+ break;
|
|
|
+ case COMPLETE_DISAGREE:
|
|
|
+ approvalInfo.setApproveResult(ApproveResultEnum.FAIL.getValue());
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ break;
|
|
|
+ }
|
|
|
+
|
|
|
}
|
|
|
/* where = new LambdaQueryWrapper<>();
|
|
|
where.eq(ApprovalInfo::getProcessInstanceId,processInstanceVO.getProcessInstanceId());
|
|
@@ -519,7 +552,7 @@ public class ApproveService implements IApproveService {
|
|
|
*/
|
|
|
public ProcessInstanceVO baseApproveOperate(String taskId, ApproveWorkFlowOprationEnum
|
|
|
approveWorkFlowOprationEnum, TaskRequest taskRequest, ApprovalInfo approvalInfo,String idCard,Map<String,String> userData) {
|
|
|
- taskRequest = buildTaskRequest(taskRequest,approvalInfo,userData);
|
|
|
+ taskRequest = buildTaskRequest(taskRequest,approvalInfo,userData, null, null);
|
|
|
if (null == taskRequest.getApproveMessage()) {
|
|
|
ApproveMessage approveMessage = new ApproveMessage();
|
|
|
approveMessage.setApproveState(approveWorkFlowOprationEnum.getValue());
|
|
@@ -726,7 +759,6 @@ public class ApproveService implements IApproveService {
|
|
|
Map<String,String> userData = new HashMap<>();
|
|
|
userData.put("idCard",approvalInfo.getApplicantIdcard());
|
|
|
userData.put("userName",approvalInfo.getApplicantName());
|
|
|
- TaskRequest taskRequest = this.buildTaskRequest(null, approvalInfo,userData);
|
|
|
for(String taskId : arrTaskId){
|
|
|
//执行流程撤销操作,撤销会删除流程
|
|
|
workflowClientFactory.getWorkflowTaskClient().handleTaskForRedo(taskId,getCurrentUserId());
|
|
@@ -743,6 +775,7 @@ public class ApproveService implements IApproveService {
|
|
|
LambdaUpdateWrapper<ApprovalInfo> updateWrapper = new LambdaUpdateWrapper<>();
|
|
|
updateWrapper.eq(IdEntity::getId,id);
|
|
|
updateWrapper.set(ApprovalInfo::getIsDeleted,YesNoEnum.YES.getValue());
|
|
|
+ updateWrapper.set(ApprovalInfo::getApproveResult, ApproveResultEnum.DELETED.getValue());
|
|
|
approvalInfoMapper.update(null,updateWrapper);
|
|
|
sendApproveResultMessage(approvalInfo.getProcessInstanceId(),approvalInfo.getMessageId(),ApproveWorkFlowOprationEnum.RECALL);
|
|
|
}
|
|
@@ -927,6 +960,37 @@ public class ApproveService implements IApproveService {
|
|
|
return taskOperateVo;
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 根据任务ID查询任务分支(运行时任务)
|
|
|
+ * @param taskId
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public ResponseStatus taskOut(String taskId) {
|
|
|
+ List<TaskOutgoingVo> list = buildTaskOutgoingVoList(taskId);
|
|
|
+ return ResponseDTO.newInstance(list);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 查询任务分支(运行时任务)
|
|
|
+ * @param taskId
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ private List<TaskOutgoingVo> buildTaskOutgoingVoList(String taskId) {
|
|
|
+ OutgoingVo outgoingVo = workflowClientFactory.getWorkflowTaskClient().queryTaskOutgoing(taskId);
|
|
|
+ List<TaskOutgoingVo> list = new ArrayList<>();
|
|
|
+ for (Map.Entry<String, String> map : outgoingVo.getOutgoingTransitions().entrySet()) {
|
|
|
+ if (!"end".equalsIgnoreCase(map.getKey())){
|
|
|
+ TaskOutgoingVo taskOutgoingVo = new TaskOutgoingVo();
|
|
|
+ taskOutgoingVo.setActivitiId(map.getKey());
|
|
|
+ taskOutgoingVo.setActivitiName(map.getValue());
|
|
|
+ list.add(taskOutgoingVo);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return list;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
/**
|
|
|
* 判断是否为第一个节点,是则允许编辑
|
|
|
* @param taskOperateVo
|
|
@@ -1156,34 +1220,32 @@ public class ApproveService implements IApproveService {
|
|
|
private void sendApproveResultMessage(String processInstanceId,String messageId, ApproveWorkFlowOprationEnum approveWorkFlowOprationEnum){
|
|
|
logger.info("====任务结束,开始发送消息====");
|
|
|
//流程结束且是同意操作才发消息
|
|
|
- if(approveWorkFlowOprationEnum.getValue().equalsIgnoreCase(ApproveWorkFlowOprationEnum.COMPLETE_AGREE.getValue())){
|
|
|
- RequestVo requestVo = new RequestVo();
|
|
|
- MessageInfoVo messageInfoVo = new MessageInfoVo();
|
|
|
- Map map = new HashMap();
|
|
|
- map.put("processInstanceId", processInstanceId);
|
|
|
- map.put("approveResult",approveWorkFlowOprationEnum.getValue());
|
|
|
- map.put("messageId",messageId);
|
|
|
- List<Map<String,String>> infoSet = new ArrayList<>();
|
|
|
- infoSet.add(map);
|
|
|
- messageInfoVo.setTitle("审批系统-权限申请审批");
|
|
|
- messageInfoVo.setCreateTime(new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()));
|
|
|
- messageInfoVo.setInfoSet(infoSet);
|
|
|
- messageInfoVo.setContent(processInstanceId);
|
|
|
- messageInfoVo.setUserSystem("审批系统");
|
|
|
- messageInfoVo.setUserSystemCode(businessSystem);
|
|
|
- messageInfoVo.setUserName("审批系统");
|
|
|
- messageInfoVo.setMessageId(UUIDUtils.getUUID());
|
|
|
- messageInfoVo.setInfoType(kafkaConfig.getAuthServiceApplyTopic());
|
|
|
- List<MessageInfoVo> messageInfoVos = new ArrayList<>();
|
|
|
- messageInfoVos.add(messageInfoVo);
|
|
|
- //设置消息
|
|
|
- requestVo.setMessages(messageInfoVos);
|
|
|
- requestVo.setTopic(kafkaConfig.getAuthServiceApplyTopic());
|
|
|
- requestVo.setAppKey(kafkaConfig.getAppKey());
|
|
|
- requestVo.setAppSecret(kafkaConfig.getAppSecret());
|
|
|
- logger.info("====kafka开始推送结果,实例ID{}====", processInstanceId);
|
|
|
- kafkaService.send(requestVo, kafkaConfig.getKafkaServers());
|
|
|
- }
|
|
|
+ RequestVo requestVo = new RequestVo();
|
|
|
+ MessageInfoVo messageInfoVo = new MessageInfoVo();
|
|
|
+ Map map = new HashMap();
|
|
|
+ map.put("processInstanceId", processInstanceId);
|
|
|
+ map.put("approveResult",approveWorkFlowOprationEnum.getValue());
|
|
|
+ map.put("messageId",messageId);
|
|
|
+ List<Map<String,String>> infoSet = new ArrayList<>();
|
|
|
+ infoSet.add(map);
|
|
|
+ messageInfoVo.setTitle("审批系统-权限申请审批");
|
|
|
+ messageInfoVo.setCreateTime(new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()));
|
|
|
+ messageInfoVo.setInfoSet(infoSet);
|
|
|
+ messageInfoVo.setContent(processInstanceId);
|
|
|
+ messageInfoVo.setUserSystem("审批系统");
|
|
|
+ messageInfoVo.setUserSystemCode(businessSystem);
|
|
|
+ messageInfoVo.setUserName("审批系统");
|
|
|
+ messageInfoVo.setMessageId(UUIDUtils.getUUID());
|
|
|
+ messageInfoVo.setInfoType(kafkaConfig.getAuthServiceApplyTopic());
|
|
|
+ List<MessageInfoVo> messageInfoVos = new ArrayList<>();
|
|
|
+ messageInfoVos.add(messageInfoVo);
|
|
|
+ //设置消息
|
|
|
+ requestVo.setMessages(messageInfoVos);
|
|
|
+ requestVo.setTopic(kafkaConfig.getAuthServiceApplyTopic());
|
|
|
+ requestVo.setAppKey(kafkaConfig.getAppKey());
|
|
|
+ requestVo.setAppSecret(kafkaConfig.getAppSecret());
|
|
|
+ logger.info("====kafka开始推送结果,实例ID{}====,消息体为:{}", processInstanceId, JSON.toJSONString(requestVo));
|
|
|
+ kafkaService.send(requestVo, kafkaConfig.getKafkaServers());
|
|
|
}
|
|
|
|
|
|
private void updateApprovalById(ApprovalInfo approvalInfo){
|