From d3cb0e841e6585aa84a45f18bb30965db8d1a6aa Mon Sep 17 00:00:00 2001
From: whycq <913841844@qq.com>
Date: 星期三, 08 一月 2025 15:48:40 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java |  183 +++++++++++++++++++++++++++++++++++++++------
 1 files changed, 158 insertions(+), 25 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 d02fdd3..b78245d 100644
--- a/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -8,10 +8,7 @@
 import com.core.common.SnowflakeIdWorker;
 import com.core.exception.CoolException;
 import com.zy.asrs.entity.*;
-import com.zy.asrs.entity.param.EmptyPlateOutParam;
-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.entity.param.*;
 import com.zy.asrs.service.*;
 import com.zy.asrs.utils.Utils;
 import com.zy.common.model.*;
@@ -204,16 +201,14 @@
                 ioType = dto.isAll() ? 101 : 103;
             } else if (ioWorkType.equals(IoWorkType.CHECK_OUT)) {
                 ioType = 107;
+            } else if (ioWorkType.equals(IoWorkType.MERGE_OUT)) {
+                ioType = 104;
             }
             assert ioType != null;
             // 鑾峰彇搴撲綅
             LocMast locMast = locMastService.selectById(dto.getLocNo());
 
             Integer outSta = staNo.getDevNo();
-            //2鍙峰爢鍨涙満鍏ㄦ澘鍑哄簱绔欐寚瀹氫负204绔欙紝鎷f枡绔欐寚瀹氫负202
-            if(locMast.getCrnNo()==2){
-                outSta = ioType == 101 ? 204 : 202;
-            }
 
             // 鑾峰彇璺緞
             StaDesc staDesc = staDescService.queryCrnStn(ioType, locMast.getCrnNo(), outSta);
@@ -290,6 +285,7 @@
         LocMast locMast = locMastService.selectById(taskDto.getLocNo());
         // 鑾峰彇璺緞
         int ioType = taskDto.isAll() ? 101 : 103;
+
         StaDesc staDesc = staDescService.queryCrnStnAuto(ioType, locMast.getCrnNo(), staNo.getDevNo());
         // 鐢熸垚宸ヤ綔鍙�
         int workNo = commonService.getWorkNo(WorkNoType.getWorkNoType(ioType));
@@ -321,9 +317,9 @@
         for (LocDto locDto : taskDto.getLocDtos()) {
             if (locDto.getAnfme()==null || locDto.getAnfme() <= 0.0D) { continue; }
             OrderDetl orderDetl = orderDetlService.selectItem(locDto.getOrderNo(), locDto.getMatnr(), locDto.getBatch());
-            if (orderDetl == null) {
-                orderDetl = orderDetlService.selectItem(locDto.getOrderNo(), locDto.getMatnr(), null);
-            }
+//            if (orderDetl == null) {
+//                orderDetl = orderDetlService.selectItem(locDto.getOrderNo(), locDto.getMatnr(), null);
+//            }
             WrkDetl wrkDetl = new WrkDetl();
             wrkDetl.sync(orderDetl);
             wrkDetl.setZpallet(wrkMast.getBarcode());
@@ -438,6 +434,10 @@
                     .eq("crn_no", locMast.getCrnNo());
             StaDesc staDesc = staDescService.selectOne(wrapper);
             Integer sourceStaNo = staDesc.getCrnStn();
+            WrkMast mast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("source_loc_no", locMast.getLocNo()));
+            if (!Cools.isEmpty(mast)) {
+                throw new CoolException(locNo+"宸叉湁鍑哄簱浠诲姟锛�");
+            }
             if (Cools.isEmpty(sourceStaNo)) {
                 throw new CoolException("妫�绱㈡簮绔欏け璐�");
             }
@@ -448,7 +448,7 @@
             wrkMast.setIoTime(now);
             wrkMast.setWrkSts(11L); // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID
             wrkMast.setIoType(110); // 鍏ュ嚭搴撶姸鎬侊細 110.绌烘澘鍑哄簱
