ny
23 小时以前 b6f169fe43a2b13f351aefc152374fc7f0bc8cb7
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
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 org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
 
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
 
/**
 * @author :JNPF开发平台组
 * @version: V3.1.0
 * @copyright 引迈信息技术有限公司
 * @date :2024/5/23 上午10:33
 */
@Component
public class OverTimeUtil {
    @Autowired
    private MsgUtil msgUtil;
    @Autowired
    private OperatorUtil operatorUtil;
    @Autowired
    private TaskMapper taskMapper;
    @Autowired
    private OperatorMapper operatorMapper;
    @Autowired
    private 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 {
            operatorUtil.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 (flowTimeModel.getOverTime()) {
                flowTimeModel.setNum(flowTimeModel.getNum() + 1);
                flowTimeModel.setTransferNum(flowTimeModel.getTransferNum() + 1);
            }
            flowTimeModel.setIsPause(true);
            return;
        }
        operatorUtil.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 (flowTimeModel.getOverTime()) {
            if (operator.getDuedate() == null) {
                operator.setDuedate(new Date());
                operatorMapper.updateById(operator);
            }
        }
        List<OperatorEntity> list = new ArrayList<>();
        list.add(operator);
        FlowMsgModel msgModel = new FlowMsgModel();
        msgModel.setFlowModel(flowTimeModel.getFlowModel());
        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 (flowTimeModel.getOverTime()) {
            flowTimeModel.setNum(flowTimeModel.getNum() + 1);
            flowTimeModel.setTransferNum(flowTimeModel.getTransferNum() + 1);
        }
    }
 
}