From 63b01db83d9aad8a15276b4236a9a22e4aeef065 Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期二, 05 五月 2026 12:30:59 +0800
Subject: [PATCH] # Agent数据分析V3.0.1.7
---
src/main/java/com/zy/core/thread/impl/ZySiemensCrnThread.java | 95 ++++++++++++++++++++++++++++++++---------------
1 files changed, 65 insertions(+), 30 deletions(-)
diff --git a/src/main/java/com/zy/core/thread/impl/ZySiemensCrnThread.java b/src/main/java/com/zy/core/thread/impl/ZySiemensCrnThread.java
index aa80bab..3475ddf 100644
--- a/src/main/java/com/zy/core/thread/impl/ZySiemensCrnThread.java
+++ b/src/main/java/com/zy/core/thread/impl/ZySiemensCrnThread.java
@@ -1,7 +1,7 @@
package com.zy.core.thread.impl;
import com.alibaba.fastjson.JSON;
-import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.core.common.DateUtils;
import com.core.common.SpringUtils;
import com.zy.asrs.entity.BasCrnp;
@@ -24,7 +24,9 @@
import com.zy.core.network.DeviceConnectPool;
import com.zy.core.network.ZyCrnConnectDriver;
import com.zy.core.network.entity.ZyCrnStatusEntity;
+import com.zy.core.service.WrkCommandRollbackService;
import com.zy.core.thread.CrnThread;
+import com.zy.core.task.DeviceAsyncLogPublisher;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
@@ -45,10 +47,12 @@
private ZyCrnConnectDriver zyCrnConnectDriver;
private CrnProtocol crnProtocol;
private int deviceLogCollectTime = 200;
+ private final DeviceAsyncLogPublisher deviceAsyncLogPublisher;
public ZySiemensCrnThread(DeviceConfig deviceConfig, RedisUtil redisUtil) {
this.deviceConfig = deviceConfig;
this.redisUtil = redisUtil;
+ this.deviceAsyncLogPublisher = SpringUtils.getBean(DeviceAsyncLogPublisher.class);
}
@Override
@@ -124,7 +128,7 @@
}
if (basCrnpService != null) {
- BasCrnp basCrnp = basCrnpService.selectOne(new EntityWrapper<BasCrnp>().eq("crn_no", deviceConfig.getDeviceNo()));
+ BasCrnp basCrnp = basCrnpService.getOne(new QueryWrapper<BasCrnp>().eq("crn_no", deviceConfig.getDeviceNo()));
if(basCrnp == null) {
basCrnp = new BasCrnp();
basCrnp.setCrnNo(deviceConfig.getDeviceNo());
@@ -134,7 +138,7 @@
basCrnp.setMaxInTask(5);
basCrnp.setMaxOutTask(5);
basCrnp.setCreateTime(new Date());
- basCrnpService.insert(basCrnp);
+ basCrnpService.save(basCrnp);
}
}
}
@@ -167,6 +171,7 @@
crnProtocol.setWalkPos(crnStatus.getWalkPos());
crnProtocol.setLoaded(crnStatus.getLoaded());
crnProtocol.setAlarm(crnStatus.getAlarm());
+ crnProtocol.setLaserValue(crnStatus.getLaserValue());
crnProtocol.setTemp1(crnStatus.getTemp1());
crnProtocol.setTemp2(crnStatus.getTemp2());
crnProtocol.setTemp3(crnStatus.getTemp3());
@@ -198,7 +203,7 @@
deviceDataLog.setDeviceNo(crnProtocol.getCrnNo());
deviceDataLog.setCreateTime(new Date());
- redisUtil.set(RedisKeyType.DEVICE_LOG_KEY.key + System.currentTimeMillis(), deviceDataLog, 60 * 60 * 24);
+ deviceAsyncLogPublisher.publishLatest(deviceDataLog);
//鏇存柊閲囬泦鏃堕棿
crnProtocol.setDeviceDataLog(System.currentTimeMillis());
}
@@ -219,7 +224,7 @@
log.setStatus(1);
log.setCreateTime(new Date());
log.setSystemStatus(JSON.toJSONString(crnProtocol));
- errLogService.insert(log);
+ errLogService.save(log);
if (log.getId() != null) {
redisUtil.set(errFlagKey, log.getId(), 60 * 60 * 24);
}
@@ -254,14 +259,15 @@
@Override
public CrnCommand getPickAndPutCommand(String sourceLocNo, String targetLocNo, Integer taskNo, Integer crnNo) {
+ BasCrnp basCrnp = getBasCrnp(crnNo);
CrnCommand crnCommand = new CrnCommand();
crnCommand.setCrnNo(crnNo); // 鍫嗗灈鏈虹紪鍙�
crnCommand.setTaskNo(taskNo); // 宸ヤ綔鍙�
crnCommand.setTaskMode(CrnTaskModeType.LOC_MOVE.id); // 浠诲姟妯″紡: 搴撲綅绉昏浆
- crnCommand.setSourcePosX(Utils.getRow(sourceLocNo)); // 婧愬簱浣嶆帓
+ crnCommand.setSourcePosX(resolveCommandRow(sourceLocNo, basCrnp)); // 婧愬簱浣嶆帓
crnCommand.setSourcePosY(Utils.getBay(sourceLocNo)); // 婧愬簱浣嶅垪
crnCommand.setSourcePosZ(Utils.getLev(sourceLocNo)); // 婧愬簱浣嶅眰
- crnCommand.setDestinationPosX(Utils.getRow(targetLocNo)); // 鐩爣搴撲綅鎺�
+ crnCommand.setDestinationPosX(resolveCommandRow(targetLocNo, basCrnp)); // 鐩爣搴撲綅鎺�
crnCommand.setDestinationPosY(Utils.getBay(targetLocNo)); // 鐩爣搴撲綅鍒�
crnCommand.setDestinationPosZ(Utils.getLev(targetLocNo)); // 鐩爣搴撲綅灞�
crnCommand.setCommand(1); // 浠诲姟纭
@@ -270,16 +276,37 @@
@Override
public CrnCommand getMoveCommand(String targetLocNo, Integer taskNo, Integer crnNo) {
+ Integer targetRow = resolveCommandRow(targetLocNo, crnNo);
CrnCommand crnCommand = new CrnCommand();
crnCommand.setCrnNo(crnNo); // 鍫嗗灈鏈虹紪鍙�
crnCommand.setTaskNo(taskNo); // 宸ヤ綔鍙�
crnCommand.setAckFinish(0); // 浠诲姟瀹屾垚纭浣�
crnCommand.setTaskMode(CrnTaskModeType.CRN_MOVE.id); // 浠诲姟妯″紡: 鍫嗗灈鏈虹Щ鍔�
- crnCommand.setDestinationPosX(Utils.getRow(targetLocNo)); // 鐩爣搴撲綅鎺�
+ crnCommand.setSourcePosX(targetRow); // 鐩爣搴撲綅鎺�
+ crnCommand.setSourcePosY(Utils.getBay(targetLocNo)); // 鐩爣搴撲綅鍒�
+ crnCommand.setSourcePosZ(Utils.getLev(targetLocNo)); // 鐩爣搴撲綅灞�
+ crnCommand.setDestinationPosX(targetRow); // 鐩爣搴撲綅鎺�
crnCommand.setDestinationPosY(Utils.getBay(targetLocNo)); // 鐩爣搴撲綅鍒�
crnCommand.setDestinationPosZ(Utils.getLev(targetLocNo)); // 鐩爣搴撲綅灞�
crnCommand.setCommand(1); // 浠诲姟纭
return crnCommand;
+ }
+
+ private Integer resolveCommandRow(String locNo, Integer crnNo) {
+ return resolveCommandRow(locNo, getBasCrnp(crnNo));
+ }
+
+ private Integer resolveCommandRow(String locNo, BasCrnp basCrnp) {
+ Integer locationRow = Utils.getRow(locNo);
+ if (basCrnp == null) {
+ return locationRow;
+ }
+ return basCrnp.getCommandRow(locationRow);
+ }
+
+ private BasCrnp getBasCrnp(Integer crnNo) {
+ BasCrnpService basCrnpService = SpringUtils.getBean(BasCrnpService.class);
+ return basCrnpService.getById(crnNo);
}
@Override
@@ -288,7 +315,7 @@
crnCommand.setCrnNo(crnNo); // 鍫嗗灈鏈虹紪鍙�
crnCommand.setTaskNo(taskNo); // 宸ヤ綔鍙�
crnCommand.setAckFinish(1); // 浠诲姟瀹屾垚纭浣�
- crnCommand.setTaskMode(CrnTaskModeType.NONE.id); // 浠诲姟妯″紡
+ crnCommand.setTaskMode(CrnTaskModeType.RESET.id); // 浠诲姟妯″紡
crnCommand.setSourcePosX(0); // 婧愬簱浣嶆帓
crnCommand.setSourcePosY(0); // 婧愬簱浣嶅垪
crnCommand.setSourcePosZ(0); // 婧愬簱浣嶅眰
@@ -307,27 +334,35 @@
response = zyCrnConnectDriver.sendCommand(command);
return response;
} finally {
- String sourceLocNo = Utils.getLocNo(command.getSourcePosX(), command.getSourcePosY(), command.getSourcePosZ());
- String targetLocNo = Utils.getLocNo(command.getDestinationPosX(), command.getDestinationPosY(), command.getDestinationPosZ());
- BasCrnpOptService bean = SpringUtils.getBean(BasCrnpOptService.class);
- ZyCrnStatusEntity statusEntity = zyCrnConnectDriver.getStatus();
- BasCrnpOpt basCrnpOpt = new BasCrnpOpt(
- command.getTaskNo().intValue(),
- command.getCrnNo(),
- new Date(),
- String.valueOf(command.getTaskMode()),
- sourceLocNo,
- targetLocNo,
- null,
- null,
- null,
- JSON.toJSONString(command),
- JSON.toJSONString(statusEntity),
- 1,
- JSON.toJSONString(response)
- );
- if (bean != null) {
- bean.insert(basCrnpOpt);
+ if (command != null) {
+ String sourceLocNo = Utils.getLocNo(command.getSourcePosX(), command.getSourcePosY(), command.getSourcePosZ());
+ String targetLocNo = Utils.getLocNo(command.getDestinationPosX(), command.getDestinationPosY(), command.getDestinationPosZ());
+ BasCrnpOptService bean = SpringUtils.getBean(BasCrnpOptService.class);
+ ZyCrnStatusEntity statusEntity = zyCrnConnectDriver.getStatus();
+ BasCrnpOpt basCrnpOpt = new BasCrnpOpt(
+ command.getTaskNo(),
+ command.getCrnNo(),
+ new Date(),
+ String.valueOf(command.getTaskMode()),
+ sourceLocNo,
+ targetLocNo,
+ null,
+ null,
+ null,
+ JSON.toJSONString(command),
+ JSON.toJSONString(statusEntity),
+ 1,
+ JSON.toJSONString(response)
+ );
+ bean.save(basCrnpOpt);
+ try {
+ WrkCommandRollbackService rollbackService = SpringUtils.getBean(WrkCommandRollbackService.class);
+ if (rollbackService != null) {
+ rollbackService.handleSingleCrnSendResult(command, response, "鍗曞伐浣嶅爢鍨涙満");
+ }
+ } catch (Exception e) {
+ log.error("澶勭悊鍗曞伐浣嶅懡浠や笅鍙戠粨鏋滃け璐�, wrkNo={}", command.getTaskNo(), e);
+ }
}
}
}
--
Gitblit v1.9.1