-            wrkMast.setIoPri(10D);
+            wrkMast.setIoPri(13D);
             wrkMast.setSourceStaNo(sourceStaNo); // 婧愮珯
             wrkMast.setStaNo(param.getOutSite()); // 鐩爣绔�
             wrkMast.setCrnNo(locMast.getCrnNo());
@@ -565,6 +565,27 @@
 
     @Override
     @Transactional
+    public void locMergeOut(StockOutParam param, Long userId) {
+        // 鐩爣绔欑偣鐘舵�佹娴�
+        BasDevp staNo = basDevpService.checkSiteStatus(param.getOutSite());
+        // 鑾峰彇搴撲綅鏄庣粏
+        List<LocDetlDto> locDetlDtos = new ArrayList<>();
+        for (StockOutParam.LocDetl paramLocDetl : param.getLocDetls()) {
+            if (!Cools.isEmpty(paramLocDetl.getLocNo(), paramLocDetl.getMatnr(), paramLocDetl.getCount())) {
+                LocDetl one = locDetlService.selectItem(paramLocDetl.getLocNo(), paramLocDetl.getMatnr(), paramLocDetl.getBatch());
+                if (null != one) locDetlDtos.add(new LocDetlDto(one, paramLocDetl.getCount()));
+            }
+        }
+        if (!locDetlDtos.isEmpty()) {
+            // 鍚姩鍑哄簱寮�濮� 107.鐩樼偣鍑哄簱
+            stockOut(staNo, locDetlDtos, IoWorkType.MERGE_OUT, userId);
+        } else {
+            throw new CoolException("搴撲綅鐗╂枡涓嶅瓨鍦�");
+        }
+    }
+
+    @Override
+    @Transactional
     public void locMove(String sourceLocNo, String locNo, Long userId) {
         LocMast sourceLoc = locMastService.selectById(sourceLocNo);
         List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("loc_no", sourceLocNo));
@@ -646,6 +667,87 @@
 
     @Override
     @Transactional
