From c28812eb7e5afa79cb5e2f4fbee7f96c7d7767ed Mon Sep 17 00:00:00 2001
From: skyouc <creaycat@gmail.com>
Date: 星期五, 03 四月 2026 14:33:22 +0800
Subject: [PATCH] AGV出库,立库查询库存优化
---
src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java | 147 ++++++++++++++++++++++++++++++++-----------------
1 files changed, 96 insertions(+), 51 deletions(-)
diff --git a/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
index 6310d78..0703a78 100644
--- a/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -11,6 +11,7 @@
import com.zy.asrs.entity.param.FullStoreParam;
import com.zy.asrs.entity.param.LocDetlAdjustParam;
import com.zy.asrs.entity.param.StockOutParam;
+import com.zy.asrs.enums.ContainerType;
import com.zy.asrs.enums.LocAreaType;
import com.zy.asrs.mapper.LocMastMapper;
import com.zy.asrs.entity.result.FindLocNoAttributeVo;
@@ -120,6 +121,22 @@
// List<String> matnrs = param.getList().stream().map(FullStoreParam.MatCodeStore::getMatnr).distinct().collect(Collectors.toList());
// List<String> batchs = param.getList().stream().map(FullStoreParam.MatCodeStore::getBatch).distinct().collect(Collectors.toList());
FindLocNoAttributeVo findLocNoAttributeVo = new FindLocNoAttributeVo(param.getList().get(0));
+
+// BasContainer container = basContainerService.selectOne(new EntityWrapper<BasContainer>().eq("barcode", param.getBarcode()));
+// if (Objects.isNull(container)) {
+// throw new CoolException("瀹瑰櫒缂栫爜鏈淮鎶わ紝璇风淮鎶ゅ悗鍐嶆搷浣滐紒锛�");
+// }
+//
+// Integer whsType = 1;
+// Short lcoType = 1;
+// //鐢ㄤ簬鍒ゆ柇鏂欑鎵樼洏锛屾枡绠憋紝绗兼
+// if (!container.getType().equals(ContainerType.CONTAINER_TYPE_BOX.type)) {
+// whsType = 2;
+// if (container.getType().equals(ContainerType.CONTAINER_TYPE_SALVER.type)) {
+// lcoType = 2;
+// }
+// }
+
StartupDto dto = commonService.getLocNo(1, param.getDevpNo(), sourceStaNo.getDevNo(), findLocNoAttributeVo, locTypeDto);
if (Cools.isEmpty(dto)) {
throw new CoolException("鏌ヨ搴撲綅澶辫触锛侊紒==銆媠tartupFullPutStore ==銆� commonService.getLocNo");
@@ -283,7 +300,9 @@
locDetl.getBoxType1(), locDetl.getBoxType2(), locDetl.getBoxType3(), locDetl.getAnfme(), locDetl.getThreeCode()));
locDetl.setOwner(param.getOwnerId());
try {
- locDetlService.update(locDetl, new EntityWrapper<LocDetl>().eq("loc_no", locNo).eq("matnr", locDetl.getMatnr()));
+ locDetlService.update(locDetl, new EntityWrapper<LocDetl>().eq("loc_no", locNo)
+ .eq("supp_code", locDetl.getStandby1())
+ .eq("matnr", locDetl.getMatnr()));
} catch (Exception e) {
throw new Exception("鏇存柊搴撳瓨鏄庣粏鎷ユ湁鑰呭瓧娈典俊鎭嚭閿欎簡");
}
@@ -416,17 +435,18 @@
String orderNo = taskDto.getLocDtos().get(0).getOrderNo();
// OrderPakout orderPakout = orderPakOutService.selectByNo(orderNo);
- int ioType = (taskDto.isAll() ? 101 : 103);
- if(ioType == 101){
+// int ioType = (taskDto.isAll() ? 101 : 103);
+ int ioType = 103;
+ if (ioType == 101) {
boolean DiffQty = taskDto.getLocDtos().stream().allMatch(locDto ->
locDetlService.selectOne(new EntityWrapper<LocDetl>()
.eq("loc_no", locDto.getLocNo())
.eq("matnr", locDto.getMatnr())
- .eq("batch", locDto.getBatch())
- .eq("standby1",locDto.getStandby1())
+ .eq(!Cools.isEmpty(locDto.getBatch()), "batch", locDto.getBatch())
+ .eq("standby1", locDto.getStandby1())
).getDiffQty().compareTo(BigDecimal.ZERO) == 0
);
- if (!DiffQty){
+ if (!DiffQty) {
ioType = 103;
}
}
@@ -475,6 +495,7 @@
wrkDetl.setZpallet(wrkMast.getBarcode());
wrkDetl.setIoTime(now);
wrkDetl.setWrkNo(workNo);
+ wrkDetl.setBoxType1(locDto.getBoxType1());
wrkDetl.setBatch(locDto.getBatch());
wrkDetl.setOrderNo(locDto.getOrderNo());
wrkDetl.setAnfme(locDto.getAnfme()); // 鏁伴噺
@@ -514,7 +535,8 @@
@Transactional(rollbackFor = Exception.class)
public void checkStockOut(BasDevp staNo, TaskDto taskDto, Long userId) {
Date now = new Date();
- List<LocDto> locDtos = taskDto.getLocDtos();
+ List<LocDto> locDtos = taskDto.getLocDtos().stream().distinct().collect(Collectors.toList());
+// Map<String, List<LocDto>> collect = taskDto.getLocDtos().stream().collect(Collectors.groupingBy(LocDto::getLocNo));
for (LocDto locDto : locDtos) {
if (!taskDto.getLocNo().equals(locDto.getLocNo()) && !taskDto.getStaNo().equals(locDto.getStaNo())) {
throw new CoolException("璁㈠崟鍑哄簱寮傚父锛岃鑱旂郴绠$悊鍛�");
@@ -551,27 +573,27 @@
throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐ワ紝鍑哄簱搴撲綅鍙凤細" + taskDto.getLocNo());
}
// 鐢熸垚宸ヤ綔妗f槑缁�
- for (LocDto locDto : taskDto.getLocDtos()) {
+ for (LocDto locDto : locDtos) {
if (locDto.getAnfme() == null || locDto.getAnfme() <= 0.0D) {
continue;
}
- List<CheckOrderDetl> checkOrderDetls = checkOrderDetlService.selectList(new EntityWrapper<CheckOrderDetl>()
+ CheckOrderDetl checkOrderDetls = checkOrderDetlService.selectOne(new EntityWrapper<CheckOrderDetl>()
.eq("loc_no", locDto.getLocNo())
.eq("matnr", locDto.getMatnr())
- .eq("batch", locDto.getBatch())
- .eq("order_no", locDto.getOrderNo())
- );
+ .eq("supp_code", locDto.getSuppCode())
+ .eq("order_no", locDto.getOrderNo()));
- if (checkOrderDetls.size() > 1) {
+ if (Objects.isNull(checkOrderDetls)) {
throw new CoolException("鏁版嵁澶т簬1,璇锋鏌ユ暟鎹�");
}
WrkDetl wrkDetl = new WrkDetl();
- wrkDetl.sync(checkOrderDetls.get(0));
- wrkDetl.setOrderId(checkOrderDetls.get(0).getId());
+ wrkDetl.sync(checkOrderDetls);
+ wrkDetl.setOrderId(checkOrderDetls.getId());
wrkDetl.setZpallet(wrkMast.getBarcode());
wrkDetl.setIoTime(now);
+ wrkDetl.setBoxType1(locDto.getBoxType1());
wrkDetl.setWrkNo(workNo);
wrkDetl.setBatch(locDto.getBatch());
wrkDetl.setOrderNo(locDto.getOrderNo());
@@ -584,8 +606,8 @@
throw new CoolException("淇濆瓨宸ヤ綔妗f槑缁嗗け璐�");
}
// 淇敼璁㈠崟鏄庣粏
- checkOrderDetls.get(0).setStatus(2);
- if (!checkOrderDetlService.updateById(checkOrderDetls.get(0))){
+ checkOrderDetls.setStatus(2);
+ if (!checkOrderDetlService.updateById(checkOrderDetls)) {
throw new CoolException("淇濆瓨璁㈠崟鏄庣粏澶辫触");
}
}
@@ -615,14 +637,14 @@
}
// 鑾峰彇搴撲綅
LocCache locCache = locCacheService.selectOne(new EntityWrapper<LocCache>().eq("loc_no", taskDto.getLocNo()));
- int ioType = (taskDto.isAll() ? 101 : 103);
+ int ioType = 103;
// 鐢熸垚宸ヤ綔鍙�
- int workNo = commonService.getWorkNo(WorkNoType.getWorkNoType(ioType));
+ int workNo = commonService.getWorkNo(4);
Task task = new Task();
task.setWrkNo(workNo)
.setIoTime(new Date())
- .setWrkSts(11L) // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID
+ .setWrkSts(301L) // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID
.setIoType(ioType) // 鍏ュ嚭搴撶姸鎬�
.setTaskType("agv")
.setIoPri(10D)
@@ -662,6 +684,7 @@
.setIoTime(new Date())
.setOrderNo(locDto.getOrderNo())
.setAnfme(locDto.getAnfme())
+ .setBoxType1(locDto.getBoxType1())
.setZpallet(locCache.getBarcode())
.setBatch(locDto.getBatch())
.setAppeUser(userId)
@@ -687,7 +710,7 @@
locCache.setLocSts(ioType == 101 ? "R" : "P");
locCache.setModiUser(userId);
locCache.setModiTime(now);
- if (!locCacheService.updateById(locCache)) {
+ if (!locCacheService.update(locCache, new EntityWrapper<LocCache>().eq("loc_no", locCache.getLocNo()))) {
throw new CoolException("棰勭害搴撲綅鐘舵�佸け璐ワ紝搴撲綅鍙凤細" + taskDto.getLocNo());
}
} else {
@@ -962,7 +985,7 @@
WrkMast wrkMast = new WrkMast();
wrkMast.setWrkNo(workNo);
wrkMast.setIoTime(now);
- wrkMast.setWrkSts(11L); // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID
+ wrkMast.setWrkSts(1L); // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID
wrkMast.setIoType(11); // 鍏ュ嚭搴撶姸鎬侊細 11.搴撴牸绉昏浇
wrkMast.setIoPri(10D);
wrkMast.setCrnNo(sourceLoc.getCrnNo());
@@ -988,6 +1011,7 @@
wrkDetl.sync(locDetl);
wrkDetl.setWrkNo(workNo);
wrkDetl.setIoTime(now);
+ wrkDetl.setBoxType1(locDetl.getBoxType1());
wrkDetl.setAnfme(locDetl.getAnfme());
wrkDetl.setAppeTime(now);
wrkDetl.setAppeUser(userId);
@@ -1106,11 +1130,21 @@
if (locDetl.getMatnr().equals(adjust.getMatnr()) && Cools.eq(locDetl.getBatch(), adjust.getBatch())) {
if (!locDetl.getAnfme().equals(adjust.getCount())) {
// todo 鐩樼偣璁板綍
- // 淇敼搴撳瓨
- if (!locDetlService.updateAnfme(adjust.getCount(), locDetl.getLocNo(), locDetl.getMatnr(), locDetl.getBatch(), locDetl.getBrand(),
- locDetl.getStandby1(), locDetl.getStandby2(), locDetl.getStandby3(), locDetl.getBoxType1(), locDetl.getBoxType2(), locDetl.getBoxType3())) {
- throw new CoolException(locDetl.getLocNo() + "搴撲綅锛�" + locDetl.getMatnr() + "鍟嗗搧锛�" + locDetl.getBatch() + "鎵瑰彿淇敼鏁伴噺澶辫触");
+ locDetl.setSuppCode(adjust.getSuppCode());
+ locDetl.setBoxType1(adjust.getBoxType1());
+ locDetl.setAnfme(adjust.getCount());
+ locDetl.setStandby1(adjust.getSuppCode());
+// locDetl.setZpallet(locDetl.getZpallet());
+
+
+ if (!locDetlService.update(locDetl, new EntityWrapper<LocDetl>().eq("loc_no", locDetl.getLocNo()))) {
+ throw new CoolException(locDetl.getLocNo() + "搴撲綅锛�" + locDetl.getMatnr() + "鍟嗗搧锛�" + locDetl.getSuppCode() + "渚涘簲鍟嗕慨鏀规暟閲忓け璐�");
}
+ // 淇敼搴撳瓨
+// if (!locDetlService.updateAnfme(adjust.getCount(), locDetl.getLocNo(), locDetl.getMatnr(), locDetl.getBatch(), locDetl.getBrand(),
+// locDetl.getStandby1(), locDetl.getStandby2(), locDetl.getStandby3(), locDetl.getBoxType1(), locDetl.getBoxType2(), locDetl.getBoxType3())) {
+// throw new CoolException(locDetl.getLocNo() + "搴撲綅锛�" + locDetl.getMatnr() + "鍟嗗搧锛�" + locDetl.getBatch() + "鎵瑰彿淇敼鏁伴噺澶辫触");
+// }
// 淇濆瓨璋冩暣璁板綍
AdjDetl adjDetl = new AdjDetl();
adjDetl.setLocNo(locDetl.getLocNo());
@@ -1122,8 +1156,10 @@
adjDetl.setModiUser(userId);
adjDetl.setAppeTime(now);
adjDetl.setAppeUser(userId);
- adjDetlService.save(adjDetl, userId);
-
+ if (!adjDetlService.insert(adjDetl)) {
+ throw new CoolException("璋冩暣璁板綍淇濆瓨澶辫触锛侊紒");
+ }
+// adjDetlService.save(adjDetl, userId);
if (updateFlag) {
wrkMast.setWrkNo(commonService.getWorkNo(3));
wrkMast.setIoType(23);
@@ -1138,6 +1174,7 @@
WrkDetlLog wrkDetl = new WrkDetlLog();
wrkDetl.sync(locDetl);
wrkDetl.setWrkNo(wrkMast.getWrkNo());
+ wrkDetl.setBoxType1(locDetl.getBoxType1());
wrkDetl.setIoTime(wrkMast.getIoTime());
wrkDetl.setAnfme(adjust.getCount());
wrkDetl.setAppeTime(now);
@@ -1159,7 +1196,7 @@
// todo 鐩樼偣璁板綍
if (!locDetlService.updateAnfme(-1.0D, locDetl.getLocNo(), locDetl.getMatnr(), locDetl.getBatch(), locDetl.getBrand(),
locDetl.getStandby1(), locDetl.getStandby2(), locDetl.getStandby3(), locDetl.getBoxType1(), locDetl.getBoxType2(), locDetl.getBoxType3())) {
- throw new CoolException("鍒犻櫎" + locDetl.getLocNo() + "搴撲綅锛�" + locDetl.getMatnr() + "鍟嗗搧锛�" + locDetl.getBatch() + "鎵瑰彿搴撳瓨鏄庣粏澶辫触");
+// throw new CoolException("鍒犻櫎" + locDetl.getLocNo() + "搴撲綅锛�" + locDetl.getMatnr() + "鍟嗗搧锛�" + locDetl.getBatch() + "鎵瑰彿搴撳瓨鏄庣粏澶辫触");
}
// 淇濆瓨璋冩暣璁板綍
AdjDetl adjDetl = new AdjDetl();
@@ -1212,6 +1249,9 @@
locDetl.setZpallet(locMast.getBarcode());
locDetl.setAnfme(adjust.getCount()); // 鏁伴噺
locDetl.setModiUser(userId); // 鎿嶄綔浜哄憳淇℃伅
+ locDetl.setSuppCode(adjust.getSuppCode());
+ locDetl.setStandby1(adjust.getSuppCode());
+ locDetl.setBoxType1(adjust.getBoxType1());
locDetl.setModiTime(now);
locDetl.setAppeUser(userId);
locDetl.setAppeTime(now);
@@ -1246,6 +1286,7 @@
wrkDetl.sync(locDetl);
wrkDetl.setWrkNo(wrkMast.getWrkNo());
wrkDetl.setIoTime(wrkMast.getIoTime());
+ wrkDetl.setBoxType1(locDetl.getBoxType1());
wrkDetl.setAnfme(adjust.getCount());
wrkDetl.setAppeTime(now);
wrkDetl.setModiTime(now);
@@ -1279,7 +1320,7 @@
@Transactional(rollbackFor = Exception.class)
public void cancelWrkMast(String workNo, Long userId) {
Date now = new Date();
- WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_no",workNo));
+ WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_no", workNo));
if (Cools.isEmpty(wrkMast)) {
throw new CoolException(workNo + "宸ヤ綔妗d笉瀛樺湪");
}
@@ -1385,8 +1426,7 @@
if (wrkMast.getIoType() == 107) {
List<WrkDetl> wrkDetls = wrkDetlService.selectByWrkNo(wrkMast.getWrkNo());
- if (!Cools.isEmpty(wrkDetls.get(0).getOrderNo())){
-
+ if (!Objects.isNull(wrkDetls) && !wrkDetls.isEmpty()) {
for (WrkDetl wrkDetl : wrkDetls) {
CheckOrderDetl checkOrderDetl = checkOrderDetlService.selectOne(new EntityWrapper<CheckOrderDetl>()
.eq("loc_no", wrkMast.getSourceLocNo())
@@ -1394,17 +1434,21 @@
.eq("batch", wrkDetl.getBatch())
.eq("order_no", wrkDetl.getOrderNo())
);
- checkOrderDetl.setStatus(1);
- checkOrderDetlService.updateById(checkOrderDetl);
+ if (!Objects.isNull(checkOrderDetl)) {
+ checkOrderDetl.setStatus(1);
+ checkOrderDetlService.updateById(checkOrderDetl);
+ }
}
CheckOrder checkOrder = checkOrderService.selectOne(new EntityWrapper<CheckOrder>().eq("order_no", wrkDetls.get(0).getOrderNo()));
List<CheckOrderDetl> checkOrderDetls = checkOrderDetlService.selectList(new EntityWrapper<CheckOrderDetl>().eq("order_id", checkOrder.getId()));
boolean is = checkOrderDetls.stream().allMatch(item -> item.getStatus().equals(1));
- checkOrder.setSettle(is?1L:12L);
+ checkOrder.setSettle(is ? 1L : 12L);
checkOrderService.updateById(checkOrder);
}
-
-
+// if (!Cools.isEmpty(wrkDetls.get(0).getOrderNo())) {
+//
+//
+// }
}
// // 璁㈠崟鍏宠仈
@@ -1485,22 +1529,22 @@
throw new CoolException("淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗eけ璐�");
}
// 鑾峰彇鐩爣绔�
- Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>()
- .eq("type_no", wrkMast.getIoType() - 50)
- .eq("stn_no", wrkMast.getStaNo()) // 浣滀笟绔欑偣 = 鎷f枡鍑哄簱鐨勭洰鏍囩珯
- .eq("crn_no", wrkMast.getCrnNo()); // 鍫嗗灈鏈哄彿
- StaDesc staDesc = staDescService.selectOne(wrapper);
- if (Cools.isEmpty(staDesc)) {
- throw new CoolException("鍏ュ簱璺緞涓嶅瓨鍦�");
- }
+// Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>()
+// .eq("type_no", wrkMast.getIoType() - 50)
+// .eq("stn_no", wrkMast.getStaNo()) // 浣滀笟绔欑偣 = 鎷f枡鍑哄簱鐨勭洰鏍囩珯
+// .eq("crn_no", wrkMast.getCrnNo()); // 鍫嗗灈鏈哄彿
+// StaDesc staDesc = staDescService.selectOne(wrapper);
+// if (Cools.isEmpty(staDesc)) {
+// throw new CoolException("鍏ュ簱璺緞涓嶅瓨鍦�");
+// }
Date now = new Date();
// 鍫嗗灈鏈虹珯鐐�(鐩爣绔�)
- Integer staNo = staDesc.getCrnStn();
+// Integer staNo = staDesc.getCrnStn();
// 鏇存柊宸ヤ綔妗f暟鎹姸鎬�
wrkMast.setIoType(wrkMast.getIoType() - 50); // 鍏ュ嚭搴撶被鍨�: 103->53,104->54,107->57
wrkMast.setWrkSts(2L); // 宸ヤ綔鐘舵��: 2.璁惧涓婅蛋
wrkMast.setSourceStaNo(wrkMast.getStaNo()); // 婧愮珯
- wrkMast.setStaNo(staNo + ""); // 鐩爣绔�
+// wrkMast.setStaNo(staNo + ""); // 鐩爣绔�
wrkMast.setLocNo(wrkMast.getSourceLocNo()); // 鐩爣搴撲綅 = 鍑哄簱鏃剁殑婧愬簱浣�
wrkMast.setSourceLocNo(""); // 婧愬簱浣嶆竻绌�
wrkMast.setModiTime(now);
@@ -1525,7 +1569,7 @@
// .淇敼骞舵墭鍏ュ簱鏄庣粏鎵樼爜
List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>()
- .eq("area_id", locMast.getAreaId())
+ .eq("area_id", locMast.getAreaId())
.eq("loc_no", locMast.getLocNo()));
if (!Objects.isNull(locDetls) && !locDetls.isEmpty()) {
locDetls.forEach(locDetl -> {
@@ -1544,8 +1588,8 @@
wrkDetl.setZpallet(wrkMast.getBarcode());
wrkDetl.setBarcode(wrkMast.getBarcode());
if (!wrkDetlService.update(wrkDetl, new EntityWrapper<WrkDetl>()
- .eq("matnr", wrkDetl.getMatnr())
- .eq("standby1", wrkDetl.getStandby1())
+ .eq("matnr", wrkDetl.getMatnr())
+ .eq("standby1", wrkDetl.getStandby1())
.eq("wrk_no", wrkMast.getWrkNo()))) {
throw new CoolException("浠诲姟妗f槑缁嗕慨鏀瑰け璐ワ紒锛�");
}
@@ -1665,7 +1709,8 @@
if (Cools.isEmpty(mat)) {
throw new CoolException("鐩爣搴撲綅鍟嗗搧缂栫爜鏈夎锛�");
}
- List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("matnr", param.getLocDetls().get(0).getMatnr()));
+ List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>()
+ .eq("matnr", param.getLocDetls().get(0).getMatnr()));
if (Cools.isEmpty(locDetls) || locDetls.size() < 1) {
throw new CoolException("寰呬慨鏀瑰晢鍝佹棤搴撳瓨锛屾棤闇�淇敼锛� 鍝佸彿锛�" + param.getLocDetls().get(0).getMatnr());
}
--
Gitblit v1.9.1