From 10aef23d06cf1d12bc48273e7844328ddf0efcc8 Mon Sep 17 00:00:00 2001
From: skyouc <creaycat@gmail.com>
Date: 星期二, 13 一月 2026 12:30:31 +0800
Subject: [PATCH] no message
---
src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java | 159 ++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 157 insertions(+), 2 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 86a7212..9dfce08 100644
--- a/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -12,6 +12,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.LocStsType;
import com.zy.asrs.mapper.LocMastMapper;
import com.zy.asrs.entity.result.FindLocNoAttributeVo;
import com.zy.asrs.service.*;
@@ -24,6 +25,8 @@
import com.zy.common.service.CommonService;
import com.zy.common.web.WcsController;
import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.codec.binary.StringUtils;
+import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -91,8 +94,13 @@
@Resource
private LocMastMapper locMastMapper;
+ @Autowired
+ private LocAroundBindService locAroundBindService;
+
@Resource
private OrderPakoutService orderPakOutService;
+ @Autowired
+ private BasDeviceServiceImpl basDeviceService;
@Override
@Transactional
@@ -391,7 +399,7 @@
@Override
@Transactional
- public void stockOut(BasDevp staNo, TaskDto taskDto, Long userId) {
+ public void stockOut(BasDevp staNo, TaskDto taskDto, String deviceNo, Long userId) {
Date now = new Date();
List<LocDto> locDtos = taskDto.getLocDtos();
for (LocDto locDto : locDtos) {
@@ -408,9 +416,38 @@
StaDesc staDesc = staDescService.queryCrnStnAuto(ioType, locMast.getCrnNo(), staNo.getDevNo());
// 鐢熸垚宸ヤ綔鍙�
int workNo = commonService.getWorkNo(WorkNoType.getWorkNoType(ioType));
+ String wrkCode = null;
+ //TODO 濡傛灉鏈哄彴鍙蜂笉涓虹┖锛屽垽鏂綋鍓嶆満鍙颁笌褰撳墠鍑哄簱搴撲綅鏄惁鍦ㄥ悓涓�搴撳尯鎴栧悓涓�鍙板爢鍨涙満锛堢浉鍚岀珯鐐癸級
+ //TODO 1. 濡傛灉鏄悓涓�鍙板爢鍨涙満锛岀敓鎴愮Щ搴擄紙鍑哄簱锛変换鍔� 2. 濡傛灉涓嶆槸锛岀敓鎴愬嚭搴撲换鍔★紝鍐嶇敓鎴愬叆搴撲换鍔�
+ //TODO 鍙︿竴绉嶆柟妗堬紝涓嶇鏄惁褰撳墠宸烽亾锛岀粺涓�鍑哄簱锛屽啀鍏ュ簱
+ if (!Objects.isNull(deviceNo)) {
+ wrkCode = workNo + "-1";
+ generateOutStock(taskDto, userId, workNo, wrkCode, now, ioType, locMast, staDesc, deviceNo);
+ } else {
+ 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); // 鍏ュ嚭搴撶姸鎬�
@@ -460,6 +497,7 @@
if (!wrkDetlService.insert(wrkDetl)) {
throw new CoolException("淇濆瓨宸ヤ綔妗f槑缁嗗け璐�");
}
+
// // 淇敼璁㈠崟鏄庣粏
// if (!orderDetlService.increaseWorkQty(orderDetl.getOrderId(), orderDetl.getMatnr(), orderDetl.getBatch(), locDto.getAnfme())) {
// throw new CoolException("淇敼璁㈠崟鏄庣粏鏁伴噺澶辫触");
@@ -471,6 +509,11 @@
, 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")) {
@@ -1261,7 +1304,10 @@
wrkMast.setWrkSts(2L); // 宸ヤ綔鐘舵��: 2.璁惧涓婅蛋
wrkMast.setSourceStaNo(wrkMast.getStaNo()); // 婧愮珯
wrkMast.setStaNo(staNo + ""); // 鐩爣绔�
- wrkMast.setLocNo(wrkMast.getSourceLocNo()); // 鐩爣搴撲綅 = 鍑哄簱鏃剁殑婧愬簱浣�
+ //鍒ゆ柇鏄惁涓洪鏂欏嚭搴�
+ if (Objects.isNull(wrkMast.getWrkCode())) {
+ wrkMast.setLocNo(wrkMast.getSourceLocNo()); // 鐩爣搴撲綅 = 鍑哄簱鏃剁殑婧愬簱浣�
+ }
wrkMast.setSourceLocNo(""); // 婧愬簱浣嶆竻绌�
wrkMast.setModiTime(now);
wrkMast.setModiUser(userId);
@@ -1410,4 +1456,113 @@
}
}
+ /**
+ * 鐢熸垚鍑哄簱鍖归厤鐨勫伐浣滅珯鍏ュ簱浠诲姟
+ *
+ * @param outMast
+ * @param deviceNo
+ * @param deviceNo
+ * @param userId
+ * @author Ryan
+ * @date 2026/1/9 17:39
+ */
+ @Transactional(rollbackFor = Exception.class)
+ public void genInStock(WrkMast outMast, String deviceNo, Long userId) {
+ if (Objects.isNull(deviceNo)) {
+ throw new CoolException("鏈哄彴鍙蜂笉鑳戒负绌猴紒锛�");
+ }
+ 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 locMasts = locMastService.selectOne(new EntityWrapper<LocMast>()
+ .in("loc_no", locs)
+ .eq("loc_sts", LocStsType.LOC_STS_TYPE_O.type)
+ .orderAsc(Arrays.asList("loc_no"))
+ .last("OFFSET 0 ROWS FETCH NEXT 1 ROWS ONLY"));
+
+ if (Objects.isNull(locMasts)) {
+ throw new CoolException("褰撳墠鏈哄彴锛屾棤鍙敤宸ヤ綔鍙帮紒锛�");
+ }
+ int workNo = commonService.getWorkNo(WorkNoType.getWorkNoType(1));
+ List<Integer> staNos = staDescService.queryOutStaNosByLocNo(locMasts.getLocNo(),1);
+ //TODO 1. 鑾峰彇鍏ュ簱绔欑偣锛� 鐩爣搴撲綅 3. 灏嗗嚭搴撴槑缁嗘坊鍔犺嚦鍏ュ簱鏄庣粏
+ Integer staNo = staNos.stream().findFirst().get();
+
+ if (Objects.isNull(outMast.getWrkCode())) {
+ throw new CoolException("鏁版嵁閿欒锛屼笂绾т换鍔$紪鐮佷负绌猴紒锛�");
+ }
+ String wrkCode;
+ int indexOf = outMast.getWrkCode().indexOf("-");
+ if (indexOf != -1) {
+ String substring = outMast.getWrkCode().substring(0, indexOf);
+ wrkCode = substring + "-2";
+ } else {
+ throw new CoolException("鏁版嵁閿欒锛屼笂绾т换鍔$紪鐮侀敊璇紒锛�");
+ }
+ WrkMast wrkMast = new WrkMast();
+ // 鐢熸垚宸ヤ綔妗�
+ wrkMast.setWrkNo(workNo);
+ wrkMast.setWrkCode(wrkCode);
+ wrkMast.setIoTime(new Date());
+ wrkMast.setWrkSts(2L); // 宸ヤ綔鐘舵�侊細鐢熸垚鍏ュ簱ID
+ wrkMast.setIoType(1); // 鍏ュ嚭搴撶姸鎬侊細1.鍏ュ簱
+ wrkMast.setCrnNo(locMasts.getCrnNo());
+ wrkMast.setSourceStaNo(outMast.getStaNo());
+// wrkMast.setStaNo(staNo + "");
+ wrkMast.setLocNo(locMasts.getLocNo());
+ wrkMast.setIoPri(13D); // 浼樺厛绾�
+ wrkMast.setBarcode(outMast.getBarcode()); // 鎵樼洏鐮�
+ wrkMast.setFullPlt("Y"); // 婊℃澘锛歒
+ wrkMast.setPicking("N"); // 鎷f枡
+ wrkMast.setExitMk("N"); // 閫�鍑�
+ wrkMast.setEmptyMk("N"); // 绌烘澘
+ wrkMast.setLinkMis("Y");
+ wrkMast.setModiUser(userId);
+ wrkMast.setAppeUser(userId);
+ wrkMast.setCtnType(locMasts.getCtnType()); // 瀹瑰櫒绫诲瀷
+ // 鎿嶄綔浜哄憳鏁版嵁
+ wrkMast.setAppeTime(new Date());
+ wrkMast.setModiTime(new Date());
+ boolean res = wrkMastService.insert(wrkMast);
+ if (!res) {
+ throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
+ }
+ // 鏇存柊婧愮珯鐐逛俊鎭�
+// sourceStaNo.setModiTime(now);
+// if (!basDevpService.updateById(sourceStaNo)) {
+// throw new CoolException("鏇存柊婧愮珯澶辫触");
+// }
+ // 鏇存柊鐩爣搴撲綅鐘舵��
+// LocMast locMast = locMastService.selectById(dto.getLocNo());
+ if (locMasts.getLocSts().equals("O")) {
+ locMasts.setLocSts("S"); // S.鍏ュ簱棰勭害
+ locMasts.setModiTime(new Date());
+ if (!locMastService.updateById(locMasts)) {
+ throw new CoolException("鏀瑰彉搴撲綅鐘舵�佸け璐�");
+ }
+ } else {
+ throw new CoolException(locMasts.getLocNo() + "鐩爣搴撲綅宸茶鍗犵敤");
+ }
+ List<WrkDetl> wrkDetls = wrkDetlService.selectList(new EntityWrapper<WrkDetl>().eq("wrk_no", outMast.getWrkNo()));
+ if (Objects.isNull(wrkDetls) || wrkDetls.isEmpty()) {
+ throw new CoolException("浠诲姟鏄庣粏涓虹┖锛侊紒");
+ }
+ wrkDetls.forEach(wrkDetl -> {
+ WrkDetl detl = new WrkDetl();
+ BeanUtils.copyProperties(wrkDetl, detl);
+ detl.setWrkNo(wrkMast.getWrkNo());
+ if (!wrkDetlService.insert(detl)) {
+ throw new CoolException("浠诲姟鏄庣粏淇濆瓨澶辫触锛侊紒");
+ }
+ });
+ }
}
--
Gitblit v1.9.1