From c96cecfb837b6500f55e4e9ddce53bbcd37538fa Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期四, 24 七月 2025 09:27:33 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java |  303 ++++++++++---------------------------------------
 1 files changed, 64 insertions(+), 239 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 93c21e4..17b0c6b 100644
--- a/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -15,6 +15,7 @@
 import com.zy.asrs.entity.result.FindLocNoAttributeVo;
 import com.zy.asrs.mapper.LocMastMapper;
 import com.zy.asrs.service.*;
+import com.zy.asrs.utils.MatUtils;
 import com.zy.asrs.utils.OrderInAndOutUtil;
 import com.zy.asrs.utils.Utils;
 import com.zy.common.model.*;
@@ -189,6 +190,7 @@
     public void startupFullTakeStore(StockOutParam param, Long userId) {
         // 鐩爣绔欑偣鐘舵�佹娴�
         BasDevp staNo = basDevpService.checkSiteStatus(param.getOutSite());
+
         // 鑾峰彇搴撲綅鏄庣粏
         List<LocDetlDto> locDetlDtos = new ArrayList<>();
         for (StockOutParam.LocDetl paramLocDetl : param.getLocDetls()) {
@@ -208,7 +210,7 @@
             LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", locDetlDtos.get(0).getLocDetl().getLocNo()));
             if (locMast.getLocSts().equals("F") || locMast.getLocSts().equals("D")) {
                 // 鍚姩鍑哄簱寮�濮� 101.鍑哄簱
-                stockOut(staNo, locDetlDtos, null, userId, null);
+                stockOut(staNo, locDetlDtos, null, userId, null, param.getItemId());
             } else {
                 throw new CoolException("鎵�閫夊簱浣嶅瓨鍦ㄧ姸鎬佷笉涓篎銆丏鐨勫簱浣嶏紝搴撲綅鍙凤細" + locMast.getLocNo() + " 銆佸綋鍓嶇姸鎬侊細" + locMast.getLocSts() + "-" + locMast.getLocSts$());
             }
@@ -297,7 +299,7 @@
 
     @Override
     @Transactional
-    public void stockOut(BasDevp staNo, List<LocDetlDto> locDetlDtos, IoWorkType ioWorkType, Long userId, String checkOrderNo) {
+    public void stockOut(BasDevp staNo, List<LocDetlDto> locDetlDtos, IoWorkType ioWorkType, Long userId, String checkOrderNo, String itemId) {
         Date now = new Date();
         // 鍚堝苟鍚岀被椤�
         Set<String> locNos = new HashSet<>();
@@ -324,15 +326,6 @@
                 ioType = dto.isAll() ? 101 : 103;
             } else if (ioWorkType.equals(IoWorkType.CHECK_OUT)) {
                 ioType = 107;
-                if (Cools.isEmpty(checkOrderNo)) {
-                    checkOrderNo = DateUtils.createTimeStamp();
-                    InventoryCheckOrder checkOrder = new InventoryCheckOrder();
-                    checkOrder.setCreateBy(userId);
-                    checkOrder.setStatus("1");
-                    checkOrder.setCreateTime(new Date());
-                    checkOrder.setOrderNo(checkOrderNo);
-                    checkOrderService.insert(checkOrder);
-                }
             }
             assert ioType != null;
             // 鑾峰彇搴撲綅
@@ -345,9 +338,38 @@
 //            }
 
             // 鑾峰彇璺緞
-            StaDesc staDesc = staDescService.queryCrnStn(ioType, locMast.getCrnNo(), outSta);
+            List<StaDesc> staDescs = staDescService.queryCrnStn(ioType, locMast.getCrnNo(), outSta);
+            StaDesc staDesc = staDescs.get(0);
+            if (locMast.getCrnNo() == 1) {
+                int finalCrnStn = 1016;
+                if (locMast.getRow1() <= 3) {
+                    finalCrnStn = 1013;
+                }
+
+                for (StaDesc desc : staDescs) {
+                    if (desc.getCrnStn() == finalCrnStn) {
+                        staDesc = desc;
+                        break;
+                    }
+                }
+            }
+
             // 鐢熸垚宸ヤ綔鍙�
             int workNo = commonService.getWorkNo(WorkNoType.getWorkNoType(ioType));
+
+            if (ioType == 107) {
+                if (Cools.isEmpty(checkOrderNo)) {
+                    checkOrderNo = DateUtils.createTimeStamp() + "_" + workNo;
+                    InventoryCheckOrder checkOrder = new InventoryCheckOrder();
+                    checkOrder.setCreateBy(userId);
+                    checkOrder.setStatus("1");
+                    checkOrder.setArea(String.valueOf(workNo));
+                    checkOrder.setCreateTime(new Date());
+                    checkOrder.setOrderNo(checkOrderNo);
+                    checkOrderService.insert(checkOrder);
+                }
+            }
+
             // 鐢熸垚宸ヤ綔妗�
             WrkMast wrkMast = new WrkMast();
             wrkMast.setWrkNo(workNo);
@@ -369,6 +391,7 @@
             wrkMast.setAppeTime(now);
             wrkMast.setModiUser(userId);
             wrkMast.setModiTime(now);
+            wrkMast.setPacked(itemId);
             if (!wrkMastService.insert(wrkMast)) {
                 throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐ワ紝鍑哄簱搴撲綅鍙凤細" + dto.getLocNo());
             }
@@ -392,7 +415,11 @@
                     throw new CoolException("淇濆瓨宸ヤ綔妗f槑缁嗗け璐�");
                 }
                 if (ioType == 107) {
-                    List<InventoryCheckOrderDetl> checkOrderDetls = checkOrderDetlService.selectList(new EntityWrapper<InventoryCheckOrderDetl>().eq("order_no", checkOrderNo).eq("loc_no", dto.getLocNo()));
+                    List<InventoryCheckOrderDetl> checkOrderDetls = checkOrderDetlService.selectList(new EntityWrapper<InventoryCheckOrderDetl>()
+                            .eq("order_no", checkOrderNo)
+                            .eq("loc_no", dto.getLocNo())
+                            .eq("batch", wrkDetl.getBatch())
+                    );
                     if (checkOrderDetls != null && !checkOrderDetls.isEmpty()) {
                         throw new CoolException("璇ュ簱浣嶇殑鐩樼偣浠诲姟宸茬粡娣诲姞鍒颁簡璇ュ簱浣嶄腑");
                     }
@@ -403,6 +430,8 @@
                     checkOrderDetl.setBatch(detlDto.getLocDetl().getBatch());
                     checkOrderDetl.setLocNo(detlDto.getLocDetl().getLocNo());
                     checkOrderDetl.setAnfme(detlDto.getLocDetl().getAnfme());
+                    checkOrderDetl.setArea(String.valueOf(workNo));
+                    checkOrderDetl.setCwarehouseid(wrkDetl.getStandby1());
                     checkOrderDetl.setIoTime(new Date());
                     checkOrderDetl.setStatus("0");
                     checkOrderDetlService.insert(checkOrderDetl);
@@ -479,6 +508,19 @@
                         , locDto.getStandby1(), locDto.getStandby2(), locDto.getStandby3(), locDto.getBoxType1(), locDto.getBoxType2(), locDto.getBoxType3());
 
             }
+
+            Wrapper<LocDetl> wrapper = new EntityWrapper<LocDetl>()
+                    .eq("loc_no", wrkMast.getSourceLocNo())
+                    .eq("matnr", orderDetlPakout.getMatnr());
+            if (!Cools.isEmpty(locDto.getBatch())) {
+                wrapper.eq("batch", locDto.getBatch());
+            }
+            if (!Cools.isEmpty(orderDetlPakout.getSpecs())) {
+                wrapper.eq("specs", orderDetlPakout.getSpecs());
+            }
+
+            LocDetl locDetl = locDetlService.selectOne(wrapper);
+
             WrkDetl wrkDetl = new WrkDetl();
             wrkDetl.sync(orderDetlPakout);
             wrkDetl.setZpallet(wrkMast.getBarcode());
@@ -492,6 +534,14 @@
             wrkDetl.setModiTime(now);
             wrkDetl.setModiUser(userId);
             wrkDetl.setThreeCode(orderDetlPakout.getId() + "");
+            wrkDetl.setSupp(orderPakout.getCstmrName());
+            wrkDetl.setStockNum(locDetl.getAnfme());//搴撳瓨
+            wrkDetl.setStockNum2(locDetl.getWeight());//杈呭簱瀛�
+            wrkDetl.setKpCstmrName(orderPakout.getKpCstmrName());
+
+            //璁$畻杈呮暟閲�
+            Double weight = MatUtils.calcWeight(wrkDetl.getMatnr(), wrkDetl.getAnfme());
+            wrkDetl.setWeight(weight);
             if (!wrkDetlService.insert(wrkDetl)) {
                 throw new CoolException("淇濆瓨宸ヤ綔妗f槑缁嗗け璐�");
             }
@@ -740,7 +790,7 @@
             LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", locDetlDtos.get(0).getLocDetl().getLocNo()));
             if (locMast.getLocSts().equals("F")) {
                 // 鍚姩鍑哄簱寮�濮� 107.鐩樼偣鍑哄簱
-                stockOut(staNo, locDetlDtos, IoWorkType.CHECK_OUT, userId, param.getCheckId());
+                stockOut(staNo, locDetlDtos, IoWorkType.CHECK_OUT, userId, param.getCheckId(), null);
             } else {
                 throw new CoolException("鎵�閫夊簱浣嶅瓨鍦ㄧ姸鎬佷笉涓篎鐨勫簱浣嶏紝搴撲綅鍙凤細" + locMast.getLocNo() + " 銆佸綋鍓嶇姸鎬侊細" + locMast.getLocSts() + "-" + locMast.getLocSts$());
             }
@@ -1098,231 +1148,6 @@
             throw new CoolException("鏇存柊搴撲綅鐘舵�佸け璐�");
         }
     }
