fix(标准法规入库/变更流程): 强制撤销

This commit is contained in:
yjz
2024-01-09 22:30:33 +08:00
parent 3acc22ba5b
commit 22677a0f65
3 changed files with 99 additions and 33 deletions
@@ -12,7 +12,7 @@ import lombok.Getter;
public enum ProcessTypeEnum { public enum ProcessTypeEnum {
FB_ENTRY_CHANGE("标准法规入库/变更流程",1, "com.jero.modules.activiti.process.fb.service.impl.ProcessHandleServiceImpl"), FB_ENTRY_CHANGE("标准法规入库/变更流程",1, "com.jero.modules.activiti.process.fb.service.impl.ProcessFbEntryChangeServiceImpl"),
FB_STANDARD_CONSULTATION("标准征求意见流程",2, "com.jero.modules.activiti.process.fb.service.impl.ProcessFbStandardConsultationServiceImpl"), FB_STANDARD_CONSULTATION("标准征求意见流程",2, "com.jero.modules.activiti.process.fb.service.impl.ProcessFbStandardConsultationServiceImpl"),
PROJECT_ASSESS("项目合规评估流程",3, "com.jero.modules.activiti.process.projectassess.service.ProcessProjectAssessService"), PROJECT_ASSESS("项目合规评估流程",3, "com.jero.modules.activiti.process.projectassess.service.ProcessProjectAssessService"),
PROJECT_NOT_MET("未符合项跟踪流程",4, "com.jero.modules.activiti.process.projectnotmet.service.ProcessProjectNotMetService"), PROJECT_NOT_MET("未符合项跟踪流程",4, "com.jero.modules.activiti.process.projectnotmet.service.ProcessProjectNotMetService"),
@@ -9,7 +9,11 @@ import com.jero.common.api.vo.SendMessageAPI;
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.common.util.UUIDUtils; import com.jero.common.util.UUIDUtils;
import com.jero.modules.activiti.entity.ProcessAll;
import com.jero.modules.activiti.entity.ProcessApprovalRecord;
import com.jero.modules.activiti.enums.ProcessTypeEnum; import com.jero.modules.activiti.enums.ProcessTypeEnum;
import com.jero.modules.activiti.process.common.entity.ProcessDraft;
import com.jero.modules.activiti.process.common.service.ProcessDraftService;
import com.jero.modules.activiti.process.fb.common.ProcessDefinitionKey; import com.jero.modules.activiti.process.fb.common.ProcessDefinitionKey;
import com.jero.modules.activiti.process.fb.dto.BasicProcessInfoDTO; import com.jero.modules.activiti.process.fb.dto.BasicProcessInfoDTO;
import com.jero.modules.activiti.process.fb.entity.ProcessFbEntryChange; import com.jero.modules.activiti.process.fb.entity.ProcessFbEntryChange;
@@ -17,6 +21,9 @@ import com.jero.modules.activiti.process.fb.mapper.ProcessFbEntryChangeMapper;
import com.jero.modules.activiti.process.fb.service.IProcessFbEntryChangeService; import com.jero.modules.activiti.process.fb.service.IProcessFbEntryChangeService;
import com.jero.modules.activiti.process.fb.service.IProcessHandleService; import com.jero.modules.activiti.process.fb.service.IProcessHandleService;
import com.jero.modules.activiti.process.fb.vo.ProcessInfoVO; import com.jero.modules.activiti.process.fb.vo.ProcessInfoVO;
import com.jero.modules.activiti.service.ProcessApprovalRecordService;
import com.jero.modules.activiti.service.WorkCenterService;
import com.jero.modules.activiti.util.SpringContextUtil;
import com.jero.modules.laws.common.constant.FieldCommon; import com.jero.modules.laws.common.constant.FieldCommon;
import com.jero.modules.laws.common.constant.MessageTemplateCodeCommon; import com.jero.modules.laws.common.constant.MessageTemplateCodeCommon;
import com.jero.modules.laws.common.mapper.LawsCommonMapper; import com.jero.modules.laws.common.mapper.LawsCommonMapper;
@@ -24,6 +31,8 @@ import com.jero.modules.laws.common.service.ILawsCommonService;
import com.jero.modules.laws.common.util.CurrentUserUtil; import com.jero.modules.laws.common.util.CurrentUserUtil;
import com.jero.modules.laws.standard.entity.LawsEnterpriseStandard; import com.jero.modules.laws.standard.entity.LawsEnterpriseStandard;
import com.jero.modules.laws.standard.service.ILawsEnterpriseStandardService; import com.jero.modules.laws.standard.service.ILawsEnterpriseStandardService;
import com.jero.modules.system.entity.SysUser;
import com.jero.modules.system.service.ISysUserService;
import com.jero.modules.tag.entity.LawsTag; import com.jero.modules.tag.entity.LawsTag;
import com.jero.modules.tag.enums.TableNameEnum; import com.jero.modules.tag.enums.TableNameEnum;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
@@ -45,7 +54,8 @@ import java.util.stream.Collectors;
@Service @Service
@Transactional(rollbackFor = JeroBootException.class) @Transactional(rollbackFor = JeroBootException.class)
@Slf4j @Slf4j
public class ProcessFbEntryChangeServiceImpl extends ServiceImpl<ProcessFbEntryChangeMapper, ProcessFbEntryChange> implements IProcessFbEntryChangeService { public class ProcessFbEntryChangeServiceImpl extends ServiceImpl<ProcessFbEntryChangeMapper, ProcessFbEntryChange>
implements IProcessFbEntryChangeService, WorkCenterService {
@Resource @Resource
private IProcessHandleService processHandleService; private IProcessHandleService processHandleService;
@@ -58,6 +68,15 @@ public class ProcessFbEntryChangeServiceImpl extends ServiceImpl<ProcessFbEntryC
@Resource @Resource
private ILawsEnterpriseStandardService lawsEnterpriseStandardService; private ILawsEnterpriseStandardService lawsEnterpriseStandardService;
@Resource
private ProcessDraftService processDraftService;
@Resource
private ProcessApprovalRecordService processApprovalRecordService;
@Resource
private ISysUserService sysUserService;
/** /**
* @Author: liao * @Author: liao
* @Date: 2023/11/2 15:43 * @Date: 2023/11/2 15:43
@@ -72,7 +91,7 @@ public class ProcessFbEntryChangeServiceImpl extends ServiceImpl<ProcessFbEntryC
processFbEntryChange.setSource((String) businessMap.get("source")); processFbEntryChange.setSource((String) businessMap.get("source"));
processFbEntryChange.setOperateType((String) businessMap.get("operateType")); processFbEntryChange.setOperateType((String) businessMap.get("operateType"));
processFbEntryChange.setStandardNumber((String) businessMap.get(FieldCommon.STANDARD_NUMBER)); processFbEntryChange.setStandardNumber((String) businessMap.get(FieldCommon.STANDARD_NUMBER));
save(processFbEntryChange); saveOrUpdate(processFbEntryChange);
} }
/** /**
@@ -325,7 +344,7 @@ public class ProcessFbEntryChangeServiceImpl extends ServiceImpl<ProcessFbEntryC
@Override @Override
public ProcessInfoVO<ProcessFbEntryChange> queryProcessInfoVO(String draftId, String processInstanceId, String taskId, String projectId) { public ProcessInfoVO<ProcessFbEntryChange> queryProcessInfoVO(String draftId, String processInstanceId, String taskId, String projectId) {
ProcessInfoVO processInfoVO = processHandleService.queryProcessInfoVO(draftId, processInstanceId, taskId, projectId); ProcessInfoVO processInfoVO = processHandleService.queryProcessInfoVO(draftId, processInstanceId, taskId, projectId);
ProcessFbEntryChange processFbEntryChange = getById(processInfoVO.getBusinessId()); ProcessFbEntryChange processFbEntryChange = getById(projectId);
Map<String, Object> map = JSON.parseObject(processFbEntryChange.getBusinessJson(), Map.class); Map<String, Object> map = JSON.parseObject(processFbEntryChange.getBusinessJson(), Map.class);
// 处理字典翻译 // 处理字典翻译
@@ -340,4 +359,37 @@ public class ProcessFbEntryChangeServiceImpl extends ServiceImpl<ProcessFbEntryC
processInfoVO.setBusinessInfoDTO(processFbEntryChange); processInfoVO.setBusinessInfoDTO(processFbEntryChange);
return processInfoVO; return processInfoVO;
} }
@Override
public void changeToDraft(ProcessAll processAll) {
// 删除自己的草稿
IProcessHandleService processHandleService = SpringContextUtil.getBean(IProcessHandleService.class);
processHandleService.deleteMyDraft(processAll.getTaskId(), processAll.getProjectId(), processAll.getPrcType());
String projectId = UUIDUtils.randomUUID20();
// 查询第一个节点处理人
ProcessApprovalRecordService processApprovalRecordService = SpringContextUtil.getBean(ProcessApprovalRecordService.class);
ProcessApprovalRecord processApprovalRecord = processApprovalRecordService.getOne(new LambdaQueryWrapper<ProcessApprovalRecord>()
.eq(ProcessApprovalRecord::getProcessInstanceId, processAll.getProcessInstanceId())
.orderByAsc(ProcessApprovalRecord::getCreateTime)
.last("limit 1"));
// 处理业务表信息
IProcessFbEntryChangeService processFbEntryChangeService = SpringContextUtil.getBean(IProcessFbEntryChangeService.class);
ProcessFbEntryChange processFbEntryChange = processFbEntryChangeService.getById(processAll.getProjectId());
processFbEntryChange.setId(projectId);
processFbEntryChange.setCreateTime(new Date());
ISysUserService sysUserService = SpringContextUtil.getBean(ISysUserService.class);
SysUser sysUser = sysUserService.getById(processApprovalRecord.getOriginUserId());
processFbEntryChange.setCreateBy(sysUser.getUsername());
processFbEntryChangeService.save(processFbEntryChange);
ProcessDraft processDraft = new ProcessDraft();
processDraft.setProjectId(projectId); // 业务id
processDraft.setPrcType(processAll.getPrcType()); // 流程类型
processDraft.setUserId(processApprovalRecord.getOriginUserId()); // 用户id
// 保存草稿
ProcessDraftService processDraftService = SpringContextUtil.getBean(ProcessDraftService.class);
processDraftService.save(processDraft);
}
} }
@@ -45,7 +45,7 @@ import java.util.*;
@Service @Service
@Slf4j @Slf4j
@Transactional(rollbackFor = JeroBootException.class) @Transactional(rollbackFor = JeroBootException.class)
public class ProcessHandleServiceImpl implements IProcessHandleService { public class ProcessHandleServiceImpl implements IProcessHandleService{
@Resource @Resource
private RuntimeService runtimeService; private RuntimeService runtimeService;
@@ -135,6 +135,10 @@ public class ProcessHandleServiceImpl implements IProcessHandleService {
String taskId = basicTaskInfoDTO.getTaskId(); String taskId = basicTaskInfoDTO.getTaskId();
isMyTask(taskId); isMyTask(taskId);
// 保存
updateProcessAll(processInfoVO);
updateApprovalRecord(processInfoVO);
// 删除自己的草稿 // 删除自己的草稿
deleteMyDraft(taskId, processInfoVO.getBusinessId(), basicProcessInfoDTO.getProcessType()); deleteMyDraft(taskId, processInfoVO.getBusinessId(), basicProcessInfoDTO.getProcessType());
@@ -289,6 +293,9 @@ public class ProcessHandleServiceImpl implements IProcessHandleService {
public void updateProcessAll(ProcessInfoVO processInfoVO) { public void updateProcessAll(ProcessInfoVO processInfoVO) {
BasicProcessInfoDTO basicProcessInfoDTO = processInfoVO.getBasicProcessInfoDTO(); BasicProcessInfoDTO basicProcessInfoDTO = processInfoVO.getBasicProcessInfoDTO();
ProcessAll process = processAllService.getByProcessInstanceId(basicProcessInfoDTO.getProcessInstanceId()); ProcessAll process = processAllService.getByProcessInstanceId(basicProcessInfoDTO.getProcessInstanceId());
if (Objects.isNull(process)){
process = new ProcessAll();
}
process.setCreateUserId(CurrentUserUtil.getId()); // 流程创建人 process.setCreateUserId(CurrentUserUtil.getId()); // 流程创建人
process.setPrcName(basicProcessInfoDTO.getProcessName()); // 流程名称 process.setPrcName(basicProcessInfoDTO.getProcessName()); // 流程名称
process.setMes(basicProcessInfoDTO.getProcessDescription()); // 流程说明 process.setMes(basicProcessInfoDTO.getProcessDescription()); // 流程说明
@@ -308,11 +315,15 @@ public class ProcessHandleServiceImpl implements IProcessHandleService {
public void updateApprovalRecord(ProcessInfoVO processInfoVO) { public void updateApprovalRecord(ProcessInfoVO processInfoVO) {
BasicTaskInfoDTO basicTaskInfoDTO = processInfoVO.getBasicTaskInfoDTO(); BasicTaskInfoDTO basicTaskInfoDTO = processInfoVO.getBasicTaskInfoDTO();
ProcessApprovalRecord approvalRecord = processApprovalRecordService.getToDoByTaskId(basicTaskInfoDTO.getTaskId()); ProcessApprovalRecord approvalRecord = processApprovalRecordService.getToDoByTaskId(basicTaskInfoDTO.getTaskId());
if (Objects.isNull(approvalRecord)){
approvalRecord = new ProcessApprovalRecord();
}
approvalRecord.setCommitFlag(basicTaskInfoDTO.getCommitFlag()); // 审批意见(1通过,2驳回) approvalRecord.setCommitFlag(basicTaskInfoDTO.getCommitFlag()); // 审批意见(1通过,2驳回)
approvalRecord.setCommitText(basicTaskInfoDTO.getHandleText()); // 审批内容 approvalRecord.setCommitText(basicTaskInfoDTO.getHandleText()); // 审批内容
approvalRecord.setCommitFile(basicTaskInfoDTO.getHandleFile()); // 审批附件 approvalRecord.setCommitFile(basicTaskInfoDTO.getHandleFile()); // 审批附件
approvalRecord.setFinishFlag(FinishFlagEnum.COMPLETE.getValue()); // 完成注记(1进行中,2已完成) approvalRecord.setFinishFlag(FinishFlagEnum.COMPLETE.getValue()); // 完成注记(1进行中,2已完成)
approvalRecord.setEndTime(new Date()); // 完成时间 approvalRecord.setEndTime(new Date()); // 完成时间
approvalRecord.setProjectId(processInfoVO.getBusinessId());
processApprovalRecordService.updateById(approvalRecord); processApprovalRecordService.updateById(approvalRecord);
} }
@@ -442,39 +453,45 @@ public class ProcessHandleServiceImpl implements IProcessHandleService {
BasicTaskInfoDTO basicTaskInfoDTO = new BasicTaskInfoDTO(); BasicTaskInfoDTO basicTaskInfoDTO = new BasicTaskInfoDTO();
processInfoVO.setBasicTaskInfoDTO(basicTaskInfoDTO); processInfoVO.setBasicTaskInfoDTO(basicTaskInfoDTO);
// 流程信息 // 先查询草稿表是否存储
if (StringUtils.isNotBlank(processInstanceId)) { ProcessDraft processDraft = processDraftService.getById(draftId);
ProcessAll processAll = processAllService.getByProcessInstanceId(processInstanceId); if (!Objects.isNull(processDraft)) {
// 流程信息
basicProcessInfoDTO.setProcessInstanceId(processDraft.getProcessInstanceId()); // 流程实例id
basicProcessInfoDTO.setProcessName(processDraft.getPrcName()); // 流程名称
basicProcessInfoDTO.setProcessType(processDraft.getPrcType()); // 流程类型
basicProcessInfoDTO.setProcessDueDate(processDraft.getProcessDueDate()); // 流程信息-截止日期
basicProcessInfoDTO.setProcessDescription(processDraft.getProcessDescription()); // 流程信息
// 流程审批信息
basicTaskInfoDTO.setHandleFile(processDraft.getHandleFile());
basicTaskInfoDTO.setHandleText(processDraft.getHandleText());
basicTaskInfoDTO.setTaskId(processDraft.getTaskId());
processInfoVO.setInfoJsonStr(processDraft.getInfoJsonStr());
}else {
// 流程信息
ProcessAll processAll = processAllService.getOne(new LambdaQueryWrapper<ProcessAll>()
.eq(ProcessAll::getProjectId, projectId));
if (!Objects.isNull(processAll)) { if (!Objects.isNull(processAll)) {
basicProcessInfoDTO.setProcessInstanceId(processAll.getProcessInstanceId()); basicProcessInfoDTO.setProcessInstanceId(processAll.getProcessInstanceId());
basicProcessInfoDTO.setProcessType(processAll.getPrcType()); basicProcessInfoDTO.setProcessType(processAll.getPrcType());
basicProcessInfoDTO.setProcessName(processAll.getPrcName()); basicProcessInfoDTO.setProcessName(processAll.getPrcName());
basicProcessInfoDTO.setProcessDescription(processAll.getMes()); basicProcessInfoDTO.setProcessDescription(processAll.getMes());
basicProcessInfoDTO.setProcessDueDate(processAll.getDueTime()); basicProcessInfoDTO.setProcessDueDate(processAll.getDueTime());
processInfoVO.setBusinessId(processAll.getProjectId()); }
// 流程审批信息
ProcessApprovalRecord processApprovalRecord = processApprovalRecordService.getOne(new LambdaQueryWrapper<ProcessApprovalRecord>()
.eq(ProcessApprovalRecord::getProjectId, projectId)
.eq(StringUtils.isNotBlank(taskId), ProcessApprovalRecord::getTaskId, taskId));
if (!Objects.isNull(processApprovalRecord)){
basicTaskInfoDTO.setTaskId(processApprovalRecord.getTaskId());
basicTaskInfoDTO.setHandleText(processApprovalRecord.getCommitText());
basicTaskInfoDTO.setHandleFile(processApprovalRecord.getCommitFile());
} }
} }
processInfoVO.setDraftId(draftId);
// 审批信息 processInfoVO.setBusinessId(projectId);
if (StringUtils.isNotBlank(draftId)) {
ProcessDraft processDraft = processDraftService.getById(draftId);
if (!CurrentUserUtil.getId().equals(processDraft.getUserId())) {
throw new JeroBootException(ResultCommon.NO_PERMISSION);
}
if (!Objects.isNull(processDraft)) {
basicTaskInfoDTO.setTaskId(processDraft.getTaskId());
basicTaskInfoDTO.setHandleText(processDraft.getHandleText());
basicTaskInfoDTO.setHandleFile(processDraft.getHandleFile());
processInfoVO.setDraftId(draftId);
processInfoVO.setBusinessId(processDraft.getProjectId());
basicProcessInfoDTO.setProcessType(processDraft.getPrcType());
basicProcessInfoDTO.setProcessName(processDraft.getPrcName());
basicProcessInfoDTO.setProcessDescription(processDraft.getProcessDescription());
basicProcessInfoDTO.setProcessDueDate(processDraft.getProcessDueDate());
processInfoVO.setInfoJsonStr(processDraft.getInfoJsonStr());
}
}
return processInfoVO; return processInfoVO;
} }
@@ -499,7 +516,6 @@ public class ProcessHandleServiceImpl implements IProcessHandleService {
// 审批信息 // 审批信息
BasicTaskInfoDTO basicTaskInfoDTO = new BasicTaskInfoDTO(); BasicTaskInfoDTO basicTaskInfoDTO = new BasicTaskInfoDTO();
processInfoVO.setBasicTaskInfoDTO(basicTaskInfoDTO); processInfoVO.setBasicTaskInfoDTO(basicTaskInfoDTO);
// 流程信息 // 流程信息
if (StringUtils.isNotBlank(processInstanceId)) { if (StringUtils.isNotBlank(processInstanceId)) {
ProcessAll processAll = processAllService.getByProcessInstanceId(processInstanceId); ProcessAll processAll = processAllService.getByProcessInstanceId(processInstanceId);
@@ -509,7 +525,6 @@ public class ProcessHandleServiceImpl implements IProcessHandleService {
basicProcessInfoDTO.setProcessName(processAll.getPrcName()); basicProcessInfoDTO.setProcessName(processAll.getPrcName());
basicProcessInfoDTO.setProcessDescription(processAll.getMes()); basicProcessInfoDTO.setProcessDescription(processAll.getMes());
basicProcessInfoDTO.setProcessDueDate(processAll.getDueTime()); basicProcessInfoDTO.setProcessDueDate(processAll.getDueTime());
processInfoVO.setBusinessId(processAll.getProjectId());
} }
} }
@@ -596,5 +611,4 @@ public class ProcessHandleServiceImpl implements IProcessHandleService {
processNodeLinkService.saveBatch(linkList, linkList.size()); processNodeLinkService.saveBatch(linkList, linkList.size());
} }
} }
} }