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 |  137 ++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 126 insertions(+), 11 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 669e524..caa1443 100644
--- a/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -25,6 +25,7 @@
 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;
@@ -69,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;
@@ -92,14 +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
@@ -552,6 +550,7 @@
 
             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);
@@ -578,6 +577,98 @@
             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 {
@@ -1165,7 +1256,7 @@
 
 
     @Override
-    @Transactional
+    @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));
@@ -1272,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) {
@@ -1324,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