From 912901afb40fffba9eda36bba09fb3b2e98f216e Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期六, 14 三月 2026 13:32:06 +0800
Subject: [PATCH] #
---
src/main/java/com/zy/core/plugin/NormalProcess.java | 97 +++++++++++++++++++++++++++++++++++++++++-------
1 files changed, 83 insertions(+), 14 deletions(-)
diff --git a/src/main/java/com/zy/core/plugin/NormalProcess.java b/src/main/java/com/zy/core/plugin/NormalProcess.java
index 46d5934..ebc4bdf 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,6 +34,7 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
+import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -54,6 +57,8 @@
private RedisUtil redisUtil;
@Autowired
private WmsOperateUtils wmsOperateUtils;
+ @Autowired
+ private BasCrnpService basCrnpService;
@Override
public void run() {
@@ -70,11 +75,16 @@
stationOperateProcessUtils.stationInExecute();
//鎵ц杈撻�佺珯鐐瑰嚭搴撲换鍔�
stationOperateProcessUtils.stationOutExecute();
+ //妫�娴嬪嚭搴撲换鍔″埌杈剧洰鐨勫湴
+ stationOperateProcessUtils.arriveAtTheDestination();
//妫�娴嬭緭閫佺珯鐐瑰嚭搴撲换鍔℃墽琛屽畬鎴�
stationOperateProcessUtils.stationOutExecuteFinish();
//妫�娴嬭緭閫佺珯鐐规槸鍚﹁繍琛屽牭濉�
stationOperateProcessUtils.checkStationRunBlock();
+
+ //涓婃姤鍫嗗灈鏈篋B110鐘舵�佹暟鎹�
+ reportDb110();
}
/**
@@ -120,18 +130,29 @@
if (stationProtocol == null) {
continue;
}
+ String barcode = stationProtocol.getBarcode();
// 婊¤冻鑷姩銆佹湁鐗┿�佹湁宸ヤ綔鍙凤紝鐢熸垚鍏ュ簱鏁版嵁
if (stationProtocol.isAutoing()
&& stationProtocol.isLoading()
- && stationProtocol.getTaskNo() > 0) {
+ && stationProtocol.getTaskNo() == 0) {
if (Cools.isEmpty(stationProtocol.getBarcode())) {
continue;
}
+ //鏄惁鎶ヨ
+ if (stationProtocol.getError()>0){
+ StationCommand command = stationThread.getCommand(StationCommandType.WRITE_INFO,
+ 9991, 1015, 1013, 0);
+ stationProtocol.setSystemWarning(stationProtocol.getErrorMsg());
+ MessageQueue.offer(SlaveType.Devp, basDevp.getDevpNo(), new Task(2, command));
+ continue;
+ }
+ String[] split = barcode.split(",");
+ String bar = split[0];
// 妫�娴嬩换鍔℃槸鍚︾敓鎴�
List<WrkMast> wrkMasts = wrkMastService
- .selectList(new EntityWrapper<WrkMast>().eq("barcode", stationProtocol.getBarcode()));
+ .selectList(new EntityWrapper<WrkMast>().eq("barcode", bar));
if (!wrkMasts.isEmpty()) {
continue;
}
@@ -141,7 +162,7 @@
continue;
}
- String barcode = stationProtocol.getBarcode();
+
Integer stationIdVal = stationProtocol.getStationId();
// 1. 棣栧厛鏌ヨ鏄惁鏈夊凡瀹屾垚鐨勫紓姝ュ搷搴�
@@ -154,8 +175,9 @@
News.error("WMS鍏ュ簱璇锋眰澶辫触锛岄噸鏂板彂璧疯姹傦紝barcode={}锛宻tationId={}锛宺esponse={}", barcode,
stationIdVal, response);
wmsOperateUtils.applyInTaskAsync(barcode, stationIdVal,
- stationProtocol.getPalletHeight());
+ stationProtocol.getPalletHeight(),stationProtocol.getWeight());
redisUtil.set(RedisKeyType.GENERATE_IN_TASK_LIMIT.key + stationId, "lock", 2);
+// stationProtocol.setSys
continue;
}
@@ -163,27 +185,38 @@
JSONObject jsonObject = JSON.parseObject(response);
if (jsonObject.getInteger("code").equals(200)) {
StartupDto dto = jsonObject.getObject("data", StartupDto.class);
-
+ if (Cools.isEmpty(dto.getTaskNo())){
+ throw new Exception("TaskNo涓嶈兘涓虹┖");
+ }
CreateInTaskParam taskParam = new CreateInTaskParam();
- taskParam.setTaskNo(dto.getTaskNo());
+ taskParam.setTaskNo(String.valueOf(dto.getTaskNo()));
taskParam.setLocNo(dto.getLocNo());
taskParam.setTaskPri(dto.getTaskPri());
- taskParam.setBarcode(barcode);
+ taskParam.setBarcode(dto.getBarcode());
+ taskParam.setSourceStaNo(String.valueOf(dto.getSourceStaNo()));
+ taskParam.setStaNo(String.valueOf(dto.getStaNo()));
+ taskParam.setCrnNo(dto.getCrnNo());
WrkMast wrkMast = commonService.createInTask(taskParam);
StationCommand command = stationThread.getCommand(StationCommandType.WRITE_INFO,
- wrkMast.getWrkNo(), stationId, stationId, 0);
+ wrkMast.getWrkNo(), dto.getSourceStaNo(), dto.getStaNo(), 0);
if (command == null) {
News.taskInfo(wrkMast.getWrkNo(), "鑾峰彇杈撻�佺嚎鍛戒护澶辫触");
continue;
}
+ stationProtocol.setSystemWarning("");
MessageQueue.offer(SlaveType.Devp, basDevp.getDevpNo(), new Task(2, command));
} else {
+
+ stationProtocol.setSystemWarning(jsonObject.getString("msg"));
+ StationCommand command = stationThread.getCommand(StationCommandType.WRITE_INFO,
+ 9991, 1015, 1013, 0);
+ MessageQueue.offer(SlaveType.Devp, basDevp.getDevpNo(), new Task(2, command));
// 鎺ュ彛杩斿洖闈�200锛岄噸鏂板彂璧疯姹�
News.error("WMS鍏ュ簱鎺ュ彛杩斿洖闈�200锛岄噸鏂板彂璧疯姹傦紝barcode={}锛宻tationId={}锛宺esponse={}", barcode,
stationIdVal, response);
wmsOperateUtils.applyInTaskAsync(barcode, stationIdVal,
- stationProtocol.getPalletHeight());
+ stationProtocol.getPalletHeight(),stationProtocol.getWeight());
redisUtil.set(RedisKeyType.GENERATE_IN_TASK_LIMIT.key + stationId, "lock", 2);
}
} else {
@@ -192,7 +225,7 @@
// 娌℃湁璇锋眰杩涜涓紝鍙戣捣鏂扮殑寮傛璇锋眰
News.info("鍙戣捣寮傛WMS鍏ュ簱璇锋眰锛宐arcode={}锛宻tationId={}", barcode, stationIdVal);
wmsOperateUtils.applyInTaskAsync(barcode, stationIdVal,
- stationProtocol.getPalletHeight());
+ stationProtocol.getPalletHeight(),stationProtocol.getWeight());
redisUtil.set(RedisKeyType.GENERATE_IN_TASK_LIMIT.key + stationId, "lock", 2);
}
// 濡傛灉鏈夎姹傝繘琛屼腑锛岀瓑寰呬笅娆″惊鐜啀妫�鏌�
@@ -248,4 +281,40 @@
}
}
+ //涓婃姤鍫嗗灈鏈篋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);
+ }
+ }
+ }
+
}
--
Gitblit v1.9.1