feat(企标稽查计划): 完善流程

This commit is contained in:
yjz
2023-11-24 08:59:44 +08:00
parent 2e5bf98bcb
commit 47fc961e45
7 changed files with 229 additions and 77 deletions
@@ -21,6 +21,7 @@ public enum ProcessType {
ES_RECHECK("企标复审流程", "8", "es-recheck", "ProcessEsRecheckServiceImpl"),
ES_ENABLE("已封存企标启用流程", "9", "es-enable", "ProcessEsEnableServiceImpl"),
ES_INSPECT_PLAN("企标稽查计划", "16", "es-inspect_plan", "ProcessEsInspectPlanServiceImpl"),
ES_INSPECT("企标稽查流程", "17", "es-inspect", "ProcessEsInspectServiceImpl"),
;
private final String name;
@@ -44,10 +44,9 @@ public class ProcessEsInspectController extends JeroController<ProcessEsInspect,
/**
* 分页列表查询
*
* @param processEsInspect
* @param processEsInspectVO
* @param pageNo
* @param pageSize
* @param req
* @return
*/
@AutoLog(value = "企标稽查流程业务表-分页列表查询")
@@ -1,7 +1,41 @@
package com.jero.modules.activiti.process.esinspect.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.jero.common.system.vo.LoginUser;
import com.jero.common.util.SnowflakeUtils;
import com.jero.modules.activiti.entity.ProcessAll;
import com.jero.modules.activiti.entity.ProcessApprovalRecord;
import com.jero.modules.activiti.enums.FinishFlagEnum;
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.service.ProcessDraftService;
import com.jero.modules.activiti.process.esinspect.service.IEsInspectFlowService;
import com.jero.modules.activiti.process.esinspect.vo.EsInspectFlowVO;
import com.jero.modules.activiti.process.esinspectplan.common.EsInspectPlanCommon;
import com.jero.modules.activiti.service.ProcessAllService;
import com.jero.modules.activiti.service.ProcessApprovalRecordService;
import com.jero.modules.activiti.service.ProcessNodeLinkService;
import com.jero.modules.activiti.service.ProcessNodeService;
import lombok.extern.slf4j.Slf4j;
import org.activiti.engine.ProcessEngine;
import org.activiti.engine.ProcessEngines;
import org.activiti.engine.RuntimeService;
import org.activiti.engine.TaskService;
import org.activiti.engine.runtime.ProcessInstance;
import org.activiti.engine.task.Task;
import org.apache.shiro.SecurityUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.stream.Collectors;
/**
* @ClassName: EsInspectFlowServiceImpl
@@ -10,20 +44,170 @@ import com.jero.modules.activiti.process.esinspect.vo.EsInspectFlowVO;
* @Date: 2023-11-23 09:25
* @Version: 1.0
**/
@Slf4j
@Transactional(rollbackFor = RuntimeException.class)
@Service
public class EsInspectFlowServiceImpl implements IEsInspectFlowService {
private final ProcessAllService processAllService;
private final ProcessApprovalRecordService processApprovalRecordService;
private final ProcessDraftService processDraftService;
private final ProcessNodeService processNodeService;
private final ProcessNodeLinkService processNodeLinkService;
public EsInspectFlowServiceImpl(ProcessAllService processAllService,
ProcessApprovalRecordService processApprovalRecordService,
ProcessDraftService processDraftService,
ProcessNodeService processNodeService,
ProcessNodeLinkService processNodeLinkService) {
this.processAllService = processAllService;
this.processApprovalRecordService = processApprovalRecordService;
this.processDraftService = processDraftService;
this.processNodeService = processNodeService;
this.processNodeLinkService = processNodeLinkService;
}
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
RuntimeService runtimeService = processEngine.getRuntimeService();
@Resource
private TaskService taskService;
@Override
public void flowStart(EsInspectFlowVO esInspectFlowVO) {
// 流程信息
ProcessAll processAll = esInspectFlowVO.getProcessAll();
// 流程审批信息
ProcessApprovalRecord processApprovalRecord = esInspectFlowVO.getProcessApprovalRecord();
// map(参数)
Map<String, Object> map = esInspectFlowVO.getMap();
// 根据流程key启动流程 同时 设置审批人员参数
ProcessInstance processInstance = runtimeService
.startProcessInstanceByKey(EsInspectPlanCommon.KEY, map);
// 再次设置map
runtimeService.setVariables(processInstance.getId(), map);
// 更新流程总表信息
LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
processAll.setPrcType(Integer.valueOf(ProcessType.ES_INSPECT.getValue()));
processAll.setCreateUserId(loginUser.getId());
processAllService.update(processAll,
new LambdaUpdateWrapper<ProcessAll>()
.eq(ProcessAll::getProcessInstanceId, processInstance.getId()));
// 根据流程实例id查询
Task task = taskService.createTaskQuery()
.processInstanceId(processInstance.getId())
.singleResult();
// 更新流程审批信息
processApprovalRecord.setUserId(loginUser.getId());
processApprovalRecord.setProjectId(processAll.getProjectId());
processApprovalRecord.setFinishFlag(FinishFlagEnum.COMPLETE.getValue());
processApprovalRecordService.update(processApprovalRecord,
new LambdaUpdateWrapper<ProcessApprovalRecord>()
.eq(ProcessApprovalRecord::getTaskId, task.getId()));
// 新增流程实例节点关联用户表
processNodeLinkService.saveNodeUserLink(processInstance.getProcessDefinitionId(), processInstance.getId(), listToString(map));
// 自动完成第一个节点
taskService.complete(task.getId());
// 删除草稿
processDraftService.remove(new LambdaQueryWrapper<ProcessDraft>()
.eq(ProcessDraft::getProjectId, processAll.getProjectId())
.eq(ProcessDraft::getUserId, loginUser.getId()));
}
private Map<String, Object> listToString(Map<String, Object> map) {
Map<String, Object> stringObjectHashMap;
stringObjectHashMap = map.entrySet().stream().map(v -> {
if (v.getValue() instanceof List) {
List<String> list = (List<String>)v.getValue();
v.setValue(String.join(",", list));
}
return v;
}).collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
return stringObjectHashMap;
}
@Override
public void flowSave(EsInspectFlowVO esInspectFlowVO) {
// 流程信息
ProcessAll processAll = esInspectFlowVO.getProcessAll();
// 流程审批信息
ProcessApprovalRecord processApprovalRecord = esInspectFlowVO.getProcessApprovalRecord();
// 流程总表信息
LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
processAll.setPrcType(Integer.valueOf(ProcessType.ES_INSPECT_PLAN.getValue()));
ProcessDraft processDraft = new ProcessDraft();
// 属性拷贝
BeanUtils.copyProperties(processAll, processDraft);
processDraft.setId("");
processDraft.setUpdateBy("");
Date date = new Date();
processDraft.setCreateTime(date);
processDraft.setUpdateBy("");
processDraft.setUpdateTime(date);
// 保存草稿表
if (StringUtils.isNotBlank(processApprovalRecord.getCommitFile())){
processDraft.setHandleFile(processApprovalRecord.getCommitFile());
}
if (StringUtils.isNotBlank(processApprovalRecord.getCommitText())){
processDraft.setHandleText(processApprovalRecord.getCommitText());
}
processDraft.setUserId(loginUser.getId());
// 删除旧草稿
processDraftService.remove(new LambdaQueryWrapper<ProcessDraft>()
.eq(ProcessDraft::getProjectId, processAll.getProjectId())
.eq(ProcessDraft::getUserId, loginUser.getId()));
// 保存新草稿
processDraftService.save(processDraft);
}
@Override
public EsInspectFlowVO queryDetailByProjectId(String projectId, String taskId) {
return null;
EsInspectFlowVO esInspectFlowVO = new EsInspectFlowVO();
LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
ProcessAll processAll = processAllService.getOne(new LambdaQueryWrapper<ProcessAll>()
.eq(ProcessAll::getProjectId, projectId), false);
ProcessApprovalRecord processApprovalRecord = new ProcessApprovalRecord();
// 是否存在草稿
List<ProcessDraft> processDraftList = processDraftService.list(new LambdaQueryWrapper<ProcessDraft>()
.eq(ProcessDraft::getProjectId, projectId)
.eq(ProcessDraft::getUserId, loginUser.getId()));
if (!processDraftList.isEmpty()){
String id = "";
if(Objects.isNull(processAll)){
processAll = new ProcessAll();
id = String.valueOf(SnowflakeUtils.snowflake());
}else {
id = processAll.getId();
}
// 存在草稿
ProcessDraft processDraft = processDraftList.get(0);
// 属性拷贝
BeanUtils.copyProperties(processDraft, processAll);
processAll.setId(id);
if (StringUtils.isNotBlank(processDraft.getHandleFile())){
processApprovalRecord.setCommitFile(processDraft.getHandleFile());
}
if (StringUtils.isNotBlank(processDraft.getHandleText())){
processApprovalRecord.setCommitText(processDraft.getHandleText());
}
}else {
// 不存在草稿
processApprovalRecord = processApprovalRecordService.getOne(new LambdaQueryWrapper<ProcessApprovalRecord>()
.eq(ProcessApprovalRecord::getProjectId, projectId)
.eq(ProcessApprovalRecord::getUserId, loginUser.getId())
.eq(StringUtils.isNotBlank(taskId), ProcessApprovalRecord::getTaskId, taskId)
, false);
}
esInspectFlowVO.setProcessAll(processAll);
esInspectFlowVO.setProcessApprovalRecord(processApprovalRecord);
return esInspectFlowVO;
}
@Override
@@ -33,6 +217,12 @@ public class EsInspectFlowServiceImpl implements IEsInspectFlowService {
@Override
public void flowTransfer(String taskId, String userId) {
// 更新流程审批信息
processApprovalRecordService.update(new LambdaUpdateWrapper<ProcessApprovalRecord>()
.eq(ProcessApprovalRecord::getTaskId, taskId)
.set(ProcessApprovalRecord::getTransferBy, userId)
.set(ProcessApprovalRecord::getUserId, userId));
// 转办
taskService.setAssignee(taskId, userId);
}
}
@@ -98,6 +98,20 @@ public class EsInspectPlanFlowController {
return Result.OK(MessageUtils.getMessage(ResultCommon.OK));
}
/**
* 企标稽查计划流程-驳回
* @param esInspectPlanFlowVO 企标稽查计划流程VO对象
* @return 结果对象
*/
@AutoLog(value = "企标稽查计划流程-驳回")
@ApiOperation(value="企标稽查计划流程-驳回", notes="企标稽查计划流程-驳回")
@PostMapping(value = "/flowReject")
public Result<T> flowReject(@RequestBody EsInspectPlanFlowVO esInspectPlanFlowVO) {
log.info("");
esInspectPlanFlowService.flowApproval(esInspectPlanFlowVO);
return Result.OK(MessageUtils.getMessage(ResultCommon.OK));
}
/**
* 企标稽查计划流程-流程转办
* @return 结果对象
@@ -70,7 +70,6 @@ public class ProcessEsInspectPlan extends BaseEntity {
@ApiModelProperty(value = "稽查负责人")
private String inspectUser;
/**稽查负责人 翻译*/
@Excel(name = "稽查负责人", width = 15)
@ApiModelProperty(value = "稽查负责人 翻译")
@TableField(exist = false)
private String inspectUserDictText;
@@ -79,7 +78,6 @@ public class ProcessEsInspectPlan extends BaseEntity {
@ApiModelProperty(value = "标准化组对接人")
private String standardizationDockingUser;
/**标准化组对接人 翻译*/
@Excel(name = "标准化组对接人", width = 15)
@ApiModelProperty(value = "标准化组对接人 翻译")
@TableField(exist = false)
private String standardizationDockingUserDictText;
@@ -88,7 +86,6 @@ public class ProcessEsInspectPlan extends BaseEntity {
@ApiModelProperty(value = "征求意见对象")
private String objectOfConsultation;
/**征求意见对象 翻译*/
@Excel(name = "征求意见对象", width = 15)
@ApiModelProperty(value = "征求意见对象 翻译")
@TableField(exist = false)
private String objectOfConsultationDictText;
@@ -38,10 +38,10 @@ import org.activiti.engine.runtime.ProcessInstance;
import org.activiti.engine.task.Task;
import org.apache.shiro.SecurityUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.*;
import java.util.stream.Collectors;
@@ -93,15 +93,13 @@ public class EsInspectPlanFlowServiceImpl implements IEsInspectPlanFlowService {
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
RuntimeService runtimeService = processEngine.getRuntimeService();
@Autowired
@Resource
private TaskService taskService;
@Override
public void flowStart(EsInspectPlanFlowVO esInspectPlanFlowVO) {
// 流程信息
ProcessAll processAll = esInspectPlanFlowVO.getProcessAll();
// 企标稽查计划业务表
// List<ProcessEsInspectPlan> processEsInspectPlanList = esInspectPlanFlowVO.getProcessEsInspectPlanList();
// 流程审批信息
ProcessApprovalRecord processApprovalRecord = esInspectPlanFlowVO.getProcessApprovalRecord();
// map(参数)
@@ -111,6 +109,9 @@ public class EsInspectPlanFlowServiceImpl implements IEsInspectPlanFlowService {
ProcessInstance processInstance = runtimeService
.startProcessInstanceByKey(EsInspectPlanCommon.KEY, map);
// 再次设置map
runtimeService.setVariables(processInstance.getId(), map);
// 更新流程总表信息
LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
processAll.setPrcType(Integer.valueOf(ProcessType.ES_INSPECT_PLAN.getValue()));
@@ -119,12 +120,6 @@ public class EsInspectPlanFlowServiceImpl implements IEsInspectPlanFlowService {
new LambdaUpdateWrapper<ProcessAll>()
.eq(ProcessAll::getProcessInstanceId, processInstance.getId()));
// 更新企标稽查计划业务表
// for (ProcessEsInspectPlan processEsInspectPlan : processEsInspectPlanList) {
// processEsInspectPlan.setProjectId(processAll.getProjectId());
// }
// processEsInspectPlanService.saveOrUpdateBatch(processEsInspectPlanList);
// 根据流程实例id查询
Task task = taskService.createTaskQuery()
.processInstanceId(processInstance.getId())
@@ -155,8 +150,6 @@ public class EsInspectPlanFlowServiceImpl implements IEsInspectPlanFlowService {
public void flowSave(EsInspectPlanFlowVO esInspectPlanFlowVO) {
// 流程信息
ProcessAll processAll = esInspectPlanFlowVO.getProcessAll();
// // 企标稽查计划业务表
// List<ProcessEsInspectPlan> processEsInspectPlanList = esInspectPlanFlowVO.getProcessEsInspectPlanList();
// 流程审批信息
ProcessApprovalRecord processApprovalRecord = esInspectPlanFlowVO.getProcessApprovalRecord();
@@ -186,27 +179,6 @@ public class EsInspectPlanFlowServiceImpl implements IEsInspectPlanFlowService {
.eq(ProcessDraft::getUserId, loginUser.getId()));
// 保存新草稿
processDraftService.save(processDraft);
// 处理企标稽查计划业务表
// List<ProcessEsInspectPlan> newInspectPlanList = processEsInspectPlanList.stream().filter(v -> StringUtils.isBlank(v.getId())).collect(Collectors.toList());
// List<ProcessEsInspectPlan> oldInspectPlanList = processEsInspectPlanList.stream().filter(v -> StringUtils.isNotBlank(v.getId())).collect(Collectors.toList());
// 设置项目id
// newInspectPlanList.forEach(v -> v.setProjectId(processAll.getProjectId()));
// // 保存新数据
// processEsInspectPlanService.saveBatch(newInspectPlanList);
//
// // 旧数据ids
// List<String> oldIds = oldInspectPlanList.stream().map(ProcessEsInspectPlan::getId).collect(Collectors.toList());
//
// //删除旧数据
// if (oldIds.isEmpty()){
// processEsInspectPlanService.remove(new LambdaQueryWrapper<ProcessEsInspectPlan>()
// .eq(ProcessEsInspectPlan::getProjectId, processAll.getProjectId()));
// }else {
// processEsInspectPlanService.remove(new LambdaQueryWrapper<ProcessEsInspectPlan>()
// .eq(ProcessEsInspectPlan::getProjectId, processAll.getProjectId())
// .notIn(ProcessEsInspectPlan::getId, oldIds));
// }
}
private Map<String, Object> listToString(Map<String, Object> map) {
@@ -130,7 +130,7 @@ public class ProcessEsInspectPlanServiceImpl extends ServiceImpl<ProcessEsInspec
queryWrapper.eq(StringUtils.isNotBlank(processEsInspectPlan.getProjectId()), "project_id", processEsInspectPlan.getProjectId());
if (StringUtils.isNotBlank(processEsInspectPlan.getNodeId()) && "Activity_0mnt8n8".equals(processEsInspectPlan.getNodeId())){
queryWrapper.and(qw ->
qw.eq("object_of_consultation", loginUser.getId())
qw.like("object_of_consultation", loginUser.getId())
.or().eq("create_by", loginUser.getUsername()));
}
queryWrapper.orderByDesc("create_time");
@@ -254,7 +254,7 @@ public class ProcessEsInspectPlanServiceImpl extends ServiceImpl<ProcessEsInspec
private List<String> sixthVerify(ProcessEsInspectPlan processEsInspectPlan) {
List<String> errorList = new ArrayList<>();
if (StringUtils.isNotBlank(processEsInspectPlan.getStandardizationDockingUser())){
SysUser sysUser = sysUserService.getById(processEsInspectPlan.getStandardizationDockingUser());
SysUser sysUser = sysUserService.getUserByName(processEsInspectPlan.getStandardizationDockingUser());
if (Objects.isNull(sysUser)){
errorList.add("标准化组对接人不存在!");
}else {
@@ -264,7 +264,7 @@ public class ProcessEsInspectPlanServiceImpl extends ServiceImpl<ProcessEsInspec
errorList.add("标准化组对接人不能为空!");
}
if (StringUtils.isNotBlank(processEsInspectPlan.getObjectOfConsultation())){
SysUser sysUser = sysUserService.getById(processEsInspectPlan.getObjectOfConsultation());
SysUser sysUser = sysUserService.getUserByName(processEsInspectPlan.getObjectOfConsultation());
if (Objects.isNull(sysUser)){
errorList.add("征求意见对象不存在!");
}else {
@@ -289,7 +289,7 @@ public class ProcessEsInspectPlanServiceImpl extends ServiceImpl<ProcessEsInspec
errorList.add("计划稽查日期不能为空!");
}
if (StringUtils.isNotBlank(processEsInspectPlan.getInspectUser())){
SysUser sysUser = sysUserService.getById(processEsInspectPlan.getInspectUser());
SysUser sysUser = sysUserService.getUserByName(processEsInspectPlan.getInspectUser());
if (Objects.isNull(sysUser)){
errorList.add("稽查负责人不存在!");
}else {
@@ -304,21 +304,18 @@ public class ProcessEsInspectPlanServiceImpl extends ServiceImpl<ProcessEsInspec
private List<String> thirdVerify(ProcessEsInspectPlan processEsInspectPlan) {
List<String> errorList = new ArrayList<>();
if (StringUtils.isNotBlank(processEsInspectPlan.getStandardizationWorkGroup())){
SysDepart sysDepart = sysDepartService.getById(processEsInspectPlan.getStandardizationWorkGroup());
if (Objects.isNull(sysDepart)) {
errorList.add("主责标准化工作组不存在!");
}else {
processEsInspectPlan.setStandardizationWorkGroup(sysDepart.getId());
}
processEsInspectPlan.setStandardizationWorkGroup(processEsInspectPlan.getStandardizationWorkGroup());
}else {
errorList.add("主责标准化工作组不能为空!");
}
if (StringUtils.isNotBlank(processEsInspectPlan.getBelongDept())){
SysDepart sysDepart = sysDepartService.getById(processEsInspectPlan.getBelongDept());
if (Objects.isNull(sysDepart)) {
List<SysDepart> sysDepart = sysDepartService.list(
new LambdaQueryWrapper<SysDepart>()
.eq(SysDepart::getDepartName, processEsInspectPlan.getBelongDept()));
if (sysDepart.isEmpty()) {
errorList.add("所属部门不存在!");
}else {
processEsInspectPlan.setBelongDept(sysDepart.getId());
processEsInspectPlan.setBelongDept(sysDepart.get(0).getId());
}
}else {
errorList.add("所属部门不能为空!");
@@ -332,11 +329,13 @@ public class ProcessEsInspectPlanServiceImpl extends ServiceImpl<ProcessEsInspec
if (StringUtils.isNotBlank(processEsInspectPlan.getInspectObject())){
String[] list = processEsInspectPlan.getInspectObject().split(",");
for (String s : list) {
SysDepart sysDepart = sysDepartService.getById(s);
if (Objects.isNull(sysDepart)) {
List<SysDepart> sysDepart = sysDepartService.list(
new LambdaQueryWrapper<SysDepart>()
.eq(SysDepart::getDepartName, s));
if (sysDepart.isEmpty()) {
errorList.add("计划稽查对象不存在!");
}else {
departList.add(sysDepart.getId());
departList.add(sysDepart.get(0).getId());
}
}
}else {
@@ -350,16 +349,7 @@ public class ProcessEsInspectPlanServiceImpl extends ServiceImpl<ProcessEsInspec
private List<String> firstVerify(ProcessEsInspectPlan processEsInspectPlan) {
List<String> errorList = new ArrayList<>();
if (StringUtils.isNotBlank(processEsInspectPlan.getInspectNo())){
/**
* List<LawsEnterpriseStandard> list = lawsEnterpriseStandardService.list(new LambdaQueryWrapper<LawsEnterpriseStandard>()
* .eq(LawsEnterpriseStandard::getStandardNumber, processEsInspectPlan.getInspectNo()));
* if (list.isEmpty()) {
* errorList.add("稽查依据标准号不存在!");
* }
*/
}else {
if (StringUtils.isBlank(processEsInspectPlan.getInspectNo())){
errorList.add("稽查依据标准号不能为空!");
}
if (StringUtils.isNotBlank(processEsInspectPlan.getInspectName())){
@@ -371,17 +361,6 @@ public class ProcessEsInspectPlanServiceImpl extends ServiceImpl<ProcessEsInspec
}else {
errorList.add("稽查依据标准名称不能为空!");
}
/**
* if (StringUtils.isNotBlank(processEsInspectPlan.getInspectNo())
* && StringUtils.isNotBlank(processEsInspectPlan.getInspectName())
* && errorList.isEmpty()){
* List<LawsEnterpriseStandard> list = lawsEnterpriseStandardService.list(new LambdaQueryWrapper<LawsEnterpriseStandard>()
* .eq(LawsEnterpriseStandard::getStandardNumber, processEsInspectPlan.getInspectNo())
* .eq(LawsEnterpriseStandard::getStandardName, processEsInspectPlan.getInspectName()));
* if (list.isEmpty()) {
* errorList.add("稽查依据标准号和稽查依据标准名称不匹配!");
* }* }
*/
return errorList;
}