feat: 新版转办2.0优化版

This commit is contained in:
2024-01-12 11:17:51 +08:00
parent fa8b450e2c
commit 6532b9c430
8 changed files with 68 additions and 107 deletions
@@ -172,6 +172,7 @@ public class ProcessEsAnnualReportServiceImpl extends ServiceImpl<ProcessEsAnnua
boolean distribute = annualReport.getDistributeFlag().equals("1"); boolean distribute = annualReport.getDistributeFlag().equals("1");
contactUserLeaderLeader = annualReport.getContactUserLeaderLeader(); contactUserLeaderLeader = annualReport.getContactUserLeaderLeader();
taskService.setVariable(taskId, "distribute", distribute); taskService.setVariable(taskId, "distribute", distribute);
String curContactUser = UserUtils.getUserId();
// 获取是否分发 // 获取是否分发
if (distribute) { if (distribute) {
String workGroupUsers = annualReport.getWorkGroupUser(); String workGroupUsers = annualReport.getWorkGroupUser();
@@ -187,14 +188,16 @@ public class ProcessEsAnnualReportServiceImpl extends ServiceImpl<ProcessEsAnnua
dataList.forEach(data -> data.setContactUserLeaderLeader(contactUserLeaderLeader)); dataList.forEach(data -> data.setContactUserLeaderLeader(contactUserLeaderLeader));
dataList.forEach(data -> data.setExecutionId(executionId)); dataList.forEach(data -> data.setExecutionId(executionId));
dataList.forEach(data -> data.setProcessInstanceId(processInstanceId)); dataList.forEach(data -> data.setProcessInstanceId(processInstanceId));
dataList.forEach(data -> data.setContactUser(contactUser)); dataList.forEach(data -> data.setContactUser(curContactUser));
// 不分发,入库存表 // 不分发,入库存表
saveBatch(dataList); saveBatch(dataList);
taskService.setVariable(taskId, "contactUserLeaderLeader", contactUserLeaderLeader); taskService.setVariable(taskId, "contactUserLeaderLeader", contactUserLeaderLeader);
} }
taskService.setVariable(taskId, contactUser + "-ContactUserLeaderLeader", contactUserLeaderLeader); taskService.setVariable(taskId, curContactUser + "-ContactUserLeaderLeader", contactUserLeaderLeader);
userVariable.put("contactUserLeaderLeader", contactUserLeaderLeader); userVariable.put("contactUserLeaderLeader", contactUserLeaderLeader);
processNodeLinkService.incrementSaveNodeUserLink(processDefinitionId, processInstanceId, userVariable); processNodeLinkService.incrementSaveNodeUserLink(processDefinitionId, processInstanceId, userVariable);
// 转办
runtimeService.setVariable(executionId, "contactUser", curContactUser);
break; break;
case WORK_GROUP_COLLECT: case WORK_GROUP_COLLECT:
// 先删后增 // 先删后增
@@ -211,13 +214,20 @@ public class ProcessEsAnnualReportServiceImpl extends ServiceImpl<ProcessEsAnnua
// 保存收集联络人主管级领导 // 保存收集联络人主管级领导
dataList.forEach(data -> data.setCollectUserLeader(collectUserLeader)); dataList.forEach(data -> data.setCollectUserLeader(collectUserLeader));
dataList.forEach(data -> data.setContactUserLeaderLeader(contactUserLeaderLeader)); dataList.forEach(data -> data.setContactUserLeaderLeader(contactUserLeaderLeader));
dataList.forEach(data -> data.setWorkGroupUser(workGroupUser)); String curWorkGroupUser = UserUtils.getUserId();
dataList.forEach(data -> data.setWorkGroupUser(curWorkGroupUser));
saveBatch(dataList); saveBatch(dataList);
// 转办
runtimeService.setVariable(executionId, "workGroupUser", curWorkGroupUser);
// 设置下一个节点的审批人流程变量 // 设置下一个节点的审批人流程变量
taskService.setVariable(taskId, "collectUserLeader", collectUserLeader); taskService.setVariable(taskId, "collectUserLeader", collectUserLeader);
userVariable.put("collectUserLeader", collectUserLeader); userVariable.put("collectUserLeader", collectUserLeader);
processNodeLinkService.incrementSaveNodeUserLink(processDefinitionId, processInstanceId, userVariable); processNodeLinkService.incrementSaveNodeUserLink(processDefinitionId, processInstanceId, userVariable);
break; break;
case COLLECT_LEADER_APPROVAL:
// 转办
runtimeService.setVariable(executionId, "collectUserLeader", UserUtils.getUserId());
break;
case CONTACT_USER_COLLECT: case CONTACT_USER_COLLECT:
// 先删后增 // 先删后增
wrapper.eq(ProcessEsAnnualReport::getContactUser, contactUser); wrapper.eq(ProcessEsAnnualReport::getContactUser, contactUser);
@@ -232,6 +242,12 @@ public class ProcessEsAnnualReportServiceImpl extends ServiceImpl<ProcessEsAnnua
userVariable.put("contactUserLeaderLeader", contactUserLeaderLeader); userVariable.put("contactUserLeaderLeader", contactUserLeaderLeader);
processNodeLinkService.incrementSaveNodeUserLink(processDefinitionId, processInstanceId, userVariable); processNodeLinkService.incrementSaveNodeUserLink(processDefinitionId, processInstanceId, userVariable);
saveBatch(dataList); saveBatch(dataList);
// 转办
runtimeService.setVariable(executionId, "contactUser", UserUtils.getUserId());
break;
case CONTACT_USER_LEADER_APPROVAL:
// 转办
runtimeService.setVariable(executionId, "contactUserLeaderLeader", UserUtils.getUserId());
break; break;
} }
runtimeService.setVariableLocal(processInstanceId, "pass", pass); runtimeService.setVariableLocal(processInstanceId, "pass", pass);
@@ -297,6 +313,7 @@ public class ProcessEsAnnualReportServiceImpl extends ServiceImpl<ProcessEsAnnua
break; break;
case CONTACT_USER_COLLECT: case CONTACT_USER_COLLECT:
wrapper.eq(ProcessEsAnnualReport::getContactUser, userId); wrapper.eq(ProcessEsAnnualReport::getContactUser, userId);
wrapper.eq(ProcessEsAnnualReport::getExecutionId, executionId);
break; break;
case CONTACT_USER_LEADER_APPROVAL: case CONTACT_USER_LEADER_APPROVAL:
wrapper.eq(ProcessEsAnnualReport::getContactUserLeaderLeader, userId); wrapper.eq(ProcessEsAnnualReport::getContactUserLeaderLeader, userId);
@@ -182,7 +182,7 @@ public class ProcessESInitChangeController {
@ApiOperation(value="企标立项变更流程-转办", notes="企标立项变更流程-转办") @ApiOperation(value="企标立项变更流程-转办", notes="企标立项变更流程-转办")
@PostMapping(value = "/transfer") @PostMapping(value = "/transfer")
public Result<?> transfer(@RequestBody TransferVO transferVO) { public Result<?> transfer(@RequestBody TransferVO transferVO) {
initChangeService.transfer(transferVO.getTaskId(), transferVO.getUserId()); processHandleService.transfer(transferVO.getTaskId(), transferVO.getUserId());
return Result.OK(); return Result.OK();
} }
} }
@@ -33,12 +33,6 @@ public interface ProcessEsInitChangeService extends IService<ProcessEsInitChange
*/ */
void saveToDraft(ProcessInfoVO<InitChangeDataVO> initChangeData); void saveToDraft(ProcessInfoVO<InitChangeDataVO> initChangeData);
/**
* 软删除实例数据
* @param processInstanceId
*/
void removeByProcessInstanceId(String processInstanceId);
/** /**
* 获取办理数据 * 获取办理数据
* @param taskId * @param taskId
@@ -53,10 +47,4 @@ public interface ProcessEsInitChangeService extends IService<ProcessEsInitChange
*/ */
void autoStartProcessByRecheck(String standardNo); void autoStartProcessByRecheck(String standardNo);
/**
* 转办
* @param taskId
* @param userId
*/
void transfer(String taskId, String userId);
} }
@@ -200,20 +200,6 @@ public class ProcessEsInitChangeServiceImpl extends ServiceImpl<ProcessEsInitCha
actFlowCommonService.updateProcessAll(processInstanceId, mainDraftUser, prcName, null, prcType, null); actFlowCommonService.updateProcessAll(processInstanceId, mainDraftUser, prcName, null, prcType, null);
} }
@Override
public void transfer(String taskId, String toUserId) {
// 判断是否是特殊节点,如果是特殊节点则需要替换流程变量
if (StrUtil.isBlank(taskId) && !actFlowCommonService.taskExists(taskId)) {
throw new JeroBootException("taskId为空或任务不存在");
}
Task task = taskService.createTaskQuery().taskId(taskId).singleResult();
String taskName = task.getName();
if (taskName.equals(STANDARDIZATION_CHECK)) {
taskService.setVariable(taskId, "standardizationApprovalUser", toUserId);
}
processHandleService.transfer(taskId, toUserId);
}
@Override @Override
public void approvalInitChange(InitChangeDataVO initChangeDataVO, boolean pass) { public void approvalInitChange(InitChangeDataVO initChangeDataVO, boolean pass) {
String userId = UserUtils.getUserId(); String userId = UserUtils.getUserId();
@@ -250,9 +236,9 @@ public class ProcessEsInitChangeServiceImpl extends ServiceImpl<ProcessEsInitCha
update(updateWrapper); update(updateWrapper);
} }
runtimeService.setVariableLocal(processInstanceId, "pass", true); runtimeService.setVariableLocal(processInstanceId, "pass", true);
} else { if (taskName.equals(STANDARDIZATION_CHECK)) {
// 设置流程变量 taskService.setVariable(taskId, "standardizationApprovalUser", userId);
runtimeService.setVariableLocal(processInstanceId, "pass", false); }
} }
// 更新审批表为完成,填充数据 // 更新审批表为完成,填充数据
actFlowCommonService.updateApprovalInfo(commonVO, taskId, pass); actFlowCommonService.updateApprovalInfo(commonVO, taskId, pass);
@@ -260,8 +246,10 @@ public class ProcessEsInitChangeServiceImpl extends ServiceImpl<ProcessEsInitCha
actFlowCommonService.completeTask(taskId, userId); actFlowCommonService.completeTask(taskId, userId);
// 删除草稿 // 删除草稿
actFlowCommonService.removeDraft(commonVO); actFlowCommonService.removeDraft(commonVO);
// 如果是会签节点,驳回后要将其余节点recode设置为 未处理 状态
if (!pass) { if (!pass) {
// 设置流程变量
runtimeService.setVariableLocal(processInstanceId, "pass", false);
// 如果是会签节点,驳回后要将其余节点recode设置为 未处理 状态
if (taskName.equals(CounterSignNodeNameConstants.ES_INIT_CHANGE_EXPERT_NODE_NAME)) { if (taskName.equals(CounterSignNodeNameConstants.ES_INIT_CHANGE_EXPERT_NODE_NAME)) {
actFlowCommonService.updateOtherCountersignRecodeStatus(processInstanceId, CounterSignNodeNameConstants.ES_INIT_CHANGE_EXPERT_NODE_NAME); actFlowCommonService.updateOtherCountersignRecodeStatus(processInstanceId, CounterSignNodeNameConstants.ES_INIT_CHANGE_EXPERT_NODE_NAME);
} }
@@ -291,13 +279,6 @@ public class ProcessEsInitChangeServiceImpl extends ServiceImpl<ProcessEsInitCha
} }
} }
@Override
public void removeByProcessInstanceId(String processInstanceId) {
LambdaUpdateWrapper<ProcessEsInitChange> updateWrapper = new LambdaUpdateWrapper<>();
updateWrapper.eq(ProcessEsInitChange::getProcessInstanceId, processInstanceId).set(ProcessEsInitChange::getDelFlag, YesOrNoEnum.YES.getValue());
update(updateWrapper);
}
@Override @Override
public List<String> getSequenceNumbers(String esCodeDictValue, String esNameCodeDictValue, String categoryCodeDictValue) { public List<String> getSequenceNumbers(String esCodeDictValue, String esNameCodeDictValue, String categoryCodeDictValue) {
// 已经存在的标准 // 已经存在的标准
@@ -134,7 +134,7 @@ public class ESRecheckController {
@ApiOperation(value="企标复审流程-转办", notes="企标复审流程-转办") @ApiOperation(value="企标复审流程-转办", notes="企标复审流程-转办")
@PostMapping(value = "/transfer") @PostMapping(value = "/transfer")
public Result<?> transfer(@RequestBody TransferVO transferVO) { public Result<?> transfer(@RequestBody TransferVO transferVO) {
recheckService.transfer(transferVO.getTaskId(), transferVO.getUserId()); processHandleService.transfer(transferVO.getTaskId(), transferVO.getUserId());
return Result.OK(); return Result.OK();
} }
@@ -22,5 +22,4 @@ public interface ProcessEsRecheckService extends IService<ProcessEsRecheck> {
void approval(ESRecheckDataVO recheckData, boolean pass); void approval(ESRecheckDataVO recheckData, boolean pass);
void transfer(String taskId, String userId);
} }
@@ -210,7 +210,7 @@ public class ProcessEsRecheckServiceImpl extends ServiceImpl<ProcessEsRecheckMap
if (flowUser != null) { if (flowUser != null) {
// 人员数据 // 人员数据
Map<String, Object> variables = recheckData.getFlowUser(); Map<String, Object> variables = recheckData.getFlowUser();
// 设置联络人节点人员 // 设置联络人节点人员
actFlowCommonService.putIfNotNull(variables, "standardizationUser", data.getStandardizationUser()); actFlowCommonService.putIfNotNull(variables, "standardizationUser", data.getStandardizationUser());
// 设置流程变量 // 设置流程变量
Map<String, Object> actVariables = this.setVariables(variables); Map<String, Object> actVariables = this.setVariables(variables);
@@ -238,6 +238,16 @@ public class ProcessEsRecheckServiceImpl extends ServiceImpl<ProcessEsRecheckMap
Integer prcType = ProcessTypeEnum.ES_RECHECK.getValue(); Integer prcType = ProcessTypeEnum.ES_RECHECK.getValue();
actFlowCommonService.updateProcessAll(processInstanceId, userId, prcName, prcMes, prcType, dueTime); actFlowCommonService.updateProcessAll(processInstanceId, userId, prcName, prcMes, prcType, dueTime);
} }
Task task = taskService.createTaskQuery().taskId(taskId).singleResult();
String taskName = task.getName();
switch (taskName) {
case DRAFTER_EDIT:
taskService.setVariable(taskId, "mainDraftUser", userId);
break;
case DRAFTER_LEADER_APPROVAL:
taskService.setVariable(taskId, "mainDraftUserLeader", userId);
break;
}
} }
// 设置流程变量 // 设置流程变量
runtimeService.setVariable(processInstanceId, "pass", pass); runtimeService.setVariable(processInstanceId, "pass", pass);
@@ -249,25 +259,6 @@ public class ProcessEsRecheckServiceImpl extends ServiceImpl<ProcessEsRecheckMap
actFlowCommonService.removeDraft(commonVO); actFlowCommonService.removeDraft(commonVO);
} }
@Override
public void transfer(String taskId, String toUserId) {
// 判断是否是特殊节点,如果是特殊节点则需要替换流程变量
if (StrUtil.isBlank(taskId) && !actFlowCommonService.taskExists(taskId)) {
throw new JeroBootException("taskId为空或任务不存在");
}
Task task = taskService.createTaskQuery().taskId(taskId).singleResult();
String taskName = task.getName();
switch (taskName) {
case DRAFTER_EDIT:
taskService.setVariable(taskId, "mainDraftUser", toUserId);
break;
case DRAFTER_LEADER_APPROVAL:
taskService.setVariable(taskId, "mainDraftUserLeader", toUserId);
break;
}
processHandleService.transfer(taskId, toUserId);
}
} }
@@ -388,7 +388,8 @@ public class EsRevisionServiceImpl extends ServiceImpl<EsRevisionMapper, Process
List<ReviewMeetingDetailVO> reviewMeetingDetails = data.getReviewMeetingDetails(); List<ReviewMeetingDetailVO> reviewMeetingDetails = data.getReviewMeetingDetails();
// 设置当前评分人 // 设置当前评分人
curUserId = UserUtils.getUserId(); curUserId = UserUtils.getUserId();
reviewMeetingDetails.forEach(reviewMeetingDetail -> reviewMeetingDetail.setAdjudicatorId(curUserId)); String finalCurUserId = curUserId;
reviewMeetingDetails.forEach(reviewMeetingDetail -> reviewMeetingDetail.setAdjudicatorId(finalCurUserId));
ProcessEsRevision revisionDb = getById(dataDb.getId()); ProcessEsRevision revisionDb = getById(dataDb.getId());
List<ReviewMeetingDetailVO> reviewMeetingDetailsDb = revisionDb.parseReviewMeetingDetails(); List<ReviewMeetingDetailVO> reviewMeetingDetailsDb = revisionDb.parseReviewMeetingDetails();
if (reviewMeetingDetailsDb == null) { if (reviewMeetingDetailsDb == null) {
@@ -530,56 +531,40 @@ public class EsRevisionServiceImpl extends ServiceImpl<EsRevisionMapper, Process
// TODO 在线编辑 插入签章 // TODO 在线编辑 插入签章
break; break;
} }
if (pass) { // 获取当前节点的id
runtimeService.setVariable(processInstanceId, "pass", true); curUserId = UserUtils.getUserId();
} else { // 转办修改流程变量逻辑
// 设置流程变量 switch (xmlNodeId) {
runtimeService.setVariable(processInstanceId, "pass", false); case MAIN_DRAFT_USER_COLLECT_FIRST:
taskService.setVariable(taskId, "mainDraftUser", curUserId);
break;
case STANDARDIZATION_CHECK:
taskService.setVariable(taskId, "standardizationUser", curUserId);
break;
case CONTACT_USER_DISTRIBUTE:
case CONTACT_USER_COLLECT:
runtimeService.setVariable(executionId, "contactUser", curUserId);
runtimeService.setVariable(executionId, curUserId + "-ExecutionId", executionId);
break;
case CONTACT_USER_LEADER_APPROVAL:
runtimeService.setVariable(executionId, "contactUserLeader", curUserId);
runtimeService.setVariable(executionId, executionId + "-ContactUserLeader", curUserId);
break;
case LEADER_APPROVAL:
// 根据流程实例Id修改审批人字段
runtimeService.setVariable(executionId, "contactUserLeader", curUserId);
updateWrapper.clear();
updateWrapper.eq(ProcessEsRevision::getProcessInstanceId, processInstanceId)
.set(ProcessEsRevision::getApprovalUser, curUserId);
update(updateWrapper);
} }
runtimeService.setVariable(processInstanceId, "pass", pass);
// 审批节点 // 审批节点
actFlowCommonService.completeTask(taskId, userId); actFlowCommonService.completeTask(taskId, userId);
} }
@Override @Override
public void transfer(String taskId, String toUserId) { public void transfer(String taskId, String toUserId) {
// 判断是否是特殊节点,如果是特殊节点则需要替换流程变量
if (StrUtil.isBlank(taskId) && !actFlowCommonService.taskExists(taskId)) {
throw new JeroBootException("taskId为空或任务不存在");
}
if (StrUtil.isBlank(toUserId)) {
throw new JeroBootException("转办人不能为空");
}
Task task = taskService.createTaskQuery().taskId(taskId).singleResult();
String processInstanceId = task.getProcessInstanceId();
// 获取执行id
String executionId = task.getExecutionId();
// 获取当前节点的id
ProcessApprovalRecord record = actFlowCommonService.getNodeIdByTaskId(taskId);
String xmlNodeId = record.getNodeId();
switch (xmlNodeId) {
case MAIN_DRAFT_USER_COLLECT_FIRST:
taskService.setVariable(taskId, "mainDraftUser", toUserId);
break;
case STANDARDIZATION_CHECK:
taskService.setVariable(taskId, "standardizationUser", toUserId);
break;
case CONTACT_USER_DISTRIBUTE:
case CONTACT_USER_COLLECT:
runtimeService.setVariable(executionId, "contactUser", toUserId);
runtimeService.setVariable(executionId, toUserId + "-ExecutionId", executionId);
break;
case CONTACT_USER_LEADER_APPROVAL:
runtimeService.setVariable(executionId, "contactUserLeader", toUserId);
runtimeService.setVariable(executionId, executionId + "-ContactUserLeader", toUserId);
break;
case LEADER_APPROVAL:
// 根据流程实例Id修改审批人字段
runtimeService.setVariable(executionId, "contactUserLeader", toUserId);
LambdaUpdateWrapper<ProcessEsRevision> updateWrapper = new LambdaUpdateWrapper<>();
updateWrapper.eq(ProcessEsRevision::getProcessInstanceId, processInstanceId)
.set(ProcessEsRevision::getApprovalUser, toUserId);
update(updateWrapper);
}
processHandleService.transfer(taskId, toUserId); processHandleService.transfer(taskId, toUserId);
} }