feat: 其他起草人上传企标task绑定数据监听器v1

This commit is contained in:
2024-01-29 18:18:09 +08:00
parent 555bf17664
commit ad118980c9
3 changed files with 109 additions and 16 deletions
@@ -49,13 +49,18 @@ public class OtherDraftUserUploadDeadlineJob implements Job {
arWrapper.eq(ProcessApprovalRecord::getFinishFlag, FinishFlagEnum.INCOMPLETE.getValue());
for (ProcessEsRevision revision : revisionList) {
String prcId = revision.getProcessInstanceId();
if (StrUtil.isBlank(prcId)) {
continue;
}
List<OtherDraftUserVO> otherDraftUserVOS = revision.parseOtherDraftUserVOS();
if (otherDraftUserVOS == null || otherDraftUserVOS.isEmpty()) {
continue;
}
arWrapper.eq(ProcessApprovalRecord::getProcessInstanceId, prcId);
List<ProcessApprovalRecord> arList = approvalRecordService.list(arWrapper);
Map<String, ProcessApprovalRecord> arMap = arList.stream().collect(Collectors.toMap(ProcessApprovalRecord::getOriginUserId, ar -> ar));
arWrapper.clear();
Map<String, List<ProcessApprovalRecord>> arMap = arList.stream()
.collect(Collectors.groupingBy(ProcessApprovalRecord::getOriginUserId));
Date curDate = new Date();
for (OtherDraftUserVO otherDraftUser : otherDraftUserVOS) {
String originUserId = otherDraftUser.getUser();
@@ -66,23 +71,26 @@ public class OtherDraftUserUploadDeadlineJob implements Job {
Date deadline = getDeadlineDate(otherDraftUser);
// 如果当前日期大于该条数据的截止日期 则自动完成任务
if (curDate.after(deadline)) {
ProcessApprovalRecord ar = arMap.get(originUserId);
if (ar == null) {
List<ProcessApprovalRecord> ar = arMap.get(originUserId);
if (ar == null || ar.isEmpty()) {
log.error("未找到对应待办");
continue;
}
String taskId = ar.getTaskId();
String taskName = ar.getTaskName();
if (StrUtil.isBlank(taskId)) {
log.error("任务Id为空");
continue;
for (ProcessApprovalRecord processApprovalRecord : ar) {
String taskId = processApprovalRecord.getTaskId();
String taskName = processApprovalRecord.getTaskName();
if (StrUtil.isBlank(taskId)) {
log.error("任务Id为空");
continue;
}
if (!taskName.equals("其他起草人上传企标")) {
continue;
}
//
ESRevisionDataVO handleData = revisionService.getHandleData(taskId);
handleData.getCommon().setTaskId(taskId);
revisionService.approval(handleData, true);
}
if (!taskName.equals("其他起草人上传企标")) {
continue;
}
ESRevisionDataVO handleData = revisionService.getHandleData(taskId);
handleData.getCommon().setTaskId(taskId);
revisionService.approval(handleData, true);
}
}
}
@@ -0,0 +1,77 @@
package com.jero.modules.activiti.process.esRevision.listener;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.jero.modules.activiti.entity.ProcessApprovalRecord;
import com.jero.modules.activiti.enums.FinishFlagEnum;
import com.jero.modules.activiti.process.esRevision.entity.OperateTypeEnum;
import com.jero.modules.activiti.process.esRevision.entity.ProcessEsRevision;
import com.jero.modules.activiti.process.esRevision.entity.vo.OtherDraftUserVO;
import com.jero.modules.activiti.process.esRevision.service.EsRevisionService;
import com.jero.modules.activiti.service.ProcessApprovalRecordService;
import org.activiti.engine.delegate.DelegateTask;
import org.activiti.engine.delegate.TaskListener;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* @author: Mzaxd
* @Date: 2023/12/19 11:59
*/
@Component("processESRevisionOtherDraftUserUploadCreateListener")
public class ProcessESRevisionOtherDraftUserUploadCreateListener implements TaskListener {
@Resource
private EsRevisionService esRevisionService;
@Resource
private ProcessApprovalRecordService approvalRecordService;
@Override
public void notify(DelegateTask delegateTask) {
// // 获取流程实例Id
// String processInstanceId = delegateTask.getProcessInstanceId();
// // 获取流程变量otherDraftUser
// String otherDraftUser = (String) delegateTask.getVariable("otherDraftUser");
// // 获取相关数据
// LambdaQueryWrapper<ProcessEsRevision> revisionWrapper = new LambdaQueryWrapper<>();
// revisionWrapper.eq(ProcessEsRevision::getProcessInstanceId, processInstanceId);
// ProcessEsRevision revision = esRevisionService.getOne(revisionWrapper);
// LambdaQueryWrapper<ProcessApprovalRecord> arWrapper = new LambdaQueryWrapper<>();
// arWrapper.eq(ProcessApprovalRecord::getFinishFlag, FinishFlagEnum.INCOMPLETE.getValue());
// List<ProcessApprovalRecord> arList = approvalRecordService.list(arWrapper);
// Map<String, List<ProcessApprovalRecord>> arMap = arList.stream()
// .collect(Collectors.groupingBy(ProcessApprovalRecord::getOriginUserId));
//
// // 将task和记录进行绑定
// List<OtherDraftUserVO> otherDraftUserVOS = revision.parseOtherDraftUserVOS();
// // 已经分配出去的TaskId
// List<String> alreadyTaskId = new ArrayList<>();
// otherDraftUserVOS.forEach(u -> {
// if (StrUtil.isNotBlank(u.getTaskId())) {
// alreadyTaskId.add(u.getTaskId());
// }
// });
// for (OtherDraftUserVO o : otherDraftUserVOS) {
// if (StrUtil.isNotBlank(o.getTaskId()) || !o.getUser().equals(otherDraftUser)) {
// continue;
// }
// List<ProcessApprovalRecord> processApprovalRecords = arMap.get(otherDraftUser);
// List<String> taskIdList = processApprovalRecords.stream()
// .map(ProcessApprovalRecord::getTaskId).collect(Collectors.toList());
// // 去除已经分配出去的TaskId
// taskIdList.removeAll(alreadyTaskId);
// o.setTaskId(taskIdList.get(0));
// break;
// }
// revision.setOtherDraftUserVOS(otherDraftUserVOS);
// revision.setOtherDrafterUploadFileJson(otherDraftUserVOS);
// esRevisionService.updateById(revision);
}
}
@@ -602,27 +602,35 @@ public class EsRevisionServiceImpl extends ServiceImpl<EsRevisionMapper, Process
// TODO 在线编辑 插入签章
break;
}
// 获取当前节点的id
curUserId = UserUtils.getUserId();
// 转办修改流程变量逻辑
switch (xmlNodeId) {
case MAIN_DRAFT_USER_COLLECT_FIRST:
// 获取当前节点的id
curUserId = UserUtils.getUserId();
taskService.setVariable(taskId, "mainDraftUser", curUserId);
break;
case STANDARDIZATION_CHECK:
// 获取当前节点的id
curUserId = UserUtils.getUserId();
taskService.setVariable(taskId, "standardizationUser", curUserId);
break;
case CONTACT_USER_DISTRIBUTE:
case CONTACT_USER_COLLECT:
// 获取当前节点的id
curUserId = UserUtils.getUserId();
runtimeService.setVariable(executionId, "contactUser", curUserId);
runtimeService.setVariable(executionId, curUserId + "-ExecutionId", executionId);
break;
case CONTACT_USER_LEADER_APPROVAL:
// 获取当前节点的id
curUserId = UserUtils.getUserId();
runtimeService.setVariable(executionId, "contactUserLeader", curUserId);
runtimeService.setVariable(executionId, executionId + "-ContactUserLeader", curUserId);
break;
case LEADER_APPROVAL:
// 根据流程实例Id修改审批人字段
// 获取当前节点的id
curUserId = UserUtils.getUserId();
runtimeService.setVariable(executionId, "contactUserLeader", curUserId);
updateWrapper.clear();
updateWrapper.eq(ProcessEsRevision::getProcessInstanceId, processInstanceId)