From 44be6da8fc2740a7e81d5b878a894e318b6a5f8c Mon Sep 17 00:00:00 2001
From: lsh <lsh@163.com>
Date: 星期日, 27 四月 2025 15:51:37 +0800
Subject: [PATCH] *
---
src/main/java/com/zy/core/model/CrnSlave.java | 5 +
src/main/java/com/zy/core/thread/SiemensCrnThread.java | 5 +
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 72 ++++++++++++++----
src/main/resources/application-prod.yml | 84 ++++++++++++++++++++
src/main/java/com/zy/core/model/command/CrnCommand.java | 1
src/main/java/com/zy/core/model/protocol/CrnProtocol.java | 1
src/main/resources/application.yml | 2
src/main/java/com/zy/asrs/entity/StaDesc.java | 14 +++
8 files changed, 164 insertions(+), 20 deletions(-)
diff --git a/src/main/java/com/zy/asrs/entity/StaDesc.java b/src/main/java/com/zy/asrs/entity/StaDesc.java
index c6b4a61..942b614 100644
--- a/src/main/java/com/zy/asrs/entity/StaDesc.java
+++ b/src/main/java/com/zy/asrs/entity/StaDesc.java
@@ -69,6 +69,14 @@
private Integer crnNo;
/**
+ * 鍫嗗灈鏈哄彿
+ */
+ @ApiModelProperty(value= "鍫嗗灈鏈哄彿")
+ @TableId(value = "LANE_NO", type = IdType.INPUT)
+ @TableField("LANE_NO")
+ private Integer laneNo;
+
+ /**
* 鍫嗗灈鏈虹珯鐐�
*/
@ApiModelProperty(value= "鍫嗗灈鏈虹珯鐐�")
@@ -301,5 +309,11 @@
return basWrkIotype.getIoDesc();
}
+ public Integer getLaneNo() {
+ return laneNo;
+ }
+ public void setLaneNo(Integer laneNo) {
+ this.laneNo = laneNo;
+ }
}
diff --git a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
index be3b65a..8fda140 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -384,9 +384,28 @@
*/
public void crnStnToOutStn() {
for (CrnSlave crnSlave : slaveProperties.getCrn()) {
+
+ // 鑾峰彇鍫嗗灈鏈轰俊鎭�
+ CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, crnSlave.getId());
+ CrnProtocol crnProtocol = crnThread.getCrnProtocol();
+ if (crnProtocol == null) { continue; }
+ BasCrnp basCrnp = basCrnpService.selectById(crnSlave.getId());
+ if (basCrnp == null) {
+ log.error("{}鍙峰爢鍨涙満灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�", crnSlave.getId());
+ continue;
+ }
+ if (!crnSlave.getId().equals(crnProtocol.getLaneNo())){
+ for (CrnSlave crnOther : slaveProperties.getCrn()) {
+ if (crnOther.getId().equals(crnProtocol.getLaneNo())){
+ crnSlave.updateCrnInStn(crnOther);
+ }
+ }
+ }
// 閬嶅巻鍫嗗灈鏈哄嚭搴撶珯
for (CrnSlave.CrnStn crnStn : crnSlave.getCrnOutStn()) {
- List<StaDesc> staDescs = staDescMapper.selectList(new EntityWrapper<StaDesc>().eq("crn_no", crnSlave.getId()).eq("crn_stn", crnStn.getStaNo()));
+
+ List<StaDesc> staDescs = staDescMapper.selectList(new EntityWrapper<StaDesc>().eq("CRN_NO", crnSlave.getId()).eq("LANE_NO", crnProtocol.getLaneNo()).eq("CRN_STN", crnStn.getStaNo()));
+// List<StaDesc> staDescs = staDescMapper.selectList(new EntityWrapper<StaDesc>().eq("crn_no", crnSlave.getId()).eq("").eq("crn_stn", crnStn.getStaNo()));
for (StaDesc staDesc : staDescs){
try{
// 鑾峰彇鍫嗗灈鏈哄嚭搴撶珯淇℃伅
@@ -399,7 +418,7 @@
}
if (staProtocol.isAutoing() && staProtocol.isLoading() && (staProtocol.getWorkNo() == 0 || staProtocol.getStaNo() == 0)) {
// 鏌ヨ宸ヤ綔妗�
- TaskWrk taskWrk = taskWrkMapper.selectCrnStaWorking(crnSlave.getId(), staDesc.getStnNo().toString());
+ TaskWrk taskWrk = taskWrkMapper.selectCrnStaWorking(crnProtocol.getLaneNo(), staDesc.getStnNo().toString());
if (taskWrk == null) {
continue;
}
@@ -452,6 +471,14 @@
continue;
}
+ if (!crn.getId().equals(crnProtocol.getLaneNo())){
+ for (CrnSlave crnOther : slaveProperties.getCrn()) {
+ if (crnOther.getId().equals(crnProtocol.getLaneNo())){
+ crn.updateCrnInStn(crnOther);
+ }
+ }
+ }
+
// 搴撲綅绉昏浆
this.locToLoc(crn, crnProtocol);
@@ -488,7 +515,7 @@
*/
public void crnStnToLoc(CrnSlave slave, CrnProtocol crnProtocol) throws IOException {
for (CrnSlave.CrnStn crnStn : slave.getCrnInStn()) {
- List<StaDesc> staDescs = staDescMapper.selectList(new EntityWrapper<StaDesc>().eq("crn_no", slave.getId()).eq("crn_stn", crnStn.getStaNo()));
+ List<StaDesc> staDescs = staDescMapper.selectList(new EntityWrapper<StaDesc>().eq("CRN_NO", slave.getId()).eq("LANE_NO", crnProtocol.getLaneNo()).eq("CRN_STN", crnStn.getStaNo()));
for (StaDesc staDesc : staDescs) {
boolean flag = false;
// 鑾峰彇鍫嗗灈鏈哄叆搴撶珯淇℃伅
@@ -514,7 +541,7 @@
}
// 鑾峰彇宸ヤ綔鐘舵�佷负2锛堣澶囦笂璧帮級鐨勫叆搴撳伐浣滄。
- TaskWrk taskWrk = taskWrkMapper.selectPakIn(slave.getId(), staProtocol.getWorkNo().intValue(), staDesc.getStnNo().toString());
+ TaskWrk taskWrk = taskWrkMapper.selectPakIn(crnProtocol.getLaneNo(), staProtocol.getWorkNo().intValue(), staDesc.getStnNo().toString());
if(null == taskWrk) {
continue;
}
@@ -525,7 +552,7 @@
}
// 宸茬粡瀛樺湪鍚婅溅鎵ц浠诲姟鏃讹紝鍒欒繃婊�
- if (taskWrkMapper.selectCrnWorking(slave.getId()) != null) {
+ if (taskWrkMapper.selectCrnWorking(crnProtocol.getLaneNo()) != null) {
continue;
}
@@ -573,7 +600,8 @@
// 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
CrnCommand crnCommand = new CrnCommand();
- crnCommand.setCrnNo(staDesc.getCrnNo()); // 鍫嗗灈鏈虹紪鍙�
+ crnCommand.setCrnNo(slave.getId()); // 鍫嗗灈鏈虹紪鍙�
+ crnCommand.setCrnNo(staDesc.getLaneNo()); // 鍫嗗灈鏈哄贩閬撶紪鍙�
crnCommand.setTaskNo(taskWrk.getWrkNo().shortValue()); // 宸ヤ綔鍙�
crnCommand.setAckFinish((short) 0); // 浠诲姟瀹屾垚纭浣�
crnCommand.setTaskMode(CrnTaskModeType.LOC_MOVE); // 浠诲姟妯″紡: 搴撲綅绉昏浆
@@ -634,15 +662,17 @@
* 2022-06-09 TQS淇敼锛屾煡璇㈠伐浣滄。LIST锛岄亶鍘嗕笅鍙戯紝闃叉绗竴涓换鍔″牭濉炲嚭搴�
*/
public void locToCrnStn(CrnSlave slave, CrnProtocol crnProtocol){
- List<TaskWrk> taskWrksInitial = taskWrkMapper.selectPakOut(slave.getId(), null);
+ List<TaskWrk> taskWrksInitial = taskWrkMapper.selectPakOut(crnProtocol.getLaneNo(), null);
if (taskWrksInitial.size()==0){
return;
}
for (CrnSlave.CrnStn crnStn : slave.getCrnOutStn()) {
- List<StaDesc> staDescs = staDescMapper.selectList(new EntityWrapper<StaDesc>().eq("crn_no", slave.getId()).eq("crn_stn", crnStn.getStaNo()));
+ List<StaDesc> staDescs = staDescMapper.selectList(new EntityWrapper<StaDesc>().eq("CRN_NO", slave.getId()).eq("LANE_NO", crnProtocol.getLaneNo()).eq("CRN_STN", crnStn.getStaNo()));
+
+// List<StaDesc> staDescs = staDescMapper.selectList(new EntityWrapper<StaDesc>().eq("crn_no", crnProtocol.getLaneNo()).eq("crn_stn", crnStn.getStaNo()));
for (StaDesc staDesc : staDescs){
// 鑾峰彇宸ヤ綔鐘舵�佷负11锛堢敓鎴愬嚭搴揑D锛夌殑鍑哄簱宸ヤ綔妗�
- List<TaskWrk> taskWrks = taskWrkMapper.selectPakOut(slave.getId(),staDesc.getStnNo().toString());
+ List<TaskWrk> taskWrks = taskWrkMapper.selectPakOut(crnProtocol.getLaneNo(),staDesc.getStnNo().toString());
for (TaskWrk taskWrk : taskWrks){
if (taskWrk == null) {
continue;
@@ -679,12 +709,13 @@
}
// 宸茬粡瀛樺湪鍚婅溅鎵ц浠诲姟鏃讹紝鍒欒繃婊�
- if (taskWrkMapper.selectCrnWorking(slave.getId()) != null) {
+ if (taskWrkMapper.selectCrnWorking(crnProtocol.getLaneNo()) != null) {
break;
}
CrnCommand command = new CrnCommand();
- command.setCrnNo(taskWrk.getCrnNo()); // 鍫嗗灈鏈虹紪鍙�
+ command.setCrnNo(slave.getId()); // 鍫嗗灈鏈虹紪鍙�
+ command.setLaneNo(crnProtocol.getLaneNo()); // 鍫嗗灈鏈虹紪鍙�
command.setTaskNo(taskWrk.getWrkNo().shortValue()); // 宸ヤ綔鍙�
command.setAckFinish((short) 0); // 浠诲姟瀹屾垚纭浣�
command.setTaskMode(CrnTaskModeType.PAKIN); // 浠诲姟妯″紡
@@ -696,7 +727,7 @@
command.setDestinationPosZ(crnStn.getLev().shortValue()); // 鐩爣搴撲綅灞�
command.setCommand((short)1);
if (!CommandUtils.offer(SlaveType.Crn, taskWrk.getCrnNo(), new Task(2, command),false)) {
- log.error("鍫嗗灈鏈哄懡浠ょ敓鎴愬け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", taskWrk.getCrnNo(), JSON.toJSON(command));
+ log.error("鍫嗗灈鏈哄懡浠ょ敓鎴愬け璐ワ紝鍫嗗灈鏈哄彿={}锛屽贩閬�={}锛屼换鍔℃暟鎹�={}",slave.getId(), taskWrk.getCrnNo(), JSON.toJSON(command));
throw new CoolException("鍫嗗灈鏈哄懡浠ょ敓鎴愬け璐�");
}else{
try{
@@ -755,7 +786,7 @@
// 鑾峰彇宸ヤ綔鐘舵�佷负11锛堢敓鎴愬嚭搴揑D锛夌殑绉诲簱宸ヤ綔妗�
List<TaskWrk> taskWrks = taskWrkMapper.selectList(
new EntityWrapper<TaskWrk>()
- .eq("CRN_NO",slave.getId())
+ .eq("CRN_NO",crnProtocol.getLaneNo())
.eq("WRK_STS",11)
.eq("IO_TYPE",3)
.orderBy("IO_PRI",false));
@@ -775,7 +806,7 @@
}
// 宸茬粡瀛樺湪鍚婅溅鎵ц浠诲姟鏃讹紝鍒欒繃婊�
- if (taskWrkMapper.selectCrnWorking(slave.getId()) != null) {
+ if (taskWrkMapper.selectCrnWorking(crnProtocol.getLaneNo()) != null) {
continue;
}
@@ -796,6 +827,7 @@
// 1.鍫嗗灈鏈哄紑濮嬬Щ鍔�
CrnCommand crnCommand = new CrnCommand();
crnCommand.setCrnNo(slave.getId()); // 鍫嗗灈鏈虹紪鍙�
+ crnCommand.setLaneNo(crnProtocol.getLaneNo()); // 鍫嗗灈鏈虹紪鍙�
crnCommand.setTaskNo(taskWrk.getWrkNo().shortValue()); // 宸ヤ綔鍙�
crnCommand.setAckFinish((short) 0); // 浠诲姟瀹屾垚纭浣�
crnCommand.setTaskMode(CrnTaskModeType.LOC_MOVE); // 浠诲姟妯″紡: 搴撲綅绉昏浆
@@ -863,12 +895,20 @@
CrnProtocol crnProtocol = crnThread.getCrnProtocol();
if (crnProtocol == null) { continue; }
+ if (!crn.getId().equals(crnProtocol.getLaneNo())){
+ for (CrnSlave crnOther : slaveProperties.getCrn()) {
+ if (crnOther.getId().equals(crnProtocol.getLaneNo())){
+ crn.updateCrnInStn(crnOther);
+ }
+ }
+ }
+
// 鐘舵�侊細绛夊緟纭 骞朵笖 浠诲姟瀹屾垚浣� = 1
if (!Cools.isEmpty(crnProtocol.getTaskFinish()) && crnProtocol.getTaskFinish() == 0 && crnProtocol.statusType == CrnStatusType.WAITING && crnProtocol.getTaskNo() != 0) {
//鑾峰彇鍏ュ簱寰呯‘璁ゅ伐浣滄。
- TaskWrk taskWrk = taskWrkMapper.selectCrnNoInWorking(crn.getId(),crnProtocol.getTaskNo().intValue());
+ TaskWrk taskWrk = taskWrkMapper.selectCrnNoInWorking(crnProtocol.getLaneNo(),crnProtocol.getTaskNo().intValue());
if (Cools.isEmpty(taskWrk)&&crnProtocol.getTaskNo() !=999) {
- log.error("鍫嗗灈鏈哄浜庣瓑寰呯‘璁や笖浠诲姟瀹屾垚鐘舵�侊紝浣嗘湭鎵惧埌宸ヤ綔妗c�傚爢鍨涙満鍙�={}锛屽伐浣滃彿={}", crn.getId(), crnProtocol.getTaskNo());
+ log.error("鍫嗗灈鏈哄浜庣瓑寰呯‘璁や笖浠诲姟瀹屾垚鐘舵�侊紝浣嗘湭鎵惧埌宸ヤ綔妗c�傚爢鍨涙満鍙�={}锛屽贩閬撳彿={}锛屽伐浣滃彿={}", crn.getId(),crnProtocol.getLaneNo(), crnProtocol.getTaskNo());
continue;
}
Thread.sleep(300);
diff --git a/src/main/java/com/zy/core/model/CrnSlave.java b/src/main/java/com/zy/core/model/CrnSlave.java
index f84dcdc..d7d8d68 100644
--- a/src/main/java/com/zy/core/model/CrnSlave.java
+++ b/src/main/java/com/zy/core/model/CrnSlave.java
@@ -51,4 +51,9 @@
}
+ public void updateCrnInStn(CrnSlave crnSlave){
+ crnInStn = crnSlave.getCrnInStn();
+ crnOutStn = crnSlave.getCrnOutStn();
+ }
+
}
diff --git a/src/main/java/com/zy/core/model/command/CrnCommand.java b/src/main/java/com/zy/core/model/command/CrnCommand.java
index cea2f4d..9454973 100644
--- a/src/main/java/com/zy/core/model/command/CrnCommand.java
+++ b/src/main/java/com/zy/core/model/command/CrnCommand.java
@@ -16,6 +16,7 @@
// 鍫嗗灈鏈哄彿
private Integer crnNo = 0;
+ private Integer laneNo = 0;
// 浠诲姟瀹屾垚纭浣�
private Short ackFinish = 0;
diff --git a/src/main/java/com/zy/core/model/protocol/CrnProtocol.java b/src/main/java/com/zy/core/model/protocol/CrnProtocol.java
index a9b3212..36cad3c 100644
--- a/src/main/java/com/zy/core/model/protocol/CrnProtocol.java
+++ b/src/main/java/com/zy/core/model/protocol/CrnProtocol.java
@@ -14,6 +14,7 @@
public class CrnProtocol {
private Integer crnNo;
+ private Integer laneNo;
/**
* 1 = 鎵嬪姩妯″紡
diff --git a/src/main/java/com/zy/core/thread/SiemensCrnThread.java b/src/main/java/com/zy/core/thread/SiemensCrnThread.java
index 40592be..cd97abe 100644
--- a/src/main/java/com/zy/core/thread/SiemensCrnThread.java
+++ b/src/main/java/com/zy/core/thread/SiemensCrnThread.java
@@ -159,8 +159,11 @@
if (result.IsSuccess) {
if (null == crnProtocol) {
crnProtocol = new CrnProtocol();
- crnProtocol.setCrnNo(slave.getId());
}
+ crnProtocol.setCrnNo(slave.getId());
+
+ crnProtocol.setLaneNo(siemensNet.getByteTransform().TransInt32(result.Content, 0));//宸烽亾鍙�
+
crnProtocol.setMode(siemensNet.getByteTransform().TransInt16(result.Content, 0));
crnProtocol.setTaskNo(siemensNet.getByteTransform().TransInt16(result.Content, 2));
crnProtocol.setStatus(siemensNet.getByteTransform().TransInt16(result.Content, 4));
diff --git a/src/main/resources/application-prod.yml b/src/main/resources/application-prod.yml
index 29de2ec..b8a26bd 100644
--- a/src/main/resources/application-prod.yml
+++ b/src/main/resources/application-prod.yml
@@ -1,7 +1,7 @@
wcs-slave:
- doubleDeep: true #鍙屾繁
+ doubleDeep: false #鍙屾繁
doubleLocs: 3,6,7,10,13 #鍙屾繁搴撲綅鎺掑彿 3,6,7,10,13
- groupCount: 4 #涓�涓爢鍨涙満璐熻矗鐨勮揣鏋舵帓鏁�
+ groupCount: 2 #涓�涓爢鍨涙満璐熻矗鐨勮揣鏋舵帓鏁�
crn[0]: #鍫嗗灈鏈�1
ip: 192.168.4.250
id: 1
@@ -22,6 +22,86 @@
bay: 1
lev: 1
devpPlcId: ${wcs-slave.devp[0].id}
+ crn[1]: #鍫嗗灈鏈�1
+ ip: 192.168.4.250
+ id: 2
+ slot: 0
+ demo: false
+ rack: 0
+ offset: 2 #鍋忕Щ閲忥紝褰撳爢鍨涙満绔欑偣鍒楀彿=1鏃讹紝鍋忕Щ閲�=2
+ port: 102
+ crnOutStn[0]: #鍫嗗灈鏈哄嚭搴撶珯鐐�
+ staNo: 101
+ row: 2
+ bay: 1
+ lev: 1
+ devpPlcId: ${wcs-slave.devp[0].id}
+ crnInStn[0]: #鍫嗗灈鏈哄叆搴撶珯鐐�1
+ staNo: 100
+ row: 1
+ bay: 1
+ lev: 1
+ devpPlcId: ${wcs-slave.devp[0].id}
+ crn[2]: #鍫嗗灈鏈�1
+ ip: 192.168.4.250
+ id: 3
+ slot: 0
+ demo: false
+ rack: 0
+ offset: 2 #鍋忕Щ閲忥紝褰撳爢鍨涙満绔欑偣鍒楀彿=1鏃讹紝鍋忕Щ閲�=2
+ port: 102
+ crnOutStn[0]: #鍫嗗灈鏈哄嚭搴撶珯鐐�
+ staNo: 101
+ row: 2
+ bay: 1
+ lev: 1
+ devpPlcId: ${wcs-slave.devp[0].id}
+ crnInStn[0]: #鍫嗗灈鏈哄叆搴撶珯鐐�1
+ staNo: 100
+ row: 1
+ bay: 1
+ lev: 1
+ devpPlcId: ${wcs-slave.devp[0].id}
+ crn[3]: #鍫嗗灈鏈�1
+ ip: 192.168.4.250
+ id: 4
+ slot: 0
+ demo: false
+ rack: 0
+ offset: 2 #鍋忕Щ閲忥紝褰撳爢鍨涙満绔欑偣鍒楀彿=1鏃讹紝鍋忕Щ閲�=2
+ port: 102
+ crnOutStn[0]: #鍫嗗灈鏈哄嚭搴撶珯鐐�
+ staNo: 101
+ row: 2
+ bay: 1
+ lev: 1
+ devpPlcId: ${wcs-slave.devp[0].id}
+ crnInStn[0]: #鍫嗗灈鏈哄叆搴撶珯鐐�1
+ staNo: 100
+ row: 1
+ bay: 1
+ lev: 1
+ devpPlcId: ${wcs-slave.devp[0].id}
+ crn[4]: #鍫嗗灈鏈�1
+ ip: 192.168.4.250
+ id: 5
+ slot: 0
+ demo: false
+ rack: 0
+ offset: 2 #鍋忕Щ閲忥紝褰撳爢鍨涙満绔欑偣鍒楀彿=1鏃讹紝鍋忕Щ閲�=2
+ port: 102
+ crnOutStn[0]: #鍫嗗灈鏈哄嚭搴撶珯鐐�
+ staNo: 101
+ row: 2
+ bay: 1
+ lev: 1
+ devpPlcId: ${wcs-slave.devp[0].id}
+ crnInStn[0]: #鍫嗗灈鏈哄叆搴撶珯鐐�1
+ staNo: 100
+ row: 1
+ bay: 1
+ lev: 1
+ devpPlcId: ${wcs-slave.devp[0].id}
barcode[0]: #鏉$爜鎵弿浠�1
port: 51236
ip: 10.10.10.52
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index afc15d7..cd922e4 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -1,5 +1,5 @@
server:
- port: 8080
+ port: 8083
servlet:
context-path: /@pom.build.finalName@
--
Gitblit v1.9.1