feat: 企标复审流程

This commit is contained in:
2023-11-10 11:47:45 +08:00
parent e5047b29a8
commit 3d02e4b0db
6 changed files with 35 additions and 104 deletions
@@ -3,7 +3,6 @@ package com.jero.modules.activiti.process.esChange.entity.vo;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.jero.modules.activiti.process.common.entity.CommonVO;
import com.jero.modules.activiti.process.esChange.entity.ProcessEsChange;
import com.jero.modules.activiti.process.esRecheck.entity.vo.ESRecheckFlowUserVO;
import lombok.Data;
import java.util.Map;
@@ -21,7 +21,7 @@ import javax.annotation.Resource;
*/
@Slf4j
@RestController
@Api(tags = "企标复审发起流程")
@Api(tags = "企标复审流程")
@RequestMapping("/process/es/recheck")
public class ESRecheckController {
@@ -32,12 +32,12 @@ public class ESRecheckController {
private ActFlowCommonService actFlowCommonService;
/**
* 新增立项变更申请
* 企标复审申请
*
* @param recheckData
*/
@AutoLog(value = "企标复审发起流程-发起流程")
@ApiOperation(value="企标复审发起流程-发起流程", notes="企标复审发起流程-发起流程")
@AutoLog(value = "企标复审流程-发起流程")
@ApiOperation(value="企标复审流程-发起流程", notes="企标复审流程-发起流程")
@PostMapping("/start")
public Result<?> startProcess(@RequestBody ESRecheckDataVO recheckData) {
recheckService.startProcess(recheckData);
@@ -48,8 +48,8 @@ public class ESRecheckController {
* 保存到待办
* @param recheckData
*/
@AutoLog(value = "企标复审发起流程-保存")
@ApiOperation(value="企标复审发起流程-保存", notes="企标复审发起流程-保存")
@AutoLog(value = "企标复审流程-保存")
@ApiOperation(value="企标复审流程-保存", notes="企标复审流程-保存")
@PostMapping("/save")
public Result<?> save(@RequestBody ESRecheckDataVO recheckData) {
recheckService.saveToDraft(recheckData);
@@ -60,8 +60,8 @@ public class ESRecheckController {
* 保存到待办
* @param taskId
*/
@AutoLog(value = "企标复审发起流程-办理")
@ApiOperation(value="企标复审发起流程-办理", notes="企标复审发起流程-办理")
@AutoLog(value = "企标复审流程-办理")
@ApiOperation(value="企标复审流程-办理", notes="企标复审流程-办理")
@GetMapping("/handle/{taskId}")
@Translation
public Result<?> handle(@PathVariable("taskId") String taskId) {
@@ -73,11 +73,11 @@ public class ESRecheckController {
*
* @param recheckData
*/
@AutoLog(value = "企标复审发起流程-同意")
@ApiOperation(value="企标复审发起流程-同意", notes="企标复审发起流程-同意")
@AutoLog(value = "企标复审流程-同意")
@ApiOperation(value="企标复审流程-同意", notes="企标复审流程-同意")
@PostMapping("/agree")
public Result<?> agree(@RequestBody ESRecheckDataVO recheckData) {
recheckService.approvalInitChange(recheckData, true);
recheckService.approval(recheckData, true);
return Result.OK();
}
@@ -86,11 +86,11 @@ public class ESRecheckController {
*
* @param recheckData
*/
@AutoLog(value = "企标复审发起流程-驳回")
@ApiOperation(value="企标复审发起流程-驳回", notes="企标复审发起流程-驳回")
@AutoLog(value = "企标复审流程-驳回")
@ApiOperation(value="企标复审流程-驳回", notes="企标复审流程-驳回")
@PostMapping("/reject")
public Result<?> reject(@RequestBody ESRecheckDataVO recheckData) {
recheckService.approvalInitChange(recheckData, false);
recheckService.approval(recheckData, false);
return Result.OK();
}
@@ -98,8 +98,8 @@ public class ESRecheckController {
* 转办
*
*/
@AutoLog(value = "企标复审发起流程-转办")
@ApiOperation(value="企标复审发起流程-转办", notes="企标复审发起流程-转办")
@AutoLog(value = "企标复审流程-转办")
@ApiOperation(value="企标复审流程-转办", notes="企标复审流程-转办")
@PostMapping(value = "/transfer")
public Result<?> transfer(@RequestBody TransferVO transferVO) {
actFlowCommonService.transfer(transferVO.getTaskId(), transferVO.getUserId());
@@ -7,6 +7,7 @@ import com.jero.modules.activiti.process.esRecheck.entity.ProcessEsRecheck;
import lombok.Data;
import java.util.List;
import java.util.Map;
/**
* @author: Mzaxd
@@ -22,5 +23,5 @@ public class ESRecheckDataVO {
ProcessEsRecheck data;
@JsonProperty("flowUser")
ESRecheckFlowUserVO flowUser;
Map<String, Object> flowUser;
}
@@ -1,33 +0,0 @@
package com.jero.modules.activiti.process.esRecheck.entity.vo;
import com.jero.common.aspect.annotation.Dict;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @author: Mzaxd
* @Date: 2023/10/9 16:57
*/
@Data
public class ESRecheckFlowUserVO {
@Dict(dictTable = "sys_user", dicCode = "id", dicText = "realname")
@ApiModelProperty("主起草人")
private String mainDraftUser;
// 主起草人主管级领导
@Dict(dictTable = "sys_user", dicCode = "id", dicText = "realname")
@ApiModelProperty("主起草人主管级领导")
private String mainDraftUserLeader;
// 标准化审批人
@Dict(dictTable = "sys_user", dicCode = "id", dicText = "realname")
@ApiModelProperty("标准化审批人")
private String standardizationUser;
// 主起草人主管级领导上级领导
@Dict(dictTable = "sys_user", dicCode = "id", dicText = "realname")
@ApiModelProperty("主起草人主管级领导上级领导")
private String mainDraftUserLeaderLeader;
}
@@ -17,5 +17,5 @@ public interface ProcessEsRecheckService extends IService<ProcessEsRecheck> {
ESRecheckDataVO getHandleData(String taskId);
void approvalInitChange(ESRecheckDataVO recheckData, boolean pass);
void approval(ESRecheckDataVO recheckData, boolean pass);
}
@@ -7,7 +7,6 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.jero.common.constant.enums.YesOrNoEnum;
import com.jero.common.exception.JeroBootException;
import com.jero.modules.activiti.entity.ProcessAll;
import com.jero.modules.activiti.entity.ProcessNode;
import com.jero.modules.activiti.enums.ProcessTypeEnum;
import com.jero.modules.activiti.process.common.entity.CommonVO;
import com.jero.modules.activiti.process.common.entity.ProcessDraft;
@@ -17,12 +16,10 @@ import com.jero.modules.activiti.process.common.service.ProcessDraftService;
import com.jero.modules.activiti.process.esRecheck.entity.ProcessEsRecheck;
import com.jero.modules.activiti.process.esRecheck.entity.vo.ESRecheckDataVO;
import com.jero.modules.activiti.process.esRecheck.entity.vo.ESRecheckFlowUserVO;
import com.jero.modules.activiti.process.esRecheck.service.ProcessEsRecheckService;
import com.jero.modules.activiti.process.esRecheck.mapper.ProcessEsRecheckMapper;
import com.jero.modules.activiti.service.ProcessAllService;
import com.jero.modules.activiti.service.ProcessNodeLinkService;
import com.jero.modules.activiti.service.ProcessNodeService;
import com.jero.modules.sys.utils.UserUtils;
import lombok.extern.slf4j.Slf4j;
import org.activiti.engine.RuntimeService;
@@ -32,7 +29,6 @@ import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.*;
import java.util.stream.Collectors;
/**
* @author ThinkBook
@@ -57,9 +53,6 @@ public class ProcessEsRecheckServiceImpl extends ServiceImpl<ProcessEsRecheckMap
@Resource
private ProcessNodeLinkService processNodeLinkService;
@Resource
private ProcessNodeService processNodeService;
@Resource
private RuntimeService runtimeService;
@@ -68,7 +61,7 @@ public class ProcessEsRecheckServiceImpl extends ServiceImpl<ProcessEsRecheckMap
// 执行流程发起前的操作
this.startRunTask(recheckData);
// 流程Key
String processDefinitionKey = ProcessType.ES_INIT_CHANGE.getProcessKey();
String processDefinitionKey = ProcessType.ES_RECHECK.getProcessKey();
// 当前用户Id
String userId = UserUtils.getUserId();
// 业务数据
@@ -76,16 +69,16 @@ public class ProcessEsRecheckServiceImpl extends ServiceImpl<ProcessEsRecheckMap
// 通用数据
CommonVO common = recheckData.getCommon();
// 人员数据
ESRecheckFlowUserVO flowUser = recheckData.getFlowUser();
Map<String, Object> variables = recheckData.getFlowUser();
// 设置流程变量
Map<String, Object> variables = this.setVariables(flowUser);
Map<String, Object> actVariables = this.setVariables(variables);
// 启动流程
ProcessInstance processInstance = actFlowCommonService.startProcess(processDefinitionKey, variables);
ProcessInstance processInstance = actFlowCommonService.startProcess(processDefinitionKey, actVariables);
// 获取流程实例ID
String processDefinitionId = processInstance.getProcessDefinitionId();
String processInstanceId = processInstance.getId();
// 手动设置所有流程变量
actFlowCommonService.setProcessVariables(processInstanceId, variables);
actFlowCommonService.setProcessVariables(processInstanceId, actVariables);
// 自动完成第一个任务
actFlowCommonService.autoCompleteFirstTask(userId, processInstanceId, processDefinitionId, common);
// 设置流程实例Id
@@ -102,17 +95,13 @@ public class ProcessEsRecheckServiceImpl extends ServiceImpl<ProcessEsRecheckMap
actFlowCommonService.updateProcessAll(processInstanceId, userId, prcName, prcMes, prcType, dueTime);
}
public Map<String, Object> setVariables(ESRecheckFlowUserVO flowUser) {
return new HashMap<>(this.setUserVariables(flowUser));
}
public Map<String, Object> setUserVariables(ESRecheckFlowUserVO flowUser) {
HashMap<String, Object> map = new HashMap<>();
// 使用一个通用方法来只在不为空时添加键值对
actFlowCommonService.putIfNotNull(map, "standardizationUser", flowUser.getStandardizationUser());
actFlowCommonService.putIfNotNull(map, "mainDraftUser", flowUser.getMainDraftUser());
actFlowCommonService.putIfNotNull(map, "mainDraftUserLeader", flowUser.getMainDraftUserLeader());
return map;
public Map<String, Object> setVariables(Map<String, Object> flowUser) {
Map<String, Object> actVariables = new HashMap<>();
for (Map.Entry<String, Object> entry : flowUser.entrySet()) {
String key = entry.getKey();
actVariables.put(key, entry.getValue());
}
return actVariables;
}
private Map<String, Object> getUserMap(Map<String, Object> variables) {
@@ -181,48 +170,23 @@ public class ProcessEsRecheckServiceImpl extends ServiceImpl<ProcessEsRecheckMap
lambdaQueryWrapper.eq(ProcessEsRecheck::getDelFlag, YesOrNoEnum.NO.getValue());
ProcessEsRecheck data = getOne(lambdaQueryWrapper);
recheckData.setData(data);
// 选人组件内容填充
recheckData.setFlowUser(this.getProcessUserInfo(processDefinitionId, processInstanceId));
return recheckData;
}
private ESRecheckFlowUserVO getProcessUserInfo(String processDefinitionId, String processInstanceId) {
List<ProcessNode> nodeList = processNodeService.getNodeList(processDefinitionId, processInstanceId);
ESRecheckFlowUserVO flowUser = new ESRecheckFlowUserVO();
Map<String, ProcessNode> userMap = nodeList.stream().collect(Collectors.toMap(ProcessNode::getVariableName, node -> node));
Optional.ofNullable(userMap.get("mainDraftUser")).ifPresent(node -> flowUser.setMainDraftUser(node.getLinkUserIds()));
Optional.ofNullable(userMap.get("mainDraftUserLeader")).ifPresent(node -> flowUser.setMainDraftUserLeader(node.getLinkUserIds()));
Optional.ofNullable(userMap.get("standardizationUser")).ifPresent(node -> flowUser.setStandardizationUser(node.getLinkUserIds()));
return flowUser;
}
@Override
public void approvalInitChange(ESRecheckDataVO recheckData, boolean pass) {
public void approval(ESRecheckDataVO recheckData, boolean pass) {
String userId = UserUtils.getUserId();
CommonVO commonVO = recheckData.getCommon();
ProcessEsRecheck data = recheckData.getData();
String taskId = commonVO.getTaskId();
if (StrUtil.isBlank(taskId) && !actFlowCommonService.taskExists(taskId)) {
throw new JeroBootException("taskId为空或任务不存在");
}
String processInstanceId = actFlowCommonService.getProcessInstanceIdByTaskId(taskId);
String processDefinitionId = actFlowCommonService.getProcessDefId(processInstanceId);
if (pass) {
if (data != null) {
saveOrUpdate(data);
ESRecheckFlowUserVO flowUserInfoVO = recheckData.getFlowUser();
Map<String, Object> variables = this.setVariables(flowUserInfoVO);
processNodeLinkService.saveNodeUserLink(processDefinitionId, processInstanceId, this.getUserMap(variables));
actFlowCommonService.setProcessVariables(processInstanceId, variables);
}
runtimeService.setVariable(processInstanceId, "pass", true);
} else {
// 设置流程变量
runtimeService.setVariable(processInstanceId, "pass", false);
}
// 设置流程变量
runtimeService.setVariable(processInstanceId, "pass", pass);
// 更新审批表为完成,填充数据
actFlowCommonService.updateApprovalInfo(commonVO, taskId, pass);
//审批节点
// 审批节点
actFlowCommonService.completeTask(taskId, userId);
}
}