From 8c97f18015743c7f913b9c512bdc768d144c575e Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期三, 31 五月 2023 08:08:05 +0800
Subject: [PATCH] 高频入出库模式
---
src/main/java/com/zy/asrs/utils/Utils.java | 205 ++++++++++++++++++++----
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 267 +++++++++++++++++++++++++++------
src/main/java/com/zy/asrs/mapper/WrkMastMapper.java | 2
src/main/resources/mapper/WrkMastMapper.xml | 4
4 files changed, 388 insertions(+), 90 deletions(-)
diff --git a/src/main/java/com/zy/asrs/mapper/WrkMastMapper.java b/src/main/java/com/zy/asrs/mapper/WrkMastMapper.java
index 5b399ce..3a8460f 100644
--- a/src/main/java/com/zy/asrs/mapper/WrkMastMapper.java
+++ b/src/main/java/com/zy/asrs/mapper/WrkMastMapper.java
@@ -56,6 +56,8 @@
// @Select("select top 1 * from dbo.asr_wrk_mast where wrk_sts=11 and (io_type=11 or io_type=110) and crn_no=#{crnNo} order by io_time,wrk_no")
WrkMast selectLocMove(@Param("crnNo")Integer crnNo);
+ WrkMast selectLocMove111(@Param("crnNo")Integer crnNo);
+
WrkMast selectLocMoving(@Param("crnNo")Integer crnNo);
WrkMast selectWorking(@Param("crnNo")Integer crnNo);
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 1795d06..1875faa 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -789,7 +789,7 @@
continue;
}
// 鍙湁褰撳爢鍨涙満绌洪棽 骞朵笖 鏃犱换鍔℃椂鎵嶇户缁墽琛�
- if (crnProtocol.getStatusType() == CrnStatusType.IDLE && crnProtocol.getTaskNo() == 0 && crnProtocol.getModeType() == CrnModeType.AUTO) {
+ if (true || crnProtocol.getStatusType() == CrnStatusType.IDLE && crnProtocol.getTaskNo() == 0 && crnProtocol.getModeType() == CrnModeType.AUTO) {
// 濡傛灉鏈�杩戜竴娆℃槸鍏ュ簱妯″紡
if (crnProtocol.getLastIo().equals("I")) {
if (basCrnp.getInEnable().equals("Y")) {
@@ -820,6 +820,8 @@
}
// 搴撲綅绉昏浆
this.locToLoc1(crn, crnProtocol);
+ // 搴撲綅绉昏浆(楂橀绉诲簱锛宨o_type=111)
+ this.locToLoc111(crn, crnProtocol);
// 搴撲綅绉昏浆锛屽洖鍘熷簱浣�
this.locToLoc17(crn, crnProtocol);
// 婕旂ず浠诲姟
@@ -866,6 +868,67 @@
if(!Cools.isEmpty(one)){
News.error("鍏ュ簱 ===>> 瀛樺湪绉诲簱鏈畬鎴愪换鍔★紝涓嶈兘鍏ュ簱銆傜Щ搴撲换鍔″彿={},鍫嗗灈鏈哄彿={}", one.getWrkNo(), slave.getId());
// continue;
+ }
+
+ //鍏ュ簱搴撲綅涓嶆槸鏈�澶栧眰搴撲綅锛屽垽鏂渶澶栧眰搴撲綅鏄惁涓虹┖搴撲綅锛屽涓嶆槸鍒欒繘琛岀Щ搴撲换鍔�
+ if(!locMastService.isOutMost(wrkMast.getLocNo())) {
+ WrkMast wrkMastMove = wrkMastMapper.selectLocMoveWorking(slave.getId());
+ if (wrkMastMove != null && wrkMast.getWrkNo() == 111) {
+ continue;
+ }
+
+ WrkMast two = wrkMastMapper.selectWorking1(slave.getId(), wrkMast.getWrkNo());
+ if (two != null) {//2鍙锋満鏈夊湪鎵ц浠诲姟鏃讹紝绂佹鐢熸垚绉诲簱宸ヤ綔妗�
+ continue;
+ } else {
+ List<String> shallowLocs = Utils.getShallowLocs(wrkMast.getLocNo());
+ if (!Cools.isEmpty(shallowLocs)) {
+ for (String shallowLocNo : shallowLocs) {
+ LocMast shallowLoc = locMastService.selectById(shallowLocNo);
+ WrkMast waitWrkMast = wrkMastMapper.selectByLocNo(shallowLocNo);
+ if (shallowLoc.getLocSts().equals("F") || shallowLoc.getLocSts().equals("D")) {
+ if (null == waitWrkMast) {
+ // 鐢熸垚涓�绗旂Щ搴撲换鍔″伐浣滄。銆佹敼鍙樻祬搴撲綅鐨勬簮搴�/鐩爣搴� 搴撲綅鐘舵��
+ // 娌℃湁浣滀笟涓殑鍏ュ簱浠诲姟鏃讹紝鎵嶈兘鐢熸垚绉诲簱浠诲姟
+ WrkMast one2 = wrkMastService.selectOne(new EntityWrapper<WrkMast>()
+ .eq("crn_no", slave.getId())
+ .last(" and wrk_sts in (3,4,5,6,7,8)"));
+ if (one2 == null) {
+ moveLocForDeepLoc(slave, shallowLoc);
+ // 缃《浠诲姟
+ wrkMast.setIoPri((double) 9999);
+ wrkMastMapper.updateById(wrkMast);
+ } else {
+ News.error("娴呭簱浣嶉樆濉炴椂锛屼笖娴呭簱浣嶅瓨鍦ㄤ綔涓氫腑鍑哄簱浠诲姟锛佸伐浣滃彿={}", one2.getWrkNo());
+ }
+ flag = true;
+ break;
+ } else {
+ if (waitWrkMast.getWrkSts() != 18) {
+ News.error("搴撲綅鍑哄簱鍒板爢鍨涙満绔� ===>> 搴撲綅鐘舵�佸湪搴擄紝浣嗘槸娴呭簱浣嶅凡瀛樺湪宸ヤ綔妗d换鍔★紒鍑哄簱搴撲綅={},娴呭簱浣嶅彿={}", shallowLoc.getLocNo());
+ flag = true;
+ break;
+ }
+
+ }
+ } else if (shallowLoc.getLocSts().equals("Q") || shallowLoc.getLocSts().equals("S")) {
+ News.error("搴撲綅鍑哄簱鍒板爢鍨涙満绔� ===>> 娴呭簱浣嶅簱浣嶇姸鎬佷负鍏ュ簱棰勭害锛佸嚭搴撳簱浣�={},娴呭簱浣嶅彿={}", shallowLoc.getLocNo());
+ flag = true;
+ break;
+ }
+
+ //20230307 ADD锛屽啀鍔犱竴娆″垽鏂紝褰撴祬搴撲綅鐘舵�佷笉涓篛鏃讹紝涓嶆墽琛屽綋鍓嶅嚭搴撲换鍔�
+ if (shallowLoc != null && !shallowLoc.getLocSts().equals("O")) {
+ News.error("鍋氫簡娴呭簱浣嶉樆濉炲鐞嗗悗鍙嶅鍒ゆ柇锛屾祬搴撲綅鐘舵�佷笉涓篛 ===>> 娴呭簱浣嶅簱浣嶇姸鎬佷负鍏ュ簱棰勭害锛佸嚭搴撳簱浣�={},娴呭簱浣嶅彿={}", wrkMast.getSourceLocNo(), shallowLoc.getLocNo());
+ flag = true;
+ break;
+ }
+ }
+ }
+ }
+ }
+ if(flag){
+ return false;
}
// 鍒ゆ柇鏄惁宸插瓨鍦ㄥ皬杞︾粦瀹氫换鍔�
@@ -1148,11 +1211,11 @@
}
}
- //鍑哄簱搴撲綅涓嶆槸鏈�澶栧眰搴撲綅锛屽垽鏂祬搴撲綅缁勬槸鍚﹂兘涓虹┖锛屾垨瀛樺湪搴撲綅绉昏浆浠诲姟
+ //鍑哄簱搴撲綅涓嶆槸鏈�澶栧眰搴撲綅锛屽垽鏂渶澶栧眰搴撲綅鏄惁涓虹┖搴撲綅锛屽涓嶆槸鍒欒繘琛岀Щ搴撲换鍔�
boolean flag = false;
if(!locMastService.isOutMost(wrkMast.getSourceLocNo())) {
WrkMast wrkMastMove = wrkMastMapper.selectLocMoveWorking(slave.getId());
- if (wrkMastMove != null && wrkMast.getWrkNo() == 11) {
+ if (wrkMastMove != null && wrkMast.getWrkNo() == 111) {
continue;
}
@@ -1160,29 +1223,12 @@
if (two != null) {//2鍙锋満鏈夊湪鎵ц浠诲姟鏃讹紝绂佹鐢熸垚绉诲簱宸ヤ綔妗�
continue;
} else {
- String[] shallowlocs = Utils.getShallowLocs(wrkMast.getSourceLocNo());
- if (!Cools.isEmpty(shallowlocs)) {
- for (String shallowLocNo : shallowlocs) {
+ List<String> shallowLocs = Utils.getShallowLocs(wrkMast.getSourceLocNo());
+ if (!Cools.isEmpty(shallowLocs)) {
+ for (String shallowLocNo : shallowLocs) {
LocMast shallowLoc = locMastService.selectById(shallowLocNo);
WrkMast waitWrkMast = wrkMastMapper.selectByLocNo(shallowLocNo);
- if (shallowLoc.getLocSts().equals("P") || shallowLoc.getLocSts().equals("R")) {
- if (null == waitWrkMast) {
- News.error("{}搴撲綅寮傚父锛屾湭妫�绱㈠埌鐩稿簲宸ヤ綔妗o紒", shallowLocNo);
- } else {
- //iotype=11锛寃rksts=17锛岃鏄庤揣鐗╁凡缁忕Щ搴撳埌鏆傚瓨搴撲綅锛岀瓑寰呭洖鍘熷簱浣�,姝ゆ椂鍏佽缁х画鍑哄簱
- if (waitWrkMast.getIoType() != 11 || waitWrkMast.getWrkSts() != 17) {
- waitWrkMast.setIoPri((double) 9999);
- waitWrkMast.setModiTime(new Date());
- if (wrkMastMapper.updateById(waitWrkMast) == 0) {
- News.error("璋冩暣宸ヤ綔妗d紭鍏堢骇澶辫触锛佸伐浣滃彿={}", waitWrkMast.getWrkNo());
- }
- if (waitWrkMast.getWrkSts() != 17) {
- flag = true;
- }
- break;
- }
- }
- } else if (shallowLoc.getLocSts().equals("F") || shallowLoc.getLocSts().equals("D")) {
+ if (shallowLoc.getLocSts().equals("F") || shallowLoc.getLocSts().equals("D")) {
if (null == waitWrkMast) {
// 鐢熸垚涓�绗旂Щ搴撲换鍔″伐浣滄。銆佹敼鍙樻祬搴撲綅鐨勬簮搴�/鐩爣搴� 搴撲綅鐘舵��
// 娌℃湁浣滀笟涓殑鍑哄簱浠诲姟鏃讹紝鎵嶈兘鐢熸垚绉诲簱浠诲姟
@@ -1612,6 +1658,102 @@
if (wrkMast.getWrkSts() == 12L) {
this.carMoveIn(wrkMast, wrkMast.getSteNo(), crnProtocol);
}
+ }
+ }
+ }
+
+ /**
+ * 搴撲綅绉昏浆(楂橀绉诲簱锛宨o_type=111)
+ */
+ public synchronized void locToLoc111(CrnSlave slave, CrnProtocol crnProtocol){
+ // 鑾峰彇宸ヤ綔妗d俊鎭�
+ WrkMast wrkMast = wrkMastMapper.selectLocMove111(slave.getId());
+ if (null == wrkMast) {
+ return;
+ }
+ // 杩囨护
+ if (null != wrkMastMapper.selectPakin(slave.getId(), null)) {
+ News.error("{}鍑哄簱浠诲姟鏃犳硶浣滀笟锛屽洜瀛樺湪鍏ュ簱涓换鍔�!", wrkMast.getWrkNo());
+ return;
+ }
+
+ // 鍒ゆ柇鏄惁宸插瓨鍦ㄥ皬杞︾粦瀹氫换鍔�
+ BasSte basSte = basSteService.findByCrnNo(wrkMast.getCrnNo());
+ if(basSte == null) return;
+ WrkMast one = wrkMastService.selectOne(new EntityWrapper<WrkMast>()
+ .eq("ste_no",basSte.getSteNo())
+ .last(" and io_type != 111 and wrk_sts < 10"));
+ if(one != null){
+ News.error("{}绉诲簱浠诲姟鏃犳硶浣滀笟锛屽洜鍏ュ簱浠诲姟宸茬粦瀹氬皬杞�!", wrkMast.getWrkNo());
+ return;
+ }
+
+ // 鑾峰彇婧愬簱浣嶄俊鎭�
+ LocMast sourceLoc = locMastService.selectById(wrkMast.getSourceLocNo());
+ if (null == sourceLoc) {
+ News.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")) {
+ News.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.setCommand((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))) {
+ News.error("鍫嗗灈鏈哄懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", wrkMast.getCrnNo(), JSON.toJSON(crnCommand));
+ } else {
+ // 淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 7.鍚婅溅鍏ュ簱涓�
+ Date now = new Date();
+ wrkMast.setWrkSts(7L);
+ wrkMast.setCrnStrTime(now);
+ wrkMast.setModiTime(now);
+ if (wrkMastMapper.updateById(wrkMast) == 0) {
+ News.error("銆愬簱浣嶇Щ杞�� 淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 7.鍚婅溅鍏ュ簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo());
+ }
+ }
+
}
}
}
@@ -2638,7 +2780,7 @@
}
if (wrkMast == null) { continue; }
- if (wrkMast.getIoType() != 11) {
+ if (wrkMast.getIoType() != 11 && wrkMast.getIoType() != 111) {
// 鍏ュ簱 ==>> 璐х墿鎼叆搴�
if (wrkMast.getWrkSts() == 7){
// 鍒ゆ柇鏄惁闇�瑕佸皬杞﹀叆搴�
@@ -2782,8 +2924,52 @@
}
// 绉诲簱 ===>> 鍫嗗灈鏈烘惉鑷崇洰鏍囧簱浣嶇粍 瀹屾垚
}
+ // 搴撲綅绉昏浆(楂橀io_type111)
+ } else if(wrkMast.getIoType() == 111) {
+ Date now = new Date();
+ // 鍏ュ簱 ==>> 璐х墿鎼叆搴�
+ if (wrkMast.getWrkSts() == 7){
+ if (locMastService.isOutMost(wrkMast.getLocNo()) && locMastService.isOutMost(wrkMast.getSourceLocNo())) {
+ // ==> 9.鍏ュ簱瀹屾垚
+ wrkMast.setWrkSts(9L);
+ wrkMast.setCrnEndTime(now);
+ wrkMast.setModiTime(now);
+ // 淇敼鎴愬姛鍚庡浣嶅爢鍨涙満
+ if (wrkMastMapper.updateById(wrkMast) > 0) {
+
+// if (!locDetlService.updateLocNo(wrkMast.getLocNo(), wrkMast.getSourceLocNo())) {
+// News.error("搴撲綅绉昏浆 ===>> 杞Щ搴撳瓨鏄庣粏鏁版嵁澶辫触锛沎婧愬簱浣�={}],[鐩爣搴撲綅={}]", wrkMast.getSourceLocNo(), wrkMast.getLocNo());
+// continue;
+// }
+
+// // 淇敼婧愬簱浣嶇姸鎬� ==> O
+// LocMast sourceLoc = locMastService.selectById(wrkMast.getSourceLocNo());
+// if (null != sourceLoc) {
+// sourceLoc.setLocSts("O");
+// sourceLoc.setModiTime(now);
+// if (!locMastService.updateById(sourceLoc)) {
+// News.error("搴撲綅绉昏浆 ===>> 淇敼婧愬簱浣嶇姸鎬佸け璐ワ紱[workNo={}],[sourceLoc={}]", wrkMast.getWrkNo(), wrkMast.getSourceLocNo());
+// }
+// }
+// // 淇敼鐩爣搴撲綅鐘舵�� ==> F
+// LocMast locMast = locMastService.selectById(wrkMast.getLocNo());
+// if (locMast != null) {
+// locMast.setLocSts("F");
+// locMast.setModiTime(now);
+// if (!locMastService.updateById(locMast)) {
+// News.error("搴撲綅绉昏浆 ===>> 淇敼鐩爣搴撲綅鐘舵�佸け璐ワ紱[workNo={}],[locNo={}]", wrkMast.getWrkNo(), wrkMast.getLocNo());
+// }
+// }
+
+ // 鍫嗗灈鏈哄浣�
+ crnThread.setResetFlag(true);
+ } else {
+ News.error("淇敼宸ヤ綔妗g姸鎬� 7.鍚婅溅鍏ュ簱涓� => 9.鍏ュ簱瀹屾垚 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo());
+ }
+ }
+ }
// 搴撲綅绉昏浆
- } else {
+ }else {
// 鍏ュ簱 ==>> 璐х墿鎼叆搴�
if (wrkMast.getWrkSts() == 7){
// 鍒ゆ柇鏄惁闇�瑕佸皬杞﹀叆搴�
@@ -4057,6 +4243,7 @@
LocMast loc = null;
List<LocMast> locs = locMastService.selectList(new EntityWrapper<LocMast>().eq("crn_no",crn.getId())
.eq("loc_type1",shallowLoc.getLocType1())
+ .eq("loc_type2",shallowLoc.getLocType2())
.eq("loc_sts","O")
.last(" and row1 in (" + rows + ") order by bay1,lev1"));
for (LocMast one : locs){
@@ -4064,30 +4251,8 @@
|| Utils.getBay(one.getLocNo()) != Utils.getBay(shallowLoc.getLocNo())
|| Utils.getLev(one.getLocNo()) != Utils.getLev(shallowLoc.getLocNo())){
- boolean success = true;
- List<String> insideLoc = Utils.getGroupInsideLoc(one.getLocNo());
- for (String inside : insideLoc) {
- LocMast locMast = locMastService.selectById(inside);
- if(Cools.isEmpty(locMast)){
- continue;
- }
- if (locMast.getLocSts().equals("P")
- || locMastService.selectById(inside).getLocSts().equals("R")
- || locMastService.selectById(inside).getLocSts().equals("S")
- || locMastService.selectById(inside).getLocSts().equals("Q")) {
- success = false; break;
- }
- }
-
- Integer steNo = this.hasCar(one.getLocNo());
- if (steNo != null) {
- continue;
- }
-
- if (success) {
- loc = one;
- break;
- }
+ loc = one;
+ break;
}
}
@@ -4104,7 +4269,7 @@
wrkMast.setWrkNo(workNo);
wrkMast.setIoTime(now);
wrkMast.setWrkSts(11L); // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID
- wrkMast.setIoType(11); // 鍏ュ嚭搴撶姸鎬侊細 11.搴撴牸绉昏浇
+ wrkMast.setIoType(111); // 鍏ュ嚭搴撶姸鎬侊細 111.搴撴牸绉昏浇(楂橀)
wrkMast.setIoPri((double) 9999);
wrkMast.setCrnNo(crn.getId());
wrkMast.setSourceLocNo(shallowLoc.getLocNo()); // 婧愬簱浣�
diff --git a/src/main/java/com/zy/asrs/utils/Utils.java b/src/main/java/com/zy/asrs/utils/Utils.java
index 3430b72..08060e9 100644
--- a/src/main/java/com/zy/asrs/utils/Utils.java
+++ b/src/main/java/com/zy/asrs/utils/Utils.java
@@ -6,6 +6,7 @@
import java.text.DecimalFormat;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.List;
/**
@@ -224,56 +225,180 @@
/**
* 鑾峰彇 娣卞簱浣嶅搴旂殑娴呭簱浣嶇粍
*/
- public static String[] getShallowLocs(String deepLoc){
- String[] locsArr = null;
- String locs="";
- int row = getRow(deepLoc);
+ public static List<String> getShallowLocs(String locNo){
+ int row = getRow(locNo);
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;
+ return new ArrayList<String>() {{
+ add(zerofill(String.valueOf(2), 2) + locNo.substring(2));
+ add(zerofill(String.valueOf(3), 2) + locNo.substring(2));
+ }};
case 2:
- locs += zerofill(String.valueOf(row+1),2) + deepLoc.substring(2);
- break;
+ return new ArrayList<String>() {{
+ add(zerofill(String.valueOf(3), 2) + locNo.substring(2));
+ }};
+ case 3:
+ case 4:
+ return null;
case 5:
- case 20:
- locs += zerofill(String.valueOf(row-1),2) + deepLoc.substring(2);
- break;
+ return new ArrayList<String>() {{
+ add(zerofill(String.valueOf(4), 2) + locNo.substring(2));
+ }};
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;
+ return new ArrayList<String>() {{
+ add(zerofill(String.valueOf(5), 2) + locNo.substring(2));
+ add(zerofill(String.valueOf(4), 2) + locNo.substring(2));
+ }};
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;
+ return new ArrayList<String>() {{
+ add(zerofill(String.valueOf(6), 2) + locNo.substring(2));
+ add(zerofill(String.valueOf(5), 2) + locNo.substring(2));
+ add(zerofill(String.valueOf(4), 2) + locNo.substring(2));
+ }};
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;
+ return new ArrayList<String>() {{
+ add(zerofill(String.valueOf(9), 2) + locNo.substring(2));
+ add(zerofill(String.valueOf(10), 2) + locNo.substring(2));
+ add(zerofill(String.valueOf(11), 2) + locNo.substring(2));
+ }};
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;
+ return new ArrayList<String>() {{
+ add(zerofill(String.valueOf(10), 2) + locNo.substring(2));
+ add(zerofill(String.valueOf(11), 2) + locNo.substring(2));
+ }};
case 10:
- case 17:
- locs += zerofill(String.valueOf(row+1),2) + deepLoc.substring(2);
- break;
+ return new ArrayList<String>() {{
+ add(zerofill(String.valueOf(11), 2) + locNo.substring(2));
+ }};
+ case 11:
+ case 12:
+ return null;
case 13:
- locs += zerofill(String.valueOf(row-1),2) + deepLoc.substring(2);
- break;
+ return new ArrayList<String>() {{
+ add(zerofill(String.valueOf(12), 2) + locNo.substring(2));
+ }};
+ case 14:
+ return new ArrayList<String>() {{
+ add(zerofill(String.valueOf(13), 2) + locNo.substring(2));
+ add(zerofill(String.valueOf(12), 2) + locNo.substring(2));
+ }};
+ case 15:
+ return new ArrayList<String>() {{
+ add(zerofill(String.valueOf(16), 2) + locNo.substring(2));
+ add(zerofill(String.valueOf(17), 2) + locNo.substring(2));
+ add(zerofill(String.valueOf(18), 2) + locNo.substring(2));
+ }};
+ case 16:
+ return new ArrayList<String>() {{
+ add(zerofill(String.valueOf(17), 2) + locNo.substring(2));
+ add(zerofill(String.valueOf(18), 2) + locNo.substring(2));
+ }};
+ case 17:
+ return new ArrayList<String>() {{
+ add(zerofill(String.valueOf(18), 2) + locNo.substring(2));
+ }};
+ case 18:
+ case 19:
+ return null;
+ case 20:
+ return new ArrayList<String>() {{
+ add(zerofill(String.valueOf(19), 2) + locNo.substring(2));
+ }};
+ case 21:
+ return new ArrayList<String>() {{
+ add(zerofill(String.valueOf(20), 2) + locNo.substring(2));
+ add(zerofill(String.valueOf(19), 2) + locNo.substring(2));
+ }};
+ default:
+ throw new RuntimeException("搴撲綅瑙f瀽寮傚父");
}
- if(!Cools.isEmpty(locs)){
- locsArr = locs.split(",");
+// String[] locsArr = null;
+// 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;
+// }
+// if(!Cools.isEmpty(locs)){
+// locsArr = locs.split(",");
+// }
+// return locsArr;
+ }
+
+ /**
+ * 鑾峰彇褰撳墠搴撲綅宸烽亾鏈�澶栦晶搴撲綅鍙�
+ */
+ public static String getGroupOutermostLoc(String locNo) {
+ int row = getRow(locNo);
+ switch (row) {
+ case 1:
+ case 2:
+ case 3:
+ return zerofill(String.valueOf(3), 2) + locNo.substring(2);
+ case 4:
+ case 5:
+ case 6:
+ case 7:
+ return zerofill(String.valueOf(4), 2) + locNo.substring(2);
+ case 8:
+ case 9:
+ case 10:
+ case 11:
+ return zerofill(String.valueOf(11), 2) + locNo.substring(2);
+ case 12:
+ case 13:
+ case 14:
+ return zerofill(String.valueOf(12), 2) + locNo.substring(2);
+ case 15:
+ case 16:
+ case 17:
+ case 18:
+ return zerofill(String.valueOf(18), 2) + locNo.substring(2);
+ case 19:
+ case 20:
+ case 21:
+ return zerofill(String.valueOf(19), 2) + locNo.substring(2);
+ default:
+ throw new RuntimeException("搴撲綅瑙f瀽寮傚父");
}
- return locsArr;
}
/**
@@ -351,8 +476,10 @@
// String deepLocs = getDeepLocs("2100203");
// System.out.println("shallowLocs ==>> " + shallowLocs);
// System.out.println("deepLocs ==>> " + deepLocs);
- String[] shallowArr = getShallowLocs("1700203");;
+// String[] shallowArr = getShallowLocs("0300504");
+ List<String> shallowLocs = getShallowLocs("2100404");
String[] deepArr = getDeepLocs("1700203");
+ String outermostLoc = getGroupOutermostLoc("0701703");
// if (shallowLocs.indexOf(',') >= 0) {
// shallowArr = shallowLocs.split(",");
// }
diff --git a/src/main/resources/mapper/WrkMastMapper.xml b/src/main/resources/mapper/WrkMastMapper.xml
index c2d3fd8..a99ae2b 100644
--- a/src/main/resources/mapper/WrkMastMapper.xml
+++ b/src/main/resources/mapper/WrkMastMapper.xml
@@ -128,6 +128,10 @@
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="selectLocMove111" resultMap="BaseResultMap">
+ select top 1 * from dbo.asr_wrk_mast where wrk_sts in (3,6,11,12,15) and io_type=111 and crn_no=#{crnNo} order by io_pri desc,io_time,wrk_no
+ </select>
+
<select id="selectLocMoving" resultMap="BaseResultMap">
select top 1 * from dbo.asr_wrk_mast where wrk_sts=12 and io_type=11 and crn_no=#{crnNo} order by io_time,wrk_no
</select>
--
Gitblit v1.9.1