From 6d99081f3f6e0363b0bd28053e545a8e4589b979 Mon Sep 17 00:00:00 2001
From: Junjie <DELL@qq.com>
Date: 星期五, 09 一月 2026 08:50:11 +0800
Subject: [PATCH] #
---
src/main/webapp/components/MapCanvas.js | 2
src/main/java/com/zy/core/utils/StationOperateProcessUtils.java | 5 -
src/main/java/com/zy/core/network/real/ZyStationV3RealConnect.java | 153 +++++++++++++++++++++++++++---
src/main/resources/docs/地图操作说明书.pdf | 0
src/main/java/com/zy/asrs/controller/BasMapController.java | 1
src/main/resources/sql/20260109084743.nb3 | 0
/dev/null | 0
src/main/java/com/zy/core/network/real/ZyStationRealConnect.java | 4
src/main/java/com/zy/core/plugin/NormalProcess.java | 34 ++++--
src/main/java/com/zy/asrs/controller/ConsoleController.java | 2
src/main/java/com/zy/asrs/domain/vo/StationLatestDataVo.java | 6 +
src/main/java/com/zy/core/model/protocol/StationProtocol.java | 3
src/main/java/com/zy/core/network/entity/ZyStationStatusEntity.java | 3
src/main/java/com/zy/asrs/utils/Utils.java | 25 +++-
src/main/java/com/zy/core/thread/impl/ZyStationThread.java | 3
src/main/java/com/zy/core/enums/WrkIoType.java | 2
src/main/java/com/zy/core/thread/impl/ZyStationV3Thread.java | 27 +++-
src/main/webapp/components/DevpCard.js | 4
src/main/java/com/zy/core/enums/RedisKeyType.java | 1
src/main/java/com/zy/core/model/StationObjModel.java | 2
20 files changed, 224 insertions(+), 53 deletions(-)
diff --git a/src/main/java/com/zy/asrs/controller/BasMapController.java b/src/main/java/com/zy/asrs/controller/BasMapController.java
index 7506271..4a2a97e 100644
--- a/src/main/java/com/zy/asrs/controller/BasMapController.java
+++ b/src/main/java/com/zy/asrs/controller/BasMapController.java
@@ -221,6 +221,7 @@
StationObjModel barcodeStationModel = new StationObjModel();
barcodeStationModel.setDeviceNo(deviceNo);
barcodeStationModel.setStationId(value.getInteger("stationId"));
+ barcodeStationModel.setBarcodeIdx(value.getInteger("barcodeIdx"));
if (value.getInteger("backStation") != null) {
StationObjModel backStation = new StationObjModel();
diff --git a/src/main/java/com/zy/asrs/controller/ConsoleController.java b/src/main/java/com/zy/asrs/controller/ConsoleController.java
index 320bf62..554305b 100644
--- a/src/main/java/com/zy/asrs/controller/ConsoleController.java
+++ b/src/main/java/com/zy/asrs/controller/ConsoleController.java
@@ -119,7 +119,9 @@
vo.setEnableIn(stationProtocol.isEnableIn());// 鍚姩鍏ュ簱
vo.setPalletHeight(stationProtocol.getPalletHeight()); // 鎵樼洏楂樺害
vo.setError(stationProtocol.getError()); // 閿欒鐮�
+ vo.setErrorMsg(stationProtocol.getErrorMsg()); // 鎶ヨ淇℃伅
vo.setBarcode(stationProtocol.getBarcode()); // 鏉$爜
+ vo.setWeight(stationProtocol.getWeight());//閲嶉噺
String stationStatus = StationStatusType.process(stationProtocol).toString().toLowerCase().replaceAll("_", "-");
if (stationProtocol.isAutoing() && stationProtocol.isLoading() && stationProtocol.getTaskNo() > 0 && !stationProtocol.isRunBlock()) {
String taskClass = getStationTaskClass(stationProtocol.getTaskNo(), inTaskRange, outTaskRange);
diff --git a/src/main/java/com/zy/asrs/domain/vo/StationLatestDataVo.java b/src/main/java/com/zy/asrs/domain/vo/StationLatestDataVo.java
index 59fc320..c41359e 100644
--- a/src/main/java/com/zy/asrs/domain/vo/StationLatestDataVo.java
+++ b/src/main/java/com/zy/asrs/domain/vo/StationLatestDataVo.java
@@ -44,9 +44,15 @@
//鎶ヨ
private Integer error;
+ //鎶ヨ淇℃伅
+ private String errorMsg;
+
//鏉$爜
private String barcode;
private String stationStatus;
+ //閲嶉噺
+ private Double weight;
+
}
diff --git a/src/main/java/com/zy/asrs/utils/Utils.java b/src/main/java/com/zy/asrs/utils/Utils.java
index f2c7d43..cb1ee8b 100644
--- a/src/main/java/com/zy/asrs/utils/Utils.java
+++ b/src/main/java/com/zy/asrs/utils/Utils.java
@@ -193,10 +193,20 @@
.eq("in_enable", "Y")
.eq("status", 1);
+ if (hasConfig) {
+ wrapper.in("crn_no", allowedCrnNos);
+ }
+
if (currentCircleTaskCrnNo != null) {
currentCircleTaskCrnNo = currentCircleTaskCrnNo + 1;
- BasCrnp basCrnp = basCrnpService.selectOne(new EntityWrapper<BasCrnp>().eq("crn_no", currentCircleTaskCrnNo));
- List<WrkMast> currentCrnTask = wrkMastService.selectList(new EntityWrapper<WrkMast>().eq("crn_no", currentCircleTaskCrnNo));
+ BasCrnp basCrnp = basCrnpService.selectOne(new EntityWrapper<BasCrnp>()
+ .eq("crn_no", currentCircleTaskCrnNo)
+ .eq("in_enable", "Y")
+ .eq("status", 1)
+ );
+ List<WrkMast> currentCrnTask = wrkMastService.selectList(new EntityWrapper<WrkMast>()
+ .eq("crn_no", currentCircleTaskCrnNo)
+ );
if (currentCrnTask.size() <= 1) {
if (basCrnp != null) {
List<List<Integer>> rowList = basCrnp.getControlRows$();
@@ -230,9 +240,6 @@
List<BasCrnp> enabledCrnps = new ArrayList<>();
for (BasCrnp basCrnp : baseList) {
- if (hasConfig && !allowedCrnNos.contains(basCrnp.getCrnNo())) {
- continue;
- }
CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, basCrnp.getCrnNo());
if (crnThread == null) {
continue;
@@ -311,6 +318,10 @@
.eq("in_enable", "Y")
.eq("status", 1);
+ if (hasConfig) {
+ wrapper.in("crn_no", allowedCrnNos);
+ }
+
HashMap<Integer, Integer> map = new HashMap<>();
List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<>());
List<BasDualCrnp> basDualCrnps = basDualCrnpService.selectList(wrapper);
@@ -333,10 +344,6 @@
List<BasDualCrnp> enabledCrnps = new ArrayList<>();
for (BasDualCrnp basDualCrnp : baseList) {
- if (hasConfig && !allowedCrnNos.contains(basDualCrnp.getCrnNo())) {
- continue;
- }
-
DualCrnThread dualCrnThread = (DualCrnThread) SlaveConnection.get(SlaveType.DualCrn, basDualCrnp.getCrnNo());
if (dualCrnThread == null) {
continue;
diff --git a/src/main/java/com/zy/core/enums/RedisKeyType.java b/src/main/java/com/zy/core/enums/RedisKeyType.java
index 1154b8f..8d000ca 100644
--- a/src/main/java/com/zy/core/enums/RedisKeyType.java
+++ b/src/main/java/com/zy/core/enums/RedisKeyType.java
@@ -40,6 +40,7 @@
CHECK_STATION_RUN_BLOCK_LIMIT_("check_station_run_block_limit_"),
CHECK_SHALLOW_LOC_STATUS_LIMIT("check_shallow_loc_status_limit_"),
GENERATE_ENABLE_IN_STATION_DATA_LIMIT("generate_enable_in_station_data_limit_"),
+ GENERATE_STATION_BACK_LIMIT("generate_station_back_limit_"),
DUAL_CRN_PICK_WAIT_NEXT_TASK("dual_crn_pick_wait_next_task_"),
DUAL_CRN_OUT_TASK_STATION_INFO("dual_crn_out_task_station_info_"),
diff --git a/src/main/java/com/zy/core/enums/WrkIoType.java b/src/main/java/com/zy/core/enums/WrkIoType.java
index ecde168..9307c60 100644
--- a/src/main/java/com/zy/core/enums/WrkIoType.java
+++ b/src/main/java/com/zy/core/enums/WrkIoType.java
@@ -8,6 +8,8 @@
OUT(101, "鍑哄簱"),
LOC_MOVE(201, "绉诲簱浠诲姟"),
FAKE_TASK_NO(9999, "浠跨湡闅忔満宸ヤ綔鍙�"),
+ ENABLE_IN(9998, "鍚姩鍏ュ簱"),
+ STATION_BACK(9997, "绔欑偣鍥為��"),
;
WrkIoType(int id, String desc) {
diff --git a/src/main/java/com/zy/core/model/StationObjModel.java b/src/main/java/com/zy/core/model/StationObjModel.java
index 4f047cb..08e1bc4 100644
--- a/src/main/java/com/zy/core/model/StationObjModel.java
+++ b/src/main/java/com/zy/core/model/StationObjModel.java
@@ -17,6 +17,8 @@
private Integer stationLev;
+ private Integer barcodeIdx;
+
private StationObjModel barcodeStation;
private StationObjModel backStation;
diff --git a/src/main/java/com/zy/core/model/protocol/StationProtocol.java b/src/main/java/com/zy/core/model/protocol/StationProtocol.java
index 566f8d9..c2c9f52 100644
--- a/src/main/java/com/zy/core/model/protocol/StationProtocol.java
+++ b/src/main/java/com/zy/core/model/protocol/StationProtocol.java
@@ -49,6 +49,9 @@
//鎶ヨ
private Integer error;
+ //鎶ヨ淇℃伅
+ private String errorMsg;
+
//鏉$爜
private String barcode;
diff --git a/src/main/java/com/zy/core/network/entity/ZyStationStatusEntity.java b/src/main/java/com/zy/core/network/entity/ZyStationStatusEntity.java
index 48f9b3e..40bdbfa 100644
--- a/src/main/java/com/zy/core/network/entity/ZyStationStatusEntity.java
+++ b/src/main/java/com/zy/core/network/entity/ZyStationStatusEntity.java
@@ -41,6 +41,9 @@
//鎶ヨ
private Integer error;
+ //鎶ヨ淇℃伅
+ private String errorMsg;
+
//鏉$爜
private String barcode;
diff --git a/src/main/java/com/zy/core/network/real/ZyStationRealConnect.java b/src/main/java/com/zy/core/network/real/ZyStationRealConnect.java
index c73de43..97b1c6c 100644
--- a/src/main/java/com/zy/core/network/real/ZyStationRealConnect.java
+++ b/src/main/java/com/zy/core/network/real/ZyStationRealConnect.java
@@ -22,6 +22,7 @@
import com.zy.core.network.api.ZyStationConnectApi;
import com.zy.core.network.entity.ZyStationStatusEntity;
import java.util.Collections;
+import java.util.Comparator;
import java.util.List;
import java.text.MessageFormat;
@@ -87,6 +88,9 @@
}
statusList = JSONObject.parseArray(basDevp.getStationList(), ZyStationStatusEntity.class);
+ if (statusList != null) {
+ statusList.sort(Comparator.comparing(ZyStationStatusEntity::getStationId));
+ }
barcodeStatusList = JSONObject.parseArray(basDevp.getBarcodeStationList(), ZyStationStatusEntity.class);
}
diff --git a/src/main/java/com/zy/core/network/real/ZyStationV3RealConnect.java b/src/main/java/com/zy/core/network/real/ZyStationV3RealConnect.java
index 4bc50fc..543a2bd 100644
--- a/src/main/java/com/zy/core/network/real/ZyStationV3RealConnect.java
+++ b/src/main/java/com/zy/core/network/real/ZyStationV3RealConnect.java
@@ -17,6 +17,7 @@
import com.zy.core.cache.OutputQueue;
import com.zy.core.enums.StationCommandType;
import com.zy.core.model.CommandResponse;
+import com.zy.core.model.StationObjModel;
import com.zy.core.model.command.StationCommand;
import com.zy.core.network.api.ZyStationConnectApi;
import com.zy.core.network.entity.ZyStationStatusEntity;
@@ -35,7 +36,7 @@
public class ZyStationV3RealConnect implements ZyStationConnectApi {
private List<ZyStationStatusEntity> statusList;
- private List<ZyStationStatusEntity> barcodeStatusList;
+ private List<StationObjModel> barcodeOriginList;
private SiemensS7Net siemensNet;
private DeviceConfig deviceConfig;
private RedisUtil redisUtil;
@@ -94,10 +95,7 @@
if (statusList != null) {
statusList.sort(Comparator.comparing(ZyStationStatusEntity::getStationId));
}
- barcodeStatusList = JSONObject.parseArray(basDevp.getBarcodeStationList(), ZyStationStatusEntity.class);
- if (barcodeStatusList != null) {
- barcodeStatusList.sort(Comparator.comparing(ZyStationStatusEntity::getStationId));
- }
+ barcodeOriginList = basDevp.getBarcodeStationList$();
}
if (siemensNet == null) {
@@ -122,21 +120,94 @@
boolean[] status2 = siemensNet.getByteTransform().TransBool(result.Content, i * 8 + 7, 1);
statusEntity.setRunBlock(status2[1]);//閲嶆柊瑙勫垝璺嚎
statusEntity.setEnableIn(status2[3]);//鍚姩鍏ュ簱
+
+ Integer palletHeight = null;
+ if (status[7]) {
+ palletHeight = 1;//浣�
+ }
+ if (status2[0]) {
+ palletHeight = 2;//涓�
+ }
+ if (status[6]) {
+ palletHeight = 3;//楂�
+ }
+ statusEntity.setPalletHeight(palletHeight);//楂樹綆淇″彿
+
+ statusEntity.setError(0);//榛樿鏃犳姤璀�
}
}
// 鏉$爜鎵弿鍣�
- OperateResultExOne<byte[]> result2 = siemensNet.Read("DB101.0", (short) (statusList.size() * 10));
+ OperateResultExOne<byte[]> result2 = siemensNet.Read("DB101.0", (short) (barcodeOriginList.size() * 16));
if (result2.IsSuccess) {
- for (int i = 0; i < barcodeStatusList.size(); i++) {
- ZyStationStatusEntity barcodeEntity = barcodeStatusList.get(i);
- ZyStationStatusEntity statusEntity = findStatusEntity(barcodeEntity.getStationId());
- if (statusEntity == null) {
+ for (int i = 0; i < barcodeOriginList.size(); i++) {
+ ZyStationStatusEntity barcodeEntity = findStatusEntityByBarcodeIdx(i + 1);
+ if (barcodeEntity == null) {
continue;
}
- String barcode = siemensNet.getByteTransform().TransString(result2.Content, i * 10 + 2, 8, "UTF-8");
+ String barcode = siemensNet.getByteTransform().TransString(result2.Content, i * 16 + 2, 14, "UTF-8");
barcode = barcode.trim();
barcodeEntity.setBarcode(barcode);
+ }
+ }
+
+ // 绉伴噸
+ OperateResultExOne<byte[]> result3 = siemensNet.Read("DB102.0", (short) (barcodeOriginList.size() * 4));
+ if (result3.IsSuccess) {
+ for (int i = 0; i < barcodeOriginList.size(); i++) {
+ ZyStationStatusEntity barcodeEntity = findStatusEntityByBarcodeIdx(i + 1);
+ if (barcodeEntity == null) {
+ continue;
+ }
+ double weight = (double) siemensNet.getByteTransform().TransSingle(result3.Content, i * 4);
+ barcodeEntity.setWeight(weight);
+ }
+ }
+
+ // 鎶ヨ淇℃伅
+ OperateResultExOne<byte[]> result4 = siemensNet.Read("DB103.0", (short) (barcodeOriginList.size() * 2));
+ if (result4.IsSuccess) {
+ for (int i = 0; i < barcodeOriginList.size(); i++) {
+ ZyStationStatusEntity barcodeEntity = findStatusEntityByBarcodeIdx(i + 1);
+ if (barcodeEntity == null) {
+ continue;
+ }
+
+ StringBuilder sb = new StringBuilder();
+ boolean[] status1 = siemensNet.getByteTransform().TransBool(result4.Content, i * 2, 1);
+ boolean[] status2 = siemensNet.getByteTransform().TransBool(result4.Content, i * 2 + 1, 1);
+
+ if(status1[0]){
+ sb.append("宸﹁秴瀹芥姤璀�;");
+ }
+ if(status1[1]) {
+ sb.append("鍙宠秴瀹芥姤璀�;");
+ }
+ if(status1[2]) {
+ sb.append("鍓嶈秴闀挎姤璀�;");
+ }
+ if(status1[3]) {
+ sb.append("鍚庤秴闀挎姤璀�;");
+ }
+ if(status1[4]) {
+ sb.append("瓒呴珮鎶ヨ;");
+ }
+ if(status1[5]) {
+ sb.append("鏈夎揣鎶ヨ锛岀┖鎵樺叆搴撴椂妫�娴嬫墭鐩樹笂鏈夋棤璐х墿;");
+ }
+ if(status1[6]) {
+ sb.append("閲嶉噺寮傚父鎶ヨ;");
+ }
+ if(status1[7]) {
+ sb.append("鎵爜寮傚父;");
+ }
+
+ if(sb.length() > 0) {
+ barcodeEntity.setError(1);
+ }else {
+ barcodeEntity.setError(0);
+ }
+ barcodeEntity.setErrorMsg(sb.toString());
}
}
@@ -199,6 +270,46 @@
log.error("鍐欏叆杈撻�佺嚎鍛戒护澶辫触銆傜珯鐐圭紪鍙�={}锛岀珯鐐规暟鎹�={}", command.getTaskNo(), JSON.toJSON(command));
commandResponse.setResult(false);
}
+ } else if (command.getCommandType().equals(StationCommandType.WRITE_INFO)) {
+ int enableCommandIdx = -1;
+ while (true) {
+ enableCommandIdx = getEnableCommandIdx(command.getTaskNo());
+ if(enableCommandIdx == -1) {
+ try {
+ Thread.sleep(300);
+ }catch (Exception e) {}
+ }else {
+ break;
+ }
+ tryCount++;
+ if (tryCount > maxTryCount) {
+ commandResponse.setMessage("鍛戒护涓嬪彂瓒呮椂锛屾棤娉曟壘鍒板彲鐢ㄤ笅鍙戝尯鍩�");
+ return commandResponse;
+ }
+ }
+
+ short[] data = new short[21];
+ data[0] = command.getTargetStaNo().shortValue();
+ data[1] = command.getTargetStaNo().shortValue();
+
+ OperateResult writeTask = siemensNet.Write("DB23." + (enableCommandIdx * taskAddressLength), command.getTaskNo());
+ try {
+ Thread.sleep(50);
+ }catch (Exception e) {}
+
+ OperateResult writeData = siemensNet.Write("DB23." + (enableCommandIdx * taskAddressLength + 4), data);
+ try {
+ Thread.sleep(200);
+ }catch (Exception e) {}
+ OperateResult writeConfirm = siemensNet.Write("DB23." + (enableCommandIdx * taskAddressLength + 46), (short) 1);
+
+ if(writeTask.IsSuccess && writeData.IsSuccess && writeConfirm.IsSuccess) {
+ log.error("鍐欏叆杈撻�佺嚎鍛戒护鎴愬姛銆備换鍔″彿={}锛岀珯鐐规暟鎹�={}", command.getTaskNo(), JSON.toJSON(command));
+ commandResponse.setResult(true);
+ }else {
+ log.error("鍐欏叆杈撻�佺嚎鍛戒护澶辫触銆傜珯鐐圭紪鍙�={}锛岀珯鐐规暟鎹�={}", command.getTaskNo(), JSON.toJSON(command));
+ commandResponse.setResult(false);
+ }
}
return commandResponse;
}
@@ -231,10 +342,18 @@
return new byte[0];
}
- private ZyStationStatusEntity findStatusEntity(Integer stationId) {
- for (ZyStationStatusEntity statusEntity : statusList) {
- if (statusEntity.getStationId().equals(stationId)) {
- return statusEntity;
+ private ZyStationStatusEntity findStatusEntityByBarcodeIdx(Integer barcodeIdx) {
+ Integer stationId = null;
+ for (StationObjModel stationObjModel : barcodeOriginList) {
+ if (stationObjModel.getBarcodeIdx().equals(barcodeIdx)) {
+ stationId = stationObjModel.getStationId();
+ break;
+ }
+ }
+
+ for (ZyStationStatusEntity zyStationStatusEntity : statusList) {
+ if(zyStationStatusEntity.getStationId().equals(stationId)) {
+ return zyStationStatusEntity;
}
}
return null;
@@ -243,9 +362,9 @@
private int getEnableCommandIdx(int taskNo) {
int useIdx = -1;
for (int i = 0; i < taskAddressLimit; i++) {
- OperateResultExOne<byte[]> resultTask = siemensNet.Read("DB23." + (i * taskAddressLength + 0), (short) 2);
+ OperateResultExOne<byte[]> resultTask = siemensNet.Read("DB23." + (i * taskAddressLength + 0), (short) 4);
OperateResultExOne<byte[]> resultStatus = siemensNet.Read("DB23." + (i * taskAddressLength + 46), (short) 2);
- if(resultTask.IsSuccess && resultStatus.IsSuccess) {
+ if(!resultTask.IsSuccess || !resultStatus.IsSuccess) {
continue;
}
diff --git a/src/main/java/com/zy/core/plugin/NormalProcess.java b/src/main/java/com/zy/core/plugin/NormalProcess.java
index 3792035..b58d1dd 100644
--- a/src/main/java/com/zy/core/plugin/NormalProcess.java
+++ b/src/main/java/com/zy/core/plugin/NormalProcess.java
@@ -56,10 +56,10 @@
@Override
public void run() {
- //璇锋眰鐢熸垚鍏ュ簱浠诲姟
- generateStoreWrkFile();
//妫�娴嬪叆搴撶珯鏄惁鏈変换鍔$敓鎴愶紝骞跺惎鍔ㄥ叆搴�
checkInStationHasTask();
+ //璇锋眰鐢熸垚鍏ュ簱浠诲姟
+ generateStoreWrkFile();
//鎵ц鍫嗗灈鏈轰换鍔�
crnOperateUtils.crnIoExecute();
@@ -71,6 +71,9 @@
stationOperateProcessUtils.stationOutExecute();
//妫�娴嬭緭閫佺珯鐐瑰嚭搴撲换鍔℃墽琛屽畬鎴�
stationOperateProcessUtils.stationOutExecuteFinish();
+
+ //妫�娴嬭緭閫佺珯鐐规槸鍚﹁繍琛屽牭濉�
+ stationOperateProcessUtils.checkStationRunBlock();
}
/**
@@ -102,8 +105,23 @@
//婊¤冻鑷姩銆佹湁鐗┿�佹湁宸ヤ綔鍙凤紝鐢熸垚鍏ュ簱鏁版嵁
if (stationProtocol.isAutoing()
&& stationProtocol.isLoading()
+ && stationProtocol.isInEnable()
&& stationProtocol.getTaskNo() > 0
) {
+ if (stationProtocol.getError() > 0) {
+ Object backLock = redisUtil.get(RedisKeyType.GENERATE_STATION_BACK_LIMIT.key + stationId);
+ if (backLock != null) {
+ continue;
+ }
+
+ //鎶ヨ鍥為��
+ StationCommand command = stationThread.getCommand(StationCommandType.MOVE, commonService.getWorkNo(WrkIoType.STATION_BACK.id), stationId, entity.getBackStation().getStationId(), 0);
+ MessageQueue.offer(SlaveType.Devp, basDevp.getDevpNo(), new Task(2, command));
+ redisUtil.set(RedisKeyType.GENERATE_STATION_BACK_LIMIT.key + stationId, "lock", 15);
+ News.info("{}绔欑偣鎶ヨ鍥為��鎴愬姛锛屾暟鎹寘:{}", stationId, JSON.toJSONString(command));
+ continue;
+ }
+
if (Cools.isEmpty(stationProtocol.getBarcode())) {
continue;
}
@@ -135,13 +153,6 @@
taskParam.setTaskPri(dto.getTaskPri());
taskParam.setBarcode(stationProtocol.getBarcode());
WrkMast wrkMast = commonService.createInTask(taskParam);
-
- StationCommand command = stationThread.getCommand(StationCommandType.WRITE_INFO, wrkMast.getWrkNo(), stationId, stationId, 0);
- if(command == null){
- News.taskInfo(wrkMast.getWrkNo(), "鑾峰彇杈撻�佺嚎鍛戒护澶辫触");
- continue;
- }
- MessageQueue.offer(SlaveType.Devp, basDevp.getDevpNo(), new Task(2, command));
}
}
}
@@ -182,9 +193,10 @@
&& stationProtocol.getTaskNo() == 0
&& stationProtocol.isEnableIn()
) {
- StationCommand command = stationThread.getCommand(StationCommandType.MOVE, commonService.getWorkNo(WrkIoType.FAKE_TASK_NO.id), stationId, entity.getBarcodeStation().getStationId(), 0);
+ StationCommand command = stationThread.getCommand(StationCommandType.MOVE, commonService.getWorkNo(WrkIoType.ENABLE_IN.id), stationId, entity.getBarcodeStation().getStationId(), 0);
MessageQueue.offer(SlaveType.Devp, basDevp.getDevpNo(), new Task(2, command));
- redisUtil.set(RedisKeyType.GENERATE_ENABLE_IN_STATION_DATA_LIMIT.key + stationId, "lock", 10);
+ redisUtil.set(RedisKeyType.GENERATE_ENABLE_IN_STATION_DATA_LIMIT.key + stationId, "lock", 15);
+ News.info("{}绔欑偣鍚姩鍏ュ簱鎴愬姛锛屾暟鎹寘:{}", stationId, JSON.toJSONString(command));
}
}
}
diff --git a/src/main/java/com/zy/core/thread/impl/ZyStationThread.java b/src/main/java/com/zy/core/thread/impl/ZyStationThread.java
index be32eb0..62ea5a9 100644
--- a/src/main/java/com/zy/core/thread/impl/ZyStationThread.java
+++ b/src/main/java/com/zy/core/thread/impl/ZyStationThread.java
@@ -136,8 +136,11 @@
stationProtocol.setFullPlt(statusEntity.isFullPlt());
stationProtocol.setPalletHeight(statusEntity.getPalletHeight());
stationProtocol.setError(statusEntity.getError());
+ stationProtocol.setErrorMsg(statusEntity.getErrorMsg());
stationProtocol.setBarcode(statusEntity.getBarcode());
stationProtocol.setRunBlock(statusEntity.isRunBlock());
+ stationProtocol.setEnableIn(statusEntity.isEnableIn());
+ stationProtocol.setWeight(statusEntity.getWeight());
}
}
}
diff --git a/src/main/java/com/zy/core/thread/impl/ZyStationV3Thread.java b/src/main/java/com/zy/core/thread/impl/ZyStationV3Thread.java
index bb7fbd8..1bf599d 100644
--- a/src/main/java/com/zy/core/thread/impl/ZyStationV3Thread.java
+++ b/src/main/java/com/zy/core/thread/impl/ZyStationV3Thread.java
@@ -140,9 +140,11 @@
stationProtocol.setFullPlt(statusEntity.isFullPlt());
stationProtocol.setPalletHeight(statusEntity.getPalletHeight());
stationProtocol.setError(statusEntity.getError());
+ stationProtocol.setErrorMsg(statusEntity.getErrorMsg());
stationProtocol.setBarcode(statusEntity.getBarcode());
stationProtocol.setRunBlock(statusEntity.isRunBlock());
stationProtocol.setEnableIn(statusEntity.isEnableIn());
+ stationProtocol.setWeight(statusEntity.getWeight());
}
}
}
@@ -294,7 +296,7 @@
List<Integer> segmentEndIndices = new ArrayList<>();
int idx = 0;
while (idx < total) {
- int end = Math.min(idx + 20, total) - 1;
+ int end = Math.min(idx + 3, total) - 1;
segmentTargets.add(path.get(end));
segmentEndIndices.add(end);
idx = end + 1;
@@ -314,22 +316,29 @@
segCmd.setNavigatePath(new ArrayList<>(path.subList(0, currentEndIdx + 1)));
sendCommand(segCmd);
- boolean finished = false;
- while (!finished) {
+ long runTime = System.currentTimeMillis();
+ while (true) {
try {
- Integer currentStationId = findCurrentStationByTask(original.getTaskNo());
- if (currentStationId == null) {
+ StationProtocol currentStation = findCurrentStationByTask(original.getTaskNo());
+ if (currentStation == null) {
+ if(System.currentTimeMillis() - runTime > 1000 * 60){
+ break;
+ }
Thread.sleep(500);
continue;
}
- int currentIndex = path.indexOf(currentStationId);
+
+ runTime = System.currentTimeMillis();
+ if (currentStation.isRunBlock()) {
+ break;
+ }
+ int currentIndex = path.indexOf(currentStation.getStationId());
if (currentIndex < 0) {
Thread.sleep(500);
continue;
}
int remaining = total - currentIndex - 1;
if (remaining <= 0) {
- finished = true;
break;
}
int currentSegEndIndex = path.indexOf(segmentTargets.get(segCursor));
@@ -361,7 +370,7 @@
}
}
- private Integer findCurrentStationByTask(Integer taskNo) {
+ private StationProtocol findCurrentStationByTask(Integer taskNo) {
try {
com.zy.asrs.service.DeviceConfigService deviceConfigService = SpringUtils.getBean(com.zy.asrs.service.DeviceConfigService.class);
if (deviceConfigService == null) {
@@ -380,7 +389,7 @@
}
for (StationProtocol sp : m.values()) {
if (sp.getTaskNo() != null && sp.getTaskNo().equals(taskNo) && sp.isLoading()) {
- return sp.getStationId();
+ return sp;
}
}
}
diff --git a/src/main/java/com/zy/core/utils/StationOperateProcessUtils.java b/src/main/java/com/zy/core/utils/StationOperateProcessUtils.java
index 4a4b2d2..239fd2d 100644
--- a/src/main/java/com/zy/core/utils/StationOperateProcessUtils.java
+++ b/src/main/java/com/zy/core/utils/StationOperateProcessUtils.java
@@ -90,11 +90,6 @@
continue;
}
- if (!wrkMast.getWrkNo().equals(stationProtocol.getTaskNo())) {
- News.taskInfo(stationProtocol.getStationId(), "杈撻�佺珯鐐瑰伐浣滃彿:{}涓庢潯鐮佹悳绱㈠埌鐨勪换鍔″伐浣滃彿:{}涓嶄竴鑷�", stationProtocol.getTaskNo(), wrkMast.getWrkNo());
- continue;
- }
-
String locNo = wrkMast.getLocNo();
FindCrnNoResult findCrnNoResult = commonService.findCrnNoByLocNo(locNo);
if (findCrnNoResult == null) {
diff --git "a/src/main/resources/docs/\345\234\260\345\233\276\346\223\215\344\275\234\350\257\264\346\230\216\344\271\246.pdf" "b/src/main/resources/docs/\345\234\260\345\233\276\346\223\215\344\275\234\350\257\264\346\230\216\344\271\246.pdf"
new file mode 100644
index 0000000..a6b20f4
--- /dev/null
+++ "b/src/main/resources/docs/\345\234\260\345\233\276\346\223\215\344\275\234\350\257\264\346\230\216\344\271\246.pdf"
Binary files differ
diff --git a/src/main/resources/sql/20251219153026.nb3 b/src/main/resources/sql/20251219153026.nb3
deleted file mode 100644
index 2ef4037..0000000
--- a/src/main/resources/sql/20251219153026.nb3
+++ /dev/null
Binary files differ
diff --git a/src/main/resources/sql/20260109084743.nb3 b/src/main/resources/sql/20260109084743.nb3
new file mode 100644
index 0000000..8d8cdd9
--- /dev/null
+++ b/src/main/resources/sql/20260109084743.nb3
Binary files differ
diff --git a/src/main/webapp/components/DevpCard.js b/src/main/webapp/components/DevpCard.js
index 97b3367..9a4fa5c 100644
--- a/src/main/webapp/components/DevpCard.js
+++ b/src/main/webapp/components/DevpCard.js
@@ -43,10 +43,12 @@
<el-descriptions-item label="鍚姩鍏ュ簱">{{ item.enableIn ? 'Y' : 'N' }}</el-descriptions-item>
<el-descriptions-item label="鎵樼洏楂樺害">{{ item.palletHeight }}</el-descriptions-item>
<el-descriptions-item label="鏉$爜">{{ item.barcode }}</el-descriptions-item>
+ <el-descriptions-item label="閲嶉噺">{{ item.weight }}</el-descriptions-item>
<el-descriptions-item label="鏁呴殰浠g爜">{{ item.error }}</el-descriptions-item>
+ <el-descriptions-item label="鏁呴殰淇℃伅">{{ item.errorMsg }}</el-descriptions-item>
<el-descriptions-item label="鎵╁睍鏁版嵁">{{ item.extend }}</el-descriptions-item>
</el-descriptions>
- </el-collapse-item>
+ </el-collapse-item>
</el-collapse>
</div>
<div style="display:flex; justify-content:flex-end; margin-top:8px;">
diff --git a/src/main/webapp/components/MapCanvas.js b/src/main/webapp/components/MapCanvas.js
index dc76015..be746ba 100644
--- a/src/main/webapp/components/MapCanvas.js
+++ b/src/main/webapp/components/MapCanvas.js
@@ -539,7 +539,7 @@
}
if (status === "site-auto") {
this.updateColor(sta, 0x78ff81);
- } else if (status === "site-auto-run" || status === "site-auto-run-id") {
+ } else if (status === "site-auto-run" || status === "site-auto-id" || status === "site-auto-run-id") {
this.updateColor(sta, 0xfa51f6);
} else if (status === "site-unauto") {
this.updateColor(sta, 0xb8b8b8);
--
Gitblit v1.9.1