From 2ae8d909b139ffecdad54e6d56d4576e38a79ebf Mon Sep 17 00:00:00 2001
From: zwl <1051256694@qq.com>
Date: 星期二, 17 三月 2026 16:12:22 +0800
Subject: [PATCH] #
---
src/main/java/com/zy/core/plugin/NormalProcess.java | 114 +++++++++++++++++++++++++++++++++++++++++++++++++++++---
1 files changed, 107 insertions(+), 7 deletions(-)
diff --git a/src/main/java/com/zy/core/plugin/NormalProcess.java b/src/main/java/com/zy/core/plugin/NormalProcess.java
index 0306392..5973403 100644
--- a/src/main/java/com/zy/core/plugin/NormalProcess.java
+++ b/src/main/java/com/zy/core/plugin/NormalProcess.java
@@ -4,9 +4,12 @@
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.core.common.Cools;
+import com.core.common.SpringUtils;
import com.zy.asrs.domain.param.CreateInTaskParam;
+import com.zy.asrs.entity.BasCrnp;
import com.zy.asrs.entity.BasDevp;
import com.zy.asrs.entity.WrkMast;
+import com.zy.asrs.service.BasCrnpService;
import com.zy.asrs.service.BasDevpService;
import com.zy.asrs.service.WrkMastService;
import com.zy.common.model.StartupDto;
@@ -15,15 +18,14 @@
import com.zy.core.News;
import com.zy.core.cache.MessageQueue;
import com.zy.core.cache.SlaveConnection;
-import com.zy.core.enums.RedisKeyType;
-import com.zy.core.enums.SlaveType;
-import com.zy.core.enums.StationCommandType;
-import com.zy.core.enums.WrkIoType;
+import com.zy.core.enums.*;
import com.zy.core.model.StationObjModel;
import com.zy.core.model.Task;
import com.zy.core.model.command.StationCommand;
+import com.zy.core.model.protocol.CrnProtocol;
import com.zy.core.model.protocol.StationProtocol;
import com.zy.core.plugin.api.MainProcessPluginApi;
+import com.zy.core.thread.CrnThread;
import com.zy.core.thread.StationThread;
import com.zy.core.utils.CrnOperateProcessUtils;
import com.zy.core.utils.StationOperateProcessUtils;
@@ -32,9 +34,7 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
@Slf4j
@Component
@@ -54,6 +54,8 @@
private RedisUtil redisUtil;
@Autowired
private WmsOperateUtils wmsOperateUtils;
+ @Autowired
+ private BasCrnpService basCrnpService;
@Override
public void run() {
@@ -77,6 +79,11 @@
//妫�娴嬭緭閫佺珯鐐规槸鍚﹁繍琛屽牭濉�
stationOperateProcessUtils.checkStationRunBlock();
+
+ //涓婃姤鍫嗗灈鏈篋B110鐘舵�佹暟鎹�
+ reportDb110();
+ //璺ㄥ尯鍏ュ簱浠诲姟涓嬪彂锛屼慨鏀圭珯鐐逛换鍔″彿涓哄叆搴撲换鍔″彿
+ taskToNewAreaInTaskStationSend();
}
/**
@@ -273,4 +280,97 @@
}
}
+ //涓婃姤鍫嗗灈鏈篋B110鐘舵�佹暟鎹�
+ public synchronized void reportDb110() {
+ List<BasCrnp> basCrnps = basCrnpService.selectList(new EntityWrapper<>());
+ for (BasCrnp basCrnp : basCrnps) {
+ CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, basCrnp.getCrnNo());
+ if(crnThread == null){
+ continue;
+ }
+
+ CrnProtocol crnProtocol = crnThread.getStatus();
+ if(crnProtocol == null){
+ continue;
+ }
+
+ // 涓婃姤鍫嗗灈鏈篋B110鐘舵�佹暟鎹�
+ short[] db110Data = crnProtocol.getDb110Data();
+ List<Integer> currentIndices = new ArrayList<>();
+ if (db110Data != null) {
+ for (int i = 0; i < db110Data.length; i++) {
+ if (db110Data[i] == 1) {
+ currentIndices.add(i);
+ }
+ }
+ }
+
+ try {
+ WmsOperateUtils wmsOperateUtils = SpringUtils.getBean(WmsOperateUtils.class);
+ if (wmsOperateUtils != null) {
+ wmsOperateUtils.reportCrnDb110Status(crnProtocol.getCrnNo(), currentIndices);
+ }
+ } catch (Exception e) {
+ log.error("Report Crn Db110 Status Fail", e);
+ }
+ }
+ }
+
+ //璺ㄥ尯鍏ュ簱浠诲姟涓嬪彂锛屼慨鏀圭珯鐐逛换鍔″彿涓哄叆搴撲换鍔″彿
+ public synchronized void taskToNewAreaInTaskStationSend() {
+ Set<String> list = redisUtil.searchKeys(RedisKeyType.RECEIVE_IN_TASK_CHANGE_STATION_TASK.key);
+ for (String key : list) {
+ Object dataStr = redisUtil.get(key);
+ if (dataStr == null) {
+ continue;
+ }
+
+ JSONObject data = JSON.parseObject(dataStr.toString());
+ Integer oldTaskNo = data.getInteger("oldTaskNo");
+ Integer newTaskNo = data.getInteger("newTaskNo");
+ StationCommand command = data.getObject("command", StationCommand.class);
+ Integer stationId = data.getInteger("stationId");
+ Integer deviceNo = data.getInteger("deviceNo");
+
+ Object lock = redisUtil.get(RedisKeyType.RECEIVE_IN_TASK_CHANGE_STATION_TASK_SEND_LIMIT.key + stationId);
+ if(lock != null){
+ continue;
+ }
+
+ StationThread stationThread = (StationThread) SlaveConnection.get(SlaveType.Devp, deviceNo);
+ if(stationThread == null){
+ continue;
+ }
+
+ Map<Integer, StationProtocol> statusMap = stationThread.getStatusMap();
+ StationProtocol stationProtocol = statusMap.get(stationId);
+ if(stationProtocol == null){
+ continue;
+ }
+
+ if (!stationProtocol.isAutoing()) {
+ continue;
+ }
+
+ if (!stationProtocol.isLoading()) {
+ continue;
+ }
+
+ if (stationProtocol.getTaskNo() == 0) {
+ continue;
+ }
+
+ if (!stationProtocol.getTaskNo().equals(oldTaskNo)) {
+ //鍜岀紦瀛樺懡浠や笉鐩稿悓鍒犻櫎
+ redisUtil.del(key);
+ continue;
+ }
+
+ //缂撳瓨鍛戒护鐩稿悓锛屼笅鍙戝懡浠ゆ敼鍙樺叆搴撲换鍔″彿淇℃伅
+ MessageQueue.offer(SlaveType.Devp, deviceNo, new Task(2, command));
+ redisUtil.set(RedisKeyType.RECEIVE_IN_TASK_CHANGE_STATION_TASK_SEND_LIMIT.key + stationId, "lock", 5);
+ }
+
+ }
+
}
--
Gitblit v1.9.1