fix: 80849 法规采购流程-驳回给发起节点,添加数据后提交,提示数据库中已存在该记录

This commit is contained in:
2024-02-01 11:39:34 +08:00
parent d97dbd0d12
commit b1d4461163
3 changed files with 169 additions and 84 deletions
@@ -334,6 +334,18 @@ public class ActFlowCommonService {
processAllService.updateById(process);
}
public void updateProcessAllWithProjectId(String processInstanceId, String userId, String prcName, String prcMes,
Integer prcType, Date dueTime, String projectId) {
ProcessAll process = processAllService.getByProcessInstanceId(processInstanceId);
process.setCreateUserId(userId);
process.setPrcName(prcName);
process.setPrcMes(prcMes);
process.setDueTime(dueTime);
process.setPrcType(prcType);
process.setProjectId(projectId);
processAllService.updateById(process);
}
public StandTypeVO getStandTypeByStandNo(String standardNo) {
LambdaUpdateWrapper<EnterpriseStandardPlan> espWrapper = new LambdaUpdateWrapper<>();
espWrapper.eq(EnterpriseStandardPlan::getNewEnStandardNo, standardNo);
@@ -24,84 +24,84 @@ import java.util.List;
/**
* @Description: 法规采购流程表
* @Author: jero-boot
* @Date: 2023-11-14
* @Date: 2023-11-14
* @Version: V1.0
*/
@Api(tags="法规采购流程表")
@Api(tags = "法规采购流程表")
@RestController
@RequestMapping("/process/fb/processFbStandardPurchase")
@Slf4j
public class ProcessFbStandardPurchaseController extends JeroController<ProcessFbStandardPurchase, IProcessFbStandardPurchaseService> {
@Autowired
private IProcessFbStandardPurchaseService processFbStandardPurchaseService;
@Autowired
private IProcessFbStandardPurchaseService processFbStandardPurchaseService;
@GetMapping("/queryProcessInfoVO")
@AutoLog(value = "法规采购流程表-查询流程信息")
@ApiImplicitParams({
@ApiImplicitParam(name = "draftId", value = "草稿id"),
@ApiImplicitParam(name = "processInstanceId", value = "流程实例id"),
@ApiImplicitParam(name = "taskId", value = "任务id")
})
@ApiOperation("法规采购流程表-查询流程信息")
public Result<ProcessInfoVO<List<ProcessFbStandardPurchase>>> queryProcessInfoVO(String draftId, String processInstanceId, String taskId, String projectId){
ProcessInfoVO<List<ProcessFbStandardPurchase>> processInfoVO = processFbStandardPurchaseService.queryProcessInfoVO(draftId, processInstanceId, taskId, projectId);
return Result.OK(processInfoVO);
}
@GetMapping("/queryProcessInfoVO")
@AutoLog(value = "法规采购流程表-查询流程信息")
@ApiImplicitParams({
@ApiImplicitParam(name = "draftId", value = "草稿id"),
@ApiImplicitParam(name = "processInstanceId", value = "流程实例id"),
@ApiImplicitParam(name = "taskId", value = "任务id")
})
@ApiOperation("法规采购流程表-查询流程信息")
public Result<ProcessInfoVO<List<ProcessFbStandardPurchase>>> queryProcessInfoVO(String draftId, String processInstanceId, String taskId, String projectId) {
ProcessInfoVO<List<ProcessFbStandardPurchase>> processInfoVO = processFbStandardPurchaseService.queryProcessInfoVO(draftId, processInstanceId, taskId, projectId);
return Result.OK(processInfoVO);
}
@AutoLog(value = "法规采购流程表-发起流程")
@ApiOperation(value = "法规采购流程表-发起流程", notes = "流程处理-发起流程")
@PostMapping(value = "/startProcess")
public Result<T> startProcess(@Validated @RequestBody ProcessInfoVO<List<ProcessFbStandardPurchase>> processInfoVO) {
processFbStandardPurchaseService.startProcess(processInfoVO);
return Result.OK();
}
@AutoLog(value = "法规采购流程表-发起流程")
@ApiOperation(value = "法规采购流程表-发起流程", notes = "流程处理-发起流程")
@PostMapping(value = "/startProcess")
public Result<T> startProcess(@Validated @RequestBody ProcessInfoVO<List<ProcessFbStandardPurchase>> processInfoVO) {
processFbStandardPurchaseService.startProcess(processInfoVO);
return Result.OK();
}
@AutoLog(value = "法规采购流程表-同意")
@ApiOperation(value="法规采购流程表-同意", notes="法规采购流程表-同意")
@PostMapping("/agree")
public Result<T> agree(@Validated @RequestBody ProcessInfoVO<List<ProcessFbStandardPurchase>> processInfoVO) {
processFbStandardPurchaseService.approveTask(processInfoVO, true);
return Result.OK();
}
@AutoLog(value = "法规采购流程表-同意")
@ApiOperation(value = "法规采购流程表-同意", notes = "法规采购流程表-同意")
@PostMapping("/agree")
public Result<T> agree(@Validated @RequestBody ProcessInfoVO<List<ProcessFbStandardPurchase>> processInfoVO) {
processFbStandardPurchaseService.approveTask(processInfoVO, true);
return Result.OK();
}
@AutoLog(value = "法规采购流程表-驳回")
@ApiOperation(value="法规采购流程表-驳回", notes="法规采购流程表-驳回")
@PostMapping("/reject")
public Result<T> reject(@Validated @RequestBody ProcessInfoVO<List<ProcessFbStandardPurchase>> processInfoVO) {
processFbStandardPurchaseService.approveTask(processInfoVO, false);
return Result.OK();
}
@AutoLog(value = "法规采购流程表-驳回")
@ApiOperation(value = "法规采购流程表-驳回", notes = "法规采购流程表-驳回")
@PostMapping("/reject")
public Result<T> reject(@Validated @RequestBody ProcessInfoVO<List<ProcessFbStandardPurchase>> processInfoVO) {
processFbStandardPurchaseService.approveTask(processInfoVO, false);
return Result.OK();
}
@AutoLog(value = "法规采购流程表-转办")
@ApiOperation(value="法规采购流程表-转办", notes="法规采购流程表-转办")
@PostMapping(value = "/transfer")
public Result<T> transfer(@RequestBody TransferVO transferVO) {
processFbStandardPurchaseService.transfer(transferVO.getTaskId(), transferVO.getUserId());
return Result.OK();
}
@AutoLog(value = "法规采购流程表-转办")
@ApiOperation(value = "法规采购流程表-转办", notes = "法规采购流程表-转办")
@PostMapping(value = "/transfer")
public Result<T> transfer(@RequestBody TransferVO transferVO) {
processFbStandardPurchaseService.transfer(transferVO.getTaskId(), transferVO.getUserId());
return Result.OK();
}
@AutoLog(value = "法规采购流程表-保存为草稿")
@ApiOperation(value = "法规采购流程表-保存为草稿", notes = "法规采购流程表-保存为草稿")
@PostMapping(value = "/saveToDraft")
public Result<T> saveToDraft(@Validated @RequestBody ProcessInfoVO<List<ProcessFbStandardPurchase>> processInfoVO) {
processFbStandardPurchaseService.saveToDraft(processInfoVO);
return Result.OK();
}
@AutoLog(value = "法规采购流程表-保存为草稿")
@ApiOperation(value = "法规采购流程表-保存为草稿", notes = "法规采购流程表-保存为草稿")
@PostMapping(value = "/saveToDraft")
public Result<T> saveToDraft(@Validated @RequestBody ProcessInfoVO<List<ProcessFbStandardPurchase>> processInfoVO) {
processFbStandardPurchaseService.saveToDraft(processInfoVO);
return Result.OK();
}
@AutoLog(value = "法规采购流程表-导出")
@ApiOperation(value = "法规采购流程表-导出", notes = "法规采购流程表-导出")
@GetMapping(value = "/exportXls")
public ModelAndView exportXls(@RequestParam(name = "businessId") String businessId) {
return processFbStandardPurchaseService.exportXls(businessId);
}
@AutoLog(value = "法规采购流程表-导出")
@ApiOperation(value = "法规采购流程表-导出", notes = "法规采购流程表-导出")
@GetMapping(value = "/exportXls")
public ModelAndView exportXls(@RequestParam(name = "businessId") String businessId) {
return processFbStandardPurchaseService.exportXls(businessId);
}
@AutoLog(value = "法规采购流程表-抄送")
@ApiOperation(value = "法规采购流程表-抄送", notes = "法规采购流程表-抄送")
@GetMapping(value = "/carbonCopy")
public Result<T> carbonCopy(@RequestParam(name = "processInstanceId") String processInstanceId,
@RequestParam(name = "userIds") String userIds) {
processFbStandardPurchaseService.carbonCopy(processInstanceId, userIds);
return Result.OK();
}
@AutoLog(value = "法规采购流程表-抄送")
@ApiOperation(value = "法规采购流程表-抄送", notes = "法规采购流程表-抄送")
@GetMapping(value = "/carbonCopy")
public Result<T> carbonCopy(@RequestParam(name = "processInstanceId") String processInstanceId,
@RequestParam(name = "userIds") String userIds) {
processFbStandardPurchaseService.carbonCopy(processInstanceId, userIds);
return Result.OK();
}
}
@@ -1,5 +1,6 @@
package com.jero.modules.activiti.process.fb.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.ResultCommon;
@@ -8,18 +9,28 @@ 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.enums.ProcessTypeEnum;
import com.jero.modules.activiti.process.common.entity.CommonVO;
import com.jero.modules.activiti.process.common.entity.CounterSignNodeNameConstants;
import com.jero.modules.activiti.process.common.service.ActFlowCommonService;
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.dto.BasicTaskInfoDTO;
import com.jero.modules.activiti.process.fb.entity.ProcessFbStandardPurchase;
import com.jero.modules.activiti.process.fb.mapper.ProcessFbStandardPurchaseMapper;
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.ProcessNodeLinkService;
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.sys.utils.UserUtils;
import lombok.extern.slf4j.Slf4j;
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.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.jeecgframework.poi.excel.def.NormalExcelConstants;
@@ -30,6 +41,7 @@ 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;
@@ -37,7 +49,7 @@ import java.util.Map;
/**
* @Description: 法规采购流程表
* @Author: jero-boot
* @Date: 2023-11-14
* @Date: 2023-11-14
* @Version: V1.0
*/
@Service
@@ -52,6 +64,18 @@ public class ProcessFbStandardPurchaseServiceImpl extends ServiceImpl<ProcessFbS
@Resource
private ProcessDraftService processDraftService;
@Resource
private ActFlowCommonService actFlowCommonService;
@Resource
private RuntimeService runtimeService;
@Resource
private ProcessNodeLinkService processNodeLinkService;
@Resource
private TaskService taskService;
/**
* @Author: liao
* @Date: 2023/11/14 14:08
@@ -77,7 +101,7 @@ public class ProcessFbStandardPurchaseServiceImpl extends ServiceImpl<ProcessFbS
**/
@Override
public void startProcess(ProcessInfoVO<List<ProcessFbStandardPurchase>> processInfoVO) {
String processName = addBusinessInfo(processInfoVO);// 保存业务信息
addBusinessInfo(processInfoVO);// 保存业务信息
Map<String, Object> userInfoMap = processInfoVO.getUserInfoMap(); // 用户变量map
userInfoMap.put("engineer", CurrentUserUtil.getId()); // 第一个任务节点设置成自己
@@ -103,9 +127,9 @@ public class ProcessFbStandardPurchaseServiceImpl extends ServiceImpl<ProcessFbS
* @Date: 2023/11/14 14:18
* @Description: 添加业务信息
**/
private String addBusinessInfo(ProcessInfoVO<List<ProcessFbStandardPurchase>> processInfoVO) {
private void addBusinessInfo(ProcessInfoVO<List<ProcessFbStandardPurchase>> processInfoVO) {
List<ProcessFbStandardPurchase> businessInfoList = processInfoVO.getBusinessInfoDTO();
if (CollectionUtils.isEmpty(businessInfoList)) return "";
if (CollectionUtils.isEmpty(businessInfoList)) return;
String businessId = businessInfoList.get(0).getBusinessId();
if (StringUtils.isBlank(businessId)) {
businessId = UUIDUtils.randomUUID20();
@@ -128,8 +152,6 @@ public class ProcessFbStandardPurchaseServiceImpl extends ServiceImpl<ProcessFbS
remove(removeWrapper); // 先删除历史数据
saveOrUpdateBatch(businessInfoList, businessInfoList.size()); // 保存到数据库
return businessInfoList.get(0).getStandardNumber() + "-" + businessInfoList.get(0).getStandardName() + "-" + "采购";
}
/**
@@ -139,17 +161,68 @@ public class ProcessFbStandardPurchaseServiceImpl extends ServiceImpl<ProcessFbS
**/
@Override
public void approveTask(ProcessInfoVO<List<ProcessFbStandardPurchase>> processInfoVO, boolean pass) {
List<ProcessFbStandardPurchase> businessInfoList = processInfoVO.getBusinessInfoDTO();
addBusinessInfo(processInfoVO);
processInfoVO.setBusinessId(businessInfoList.get(0).getBusinessId());
processHandleService.approveTask(processInfoVO, pass);
BasicProcessInfoDTO basicProcessInfoDTO = processInfoVO.getBasicProcessInfoDTO();
String processInstanceId = basicProcessInfoDTO.getProcessInstanceId();
// 如果流程结束
if (pass && processHandleService.isProcessFinish(processInstanceId)) {
log.info("《法规采购流程》结束,流程名称:{}", basicProcessInfoDTO.getProcessName());
String userId = UserUtils.getUserId();
CommonVO commonVO = this.transferCommonVo(processInfoVO);
Map<String, Object> flowUser = processInfoVO.getUserInfoMap();
String taskId = commonVO.getTaskId();
if (StrUtil.isBlank(taskId) || !actFlowCommonService.taskExists(taskId)) {
throw new JeroBootException(ResultCommon.TASK_NOT_EXISTS);
}
// 获取流程实例ID
String processInstanceId = actFlowCommonService.getProcessInstanceIdByTaskId(taskId);
// 获取流程实例对象
ProcessInstance processInstance = runtimeService.createProcessInstanceQuery()
.processInstanceId(processInstanceId).singleResult();
// 获取流程定义ID
String processDefinitionId = processInstance.getProcessDefinitionId();
List<ProcessFbStandardPurchase> data = processInfoVO.getBusinessInfoDTO();
if (data != null) {
addBusinessInfo(processInfoVO); // 保存业务信息
// 根据流程实例id更新流程总表
String prcName = commonVO.getPrcName();
String prcMes = commonVO.getPrcMes();
Date dueTime = commonVO.getDueTime();
Integer prcType = ProcessTypeEnum.FB_STANDARD_PURCHASE.getValue();
actFlowCommonService.updateProcessAllWithProjectId(processInstanceId, userId,
prcName, prcMes, prcType, dueTime, data.get(0).getBusinessId());
}
if (flowUser != null) {
Map<String, Object> variables = setVariables(flowUser);
Task task = taskService.createTaskQuery().taskId(taskId).singleResult();
// 获取执行id
String executionId = task.getExecutionId();
// 设置流程变量
runtimeService.setVariables(executionId, variables);
processNodeLinkService.saveNodeUserLink(processDefinitionId, processInstanceId, flowUser);
}
// 设置流程变量
runtimeService.setVariable(processInstanceId, "pass", pass);
// 更新审批表为完成,填充数据
actFlowCommonService.updateApprovalInfo(commonVO, taskId, pass);
// 审批节点
actFlowCommonService.completeTask(taskId, userId);
// 删除草稿
actFlowCommonService.removeDraft(commonVO);
}
private CommonVO transferCommonVo(ProcessInfoVO processInfoVO) {
CommonVO commonVO = new CommonVO();
BasicProcessInfoDTO basicProcessInfoDTO = processInfoVO.getBasicProcessInfoDTO();
BasicTaskInfoDTO basicTaskInfoDTO = processInfoVO.getBasicTaskInfoDTO();
commonVO.setTaskId(basicTaskInfoDTO.getTaskId());
commonVO.setPrcName(basicProcessInfoDTO.getProcessName());
commonVO.setPrcMes(basicProcessInfoDTO.getProcessDescription());
commonVO.setDueTime(basicProcessInfoDTO.getProcessDueDate());
commonVO.setProcessInstanceId(basicProcessInfoDTO.getProcessInstanceId());
commonVO.setCommitFile(basicTaskInfoDTO.getHandleFile());
commonVO.setCommitText(basicTaskInfoDTO.getHandleText());
return commonVO;
}
private Map<String, Object> setVariables(Map<String, Object> flowUser) {
// 删除所有后缀是“_dictText”的变量
flowUser.entrySet().removeIf(entry -> entry.getKey().endsWith("_dictText"));
return flowUser;
}
/**
@@ -191,8 +264,8 @@ public class ProcessFbStandardPurchaseServiceImpl extends ServiceImpl<ProcessFbS
ModelAndView mv = new ModelAndView(new JeecgEntityExcelView());
mv.addObject(JeroController.CLASS, ProcessFbStandardPurchase.class);
ExportParams exportParams=new ExportParams();
mv.addObject(JeroController.PARAMS,exportParams);
ExportParams exportParams = new ExportParams();
mv.addObject(JeroController.PARAMS, exportParams);
mv.addObject(NormalExcelConstants.DATA_LIST, exportList);
return mv;
}
@@ -213,6 +286,6 @@ public class ProcessFbStandardPurchaseServiceImpl extends ServiceImpl<ProcessFbS
IProcessFbStandardPurchaseService processFbStandardPurchaseService = SpringContextUtil.getBean(IProcessFbStandardPurchaseService.class);
processFbStandardPurchaseService.remove(
new LambdaQueryWrapper<ProcessFbStandardPurchase>()
.eq(ProcessFbStandardPurchase::getBusinessId, processAll.getProjectId()));
.eq(ProcessFbStandardPurchase::getBusinessId, processAll.getProjectId()));
}
}