/** FlowMainService.java * 申请人撤回申请 * * @param flowMainid */ public AjaxResult recallApply(String flowMainid) { if (com.rockstar.util.StringUtils.isEmpty(flowMainid)) { return AjaxResult.error("数据不能为空"); } FlowMain flowMain = this.selectByPrimaryKey(flowMainid); //流转状态为审核中时,可以由发起人撤回。ok if (!flowMain.getFlowStatus().equals(1)) { return AjaxResult.error("流程状态不在审核中,请重新确认"); } // TODO: 2024/12/12 先处理待办 不然状态 会变 try { // 撤回后处理待办 String flowId = flowMain.getId(); FlowMainPushExample flowMainPushExample = new FlowMainPushExample(); flowMainPushExample.createCriteria().andFlowMainIdEqualTo(flowId).andStatusEqualTo(0); List flowMainPushes = flowMainPushService.selectByExample(flowMainPushExample); if (CollectionUtils.isNotEmpty(flowMainPushes)) { FlowMainPush push = flowMainPushes.get(0); // 进行审核操作后 就要处理待办 清除数据 String param = "id=" + flowId + "&flowMainPushId=" + push.getId() + "&applyUser=" + flowMain.getApplyUser(); // 付款申请 if(flowMain.getFlowType().equals(ConstantFlowType.PAYMENT)){ parkWaitHandleService.userHandle(HandleTypeEnum.FK, param, ShiroUtils.getUserId()); } // 入驻流程申请 if(flowMain.getFlowType().equals(ConstantFlowType.CHECK_IN)){ parkWaitHandleService.userHandle(HandleTypeEnum.RZ, param, ShiroUtils.getUserId()); } // 合同用章申请 if(flowMain.getFlowType().equals(ConstantFlowType.CONTRACT)){ parkWaitHandleService.userHandle(HandleTypeEnum.HTYZ, param, ShiroUtils.getUserId()); } // 应收款调整申请 if(flowMain.getFlowType().equals(ConstantFlowType.RECEIVABLES_ADJUST)){ parkWaitHandleService.userHandle(HandleTypeEnum.YSKTZ, param, ShiroUtils.getUserId()); } // 发票红冲申请 if(flowMain.getFlowType().equals(ConstantFlowType.INVOICE_RED)){ parkWaitHandleService.userHandle(HandleTypeEnum.FPHC, param, ShiroUtils.getUserId()); } // 回购申请 if(flowMain.getFlowType().equals(ConstantFlowType.BUYING_MORE)){ parkWaitHandleService.userHandle(HandleTypeEnum.HG, param, ShiroUtils.getUserId()); } // 上交财政申请 if(flowMain.getFlowType().equals(ConstantFlowType.FINANCE)){ parkWaitHandleService.userHandle(HandleTypeEnum.SJCZ, param, ShiroUtils.getUserId()); } } }catch (Exception e){ log.error("撤回流程处理待办报错:",e); } String mypushUserKey = null; {//开始申请人撤回申请 //先搜索目前有哪些人在审核中 ,获取key // select * from flow_main_push WHERE flow_main_push.flow_main_id=#{flowMainId} and STATUS=0 FlowMainPushExample example = new FlowMainPushExample(); example.createCriteria().andFlowMainIdEqualTo(flowMain.getId()).andStatusEqualTo(0); List flowMainPushes = flowMainPushService.selectByExample(example); mypushUserKey = flowMainPushes.get(0).getPushUserKey(); //1.关闭所有推送人数据信息表 ok { flowMainPushService.updateStatusThreeByFlowMainId(ShiroUtils.getUser().getId(), flowMain.getId()); } //2.关闭主流程 ok {// 发起流程引擎操作 并结束该流程 try { flowService.deleteInstance(flowMain.getFlowId(), "申请人撤回申请_结束流程"); } catch (Exception e) { System.err.println("流程引擎异常"); e.printStackTrace(); // throw new RuntimeException(e); } } //3.关闭主流程表 ok //存入流程日志表的id String flowMainLogUuid = UUIDUtils.middleUUID(); { FlowMain flowMain1 = new FlowMain(); flowMain1.setId(flowMain.getId()); flowMain1.setFlowStatus(4);//申请状态(1审批中,2,退回发起人,3,已结束,4已撤回) flowMain1.setLastMainLogId(flowMainLogUuid); flowMain1.setUpdatedAt(new Date()); flowMain1.setUpdatedBy(ShiroUtils.getUser().getId()); this.updateByPrimaryKeySelective(flowMain1); } //4 添加日志表 FlowMainLog flowMainLog = new FlowMainLog(); {//其表单对应的流转历史该节点审核结果显示为”发起人撤回” // flowMainLogUuid flowMainLog.setId(flowMainLogUuid); flowMainLog.setFlowMainId(flowMain.getId()); flowMainLog.setFormId(flowMain.getFormId()); flowMainLog.setAuditUser(ShiroUtils.getUser().getId()); flowMainLog.setAuditContent(null); flowMainLog.setAuditResult(null); //审批类型(0流程开始状态还是1流程审核状态还是2流程结束状态还是3申请人暂停状态4申请人结束状态 flowMainLog.setAuditType("4"); flowMainLog.setFlowType(flowMain.getFlowType()); flowMainLog.setFlowPost(ShiroUtils.getUser().getId()); {// 需要工作流引擎的支持 flowMainLog.setFlowId(flowMain.getFlowId()); flowMainLog.setTaskId(null); flowMainLog.setNodeName("发起人撤回"); flowMainLog.setPushUserKey(mypushUserKey);//发起人撤回时 当时的审核人所对应的角色 } // 下一环节操作人(审核人/委托人/退回申请人),列表例如:,张三,李四, // 因为感觉用不到,暂时不放进去 // flowMainLog.setNextPersons(); flowMainLog.setUpMainLogId(flowMain.getLastMainLogId()); flowMainLog.setCcList(null); flowMainLog.setCreatedAt(new Date()); flowMainLog.setCreatedBy(ShiroUtils.getUser().getId()); flowMainLog.setGroupId(ShiroUtils.getUser().getGroupId()); flowMainLog.setStatus(0); flowMainLogService.insertWithoutId(flowMainLog); } } return AjaxResult.success(); }