From 88fc713144a877a4257b4173fbfadafd926c94de Mon Sep 17 00:00:00 2001
From: skyouc <creaycat@gmail.com>
Date: 星期五, 09 一月 2026 20:35:19 +0800
Subject: [PATCH] 出库再入库
---
src/main/java/com/zy/asrs/service/WorkService.java | 10 --
src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java | 231 +++++++++++++++++++++++++---------------------
2 files changed, 126 insertions(+), 115 deletions(-)
diff --git a/src/main/java/com/zy/asrs/service/WorkService.java b/src/main/java/com/zy/asrs/service/WorkService.java
index c2bf9ee..2c447f6 100644
--- a/src/main/java/com/zy/asrs/service/WorkService.java
+++ b/src/main/java/com/zy/asrs/service/WorkService.java
@@ -102,14 +102,4 @@
void turnMatLocDetl(EmptyPlateOutParam param, Long userId);
- /**
- * 鐢熸垚鍑哄簱鍖归厤鐨勫叆搴撲换鍔�
- * @author Ryan
- * @date 2026/1/9 17:38
- * @param staNo
- * @param taskDto
- * @param deviceNo
- * @param userId
- */
- void genInStock(BasDevp staNo, TaskDto taskDto, String deviceNo, Long userId);
}
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 72ff28f..76fa3af 100644
--- a/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -417,116 +417,144 @@
String wrkCode = null;
//TODO 濡傛灉鏈哄彴鍙蜂笉涓虹┖锛屽垽鏂綋鍓嶆満鍙颁笌褰撳墠鍑哄簱搴撲綅鏄惁鍦ㄥ悓涓�搴撳尯鎴栧悓涓�鍙板爢鍨涙満锛堢浉鍚岀珯鐐癸級
//TODO 1. 濡傛灉鏄悓涓�鍙板爢鍨涙満锛岀敓鎴愮Щ搴擄紙鍑哄簱锛変换鍔� 2. 濡傛灉涓嶆槸锛岀敓鎴愬嚭搴撲换鍔★紝鍐嶇敓鎴愬叆搴撲换鍔�
+ //TODO 鍙︿竴绉嶆柟妗堬紝涓嶇鏄惁褰撳墠宸烽亾锛岀粺涓�鍑哄簱锛屽啀鍏ュ簱
if (!Objects.isNull(deviceNo)) {
- BasDevice basDevice = basDeviceService.selectOne(new EntityWrapper<BasDevice>()
- .eq("status", 1)
- .eq("dev_no", deviceNo));
- if (Objects.isNull(basDevice)) {
- throw new CoolException("鏈哄彴淇℃伅涓嶅瓨鍦ㄦ垨宸茬鐢紒锛�");
- }
- List<LocAroundBind> binds = locAroundBindService.selectList(new EntityWrapper<LocAroundBind>().eq("dev_no", basDevice.getDevNo()));
- if (Objects.isNull(binds) || binds.isEmpty()) {
- throw new CoolException("鍙版満鏈粦瀹氬伐浣滅珯鍙帮紒锛�");
- }
- Set<String> locs = binds.stream().map(LocAroundBind::getBLocNo).collect(Collectors.toSet());
+ wrkCode = wrkCode + "-1";
+// BasDevice basDevice = basDeviceService.selectOne(new EntityWrapper<BasDevice>()
+// .eq("status", 1)
+// .eq("dev_no", deviceNo));
+// if (Objects.isNull(basDevice)) {
+// throw new CoolException("鏈哄彴淇℃伅涓嶅瓨鍦ㄦ垨宸茬鐢紒锛�");
+// }
+// List<LocAroundBind> binds = locAroundBindService.selectList(new EntityWrapper<LocAroundBind>().eq("dev_no", basDevice.getDevNo()));
+// if (Objects.isNull(binds) || binds.isEmpty()) {
+// throw new CoolException("鍙版満鏈粦瀹氬伐浣滅珯鍙帮紒锛�");
+// }
+// Set<String> locs = binds.stream().map(LocAroundBind::getBLocNo).collect(Collectors.toSet());
+//
+// LocMast mast = locMastService.selectOne(new EntityWrapper<LocMast>()
+// .in("loc_no", locs)
+// .eq("loc_sts", LocStsType.LOC_STS_TYPE_O.type)
+// .eq("dev_no", basDevice.getDevNo())
+// .orderAsc(Arrays.asList("loc_no"))
+// .last("OFFSET 0 ROWS FETCH NEXT 1 ROWS ONLY"));
+//
+// if (Objects.isNull(mast)) {
+// throw new CoolException("褰撳墠鏈哄彴锛屾棤鍙敤宸ヤ綔鍙帮紒锛�");
+// }
+// //鐩稿悓琛ㄧず鍦ㄥ悓涓�涓贩閬�
+// if (mast.getCrnNo().equals(locMast.getCrnNo())) {
+//
+// } else {
+// wrkCode = wrkCode + "-1";
+//
+// }
+ generateOutStock(taskDto, userId, workNo, wrkCode, now, ioType, locMast, staDesc, deviceNo);
- LocMast mast = locMastService.selectOne(new EntityWrapper<LocMast>()
- .in("loc_no", locs)
- .eq("loc_sts", LocStsType.LOC_STS_TYPE_O.type)
- .eq("dev_no", basDevice.getDevNo())
- .orderAsc(Arrays.asList("loc_no"))
- .last("OFFSET 0 ROWS FETCH NEXT 1 ROWS ONLY"));
-
- if (Objects.isNull(mast)) {
- throw new CoolException("褰撳墠鏈哄彴锛屾棤鍙敤宸ヤ綔鍙帮紒锛�");
- }
- //鐩稿悓琛ㄧず鍦ㄥ悓涓�涓贩閬�
- if (mast.getCrnNo().equals(locMast.getCrnNo())) {
-
- } else {
- wrkCode = wrkCode + "-1";
-
- }
} else {
- // 鐢熸垚宸ヤ綔妗�
- WrkMast wrkMast = new WrkMast();
- wrkMast.setWrkNo(workNo);
- //鐢ㄤ簬宸ヤ綔绔欙紝浠诲姟鍒嗚В
- wrkMast.setWrkCode(wrkCode);
- wrkMast.setIoTime(now);
- wrkMast.setWrkSts(11L); // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID
- wrkMast.setIoType(ioType); // 鍏ュ嚭搴撶姸鎬�
- wrkMast.setIoPri(13D); // 浼樺厛绾э細13
- wrkMast.setCrnNo(locMast.getCrnNo());
- wrkMast.setSourceStaNo(staDesc.getCrnStn() + ""); // 婧愮珯
- wrkMast.setStaNo(staDesc.getStnNo() + ""); // 鐩爣绔�
- wrkMast.setSourceLocNo(taskDto.getLocNo()); // 婧愬簱浣�
- wrkMast.setFullPlt("Y"); // 婊℃澘锛歒
- wrkMast.setPicking("N"); // 鎷f枡
- wrkMast.setExitMk("N"); // 閫�鍑�
- wrkMast.setEmptyMk("N"); // 绌烘澘
- wrkMast.setLinkMis("N");
- wrkMast.setBarcode(locMast.getBarcode());
- wrkMast.setAppeUser(userId); // 鎿嶄綔浜哄憳鏁版嵁
- wrkMast.setAppeTime(now);
- wrkMast.setModiUser(userId);
- wrkMast.setModiTime(now);
- if (!wrkMastService.insert(wrkMast)) {
- throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐ワ紝鍑哄簱搴撲綅鍙凤細" + taskDto.getLocNo());
+ generateOutStock(taskDto, userId, workNo, wrkCode, now, ioType, locMast, staDesc, null);
+ }
+ }
+
+ /**
+ * 鐢熸垚鍑哄簱浠诲姟
+ *
+ * @param taskDto
+ * @param userId
+ * @param workNo
+ * @param wrkCode
+ * @param now
+ * @param ioType
+ * @param locMast
+ * @param staDesc
+ * @author Ryan
+ * @date 2026/1/9 20:16
+ */
+ private void generateOutStock(TaskDto taskDto, Long userId, int workNo, String wrkCode, Date now, int ioType, LocMast locMast, StaDesc staDesc, String deviceNo) {
+ // 鐢熸垚宸ヤ綔妗�
+ WrkMast wrkMast = new WrkMast();
+ wrkMast.setWrkNo(workNo);
+ //鐢ㄤ簬宸ヤ綔绔欙紝浠诲姟鍒嗚В
+ wrkMast.setWrkCode(wrkCode);
+ wrkMast.setIoTime(now);
+ wrkMast.setWrkSts(11L); // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID
+ wrkMast.setIoType(ioType); // 鍏ュ嚭搴撶姸鎬�
+ wrkMast.setIoPri(13D); // 浼樺厛绾э細13
+ wrkMast.setCrnNo(locMast.getCrnNo());
+ wrkMast.setSourceStaNo(staDesc.getCrnStn() + ""); // 婧愮珯
+ wrkMast.setStaNo(staDesc.getStnNo() + ""); // 鐩爣绔�
+ wrkMast.setSourceLocNo(taskDto.getLocNo()); // 婧愬簱浣�
+ wrkMast.setFullPlt("Y"); // 婊℃澘锛歒
+ wrkMast.setPicking("N"); // 鎷f枡
+ wrkMast.setExitMk("N"); // 閫�鍑�
+ wrkMast.setEmptyMk("N"); // 绌烘澘
+ wrkMast.setLinkMis("N");
+ wrkMast.setBarcode(locMast.getBarcode());
+ wrkMast.setAppeUser(userId); // 鎿嶄綔浜哄憳鏁版嵁
+ wrkMast.setAppeTime(now);
+ wrkMast.setModiUser(userId);
+ wrkMast.setModiTime(now);
+ if (!wrkMastService.insert(wrkMast)) {
+ throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐ワ紝鍑哄簱搴撲綅鍙凤細" + taskDto.getLocNo());
+ }
+ // 鐢熸垚宸ヤ綔妗f槑缁�
+ for (LocDto locDto : taskDto.getLocDtos()) {
+ if (locDto.getAnfme() == null || locDto.getAnfme() <= 0.0D) {
+ continue;
}
- // 鐢熸垚宸ヤ綔妗f槑缁�
- for (LocDto locDto : taskDto.getLocDtos()) {
- if (locDto.getAnfme() == null || locDto.getAnfme() <= 0.0D) {
- continue;
- }
// OrderDetl orderDetl = orderDetlService.selectItem(locDto.getOrderNo(), locDto.getMatnr(), locDto.getBatch());
- OrderDetl orderDetl = OrderInAndOutUtil.selectItem(Boolean.FALSE, locDto.getOrderNo(), locDto.getMatnr(), locDto.getBatch(), locDto.getBrand()
- , locDto.getStandby1(), locDto.getStandby2(), locDto.getStandby3(), locDto.getBoxType1(), locDto.getBoxType2(), locDto.getBoxType3());
+ OrderDetl orderDetl = OrderInAndOutUtil.selectItem(Boolean.FALSE, locDto.getOrderNo(), locDto.getMatnr(), locDto.getBatch(), locDto.getBrand()
+ , locDto.getStandby1(), locDto.getStandby2(), locDto.getStandby3(), locDto.getBoxType1(), locDto.getBoxType2(), locDto.getBoxType3());
// if (orderDetl == null) {
//// orderDetl = orderDetlService.selectItem(locDto.getOrderNo(), locDto.getMatnr(), null);
// orderDetl = OrderInAndOutUtil.selectItem(Boolean.FALSE, locDto.getOrderNo(), locDto.getMatnr(), null);
//
// }
- WrkDetl wrkDetl = new WrkDetl();
- wrkDetl.sync(orderDetl);
- wrkDetl.setZpallet(wrkMast.getBarcode());
- wrkDetl.setIoTime(now);
- wrkDetl.setWrkNo(workNo);
- wrkDetl.setBatch(locDto.getBatch());
- wrkDetl.setOrderNo(locDto.getOrderNo());
- wrkDetl.setAnfme(locDto.getAnfme()); // 鏁伴噺
- wrkDetl.setAppeTime(now);
- wrkDetl.setAppeUser(userId);
- wrkDetl.setModiTime(now);
- wrkDetl.setModiUser(userId);
- if (!wrkDetlService.insert(wrkDetl)) {
- throw new CoolException("淇濆瓨宸ヤ綔妗f槑缁嗗け璐�");
- }
+ WrkDetl wrkDetl = new WrkDetl();
+ wrkDetl.sync(orderDetl);
+ wrkDetl.setZpallet(wrkMast.getBarcode());
+ wrkDetl.setIoTime(now);
+ wrkDetl.setWrkNo(workNo);
+ wrkDetl.setBatch(locDto.getBatch());
+ wrkDetl.setOrderNo(locDto.getOrderNo());
+ wrkDetl.setAnfme(locDto.getAnfme()); // 鏁伴噺
+ wrkDetl.setAppeTime(now);
+ wrkDetl.setAppeUser(userId);
+ wrkDetl.setModiTime(now);
+ wrkDetl.setModiUser(userId);
+ if (!wrkDetlService.insert(wrkDetl)) {
+ throw new CoolException("淇濆瓨宸ヤ綔妗f槑缁嗗け璐�");
+ }
+
// // 淇敼璁㈠崟鏄庣粏
// if (!orderDetlService.increaseWorkQty(orderDetl.getOrderId(), orderDetl.getMatnr(), orderDetl.getBatch(), locDto.getAnfme())) {
// throw new CoolException("淇敼璁㈠崟鏄庣粏鏁伴噺澶辫触");
// }
// orderService.updateSettle(orderDetl.getOrderId(), 2L, userId);
- OrderInAndOutUtil.increaseWorkQty(Boolean.FALSE, orderDetl.getOrderId(), orderDetl.getMatnr(), orderDetl.getBatch(),
- orderDetl.getBrand(), orderDetl.getStandby1(), orderDetl.getStandby2(), orderDetl.getStandby3(),
- orderDetl.getBoxType1(), orderDetl.getBoxType2(), orderDetl.getBoxType3()
- , locDto.getAnfme());
- OrderInAndOutUtil.updateOrder(Boolean.FALSE, orderDetl.getOrderId(), 2L, userId);
- }
- // 淇敼搴撲綅鐘舵��: F.鍦ㄥ簱 ====>>> R.鍑哄簱棰勭害/P.鎷f枡/鐩樼偣/骞舵澘鍑哄簱涓�
- locMast = locMastService.selectById(taskDto.getLocNo());
- if (locMast.getLocSts().equals("F")) {
- locMast.setLocSts(ioType == 101 ? "R" : "P");
- locMast.setModiUser(userId);
- locMast.setModiTime(now);
- if (!locMastService.updateById(locMast)) {
- throw new CoolException("棰勭害搴撲綅鐘舵�佸け璐ワ紝搴撲綅鍙凤細" + taskDto.getLocNo());
- }
- } else {
- throw new CoolException(taskDto.getLocNo() + "搴撲綅涓嶆槸鍦ㄥ簱鐘舵��");
- }
+ OrderInAndOutUtil.increaseWorkQty(Boolean.FALSE, orderDetl.getOrderId(), orderDetl.getMatnr(), orderDetl.getBatch(),
+ orderDetl.getBrand(), orderDetl.getStandby1(), orderDetl.getStandby2(), orderDetl.getStandby3(),
+ orderDetl.getBoxType1(), orderDetl.getBoxType2(), orderDetl.getBoxType3()
+ , locDto.getAnfme());
+ OrderInAndOutUtil.updateOrder(Boolean.FALSE, orderDetl.getOrderId(), 2L, userId);
}
+ //todo 鍒ゆ柇璁惧鍙凤紝鐢熸垚鍏ュ簱浠诲姟
+ if (!Objects.isNull(deviceNo)) {
+ genInStock(wrkMast, deviceNo, userId);
+ }
+
+ // 淇敼搴撲綅鐘舵��: F.鍦ㄥ簱 ====>>> R.鍑哄簱棰勭害/P.鎷f枡/鐩樼偣/骞舵澘鍑哄簱涓�
+ locMast = locMastService.selectById(taskDto.getLocNo());
+ if (locMast.getLocSts().equals("F")) {
+ locMast.setLocSts(ioType == 101 ? "R" : "P");
+ locMast.setModiUser(userId);
+ locMast.setModiTime(now);
+ if (!locMastService.updateById(locMast)) {
+ throw new CoolException("棰勭害搴撲綅鐘舵�佸け璐ワ紝搴撲綅鍙凤細" + taskDto.getLocNo());
+ }
+ } else {
+ throw new CoolException(taskDto.getLocNo() + "搴撲綅涓嶆槸鍦ㄥ簱鐘舵��");
+ }
}
@Override
@@ -1457,16 +1485,15 @@
/**
* 鐢熸垚鍑哄簱鍖归厤鐨勫伐浣滅珯鍏ュ簱浠诲姟
*
- * @param staNo
- * @param taskDto
+ * @param outMast
+ * @param deviceNo
* @param deviceNo
* @param userId
* @author Ryan
* @date 2026/1/9 17:39
*/
- @Override
@Transactional(rollbackFor = Exception.class)
- public void genInStock(BasDevp staNo, TaskDto taskDto, String deviceNo, Long userId) {
+ public void genInStock(WrkMast outMast, String deviceNo, Long userId) {
if (Objects.isNull(deviceNo)) {
throw new CoolException("鏈哄彴鍙蜂笉鑳戒负绌猴紒锛�");
}
@@ -1492,17 +1519,11 @@
if (Objects.isNull(locMasts)) {
throw new CoolException("褰撳墠鏈哄彴锛屾棤鍙敤宸ヤ綔鍙帮紒锛�");
}
-
-
-
-
-
- staNos = staDescService.queryOutStaNosByLocNo(locMasts.getLocNo(), issued >= locDetl.getAnfme() ? 101 : 103);
-
+ List<Integer> staNos = staDescService.queryOutStaNosByLocNo(locMasts.getLocNo(),1);
WrkMast wrkMast = new WrkMast();
StartupDto dto = commonService.getLocNo(1, sourceStaNo.getDevNo(), findLocNoAttributeVo, locTypeDto);
- int workNo = dto.getWorkNo();
+// int workNo = dto.getWorkNo();
// 鐢熸垚宸ヤ綔妗�
wrkMast.setWrkNo(workNo);
wrkMast.setIoTime(new Date());
--
Gitblit v1.9.1