From daadfff0908d6de0552f0cf2b3fac0abb0190945 Mon Sep 17 00:00:00 2001
From: tqs <56479841@qq.com>
Date: 星期六, 03 十二月 2022 16:03:43 +0800
Subject: [PATCH] #
---
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 422 ++++++++++++++++++++++++++++++++++++----------------
src/main/java/com/zy/asrs/mapper/WrkMastMapper.java | 14 +
src/main/resources/mapper/WrkMastMapper.xml | 8 +
3 files changed, 316 insertions(+), 128 deletions(-)
diff --git a/src/main/java/com/zy/asrs/mapper/WrkMastMapper.java b/src/main/java/com/zy/asrs/mapper/WrkMastMapper.java
index ac14bfa..c860c1f 100644
--- a/src/main/java/com/zy/asrs/mapper/WrkMastMapper.java
+++ b/src/main/java/com/zy/asrs/mapper/WrkMastMapper.java
@@ -31,6 +31,13 @@
// @Select("select top 1 * from dbo.asr_wrk_mast where wrk_sts=2 and crn_no=#{crnNo} and wrk_no=#{workNo} and (io_type=1 or io_type=10 or io_type=53 or io_type=54 or io_type=57) order by io_pri desc,io_time,wrk_no ASC")
WrkMast selectPakInStep2(@Param("crnNo")Integer crnNo, @Param("workNo")Integer workNo, @Param("staNo")Integer staNo);
+ /**
+ * 鏌ヨ鍚屼竴鍙板爢鍨涙満涓嬫墍鏈夊嚭搴撲换鍔�
+ * @param crnNo
+ * @return
+ */
+ List<WrkMast> selectPakInStep12(@Param("crnNo")Integer crnNo);
+
// 鍏ュ簱绗笁姝ワ紝褰撳爢鍨涙満鎶婅揣鏀惧叆搴撲綅鏃�
// @Select("select top 1 from dbo.asr_wrk_mast where wrk_no=#{workNo}")
WrkMast selectPakInStep3(@Param("workNo")Integer workNo);
@@ -101,6 +108,13 @@
*/
List<WrkMast> selectPakOutStep11(@Param("crnNo")Integer crnNO, @Param("sourceStaNo")Integer sourceStaNo);
+ /**
+ * 鏌ヨ鍚屼竴鍙板爢鍨涙満涓嬫墍鏈夊嚭搴撲换鍔�
+ * @param crnNO
+ * @return
+ */
+ List<WrkMast> selectPakOutStep12(@Param("crnNo")Integer crnNO);
+
WrkMast selectWorkingPakin(@Param("sourceStaNo")Integer sourceStaNo);
WrkMast selectWorkingPakout(@Param("sourceStaNo")Integer sourceStaNo);
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 7769479..44c8d87 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -96,7 +96,7 @@
* 缁勬墭
* 鍏ュ簱绔欙紝鏍规嵁鏉$爜鎵弿鐢熸垚鍏ュ簱宸ヤ綔妗o紝宸ヤ綔鐘舵�� 2
*/
- public void generateStoreWrkFile() {
+ public synchronized void generateStoreWrkFile() {
// 鏍规嵁杈撻�佺嚎plc閬嶅巻
for (DevpSlave devp : slaveProperties.getDevp()) {
// 閬嶅巻鍏ュ簱鍙�
@@ -215,7 +215,7 @@
* wms鍏ュ簱
* 鍏ュ簱绔欙紝鏍规嵁鏉$爜鎵弿鐢熸垚鍏ュ簱宸ヤ綔妗o紝宸ヤ綔鐘舵�� 1 ==>> 2
*/
- public void generateStoreWrkFile0() {
+ public synchronized void generateStoreWrkFile0() {
// 鏍规嵁杈撻�佺嚎plc閬嶅巻
for (DevpSlave devp : slaveProperties.getDevp()) {
// 閬嶅巻鍏ュ簱鍙�
@@ -481,20 +481,20 @@
// 濡傛灉鏈�杩戜竴娆℃槸鍏ュ簱妯″紡
if (crnProtocol.getLastIo().equals("I")) {
if (basCrnp.getInEnable().equals("Y")) {
- this.crnStnToLoc(crn, crnProtocol); // 鍏ュ簱
+ this.crnStnToLoc1(crn, crnProtocol); // 鍏ュ簱
crnProtocol.setLastIo("O");
} else if (basCrnp.getOutEnable().equals("Y")) {
- this.locToCrnStn(crn, crnProtocol); // 鍑哄簱
+ this.locToCrnStn1(crn, crnProtocol); // 鍑哄簱
crnProtocol.setLastIo("I");
}
}
// 濡傛灉鏈�杩戜竴娆℃槸鍑哄簱妯″紡
else if (crnProtocol.getLastIo().equals("O")) {
if (basCrnp.getOutEnable().equals("Y")) {
- this.locToCrnStn(crn, crnProtocol); // 鍑哄簱
+ this.locToCrnStn1(crn, crnProtocol); // 鍑哄簱
crnProtocol.setLastIo("I");
} else if (basCrnp.getInEnable().equals("Y")) {
- this.crnStnToLoc(crn, crnProtocol); // 鍏ュ簱
+ this.crnStnToLoc1(crn, crnProtocol); // 鍏ュ簱
crnProtocol.setLastIo("O");
}
}
@@ -694,7 +694,7 @@
}
continue;
} else if (shallowLoc.getLocSts().equals("Q")) {
- WrkMast waitWrkMast = wrkMastMapper.selectByLocNo(shallowLocNo);
+ WrkMast waitWrkMast = wrkMastMapper.selectByLocNo1(shallowLocNo);
if (null != waitWrkMast && waitWrkMast.getWrkSts() == 4) {
continue;
}
@@ -742,10 +742,144 @@
}
/**
+ * 鍏ュ簱 ===>> 鍫嗗灈鏈虹珯鍒板簱浣�
+ * 2022-12-03 TQS淇敼锛屽厛閬嶅巻鏌ヨ鍚屽彴鍫嗗灈鏈哄伐浣滄。鎵�鏈夌珯鐐瑰叆搴撲换鍔IST锛屾牴鎹伐浣滄。浠诲姟鎺掑簭浼樺厛绾ч珮浜� 鏍规嵁鍫嗗灈鏈哄叆搴撶珯鐐规帓搴�
+ */
+ public synchronized void crnStnToLoc1(CrnSlave slave, CrnProtocol crnProtocol) {
+ List<WrkMast> wrkMasts = wrkMastMapper.selectPakInStep12(slave.getId());
+ for(WrkMast wrkMast : wrkMasts){
+ if (wrkMast == null) {
+ continue;
+ }
+
+ CrnSlave.CrnStn crnStn = null;
+ for (CrnSlave.CrnStn crnStn1 : slave.getCrnInStn()){
+ if(crnStn1.getStaNo() == wrkMast.getStaNo()){
+ crnStn = crnStn1;
+ break;
+ } else {
+ continue;
+ }
+ }
+ if(Cools.isEmpty(crnStn)){
+ continue;
+ }
+
+ boolean flag = false;
+ // 鑾峰彇鍫嗗灈鏈哄叆搴撶珯淇℃伅
+ DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, crnStn.getDevpPlcId());
+ StaProtocol staProtocol = devpThread.getStation().get(crnStn.getStaNo());
+ if (staProtocol == null) {
+ continue;
+ } else {
+ staProtocol = staProtocol.clone();
+ }
+ // 鏌ヨ绔欑偣璇︾粏淇℃伅
+ BasDevp staDetl = basDevpService.selectById(crnStn.getStaNo());
+ if (staDetl == null) {
+ log.error("鍏ュ簱 ===>> 鍫嗗灈鏈虹珯鐐瑰湪鏁版嵁搴撲笉瀛樺湪, 绔欑偣缂栧彿={}", crnStn.getStaNo());
+ continue;
+ }
+ if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.getWorkNo() > 0 && staProtocol.isInEnable()
+ && staDetl.getCanining() != null && staDetl.getCanining().equals("Y")) {
+ flag = true;
+ }
+ if (!flag) {
+ continue;
+ }
+
+ // 鑾峰彇搴撲綅淇℃伅
+ LocMast locMast = locMastService.selectById(wrkMast.getLocNo());
+ if (locMast == null) {
+ log.error("鏌ヨ搴撳瓨鏃犳暟鎹�--搴撲綅鍙穥}", wrkMast.getLocNo());
+ continue;
+ }
+ if (!locMast.getLocSts().equals("S") && !locMast.getLocSts().equals("Q")) {
+ log.error("鍏ュ簱鎿嶄綔搴撲綅鐘舵�佷笉绗﹀悎--鐘舵��, 搴撲綅鍙�={}锛屽簱浣嶇姸鎬�={}", wrkMast.getLocNo(), locMast.getLocSts());
+ continue;
+ }
+
+ // 鍫嗗灈鏈烘帶鍒惰繃婊�
+ if (!crnProtocol.getStatusType().equals(CrnStatusType.IDLE) || crnProtocol.getTaskNo() != 0) {
+ continue;
+ }
+
+ // 宸茬粡瀛樺湪鍚婅溅鎵ц浠诲姟鏃讹紝鍒欒繃婊�
+ if (wrkMastMapper.selectWorking(slave.getId()) != null) {
+ continue;
+ }
+
+ // 鍙屾繁搴撲綅涓旀祬搴撲綅鏈夎揣锛屽垯闇�鍏堝娴呭簱浣嶈繘琛屽簱浣嶇Щ杞�
+ if (Utils.isDeepLoc(slaveProperties, wrkMast.getLocNo())) {
+ String shallowLocNo = Utils.getShallowLoc(slaveProperties, wrkMast.getLocNo());
+ LocMast shallowLoc = locMastService.selectById(shallowLocNo);
+ // O.绌哄簱浣嶃�丵.鎷f枡/鐩樼偣/骞舵澘鍐嶅叆搴撱�丼.鍏ュ簱棰勭害銆乆.绂佺敤 鐩存帴鎼紒
+ if (shallowLoc.getLocSts().equals("P") || shallowLoc.getLocSts().equals("R")) {
+ WrkMast waitWrkMast = wrkMastMapper.selectByLocNo(shallowLocNo);
+ if (null == waitWrkMast) {
+ log.error("{}搴撲綅寮傚父锛屾湭妫�绱㈠埌鐩稿簲宸ヤ綔妗o紒", shallowLocNo);
+ } else {
+ waitWrkMast.setIoPri(15D);
+ waitWrkMast.setModiTime(new Date());
+ if (wrkMastMapper.updateById(waitWrkMast) == 0) {
+ log.error("璋冩暣宸ヤ綔妗d紭鍏堢骇澶辫触锛佸伐浣滃彿={}", waitWrkMast.getWrkNo());
+ }
+ continue;
+ }
+
+ } else if (shallowLoc.getLocSts().equals("F") || shallowLoc.getLocSts().equals("D")) {
+ // 姝ゆ爣璁伴伩鍏嶅娆℃墽琛岀Щ搴撲换鍔�
+ if (Cools.isEmpty(wrkMast.getUpdMk()) || "N".equals(wrkMast.getUpdMk())) {
+ wrkMast.setUpdMk("Y");
+ wrkMast.setIoPri(14D);
+ wrkMastMapper.updateById(wrkMast);
+ // 鐢熸垚宸ヤ綔妗�,灏嗘祬搴撲綅绉昏浆鍒版柊鐨勫簱浣嶄腑
+ moveLocForDeepLoc(slave, shallowLoc);
+ // 鐢熸垚宸ヤ綔妗c�佹敼鍙樻祬搴撲綅鐨勬簮搴�/鐩爣搴� 搴撲綅鐘舵�併�佷笅鍙戝爢鍨涙満鍛戒护锛堢珛椹墽琛�)
+// moveLocForDeepLocPakin(slave, shallowLoc, wrkMast);
+ }
+ continue;
+ } else if (shallowLoc.getLocSts().equals("Q")) {
+ WrkMast waitWrkMast = wrkMastMapper.selectByLocNo1(shallowLocNo);
+ if (null != waitWrkMast && waitWrkMast.getWrkSts() == 4) {
+ continue;
+ }
+ }
+ }
+
+ // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
+ CrnCommand crnCommand = new CrnCommand();
+ crnCommand.setCrnNo(slave.getId()); // 鍫嗗灈鏈虹紪鍙�
+ crnCommand.setTaskNo(wrkMast.getWrkNo().shortValue()); // 宸ヤ綔鍙�
+ crnCommand.setAckFinish((short) 0); // 浠诲姟瀹屾垚纭浣�
+ crnCommand.setTaskMode(CrnTaskModeType.LOC_MOVE); // 浠诲姟妯″紡: 搴撲綅绉昏浆
+ crnCommand.setSourcePosX(crnStn.getRow().shortValue()); // 婧愬簱浣嶆帓
+ crnCommand.setSourcePosY(crnStn.getBay().shortValue()); // 婧愬簱浣嶅垪
+ crnCommand.setSourcePosZ(crnStn.getLev().shortValue()); // 婧愬簱浣嶅眰
+ crnCommand.setDestinationPosX(locMast.getRow1().shortValue()); // 鐩爣搴撲綅鎺�
+ crnCommand.setDestinationPosY(locMast.getBay1().shortValue()); // 鐩爣搴撲綅鍒�
+ crnCommand.setDestinationPosZ(locMast.getLev1().shortValue()); // 鐩爣搴撲綅灞�
+ if (!MessageQueue.offer(SlaveType.Crn, wrkMast.getCrnNo(), new Task(2, crnCommand))) {
+ log.error("鍫嗗灈鏈哄懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", wrkMast.getCrnNo(), JSON.toJSON(crnCommand));
+ } else {
+ // 淇敼宸ヤ綔妗g姸鎬� 2.璁惧涓婅蛋 => 3.鍚婅溅鍏ュ簱涓�
+ Date now = new Date();
+ wrkMast.setWrkSts(3L);
+ wrkMast.setCrnStrTime(now);
+ wrkMast.setModiTime(now);
+ if (wrkMastMapper.updateById(wrkMast) == 0) {
+ log.error("淇敼宸ヤ綔妗g姸鎬� 2.璁惧涓婅蛋 => 3.鍚婅溅鍏ュ簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo());
+ }
+ }
+ }
+
+ }
+
+ /**
* 鍑哄簱 ===>> 搴撲綅鍒板爢鍨涙満绔�
* 2022-06-09 TQS淇敼锛屾煡璇㈠伐浣滄。LIST锛岄亶鍘嗕笅鍙戯紝闃叉绗竴涓换鍔″牭濉炲嚭搴�
*/
- public void locToCrnStn(CrnSlave slave, CrnProtocol crnProtocol) {
+ public synchronized void locToCrnStn(CrnSlave slave, CrnProtocol crnProtocol) {
for (CrnSlave.CrnStn crnStn : slave.getCrnOutStn()) {
// 鑾峰彇宸ヤ綔鐘舵�佷负11锛堢敓鎴愬嚭搴揑D锛夌殑鍑哄簱宸ヤ綔妗�
// WrkMast wrkMast = wrkMastMapper.selectPakOutStep1(slave.getId(), crnStn.getStaNo());
@@ -836,7 +970,7 @@
log.error("{}浠诲姟鍑哄簱澶辫触锛屾祬搴撲綅鍫靛锛佹祬搴撲綅鍙�:{}", wrkMast.getWrkNo(), shallowLocNo);
continue;
} else if (shallowLoc.getLocSts().equals("Q") || shallowLoc.getLocSts().equals("S")) {
- WrkMast waitWrkMast = wrkMastMapper.selectByLocNo(shallowLocNo);
+ WrkMast waitWrkMast = wrkMastMapper.selectByLocNo1(shallowLocNo);
if (null != waitWrkMast && waitWrkMast.getWrkSts() == 4) {
continue;
}
@@ -879,122 +1013,154 @@
}
}
-// /**
-// * 鍑哄簱 ===>> 搴撲綅鍒板爢鍨涙満绔�
-// */
-// public void locToCrnStn(CrnSlave slave, CrnProtocol crnProtocol){
-// for (CrnSlave.CrnStn crnStn : slave.getCrnOutStn()) {
-// // 鑾峰彇宸ヤ綔鐘舵�佷负11锛堢敓鎴愬嚭搴揑D锛夌殑鍑哄簱宸ヤ綔妗�
-// WrkMast wrkMast = wrkMastMapper.selectPakOutStep1(slave.getId(), crnStn.getStaNo());
-// if (wrkMast == null) {
-// continue;
-// }
-// // 宸ヤ綔妗g姸鎬佸垽鏂�
-// if (wrkMast.getIoType() < 100 || wrkMast.getSourceStaNo() == null){
-// log.error("鏌ヨ宸ヤ綔妗f暟鎹笉绗﹀悎鏉′欢--鍏ュ嚭绫诲瀷/绔欑偣, 宸ヤ綔鍙�={}锛屾簮搴撲綅={}锛屽叆鍑虹被鍨�={}", wrkMast.getWrkNo(), wrkMast.getSourceLocNo(), wrkMast.getIoType());
-// continue;
-// }
-// // 鑾峰彇婧愬簱浣嶄俊鎭�
-// LocMast sourceSta = locMastService.selectById(wrkMast.getSourceLocNo());
-// if (!sourceSta.getLocSts().equals("R") &&!sourceSta.getLocSts().equals("P")) {
-// log.error("鍑哄簱鎿嶄綔搴撲綅鐘舵�佷笉绗﹀悎--鐘舵��, 搴撲綅鍙�={}锛屽簱浣嶇姸鎬�={}", wrkMast.getLocNo(), sourceSta.getLocSts());
-// continue;
-// }
-// // 鑾峰彇鍫嗗灈鏈哄嚭搴撶珯淇℃伅
-// SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, crnStn.getDevpPlcId());
-// StaProtocol staProtocol = devpThread.getStation().get(crnStn.getStaNo());
-// if (staProtocol == null) {
-// continue;
-// } else {
-// staProtocol = staProtocol.clone();
-// }
-//
-//// // 鍏ュ嚭搴撴ā寮忓垽鏂�
-//// if (devpThread.ioMode != IoModeType.PAKOUT_MODE) { continue; }
-//
-//
-// // 鏌ヨ绔欑偣璇︾粏淇℃伅
-// BasDevp staDetl = basDevpService.selectById(crnStn.getStaNo());
-// if (staDetl == null) {
-// log.error("鍑哄簱 ===>> 鍫嗗灈鏈虹珯鐐瑰湪鏁版嵁搴撲笉瀛樺湪, 绔欑偣缂栧彿={}", crnStn.getStaNo());
-// continue;
-// }
-// // 鍒ゆ柇鍫嗗灈鏈哄嚭搴撶珯鐘舵��
-// if (staProtocol.isAutoing() && !staProtocol.isLoading() && staDetl.getCanouting() !=null && staDetl.getCanouting().equals("Y")
-// && staProtocol.getWorkNo() == 0 && staProtocol.isOutEnable()) {
-// // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
-//
-// // 鍫嗗灈鏈烘帶鍒惰繃婊�
-// if (!crnProtocol.getStatusType().equals(CrnStatusType.IDLE) || crnProtocol.getTaskNo() != 0) {
+ /**
+ * 鍑哄簱 ===>> 搴撲綅鍒板爢鍨涙満绔�
+ * 2022-12-03 TQS淇敼锛屽厛閬嶅巻鏌ヨ宸ヤ綔妗f墍鏈夌珯鐐瑰嚭搴撲换鍔IST锛屾牴鎹伐浣滄。浠诲姟鎺掑簭浼樺厛绾ч珮浜� 鏍规嵁鍫嗗灈鏈哄叆搴撶珯鐐规帓搴�
+ */
+ public synchronized void locToCrnStn1(CrnSlave slave, CrnProtocol crnProtocol) {
+ List<WrkMast> wrkMasts = wrkMastMapper.selectPakOutStep12(slave.getId());
+ for (WrkMast wrkMast : wrkMasts) {
+ if (wrkMast == null) {
+ continue;
+ }
+
+ CrnSlave.CrnStn crnStn = null;
+ for (CrnSlave.CrnStn crnStn1 : slave.getCrnOutStn()){
+ if(crnStn1.getStaNo() == wrkMast.getSourceStaNo()){
+ crnStn = crnStn1;
+ break;
+ } else {
+ continue;
+ }
+ }
+ if(Cools.isEmpty(crnStn)){
+ continue;
+ }
+
+ // 宸ヤ綔妗g姸鎬佸垽鏂�
+ if (wrkMast.getIoType() < 100 || wrkMast.getSourceStaNo() == null) {
+ log.error("鏌ヨ宸ヤ綔妗f暟鎹笉绗﹀悎鏉′欢--鍏ュ嚭绫诲瀷/绔欑偣, 宸ヤ綔鍙�={}锛屾簮搴撲綅={}锛屽叆鍑虹被鍨�={}", wrkMast.getWrkNo(), wrkMast.getSourceLocNo(), wrkMast.getIoType());
+ continue;
+ }
+ // 鑾峰彇婧愬簱浣嶄俊鎭�
+ LocMast sourceSta = locMastService.selectById(wrkMast.getSourceLocNo());
+ if (!sourceSta.getLocSts().equals("R") && !sourceSta.getLocSts().equals("P")) {
+ log.error("鍑哄簱鎿嶄綔搴撲綅鐘舵�佷笉绗﹀悎--鐘舵��, 搴撲綅鍙�={}锛屽簱浣嶇姸鎬�={}", wrkMast.getLocNo(), sourceSta.getLocSts());
+ continue;
+ }
+ // 鑾峰彇鍫嗗灈鏈哄嚭搴撶珯淇℃伅
+ SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, crnStn.getDevpPlcId());
+ StaProtocol staProtocol = devpThread.getStation().get(crnStn.getStaNo());
+ if (staProtocol == null) {
+ break;
// continue;
-// }
-//
-// // 鍙屾繁搴撲綅涓旀祬搴撲綅鏈夎揣锛屽垯闇�鍏堝娴呭簱浣嶈繘琛屽簱浣嶇Щ杞�
-// if (Utils.isDeepLoc(slaveProperties, wrkMast.getSourceLocNo())) {
-// String shallowLocNo = Utils.getShallowLoc(slaveProperties, wrkMast.getSourceLocNo());
-// LocMast shallowLoc = locMastService.selectById(shallowLocNo);
-// // O.绌哄簱浣嶃�丵.鎷f枡/鐩樼偣/骞舵澘鍐嶅叆搴撱�丼.鍏ュ簱棰勭害銆乆.绂佺敤 鐩存帴鎼紒
-// if (shallowLoc.getLocSts().equals("P") || shallowLoc.getLocSts().equals("R")) {
-// WrkMast waitWrkMast = wrkMastMapper.selectByLocNo(shallowLocNo);
-// if (null == waitWrkMast) {
-// log.error("{}搴撲綅寮傚父锛屾湭妫�绱㈠埌鐩稿簲宸ヤ綔妗o紒", shallowLocNo);
-// } else {
-// if(waitWrkMast.getWrkSts() == 11) {
-// waitWrkMast.setIoPri(15D);
-// waitWrkMast.setModiTime(new Date());
-// if (wrkMastMapper.updateById(waitWrkMast) == 0) {
-// log.error("璋冩暣宸ヤ綔妗d紭鍏堢骇澶辫触锛佸伐浣滃彿={}", waitWrkMast.getWrkNo());
-// }
-// continue;
-// } else {
-//
-// }
-// }
-// } else if (shallowLoc.getLocSts().equals("F") || shallowLoc.getLocSts().equals("D")) {
-// // 姝ゆ爣璁伴伩鍏嶅娆℃墽琛岀Щ搴撲换鍔�
-// if (Cools.isEmpty(wrkMast.getUpdMk()) || "N".equals(wrkMast.getUpdMk())) {
-// wrkMast.setUpdMk("Y");
-// wrkMastMapper.updateById(wrkMast);
-// // 鐢熸垚宸ヤ綔妗c�佹敼鍙樻祬搴撲綅鐨勬簮搴�/鐩爣搴� 搴撲綅鐘舵�併�佷笅鍙戝爢鍨涙満鍛戒护锛堢珛椹墽琛�)
-// moveLocForDeepLoc(slave, shallowLoc);
-// }
-// log.error("{}浠诲姟鍑哄簱澶辫触锛屾祬搴撲綅鍫靛锛�", wrkMast.getWrkNo());
+ } else {
+ staProtocol = staProtocol.clone();
+ }
+
+// // 鍏ュ嚭搴撴ā寮忓垽鏂�
+// if (devpThread.ioMode != IoModeType.PAKOUT_MODE) { continue; }
+ if (wrkMast.getStaNo() == 204 && devpThread.ioModeOf2F != IoModeType.PAKOUT_MODE) {
+ continue;
+ }
+
+ // 鏌ヨ绔欑偣璇︾粏淇℃伅
+ BasDevp staDetl = basDevpService.selectById(crnStn.getStaNo());
+ if (staDetl == null) {
+ log.error("鍑哄簱 ===>> 鍫嗗灈鏈虹珯鐐瑰湪鏁版嵁搴撲笉瀛樺湪, 绔欑偣缂栧彿={}", crnStn.getStaNo());
+ break;
+// continue;
+ }
+ // 鍒ゆ柇鍫嗗灈鏈哄嚭搴撶珯鐘舵��
+ if (staProtocol.isAutoing() && !staProtocol.isLoading() && staDetl.getCanouting() != null && staDetl.getCanouting().equals("Y")
+ && staProtocol.getWorkNo() == 0 && staProtocol.isOutEnable()) {
+ // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
+
+ // 鍫嗗灈鏈烘帶鍒惰繃婊�
+ if (!crnProtocol.getStatusType().equals(CrnStatusType.IDLE) || crnProtocol.getTaskNo() != 0) {
// continue;
-// }
-// }
-//
-// // 宸茬粡瀛樺湪鍚婅溅鎵ц浠诲姟鏃讹紝鍒欒繃婊�
-// if (wrkMastMapper.selectWorking(slave.getId()) != null) {
-// return;
-// }
-//
-// // 1.鍫嗗灈鏈哄紑濮嬬Щ鍔�
-// CrnCommand crnCommand = new CrnCommand();
-// crnCommand.setCrnNo(slave.getId()); // 鍫嗗灈鏈虹紪鍙�
-// crnCommand.setTaskNo(wrkMast.getWrkNo().shortValue()); // 宸ヤ綔鍙�
-// crnCommand.setAckFinish((short) 0); // 浠诲姟瀹屾垚纭浣�
-// crnCommand.setTaskMode(CrnTaskModeType.LOC_MOVE); // 浠诲姟妯″紡: 搴撲綅绉昏浆
-// crnCommand.setSourcePosX(sourceSta.getRow1().shortValue()); // 婧愬簱浣嶆帓
-// crnCommand.setSourcePosY(sourceSta.getBay1().shortValue()); // 婧愬簱浣嶅垪
-// crnCommand.setSourcePosZ(sourceSta.getLev1().shortValue()); // 婧愬簱浣嶅眰
-// crnCommand.setDestinationPosX(crnStn.getRow().shortValue()); // 鐩爣搴撲綅鎺�
-// crnCommand.setDestinationPosY(crnStn.getBay().shortValue()); // 鐩爣搴撲綅鍒�
-// crnCommand.setDestinationPosZ(crnStn.getLev().shortValue()); // 鐩爣搴撲綅灞�
-// if (!MessageQueue.offer(SlaveType.Crn, wrkMast.getCrnNo(), new Task(2, crnCommand))) {
-// log.error("鍫嗗灈鏈哄懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", wrkMast.getCrnNo(), JSON.toJSON(crnCommand));
-// } else {
-// // 淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 12.鍚婅溅鍑哄簱涓�
-// Date now = new Date();
-// wrkMast.setWrkSts(12L);
-// wrkMast.setCrnStrTime(now);
-// wrkMast.setModiTime(now);
-// if (wrkMastMapper.updateById(wrkMast) == 0) {
-// log.error("淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 12.鍚婅溅鍑哄簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo());
-// }
-// }
-// }
-// }
-// }
+ break;
+ }
+
+ // 鍙屾繁搴撲綅涓旀祬搴撲綅鏈夎揣锛屽垯闇�鍏堝娴呭簱浣嶈繘琛屽簱浣嶇Щ杞�
+ if (Utils.isDeepLoc(slaveProperties, wrkMast.getSourceLocNo())) {
+ String shallowLocNo = Utils.getShallowLoc(slaveProperties, wrkMast.getSourceLocNo());
+ LocMast shallowLoc = locMastService.selectById(shallowLocNo);
+ // O.绌哄簱浣嶃�丵.鎷f枡/鐩樼偣/骞舵澘鍐嶅叆搴撱�丼.鍏ュ簱棰勭害銆乆.绂佺敤 鐩存帴鎼紒
+ if (shallowLoc.getLocSts().equals("P") || shallowLoc.getLocSts().equals("R")) {
+ WrkMast waitWrkMast = wrkMastMapper.selectByLocNo(shallowLocNo);
+ if (null == waitWrkMast) {
+ log.error("{}搴撲綅寮傚父锛屾湭妫�绱㈠埌鐩稿簲宸ヤ綔妗o紒", shallowLocNo);
+ } else {
+ if (waitWrkMast.getWrkSts() == 11) {
+ waitWrkMast.setIoPri(15D);
+ waitWrkMast.setModiTime(new Date());
+ if (wrkMastMapper.updateById(waitWrkMast) == 0) {
+ log.error("璋冩暣宸ヤ綔妗d紭鍏堢骇澶辫触锛佸伐浣滃彿={}", waitWrkMast.getWrkNo());
+ }
+ continue;
+ } else {
+
+ }
+ }
+ } else if (shallowLoc.getLocSts().equals("F") || shallowLoc.getLocSts().equals("D")) {
+// WrkMast waitWrkMast = wrkMastMapper.selectByLocNo(shallowLocNo);
+ //2022-08-16 modify,涓嶆牴鎹畊pdmk鏍囪绉诲簱浠诲姟(瀹规槗琚彇娑堝鑷村牭濉�)锛屾煡璇㈠伐浣滄。鏄惁瀛樺湪浠诲姟
+ WrkMast waitWrkMast = wrkMastMapper.selectByLocNo1(shallowLocNo);
+ // 姝ゆ爣璁伴伩鍏嶅娆℃墽琛岀Щ搴撲换鍔�
+// if (Cools.isEmpty(wrkMast.getUpdMk()) || "N".equals(wrkMast.getUpdMk())
+// || Cools.isEmpty(waitWrkMast)) {
+ if (Cools.isEmpty(waitWrkMast)) {
+ wrkMast.setUpdMk("Y");
+ wrkMastMapper.updateById(wrkMast);
+ // 鐢熸垚宸ヤ綔妗�,灏嗘祬搴撲綅绉昏浆鍒版柊鐨勫簱浣嶄腑
+ moveLocForDeepLoc(slave, shallowLoc);
+ }
+ log.error("{}浠诲姟鍑哄簱澶辫触锛屾祬搴撲綅鍫靛锛佹祬搴撲綅鍙�:{}", wrkMast.getWrkNo(), shallowLocNo);
+ continue;
+ } else if (shallowLoc.getLocSts().equals("Q") || shallowLoc.getLocSts().equals("S")) {
+ WrkMast waitWrkMast = wrkMastMapper.selectByLocNo1(shallowLocNo);
+ if (null != waitWrkMast && waitWrkMast.getWrkSts() == 4) {
+ continue;
+ }
+ }
+ }
+
+ // 宸茬粡瀛樺湪鍚婅溅鎵ц浠诲姟鏃讹紝鍒欒繃婊�
+ if (wrkMastMapper.selectWorking(slave.getId()) != null) {
+ break;
+// return;
+ }
+
+ // 1.鍫嗗灈鏈哄紑濮嬬Щ鍔�
+ CrnCommand crnCommand = new CrnCommand();
+ crnCommand.setCrnNo(slave.getId()); // 鍫嗗灈鏈虹紪鍙�
+ crnCommand.setTaskNo(wrkMast.getWrkNo().shortValue()); // 宸ヤ綔鍙�
+ crnCommand.setAckFinish((short) 0); // 浠诲姟瀹屾垚纭浣�
+ crnCommand.setTaskMode(CrnTaskModeType.LOC_MOVE); // 浠诲姟妯″紡: 搴撲綅绉昏浆
+ crnCommand.setSourcePosX(sourceSta.getRow1().shortValue()); // 婧愬簱浣嶆帓
+ crnCommand.setSourcePosY(sourceSta.getBay1().shortValue()); // 婧愬簱浣嶅垪
+ crnCommand.setSourcePosZ(sourceSta.getLev1().shortValue()); // 婧愬簱浣嶅眰
+ crnCommand.setDestinationPosX(crnStn.getRow().shortValue()); // 鐩爣搴撲綅鎺�
+ crnCommand.setDestinationPosY(crnStn.getBay().shortValue()); // 鐩爣搴撲綅鍒�
+ crnCommand.setDestinationPosZ(crnStn.getLev().shortValue()); // 鐩爣搴撲綅灞�
+ if (!MessageQueue.offer(SlaveType.Crn, wrkMast.getCrnNo(), new Task(2, crnCommand))) {
+ log.error("鍫嗗灈鏈哄懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", wrkMast.getCrnNo(), JSON.toJSON(crnCommand));
+ } else {
+ // 淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 12.鍚婅溅鍑哄簱涓�
+ Date now = new Date();
+ wrkMast.setWrkSts(12L);
+ wrkMast.setCrnStrTime(now);
+ wrkMast.setModiTime(now);
+ if (wrkMastMapper.updateById(wrkMast) == 0) {
+ log.error("淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 12.鍚婅溅鍑哄簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo());
+ }
+ break;
+ }
+ }
+ }
+
+ }
/**
* 鏌ユ壘宸ヤ綔鐘舵�佷负2锛堣澶囦笂璧帮級,涓擱GV鍏ュ簱鎺ラ┏绔欑鍚堢殑鐨勫叆搴撳伐浣滄。锛屾彁鍙栧嚭鏈�澶�2绗�
@@ -1630,7 +1796,7 @@
/**
* 搴撲綅绉昏浆
*/
- public void locToLoc(CrnSlave slave, CrnProtocol crnProtocol) {
+ public synchronized void locToLoc(CrnSlave slave, CrnProtocol crnProtocol) {
// 鑾峰彇宸ヤ綔妗d俊鎭�
WrkMast wrkMast = wrkMastMapper.selectLocMove(slave.getId());
if (null == wrkMast) {
@@ -2611,7 +2777,7 @@
/**
* 鍏ュ嚭搴撴ā寮忓垏鎹㈠嚱鏁�
*/
- public void ioConvert() {
+ public synchronized void ioConvert() {
try {
// 鏍规嵁杈撻�佺嚎plc閬嶅巻
for (DevpSlave devp : slaveProperties.getDevp()) {
@@ -2671,7 +2837,7 @@
}
- public void outOfDevp() {
+ public synchronized void outOfDevp() {
List<WrkMast> wrkMasts = wrkMastMapper.selectPick();
for (WrkMast wrkMast : wrkMasts) {
if (basDevpService.selectCount(new EntityWrapper<BasDevp>().eq("wrk_no", wrkMast.getWrkNo())) == 0) {
@@ -2685,7 +2851,7 @@
}
- public void autoEmptyOut() {
+ public synchronized void autoEmptyOut() {
DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, 1);
Integer autoOutSite = 12;
//濡傛灉绔欑偣鍙嚭绂佺敤锛屽垯涓嶇敓鎴愮┖鐩樺嚭搴撲换鍔�
@@ -2724,7 +2890,7 @@
}
}
- public void autoEmptyIn() {
+ public synchronized void autoEmptyIn() {
DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, 1);
Integer autoInSite = 12;
StaProtocol staProtocol = devpThread.getStation().get(autoInSite);
diff --git a/src/main/resources/mapper/WrkMastMapper.xml b/src/main/resources/mapper/WrkMastMapper.xml
index 7356f6d..1db0665 100644
--- a/src/main/resources/mapper/WrkMastMapper.xml
+++ b/src/main/resources/mapper/WrkMastMapper.xml
@@ -98,6 +98,10 @@
select top 1 * from dbo.asr_wrk_mast where wrk_sts=2 and crn_no=#{crnNo} and wrk_no=#{workNo} and sta_no=#{staNo} and (io_type=1 or io_type=10 or io_type=53 or io_type=54 or io_type=57) order by io_pri desc,io_time,wrk_no ASC
</select>
+ <select id="selectPakInStep12" resultMap="BaseResultMap">
+ select * from dbo.asr_wrk_mast where wrk_sts=2 and crn_no=#{crnNo} and (io_type=1 or io_type=10 or io_type=53 or io_type=54 or io_type=57) order by io_pri desc,io_time,wrk_no ASC
+ </select>
+
<select id="selectPakInStep3" resultMap="BaseResultMap">
select top 1 * from dbo.asr_wrk_mast where wrk_no=#{workNo}
</select>
@@ -163,6 +167,10 @@
select * from dbo.asr_wrk_mast where crn_no=#{crnNo} and source_sta_no=#{sourceStaNo} and wrk_sts=11 and io_type>100 order by io_pri desc,io_time,wrk_no asc
</select>
+ <select id="selectPakOutStep12" resultMap="BaseResultMap">
+ select * from dbo.asr_wrk_mast where crn_no=#{crnNo} and wrk_sts=11 and io_type>100 order by io_pri desc,io_time,wrk_no asc
+ </select>
+
<!-- 鍏ュ嚭搴撴ā寮忕浉鍏� -->
<select id="selectWorkingPakin" resultMap="BaseResultMap">
select top 1 * from dbo.asr_wrk_mast where wrk_sts in (2,3,4) and io_type != 11 and source_sta_no = #{sourceStaNo} order by io_time,wrk_no
--
Gitblit v1.9.1