From 7b72d43503aa5df4c152b777777085d3cd5e2132 Mon Sep 17 00:00:00 2001
From: skyouc <creaycat@gmail.com>
Date: 星期六, 06 十二月 2025 15:49:25 +0800
Subject: [PATCH] Merge branch 'jsxswms' of http://47.97.1.152:5880/r/zy-asrs into jsxswms
---
src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java | 247 ++++++++++++++++++++++++++++++++++++++++++++++---
1 files changed, 231 insertions(+), 16 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 ede2bb1..caa1443 100644
--- a/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -18,12 +18,14 @@
import com.zy.asrs.utils.OrderInAndOutUtil;
import com.zy.asrs.utils.Utils;
import com.zy.common.model.*;
+import com.zy.common.model.enumUtils.OrderEnumVo;
import com.zy.common.model.enums.IoWorkType;
import com.zy.common.model.enums.WorkNoType;
import com.zy.common.properties.SlaveProperties;
import com.zy.common.service.CommonService;
import com.zy.common.web.WcsController;
import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -68,12 +70,6 @@
@Autowired
private WrkDetlLogService wrkDetlLogService;
@Autowired
- private SnowflakeIdWorker snowflakeIdWorker;
- @Autowired
- private OrderService orderService;
- @Autowired
- private OrderDetlService orderDetlService;
- @Autowired
private WcsController wcsController;
@Autowired
private RowLastnoService rowLastnoService;
@@ -91,8 +87,17 @@
@Resource
private LocMastMapper locMastMapper;
- @Resource
- private OrderPakoutService orderPakOutService;
+ @Autowired
+ private CheckOrderService checkOrderService;
+
+ @Autowired
+ private CheckOrderDetlService checkOrderDetlService;
+ @Autowired
+ private LocCacheServiceImpl locCacheService;
+ @Autowired
+ private TaskService taskService;
+ @Autowired
+ private TaskDetlService taskDetlService;
@Override
@Transactional
@@ -390,7 +395,7 @@
}
@Override
- @Transactional
+ @Transactional(rollbackFor = Exception.class)
public void stockOut(BasDevp staNo, TaskDto taskDto, Long userId) {
Date now = new Date();
List<LocDto> locDtos = taskDto.getLocDtos();
@@ -403,8 +408,9 @@
LocMast locMast = locMastService.selectById(taskDto.getLocNo());
// 鍒ゆ柇鏄惁鏄洏鐐瑰崟
String orderNo = taskDto.getLocDtos().get(0).getOrderNo();
- OrderPakout orderPakout = orderPakOutService.selectByNo(orderNo);
- int ioType = orderPakout.getDocType() == 8 ? 107 : (taskDto.isAll() ? 101 : 103);
+// OrderPakout orderPakout = orderPakOutService.selectByNo(orderNo);
+ CheckOrder checkOrder = checkOrderService.selectOne(new EntityWrapper<CheckOrder>().eq("order_no", orderNo));
+ int ioType = checkOrder.getDocType() == 8 ? 107 : (taskDto.isAll() ? 101 : 103);
StaDesc staDesc = staDescService.queryCrnStnAuto(ioType, locMast.getCrnNo(), staNo.getDevNo());
// 鐢熸垚宸ヤ綔鍙�
int workNo = commonService.getWorkNo(WorkNoType.getWorkNoType(ioType));
@@ -478,6 +484,191 @@
locMast.setModiUser(userId);
locMast.setModiTime(now);
if (!locMastService.updateById(locMast)) {
+ throw new CoolException("棰勭害搴撲綅鐘舵�佸け璐ワ紝搴撲綅鍙凤細" + taskDto.getLocNo());
+ }
+ } else {
+ throw new CoolException(taskDto.getLocNo() + "搴撲綅涓嶆槸鍦ㄥ簱鐘舵��");
+ }
+ }
+
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public void checkStockOut(BasDevp staNo, TaskDto taskDto, Long userId) {
+ Date now = new Date();
+ List<LocDto> locDtos = taskDto.getLocDtos();
+ for (LocDto locDto : locDtos) {
+ if (!taskDto.getLocNo().equals(locDto.getLocNo()) && !taskDto.getStaNo().equals(locDto.getStaNo())) {
+ throw new CoolException("璁㈠崟鍑哄簱寮傚父锛岃鑱旂郴绠$悊鍛�");
+ }
+ }
+ // 鑾峰彇搴撲綅
+ LocMast locMast = locMastService.selectById(taskDto.getLocNo());
+ int ioType = 107;
+ StaDesc staDesc = staDescService.queryCrnStnAuto(ioType, locMast.getCrnNo(), staNo.getDevNo());
+ // 鐢熸垚宸ヤ綔鍙�
+ int workNo = commonService.getWorkNo(WorkNoType.getWorkNoType(ioType));
+ // 鐢熸垚宸ヤ綔妗�
+ WrkMast wrkMast = new WrkMast();
+ wrkMast.setWrkNo(workNo);
+ 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;
+ }
+
+ List<CheckOrderDetl> checkOrderDetls = checkOrderDetlService.selectList(new EntityWrapper<CheckOrderDetl>()
+ .eq("loc_no", locDto.getLocNo())
+ .eq("matnr", locDto.getMatnr())
+ .eq("batch", locDto.getBatch())
+ .eq("order_no", locDto.getOrderNo())
+ );
+
+ if (checkOrderDetls.size() > 1) {
+ throw new CoolException("鏁版嵁澶т簬1,璇锋鏌ユ暟鎹�");
+ }
+
+ WrkDetl wrkDetl = new WrkDetl();
+ wrkDetl.sync(checkOrderDetls.get(0));
+ wrkDetl.setOrderId(checkOrderDetls.get(0).getId());
+ 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槑缁嗗け璐�");
+ }
+ // 淇敼璁㈠崟鏄庣粏
+ checkOrderDetls.get(0).setStatus(2);
+ if (!checkOrderDetlService.updateById(checkOrderDetls.get(0))){
+ throw new CoolException("淇濆瓨璁㈠崟鏄庣粏澶辫触");
+ }
+ }
+ // 淇敼搴撲綅鐘舵��: 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
+ @Transactional(rollbackFor = Exception.class)
+ public void agvStockOut(BasStation staNo, TaskDto taskDto, Long userId) {
+ Date now = new Date();
+ List<LocDto> locDtos = taskDto.getLocDtos();
+ for (LocDto locDto : locDtos) {
+ if (!taskDto.getLocNo().equals(locDto.getLocNo()) && !taskDto.getStaNo().equals(locDto.getStaNo())) {
+ throw new CoolException("璁㈠崟鍑哄簱寮傚父锛岃鑱旂郴绠$悊鍛�");
+ }
+ }
+ // 鑾峰彇搴撲綅
+ LocCache locCache = locCacheService.selectOne(new EntityWrapper<LocCache>().eq("loc_no", taskDto.getLocNo()));
+ int ioType = (taskDto.isAll() ? 101 : 103);
+ // 鐢熸垚宸ヤ綔鍙�
+ int workNo = commonService.getWorkNo(WorkNoType.getWorkNoType(ioType));
+
+ Task task = new Task();
+ task.setWrkNo(workNo)
+ .setIoTime(new Date())
+ .setWrkSts(11L) // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID
+ .setIoType(ioType) // 鍏ュ嚭搴撶姸鎬�
+ .setTaskType("agv")
+ .setIoPri(10D)
+ .setFullPlt("Y") // 婊℃澘锛歒
+ .setPicking("N") // 鎷f枡
+ .setExitMk("N")// 閫�鍑�
+ .setStaNo(staNo.getDevNo())
+ .setSourceLocNo(locCache.getLocNo())
+ .setEmptyMk("N")// 绌烘澘
+ .setBarcode(locCache.getBarcode())// 鎵樼洏鐮�
+ .setLinkMis("N")
+ .setAppeUser(userId)
+ .setAppeTime(new Date())
+ .setModiUser(userId)
+ .setModiTime(new Date());
+ if (!taskService.insert(task)) {
+ throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
+ }
+ // 鐢熸垚宸ヤ綔妗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());
+// if (orderDetl == null) {
+//// orderDetl = orderDetlService.selectItem(locDto.getOrderNo(), locDto.getMatnr(), null);
+// orderDetl = OrderInAndOutUtil.selectItem(Boolean.FALSE, locDto.getOrderNo(), locDto.getMatnr(), null);
+//
+// }
+
+ TaskDetl wrkDetl = new TaskDetl();
+ BeanUtils.copyProperties(orderDetl, wrkDetl);
+ wrkDetl.setWrkNo(workNo)
+ .setId(null)
+ .setIoTime(new Date())
+ .setOrderNo(locDto.getOrderNo())
+ .setAnfme(locDto.getAnfme())
+ .setZpallet(locCache.getBarcode())
+ .setBatch(locDto.getBatch())
+ .setAppeUser(userId)
+ .setAppeTime(new Date())
+ .setModiUser(userId);
+ if (!taskDetlService.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枡/鐩樼偣/骞舵澘鍑哄簱涓�
+
+ if (locCache.getLocSts().equals("F")) {
+ locCache.setLocSts(ioType == 101 ? "R" : "P");
+ locCache.setModiUser(userId);
+ locCache.setModiTime(now);
+ if (!locCacheService.updateById(locCache)) {
throw new CoolException("棰勭害搴撲綅鐘舵�佸け璐ワ紝搴撲綅鍙凤細" + taskDto.getLocNo());
}
} else {
@@ -813,11 +1004,11 @@
@Override
@Transactional
public void completeWrkMast(String workNo, Long userId) {
- WrkMast wrkMast = wrkMastService.selectById(workNo);
+ WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_no", workNo));
if (Cools.isEmpty(wrkMast)) {
throw new CoolException(workNo + "宸ヤ綔妗d笉瀛樺湪");
}
- if (wrkMast.getWrkSts() == 4 || wrkMast.getWrkSts() == 14) {
+ if (wrkMast.getWrkSts() == 4 || wrkMast.getWrkSts() == 14 || wrkMast.getWrkSts() == 5 || wrkMast.getWrkSts() == 15) {
throw new CoolException("褰撳墠宸ヤ綔妗e凡瀹屾垚");
}
// 鍏ュ簱 + 搴撲綅杞Щ
@@ -1065,10 +1256,10 @@
@Override
- @Transactional
+ @Transactional(rollbackFor = Exception.class)
public void cancelWrkMast(String workNo, Long userId) {
Date now = new Date();
- WrkMast wrkMast = wrkMastService.selectById(workNo);
+ WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_no",workNo));
if (Cools.isEmpty(wrkMast)) {
throw new CoolException(workNo + "宸ヤ綔妗d笉瀛樺湪");
}
@@ -1172,6 +1363,30 @@
}
+ if (wrkMast.getIoType() == 107) {
+ List<WrkDetl> wrkDetls = wrkDetlService.selectByWrkNo(wrkMast.getWrkNo());
+ if (!Cools.isEmpty(wrkDetls.get(0).getOrderNo())){
+
+ for (WrkDetl wrkDetl : wrkDetls) {
+ CheckOrderDetl checkOrderDetl = checkOrderDetlService.selectOne(new EntityWrapper<CheckOrderDetl>()
+ .eq("loc_no", wrkMast.getSourceLocNo())
+ .eq("matnr", wrkDetl.getMatnr())
+ .eq("batch", wrkDetl.getBatch())
+ .eq("order_no", wrkDetl.getOrderNo())
+ );
+ 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);
+ checkOrderService.updateById(checkOrder);
+ }
+
+
+ }
+
// // 璁㈠崟鍏宠仈
// List<WrkDetl> wrkDetls = wrkDetlService.selectByWrkNo(wrkMast.getWrkNo());
// for (WrkDetl wrkDetl : wrkDetls) {
@@ -1224,7 +1439,7 @@
@Override
@Transactional
public void pickWrkMast(String workNo, Long userId) {
- WrkMast wrkMast = wrkMastService.selectById(workNo);
+ WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_no", workNo));
if (Cools.isEmpty(wrkMast)) {
throw new CoolException(workNo + "宸ヤ綔妗d笉瀛樺湪");
}
--
Gitblit v1.9.1