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
107
108
109
110
111
112
113
114
115
116
117
118
 
package jnpf.flowable.job;
 
import cn.hutool.core.collection.CollectionUtil;
import jnpf.flowable.model.time.FlowTimeModel;
import jnpf.flowable.util.TimeUtil;
import jnpf.util.JsonUtil;
import jnpf.util.RedisUtil;
import jnpf.util.StringUtil;
import lombok.extern.slf4j.Slf4j;
 
import java.util.ArrayList;
import java.util.List;
 
 
/**
 * @author JNPF开发平台组
 * @version V3.3.0 flowable
 * @copyright 引迈信息技术有限公司
 * @date 2022/6/15 17:37
 */
@Slf4j
public class FlowJobUtil {
    /**
     * 自动审批
     */
    public static final String OPERATOR_REDIS_KEY = "flowable_operator";
 
    /**
     * 自动转审
     */
    public static final String OPERATOR_TRANSFER = "flowable_transfer";
 
    /**
     * 超时
     */
    public static final String TIME_REDIS_KEY = "flowable_timeModel";
 
    /**
     * 提醒
     */
    public static final String NOTICE_REDIS_KEY = "flowable_notice";
 
    public static FlowTimeModel getModel(FlowTimeModel model, RedisUtil redisUtil) {
        String id = model.getOperatorId();
        String hashValues = redisUtil.getHashValues(model.getOverTime() ? TIME_REDIS_KEY : NOTICE_REDIS_KEY, id);
        FlowTimeModel integrateModel = StringUtil.isNotEmpty(hashValues) ? JsonUtil.getJsonToBean(hashValues, FlowTimeModel.class) : null;
        return integrateModel;
    }
 
    public static void insertModel(FlowTimeModel model, RedisUtil redisUtil) {
        String integrateId = model.getOperatorId();
        redisUtil.insertHash(model.getOverTime() ? TIME_REDIS_KEY : NOTICE_REDIS_KEY, integrateId, JsonUtil.getObjectToString(model));
    }
 
    public static void removeModel(FlowTimeModel model, RedisUtil redisUtil) {
        redisUtil.removeHash(model.getOverTime() ? TIME_REDIS_KEY : NOTICE_REDIS_KEY, model.getOperatorId());
    }
 
    public static void insertOperator(FlowTimeModel model, RedisUtil redisUtil) {
        redisUtil.insertHash(OPERATOR_REDIS_KEY, model.getOperatorId(), JsonUtil.getObjectToString(model));
    }
 
    public static void remove(FlowTimeModel model, RedisUtil redisUtil) {
        redisUtil.removeHash(OPERATOR_TRANSFER, model.getOperatorId());
        redisUtil.removeHash(OPERATOR_REDIS_KEY, model.getOperatorId());
        redisUtil.removeHash(TIME_REDIS_KEY, model.getOperatorId());
        redisUtil.removeHash(NOTICE_REDIS_KEY, model.getOperatorId());
    }
 
    public static void removeTransfer(FlowTimeModel model, RedisUtil redisUtil) {
        redisUtil.removeHash(OPERATOR_TRANSFER, model.getOperatorId());
    }
 
    public static List<FlowTimeModel> getOperator(RedisUtil redisUtil) {
        List<FlowTimeModel> list = new ArrayList<>();
        List<String> hashValues = redisUtil.getHashValues(OPERATOR_REDIS_KEY);
        if (CollectionUtil.isNotEmpty(hashValues)) {
            for (String hashValue : hashValues) {
                FlowTimeModel integrateModel = StringUtil.isNotEmpty(hashValue) ? JsonUtil.getJsonToBean(hashValue, FlowTimeModel.class) : null;
                list.add(integrateModel);
            }
        }
        return list;
    }
 
    public static void insertTransfer(FlowTimeModel model, RedisUtil redisUtil) {
        redisUtil.insertHash(OPERATOR_TRANSFER, model.getOperatorId(), JsonUtil.getObjectToString(model));
    }
 
    public static List<FlowTimeModel> getTransfer(RedisUtil redisUtil) {
        List<FlowTimeModel> list = new ArrayList<>();
        List<String> hashValues = redisUtil.getHashValues(OPERATOR_TRANSFER);
        if (CollectionUtil.isNotEmpty(hashValues)) {
            for (String hashValue : hashValues) {
                FlowTimeModel integrateModel = StringUtil.isNotEmpty(hashValue) ? JsonUtil.getJsonToBean(hashValue, FlowTimeModel.class) : null;
                list.add(integrateModel);
            }
        }
        return list;
    }
 
    public static void deleteByOperatorId(String operatorId, RedisUtil redisUtil) {
        FlowTimeModel timeModel = new FlowTimeModel();
        timeModel.setOperatorId(operatorId);
        FlowTimeModel flowTimeModel = FlowJobUtil.getModel(timeModel, redisUtil);
        if (null != flowTimeModel) {
            TimeUtil.deleteJob(flowTimeModel.getId());
            FlowJobUtil.remove(flowTimeModel, redisUtil);
        }
        timeModel.setOverTime(true);
        FlowTimeModel overTimeModel = FlowJobUtil.getModel(timeModel, redisUtil);
        if (null != overTimeModel) {
            TimeUtil.deleteJob(overTimeModel.getId());
            FlowJobUtil.remove(overTimeModel, redisUtil);
        }
    }
}