From 5701eb6693c654d53f1bba460eb3a417d495b344 Mon Sep 17 00:00:00 2001
From: zhang <zc857179121@qq.com>
Date: 星期三, 11 六月 2025 17:31:53 +0800
Subject: [PATCH] bug修复;下发任务给rcs携带货架码
---
src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java | 264 +++++++++++++++++++++++++++++++++++++++++++++++-----
1 files changed, 237 insertions(+), 27 deletions(-)
diff --git a/src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java
index f3158bd..d53164d 100644
--- a/src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java
@@ -168,8 +168,8 @@
locDto.getCsocode(),
locDto.getIsoseq(),
locDto.getProcessSts());
- OrderDetl orderDetl = orderDetlService.selectItem(locDto.getOrderNo(), locDto.getMatnr(), locDto.getBatch(), locDto.getCsocode(), locDto.getIsoseq());
- AgvLocDetl locDetl = agvLocDetlService.selectItem(wrkMast.getSourceLocNo(), locDto.getMatnr(), locDto.getBatch(), locDto.getCsocode(), locDto.getIsoseq());
+ //OrderDetl orderDetl = orderDetlService.selectItem(locDto.getOrderNo(), locDto.getMatnr(), locDto.getBatch(), locDto.getCsocode(), locDto.getIsoseq());
+ // AgvLocDetl locDetl = agvLocDetlService.selectItem(wrkMast.getSourceLocNo(), locDto.getMatnr(), locDto.getBatch(), locDto.getCsocode(), locDto.getIsoseq());
// 娴佹按 -- 鏂板璁㈠崟鏄庣粏
// FlowLog flowLog = new FlowLog();
// flowLog.setFid(String.valueOf(flowId));
@@ -227,7 +227,9 @@
updateAgvLocMast(agvLocMastService.selectById(sourceLocNo), locSts);
//鏇存柊鐩爣绔欑偣鐘舵��
//locSts = ioType == 101 ? "S" : "Q";
- updateAgvBasDevp(agvBasDevpService.selectById(targetLocNo), "S");
+ AgvBasDevp agvBasDevp = agvBasDevpService.selectById(targetLocNo);
+ agvBasDevp.setBarcode("");
+ updateAgvBasDevp(agvBasDevp, "S");
});
}
@@ -493,6 +495,10 @@
if (Cools.isEmpty(agvBasDevp)) {
throw new CoolException("鏆傛棤" + station + "绔欑偣");
}
+ AgvBasDevp agvBasDevp2 = agvBasDevpService.selectOne(new EntityWrapper<AgvBasDevp>().eq("barcode", containerCode).ne("dev_no", agvBasDevp.getDevNo()));
+ if (!Cools.isEmpty(agvBasDevp2)) {
+ throw new CoolException(station + "绔欑偣缁戝畾璇ヨ揣鏋讹紝鏃犳硶鍏ュ簱");
+ }
int br = 0;
if (containerType == 21 && agvBasDevp.getFloor() == 2) {
containerType = 20;
@@ -579,16 +585,20 @@
agvLocMast = agvCommonService.getLocNo(locType, agvBasDevp.getFloor(), false, false);
}
} else {
- List<AgvWrkMast> agvWrkMasts = agvWrkMastService.selectList(new EntityWrapper<AgvWrkMast>().like("loc_no", "02F1").like("source_loc_no", "F1"));
- if (Integer.parseInt(config.getValue()) <= agvWrkMasts.size()) {
- agvLocMast = agvCommonService.getLocNo(locType, agvBasDevp.getFloor(), false, true);
+ if (station.endsWith("F4") && locType == 3) {
+ agvLocMast = agvCommonService.getLocNoOnXiSuer(locType, 1);
} else {
- if (isCurrLev.get()) {
+ List<AgvWrkMast> agvWrkMasts = agvWrkMastService.selectList(new EntityWrapper<AgvWrkMast>().like("loc_no", "02F1").like("source_loc_no", "F1"));
+ if (Integer.parseInt(config.getValue()) <= agvWrkMasts.size()) {
agvLocMast = agvCommonService.getLocNo(locType, agvBasDevp.getFloor(), false, true);
} else {
- agvLocMast = agvCommonService.getLocNo(locType, agvBasDevp.getFloor(), false, false);
+ if (isCurrLev.get()) {
+ agvLocMast = agvCommonService.getLocNo(locType, agvBasDevp.getFloor(), false, true);
+ } else {
+ agvLocMast = agvCommonService.getLocNo(locType, agvBasDevp.getFloor(), false, false);
+ }
+ //agvLocMast = agvCommonService.getLocNo(locType,agvBasDevp.getFloor(),false,false);
}
- //agvLocMast = agvCommonService.getLocNo(locType,agvBasDevp.getFloor(),false,false);
}
}
@@ -639,6 +649,15 @@
if (Cools.isEmpty(agvBasDevp)) {
throw new CoolException("鏆傛棤" + station + "绔欑偣");
}
+
+ AgvBasDevp agvBasDevp2 = agvBasDevpService.selectOne(new EntityWrapper<AgvBasDevp>().eq("barcode", containerCode).ne("dev_no", agvBasDevp.getDevNo()));
+ if (!Cools.isEmpty(agvBasDevp2)) {
+ throw new CoolException(station + "绔欑偣缁戝畾璇ヨ揣鏋讹紝鏃犳硶鍏ュ簱");
+ }
+ if (Cools.isEmpty(agvBasDevp)) {
+ throw new CoolException("鏆傛棤" + station + "绔欑偣");
+ }
+
int br = 0;
if (containerType == 21 && agvBasDevp.getFloor() == 2) {
containerType = 20;
@@ -737,7 +756,8 @@
// //agvLocMast = agvCommonService.getLocNo(locType,agvBasDevp.getFloor(),false,false);
// }
// }
- agvLocMast = agvCommonService.getLocByLocRule(3, 1, code);
+ // 棰勭暀20涓簱浣�
+ agvLocMast = agvCommonService.getLocByLocRule20(3, 1, code, false);
String devNo = agvBasDevp.getDevNo();
@@ -745,14 +765,173 @@
String ctnNo = null;
// 鎵撴爣璁帮紝鑻ュ簱浣嶄笉澶燂紝鍏ュ簱鍒板埆鐨勬ゼ灞傦紝閭d箞闇�瑕佽法灞傜Щ搴�
if (!Cools.isEmpty(code)) {
- if (agvLocMast.getLev1() == 1 && !code.equals(AsrsConstants.SANCHANG)) {
- ctnNo = "1";
- } else if (agvLocMast.getLev1() == 2 && !code.equals(AsrsConstants.ERCHANG)) {
+ if (agvLocMast.getLev1() == 1 && code.equals(AsrsConstants.ERCHANG)) {
+ ctnNo = "2";
+ } else if (agvLocMast.getLev1() == 2 && code.equals(AsrsConstants.SANCHANG)) {
ctnNo = "1";
}
}
//鐢熸垚宸ヤ綔妗�
AgvWrkMast wrkMast = createWrkMastV2(1, 201L, devNo, locNo, containerCode, now, userId, containerType, agvLocMast.getPltType(), ctnNo);
+ //鐢熸垚宸ヤ綔妗f槑缁�
+ long flowId = snowflakeIdWorker.nextId();
+ agvWaitPakinList.forEach(wp -> {
+ createWrkDetlReWrite(wp.getMatnr(), wrkMast.getWrkNo(), wp.getOrderNo(), wp.getBatch(), wp.getAnfme(), wp.getSuppCode(), now, userId, wp.getThreeCode(), wp.getDeadTime(), wp.getProcessSts());
+ });
+ //淇敼鍏ュ簱閫氱煡妗g姸鎬�
+ agvWaitPakinService.updateIoStatus(containerCode, "Y");
+ //鏇存柊婧愮珯鐐圭姸鎬�
+ updateAgvBasDevp(agvBasDevp, "R", containerType);
+ } else {
+ //鏌ヨ宸ヤ綔妗�
+ AgvWrkMast agvWrkMast1 = agvWrkMastService.selectByContainerCode(containerCode);
+ if (!Cools.isEmpty(agvWrkMast1)) {
+ throw new CoolException("褰撳墠璐ф灦宸叉湁鍏ュ簱浠诲姟锛屾棤娉曡繘琛屽叆搴�");
+ }
+ agvLocMast = agvCommonService.getLocNo(locType, agvBasDevp.getFloor(), true, true);
+ // 鐢熸垚宸ヤ綔妗� 10.绌烘澘鍏ュ簱
+ createWrkMast(10, 201L, agvBasDevp.getDevNo(), agvLocMast.getLocNo(), containerCode, now, userId, containerType, agvLocMast.getPltType());
+ //鏇存柊婧愮珯鐐圭姸鎬�
+ updateAgvBasDevp(agvBasDevp, "R", containerType, containerCode);
+ }
+
+ //鏇存柊鐩爣搴撲綅鐘舵�佸拰淇℃伅
+ updateAgvLocMast(agvLocMast, "S");
+ return agvLocMast.getLocNo();
+ }
+
+ /*
+ 鍏ュ簱
+ */
+ @Transactional
+ public String emptyPlateInV3(String station, String containerCode, Short containerType, Long userId, boolean emptyAutoIn) {
+
+ Date now = new Date();
+
+ Short locType = 0;
+
+ AgvBasDevp agvBasDevp = agvBasDevpService.selectById(station);
+ if (Cools.isEmpty(agvBasDevp)) {
+ throw new CoolException("鏆傛棤" + station + "绔欑偣");
+ }
+ AgvBasDevp agvBasDevp2 = agvBasDevpService.selectOne(new EntityWrapper<AgvBasDevp>().eq("barcode", containerCode).ne("dev_no", agvBasDevp.getDevNo()));
+ if (!Cools.isEmpty(agvBasDevp2)) {
+ throw new CoolException(station + "绔欑偣缁戝畾璇ヨ揣鏋讹紝鏃犳硶鍏ュ簱");
+ }
+ int br = 0;
+ if (containerType == 21 && agvBasDevp.getFloor() == 2) {
+ containerType = 20;
+ }
+ switch (containerType) {
+ case 10:
+ br = 1;
+ break;
+ case 20:
+ br = 2;
+ break;
+ case 21:
+ br = 4;
+ break;
+ case 30:
+ br = 3;
+ break;
+ case 31:
+ br = 6;
+ break;
+ case 40:
+ br = 5;
+ break;
+ }
+ if (br == 4 && agvBasDevp.getLocType1() == 2) {
+ br = 2;
+ }
+ if (agvBasDevp.getLocType1() != br) {
+ throw new CoolException("绔欑偣绫诲瀷鍜岃揣鏋剁被鍨嬩笉绗︼紒");
+ }
+ AtomicReference<String> factory = new AtomicReference<>();
+ if (containerType == 40) {
+ locType = 5;
+ } else if (containerType == 21 && agvBasDevp.getFloor() == 3) {
+ locType = 4;
+ } else if (containerType == 20 && agvBasDevp.getFloor() == 3) {
+ locType = 2;
+ } else if (containerType == 30) {
+ locType = 3;
+ } else if (containerType == 31) {
+ locType = 6;
+ } else {
+ locType = agvBasDevp.getLocType1();
+ }
+
+ if (!Cools.eq(agvBasDevp.getBarcode(), containerCode) && !agvBasDevp.getLocSts().equals("O") && !emptyAutoIn) {
+ throw new CoolException("褰撳墠宸ヤ綔浣嶇姸鎬佷负" + agvBasDevp.getLocSts() + ",鏃犳硶杩涜鍏ュ簱");
+ }
+
+ //鏌ヨ宸ヤ綔妗�
+ AgvWrkMast agvWrkMast = agvWrkMastService.selectByContainerCode(containerCode);
+ if (!Cools.isEmpty(agvWrkMast) && !emptyAutoIn) {
+ throw new CoolException("褰撳墠璐ф灦宸叉湁鍏ュ簱浠诲姟锛屾棤娉曡繘琛屽叆搴�");
+ }
+
+ //妫�绱㈠簱浣嶏紝閫夋嫨鍚堥�傜殑搴撲綅
+ AgvLocMast agvLocMast = new AgvLocMast();
+
+ //鏌ヨ搴撳瓨
+ AgvLocMast locMast = agvLocMastService.selectOne(new EntityWrapper<AgvLocMast>().eq("barcode", containerCode));
+ if (!Cools.isEmpty(locMast)) {
+ throw new CoolException("褰撳墠璐ф灦宸插湪搴撳瓨涓紝鏃犳硶杩涜鍏ュ簱");
+ }
+
+ //鏌ヨ鍏ュ簱閫氱煡妗�
+ List<AgvWaitPakin> agvWaitPakinList = agvWaitPakinService.selectByContainerCode(containerCode);
+ if (!Cools.isEmpty(agvWaitPakinList)) {
+ AtomicBoolean isCurrLev = new AtomicBoolean(false);
+ agvWaitPakinList.forEach(agvWaitPakin -> {
+ factory.set(OrderUtils.getFactory(agvWaitPakin.getThreeCode()));
+ if (!Cools.isEmpty(agvWaitPakin.getProcessSts())) {
+ if (agvWaitPakin.getProcessSts() == 1) {
+ isCurrLev.set(true);
+ }
+ }
+ });
+
+
+ Config config = configService.selectOne(new EntityWrapper<Config>().eq("code", "elevatorTasks"));
+ if (Cools.isEmpty(config)) {
+ if (isCurrLev.get()) {
+ agvLocMast = agvCommonService.getLocNo(locType, agvBasDevp.getFloor(), false, true);
+ } else {
+ agvLocMast = agvCommonService.getLocNo(locType, agvBasDevp.getFloor(), false, false);
+ }
+ } else {
+ if (station.endsWith("F4") && locType == 3) {
+ agvLocMast = agvCommonService.getLocNoOnXiSuer(locType, 1);
+ } else if (locType == 6) {
+ agvLocMast = agvCommonService.getLocNoOnXiSuer20(locType, 1);
+ } else {
+ List<AgvWrkMast> agvWrkMasts = agvWrkMastService.selectList(new EntityWrapper<AgvWrkMast>().like("loc_no", "02F1").like("source_loc_no", "F1"));
+ if (Integer.parseInt(config.getValue()) <= agvWrkMasts.size()) {
+ agvLocMast = agvCommonService.getLocNo(locType, agvBasDevp.getFloor(), false, true);
+ } else {
+ if (isCurrLev.get()) {
+ agvLocMast = agvCommonService.getLocNo(locType, agvBasDevp.getFloor(), false, true);
+ } else {
+ agvLocMast = agvCommonService.getLocNo(locType, agvBasDevp.getFloor(), false, false);
+ }
+ //agvLocMast = agvCommonService.getLocNo(locType,agvBasDevp.getFloor(),false,false);
+ }
+ }
+ }
+ if (agvLocMast == null) {
+ throw new CoolException("娌℃湁璇ョ被鍨嬬殑绌哄簱浣嶄簡");
+ }
+
+ String devNo = agvBasDevp.getDevNo();
+ String locNo = agvLocMast.getLocNo();
+
+
+ //鐢熸垚宸ヤ綔妗�
+ AgvWrkMast wrkMast = createWrkMast(1, 201L, devNo, locNo, containerCode, now, userId, containerType, agvLocMast.getPltType());
//鐢熸垚宸ヤ綔妗f槑缁�
long flowId = snowflakeIdWorker.nextId();
agvWaitPakinList.forEach(wp -> {
@@ -799,18 +978,23 @@
if (!Cools.isEmpty(agvWrkMast)) {
throw new CoolException("鏈夎揣鏋跺湪寰�绔欑偣鎼繍" + agvBasDevp.getDevNo() + ",鏃犳硶杩涜绌烘澘鍑哄簱");
}
+ AgvLocMast agvLocMast = null;
+ if (station.startsWith("XI") && station.endsWith("F4") && containerType == 30) {
+ agvLocMast = agvLocMastService.select30EmptyZpallet();
+ } else {
+ //瀵绘壘鐩稿簲绫诲瀷鐨勭┖璐ф灦
+ Integer floor = agvBasDevp.getFloor();
+ if (floor == 4) {
+ floor = 1;
+ }
+ agvLocMast = agvLocMastService.selectEmptyZpallet(containerType, floor);
+ if (containerType == 0) {
+ //绌烘澘鑷姩鍑哄簱锛屾牴鎹珯鐐圭被鍨嬮�夋嫨
+ agvLocMastService.selectEmptyZpalletByLocType1(agvBasDevp.getLocType1());
- //瀵绘壘鐩稿簲绫诲瀷鐨勭┖璐ф灦
- Integer floor = agvBasDevp.getFloor();
- if (floor == 4) {
- floor = 1;
+ }
}
- AgvLocMast agvLocMast = agvLocMastService.selectEmptyZpallet(containerType, floor);
- if (containerType == 0) {
- //绌烘澘鑷姩鍑哄簱锛屾牴鎹珯鐐圭被鍨嬮�夋嫨
- agvLocMastService.selectEmptyZpalletByLocType1(agvBasDevp.getLocType1());
- }
if (Cools.isEmpty(agvLocMast)) {
throw new CoolException("鏆傛棤褰撳墠鍑哄簱绔欑偣绫诲瀷鐨勭┖璐ф灦锛�");
@@ -841,7 +1025,7 @@
List<AgvLocDetl> locDetls = agvLocDetlService.selectList(new EntityWrapper<AgvLocDetl>().eq("loc_no", param.getLocNo()));
List<LocDetlAdjustParam.LocDetlAdjust> list = param.getList();
-
+ String barcode = null;
// 淇敼鏁伴噺
Iterator<AgvLocDetl> iterator = locDetls.iterator();
while (iterator.hasNext()) {
@@ -928,6 +1112,7 @@
locDetl.setThreeCode(adjust.getThreeCode());
locDetl.setDeadTime(adjust.getDeadTime());
locDetl.setSuppCode(adjust.getSuppCode());
+ barcode = adjust.getSuppCode();
if (!agvLocDetlService.insert(locDetl)) {
throw new CoolException("娣诲姞" + locDetl.getLocNo() + "搴撲綅锛�" + locDetl.getMatnr() + "鍟嗗搧锛�" + locDetl.getBatch() + "搴忓垪鐮佸簱瀛樻槑缁嗗け璐�");
}
@@ -960,6 +1145,7 @@
if (locMast.getLocSts().equals("D") || locMast.getLocSts().equals("O")) {
if (count > 0) {
locMast.setLocSts("F");
+ locMast.setBarcode(barcode);
}
}
locMast.setModiUser(userId);
@@ -1072,6 +1258,9 @@
String devNo = wrkMast.getSourceLocNo();
//鐩爣搴撲綅
String locNo = wrkMast.getLocNo();
+ if (!Cools.isEmpty(locNo)) {
+ agvLocDetlService.delete(new EntityWrapper<AgvLocDetl>().eq("loc_no", locNo));
+ }
agvLocMastService.updateLocStsByLocNo(locNo, "O", "", null);
if (wrkMast.getIoType() == 58) {
agvBasDevpService.updateLocStsAndBarcodeByDevNo(devNo, "F", wrkMast.getBarcode(), wrkMast.getWhsType().shortValue());
@@ -1185,6 +1374,9 @@
if (wrkMast.getIoType() == 112) {
throw new CoolException("褰撳墠浣滀笟涓嶈兘鍙栨秷锛�");
}
+ if (wrkMast.getIoType() == 108 && wrkMast.getWrkSts() >= 204) {
+ throw new CoolException("婧愬簱浣嶅凡缁忛噴鏀撅紝褰撳墠浣滀笟涓嶈兘鍙栨秷锛�");
+ }
// 婧愬簱浣�
String locNo = wrkMast.getSourceLocNo();
// 鐩爣搴撲綅
@@ -1214,6 +1406,14 @@
orderDetl.setQty(orderDetl.getQty() - agvLocDetl.getAnfme());
if (!orderDetlService.update(orderDetl, new EntityWrapper<OrderDetl>().eq("order_no", "DB" + agvLocDetl.getOrderNo()).eq("matnr", agvLocDetl.getMatnr()).eq("three_code", agvLocDetl.getThreeCode()))) {
throw new CoolException("淇敼璁㈠崟鏄庣粏澶辫触锛岃鑱旂郴绠$悊鍛�" + agvLocDetl.getOrderNo() + agvLocDetl.getMatnr());
+ }
+ } else {
+ orderDetl = orderDetlService.selectOne(new EntityWrapper<OrderDetl>().eq("matnr", agvLocDetl.getMatnr()).eq("three_code", agvLocDetl.getThreeCode()).eq("source", 33).ge("qty", agvLocDetl.getAnfme()));
+ if (orderDetl != null) {
+ orderDetl.setQty(orderDetl.getQty() - agvLocDetl.getAnfme());
+ if (!orderDetlService.update(orderDetl, new EntityWrapper<OrderDetl>().eq("order_no", orderDetl.getOrderNo()).eq("matnr", agvLocDetl.getMatnr()).eq("three_code", agvLocDetl.getThreeCode()))) {
+ //throw new CoolException("淇敼璁㈠崟鏄庣粏澶辫触锛岃鑱旂郴绠$悊鍛�" + agvLocDetl.getOrderNo() + agvLocDetl.getMatnr());
+ }
}
}
// FlowLog flowLog = new FlowLog();
@@ -1247,6 +1447,9 @@
// 鍥炴祦鍗曞彇娑�
} else if (wrkMast.getIoType() == 114) {
+ if (wrkMast.getWrkSts() >= 204) {
+ throw new CoolException("婧愬簱浣嶅凡缁忛噴鏀撅紝褰撳墠浣滀笟涓嶈兘鍙栨秷锛�");
+ }
//婧愬簱浣�
String locNo = wrkMast.getSourceLocNo();
// 鐩爣搴撲綅
@@ -1352,9 +1555,13 @@
throw new CoolException("鍒犻櫎澶辫触锛岃鑱旂郴绠$悊鍛�");
}
- if (type == 2) {
- //璋冪敤agv鍙栨秷浠诲姟鎺ュ彛
- agvWrkMastService.callCancelTask(wrkMast.getWrkNo());
+ if (type == 2 || type == 5) {
+ try {
+ //璋冪敤agv鍙栨秷浠诲姟鎺ュ彛
+ agvWrkMastService.callCancelTask(wrkMast.getWrkNo());
+ } catch (Exception e) {
+ log.info("璋冪敤agv鍙栨秷浠诲姟鎺ュ彛澶辫触");
+ }
}
}
}
@@ -1418,7 +1625,10 @@
}
OrderDetl orderDetl = orderDetlService.selectItem(orderNo, mat.getMatnr(), batch, csocode);
if (orderDetl == null) {
- throw new CoolException("璁㈠崟鏄庣粏涓嶅瓨鍦�");
+ orderDetl = orderDetlService.selectItem(orderNo, mat.getMatnr(), null, csocode);
+ if (orderDetl == null) {
+ throw new CoolException("璁㈠崟鏄庣粏涓嶅瓨鍦�");
+ }
}
AgvWrkDetl wrkDetl = new AgvWrkDetl();
wrkDetl.sync(mat);
--
Gitblit v1.9.1