#
Junjie
8 小时以前 7c8b32a58dd812d1400b21cddbf0ea36832a6d0d
#
1个文件已添加
107 ■■■■■ 已修改文件
src/main/java/com/zy/asrs/controller/TempStationBufferCheckController.java 107 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/controller/TempStationBufferCheckController.java
New file
@@ -0,0 +1,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;
    }
}