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