-
-    @Override
-    @Transactional
-    public void adjustLocDetl2(LocDetlAdjustParam param, Long userId) {
-        param.integrate();
-        LocMast locMast = locMastService.selectById(param.getLocNo());
-        if (Cools.isEmpty(locMast)) {
-            throw new CoolException("搴撲綅涓嶅瓨鍦�");
-        }
-        if (!(locMast.getLocSts().equals("P"))) {
-            throw new CoolException("褰撳墠搴撲綅涓嶅彲璋冩暣锛佸簱浣嶇姸鎬侊細" + locMast.getLocSts$());
-        }
-
-        Date now = new Date();
-        List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("loc_no", param.getLocNo()));
-
-        List<LocDetlAdjustParam.LocDetlAdjust> list = param.getList();
-
-        // 娣诲姞鍘嗗彶宸ヤ綔涓绘。
-        WrkMastLog wrkMast = new WrkMastLog();
-        wrkMast.setIoTime(now);
-        wrkMast.setWrkSts(5);
-        wrkMast.setIoPri(13D); // 浼樺厛绾�
-        wrkMast.setCrnNo(locMast.getCrnNo());
-        wrkMast.setSourceLocNo(locMast.getLocNo());
-        wrkMast.setLocNo(locMast.getLocNo());
-        wrkMast.setBarcode(locMast.getBarcode()); // 鎵樼洏鐮�
-        wrkMast.setFullPlt("Y"); // 婊℃澘锛歒
-        wrkMast.setPicking("N"); // 鎷f枡
-        wrkMast.setExitMk("N"); // 閫�鍑�
-        wrkMast.setEmptyMk("N"); // 绌烘澘
-        wrkMast.setLinkMis("Y");
-        // 鎿嶄綔浜哄憳鏁版嵁
-        wrkMast.setAppeTime(now);
-        wrkMast.setModiTime(now);
-        wrkMast.setAppeUser(userId);
-        wrkMast.setModiUser(userId);
-
-        // 澧炲垹鏀瑰彧鍒涘缓涓�娆″伐浣滀富妗�
-        boolean updateFlag = true;
-        boolean deleteFlag = true;
-        boolean addFlag = true;
-
-        // 淇敼鏁伴噺
-        Iterator<LocDetl> iterator = locDetls.iterator();
-        while (iterator.hasNext()) {
-            LocDetl locDetl = iterator.next();
-
-            Iterator<LocDetlAdjustParam.LocDetlAdjust> iterator1 = list.iterator();
-            while (iterator1.hasNext()) {
-                LocDetlAdjustParam.LocDetlAdjust adjust = iterator1.next();
-                if (adjust.getCount() == 0) {
-                    continue;
-                }
-                if (locDetl.getMatnr().equals(adjust.getMatnr()) && Cools.eq(locDetl.getBatch(), adjust.getBatch())) {
-                    if (!locDetl.getAnfme().equals(adjust.getCount())) {
-                        // todo 鐩樼偣璁板綍
-                        // 淇敼搴撳瓨
-                        if (!locDetlService.updateAnfme(adjust.getCount(), locDetl.getLocNo(), locDetl.getMatnr(), locDetl.getBatch(), locDetl.getBrand(),
-                                locDetl.getStandby1(), locDetl.getStandby2(), locDetl.getStandby3(), locDetl.getBoxType1(), locDetl.getBoxType2(), locDetl.getBoxType3())) {
-                            throw new CoolException(locDetl.getLocNo() + "搴撲綅锛�" + locDetl.getMatnr() + "鍟嗗搧锛�" + locDetl.getBatch() + "鎵瑰彿淇敼鏁伴噺澶辫触");
-                        }
-                        // 淇濆瓨璋冩暣璁板綍
-                        AdjDetl adjDetl = new AdjDetl();
-                        adjDetl.setLocNo(locDetl.getLocNo());
-                        adjDetl.setMatnr(locDetl.getMatnr());
-                        adjDetl.setBatch(locDetl.getBatch());
-                        adjDetl.setOriQty(locDetl.getAnfme());
-                        adjDetl.setAdjQty(adjust.getCount());
-                        adjDetl.setModiTime(now);
-                        adjDetl.setModiUser(userId);
-                        adjDetl.setAppeTime(now);
-                        adjDetl.setAppeUser(userId);
-                        adjDetlService.save(adjDetl, userId);
-
-                        if (updateFlag) {
-                            wrkMast.setWrkNo(commonService.getWorkNo(3));
-                            wrkMast.setIoType(23);
-                            boolean res = wrkMastLogService.insert(wrkMast);
-                            if (!res) {
-                                throw new CoolException("搴撳瓨璋冩暣-淇敼 淇濆瓨宸ヤ綔妗eけ璐�");
-                            }
-                            updateFlag = false;
-                        }
-
-                        // 娣诲姞鍘嗗彶宸ヤ綔鏄庣粏
-                        WrkDetlLog wrkDetl = new WrkDetlLog();
-                        wrkDetl.sync(locDetl);
-                        wrkDetl.setWrkNo(wrkMast.getWrkNo());
-                        wrkDetl.setIoTime(wrkMast.getIoTime());
-                        wrkDetl.setAnfme(adjust.getCount());
-                        wrkDetl.setAppeTime(now);
-                        wrkDetl.setModiTime(now);
-                        wrkMast.setAppeUser(userId);
-                        wrkMast.setModiUser(userId);
-                        if (!wrkDetlLogService.insert(wrkDetl)) {
-                            throw new CoolException("淇濆瓨宸ヤ綔鏄庣粏澶辫触");
-                        }
-                    }
-                    iterator.remove();
-                    iterator1.remove();
-                }
-            }
-        }
-
-        // 鍒犻櫎搴撳瓨
-        for (LocDetl locDetl : locDetls) {
-            // todo 鐩樼偣璁板綍
-            if (!locDetlService.updateAnfme(-1.0D, locDetl.getLocNo(), locDetl.getMatnr(), locDetl.getBatch(), locDetl.getBrand(),
-                    locDetl.getStandby1(), locDetl.getStandby2(), locDetl.getStandby3(), locDetl.getBoxType1(), locDetl.getBoxType2(), locDetl.getBoxType3())) {
-                throw new CoolException("鍒犻櫎" + locDetl.getLocNo() + "搴撲綅锛�" + locDetl.getMatnr() + "鍟嗗搧锛�" + locDetl.getBatch() + "鎵瑰彿搴撳瓨鏄庣粏澶辫触");
-            }
-            // 淇濆瓨璋冩暣璁板綍
-            AdjDetl adjDetl = new AdjDetl();
-            adjDetl.setLocNo(locDetl.getLocNo());
-            adjDetl.setMatnr(locDetl.getMatnr());
-            adjDetl.setBatch(locDetl.getBatch());
-            adjDetl.setOriQty(locDetl.getAnfme());
-            adjDetl.setAdjQty(0.0D);
-            adjDetl.setModiTime(now);
-            adjDetl.setModiUser(userId);
-            adjDetl.setAppeTime(now);
-            adjDetl.setAppeUser(userId);
-            adjDetlService.save(adjDetl, userId);
-
-            if (deleteFlag) {
-                wrkMast.setWrkNo(commonService.getWorkNo(3));
-                wrkMast.setIoType(22);
-                boolean res = wrkMastLogService.insert(wrkMast);
-                if (!res) {
-                    throw new CoolException("搴撳瓨璋冩暣-鍒犻櫎 淇濆瓨宸ヤ綔妗eけ璐�");
-                }
-                deleteFlag = false;
-            }
-
-            // 娣诲姞鍘嗗彶宸ヤ綔鏄庣粏
-            WrkDetlLog wrkDetl = new WrkDetlLog();
-            wrkDetl.sync(locDetl);
-            wrkDetl.setWrkNo(wrkMast.getWrkNo());
-            wrkDetl.setIoTime(wrkMast.getIoTime());
-            wrkDetl.setAnfme(0.0);
-            wrkDetl.setAppeTime(now);
-            wrkDetl.setModiTime(now);
-            wrkMast.setAppeUser(userId);
-            wrkMast.setModiUser(userId);
-            if (!wrkDetlLogService.insert(wrkDetl)) {
-                throw new CoolException("淇濆瓨宸ヤ綔鏄庣粏澶辫触");
-            }
-        }
-
-        // 娣诲姞搴撳瓨
-        for (LocDetlAdjustParam.LocDetlAdjust adjust : list) {
-            if (adjust.getCount() == 0.0D) {
-                continue;
-            }
-            Mat mat = matService.selectByMatnr(adjust.getMatnr());
-            LocDetl locDetl = new LocDetl();
-            locDetl.sync(mat);
-            locDetl.setBatch(adjust.getBatch());
-            locDetl.setLocNo(locMast.getLocNo());
-            locDetl.setZpallet(locMast.getBarcode());
-            locDetl.setAnfme(adjust.getCount()); // 鏁伴噺
-            locDetl.setModiUser(userId); // 鎿嶄綔浜哄憳淇℃伅
-            locDetl.setModiTime(now);
-            locDetl.setAppeUser(userId);
-            locDetl.setAppeTime(now);
-            if (!locDetlService.insert(locDetl)) {
-                throw new CoolException("娣诲姞" + locDetl.getLocNo() + "搴撲綅锛�" + locDetl.getMatnr() + "鍟嗗搧锛�" + locDetl.getBatch() + "鎵瑰彿搴撳瓨鏄庣粏澶辫触");
-            }
-            // 淇濆瓨璋冩暣璁板綍
-            AdjDetl adjDetl = new AdjDetl();
-            adjDetl.setLocNo(locMast.getLocNo());
-            adjDetl.setMatnr(adjust.getMatnr());
-            adjDetl.setBatch(adjust.getBatch());
-            adjDetl.setOriQty(0.0D);
-            adjDetl.setAdjQty(adjust.getCount());
-            adjDetl.setModiTime(now);
-            adjDetl.setModiUser(userId);
-            adjDetl.setAppeTime(now);
-            adjDetl.setAppeUser(userId);
-            adjDetlService.save(adjDetl, userId);
-
-            if (addFlag) {
-                wrkMast.setWrkNo(commonService.getWorkNo(3));
-                wrkMast.setIoType(21);
-                boolean res = wrkMastLogService.insert(wrkMast);
-                if (!res) {
-                    throw new CoolException("搴撳瓨璋冩暣-鏂板 淇濆瓨宸ヤ綔妗eけ璐�");
-                }
-                addFlag = false;
-            }
-
-            // 娣诲姞鍘嗗彶宸ヤ綔鏄庣粏
-            WrkDetlLog wrkDetl = new WrkDetlLog();
-            wrkDetl.sync(locDetl);
-            wrkDetl.setWrkNo(wrkMast.getWrkNo());
-            wrkDetl.setIoTime(wrkMast.getIoTime());
-            wrkDetl.setAnfme(adjust.getCount());
-            wrkDetl.setAppeTime(now);
-            wrkDetl.setModiTime(now);
-            wrkMast.setAppeUser(userId);
-            wrkMast.setModiUser(userId);
-            if (!wrkDetlLogService.insert(wrkDetl)) {
-                throw new CoolException("淇濆瓨宸ヤ綔鏄庣粏澶辫触");
-            }
-        }
-        // 淇敼搴撲綅鐘舵��
-        int count = locDetlService.selectCount(new EntityWrapper<LocDetl>().eq("loc_no", locMast.getLocNo()));
-        if (locMast.getLocSts().equals("F")) {
-            if (count == 0) {
-                locMast.setLocSts("D");
-            }
-        }
-        if (locMast.getLocSts().equals("D") || locMast.getLocSts().equals("O")) {
-            if (count > 0) {
-                locMast.setLocSts("F");
-            }
-        }
-        locMast.setModiUser(userId);
-        locMast.setModiTime(now);
-        if (!locMastService.updateById(locMast)) {
-            throw new CoolException("鏇存柊搴撲綅鐘舵�佸け璐�");
-        }
-    }
-
 
     @Override
     @Transactional

--
Gitblit v1.9.1