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 {
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"),
PROJECT_ASSESS("项目合规评估流程",3, "com.jero.modules.activiti.process.projectassess.service.ProcessProjectAssessService"),
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.exception.JeroBootException;
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.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.dto.BasicProcessInfoDTO;
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.IProcessHandleService;
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.MessageTemplateCodeCommon;
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.standard.entity.LawsEnterpriseStandard;
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.enums.TableNameEnum;
import lombok.extern.slf4j.Slf4j;
@@ -45,7 +54,8 @@ import java.util.stream.Collectors;
@Service
@Transactional(rollbackFor = JeroBootException.class)
@Slf4j
public class ProcessFbEntryChangeServiceImpl extends ServiceImpl<ProcessFbEntryChangeMapper, ProcessFbEntryChange> implements IProcessFbEntryChangeService {
public class ProcessFbEntryChangeServiceImpl extends ServiceImpl<ProcessFbEntryChangeMapper, ProcessFbEntryChange>
implements IProcessFbEntryChangeService, WorkCenterService {
@Resource
private IProcessHandleService processHandleService;
@@ -58,6 +68,15 @@ public class ProcessFbEntryChangeServiceImpl extends ServiceImpl<ProcessFbEntryC
@Resource
private ILawsEnterpriseStandardService lawsEnterpriseStandardService;
@Resource
private ProcessDraftService processDraftService;
@Resource
private ProcessApprovalRecordService processApprovalRecordService;
@Resource
private ISysUserService sysUserService;
/**
* @Author: liao
* @Date: 2023/11/2 15:43
@@ -72,7 +91,7 @@ public class ProcessFbEntryChangeServiceImpl extends ServiceImpl<ProcessFbEntryC
processFbEntryChange.setSource((String) businessMap.get("source"));
processFbEntryChange.setOperateType((String) businessMap.get("operateType"));
processFbEntryChange.setStandardNumber((String) businessMap.get(FieldCommon.STANDARD_NUMBER));
save(processFbEntryChange);
saveOrUpdate(processFbEntryChange);
}
/**
@@ -325,7 +344,7 @@ public class ProcessFbEntryChangeServiceImpl extends ServiceImpl<ProcessFbEntryC
@Override
public ProcessInfoVO<ProcessFbEntryChange> queryProcessInfoVO(String draftId, String processInstanceId, String taskId, String 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);
// 处理字典翻译
@@ -340,4 +359,37 @@ public class ProcessFbEntryChangeServiceImpl extends ServiceImpl<ProcessFbEntryC
processInfoVO.setBusinessInfoDTO(processFbEntryChange);
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
@Slf4j
@Transactional(rollbackFor = JeroBootException.class)
public class ProcessHandleServiceImpl implements IProcessHandleService {
public class ProcessHandleServiceImpl implements IProcessHandleService{
@Resource
private RuntimeService runtimeService;
@@ -135,6 +135,10 @@ public class ProcessHandleServiceImpl implements IProcessHandleService {
String taskId = basicTaskInfoDTO.getTaskId();
isMyTask(taskId);
// 保存
updateProcessAll(processInfoVO);
updateApprovalRecord(processInfoVO);
// 删除自己的草稿
deleteMyDraft(taskId, processInfoVO.getBusinessId(), basicProcessInfoDTO.getProcessType());
@@ -289,6 +293,9 @@ public class ProcessHandleServiceImpl implements IProcessHandleService {
public void updateProcessAll(ProcessInfoVO processInfoVO) {
BasicProcessInfoDTO basicProcessInfoDTO = processInfoVO.getBasicProcessInfoDTO();
ProcessAll process = processAllService.getByProcessInstanceId(basicProcessInfoDTO.getProcessInstanceId());
if (Objects.isNull(process)){
process = new ProcessAll();
}
process.setCreateUserId(CurrentUserUtil.getId()); // 流程创建人
process.setPrcName(basicProcessInfoDTO.getProcessName()); // 流程名称
process.setMes(basicProcessInfoDTO.getProcessDescription()); // 流程说明
@@ -308,11 +315,15 @@ public class ProcessHandleServiceImpl implements IProcessHandleService {
public void updateApprovalRecord(ProcessInfoVO processInfoVO) {
BasicTaskInfoDTO basicTaskInfoDTO = processInfoVO.getBasicTaskInfoDTO();
ProcessApprovalRecord approvalRecord = processApprovalRecordService.getToDoByTaskId(basicTaskInfoDTO.getTaskId());
if (Objects.isNull(approvalRecord)){
approvalRecord = new ProcessApprovalRecord();
}
approvalRecord.setCommitFlag(basicTaskInfoDTO.getCommitFlag()); // 审批意见(1通过,2驳回)
approvalRecord.setCommitText(basicTaskInfoDTO.getHandleText()); // 审批内容
approvalRecord.setCommitFile(basicTaskInfoDTO.getHandleFile()); // 审批附件
approvalRecord.setFinishFlag(FinishFlagEnum.COMPLETE.getValue()); // 完成注记(1进行中,2已完成)
approvalRecord.setEndTime(new Date()); // 完成时间
approvalRecord.setProjectId(processInfoVO.getBusinessId());
processApprovalRecordService.updateById(approvalRecord);
}
@@ -442,39 +453,45 @@ public class ProcessHandleServiceImpl implements IProcessHandleService {
BasicTaskInfoDTO basicTaskInfoDTO = new BasicTaskInfoDTO();
processInfoVO.setBasicTaskInfoDTO(basicTaskInfoDTO);
// 流程信息
if (StringUtils.isNotBlank(processInstanceId)) {
ProcessAll processAll = processAllService.getByProcessInstanceId(processInstanceId);
// 先查询草稿表是否存储
ProcessDraft processDraft = processDraftService.getById(draftId);
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)) {
basicProcessInfoDTO.setProcessInstanceId(processAll.getProcessInstanceId());
basicProcessInfoDTO.setProcessType(processAll.getPrcType());
basicProcessInfoDTO.setProcessName(processAll.getPrcName());
basicProcessInfoDTO.setProcessDescription(processAll.getMes());
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());
}
}
// 审批信息
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());
}
}
processInfoVO.setDraftId(draftId);
processInfoVO.setBusinessId(projectId);
return processInfoVO;
}
@@ -499,7 +516,6 @@ public class ProcessHandleServiceImpl implements IProcessHandleService {
// 审批信息
BasicTaskInfoDTO basicTaskInfoDTO = new BasicTaskInfoDTO();
processInfoVO.setBasicTaskInfoDTO(basicTaskInfoDTO);
// 流程信息
if (StringUtils.isNotBlank(processInstanceId)) {
ProcessAll processAll = processAllService.getByProcessInstanceId(processInstanceId);
@@ -509,7 +525,6 @@ public class ProcessHandleServiceImpl implements IProcessHandleService {
basicProcessInfoDTO.setProcessName(processAll.getPrcName());
basicProcessInfoDTO.setProcessDescription(processAll.getMes());
basicProcessInfoDTO.setProcessDueDate(processAll.getDueTime());
processInfoVO.setBusinessId(processAll.getProjectId());
}
}
@@ -596,5 +611,4 @@ public class ProcessHandleServiceImpl implements IProcessHandleService {
processNodeLinkService.saveBatch(linkList, linkList.size());
}
}
}