feat: 企标更改流程

This commit is contained in:
2023-11-09 17:32:24 +08:00
parent 72e93165dd
commit ada7cfc555
8 changed files with 49 additions and 154 deletions
@@ -1,33 +0,0 @@
package com.jero.modules.activiti.process.esArchive.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 ESArchiveFlowUserVO {
// 创建人
@Dict(dictTable = "sys_user", dicCode = "id", dicText = "realname")
@ApiModelProperty("创建人")
private String createUser;
// 相关人员
@Dict(dictTable = "sys_user", dicCode = "id", dicText = "realname")
@ApiModelProperty("相关人员")
private String relatedUser;
// 创建人
@Dict(dictTable = "sys_user", dicCode = "id", dicText = "realname")
@ApiModelProperty("起草人和会签人主管级领导")
private String leader;
// 标准化审批人
@Dict(dictTable = "sys_user", dicCode = "id", dicText = "realname")
@ApiModelProperty("标准化审批人")
private String standardizationUser;
}
@@ -7,17 +7,14 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.jero.common.constant.enums.YesOrNoEnum; import com.jero.common.constant.enums.YesOrNoEnum;
import com.jero.common.exception.JeroBootException; import com.jero.common.exception.JeroBootException;
import com.jero.modules.activiti.entity.ProcessAll; 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.enums.ProcessTypeEnum;
import com.jero.modules.activiti.process.common.entity.CommonVO; import com.jero.modules.activiti.process.common.entity.CommonVO;
import com.jero.modules.activiti.process.common.entity.ProcessDraft; import com.jero.modules.activiti.process.common.entity.ProcessDraft;
import com.jero.modules.activiti.process.common.enums.ProcessType; import com.jero.modules.activiti.process.common.enums.ProcessType;
import com.jero.modules.activiti.process.common.service.ActFlowCommonService; import com.jero.modules.activiti.process.common.service.ActFlowCommonService;
import com.jero.modules.activiti.process.common.service.ProcessDraftService; import com.jero.modules.activiti.process.common.service.ProcessDraftService;
import com.jero.modules.activiti.process.esAbolish.entity.vo.ESAbolishDataVO;
import com.jero.modules.activiti.process.esArchive.entity.ProcessEsArchive; import com.jero.modules.activiti.process.esArchive.entity.ProcessEsArchive;
import com.jero.modules.activiti.process.esArchive.entity.vo.ESArchiveDataVO; import com.jero.modules.activiti.process.esArchive.entity.vo.ESArchiveDataVO;
import com.jero.modules.activiti.process.esArchive.entity.vo.ESArchiveFlowUserVO;
import com.jero.modules.activiti.process.esArchive.service.ProcessEsArchiveService; import com.jero.modules.activiti.process.esArchive.service.ProcessEsArchiveService;
import com.jero.modules.activiti.process.esArchive.mapper.ProcessEsArchiveMapper; import com.jero.modules.activiti.process.esArchive.mapper.ProcessEsArchiveMapper;
import com.jero.modules.activiti.service.ProcessAllService; import com.jero.modules.activiti.service.ProcessAllService;
@@ -32,7 +29,6 @@ import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.*; import java.util.*;
import java.util.stream.Collectors;
/** /**
* @author ThinkBook * @author ThinkBook
@@ -21,7 +21,7 @@ import javax.annotation.Resource;
*/ */
@Slf4j @Slf4j
@RestController @RestController
@Api(tags = "企标更改发起流程") @Api(tags = "企标更改流程")
@RequestMapping("/process/es/change") @RequestMapping("/process/es/change")
public class ESChangeController { public class ESChangeController {
@@ -32,12 +32,12 @@ public class ESChangeController {
private ActFlowCommonService actFlowCommonService; private ActFlowCommonService actFlowCommonService;
/** /**
* 新增立项变更申请 * 新增企标更改流程
* *
* @param changeData * @param changeData
*/ */
@AutoLog(value = "企标更改发起流程-发起流程") @AutoLog(value = "企标更改流程-发起流程")
@ApiOperation(value="企标更改发起流程-发起流程", notes="企标更改发起流程-发起流程") @ApiOperation(value="企标更改流程-发起流程", notes="企标更改流程-发起流程")
@PostMapping("/start") @PostMapping("/start")
public Result<?> startProcess(@RequestBody ESChangeDataVO changeData) { public Result<?> startProcess(@RequestBody ESChangeDataVO changeData) {
changeService.startProcess(changeData); changeService.startProcess(changeData);
@@ -48,8 +48,8 @@ public class ESChangeController {
* 保存到待办 * 保存到待办
* @param changeData * @param changeData
*/ */
@AutoLog(value = "企标更改发起流程-保存") @AutoLog(value = "企标更改流程-保存")
@ApiOperation(value="企标更改发起流程-保存", notes="企标更改发起流程-保存") @ApiOperation(value="企标更改流程-保存", notes="企标更改流程-保存")
@PostMapping("/save") @PostMapping("/save")
public Result<?> save(@RequestBody ESChangeDataVO changeData) { public Result<?> save(@RequestBody ESChangeDataVO changeData) {
changeService.saveToDraft(changeData); changeService.saveToDraft(changeData);
@@ -60,8 +60,8 @@ public class ESChangeController {
* 保存到待办 * 保存到待办
* @param taskId * @param taskId
*/ */
@AutoLog(value = "企标更改发起流程-办理") @AutoLog(value = "企标更改流程-办理")
@ApiOperation(value="企标更改发起流程-办理", notes="企标更改发起流程-办理") @ApiOperation(value="企标更改流程-办理", notes="企标更改流程-办理")
@GetMapping("/handle/{taskId}") @GetMapping("/handle/{taskId}")
@Translation @Translation
public Result<?> handle(@PathVariable("taskId") String taskId) { public Result<?> handle(@PathVariable("taskId") String taskId) {
@@ -73,11 +73,11 @@ public class ESChangeController {
* *
* @param changeData * @param changeData
*/ */
@AutoLog(value = "企标更改发起流程-同意") @AutoLog(value = "企标更改流程-同意")
@ApiOperation(value="企标更改发起流程-同意", notes="企标更改发起流程-同意") @ApiOperation(value="企标更改流程-同意", notes="企标更改流程-同意")
@PostMapping("/agree") @PostMapping("/agree")
public Result<?> agree(@RequestBody ESChangeDataVO changeData) { public Result<?> agree(@RequestBody ESChangeDataVO changeData) {
changeService.approvalInitChange(changeData, true); changeService.approval(changeData, true);
return Result.OK(); return Result.OK();
} }
@@ -86,11 +86,11 @@ public class ESChangeController {
* *
* @param changeData * @param changeData
*/ */
@AutoLog(value = "企标更改发起流程-驳回") @AutoLog(value = "企标更改流程-驳回")
@ApiOperation(value="企标更改发起流程-驳回", notes="企标更改发起流程-驳回") @ApiOperation(value="企标更改流程-驳回", notes="企标更改流程-驳回")
@PostMapping("/reject") @PostMapping("/reject")
public Result<?> reject(@RequestBody ESChangeDataVO changeData) { public Result<?> reject(@RequestBody ESChangeDataVO changeData) {
changeService.approvalInitChange(changeData, false); changeService.approval(changeData, false);
return Result.OK(); return Result.OK();
} }
@@ -98,8 +98,8 @@ public class ESChangeController {
* 转办 * 转办
* *
*/ */
@AutoLog(value = "企标更改发起流程-转办") @AutoLog(value = "企标更改流程-转办")
@ApiOperation(value="企标更改发起流程-转办", notes="企标更改发起流程-转办") @ApiOperation(value="企标更改流程-转办", notes="企标更改流程-转办")
@PostMapping(value = "/transfer") @PostMapping(value = "/transfer")
public Result<?> transfer(@RequestBody TransferVO transferVO) { public Result<?> transfer(@RequestBody TransferVO transferVO) {
actFlowCommonService.transfer(transferVO.getTaskId(), transferVO.getUserId()); actFlowCommonService.transfer(transferVO.getTaskId(), transferVO.getUserId());
@@ -100,7 +100,7 @@ public class ProcessEsChange implements Serializable {
* 企标英文名称 * 企标英文名称
*/ */
@ApiModelProperty(value = "企标英文名称") @ApiModelProperty(value = "企标英文名称")
private String englishName; private String standardEnglishName;
/** /**
* 发布日期 * 发布日期
@@ -6,6 +6,8 @@ import com.jero.modules.activiti.process.esChange.entity.ProcessEsChange;
import com.jero.modules.activiti.process.esRecheck.entity.vo.ESRecheckFlowUserVO; import com.jero.modules.activiti.process.esRecheck.entity.vo.ESRecheckFlowUserVO;
import lombok.Data; import lombok.Data;
import java.util.Map;
/** /**
* @author: Mzaxd * @author: Mzaxd
@@ -21,5 +23,5 @@ public class ESChangeDataVO {
ProcessEsChange data; ProcessEsChange data;
@JsonProperty("flowUser") @JsonProperty("flowUser")
ESChangeFlowUserVO flowUser; Map<String, Object> flowUser;
} }
@@ -1,37 +0,0 @@
package com.jero.modules.activiti.process.esChange.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 ESChangeFlowUserVO {
@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 mainDraftUserLeaderLeader;
// 标准化审批人
@Dict(dictTable = "sys_user", dicCode = "id", dicText = "realname")
@ApiModelProperty("标准化审批人")
private String standardizationUser;
// 相关人员
@Dict(dictTable = "sys_user", dicCode = "id", dicText = "realname")
@ApiModelProperty("相关人员")
private String relatedUser;
}
@@ -17,5 +17,5 @@ public interface ProcessEsChangeService extends IService<ProcessEsChange> {
ESChangeDataVO getHandleData(String taskId); ESChangeDataVO getHandleData(String taskId);
void approvalInitChange(ESChangeDataVO changeData, boolean pass); void approval(ESChangeDataVO changeData, boolean pass);
} }
@@ -7,14 +7,12 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.jero.common.constant.enums.YesOrNoEnum; import com.jero.common.constant.enums.YesOrNoEnum;
import com.jero.common.exception.JeroBootException; import com.jero.common.exception.JeroBootException;
import com.jero.modules.activiti.entity.ProcessAll; 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.enums.ProcessTypeEnum;
import com.jero.modules.activiti.process.common.entity.CommonVO; import com.jero.modules.activiti.process.common.entity.CommonVO;
import com.jero.modules.activiti.process.common.entity.ProcessDraft; import com.jero.modules.activiti.process.common.entity.ProcessDraft;
import com.jero.modules.activiti.process.common.enums.ProcessType; import com.jero.modules.activiti.process.common.enums.ProcessType;
import com.jero.modules.activiti.process.common.service.ActFlowCommonService; import com.jero.modules.activiti.process.common.service.ActFlowCommonService;
import com.jero.modules.activiti.process.common.service.ProcessDraftService; import com.jero.modules.activiti.process.common.service.ProcessDraftService;
import com.jero.modules.activiti.process.esChange.entity.vo.ESChangeFlowUserVO;
import com.jero.modules.activiti.process.esChange.entity.ProcessEsChange; import com.jero.modules.activiti.process.esChange.entity.ProcessEsChange;
import com.jero.modules.activiti.process.esChange.entity.vo.ESChangeDataVO; import com.jero.modules.activiti.process.esChange.entity.vo.ESChangeDataVO;
import com.jero.modules.activiti.process.esChange.service.ProcessEsChangeService; import com.jero.modules.activiti.process.esChange.service.ProcessEsChangeService;
@@ -31,18 +29,17 @@ import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.*; import java.util.*;
import java.util.stream.Collectors;
/** /**
* @author ThinkBook * @author ThinkBook
* @description 针对表【process_es_change(企业标准)】的数据库操作Service实现 * @description 针对表【process_es_change(企业标准)】的数据库操作Service实现
* @createDate 2023-10-29 21:00:13 * @createDate 2023-10-29 21:00:13
*/ */
@Slf4j @Slf4j
@Transactional(rollbackFor = JeroBootException.class) @Transactional(rollbackFor = JeroBootException.class)
@Service @Service
public class ProcessEsChangeServiceImpl extends ServiceImpl<ProcessEsChangeMapper, ProcessEsChange> public class ProcessEsChangeServiceImpl extends ServiceImpl<ProcessEsChangeMapper, ProcessEsChange>
implements ProcessEsChangeService{ implements ProcessEsChangeService {
@Resource @Resource
private ProcessAllService processAllService; private ProcessAllService processAllService;
@@ -67,7 +64,7 @@ public class ProcessEsChangeServiceImpl extends ServiceImpl<ProcessEsChangeMappe
// 执行流程发起前的操作 // 执行流程发起前的操作
this.startRunTask(changeData); this.startRunTask(changeData);
// 流程Key // 流程Key
String processDefinitionKey = ProcessType.ES_INIT_CHANGE.getProcessKey(); String processDefinitionKey = ProcessType.ES_CHANGE.getProcessKey();
// 当前用户Id // 当前用户Id
String userId = UserUtils.getUserId(); String userId = UserUtils.getUserId();
// 业务数据 // 业务数据
@@ -75,16 +72,16 @@ public class ProcessEsChangeServiceImpl extends ServiceImpl<ProcessEsChangeMappe
// 通用数据 // 通用数据
CommonVO common = changeData.getCommon(); CommonVO common = changeData.getCommon();
// 人员数据 // 人员数据
ESChangeFlowUserVO flowUser = changeData.getFlowUser(); Map<String, Object> variables = changeData.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 // 获取流程实例ID
String processDefinitionId = processInstance.getProcessDefinitionId(); String processDefinitionId = processInstance.getProcessDefinitionId();
String processInstanceId = processInstance.getId(); String processInstanceId = processInstance.getId();
// 手动设置所有流程变量 // 手动设置所有流程变量
actFlowCommonService.setProcessVariables(processInstanceId, variables); actFlowCommonService.setProcessVariables(processInstanceId, actVariables);
// 自动完成第一个任务 // 自动完成第一个任务
actFlowCommonService.autoCompleteFirstTask(userId, processInstanceId, processDefinitionId, common); actFlowCommonService.autoCompleteFirstTask(userId, processInstanceId, processDefinitionId, common);
// 设置流程实例Id // 设置流程实例Id
@@ -101,27 +98,24 @@ public class ProcessEsChangeServiceImpl extends ServiceImpl<ProcessEsChangeMappe
actFlowCommonService.updateProcessAll(processInstanceId, userId, prcName, prcMes, prcType, dueTime); actFlowCommonService.updateProcessAll(processInstanceId, userId, prcName, prcMes, prcType, dueTime);
} }
public Map<String, Object> setVariables(ESChangeFlowUserVO flowUser) { public Map<String, Object> setVariables(Map<String, Object> flowUser) {
return new HashMap<>(this.setUserVariables(flowUser)); Map<String, Object> actVariables = new HashMap<>();
} String relatedUsers = (String) flowUser.get("relatedUserList");
// 将relatedUserList从逗号拼接转为List
public Map<String, Object> setUserVariables(ESChangeFlowUserVO flowUser) { List<String> relatedUserList = StrUtil.split(relatedUsers, ',');
HashMap<String, Object> map = new HashMap<>(); actFlowCommonService.putIfNotNull(actVariables, "relatedUserList", relatedUserList);
// 使用一个通用方法来只在不为空时添加键值对 for (Map.Entry<String, Object> entry : flowUser.entrySet()) {
actFlowCommonService.putIfNotNull(map, "mainDraftUser", flowUser.getMainDraftUser()); String key = entry.getKey();
actFlowCommonService.putIfNotNull(map, "relatedUserList", Optional.ofNullable(flowUser.getRelatedUser()).map(s -> Arrays.asList(s.split(","))).orElse(null)); if (!key.equals("relatedUserList")) {
actFlowCommonService.putIfNotNull(map, "mainDraftUserLeader", flowUser.getMainDraftUserLeader()); actVariables.put(key, entry.getValue());
actFlowCommonService.putIfNotNull(map, "mainDraftUserLeaderLeader", flowUser.getMainDraftUserLeaderLeader()); }
actFlowCommonService.putIfNotNull(map, "standardizationUser", flowUser.getStandardizationUser()); }
return map; actVariables.put("pass", true);
return actVariables;
} }
private Map<String, Object> getUserMap(Map<String, Object> variables) { private Map<String, Object> getUserMap(Map<String, Object> variables) {
variables.remove("pass"); variables.remove("pass");
// 转成逗号拼接
variables.put("relatedUserList", Optional.ofNullable((List<String>) variables.get("relatedUserList"))
.map(list -> String.join(",", list))
.orElse(""));
return variables; return variables;
} }
@@ -186,50 +180,23 @@ public class ProcessEsChangeServiceImpl extends ServiceImpl<ProcessEsChangeMappe
lambdaQueryWrapper.eq(ProcessEsChange::getDelFlag, YesOrNoEnum.NO.getValue()); lambdaQueryWrapper.eq(ProcessEsChange::getDelFlag, YesOrNoEnum.NO.getValue());
ProcessEsChange data = getOne(lambdaQueryWrapper); ProcessEsChange data = getOne(lambdaQueryWrapper);
changeData.setData(data); changeData.setData(data);
// 选人组件内容填充
changeData.setFlowUser(this.getProcessUserInfo(processDefinitionId, processInstanceId));
return changeData; return changeData;
} }
private ESChangeFlowUserVO getProcessUserInfo(String processDefinitionId, String processInstanceId) {
List<ProcessNode> nodeList = processNodeService.getNodeList(processDefinitionId, processInstanceId);
ESChangeFlowUserVO flowUser = new ESChangeFlowUserVO();
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("relatedUserList")).ifPresent(node -> flowUser.setRelatedUser(node.getLinkUserIds()));
Optional.ofNullable(userMap.get("mainDraftUserLeader")).ifPresent(node -> flowUser.setMainDraftUserLeader(node.getLinkUserIds()));
Optional.ofNullable(userMap.get("standardizationUser")).ifPresent(node -> flowUser.setStandardizationUser(node.getLinkUserIds()));
Optional.ofNullable(userMap.get("mainDraftUserLeaderLeader")).ifPresent(node -> flowUser.setMainDraftUserLeaderLeader(node.getLinkUserIds()));
return flowUser;
}
@Override @Override
public void approvalInitChange(ESChangeDataVO changeData, boolean pass) { public void approval(ESChangeDataVO changeData, boolean pass) {
String userId = UserUtils.getUserId(); String userId = UserUtils.getUserId();
CommonVO commonVO = changeData.getCommon(); CommonVO commonVO = changeData.getCommon();
ProcessEsChange data = changeData.getData();
String taskId = commonVO.getTaskId(); String taskId = commonVO.getTaskId();
if (StrUtil.isBlank(taskId) && !actFlowCommonService.taskExists(taskId)) { if (StrUtil.isBlank(taskId) && !actFlowCommonService.taskExists(taskId)) {
throw new JeroBootException("taskId为空或任务不存在"); throw new JeroBootException("taskId为空或任务不存在");
} }
String processInstanceId = actFlowCommonService.getProcessInstanceIdByTaskId(taskId); String processInstanceId = actFlowCommonService.getProcessInstanceIdByTaskId(taskId);
String processDefinitionId = actFlowCommonService.getProcessDefId(processInstanceId); // 设置流程变量
if (pass) { runtimeService.setVariable(processInstanceId, "pass", pass);
if (data != null) {
saveOrUpdate(data);
ESChangeFlowUserVO flowUserInfoVO = changeData.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);
}
// 更新审批表为完成,填充数据 // 更新审批表为完成,填充数据
actFlowCommonService.updateApprovalInfo(commonVO, taskId, pass); actFlowCommonService.updateApprovalInfo(commonVO, taskId, pass);
//审批节点 // 审批节点
actFlowCommonService.completeTask(taskId, userId); actFlowCommonService.completeTask(taskId, userId);
} }
} }