From dcd2e9ad65580de56147956e718059f50f1691d2 Mon Sep 17 00:00:00 2001
From: skyouc <958836976@qq.com>
Date: 星期五, 30 一月 2026 08:36:12 +0800
Subject: [PATCH] no message
---
src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java | 290 +++++++++++++++++++++++++++++++++++++--------------------
1 files changed, 186 insertions(+), 104 deletions(-)
diff --git a/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
index 09ec30e..f8d4fbf 100644
--- a/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
@@ -605,9 +605,6 @@
if (Objects.isNull(container)) {
throw new CoolException("鏁版嵁閿欒锛氬鍣ㄧ爜涓嶅瓨鍦紒锛�");
}
- // if (param.getBarcode().length() != 8) {
- // throw new CoolException("鏉$爜闀垮害涓嶆槸8浣�===>>" + param.getBarcode());
- // }
if (Objects.isNull(param.getType())) {
param.setType("0");
@@ -689,7 +686,10 @@
OrderDetlPakin detls = orderDetlPakinService.selectOne(new EntityWrapper<OrderDetlPakin>()
.eq("order_id", order.getId())
.eq("matnr", elem.getMatnr()));
-
+ if (Objects.isNull(elem.getBoxType1())) {
+ throw new CoolException("鏍煎眰缂栫爜涓嶈兘涓虹┖锛侊紒");
+ }
+ detls.setBoxType1(elem.getBoxType1());
if (Objects.isNull(detls)) {
throw new CoolException("鏁版嵁閿欒锛氬崟鎹槑缁嗕笉瀛樺湪锛侊紒");
}
@@ -699,14 +699,14 @@
}
OrderInAndOutUtil.increaseWorkQty(Boolean.TRUE, order.getId(), elem.getMatnr(), elem.getBatch(),
elem.getBrand(), elem.getStandby1(), elem.getStandby2(), elem.getStandby3(),
- elem.getBoxType1(), elem.getBoxType2(), elem.getBoxType3(), elem.getAnfme());
- DetlDto detlDto = new DetlDto(elem.getMatnr(), elem.getBatch(), elem.getBrand(), elem.getStandby1(),
+ "1", elem.getBoxType2(), elem.getBoxType3(), elem.getAnfme());
+ DetlDto detlDto = new DetlDto(order.getOrderNo(), elem.getMatnr(), elem.getBatch(), elem.getBrand(), elem.getStandby1(),
elem.getStandby2(), elem.getStandby3(),
elem.getBoxType1(), elem.getBoxType2(), elem.getBoxType3(), elem.getAnfme(),
elem.getThreeCode());
detlDto.setOrderId(order.getId());
detlDto.setOrderNo(order.getOrderNo());
- if (DetlDto.has(detlDtos, detlDto)) {
+ if (DetlDto.hasOrder(detlDtos, detlDto)) {
DetlDto one = DetlDto.findDto(detlDtos, detlDto);
assert one != null;
one.setAnfme(one.getAnfme() + detlDto.getAnfme());
@@ -762,6 +762,7 @@
waitPakin.setThreeCode(detlDto.getThreeCode());
waitPakin.setSuppCode(detlDto.getStandby1());
waitPakin.setStandby1(detlDto.getStandby1());
+ waitPakin.setBoxType1(detlDto.getBoxType1());
waitPakin.setIoStatus("N"); // 鍏ュ嚭鐘舵��
waitPakin.setAnfme(detlDto.getAnfme()); // 鏁伴噺
waitPakin.setStatus("Y"); // 鐘舵��
@@ -991,7 +992,7 @@
try {
response = new HttpHandler.Builder()
.setUri(MesConstant.URL)
- .setPath(MesConstant.PACK_DOWN_URL)
+ .setPath(MesConstant.IN_DISPATCH_RESULT)
.setJson(JSON.toJSONString(mesCombParam))
.build()
.doPost();
@@ -999,11 +1000,11 @@
if (jsonObject.getInteger("code").equals(200)) {
success = true;
} else if (jsonObject.getInteger("code").equals(500)) {
- log.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", MesConstant.URL + MesConstant.PACK_DOWN_URL,
+ log.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", MesConstant.URL + MesConstant.IN_DISPATCH_RESULT,
JSON.toJSONString(mesCombParam), response);
throw new CoolException(jsonObject.getString("msg"));
} else {
- log.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", MesConstant.URL + MesConstant.PACK_DOWN_URL,
+ log.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", MesConstant.URL + MesConstant.IN_DISPATCH_RESULT,
JSON.toJSONString(mesCombParam), response);
throw new CoolException("涓婃姤mes绯荤粺澶辫触");
}
@@ -1015,7 +1016,7 @@
// 淇濆瓨鎺ュ彛鏃ュ織
apiLogService.save(
"鎵撳寘涓嬬嚎甯墭涓婃姤",
- MesConstant.URL + MesConstant.PACK_DOWN_URL,
+ MesConstant.URL + MesConstant.IN_DISPATCH_RESULT,
null,
"127.0.0.1",
JSON.toJSONString(mesCombParam),
@@ -1066,7 +1067,7 @@
// }
OrderInAndOutUtil.increaseWorkQty(Boolean.TRUE, order.getId(), detlDto.getMatnr(), detlDto.getBatch(),
detlDto.getBrand(), detlDto.getStandby1(), detlDto.getStandby2(), detlDto.getStandby3(),
- detlDto.getBoxType1(), detlDto.getBoxType2(), detlDto.getBoxType3(), detlDto.getAnfme());
+ "1", detlDto.getBoxType2(), detlDto.getBoxType3(), detlDto.getAnfme());
// 淇濆瓨鍏ュ簱閫氱煡妗�
Mat mat = matService.selectByMatnr(detlDto.getMatnr());
if (Cools.isEmpty(mat)) {
@@ -1179,7 +1180,7 @@
@Override
@Transactional
public void stockOut(OrderDetl orderDetl, BasDevp staNo, LocDetl locDetl,
- Double curOutQty, Integer ioType, Long userId, Date now) {
+ Double curOutQty, Integer ioType, Long userId, Date now) {
// 鑾峰彇搴撲綅
LocMast locMast = locMastService.selectById(locDetl.getLocNo());
// 鑾峰彇璺緞
@@ -1741,7 +1742,7 @@
throw new CoolException("鏁版嵁閿欒锛岀珯鐐逛笉瀛樺湪锛侊紒");
}
station.setLocSts(LocStsType.LOC_STS_TYPE_O.type);
- station.setBarcode(null);
+ station.setBarcode("");
if (!basStationService.updateById(station)) {
throw new CoolException("绔欑偣鐘舵�佹洿鏂板け璐ワ紒锛�");
}
@@ -1759,61 +1760,53 @@
*/
@Override
@Transactional(rollbackFor = Exception.class)
- public void combInPub(CompleteParam param, Long userId) {
+ public R combInPub(CompleteParam param, Long userId) {
if (Objects.isNull(param.getBarcode())) {
throw new CoolException("鎵樼洏鐮佷笉鑳戒负绌猴紒锛�");
}
- if (Objects.isNull(param.getStation())) {
+ if (Objects.isNull(param.getSourceStaNo())) {
throw new CoolException("绔欑偣涓嶈兘涓虹┖!!");
}
-// // TODO 淇敼缂撳瓨绔欑偣鐘舵�佸強鏁版嵁
-// Task task = taskService.selectOne(new EntityWrapper<Task>()
-// .eq("wrk_sts", 14L)
-// .eq("barcode", param.getCarBarcode()));
-// if (Objects.isNull(task)) {
-// throw new CoolException("鏁版嵁閿欒,浠诲姟涓嶅瓨鍦�!!");
-// }
-// List<TaskDetl> taskDetls = taskDetlService
-// .selectList(new EntityWrapper<TaskDetl>().eq("wrk_no", task.getWrkNo()));
-// if (Objects.isNull(taskDetls) || taskDetls.isEmpty()) {
-// throw new CoolException("鏁版嵁閿欒,浠诲姟鏄庣粏涓嶅瓨鍦�!!");
-// }
+ if (Objects.isNull(param.getLocType1())) {
+ param.setLocType1((short)1);
+ }
- BasStation station = basStationService.selectOne(new EntityWrapper<BasStation>()
- .eq("dev_no", param.getStation()));
+
+ log.info("WCS浠诲姟鐢熸垚璇锋眰鍙傛暟锛�", JSONObject.toJSONString(param));
+
+
+ BasDevp station = basDevpService.selectOne(new EntityWrapper<BasDevp>()
+ .eq("dev_no", param.getSourceStaNo()));
if (Objects.isNull(station)) {
throw new CoolException("绔欑偣涓嶅瓨鍦�!!");
}
- station.setLocSts(LocStsType.LOC_STS_TYPE_O.type);
- station.setBarcode(null);
- if (!basStationService.updateById(station)) {
- throw new CoolException("绔欑偣鐘舵�佷慨鏀瑰け璐�!");
- }
- basStationDetlService.delete(new EntityWrapper<BasStationDetl>().eq("dev_no", station.getDevNo()));
-
-// // 浠诲姟瀹屾垚
-// task.setWrkSts(15L);
-//
-// if (!taskService.updateById(task)) {
-// throw new CoolException("AGV浠诲姟瀹屾垚澶辫触!!");
-// }
-
List<WaitPakin> waitPakins = waitPakinService
- .selectList(new EntityWrapper<WaitPakin>().eq("zpallet", param.getBarcode()));
+ .selectList(new EntityWrapper<WaitPakin>()
+ .eq("io_status" , "N")
+ .eq("zpallet", param.getBarcode()));
if (Objects.isNull(waitPakins) || waitPakins.isEmpty()) {
throw new CoolException("鏁版嵁閿欒,缁勬嫋妗e凡涓嶅瓨鍦�!!");
}
- generateCrnInTask(waitPakins, station, param.getLocType1(), userId);
+ WrkMast wrkMast = generateCrnInTask(waitPakins, station, param.getLocType1(), userId);
+
+ Map<String, Object> response = new HashMap<>();
+ response.put("taskNo", wrkMast.getWrkNo());
+ response.put("locNo", wrkMast.getLocNo());
+ response.put("taskPri", wrkMast.getIoPri());
+
+ return R.ok("浠诲姟鐢熸垚鎴愬姛").add(response);
+
}
/**
* SO/EO 鍖虹粍鎵�
- * @author Ryan
- * @date 2025/12/18 15:19
+ *
* @param params
* @return com.core.common.R
+ * @author Ryan
+ * @date 2025/12/18 15:19
*/
@Override
@Transactional(rollbackFor = Exception.class)
@@ -1866,7 +1859,6 @@
if (!basStationDetlService.insert(basStationDetl)) {
throw new CoolException("鎻掑叆鏄庣粏澶辫触");
}
-
} else {
BigDecimal anfme = new BigDecimal(basStationDetl.getAnfme().toString()).add(combMat.getWorkQty());
basStationDetl.setAnfme(anfme.doubleValue());
@@ -1925,6 +1917,10 @@
throw new CoolException("浜虹墿绫诲瀷閿欒");
}
+ wrkDetlService.selectList(new EntityWrapper<WrkDetl>()
+ .eq(!Objects.isNull(params.getMatnr()), "matnr", params.getMatnr())
+ .eq("wrk_no", wrkMast.getWrkNo()));
+
List<WrkDetl> wrkDetls = wrkDetlService.selectByWrkNo(wrkMast.getWrkNo());
if (Cools.isEmpty(wrkDetls)) {
throw new CoolException("鏈壘鍒颁换鍔℃槑缁�");
@@ -1941,18 +1937,18 @@
* @date 2025/12/9 13:54
*/
@Transactional(rollbackFor = Exception.class)
- public void generateCrnInTask(List<WaitPakin> waitPakins, BasStation station, Short locType, Long userId) {
+ public WrkMast generateCrnInTask(List<WaitPakin> waitPakins, BasDevp station, Short locType, Long userId) {
Date now = new Date();
- StationRela rela = stationRelaService.selectOne(new EntityWrapper<StationRela>()
- .eq("agv_sta", station.getDevNo())
- .orderAsc(Arrays.asList("crn_sta"))
- .last("OFFSET 0 ROWS FETCH NEXT 1 ROWS ONLY"));
+// StationRela rela = stationRelaService.selectOne(new EntityWrapper<StationRela>()
+// .eq("agv_sta", station.getDevNo())
+// .orderAsc(Arrays.asList("crn_sta"))
+// .last("OFFSET 0 ROWS FETCH NEXT 1 ROWS ONLY"));
+//
+// if (Objects.isNull(rela)) {
+// throw new CoolException("鏈粦瀹氫綔涓氱珯鐐�!!");
+// }
- if (Objects.isNull(rela)) {
- throw new CoolException("鏈粦瀹氫綔涓氱珯鐐�!!");
- }
-
- BasDevp sourceStaNo = basDevpService.checkSiteStatus(Integer.parseInt(rela.getCrnSta()), true);
+ BasDevp sourceStaNo = basDevpService.checkSiteStatus(station.getDevNo(), true);
sourceStaNo.setLocType1(locType);
LocTypeDto locTypeDto = new LocTypeDto(sourceStaNo);
WaitPakin pakin = waitPakins.stream().findFirst().get();
@@ -1960,6 +1956,7 @@
WrkMast mast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("barcode", pakin.getZpallet()));
WrkMast wrkMast = new WrkMast();
+ String locNo;
if (!Objects.isNull(mast)) {
if (mast.getIoType().equals(TaskIOType.MERGE_OUT.type) || mast.getIoType().equals(TaskIOType.PICK_OUT.type) || mast.getIoType().equals(TaskIOType.CHECK_OUT.type)) {
int ioType = mast.getIoType() - 50;
@@ -1973,6 +1970,7 @@
if (!res) {
throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
}
+ locNo = mast.getLocNo();
// 鏇存柊婧愮珯鐐逛俊鎭�
sourceStaNo.setWrkNo(mast.getWrkNo());
sourceStaNo.setModiTime(now);
@@ -1993,8 +1991,10 @@
} else {
throw new CoolException("鎵樼洏宸插瓨鍦ㄤ换鍔℃。锛侊紒");
}
+
} else {
StartupDto dto = commonService.getLocNo(1, sourceStaNo.getDevNo(), findLocNoAttributeVo, locTypeDto);
+
int workNo = dto.getWorkNo();
// 鐢熸垚宸ヤ綔妗�
wrkMast.setWrkNo(workNo);
@@ -2022,6 +2022,7 @@
if (!res) {
throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
}
+ locNo = dto.getLocNo();
// 鏇存柊婧愮珯鐐逛俊鎭�
sourceStaNo.setWrkNo(workNo);
sourceStaNo.setModiTime(now);
@@ -2055,17 +2056,18 @@
});
+ // 鏇存柊鍏ュ簱閫氱煡妗� ioStatus ===>> Y
+ Wrapper<WaitPakin> wrapper = new EntityWrapper<WaitPakin>()
+ .eq("zpallet", pakin.getZpallet());
+ WaitPakin setParam = new WaitPakin();
+ setParam.setLocNo(locNo);
+ setParam.setIoStatus("Y");
+ setParam.setModiTime(now);
+ if (!waitPakinService.update(setParam, wrapper)) {
+ throw new CoolException("鏇存柊閫氱煡妗eけ璐�");
+ }
-// // 鏇存柊鍏ュ簱閫氱煡妗� ioStatus ===>> Y
-// Wrapper<WaitPakin> wrapper = new EntityWrapper<WaitPakin>()
-// .eq("zpallet", pakin.getZpallet());
-// WaitPakin setParam = new WaitPakin();
-// setParam.setLocNo(dto.getLocNo());
-// setParam.setIoStatus("Y");
-// setParam.setModiTime(now);
-// if (!waitPakinService.update(setParam, wrapper)) {
-// throw new CoolException("鏇存柊閫氱煡妗eけ璐�");
-// }
+ return wrkMast;
}
/**
@@ -2195,8 +2197,14 @@
.eq("loc_sts", LocStsType.LOC_STS_TYPE_D.type)
.orderAsc(Arrays.asList("row1", "bay1", "lev1"))
.last("OFFSET 0 ROWS FETCH NEXT 1 ROWS ONLY"));
+
+ if (Objects.isNull(locMast)) {
+ throw new CoolException("鏈煡璇㈠埌鍙敤鐨勭┖鏉夸俊鎭紒锛�");
+ }
+
CrnTaskDetlDTO crnTaskDetlDTO = new CrnTaskDetlDTO().setLocNo(locMast.getLocNo()).setLocDetlList(locDetls);
locMasts.add(crnTaskDetlDTO);
+
// 绌烘澘鍑哄簱
generateTask(locMasts, TaskIOType.MERGE_OUT.type, basDevp, userId, station);
}
@@ -2222,7 +2230,7 @@
WrkMast wrkMast1 = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("source_loc_no", locMast.getLocNo()));
// 鐢熸垚宸ヤ綔鍙�
int workNo = commonService.getWorkNo(WorkNoType.getWorkNoType(ioType));
- if (Cools.isEmpty(wrkMast1)){
+ if (Cools.isEmpty(wrkMast1)) {
Integer outSta = devp.getDevNo();
// 鑾峰彇璺緞
StaDesc staDesc = staDescService.queryCrnStn(ioType, locMast.getCrnNo(), outSta);
@@ -2254,14 +2262,13 @@
if (!wrkMastService.insert(wrkMast)) {
throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐ワ紝鍑哄簱搴撲綅鍙凤細" + locMast.getLocNo());
}
- }else {
+ } else {
workNo = wrkMast1.getWrkNo();
}
// 鐢熸垚宸ヤ綔妗f槑缁�
for (LocDetl detlDto : crnTaskDetlDTO.getLocDetlList()) {
WrkDetl wrkDetl = new WrkDetl();
BeanUtils.copyProperties(detlDto, wrkDetl);
- wrkDetl.setOrderNo(""); // 鎵嬪姩鍑哄簱涓嶉渶瑕佸甫鍑哄簱瀛樹腑鐨勫崟鎹紪鍙�
wrkDetl.setWrkNo(workNo);
wrkDetl.setIoTime(now);
wrkDetl.setZpallet(null);
@@ -2304,7 +2311,7 @@
Task task = new Task();
task.setWrkNo(workNo)
.setIoTime(new Date())
- .setWrkSts(11L) // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID
+ .setWrkSts(301L) // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID
.setIoType(loc.getLocSts().equals("D") ? 110 : 101) // 鍏ュ嚭搴撶姸鎬侊細 11.搴撴牸绉昏浇
.setTaskType("agv")
.setIoPri(10D)
@@ -2381,11 +2388,6 @@
*/
@Transactional(rollbackFor = Exception.class)
public void generateAgvTask(String type, LocCache loc, String orgSite, String barcode, Long userId) {
- List<WaitPakin> pakins = waitPakinService.selectList(new EntityWrapper<WaitPakin>().eq("zpallet", barcode));
- if (Objects.isNull(pakins) || pakins.isEmpty()) {
- throw new CoolException("缁勬墭淇℃伅涓嶅瓨鍦紒锛�");
- }
-
List<Task> tasks = taskService.selectList(new EntityWrapper<Task>().eq("barcode", barcode));
if (!tasks.isEmpty()) {
throw new CoolException("鎵樼洏宸插湪浠诲姟鎵ц涓�..");
@@ -2396,7 +2398,7 @@
Task task = new Task();
task.setWrkNo(workNo)
.setIoTime(new Date())
- .setWrkSts(1L) // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID
+ .setWrkSts(201L) // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID
.setIoType(1) // 鍏ュ嚭搴撶姸鎬侊細 11.搴撴牸绉昏浇
.setTaskType("agv")
.setIoPri(10D)
@@ -2416,32 +2418,39 @@
throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
}
- for (WaitPakin pakin : pakins) {
- TaskDetl wrkDetl = new TaskDetl();
- BeanUtils.copyProperties(pakin, wrkDetl);
- wrkDetl.setId(null).setWrkNo(workNo)
- .setIoTime(new Date())
- .setOrderNo(pakin.getOrderNo())
- .setAnfme(pakin.getAnfme())
- .setZpallet(pakin.getZpallet())
- .setBatch(pakin.getBatch())
- .setMatnr(pakin.getMatnr())
- .setMaktx(pakin.getMaktx())
- .setAppeUser(userId)
- .setUnit(pakin.getUnit())
- .setModel(pakin.getModel())
- .setAppeTime(new Date())
- .setModiUser(userId);
- if (!taskDetlService.insert(wrkDetl)) {
- throw new CoolException("淇濆瓨宸ヤ綔妗f槑缁嗗け璐�");
+ if (!type.equals("agv_back")) {
+ List<WaitPakin> pakins = waitPakinService.selectList(new EntityWrapper<WaitPakin>().eq("zpallet", barcode));
+ if (Objects.isNull(pakins) || pakins.isEmpty()) {
+ throw new CoolException("缁勬墭淇℃伅涓嶅瓨鍦紒锛�");
}
- }
+ for (WaitPakin pakin : pakins) {
+ TaskDetl wrkDetl = new TaskDetl();
+ BeanUtils.copyProperties(pakin, wrkDetl);
+ wrkDetl.setId(null).setWrkNo(workNo)
+ .setIoTime(new Date())
+ .setOrderNo(pakin.getOrderNo())
+ .setAnfme(pakin.getAnfme())
+ .setZpallet(pakin.getZpallet())
+ .setBatch(pakin.getBatch())
+ .setMatnr(pakin.getMatnr())
+ .setMaktx(pakin.getMaktx())
+ .setAppeUser(userId)
+ .setUnit(pakin.getUnit())
+ .setModel(pakin.getModel())
+ .setAppeTime(new Date())
+ .setModiUser(userId);
+ if (!taskDetlService.insert(wrkDetl)) {
+ throw new CoolException("淇濆瓨宸ヤ綔妗f槑缁嗗け璐�");
+ }
- for (WaitPakin pakin : pakins) {
- pakin.setIoStatus("Y");
- if (!waitPakinService.updateById(pakin)) {
- throw new CoolException("鏇存柊缁勬墭淇℃伅澶辫触");
+ }
+
+ for (WaitPakin pakin : pakins) {
+ pakin.setIoStatus("Y");
+ if (!waitPakinService.updateById(pakin)) {
+ throw new CoolException("鏇存柊缁勬墭淇℃伅澶辫触");
+ }
}
}
@@ -2463,9 +2472,9 @@
throw new CoolException("绔欑偣涓嶅瓨鍦�!!");
}
- if (station.getLocSts().equals(LocStsType.LOC_STS_TYPE_O.type)) {
+ if (station.getLocSts().equals(LocStsType.LOC_STS_TYPE_O.type) || station.getLocSts().equals(LocStsType.LOC_STS_TYPE_D.type)) {
station.setLocSts("R"); // S.鍏ュ簱棰勭害
-// station.setBarcode(barcode);
+ station.setBarcode(barcode);
station.setModiTime(new Date());
station.setModiUser(userId);
if (!basStationService.updateById(station)) {
@@ -2529,4 +2538,77 @@
}
return result;
}
+
+ /**
+ * 鍛煎彨AGV绌哄彴杞﹁繑鍥�
+ *
+ * @param callAgvBackParam
+ * @return com.core.common.R
+ * @author Ryan
+ * @date 2025/9/24
+ */
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public R agvCallback(AgvCallParams callAgvBackParam, Long userId) {
+ if (Objects.isNull(callAgvBackParam.getOrgSite())) {
+ return R.error("鍙傛暟涓嶈兘涓虹┖!!");
+ }
+
+ // 鎸夊綋鍓嶆煡鎵惧簱浣嶉『搴忥紝鏌ュ埌涓�涓悗锛屼笉鍐嶅線涓嬫煡璇�
+ LocCache locCache = findPriorityLocCache();
+
+ if (Objects.isNull(locCache)) {
+ return R.error("鏈煡璇㈠埌鍙敤搴撲綅");
+ }
+
+ // 淇敼鐩爣绔欑偣淇℃伅
+ BasStation station = basStationService.selectOne(new EntityWrapper<BasStation>().eq("dev_no", callAgvBackParam.getOrgSite()));
+ if (Objects.isNull(station)) {
+ throw new CoolException("绔欑偣涓嶅瓨鍦�!!");
+ }
+
+ try {
+ //绌哄彴杞﹀洖搴�
+ generateAgvTask("agv_back", locCache, callAgvBackParam.getOrgSite(), station.getBarcode(), userId);
+ } catch (Exception e) {
+ e.printStackTrace();
+ return R.error(e.getMessage());
+ }
+
+ return R.ok(locCache);
+ }
+
+ /**
+ * 鎸変紭鍏堢骇鏌ユ壘鍙敤搴撲綅
+ * 椤哄簭锛氬叆搴撶紦瀛樺尯 -> SO鍖� -> EO鍖�
+ */
+ private LocCache findPriorityLocCache() {
+ // 1. Try Inbound Cache Area
+ LocCache loc = findAvailableLocByAreaType(LocAreaType.LOC_AREA_TYPE_IN_CACHE);
+ if (loc != null) return loc;
+
+ // 2. Try SO Area
+ loc = findAvailableLocByAreaType(LocAreaType.LOC_AREA_TYPE_SO);
+ if (loc != null) return loc;
+
+ // 3. Try EO Area
+ loc = findAvailableLocByAreaType(LocAreaType.LOC_AREA_TYPE_EO);
+ return loc;
+ }
+
+ /**
+ * 鏍规嵁鍖哄煙绫诲瀷鏌ユ壘鍙敤搴撲綅
+ */
+ private LocCache findAvailableLocByAreaType(LocAreaType areaType) {
+ BasAreas area = basAreasService.selectOne(new EntityWrapper<BasAreas>().eq("whs_type_id", areaType.type));
+ if (area == null) {
+ return null;
+ }
+ return locCacheService.selectOne(new EntityWrapper<LocCache>()
+ .eq("area_id", area.getId())
+ .eq("frozen", 0)
+ .eq("loc_sts", LocStsType.LOC_STS_TYPE_O.type)
+ .orderAsc(Arrays.asList("loc_no"))
+ .last("OFFSET 0 ROWS FETCH NEXT 1 ROWS ONLY"));
+ }
}
--
Gitblit v1.9.1