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

This commit is contained in:
yjz
2024-01-12 14:03:26 +08:00
parent 6532b9c430
commit c022a63c61
5 changed files with 91 additions and 102 deletions
@@ -76,6 +76,13 @@ public interface IProcessHandleService {
**/
void saveToDraft(ProcessInfoVO processInfoVO);
/**
* @Author: yjz
* @Date: 2023/11/3 10:29
* @Description: 保存为草稿
**/
void saveToDraft2(ProcessInfoVO processInfoVO);
/**
* @Author: liao
* @Date: 2023/11/3 11:13
@@ -10,9 +10,7 @@ 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;
@@ -31,7 +29,6 @@ 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;
@@ -147,6 +144,12 @@ public class ProcessFbEntryChangeServiceImpl extends ServiceImpl<ProcessFbEntryC
basicProcessInfoDTO.setProcessName(getProcessNameByBusinessId(processInfoVO.getBusinessId())); // 流程名称
basicProcessInfoDTO.setProcessType(ProcessTypeEnum.FB_ENTRY_CHANGE.getValue()); // 流程类型
processHandleService.startProcess(processInfoVO);
// 保存草稿用于强制撤销
processInfoVO.setSaveSource("3");
processInfoVO.getBasicTaskInfoDTO().setTaskId(null);
processInfoVO.setInfoJsonStr(processInfoVO.getInfoJsonStr().replaceFirst("\\{", "{\"revocation\": true,"));
saveToDraft(processInfoVO);
}
/**
@@ -323,7 +326,6 @@ public class ProcessFbEntryChangeServiceImpl extends ServiceImpl<ProcessFbEntryC
businessInfoDTO.setOperateType((String) businessMap.get("operateType"));
if (StringUtils.isBlank(businessInfoDTO.getId())) { // 如果是发起时保存
businessInfoDTO.setId(UUIDUtils.randomUUID20());
processInfoVO.getBasicProcessInfoDTO().setProcessName(getProcessNameByBusinessId(processInfoVO.getBusinessId()));
save(businessInfoDTO);
} else { // 如果是审批时保存
businessInfoDTO.setBusinessJson(JSON.toJSONString(businessInfoDTO.getBusinessMap()));
@@ -334,7 +336,7 @@ public class ProcessFbEntryChangeServiceImpl extends ServiceImpl<ProcessFbEntryC
BasicProcessInfoDTO basicProcessInfoDTO = processInfoVO.getBasicProcessInfoDTO();
basicProcessInfoDTO.setProcessType(ProcessTypeEnum.FB_ENTRY_CHANGE.getValue()); // 流程类型
processHandleService.saveToDraft(processInfoVO);
processHandleService.saveToDraft2(processInfoVO);
}
/**
@@ -346,9 +348,7 @@ public class ProcessFbEntryChangeServiceImpl extends ServiceImpl<ProcessFbEntryC
public ProcessInfoVO<ProcessFbEntryChange> queryProcessInfoVO(String draftId, String processInstanceId, String taskId, String projectId) {
ProcessInfoVO processInfoVO = processHandleService.queryProcessInfoVO(draftId, processInstanceId, taskId, projectId);
ProcessFbEntryChange processFbEntryChange = getById(projectId);
// 翻译
toDict(processFbEntryChange);
Map<String, Object> map = JSON.parseObject(processFbEntryChange.getBusinessJson(), Map.class);
// 处理字典翻译
//List<LawsTag> fieldList = lawsCommonMapper.getFieldList(TableNameEnum.getTableName(processFbEntryChange.getSource()));
@@ -358,8 +358,15 @@ public class ProcessFbEntryChangeServiceImpl extends ServiceImpl<ProcessFbEntryC
//Map<String, Object> stringObjectMap = lawsCommonService.processResultMap(map, fieldList);
//processFbEntryChange.setBusinessMap(stringObjectMap);
processFbEntryChange.setBusinessMap(map);
processInfoVO.setBusinessInfoDTO(processFbEntryChange);
if (!Objects.isNull(processFbEntryChange)){
// 翻译
toDict(processFbEntryChange);
Map<String, Object> map = JSON.parseObject(processFbEntryChange.getBusinessJson(), Map.class);
processFbEntryChange.setBusinessMap(map);
processInfoVO.setBusinessInfoDTO(processFbEntryChange);
}else {
processInfoVO.setBusinessInfoDTO(new ProcessFbEntryChange());
}
return processInfoVO;
}
@@ -379,34 +386,10 @@ public class ProcessFbEntryChangeServiceImpl extends ServiceImpl<ProcessFbEntryC
@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);
processFbEntryChangeService.remove(
new LambdaQueryWrapper<ProcessFbEntryChange>()
.eq(ProcessFbEntryChange::getId, processAll.getProjectId()));
}
}
@@ -15,8 +15,6 @@ import com.jero.modules.activiti.entity.ProcessNode;
import com.jero.modules.activiti.entity.ProcessNodeLink;
import com.jero.modules.activiti.enums.CommitFlagEnum;
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.ConsultationNodeSort;
import com.jero.modules.activiti.process.fb.common.ConsultationTaskKey;
import com.jero.modules.activiti.process.fb.common.FbCommon;
@@ -977,34 +975,20 @@ public class ProcessFbStandardConsultationServiceImpl extends ServiceImpl<Proces
@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"));
// 处理业务表信息
// 删除业务表数据
IProcessFbStandardPurchaseService processFbStandardPurchaseService = SpringContextUtil.getBean(IProcessFbStandardPurchaseService.class);
ProcessFbStandardPurchase processFbStandardPurchase = processFbStandardPurchaseService.getById(processAll.getProjectId());
processFbStandardPurchase.setId(projectId);
processFbStandardPurchase.setCreateTime(new Date());
ISysUserService sysUserService = SpringContextUtil.getBean(ISysUserService.class);
SysUser sysUser = sysUserService.getById(processApprovalRecord.getOriginUserId());
processFbStandardPurchase.setCreateBy(sysUser.getUsername());
processFbStandardPurchaseService.save(processFbStandardPurchase);
processFbStandardPurchaseService.remove(
new LambdaQueryWrapper<ProcessFbStandardPurchase>()
.eq(ProcessFbStandardPurchase::getId, processAll.getProjectId()));
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);
IProcessFbConsultationListService processFbConsultationListService = SpringContextUtil.getBean(IProcessFbConsultationListService.class);
processFbConsultationListService.remove(
new LambdaQueryWrapper<ProcessFbConsultationList>()
.eq(ProcessFbConsultationList::getBusinessId, processAll.getProjectId()));
IProcessFbConsultationUserLinkService processFbConsultationUserLinkService = SpringContextUtil.getBean(IProcessFbConsultationUserLinkService.class);
processFbConsultationUserLinkService.remove(
new LambdaQueryWrapper<ProcessFbConsultationUserLink>()
.eq(ProcessFbConsultationUserLink::getBusinessId, processAll.getProjectId()));
}
}
@@ -7,10 +7,7 @@ import com.jero.common.exception.JeroBootException;
import com.jero.common.system.base.controller.JeroController;
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.ProcessFbStandardPurchase;
@@ -18,12 +15,9 @@ import com.jero.modules.activiti.process.fb.mapper.ProcessFbStandardPurchaseMapp
import com.jero.modules.activiti.process.fb.service.IProcessFbStandardPurchaseService;
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.util.CurrentUserUtil;
import com.jero.modules.system.entity.SysUser;
import com.jero.modules.system.service.ISysUserService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
@@ -35,7 +29,6 @@ import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.servlet.ModelAndView;
import javax.annotation.Resource;
import java.util.Date;
import java.util.List;
import java.util.Map;
@@ -202,34 +195,10 @@ public class ProcessFbStandardPurchaseServiceImpl extends ServiceImpl<ProcessFbS
@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"));
// 处理业务表信息
// 删除业务表数据
IProcessFbStandardPurchaseService processFbStandardPurchaseService = SpringContextUtil.getBean(IProcessFbStandardPurchaseService.class);
ProcessFbStandardPurchase processFbStandardPurchase = processFbStandardPurchaseService.getById(processAll.getProjectId());
processFbStandardPurchase.setId(projectId);
processFbStandardPurchase.setCreateTime(new Date());
ISysUserService sysUserService = SpringContextUtil.getBean(ISysUserService.class);
SysUser sysUser = sysUserService.getById(processApprovalRecord.getOriginUserId());
processFbStandardPurchase.setCreateBy(sysUser.getUsername());
processFbStandardPurchaseService.save(processFbStandardPurchase);
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);
processFbStandardPurchaseService.remove(
new LambdaQueryWrapper<ProcessFbStandardPurchase>()
.eq(ProcessFbStandardPurchase::getBusinessId, processAll.getProjectId()));
}
}
@@ -517,6 +517,52 @@ public class ProcessHandleServiceImpl implements IProcessHandleService{
return processInfoVO;
}
@Override
public void saveToDraft2(ProcessInfoVO processInfoVO) {
BasicProcessInfoDTO basicProcessInfoDTO = processInfoVO.getBasicProcessInfoDTO();
BasicTaskInfoDTO basicTaskInfoDTO = processInfoVO.getBasicTaskInfoDTO();
String taskId = null;
String handleText = null;
String handleFile = null;
if (basicTaskInfoDTO != null){
taskId = basicTaskInfoDTO.getTaskId();
handleText = basicTaskInfoDTO.getHandleText();
handleFile = basicTaskInfoDTO.getHandleFile();
}else {
processInfoVO.setBasicTaskInfoDTO(new BasicTaskInfoDTO());
}
// 保存
updateProcessAll(processInfoVO);
updateApprovalRecord(processInfoVO);
// 删除自己的草稿
String draftId = processInfoVO.getDraftId();
if (StringUtils.isNotBlank(draftId)){
processDraftService.removeById(draftId);
}
deleteMyDraft(taskId, processInfoVO.getBusinessId(), basicProcessInfoDTO.getProcessType());
// 根据是否有taskId区分保存来源(待办、草稿)
BasicTaskInfoDTO basicTaskInfoDTO1 = processInfoVO.getBasicTaskInfoDTO();
// 非发起节点不保存到草稿
if (StringUtils.isBlank(basicTaskInfoDTO1.getTaskId())){
ProcessDraft processDraft = new ProcessDraft();
processDraft.setProjectId(processInfoVO.getBusinessId()); // 业务id
processDraft.setProcessInstanceId(basicProcessInfoDTO.getProcessInstanceId()); // 流程实例id
processDraft.setPrcName(basicProcessInfoDTO.getProcessName()); // 流程名称
processDraft.setPrcType(basicProcessInfoDTO.getProcessType()); // 流程类型
processDraft.setProcessDueDate(basicProcessInfoDTO.getProcessDueDate()); // 流程信息-截止日期
processDraft.setProcessDescription(basicProcessInfoDTO.getProcessDescription()); // 流程信息-流程说明
processDraft.setTaskId(taskId); // 任务id
processDraft.setHandleText(handleText); // 流程审批信息-备注
processDraft.setHandleFile(handleFile); // 流程审批信息-附件
processDraft.setUserId(CurrentUserUtil.getId()); // 用户id
processDraft.setInfoJsonStr(processInfoVO.getInfoJsonStr());//草稿信息json字符串
processDraft.setSaveSource(processInfoVO.getSaveSource());//来源(启动流程时有用,用于保存初始业务信息用于强制驳回)
processDraftService.save(processDraft);
}
}
/**
* @Author: liao
* @Date: 2023/11/8 11:16