新火炬后端单体项目初始化代码
houshuai
8 天以前 12f376e4468e856df7548bc0826256f698adf277
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
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
package org.jeecg.modules.quartz.job;
 
import org.jeecg.modules.andon.entity.AndonButtonConfig;
import org.jeecg.modules.andon.entity.AndonOrder;
import org.jeecg.modules.andon.entity.AndonResponseConfig;
import org.jeecg.modules.andon.service.IAndonButtonConfigService;
import org.jeecg.modules.andon.service.IAndonOrderService;
import org.jeecg.modules.andon.service.IAndonResponseConfigService;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
 
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.util.Date;
import java.util.List;
//org.jeecg.modules.quartz.job.AndonJob
public class AndonJob implements Job {
    private static final String ANDON_STATUS_DXY = "1";
    private static final String ANDON_STATUS_DCL = "2";
    private static final String ANDON_STATUS_YWC = "3";
    @Autowired
    @Lazy
    private IAndonOrderService andonOrderService;
    @Autowired
    @Lazy
    private IAndonButtonConfigService andonButtonConfigService;
    @Autowired
    @Lazy
    private IAndonResponseConfigService andonResponseConfigService;
 
    @Override
    public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
        LocalDateTime currentTime = LocalDateTime.now();
        List<AndonOrder> andonOrdersExceptYWC = andonOrderService.getAndonOrdersExceptYWC();
        for (AndonOrder andonOrder : andonOrdersExceptYWC) {
            AndonResponseConfig andonResponseConfig = andonResponseConfigService.getAndonResponseConfigByFactoryIdAndButtonId(andonOrder.getFactoryId(), andonOrder.getButtonId());
            AndonButtonConfig andonButtonConfig = andonButtonConfigService.getAndonButtonById(andonOrder.getButtonId());
            System.out.println("andonOrder----"+andonOrder.getId()+"----andonResponseConfig----"+andonResponseConfig.getId()+"-----"+"andonButtonConfig----"+andonButtonConfig.getId());
            levelUpgradeOne(andonOrder, andonResponseConfig, andonButtonConfig, currentTime);
            levelUpgradeTwo(andonOrder, andonResponseConfig, andonButtonConfig, currentTime);
            levelProcessOne(andonOrder, andonResponseConfig, andonButtonConfig, currentTime);
            levelProcessTwo(andonOrder, andonResponseConfig, andonButtonConfig, currentTime);
        }
    }
 
    /**
     * 判断二级响应升级
     * 如果安灯工单响应时间超过一级响应时长还为空,则说明未响应
     */
    public void levelUpgradeOne(AndonOrder andonOrder, AndonResponseConfig andonResponseConfig, AndonButtonConfig andonButtonConfig, LocalDateTime currentTime) {
        if (andonOrder.getAndonLevel().equals("1") && andonOrder.getOrderStatus().equals(ANDON_STATUS_DXY)) {
            //安灯时间
            Date operateTime = andonOrder.getOperateTime();
            //响应时长 (分钟)
            Integer upgradeResponseDuration = andonButtonConfig.getUpgradeResponseDuration();
            LocalDateTime timeoutTime = operateTime.toInstant()
                    .atZone(ZoneId.systemDefault())
                    .toLocalDateTime()
                    .plusMinutes(upgradeResponseDuration);
            if (currentTime.isAfter(timeoutTime)) {
                //响应时间超过一级响应时长,升级一次,并提醒(模拟发送飞书消息)
                andonOrder.setAndonLevel("2");
                andonOrderService.saveOrUpdate(andonOrder);
                //TODO 发送飞书消息(这块为模拟需要有接口才能开发)
                System.out.println("初始响应人"+andonResponseConfig.getFirsterResponder()+"未响应!"+"安灯工单:" + andonOrder.getId() + "已升级二级响应,并发消息给二级响应人"+andonResponseConfig.getSecondResponder());
            }
        }
    }
 
    /**
     * 判断三级响应升级
     * 安灯工单响应时间超过二级响应时长还为空,则说明未响应
     */
    public void levelUpgradeTwo(AndonOrder andonOrder, AndonResponseConfig andonResponseConfig, AndonButtonConfig andonButtonConfig, LocalDateTime currentTime) {
        if (andonOrder.getAndonLevel().equals("2") && andonOrder.getOrderStatus().equals(ANDON_STATUS_DXY)) {
            Date operateTime = andonOrder.getOperateTime();
            Integer upgradeResponseDuration = andonButtonConfig.getSecondUpgradeResponseDuration();
            LocalDateTime timeoutTime = operateTime.toInstant()
                    .atZone(ZoneId.systemDefault())
                    .toLocalDateTime()
                    .plusMinutes(upgradeResponseDuration);
            if (currentTime.isAfter(timeoutTime)) {
                //响应时间超过一级响应时长,升级一次,并提醒(模拟发送飞书消息)
                andonOrder.setAndonLevel("3");
                andonOrderService.saveOrUpdate(andonOrder);
                //TODO 发送飞书消息(这块为模拟需要有接口才能开发)
                System.out.println("二级响应人"+andonResponseConfig.getSecondResponder()+"未响应!"+"安灯工单:" + andonOrder.getId() + "已升级三级响应,并发消息给三级响应人"+andonResponseConfig.getThirdResponder());
            }
        }
    }
    /**
     * 判断二级处理升级
     * 安灯工单响应时间超过二级处理时长还为空,则说明未响应
     */
    public void levelProcessOne(AndonOrder andonOrder, AndonResponseConfig andonResponseConfig, AndonButtonConfig andonButtonConfig, LocalDateTime currentTime){
        if (andonOrder.getAndonLevel().equals("1") && andonOrder.getOrderStatus().equals(ANDON_STATUS_DCL)) {
            Date responseTime = andonOrder.getResponseTime();
            Integer upgradeProcessDuration = andonButtonConfig.getUpgradeProcessDuration();
            LocalDateTime timeoutTime = responseTime.toInstant()
                    .atZone(ZoneId.systemDefault())
                    .toLocalDateTime()
                    .plusMinutes(upgradeProcessDuration);
            if (currentTime.isAfter(timeoutTime)) {
                //处理时间超过一级处理时长,升级一次,并提醒(模拟发送飞书消息)
                andonOrder.setAndonLevel("2");
                andonOrderService.saveOrUpdate(andonOrder);
                //TODO 发送飞书消息(这块为模拟需要有接口才能开发)
                System.out.println("一级处理人"+andonResponseConfig.getFirsterResponder()+"未处理!"+"安灯工单:" + andonOrder.getId() + "已升级二级处理,并发消息给二级处理人"+andonResponseConfig.getSecondResponder());
            }
        }
    }
    /**
     * 判断三级处理升级
     * 安灯工单响应时间超过二级处理时长还为空,则说明未响应
     */
    public void levelProcessTwo(AndonOrder andonOrder, AndonResponseConfig andonResponseConfig, AndonButtonConfig andonButtonConfig, LocalDateTime currentTime){
        if (andonOrder.getAndonLevel().equals("2") && andonOrder.getOrderStatus().equals(ANDON_STATUS_DCL)) {
            Date responseTime = andonOrder.getResponseTime();
            Integer secondUpgradeProcessDuration = andonButtonConfig.getSecondUpgradeProcessDuration();
            LocalDateTime timeoutTime = responseTime.toInstant()
                    .atZone(ZoneId.systemDefault())
                    .toLocalDateTime()
                    .plusMinutes(secondUpgradeProcessDuration);
            if (currentTime.isAfter(timeoutTime)) {
                //处理时间超过一级处理时长,升级一次,并提醒(模拟发送飞书消息)
                andonOrder.setAndonLevel("3");
                andonOrderService.saveOrUpdate(andonOrder);
                //TODO 发送飞书消息(这块为模拟需要有接口才能开发)
                System.out.println("二级处理人"+andonResponseConfig.getSecondResponder()+"未处理!"+"安灯工单:" + andonOrder.getId() + "已升级三级处理,并发消息给三级处理人"+andonResponseConfig.getThirdResponder());
            }
        }
    }
 
}