From 34981c30a78e8bbd7791131059a9210f9928b62c Mon Sep 17 00:00:00 2001
From: 刘光辉 <347230014@qq.com>
Date: 星期四, 17 九月 2026 09:24:09 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master' into master
---
jnpf-flowable/jnpf-flowable-biz/src/main/java/jnpf/flowable/util/OverTimeUtil.java | 106 +++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 106 insertions(+), 0 deletions(-)
diff --git a/jnpf-flowable/jnpf-flowable-biz/src/main/java/jnpf/flowable/util/OverTimeUtil.java b/jnpf-flowable/jnpf-flowable-biz/src/main/java/jnpf/flowable/util/OverTimeUtil.java
new file mode 100644
index 0000000..674e1f8
--- /dev/null
+++ b/jnpf-flowable/jnpf-flowable-biz/src/main/java/jnpf/flowable/util/OverTimeUtil.java
@@ -0,0 +1,106 @@
+package jnpf.flowable.util;
+
+import cn.hutool.core.util.ObjectUtil;
+import jnpf.constant.MsgCode;
+import jnpf.exception.WorkFlowException;
+import jnpf.flowable.entity.OperatorEntity;
+import jnpf.flowable.entity.TaskEntity;
+import jnpf.flowable.entity.TemplateEntity;
+import jnpf.flowable.enums.OperatorStateEnum;
+import jnpf.flowable.enums.TemplateStatueEnum;
+import jnpf.flowable.mapper.OperatorMapper;
+import jnpf.flowable.mapper.TaskMapper;
+import jnpf.flowable.mapper.TemplateMapper;
+import jnpf.flowable.model.message.FlowMsgModel;
+import jnpf.flowable.model.time.FlowTimeModel;
+import jnpf.flowable.model.util.FlowNature;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Component;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @author 锛欽NPF寮�鍙戝钩鍙扮粍
+ * @version: V3.1.0
+ * @copyright 寮曡繄淇℃伅鎶�鏈湁闄愬叕鍙�
+ * @date 锛�2024/5/23 涓婂崍10:33
+ */
+@Component
+@RequiredArgsConstructor
+public class OverTimeUtil {
+
+ private final MsgUtil msgUtil;
+
+ private final FlowUtil flowUtil;
+
+ private final TaskMapper taskMapper;
+
+ private final OperatorMapper operatorMapper;
+
+ private final TemplateMapper templateMapper;
+
+ public void overMsg(FlowTimeModel flowTimeModel) throws WorkFlowException {
+ TaskEntity task = taskMapper.getInfo(flowTimeModel.getTaskId());
+ //鏆傚仠锛屾槸璺宠繃
+ if (task == null) {
+ throw new WorkFlowException(MsgCode.FA001.get());
+ }
+ boolean isSuccess = false;
+ try {
+ flowUtil.isSuspend(task);
+ } catch (Exception e) {
+ isSuccess = true;
+ }
+ if (!isSuccess) {
+ // 鍒ゆ柇鏄惁涓嬫灦
+ TemplateEntity template = templateMapper.selectById(task.getTemplateId());
+ if (null != template && !ObjectUtil.equals(template.getStatus(), TemplateStatueEnum.UP.getCode())) {
+ isSuccess = true;
+ }
+ }
+ if (isSuccess) {
+ if (Boolean.TRUE.equals(flowTimeModel.getOverTime())) {
+ flowTimeModel.setNum(flowTimeModel.getNum() + 1);
+ flowTimeModel.setTransferNum(flowTimeModel.getTransferNum() + 1);
+ }
+ flowTimeModel.setIsPause(true);
+ return;
+ }
+ flowUtil.isCancel(task);
+ OperatorEntity operator = operatorMapper.selectById(flowTimeModel.getOperatorId());
+ if (operator == null || ObjectUtil.equals(operator.getStatus(), OperatorStateEnum.FUTILITY.getCode())) {
+ throw new WorkFlowException(MsgCode.FA001.get());
+ }
+ if (operator.getHandleStatus() != null) {
+ throw new WorkFlowException(MsgCode.WF031.get());
+ }
+ // complete涓�1鐨勭粡鍔烇紝涓嶆墽琛岋紙鍔犵銆佹寚娲俱�佽浆鍔炪�侀┏鍥炪�佹挙鍥炪�佸彉鏇淬�佸娲绘祦绋嬶紝璇ヨ妭鐐圭殑闄愭椂鎻愰啋瑙勫垯閲嶆柊鐢熸晥锛�
+ if (operator.getCompletion().equals(FlowNature.ACTION)) {
+ throw new WorkFlowException(MsgCode.FA001.get());
+ }
+ if (Boolean.TRUE.equals(flowTimeModel.getOverTime()) && operator.getDuedate() == null) {
+ operator.setDuedate(new Date());
+ operatorMapper.updateById(operator);
+ }
+
+ List<OperatorEntity> list = new ArrayList<>();
+ list.add(operator);
+ FlowMsgModel msgModel = new FlowMsgModel();
+ msgModel.setUserInfo(flowTimeModel.getFlowModel().getUserInfo());
+ msgModel.setTaskEntity(task);
+ msgModel.setNodeList(flowTimeModel.getFlowModel().getNodeEntityList());
+ msgModel.setNodeCode(operator.getNodeCode());
+ msgModel.setOperatorList(list);
+ msgModel.setNotice(!flowTimeModel.getOverTime());
+ msgModel.setOvertime(flowTimeModel.getOverTime());
+ msgModel.setWait(false);
+ msgUtil.message(msgModel);
+ if (Boolean.TRUE.equals(flowTimeModel.getOverTime())) {
+ flowTimeModel.setNum(flowTimeModel.getNum() + 1);
+ flowTimeModel.setTransferNum(flowTimeModel.getTransferNum() + 1);
+ }
+ }
+
+}
--
Gitblit v1.8.0