#
Junjie
8 小时以前 7c8b32a58dd812d1400b21cddbf0ea36832a6d0d
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
package com.zy.asrs.controller;
 
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.core.common.R;
import com.zy.asrs.entity.DeviceConfig;
import com.zy.asrs.service.DeviceConfigService;
import com.zy.core.cache.SlaveConnection;
import com.zy.core.enums.SlaveType;
import com.zy.core.model.protocol.StationProtocol;
import com.zy.core.model.protocol.StationTaskBufferItem;
import com.zy.core.thread.StationThread;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
 
import java.util.ArrayList;
import java.util.Date;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
 
@RestController
@RequestMapping("/openapi/temp")
public class TempStationBufferCheckController {
 
    @Autowired
    private DeviceConfigService deviceConfigService;
 
    @GetMapping("/stationEmptyAutoBufferCheck")
    public R stationEmptyAutoBufferCheck() {
        List<Map<String, Object>> itemList = new ArrayList<>();
 
        List<DeviceConfig> stationDeviceList = deviceConfigService.list(new QueryWrapper<DeviceConfig>()
                .eq("device_type", String.valueOf(SlaveType.Devp)));
        for (DeviceConfig deviceConfig : stationDeviceList) {
            StationThread stationThread = (StationThread) SlaveConnection.get(SlaveType.Devp, deviceConfig.getDeviceNo());
            if (stationThread == null) {
                continue;
            }
 
            List<StationProtocol> statusList = stationThread.getStatus();
            if (statusList == null || statusList.isEmpty()) {
                continue;
            }
 
            for (StationProtocol stationProtocol : statusList) {
                if (stationProtocol == null || !stationProtocol.isAutoing() || stationProtocol.isLoading()) {
                    continue;
                }
 
                List<Map<String, Object>> bufferItemList = buildNonEmptyTaskBufferItemList(stationProtocol.getTaskBufferItems());
                if (bufferItemList.isEmpty()) {
                    continue;
                }
 
                Map<String, Object> item = new LinkedHashMap<>();
                item.put("deviceNo", deviceConfig.getDeviceNo());
                item.put("stationId", stationProtocol.getStationId());
                item.put("taskNo", stationProtocol.getTaskNo());
                item.put("targetStaNo", stationProtocol.getTargetStaNo());
                item.put("taskWriteIdx", stationProtocol.getTaskWriteIdx());
                item.put("systemWarning", stationProtocol.getSystemWarning());
                item.put("taskBufferItems", bufferItemList);
                itemList.add(item);
            }
        }
 
        Map<String, Object> result = new LinkedHashMap<>();
        result.put("scanTime", new Date());
        result.put("total", itemList.size());
        result.put("items", itemList);
        return R.ok().add(result);
    }
 
    private List<Map<String, Object>> buildNonEmptyTaskBufferItemList(List<StationTaskBufferItem> taskBufferItems) {
        List<Map<String, Object>> result = new ArrayList<>();
        if (taskBufferItems == null || taskBufferItems.isEmpty()) {
            return result;
        }
 
        for (StationTaskBufferItem taskBufferItem : taskBufferItems) {
            if (!hasTaskBufferValue(taskBufferItem)) {
                continue;
            }
            Map<String, Object> item = new LinkedHashMap<>();
            item.put("slotIdx", taskBufferItem.getSlotIdx());
            item.put("taskNo", taskBufferItem.getTaskNo());
            item.put("targetStaNo", taskBufferItem.getTargetStaNo());
            result.add(item);
        }
        return result;
    }
 
    private boolean hasTaskBufferValue(StationTaskBufferItem taskBufferItem) {
        if (taskBufferItem == null) {
            return false;
        }
        Integer taskNo = taskBufferItem.getTaskNo();
        if (taskNo != null && taskNo > 0) {
            return true;
        }
        Integer targetStaNo = taskBufferItem.getTargetStaNo();
        return targetStaNo != null && targetStaNo > 0;
    }
}