From 5879527ed5b7349ce7fd7cd3fe92c81307646b21 Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期五, 19 九月 2025 11:09:23 +0800
Subject: [PATCH] #
---
src/main/java/com/zy/core/thread/SiemensCrnThread.java | 182 ++++++++++++++-------------------------------
1 files changed, 57 insertions(+), 125 deletions(-)
diff --git a/src/main/java/com/zy/core/thread/SiemensCrnThread.java b/src/main/java/com/zy/core/thread/SiemensCrnThread.java
index 22989ef..962a319 100644
--- a/src/main/java/com/zy/core/thread/SiemensCrnThread.java
+++ b/src/main/java/com/zy/core/thread/SiemensCrnThread.java
@@ -5,29 +5,22 @@
import HslCommunication.Profinet.Siemens.SiemensPLCS;
import HslCommunication.Profinet.Siemens.SiemensS7Net;
import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.core.common.Cools;
import com.core.common.DateUtils;
import com.core.common.SpringUtils;
import com.zy.asrs.entity.*;
-import com.zy.asrs.entity.param.TaskOverToWms;
import com.zy.asrs.service.*;
-import com.zy.common.utils.HttpHandler;
import com.zy.core.CrnThread;
import com.zy.core.cache.MessageQueue;
import com.zy.core.cache.OutputQueue;
import com.zy.core.enums.*;
import com.zy.core.model.CrnSlave;
import com.zy.core.model.Task;
-import com.zy.core.model.command.CommandPackage;
import com.zy.core.model.command.CrnCommand;
import com.zy.core.model.protocol.CrnProtocol;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-
import java.text.MessageFormat;
import java.util.*;
@@ -44,21 +37,8 @@
private CrnProtocol crnProtocol;
private boolean resetFlag = false;
- @Value("${wms.url}")
- private String wmsUrl;
- public static final List<Short> rowOne = new ArrayList<Short>() {{
- add((short) 1);add((short) 5);add((short) 7);add((short) 11);add((short) 15);add((short) 19);
- }};
- public static final List<Short> rowTwo = new ArrayList<Short>() {{
- add((short) 2);add((short) 6);add((short) 8);add((short) 12);add((short) 16);add((short) 20);
- }};
- public static final List<Short> rowThree = new ArrayList<Short>() {{
- add((short) 3);add((short) 9);add((short) 13);add((short) 17);add((short) 21);
- }};
- public static final List<Short> rowFour = new ArrayList<Short>() {{
- add((short) 4);add((short) 10);add((short) 14);add((short) 18);
- }};
-
+ //鍘熷璁惧鏁版嵁
+ private Object originDeviceData;
public SiemensCrnThread(CrnSlave slave) {
this.slave = slave;
@@ -164,7 +144,9 @@
private void readStatus(){
OperateResultExOne<byte[]> result = siemensNet.Read("DB101.0", (short) 56);
+ OperateResultExOne<byte[]> result2 = siemensNet.Read("DB25.0", (short) 20);
if (result.IsSuccess) {
+ this.originDeviceData = result.Content;
if (null == crnProtocol) {
crnProtocol = new CrnProtocol();
}
@@ -190,8 +172,6 @@
crnProtocol.setXDuration(siemensNet.getByteTransform().TransSingle(result.Content, 48));
crnProtocol.setYDuration(siemensNet.getByteTransform().TransSingle(result.Content, 52));
-
-
OutputQueue.CRN.offer(MessageFormat.format("銆恵0}銆慬id:{1}] <<<<< 瀹炴椂鏁版嵁鏇存柊鎴愬姛",DateUtils.convert(new Date()), slave.getId()));
// 澶嶄綅淇″彿
@@ -201,93 +181,41 @@
crnCommand.setAckFinish((short)1);
if (write(crnCommand)) {
resetFlag = false;
+ }
+ }
+ }
- //鍫嗗灈鏈轰换鍔″畬鎴愬悗璁块棶wms璇锋眰浠诲姟瀹屾垚 locationDone 璐т綅澶勭悊瀹屾垚
- TaskWrkService taskWrkService = SpringUtils.getBean(TaskWrkService.class);
- TaskWrk taskWrk = taskWrkService.selectOne(new EntityWrapper<TaskWrk>().eq("wrk_no",crnProtocol.getTaskNo()));
- String tasktype = null;
- switch (taskWrk.getIoType()){
- case 1:
- tasktype= "RK";
- break;
- case 2:
- tasktype= "CK";
- break;
- case 3:
- tasktype= "YK";
- break;
- default:
- tasktype= "鏈煡";
- }
- Map<String, Object> map = new HashMap<>();
- map.put("x-api-key","7a15b5db-29b6-552c-8cff-0cfec3756da2");
- TaskOverToWms taskOverToWms = new TaskOverToWms();
- taskOverToWms.setFeedbackFrom("WCS"); //鏉ユ簮
- taskOverToWms.setWarehouseId("1688469798893297665"); //浠撳簱鏍囪瘑
- taskOverToWms.setTaskNo(taskWrk.getTaskNo()); //浠诲姟鍙�
- taskOverToWms.setTaskType(tasktype); // 浠诲姟绫诲瀷
- taskOverToWms.setContainerCode(taskWrk.getBarcode()); // 瀹瑰櫒缂栫爜
- if (taskWrk.getIoType() ==1){
- taskOverToWms.setEquipmentCode(String.valueOf(taskWrk.getCrnNo())); //璁惧缂栫爜
- taskOverToWms.setTargetLocationCode(taskWrk.getOriginTargetPoint()); //鐩爣搴撲綅
- }else if (taskWrk.getIoType() ==2){
- Map<Integer,String> map1 = new HashMap<>();
- map1.put(102,"J-1101");
- map1.put(106,"J-1103");
- map1.put(110,"J-1105");
- map1.put(114,"J-1107");
- map1.put(118,"J-1109");
- map1.put(122,"J-1111");
- map1.put(305,"H-1101");
- map1.put(405,"G-1101");
- taskOverToWms.setEquipmentCode(map1.get(taskWrk.getTargetPoint())); //璁惧缂栫爜
- taskOverToWms.setSourceLocationCode(taskWrk.getOriginStartPoint()); //婧愬簱浣�
- } else if (taskWrk.getIoType() == 3) {
- taskOverToWms.setEquipmentCode(String.valueOf(taskWrk.getCrnNo())); //璁惧缂栫爜
- taskOverToWms.setSourceLocationCode(taskWrk.getOriginStartPoint());
- taskOverToWms.setTargetLocationCode(taskWrk.getOriginTargetPoint()); //鐩爣搴撲綅
- }
- taskOverToWms.setTaskStatus("location_done"); //浠诲姟鐘舵��
- String response = null;
- try {
- response = new HttpHandler.Builder()
- .setHeaders(map)
- .setUri("10.32.53.195:8080")
- .setPath("wcsManager/wcsInterface/taskStatusFeedback")
- .setJson(JSON.toJSONString(taskOverToWms))
- .build()
- .doPost();
- }catch (Exception e){
- log.error("鍫嗗灈鏈轰换鍔″畬鎴愶紝璇锋眰wms浠诲姟瀹屾垚鎺ュ彛澶辫触");
- }
- ApiLogService apiLogService = SpringUtils.getBean(ApiLogService.class);
- apiLogService.save("Wms浠诲姟瀹屾垚鎺ュ彛"
- ,"10.32.53.195:8080"+"/wcsManager/wcsInterface/taskStatusFeedback"
- ,null
- ,"127.0.0.1"
- ,JSON.toJSONString(taskOverToWms)
- ,response
- ,true
- );
- JSONObject jsonObject = JSON.parseObject(response);
- if (jsonObject.getInteger("code").equals(200)){
- if (taskWrk.getIoType() == 3){
- taskWrk.setWrkSts(4);
- }
- taskWrk.setStatus(5);
- if (!taskWrkService.update(taskWrk,new EntityWrapper<TaskWrk>().eq("wrk_no",crnProtocol.getTaskNo()))){
- log.error("鍫嗗灈鏈轰换鍔″畬鎴愶紝鏀瑰彉浠诲姟鐘舵�佸け璐�");
- }
+ List<boolean[]> errorPointList = new ArrayList<>();
+ if (result2.IsSuccess) {
+ for (int i = 0; i < result2.Content.length; i++) {
+ boolean[] valList = siemensNet.getByteTransform().TransBool(result2.Content, i, 1);
+ errorPointList.add(valList);
+ }
+ }
- log.info("鍫嗗灈鏈轰换鍔″畬鎴愶紝璇锋眰wms浠诲姟瀹屾垚鎺ュ彛鎴愬姛");
- }else {
- log.error("鍫嗗灈鏈轰换鍔″畬鎴愶紝璇锋眰wms浠诲姟瀹屾垚鎺ュ彛瀹屾垚锛屼絾杩斿洖澶辫触");
- }
-
+ if (System.currentTimeMillis() - crnProtocol.getDeviceDataLog() > 1000 * 5) {
+ if (this.originDeviceData != null) {
+ //閲囬泦鏃堕棿瓒呰繃5s锛屼繚瀛樹竴娆℃暟鎹褰�
+ //淇濆瓨鏁版嵁璁板綍
+ DeviceDataLogService deviceDataLogService = SpringUtils.getBean(DeviceDataLogService.class);
+ if (deviceDataLogService == null) {
+ return;
}
+ HashMap<String, Object> originData = new HashMap<>();
+ originData.put("readStatus", this.originDeviceData);
+ originData.put("errorPoints", errorPointList);
+ DeviceDataLog deviceDataLog = new DeviceDataLog();
+ deviceDataLog.setOriginData(JSON.toJSONString(originData));
+ deviceDataLog.setWcsData(JSON.toJSONString(crnProtocol));
+ deviceDataLog.setType(String.valueOf(SlaveType.Crn));
+ deviceDataLog.setDeviceNo(slave.getId());
+ deviceDataLog.setCreateTime(new Date());
+ deviceDataLogService.insert(deviceDataLog);
+ //鏇存柊閲囬泦鏃堕棿
+ crnProtocol.setDeviceDataLog(System.currentTimeMillis());
}
}
@@ -393,13 +321,13 @@
// array[10] = command.getDestinationStaNo();
array[9] = command.getCommand();
OperateResult result18 = siemensNet.Write("DB100.18", (short)0);
-
+ Thread.sleep(100L);
OperateResult result = siemensNet.Write("DB100.0", array);
int i=0;
do{
//鍫嗗灈鏈轰换鍔″啓鍏ュ悗锛屽洖璇讳竴娆★紝鐪嬫槸鍚︽垚鍔�
- Thread.sleep(300);
+ Thread.sleep(100);
OperateResultExOne<byte[]> resultRead = siemensNet.Read("DB100.0", (short) 20);
if (resultRead.IsSuccess) {
CrnCommand one = new CrnCommand();
@@ -420,28 +348,32 @@
log.error("鍫嗗灈鏈哄懡浠ゅ湴鍧�鍐欏叆鍚庡洖璇诲け璐id:{}]>>>>閲嶅啓[{}] >>>>> 鍐欏叆[{}],===>>鍥炶[{}]", slave.getId(), i,JSON.toJSON(command),JSON.toJSON(one));
result = siemensNet.Write("DB100.0", array);
}else{
- short commandFinish = 1;
- Thread.sleep(100L);
- result = siemensNet.Write("DB100.18", commandFinish);
- int signFinish = 1;
- while (signFinish<5){
- OperateResultExOne<byte[]> result10018 = siemensNet.Read("DB100.18", (short) 2);
- short transInt16 = siemensNet.getByteTransform().TransInt16(result10018.Content, 0);
- if (transInt16 != commandFinish){
- log.info("涓嬪彂DB100.18 鍥炶澶辫触" + "commandFinish:"+commandFinish);
- log.info("涓嬪彂DB100.18 鍥炶澶辫触" + "array:"+ JSON.toJSONString(array));
- result = siemensNet.Write("DB100.18", commandFinish);
- signFinish++;
- }else {
- log.info("涓嬪彂DB100.18" + "commandFinish:"+commandFinish);
- log.info("涓嬪彂DB100.18" + "array:"+ JSON.toJSONString(array));
- break;
- }
- }
break;
}
}
}while(i<5);
+
+ if (command.getAckFinish() == 0) {
+ short commandFinish = 1;
+ Thread.sleep(100L);
+ result = siemensNet.Write("DB100.18", commandFinish);
+ int signFinish = 1;
+ while (signFinish<5){
+ OperateResultExOne<byte[]> result10018 = siemensNet.Read("DB100.18", (short) 2);
+ short transInt16 = siemensNet.getByteTransform().TransInt16(result10018.Content, 0);
+ if (transInt16 != commandFinish){
+ log.info("涓嬪彂DB100.18 鍥炶澶辫触" + "commandFinish:"+commandFinish);
+ log.info("涓嬪彂DB100.18 鍥炶澶辫触" + "array:"+ JSON.toJSONString(array));
+ result = siemensNet.Write("DB100.18", commandFinish);
+ signFinish++;
+ }else {
+ log.info("涓嬪彂DB100.18" + "commandFinish:"+commandFinish);
+ log.info("涓嬪彂DB100.18" + "array:"+ JSON.toJSONString(array));
+ break;
+ }
+ }
+ }
+
try {
// 鏃ュ織璁板綍
BasCrnOptService bean = SpringUtils.getBean(BasCrnOptService.class);
--
Gitblit v1.9.1