| src/main/java/com/zy/asrs/task/WrkAnalysisStationArrivalScanner.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/zy/core/plugin/GslProcess.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/zy/core/utils/StationOperateProcessUtils.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/main/java/com/zy/asrs/task/WrkAnalysisStationArrivalScanner.java
@@ -1,40 +1,15 @@ package com.zy.asrs.task; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.zy.asrs.entity.BasStation; import com.zy.asrs.entity.WrkMast; import com.zy.asrs.service.BasStationService; import com.zy.asrs.service.WrkAnalysisService; import com.zy.asrs.service.WrkMastService; import com.zy.core.News; import com.zy.core.cache.SlaveConnection; import com.zy.core.enums.SlaveType; import com.zy.core.enums.WrkStsType; import com.zy.core.model.protocol.StationProtocol; import com.zy.core.thread.StationThread; import com.zy.core.utils.StationOperateProcessUtils; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import java.util.Date; import java.util.List; import java.util.Map; @Component public class WrkAnalysisStationArrivalScanner { private final WrkMastService wrkMastService; private final BasStationService basStationService; private final WrkAnalysisService wrkAnalysisService; private final StationOperateProcessUtils stationOperateProcessUtils; public WrkAnalysisStationArrivalScanner(WrkMastService wrkMastService, BasStationService basStationService, WrkAnalysisService wrkAnalysisService, StationOperateProcessUtils stationOperateProcessUtils) { this.wrkMastService = wrkMastService; this.basStationService = basStationService; this.wrkAnalysisService = wrkAnalysisService; public WrkAnalysisStationArrivalScanner(StationOperateProcessUtils stationOperateProcessUtils) { this.stationOperateProcessUtils = stationOperateProcessUtils; } @@ -42,40 +17,5 @@ public void scanOutboundStationFlow() { stationOperateProcessUtils.stationOutExecuteFinish(); stationOperateProcessUtils.checkTaskToComplete(); } @Scheduled(fixedDelay = 1000L) public void scanInboundStationArrival() { List<WrkMast> wrkMasts = wrkMastService.list(new QueryWrapper<WrkMast>() .eq("io_type", 1) .eq("wrk_sts", WrkStsType.INBOUND_STATION_RUN.sts) .isNotNull("sta_no")); for (WrkMast wrkMast : wrkMasts) { if (wrkMast == null || wrkMast.getWrkNo() == null || wrkMast.getStaNo() == null) { continue; } BasStation basStation = basStationService.getOne(new QueryWrapper<BasStation>() .eq("station_id", wrkMast.getStaNo()) .last("limit 1")); if (basStation == null || basStation.getDeviceNo() == null) { continue; } StationThread stationThread = (StationThread) SlaveConnection.get(SlaveType.Devp, basStation.getDeviceNo()); if (stationThread == null) { continue; } Map<Integer, StationProtocol> statusMap = stationThread.getStatusMap(); StationProtocol stationProtocol = statusMap == null ? null : statusMap.get(basStation.getStationId()); boolean arrived = stationProtocol != null && wrkMast.getWrkNo().equals(stationProtocol.getTaskNo()) && stationProtocol.isLoading(); if (!arrived && !stationThread.hasRecentArrival(basStation.getStationId(), wrkMast.getWrkNo())) { continue; } boolean updated = wrkAnalysisService.completeInboundStationRun(wrkMast, new Date()); if (updated) { News.info("入库站点到达扫描命中,工作号={},目标站={}", wrkMast.getWrkNo(), wrkMast.getStaNo()); } } } } src/main/java/com/zy/core/plugin/GslProcess.java
@@ -73,6 +73,7 @@ submitCrnTask("crnIoExecuteFinish", DISPATCH_INTERVAL_MS, crnOperateUtils::crnIoExecuteFinish); submitStationTask("stationInExecute", DISPATCH_INTERVAL_MS, stationOperateProcessUtils::stationInExecute); submitStationTask("crnStationOutExecute", DISPATCH_INTERVAL_MS, stationOperateProcessUtils::crnStationOutExecute); submitStationTask("scanInboundStationArrival", DISPATCH_INTERVAL_MS, stationOperateProcessUtils::scanInboundStationArrival); submitStationTask("checkStationOutOrder", MAINTENANCE_INTERVAL_MS, stationOperateProcessUtils::checkStationOutOrder); submitStationTask("watchCircleStation", MAINTENANCE_INTERVAL_MS, stationOperateProcessUtils::watchCircleStation); submitStationTask("checkStationRunBlock", MAINTENANCE_INTERVAL_MS, stationOperateProcessUtils::checkStationRunBlock); src/main/java/com/zy/core/utils/StationOperateProcessUtils.java
@@ -1,10 +1,18 @@ package com.zy.core.utils; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.zy.asrs.entity.BasStation; import com.zy.asrs.entity.WrkMast; import com.zy.asrs.service.BasStationService; import com.zy.asrs.service.WrkAnalysisService; import com.zy.asrs.service.WrkMastService; import com.zy.core.News; import com.zy.core.cache.SlaveConnection; import com.zy.core.enums.SlaveType; import com.zy.core.enums.WrkIoType; import com.zy.core.enums.WrkStsType; import com.zy.core.model.protocol.StationProtocol; import com.zy.core.thread.StationThread; import com.zy.core.utils.station.StationDispatchLoadSupport; import com.zy.core.utils.station.StationOutboundDispatchProcessor; import com.zy.core.utils.station.StationRegularDispatchProcessor; @@ -16,12 +24,18 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import java.util.Date; import java.util.List; import java.util.Map; @Component public class StationOperateProcessUtils { @Autowired private WrkMastService wrkMastService; @Autowired private BasStationService basStationService; @Autowired private WrkAnalysisService wrkAnalysisService; @Autowired private StationRegularDispatchProcessor stationRegularDispatchProcessor; @Autowired @@ -51,6 +65,41 @@ stationRegularDispatchProcessor.stationOutExecuteFinish(); } // 检测入库任务是否到达站台并转为站台运行完成 public synchronized void scanInboundStationArrival() { List<WrkMast> wrkMasts = wrkMastService.list(new QueryWrapper<WrkMast>() .eq("io_type", 1) .eq("wrk_sts", WrkStsType.INBOUND_STATION_RUN.sts) .isNotNull("sta_no")); for (WrkMast wrkMast : wrkMasts) { if (wrkMast == null || wrkMast.getWrkNo() == null || wrkMast.getStaNo() == null) { continue; } BasStation basStation = basStationService.getOne(new QueryWrapper<BasStation>() .eq("station_id", wrkMast.getStaNo()) .last("limit 1")); if (basStation == null || basStation.getDeviceNo() == null) { continue; } StationThread stationThread = (StationThread) SlaveConnection.get(SlaveType.Devp, basStation.getDeviceNo()); if (stationThread == null) { continue; } Map<Integer, StationProtocol> statusMap = stationThread.getStatusMap(); StationProtocol stationProtocol = statusMap == null ? null : statusMap.get(basStation.getStationId()); boolean arrived = stationProtocol != null && wrkMast.getWrkNo().equals(stationProtocol.getTaskNo()) && stationProtocol.isLoading(); if (!arrived && !stationThread.hasRecentArrival(basStation.getStationId(), wrkMast.getWrkNo())) { continue; } boolean updated = wrkAnalysisService.completeInboundStationRun(wrkMast, new Date()); if (updated) { News.info("入库站点到达扫描命中,工作号={},目标站={}", wrkMast.getWrkNo(), wrkMast.getStaNo()); } } } // 检测任务转完成 public synchronized void checkTaskToComplete() { stationRegularDispatchProcessor.checkTaskToComplete();