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