SchedulerTask.java
4.42 KB
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
package com.huaheng.control.management.task;
import java.util.Map;
import javax.annotation.Resource;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import com.huaheng.control.management.dto.EquipmentStatus;
import com.huaheng.control.management.dto.EquipmentStatusEnum;
import com.huaheng.control.management.dto.Task;
import com.huaheng.control.management.dto.TaskStatusEnum;
import com.huaheng.control.management.service.ApiService;
import com.huaheng.control.management.utils.HuahengRedisUtils;
import com.huaheng.control.management.utils.constant.CommonConstant;
import cn.hutool.core.date.DateUnit;
import cn.hutool.core.date.DateUtil;
import lombok.extern.slf4j.Slf4j;
@Slf4j
@Component
public class SchedulerTask {
@Resource
private HuahengRedisUtils huahengRedisUtils;
@Resource
private ApiService apiService;
/**
* 检查WMS系统状态
*/
@Scheduled(cron = "0 * * * * ?")
public void checkWmsEquipmentStatus() {
try {
EquipmentStatus equipmentStatus = huahengRedisUtils.getEquipmentStatus(CommonConstant.EQUIPMENT_ID_WMS);
// 如果WMS设备的运行状态是RUNNING
if (equipmentStatus == null) {
equipmentStatus = new EquipmentStatus();
equipmentStatus.setEquipmentId(CommonConstant.EQUIPMENT_ID_WMS);
equipmentStatus.setEquipmentStatus(EquipmentStatusEnum.FREE.getKey());
apiService.saveEquipmentStatus(equipmentStatus);
}
if (equipmentStatus.getEquipmentStatus().equals(EquipmentStatusEnum.RUNNING.getKey())) {
// 时间戳与当前时间差值超过10分钟
if (DateUtil.between(DateUtil.date(equipmentStatus.getTimestamp()), DateUtil.date(), DateUnit.MINUTE) > 10) {
Map<String, Map<String, Task>> taskDetails =
huahengRedisUtils.getTaskDetailsByStatus(huahengRedisUtils.getAllTaskKeys(), TaskStatusEnum.WMS_SEND_TO_WCS.getKey());
if (taskDetails.isEmpty()) {
equipmentStatus.setEquipmentStatus(EquipmentStatusEnum.FREE.getKey());
apiService.saveEquipmentStatus(equipmentStatus);
} else {
equipmentStatus.setEquipmentStatus(EquipmentStatusEnum.OFFLINE.getKey());
apiService.saveEquipmentStatus(equipmentStatus);
}
}
}
log.info("[检查WMS系统状态] 任务完成");
} catch (Exception e) {
log.error("[检查WMS系统状态] 任务异常", e);
}
}
/**
* 检查WCS系统状态
*/
@Scheduled(cron = "10 * * * * ?")
public void checkWcsEquipmentStatus() {
try {
EquipmentStatus equipmentStatus = huahengRedisUtils.getEquipmentStatus(CommonConstant.EQUIPMENT_ID_WCS);
// 如果WMS设备的运行状态是RUNNING
if (equipmentStatus == null) {
equipmentStatus = new EquipmentStatus();
equipmentStatus.setEquipmentId(CommonConstant.EQUIPMENT_ID_WCS);
equipmentStatus.setEquipmentStatus(EquipmentStatusEnum.FREE.getKey());
apiService.saveEquipmentStatus(equipmentStatus);
}
if (equipmentStatus.getEquipmentStatus().equals(EquipmentStatusEnum.RUNNING.getKey())) {
// 时间戳与当前时间差值超过10分钟
if (DateUtil.between(DateUtil.date(equipmentStatus.getTimestamp()), DateUtil.date(), DateUnit.MINUTE) > 10) {
Map<String, Map<String, Task>> taskDetails =
huahengRedisUtils.getTaskDetailsByStatus(huahengRedisUtils.getAllTaskKeys(), TaskStatusEnum.WCS_RECEIVE_TASK.getKey());
if (taskDetails.isEmpty()) {
equipmentStatus.setEquipmentStatus(EquipmentStatusEnum.FREE.getKey());
apiService.saveEquipmentStatus(equipmentStatus);
} else {
equipmentStatus.setEquipmentStatus(EquipmentStatusEnum.OFFLINE.getKey());
apiService.saveEquipmentStatus(equipmentStatus);
}
}
}
log.info("[检查WCS系统状态] 任务完成");
} catch (Exception e) {
log.error("[检查WCS系统状态] 任务异常", e);
}
}
}