+    public void locCombOut(ReplenishmentParam param, Long userId) {
+        // 鍙傛暟闈炵┖鍒ゆ柇
+        if (Cools.isEmpty(param.getDevpNo(), param.getList())) {
+            throw new CoolException(BaseRes.PARAM);
+        }
+        //鍒ゆ柇搴撲綅鍙枫�佸簱浣嶇姸鎬�
+        LocMast locMast;
+        if (Cools.isEmpty(param.getLocNo())){
+            throw new CoolException("骞舵澘鍑哄簱搴撲綅鍙傛暟閿欒");
+        }else {
+            locMast = locMastService.selectById(param.getLocNo());
+            if(!Cools.isEmpty(locMast)){
+                if (!locMast.getLocSts().equals("F")){
+                    throw new CoolException("骞舵澘搴撲綅闈炲湪搴撶姸鎬�");
+                }
+            }else{
+                throw new CoolException("搴撳瓨涓簱浣嶅彿涓嶅瓨鍦�");
+            }
+        }
+        // 婧愮珯鐐圭姸鎬佹娴�
+//        BasDevp sourceStaNo = basDevpService.checkSiteStatus(param.getDevpNo(), true);
+        // 鐢熸垚宸ヤ綔鍙�
+        int workNo = commonService.getWorkNo(DEFAULT_WORK_NO_TYPE);
+        // 鑾峰彇璺緞
+        Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>()
+                .eq("type_no", 104)
+                .eq("stn_no", param.getDevpNo())
+                .eq("crn_no", locMast.getCrnNo());
+        StaDesc staDesc = staDescService.selectOne(wrapper);
+        if (Cools.isEmpty(staDesc)) {
+            throw new CoolException("鍑哄簱璺緞涓嶅瓨鍦�");
+        }
+        // 鐢熸垚宸ヤ綔妗�
+        WrkMast wrkMast = new WrkMast();
+        wrkMast.setWrkNo(workNo);
+        wrkMast.setIoTime(new Date());
+        wrkMast.setWrkSts(11L); // 宸ヤ綔鐘舵�侊細鐢熸垚鍏ュ簱ID
+        wrkMast.setIoType(104); // 鍏ュ嚭搴撶姸鎬侊細1.鍏ュ簱
+        wrkMast.setIoPri(13D); // 浼樺厛绾э細10
+        wrkMast.setCrnNo(locMast.getCrnNo());
+        wrkMast.setSourceStaNo(staDesc.getCrnStn());
+        wrkMast.setStaNo(param.getDevpNo());
+        wrkMast.setSourceLocNo(param.getLocNo());
+        wrkMast.setBarcode(locMast.getBarcode()); // 鎵樼洏鐮�
+        wrkMast.setFullPlt("Y"); // 婊℃澘锛歒
+        wrkMast.setPicking("N"); // 鎷f枡
+        wrkMast.setExitMk("N"); // 閫�鍑�
+        wrkMast.setEmptyMk("N"); // 绌烘澘
+        wrkMast.setLinkMis("N");
+        wrkMast.setCtnType(locMast.getCtnType()); // 瀹瑰櫒绫诲瀷
+        // 鎿嶄綔浜哄憳鏁版嵁
+        wrkMast.setAppeUser(userId);
+        wrkMast.setAppeTime(new Date());
+        wrkMast.setModiUser(userId);
+        wrkMast.setModiTime(new Date());
+        boolean res = wrkMastService.insert(wrkMast);
+        if (!res) {
+            throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
+        }
+        // 鐢熸垚宸ヤ綔妗f槑缁�
+        List<MatCodeCountDto> matDtos = new ArrayList<>();
+        param.getList().forEach(elem -> {
+            matDtos.add(new MatCodeCountDto(elem.getMatnr(), elem.getBatch(), elem.getCount()));
+        });
+        wrkDetlService.createWorkDetail2(workNo, matDtos, locMast.getBarcode(), userId);
+        // 鏇存柊搴撲綅鐘舵��
+//        LocMast locMast = locMastService.selectById(dto.getLocNo());
+        if (locMast.getLocSts().equals("F")){
+            locMast.setLocSts("P"); // P.骞舵澘鍑哄簱棰勭害
+            locMast.setModiUser(userId);
+            locMast.setModiTime(new Date());
+            if (!locMastService.updateById(locMast)){
+                throw new CoolException("鏀瑰彉搴撲綅鐘舵�佸け璐�");
+            }
+        } else {
+            throw new CoolException(locMast.getLocNo()+"鐩爣搴撲綅宸茶鍗犵敤");
+        }
+    }
+
+    @Override
+    @Transactional
     public void completeWrkMast(String workNo, Long userId) {
         WrkMast wrkMast = wrkMastService.selectById(workNo);
         if (Cools.isEmpty(wrkMast)){
@@ -687,6 +789,13 @@
 
         Date now = new Date();
         List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("loc_no", param.getLocNo()));
+
+        String zpallet = "";
+        for (LocDetl locDetl : locDetls) {
+            if (!Cools.isEmpty(locDetl.getZpallet())) {
+                zpallet = locDetl.getZpallet();
+            }
+        }
 
         List<LocDetlAdjustParam.LocDetlAdjust> list = param.getList();
 
@@ -751,6 +860,7 @@
             Mat mat = matService.selectByMatnr(adjust.getMatnr());
             LocDetl locDetl = new LocDetl();
             locDetl.sync(mat);
+            locDetl.setZpallet(zpallet);
             locDetl.setBatch(adjust.getBatch());
             locDetl.setLocNo(locMast.getLocNo());
             locDetl.setAnfme(adjust.getCount()); // 鏁伴噺
@@ -893,19 +1003,42 @@
                 }
             }
 
