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> itemList = new ArrayList<>(); List stationDeviceList = deviceConfigService.list(new QueryWrapper() .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 statusList = stationThread.getStatus(); if (statusList == null || statusList.isEmpty()) { continue; } for (StationProtocol stationProtocol : statusList) { if (stationProtocol == null || !stationProtocol.isAutoing() || stationProtocol.isLoading()) { continue; } List> bufferItemList = buildNonEmptyTaskBufferItemList(stationProtocol.getTaskBufferItems()); if (bufferItemList.isEmpty()) { continue; } Map 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 result = new LinkedHashMap<>(); result.put("scanTime", new Date()); result.put("total", itemList.size()); result.put("items", itemList); return R.ok().add(result); } private List> buildNonEmptyTaskBufferItemList(List taskBufferItems) { List> result = new ArrayList<>(); if (taskBufferItems == null || taskBufferItems.isEmpty()) { return result; } for (StationTaskBufferItem taskBufferItem : taskBufferItems) { if (!hasTaskBufferValue(taskBufferItem)) { continue; } Map 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; } }