许锋增加的判断.txt 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  1. /**
  2. FlowMainService.java
  3. * 申请人撤回申请
  4. *
  5. * @param flowMainid
  6. */
  7. public AjaxResult recallApply(String flowMainid) {
  8. if (com.rockstar.util.StringUtils.isEmpty(flowMainid)) {
  9. return AjaxResult.error("数据不能为空");
  10. }
  11. FlowMain flowMain = this.selectByPrimaryKey(flowMainid);
  12. //流转状态为审核中时,可以由发起人撤回。ok
  13. if (!flowMain.getFlowStatus().equals(1)) {
  14. return AjaxResult.error("流程状态不在审核中,请重新确认");
  15. }
  16. // TODO: 2024/12/12 先处理待办 不然状态 会变
  17. try {
  18. // 撤回后处理待办
  19. String flowId = flowMain.getId();
  20. FlowMainPushExample flowMainPushExample = new FlowMainPushExample();
  21. flowMainPushExample.createCriteria().andFlowMainIdEqualTo(flowId).andStatusEqualTo(0);
  22. List<FlowMainPush> flowMainPushes = flowMainPushService.selectByExample(flowMainPushExample);
  23. if (CollectionUtils.isNotEmpty(flowMainPushes)) {
  24. FlowMainPush push = flowMainPushes.get(0);
  25. // 进行审核操作后 就要处理待办 清除数据
  26. String param = "id=" + flowId + "&flowMainPushId=" + push.getId() + "&applyUser=" + flowMain.getApplyUser();
  27. // 付款申请
  28. if(flowMain.getFlowType().equals(ConstantFlowType.PAYMENT)){
  29. parkWaitHandleService.userHandle(HandleTypeEnum.FK, param, ShiroUtils.getUserId());
  30. }
  31. // 入驻流程申请
  32. if(flowMain.getFlowType().equals(ConstantFlowType.CHECK_IN)){
  33. parkWaitHandleService.userHandle(HandleTypeEnum.RZ, param, ShiroUtils.getUserId());
  34. }
  35. // 合同用章申请
  36. if(flowMain.getFlowType().equals(ConstantFlowType.CONTRACT)){
  37. parkWaitHandleService.userHandle(HandleTypeEnum.HTYZ, param, ShiroUtils.getUserId());
  38. }
  39. // 应收款调整申请
  40. if(flowMain.getFlowType().equals(ConstantFlowType.RECEIVABLES_ADJUST)){
  41. parkWaitHandleService.userHandle(HandleTypeEnum.YSKTZ, param, ShiroUtils.getUserId());
  42. }
  43. // 发票红冲申请
  44. if(flowMain.getFlowType().equals(ConstantFlowType.INVOICE_RED)){
  45. parkWaitHandleService.userHandle(HandleTypeEnum.FPHC, param, ShiroUtils.getUserId());
  46. }
  47. // 回购申请
  48. if(flowMain.getFlowType().equals(ConstantFlowType.BUYING_MORE)){
  49. parkWaitHandleService.userHandle(HandleTypeEnum.HG, param, ShiroUtils.getUserId());
  50. }
  51. // 上交财政申请
  52. if(flowMain.getFlowType().equals(ConstantFlowType.FINANCE)){
  53. parkWaitHandleService.userHandle(HandleTypeEnum.SJCZ, param, ShiroUtils.getUserId());
  54. }
  55. }
  56. }catch (Exception e){
  57. log.error("撤回流程处理待办报错:",e);
  58. }
  59. String mypushUserKey = null;
  60. {//开始申请人撤回申请
  61. //先搜索目前有哪些人在审核中 ,获取key
  62. // select * from flow_main_push WHERE flow_main_push.flow_main_id=#{flowMainId} and STATUS=0
  63. FlowMainPushExample example = new FlowMainPushExample();
  64. example.createCriteria().andFlowMainIdEqualTo(flowMain.getId()).andStatusEqualTo(0);
  65. List<FlowMainPush> flowMainPushes = flowMainPushService.selectByExample(example);
  66. mypushUserKey = flowMainPushes.get(0).getPushUserKey();
  67. //1.关闭所有推送人数据信息表 ok
  68. {
  69. flowMainPushService.updateStatusThreeByFlowMainId(ShiroUtils.getUser().getId(), flowMain.getId());
  70. }
  71. //2.关闭主流程 ok
  72. {// 发起流程引擎操作 并结束该流程
  73. try {
  74. flowService.deleteInstance(flowMain.getFlowId(), "申请人撤回申请_结束流程");
  75. } catch (Exception e) {
  76. System.err.println("流程引擎异常");
  77. e.printStackTrace();
  78. // throw new RuntimeException(e);
  79. }
  80. }
  81. //3.关闭主流程表 ok
  82. //存入流程日志表的id
  83. String flowMainLogUuid = UUIDUtils.middleUUID();
  84. {
  85. FlowMain flowMain1 = new FlowMain();
  86. flowMain1.setId(flowMain.getId());
  87. flowMain1.setFlowStatus(4);//申请状态(1审批中,2,退回发起人,3,已结束,4已撤回)
  88. flowMain1.setLastMainLogId(flowMainLogUuid);
  89. flowMain1.setUpdatedAt(new Date());
  90. flowMain1.setUpdatedBy(ShiroUtils.getUser().getId());
  91. this.updateByPrimaryKeySelective(flowMain1);
  92. }
  93. //4 添加日志表
  94. FlowMainLog flowMainLog = new FlowMainLog();
  95. {//其表单对应的流转历史该节点审核结果显示为”发起人撤回”
  96. // flowMainLogUuid
  97. flowMainLog.setId(flowMainLogUuid);
  98. flowMainLog.setFlowMainId(flowMain.getId());
  99. flowMainLog.setFormId(flowMain.getFormId());
  100. flowMainLog.setAuditUser(ShiroUtils.getUser().getId());
  101. flowMainLog.setAuditContent(null);
  102. flowMainLog.setAuditResult(null);
  103. //审批类型(0流程开始状态还是1流程审核状态还是2流程结束状态还是3申请人暂停状态4申请人结束状态
  104. flowMainLog.setAuditType("4");
  105. flowMainLog.setFlowType(flowMain.getFlowType());
  106. flowMainLog.setFlowPost(ShiroUtils.getUser().getId());
  107. {// 需要工作流引擎的支持
  108. flowMainLog.setFlowId(flowMain.getFlowId());
  109. flowMainLog.setTaskId(null);
  110. flowMainLog.setNodeName("发起人撤回");
  111. flowMainLog.setPushUserKey(mypushUserKey);//发起人撤回时 当时的审核人所对应的角色
  112. }
  113. // 下一环节操作人(审核人/委托人/退回申请人),列表例如:,张三,李四,
  114. // 因为感觉用不到,暂时不放进去
  115. // flowMainLog.setNextPersons();
  116. flowMainLog.setUpMainLogId(flowMain.getLastMainLogId());
  117. flowMainLog.setCcList(null);
  118. flowMainLog.setCreatedAt(new Date());
  119. flowMainLog.setCreatedBy(ShiroUtils.getUser().getId());
  120. flowMainLog.setGroupId(ShiroUtils.getUser().getGroupId());
  121. flowMainLog.setStatus(0);
  122. flowMainLogService.insertWithoutId(flowMainLog);
  123. }
  124. }
  125. return AjaxResult.success();
  126. }