+        }else {
+            // 璁㈠崟鍏宠仈
+            List<WrkDetl> wrkDetls = wrkDetlService.selectByWrkNo(wrkMast.getWrkNo());
+            for (WrkDetl wrkDetl : wrkDetls) {
+                if (!Cools.isEmpty(wrkDetl.getOrderNo())) {
+                    if (!orderDetlService.decrease(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getAnfme())) {
+                        throw new CoolException("璁㈠崟鏁版嵁鍥炴粴澶辫触");
+                    }
+                    // 鐢熸垚鏂扮殑鍑哄簱浣滀笟
+//                        stockOutRe(wrkMast, wrkDetls);
+                    //淇敼璁㈠崟涓昏〃鐘舵��,娌℃湁浣滀笟鏁伴噺鏃舵墠鍙互淇敼
+                    boolean flag = true;
+                    List<OrderDetl> orderDetls = orderDetlService.selectList(new EntityWrapper<OrderDetl>().eq("order_no",wrkDetl.getOrderNo()));
+                    for(OrderDetl orderDetl : orderDetls){
+                        if(orderDetl.getWorkQty() > 0){
+                            flag = false;
+                        }
+                    }
+                    if(flag){
+                        Order order = orderService.selectOne(new EntityWrapper<Order>().eq("order_no",wrkDetl.getOrderNo()));
+                        if(!Cools.isEmpty(order) && order.getSettle()==2){
+                            order.setSettle(1L);
+                            order.setUpdateBy(userId);
+                            order.setUpdateTime(now);
+                        }
+                        if(!orderService.update(order,new EntityWrapper<Order>().eq("order_no",wrkDetl.getOrderNo()))){
+                            throw new CoolException("淇敼璁㈠崟鐘舵�佸け璐�");
+                        }
+                    }
+                }
+
+            }
+
         }
 
-//        // 璁㈠崟鍏宠仈
-//        List<WrkDetl> wrkDetls = wrkDetlService.selectByWrkNo(wrkMast.getWrkNo());
-//        for (WrkDetl wrkDetl : wrkDetls) {
-//            if (!Cools.isEmpty(wrkDetl.getOrderNo())) {
-//                if (!orderDetlService.decrease(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getAnfme())) {
-//                    throw new CoolException("璁㈠崟鏁版嵁鍥炴粴澶辫触");
-//                }
-//                // 鐢熸垚鏂扮殑鍑哄簱浣滀笟
-////                        stockOutRe(wrkMast, wrkDetls);
-//            }
-//        }
+
 
         // 鍙栨秷鎿嶄綔浜哄憳璁板綍
         wrkMast.setManuType("鎵嬪姩鍙栨秷");
@@ -969,7 +1102,7 @@
         }
         // 鑾峰彇鐩爣绔�
         Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>()
-                .eq("type_no", wrkMast.getIoType() - 50)
+                .eq("type_no", wrkMast.getIoType())
                 .eq("stn_no", wrkMast.getStaNo()) // 浣滀笟绔欑偣 = 鎷f枡鍑哄簱鐨勭洰鏍囩珯
                 .eq("crn_no", wrkMast.getCrnNo()); // 鍫嗗灈鏈哄彿
         StaDesc staDesc = staDescService.selectOne(wrapper);
@@ -982,7 +1115,7 @@
         // 鏇存柊宸ヤ綔妗f暟鎹姸鎬�
         wrkMast.setIoType(wrkMast.getIoType() - 50); // 鍏ュ嚭搴撶被鍨�: 103->53,104->54,107->57
         wrkMast.setWrkSts(2L); // 宸ヤ綔鐘舵��: 2.璁惧涓婅蛋
-        wrkMast.setSourceStaNo(wrkMast.getStaNo()); // 婧愮珯
+        wrkMast.setSourceStaNo(staDesc.getStnNo()); // 婧愮珯
         wrkMast.setStaNo(staNo); // 鐩爣绔�
         wrkMast.setLocNo(wrkMast.getSourceLocNo()); // 鐩爣搴撲綅 = 鍑哄簱鏃剁殑婧愬簱浣�
         wrkMast.setSourceLocNo(""); // 婧愬簱浣嶆竻绌�

--
Gitblit v1.9.1