OverTimeUtil.java 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. package jnpf.flowable.util;
  2. import cn.hutool.core.util.ObjectUtil;
  3. import jnpf.constant.MsgCode;
  4. import jnpf.exception.WorkFlowException;
  5. import jnpf.flowable.entity.OperatorEntity;
  6. import jnpf.flowable.entity.TaskEntity;
  7. import jnpf.flowable.entity.TemplateEntity;
  8. import jnpf.flowable.enums.OperatorStateEnum;
  9. import jnpf.flowable.enums.TemplateStatueEnum;
  10. import jnpf.flowable.model.message.FlowMsgModel;
  11. import jnpf.flowable.model.time.FlowTimeModel;
  12. import jnpf.flowable.model.util.FlowNature;
  13. import jnpf.flowable.service.OperatorService;
  14. import jnpf.flowable.service.TaskService;
  15. import jnpf.flowable.service.TemplateService;
  16. import org.springframework.beans.factory.annotation.Autowired;
  17. import org.springframework.stereotype.Component;
  18. import java.util.ArrayList;
  19. import java.util.Date;
  20. import java.util.List;
  21. /**
  22. * @author :JNPF开发平台组
  23. * @version: V3.1.0
  24. * @copyright 引迈信息技术有限公司
  25. * @date :2024/5/23 上午10:33
  26. */
  27. @Component
  28. public class OverTimeUtil {
  29. @Autowired
  30. private MsgUtil msgUtil;
  31. @Autowired
  32. private TaskUtil taskUtil;
  33. @Autowired
  34. private TaskService taskService;
  35. @Autowired
  36. private OperatorService operatorService;
  37. @Autowired
  38. private TemplateService templateService;
  39. public void overMsg(FlowTimeModel flowTimeModel) throws WorkFlowException {
  40. TaskEntity task = taskService.getInfo(flowTimeModel.getTaskId());
  41. //暂停,是跳过
  42. if (task == null) {
  43. throw new WorkFlowException(MsgCode.FA001.get());
  44. }
  45. boolean isSuccess = false;
  46. try {
  47. taskUtil.isSuspend(task);
  48. } catch (Exception e) {
  49. isSuccess = true;
  50. }
  51. if (!isSuccess) {
  52. // 判断是否下架
  53. TemplateEntity template = templateService.getById(task.getTemplateId());
  54. if (null != template && !ObjectUtil.equals(template.getStatus(), TemplateStatueEnum.up.getCode())) {
  55. isSuccess = true;
  56. }
  57. }
  58. if (isSuccess) {
  59. if (flowTimeModel.getOverTime()) {
  60. flowTimeModel.setNum(flowTimeModel.getNum() + 1);
  61. flowTimeModel.setTransferNum(flowTimeModel.getTransferNum() + 1);
  62. }
  63. flowTimeModel.setIsPause(true);
  64. return;
  65. }
  66. taskUtil.isCancel(task);
  67. OperatorEntity operator = operatorService.getById(flowTimeModel.getOperatorId());
  68. if (operator == null || ObjectUtil.equals(operator.getStatus(), OperatorStateEnum.Futility.getCode())) {
  69. throw new WorkFlowException(MsgCode.FA001.get());
  70. }
  71. if (operator.getHandleStatus() != null) {
  72. throw new WorkFlowException(MsgCode.WF031.get());
  73. }
  74. // complete为1的经办,不执行(加签、指派、转办、驳回、撤回、变更、复活流程,该节点的限时提醒规则重新生效)
  75. if (operator.getCompletion().equals(FlowNature.Action)) {
  76. throw new WorkFlowException(MsgCode.FA001.get());
  77. }
  78. if (flowTimeModel.getOverTime()) {
  79. if (operator.getDuedate() == null) {
  80. operator.setDuedate(new Date());
  81. operatorService.updateById(operator);
  82. }
  83. }
  84. List<OperatorEntity> list = new ArrayList<>();
  85. list.add(operator);
  86. FlowMsgModel msgModel = new FlowMsgModel();
  87. msgModel.setFlowModel(flowTimeModel.getFlowModel());
  88. msgModel.setTaskEntity(task);
  89. msgModel.setNodeList(flowTimeModel.getFlowModel().getNodeEntityList());
  90. msgModel.setNodeCode(operator.getNodeCode());
  91. msgModel.setOperatorList(list);
  92. msgModel.setNotice(!flowTimeModel.getOverTime());
  93. msgModel.setOvertime(flowTimeModel.getOverTime());
  94. msgModel.setWait(false);
  95. msgUtil.message(msgModel);
  96. if (flowTimeModel.getOverTime()) {
  97. flowTimeModel.setNum(flowTimeModel.getNum() + 1);
  98. flowTimeModel.setTransferNum(flowTimeModel.getTransferNum() + 1);
  99. }
  100. }
  101. }