完善市场清单发布流程

This commit is contained in:
梁琦涛
2024-07-15 12:00:50 +08:00
parent c039f5f416
commit 25e81e6023
5 changed files with 56 additions and 47 deletions
@@ -11,10 +11,10 @@ import lombok.Getter;
@AllArgsConstructor
public enum ProcessTypeEnum {
DEMO("测试流程", 0, "com.jero.modules.activiti.process.demo.service.ProcessDemoService", "/workCenter/StandardEntryOrChangeProcess", "/workCenter/StandardEntryOrChangeProcess"),
NEW_STANDARD_IMPORT("新法规导入流程", 1, "com.jero.modules.activiti.process.ni.service.impl.ProcessNewStandardImportServiceImpl", "/workCenter/ProcessNewStandardImportProcess", "/workCenter/StandardComplianceCheckProcess"),
NEW_STANDARD_IMPORT("新法规导入流程", 1, "com.jero.modules.activiti.process.ni.service.impl.ProcessNewStandardImportServiceImpl", "/workCenter/", "/workCenter/"),
STANDARD_INTERPRET("标准解读流程", 2, "com.jero.modules.activiti.process.standardinterpret.service.impl.StandardInterpretFlow", "", ""),
STANDARD_COMPLIANCE_CHECK("法规符合性排查流程", 3, "com.jero.modules.activiti.process.standardComplianceCheck.service.ProcessStandardComplianceCheckService", "/workCenter/StandardComplianceCheckProcess", "/workCenter/StandardComplianceCheckProcess"),
MARKET_STANDARD_PUBLISH("市场清单发布流程", 4, "com.jero.modules.activiti.process.ni.service.ProcessNewStandardImportService", "/workCenter/ProcessNewStandardImportProcess", "/workCenter/StandardComplianceCheckProcess"),
MARKET_STANDARD_PUBLISH("市场清单发布流程", 4, "com.jero.modules.activiti.process.ms.service.impl.ProcessMarketStandardReleaseServiceImpl", "/workCenter/", "/workCenter/"),
;
private final String name;
@@ -30,7 +30,7 @@ public interface IProcessMarketStandardReleaseService extends IService<ProcessMa
/**
* 根据id 判断数据的流程状态
* @param id
* @return boolean true:没有流程或流程已结束 false:有正在流转的流程
* @return
*/
boolean checkProcessStatus(String id);
void checkProcessStatus(String id);
}
@@ -3,6 +3,7 @@ package com.jero.modules.activiti.process.ms.service.impl;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.jero.common.api.vo.Result;
import com.jero.common.exception.JeroBootException;
import com.jero.modules.activiti.entity.ProcessAll;
import com.jero.modules.activiti.entity.ProcessApprovalRecord;
@@ -20,6 +21,7 @@ import com.jero.modules.activiti.service.ProcessAllService;
import com.jero.modules.activiti.service.ProcessNodeLinkService;
import com.jero.modules.laws.marketStandard.entity.LawsMarketStandardDetail;
import com.jero.modules.laws.marketStandard.service.ILawsMarketStandardDetailService;
import com.jero.modules.laws.marketStandard.service.ILawsMarketStandardService;
import com.jero.modules.sys.utils.UserUtils;
import lombok.extern.slf4j.Slf4j;
import org.activiti.engine.RuntimeService;
@@ -50,31 +52,26 @@ public class ProcessMarketStandardReleaseServiceImpl extends ServiceImpl<Process
@Resource
private ActFlowCommonService actFlowCommonService;
@Resource
private ProcessNodeLinkService processNodeLinkService;
@Resource
private TaskService taskService;
@Resource
private ProcessAllService processAllService;
@Resource
private RuntimeService runtimeService;
@Resource
private IProcessHandleService processHandleService;
@Resource
private ProcessMarketStandardReleaseMapper processMarketStandardReleaseMapper;
@Resource
private ILawsMarketStandardDetailService lawsMarketStandardDetailService;
@Resource
private ILawsMarketStandardService lawsMarketStandardService;
@Override
@Transactional(rollbackFor = JeroBootException.class)
public void startProcess(ProcessInfoVO<ProcessMarketStandardRelease> processInfoVO) {
// 验证是否已发起流程
checkProcessStatus(processInfoVO.getBusinessInfoDTO().getManifestId());
// 流程Key
String processDefinitionKey = ProcessType.MARKET_STANDARD_PUBLISH.getProcessKey();
// 流程信息
@@ -125,11 +122,14 @@ public class ProcessMarketStandardReleaseServiceImpl extends ServiceImpl<Process
// 人员信息
userInfoMap.forEach((key, value) -> {
if(Objects.equals("moreUserList",key)){
map.put(key, value);
map.put(key, Arrays.asList(value.toString().split(",")));
return;
}else if(Objects.equals("checkUserLeader1List",key + "List")
|| Objects.equals("checkUserLeader2List",key + "List")){
map.put(key, value);
map.put(key + "List", Arrays.asList(value.toString().split(",")));
}else{
map.put(key, value);
}
map.put(key, value);
});
return map;
}
@@ -137,6 +137,8 @@ public class ProcessMarketStandardReleaseServiceImpl extends ServiceImpl<Process
@Override
@Transactional(rollbackFor = JeroBootException.class)
public void saveToDraft(ProcessInfoVO<ProcessMarketStandardRelease> processInfoVO) {
// 验证是否已发起流程
checkProcessStatus(processInfoVO.getBusinessInfoDTO().getManifestId());
// 流程信息
BasicProcessInfoDTO basicProcessInfoDTO = processInfoVO.getBasicProcessInfoDTO();
// 流程类型
@@ -164,33 +166,39 @@ public class ProcessMarketStandardReleaseServiceImpl extends ServiceImpl<Process
}
String userId = actFlowCommonService.getOriginTaskAssignee(taskId);
Task task = taskService.createTaskQuery().taskId(taskId).singleResult();
// 获取执行id
String executionId = task.getExecutionId();
// 获取当前节点的id
ProcessApprovalRecord record = actFlowCommonService.getNodeIdByTaskId(taskId);
String xmlNodeId = record.getNodeId();
String processInstanceId = actFlowCommonService.getProcessInstanceIdByTaskId(taskId);
// 获取当前流程
ProcessInstance processInstance = runtimeService.createProcessInstanceQuery().processInstanceId(processInstanceId).singleResult();
String processDefinitionId = processInstance.getProcessDefinitionId();
Map<String, Object> userMap = new HashMap<>();
Map<String, Object> flowUser;
// 更新审批表为完成,填充数据
actFlowCommonService.updateApprovalInfo(processTask, taskId);
String curUserId;
switch (xmlNodeId) {
}
// 转办修改流程变量逻辑
switch (xmlNodeId) {
}
runtimeService.setVariable(processInstanceId, PASS, pass);
// 审批节点
actFlowCommonService.completeTask(taskId, userId);
// 保存快照
processHandleService.saveToSnapshot(processInfoVO,userId);
// 获取流程通用数据
ProcessAll process = processAllService.getByProcessInstanceId(processInstanceId);
if(!Objects.isNull(process)){
BasicProcessInfoDTO basicProcessInfoDTO = new BasicProcessInfoDTO();
basicProcessInfoDTO.setProcessName(process.getPrcName());
basicProcessInfoDTO.setProcessType(process.getPrcType());
basicProcessInfoDTO.setProcessDefinitionId(process.getProcessDefinitionId());
basicProcessInfoDTO.setProcessInstanceId(process.getProcessInstanceId());
basicProcessInfoDTO.setProcessDescription(process.getPrcMes());
basicProcessInfoDTO.setProcessDueDate(process.getDueTime());
processInfoVO.setBasicProcessInfoDTO(basicProcessInfoDTO);
// 保存快照
processHandleService.saveToSnapshot(processInfoVO,userId);
}
}
@Override
@@ -216,7 +224,8 @@ public class ProcessMarketStandardReleaseServiceImpl extends ServiceImpl<Process
if(Objects.isNull(processMarketStandardRelease)){
return;
}
// todo 更新业务状态
// 更新业务状态
lawsMarketStandardService.publish(processMarketStandardRelease.getManifestId());
}
@Override
@@ -247,7 +256,7 @@ public class ProcessMarketStandardReleaseServiceImpl extends ServiceImpl<Process
LambdaQueryWrapper<LawsMarketStandardDetail> queryLawsMarketStandardDetail = new LambdaQueryWrapper<>();
queryLawsMarketStandardDetail.eq(LawsMarketStandardDetail::getManifestId,data.getManifestId());
queryLawsMarketStandardDetail.orderByDesc(LawsMarketStandardDetail::getId);
List<LawsMarketStandardDetail> listLawsMarketStandardDetail = lawsMarketStandardDetailService.list();
List<LawsMarketStandardDetail> listLawsMarketStandardDetail = lawsMarketStandardDetailService.list(queryLawsMarketStandardDetail);
if(!CollectionUtils.isEmpty(listLawsMarketStandardDetail)){
data.setList(listLawsMarketStandardDetail);
}
@@ -258,13 +267,13 @@ public class ProcessMarketStandardReleaseServiceImpl extends ServiceImpl<Process
@Override
public boolean checkProcessStatus(String id) {
public void checkProcessStatus(String id) {
LambdaQueryWrapper<ProcessMarketStandardRelease> queryWrapperMarketStandardRelease = new LambdaQueryWrapper<>();
queryWrapperMarketStandardRelease.select(ProcessMarketStandardRelease::getProcessInstanceId);
queryWrapperMarketStandardRelease.eq(ProcessMarketStandardRelease::getManifestId,id);
List<ProcessMarketStandardRelease> listProcessMarketStandardRelease = list(queryWrapperMarketStandardRelease);
if(CollectionUtils.isEmpty(listProcessMarketStandardRelease)){
return true;
return;
}
List<String> listProcessInstanceId = listProcessMarketStandardRelease.stream()
.map(ProcessMarketStandardRelease::getProcessInstanceId).collect(Collectors.toList());
@@ -273,9 +282,8 @@ public class ProcessMarketStandardReleaseServiceImpl extends ServiceImpl<Process
queryProcessAll.eq(ProcessAll::getPrcStatus,"1");
long l = processAllService.count(queryProcessAll);
if(l > 0){
return false;
throw new JeroBootException("当前数据已发布的流程未结束,不可重复发布");
}
return true;
}
}
@@ -116,6 +116,8 @@ public class ProcessNewStandardImportServiceImpl extends ServiceImpl<ProcessNewS
actFlowCommonService.completeTask(taskId, userId);
// 根据流程实例id更新流程总表
actFlowCommonService.updateProcessAll(processInfo);
// 保存快照
processHandleService.saveToSnapshot(processInfoVO,userId);
}
private Map<String, Object> setVariables(Map<String, Object> userInfoMap) {
@@ -165,31 +167,39 @@ public class ProcessNewStandardImportServiceImpl extends ServiceImpl<ProcessNewS
}
String userId = actFlowCommonService.getOriginTaskAssignee(taskId);
Task task = taskService.createTaskQuery().taskId(taskId).singleResult();
// 获取执行id
String executionId = task.getExecutionId();
// 获取当前节点的id
ProcessApprovalRecord record = actFlowCommonService.getNodeIdByTaskId(taskId);
String xmlNodeId = record.getNodeId();
String processInstanceId = actFlowCommonService.getProcessInstanceIdByTaskId(taskId);
// 获取当前流程
ProcessInstance processInstance = runtimeService.createProcessInstanceQuery().processInstanceId(processInstanceId).singleResult();
String processDefinitionId = processInstance.getProcessDefinitionId();
Map<String, Object> userMap = new HashMap<>();
Map<String, Object> flowUser;
// 更新审批表为完成,填充数据
actFlowCommonService.updateApprovalInfo(processTask, taskId);
String curUserId;
switch (xmlNodeId) {
}
// 转办修改流程变量逻辑
switch (xmlNodeId) {
}
runtimeService.setVariable(processInstanceId, PASS, pass);
// 审批节点
actFlowCommonService.completeTask(taskId, userId);
// 保存快照
// 获取流程通用数据
ProcessAll process = processAllService.getByProcessInstanceId(processInstanceId);
if(!Objects.isNull(process)){
BasicProcessInfoDTO basicProcessInfoDTO = new BasicProcessInfoDTO();
basicProcessInfoDTO.setProcessName(process.getPrcName());
basicProcessInfoDTO.setProcessType(process.getPrcType());
basicProcessInfoDTO.setProcessDefinitionId(process.getProcessDefinitionId());
basicProcessInfoDTO.setProcessInstanceId(process.getProcessInstanceId());
basicProcessInfoDTO.setProcessDescription(process.getPrcMes());
basicProcessInfoDTO.setProcessDueDate(process.getDueTime());
processInfoVO.setBasicProcessInfoDTO(basicProcessInfoDTO);
// 保存快照
processHandleService.saveToSnapshot(processInfoVO,userId);
}
}
@Override
@@ -267,10 +267,7 @@ public class LawsMarketStandardServiceImpl extends ServiceImpl<LawsMarketStandar
return Result.error("没有权限");
}
// 验证是否已发起流程
boolean flag = processMarketStandardReleaseService.checkProcessStatus(id);
if(!flag){
return Result.error("当前数据已发布的流程未结束,不可重复发布");
}
processMarketStandardReleaseService.checkProcessStatus(id);
// 获取不同版本的数据
LambdaQueryWrapper<LawsMarketStandard> queryLawsMarketStandard = new LambdaQueryWrapper<>();
@@ -383,11 +380,6 @@ public class LawsMarketStandardServiceImpl extends ServiceImpl<LawsMarketStandar
return Result.error("没有权限");
}
// 验证是否已发起流程
boolean flag = processMarketStandardReleaseService.checkProcessStatus(id);
if(!flag){
return Result.error("当前数据已发布的流程未结束,不可重复发布");
}
if(Objects.equals(lawsMarketStandardOld.getManifestStatus(),MarketStandardConstants.MANIFEST_STATUS_PUBLISH)){
return Result.error("数据已发布");
}
@@ -403,7 +395,6 @@ public class LawsMarketStandardServiceImpl extends ServiceImpl<LawsMarketStandar
updateLawsMarketStandard.set(LawsMarketStandard::getUpdateTime,new Date());
updateLawsMarketStandard.set(LawsMarketStandard::getUpdateBy,sysUser.getUsername());
update(updateLawsMarketStandard);
// todo 发起流程
return Result.OK("发布成功");
}