From c5fb7fe6010aa53345e44ad2d69552bf52d868fd Mon Sep 17 00:00:00 2001
From: tqs <56479841@qq.com>
Date: 星期一, 31 十月 2022 07:57:10 +0800
Subject: [PATCH] #
---
src/main/java/com/zy/asrs/utils/Utils.java | 110 ++++++++++++++++++
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 184 +++++++++++++++++++++++++++++-
src/main/resources/mapper/WrkMastMapper.xml | 3
src/main/resources/application.yml | 4
4 files changed, 290 insertions(+), 11 deletions(-)
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 7b18315..91e8b19 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -1056,6 +1056,172 @@
}
/**
+ * 搴撲綅绉昏浆 NEW
+ */
+ public void locToLoc1(CrnSlave slave, CrnProtocol crnProtocol){
+ // 鑾峰彇宸ヤ綔妗d俊鎭�
+ WrkMast wrkMast = wrkMastMapper.selectLocMove(slave.getId());
+ if (null == wrkMast) {
+ return;
+ }
+ // 鑾峰彇婧愬簱浣嶄俊鎭�
+ LocMast sourceLoc = locMastService.selectById(wrkMast.getSourceLocNo());
+ if (null == sourceLoc) {
+ log.error("宸ヤ綔妗e簱浣嶇Щ杞け璐ワ紝鍘熷洜锛氭绱㈡簮搴撲綅澶辫触锛佸伐浣滃彿={}锛屾簮搴撲綅={}", wrkMast.getWrkNo(), wrkMast.getSourceLocNo());
+ return;
+ }
+ // 婧愬簱浣� 搴撲綅鐘舵�佸垽鏂�
+ if (!sourceLoc.getLocSts().equals("R")) {
+ return;
+ }
+ // 鑾峰彇鐩爣搴撲綅淇℃伅
+ LocMast loc = locMastService.selectById(wrkMast.getLocNo());
+ if (null == loc || !loc.getLocSts().equals("S")) {
+ log.error("宸ヤ綔妗e簱浣嶇Щ杞け璐ワ紝鍘熷洜锛氭绱㈢洰鏍囧簱浣嶅け璐ワ紒宸ヤ綔鍙�={}锛屾簮搴撲綅={}", wrkMast.getWrkNo(), wrkMast.getLocNo());
+ return;
+ }
+ // 鑾峰彇鍫嗗灈鏈轰俊鎭� 骞� 鍒ゆ柇鏄惁鍙叆鍑�
+ BasCrnp basCrnp = basCrnpService.selectById(slave.getId());
+ if (!basCrnp.getInEnable().equals("Y") && !basCrnp.getOutEnable().equals("Y")) {
+ return;
+ }
+
+ // 鍫嗗灈鏈烘帶鍒惰繃婊�
+ if (!crnProtocol.getStatusType().equals(CrnStatusType.IDLE) || crnProtocol.getTaskNo() != 0) {
+ return;
+ }
+
+ // 宸茬粡瀛樺湪鍚婅溅鎵ц浠诲姟鏃讹紝鍒欒繃婊�
+ if (wrkMastMapper.selectWorking(slave.getId()) != null) {
+ return;
+ }
+
+ // 缃《浠诲姟
+ wrkMast.setIoPri((double) 9999);
+ wrkMastMapper.updateById(wrkMast);
+
+ // 婧愬簱浣� ===>> 鏈�澶栧眰搴撲綅
+ if (locMastService.isOutMost(wrkMast.getSourceLocNo())) {
+ // 鐩爣搴撲綅 ===>> 鏈�澶栧眰搴撲綅
+ if (locMastService.isOutMost(wrkMast.getLocNo())) {
+ // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
+ CrnCommand crnCommand = new CrnCommand();
+ crnCommand.setCrnNo(slave.getId()); // 鍫嗗灈鏈虹紪鍙�
+ crnCommand.setTaskNo(wrkMast.getWrkNo().shortValue()); // 宸ヤ綔鍙�
+ crnCommand.setAckFinish((short) 0); // 浠诲姟瀹屾垚纭浣�
+ crnCommand.setTaskMode(CrnTaskModeType.LOC_MOVE); // 浠诲姟妯″紡: 搴撲綅绉昏浆
+ crnCommand.setSourcePosX(sourceLoc.getRow1().shortValue()); // 婧愬簱浣嶆帓
+ crnCommand.setSourcePosY(sourceLoc.getBay1().shortValue()); // 婧愬簱浣嶅垪
+ crnCommand.setSourcePosZ(sourceLoc.getLev1().shortValue()); // 婧愬簱浣嶅眰
+ crnCommand.setDestinationPosX(loc.getRow1().shortValue()); // 鐩爣搴撲綅鎺�
+ crnCommand.setDestinationPosY(loc.getBay1().shortValue()); // 鐩爣搴撲綅鍒�
+ crnCommand.setDestinationPosZ(loc.getLev1().shortValue()); // 鐩爣搴撲綅灞�
+ if (!MessageQueue.offer(SlaveType.Crn, wrkMast.getCrnNo(), new Task(2, crnCommand))) {
+ log.error("鍫嗗灈鏈哄懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", wrkMast.getCrnNo(), JSON.toJSON(crnCommand));
+ } else {
+ // 淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 16.鍚婅溅鍑哄簱涓�
+ Date now = new Date();
+ wrkMast.setWrkSts(16L);
+ wrkMast.setCrnStrTime(now);
+ wrkMast.setModiTime(now);
+ if (wrkMastMapper.updateById(wrkMast) == 0) {
+ log.error("銆愬簱浣嶇Щ杞�� 淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 16.鍚婅溅鍑哄簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo());
+ }
+ }
+
+ }
+ // 涓嶆槸鏈�澶栧眰搴撲綅锛岄渶瑕佷娇鐢ㄧ┛姊溅鎼繍鍚庯紝鍐嶅爢鍨涙満绉诲簱
+ } else {
+ // 褰撳墠缁勫簱浣嶆槸鍚︽湁绌挎杞�
+ Integer steNo = this.hasCarOfIdle(wrkMast.getSourceLocNo());
+ // 鏈夊皬杞�
+ if (steNo != null) {
+ if (wrkMast.getWrkSts() == 11L && wrkMast.getSteNo() == null) {
+
+ // 缁欑┛姊溅涓嬪彂鍛戒护 璁╁叾灏嗚揣鐗╂尓鑷冲爢鍨涙満鎼繍鐐�
+ SteThread steThread = (SteThread) SlaveConnection.get(SlaveType.Ste, steNo);
+ SteProtocol steProtocol = steThread.getSteProtocol();
+ if (steProtocol == null) { return; }
+ if (steProtocol.isIdle()) {
+
+ // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
+ SteCommand steCommand = new SteCommand();
+ steCommand.setSteNo(steNo); // 绌挎杞︾紪鍙�
+ steCommand.setTaskNo(wrkMast.getWrkNo()); // 宸ヤ綔鍙�
+ steCommand.setTaskMode(SteTaskModeType.findOutByLoc(wrkMast.getSourceLocNo())); // 浠诲姟妯″紡: 鍘昏繎鐐� 绛夊緟鍫嗗灈鏈哄弶鍙�
+
+ steCommand.setRow(Utils.getGroupRow(steProtocol.getRow().intValue()).shortValue());
+ steCommand.setBay(steProtocol.getBay());
+ steCommand.setLev(steProtocol.getLev());
+
+ if (!MessageQueue.offer(SlaveType.Ste, steNo, new Task(2, steCommand))) {
+ log.error("绌挎杞﹀懡浠や笅鍙戝け璐ワ紝绌挎杞﹀彿={}锛屼换鍔℃暟鎹�={}", steNo, JSON.toJSON(steCommand));
+ } else {
+ // 淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 14.灏忚溅鎼嚭搴�
+ Date now = new Date();
+ wrkMast.setWrkSts(14L);
+ wrkMast.setSteNo(steNo);
+ wrkMast.setCrnStrTime(now);
+ wrkMast.setModiTime(now);
+ if (wrkMastMapper.updateById(wrkMast) == 0) {
+ log.error("淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 14.灏忚溅鎼嚭搴� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo());
+ }
+ }
+ }
+ }
+ if (wrkMast.getWrkSts() == 15L) {
+ // 宸茬粡瀛樺湪鍚婅溅鎵ц浠诲姟鏃讹紝鍒欒繃婊�
+ if (wrkMastMapper.selectWorking(slave.getId()) != null) {
+ return;
+ }
+
+ // 鍫嗗灈鏈哄嚭搴� 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
+ CrnCommand crnCommand = new CrnCommand();
+ crnCommand.setCrnNo(slave.getId()); // 鍫嗗灈鏈虹紪鍙�
+ crnCommand.setTaskNo(wrkMast.getWrkNo().shortValue()); // 宸ヤ綔鍙�
+ crnCommand.setAckFinish((short) 0); // 浠诲姟瀹屾垚纭浣�
+ crnCommand.setTaskMode(CrnTaskModeType.LOC_MOVE); // 浠诲姟妯″紡: 搴撲綅绉昏浆
+ crnCommand.setSourcePosX(Utils.getGroupRow(sourceLoc.getRow1()).shortValue()); // 婧愬簱浣嶆帓
+ crnCommand.setSourcePosY(sourceLoc.getBay1().shortValue()); // 婧愬簱浣嶅垪
+ crnCommand.setSourcePosZ(sourceLoc.getLev1().shortValue()); // 婧愬簱浣嶅眰
+ crnCommand.setDestinationPosX(loc.getRow1().shortValue()); // 鐩爣搴撲綅鎺�
+ crnCommand.setDestinationPosY(loc.getBay1().shortValue()); // 鐩爣搴撲綅鍒�
+ crnCommand.setDestinationPosZ(loc.getLev1().shortValue()); // 鐩爣搴撲綅灞�
+ if (!MessageQueue.offer(SlaveType.Crn, wrkMast.getCrnNo(), new Task(2, crnCommand))) {
+ log.error("鍫嗗灈鏈哄懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", wrkMast.getCrnNo(), JSON.toJSON(crnCommand));
+ } else {
+ // 淇敼宸ヤ綔妗g姸鎬� 15.绛夊緟鍚婅溅 => 16.鍚婅溅鍑哄簱涓�
+ Date now = new Date();
+ wrkMast.setWrkSts(16L);
+ wrkMast.setCrnStrTime(now);
+ wrkMast.setModiTime(now);
+ if (wrkMastMapper.updateById(wrkMast) == 0) {
+ log.error("淇敼宸ヤ綔妗g姸鎬� 15.绛夊緟鍚婅溅 => 16.鍚婅溅鍑哄簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo());
+ }
+ return;
+ }
+ }
+ // 娌℃湁灏忚溅
+ } else {
+ if (wrkMast.getWrkSts() == 11L && wrkMast.getSteNo() == null) {
+ // 瀵绘壘鏈�杩戠殑灏忚溅
+ SteThread steThread = queryIdleCar(wrkMast);
+ if (steThread != null) {
+ if (null == wrkMastMapper.selectPakout(slave.getId(), steNo)) {
+ // 璁╁皬杞︾瓑寰呮惉杩愬緟缁�
+ this.letCarBeReady(wrkMast, steThread.getSlave().getId(), wrkMast.getSourceLocNo());
+ }
+ }
+ }
+ // 鍫嗗灈鏈烘惉杩愬皬杞�
+ if (wrkMast.getWrkSts() == 12L) {
+ this.carMoveIn(wrkMast, wrkMast.getSteNo(), crnProtocol);
+ }
+ }
+ }
+ }
+
+ /**
* 搴撲綅绉昏浆
*/
public void locToLoc(CrnSlave slave, CrnProtocol crnProtocol){
@@ -1127,9 +1293,10 @@
wrkMast.setCrnStrTime(now);
wrkMast.setModiTime(now);
if (wrkMastMapper.updateById(wrkMast) == 0) {
- log.error("銆愬簱浣嶇Щ杞�� 淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 12.鍚婅溅鍑哄簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo());
+ log.error("銆愬簱浣嶇Щ杞�� 淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 7.鍚婅溅鍏ュ簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo());
}
}
+
} else {
Integer steNo = this.hasCarOfIdle(wrkMast.getLocNo());
// 鏈夊皬杞�
@@ -1863,13 +2030,16 @@
} else {
if (wrkMast.getWrkSts() == 16) {
Date now = new Date();
+// if (locMastService.isOutMost(wrkMast.getLocNo())) {
+// // 16.鍚婅溅鍑哄簱涓� ==> 9.鍏ュ簱瀹屾垚
+// wrkMast.setWrkSts(9L);
+// wrkMast.setCrnEndTime(now);
+// } else {
+// // 16.鍚婅溅鍑哄簱涓� ==> 9.鍏ュ簱瀹屾垚
+// wrkMast.setWrkSts(9L);
+// }
if (locMastService.isOutMost(wrkMast.getLocNo())) {
- // 16.鍚婅溅鍑哄簱涓� ==> 9.鍏ュ簱瀹屾垚
- wrkMast.setWrkSts(9L);
- wrkMast.setCrnEndTime(now);
- } else {
- // 16.鍚婅溅鍑哄簱涓� ==> 9.鍏ュ簱瀹屾垚
- wrkMast.setWrkSts(9L);
+ wrkMast.setWrkSts(17L);
}
wrkMast.setModiTime(now);
// 淇敼鎴愬姛鍚庡浣嶅爢鍨涙満
diff --git a/src/main/java/com/zy/asrs/utils/Utils.java b/src/main/java/com/zy/asrs/utils/Utils.java
index f463cff..e4d3d75 100644
--- a/src/main/java/com/zy/asrs/utils/Utils.java
+++ b/src/main/java/com/zy/asrs/utils/Utils.java
@@ -222,6 +222,100 @@
return zerofill(String.valueOf(row), 2) + zerofill(String.valueOf(bay), 3) + zerofill(String.valueOf(lev), 2);
}
+ /**
+ * 鑾峰彇 娣卞簱浣嶅搴旂殑娴呭簱浣嶇粍
+ */
+ public static String getShallowLocs(String deepLoc){
+ String locs="";
+ int row = getRow(deepLoc);
+ switch (row){
+ case 1:
+ locs += zerofill(String.valueOf(row+2),2) + deepLoc.substring(2);
+ locs += "," + zerofill(String.valueOf(row+1),2) + deepLoc.substring(2);
+ break;
+ case 2:
+ locs += zerofill(String.valueOf(row+1),2) + deepLoc.substring(2);
+ break;
+ case 5:
+ case 20:
+ locs += zerofill(String.valueOf(row-1),2) + deepLoc.substring(2);
+ break;
+ case 6:
+ case 14:
+ case 21:
+ locs += zerofill(String.valueOf(row-2),2) + deepLoc.substring(2);
+ locs += "," + zerofill(String.valueOf(row-1),2) + deepLoc.substring(2);
+ break;
+ case 7:
+ locs += zerofill(String.valueOf(row-3),2) + deepLoc.substring(2);
+ locs += "," + zerofill(String.valueOf(row-2),2) + deepLoc.substring(2);
+ locs += "," + zerofill(String.valueOf(row-1),2) + deepLoc.substring(2);
+ break;
+ case 8:
+ case 15:
+ locs += zerofill(String.valueOf(row+3),2) + deepLoc.substring(2);
+ locs += "," + zerofill(String.valueOf(row+2),2) + deepLoc.substring(2);
+ locs += "," + zerofill(String.valueOf(row+1),2) + deepLoc.substring(2);
+ break;
+ case 9:
+ case 16:
+ locs += zerofill(String.valueOf(row+2),2) + deepLoc.substring(2);
+ locs += "," + zerofill(String.valueOf(row+1),2) + deepLoc.substring(2);
+ break;
+ case 10:
+ case 17:
+ locs += zerofill(String.valueOf(row+1),2) + deepLoc.substring(2);
+ break;
+ case 13:
+ locs += zerofill(String.valueOf(row-1),2) + deepLoc.substring(2);
+ break;
+ }
+ return locs;
+ }
+
+ /**
+ * 鑾峰彇 娴呭簱浣嶅搴旂殑娣卞簱浣嶇粍
+ */
+ public static String getDeepLocs(String shallowLoc){
+ String locs="";
+ int row = getRow(shallowLoc);
+ switch (row){
+ case 2:
+ case 9:
+ case 16:
+ locs += zerofill(String.valueOf(row-1),2) + shallowLoc.substring(2);
+ break;
+ case 3:
+ case 10:
+ case 17:
+ locs += zerofill(String.valueOf(row-1),2) + shallowLoc.substring(2);
+ locs += "," + zerofill(String.valueOf(row-2),2) + shallowLoc.substring(2);
+ break;
+ case 4:
+ locs += zerofill(String.valueOf(row+1),2) + shallowLoc.substring(2);
+ locs += "," + zerofill(String.valueOf(row+2),2) + shallowLoc.substring(2);
+ locs += "," + zerofill(String.valueOf(row+3),2) + shallowLoc.substring(2);
+ break;
+ case 5:
+ case 12:
+ case 19:
+ locs += zerofill(String.valueOf(row+1),2) + shallowLoc.substring(2);
+ locs += "," + zerofill(String.valueOf(row+2),2) + shallowLoc.substring(2);
+ break;
+ case 6:
+ case 13:
+ case 20:
+ locs += zerofill(String.valueOf(row+1),2) + shallowLoc.substring(2);
+ break;
+ case 11:
+ case 18:
+ locs += zerofill(String.valueOf(row-1),2) + shallowLoc.substring(2);
+ locs += "," + zerofill(String.valueOf(row-2),2) + shallowLoc.substring(2);
+ locs += "," + zerofill(String.valueOf(row-3),2) + shallowLoc.substring(2);
+ break;
+ }
+ return locs;
+ }
/**
* 褰撴绱㈠埌鍙屾繁搴撲綅鐨勬祬搴撲綅鏃讹紝濡傛灉娣卞簱浣嶆棤璐э紝鍒欐斁鍏ュ搴旂殑娣卞簱浣�
@@ -246,6 +340,22 @@
}
public static void main(String[] args) {
+ String shallowLocs = getShallowLocs("2100203");
+ String deepLocs = getDeepLocs("2100203");
+ System.out.println("shallowLocs ==>> " + shallowLocs);
+ System.out.println("deepLocs ==>> " + deepLocs);
+ String[] shallowArr = null, deepArr = null;
+ if (shallowLocs.indexOf(',') >= 0) {
+ shallowArr = shallowLocs.split(",");
+ }
+ if (deepLocs.indexOf(',') >= 0) {
+ deepArr = deepLocs.split(",");
+ }
+
+ for(String str : deepArr){
+ System.out.println(str);
+ }
+
SlaveProperties slaveProperties = new SlaveProperties();
slaveProperties.setDoubleDeep(true);
List<Integer> list = new ArrayList<>();
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index e2c7d89..32d585c 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -8,8 +8,8 @@
name: @pom.build.finalName@
datasource:
driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
- url: jdbc:sqlserver://10.10.10.100:1433;databasename=bfasrs
-# url: jdbc:sqlserver://localhost:1433;databasename=bfasrs
+# url: jdbc:sqlserver://10.10.10.100:1433;databasename=bfasrs
+ url: jdbc:sqlserver://192.168.4.15:1433;databasename=bfasrs
username: sa
# password: Zoneyung@zy56$
password: sa@123
diff --git a/src/main/resources/mapper/WrkMastMapper.xml b/src/main/resources/mapper/WrkMastMapper.xml
index 14fc8f7..4c51a32 100644
--- a/src/main/resources/mapper/WrkMastMapper.xml
+++ b/src/main/resources/mapper/WrkMastMapper.xml
@@ -58,7 +58,6 @@
<result column="log_err_time" property="logErrTime" />
<result column="log_err_memo" property="logErrMemo" />
<result column="barcode" property="barcode" />
- <result column="Pdc_type" property="PdcType" />
<result column="ctn_no" property="ctnNo" />
<result column="full_plt" property="fullPlt" />
@@ -122,7 +121,7 @@
</select>
<select id="selectLocMove" resultMap="BaseResultMap">
- select top 1 * from dbo.asr_wrk_mast where wrk_sts in (3,6,11,12,15) and io_type=11 and crn_no=#{crnNo} order by io_time,wrk_no
+ select top 1 * from dbo.asr_wrk_mast where wrk_sts in (3,6,11,12,15) and io_type=11 and crn_no=#{crnNo} order by io_pri desc,io_time,wrk_no
</select>
<select id="selectLocMoving" resultMap="BaseResultMap">
--
Gitblit v1.9.1