From 979f2505861b77b8702604739486b62f1e339e76 Mon Sep 17 00:00:00 2001
From: dubin <bindu_bean@163.com>
Date: 星期二, 07 十月 2025 08:44:11 +0800
Subject: [PATCH] 联调

---
 src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java |  342 ++++++++++++++++++++++++++++++++++++++++++--------------
 1 files changed, 254 insertions(+), 88 deletions(-)

diff --git a/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
index 0f8a0f9..af100de 100644
--- a/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
@@ -71,6 +71,10 @@
     private ManLocDetlService manLocDetlService;
     @Autowired
     private ManLocDetlMapper manLocDetlMapper;
+    @Autowired
+    private MatBarcodeService matBarcodeService;
+    @Autowired
+    private AdjDetlService adjDetlService;
 
 
     @Override
@@ -105,94 +109,133 @@
         Date now = new Date();
 
         // 鏃犲崟缁勬墭
-//        if (Cools.isEmpty(param.getOrderNo())) {
-//
-//            // 鐢熸垚鍏ュ簱閫氱煡妗�
-//            List<DetlDto> detlDtos = new ArrayList<>();
-//            param.getCombMats().forEach(elem -> {
-//                DetlDto detlDto = new DetlDto(elem.getMatnr(), elem.getBatch(), elem.getAnfme());
-//                if (DetlDto.has(detlDtos, detlDto)) {
-//                    DetlDto one = DetlDto.find(detlDtos, detlDto.getMatnr(), detlDto.getBatch());
-//                    assert one != null;
-//                    one.setAnfme(one.getAnfme() + detlDto.getAnfme());
-//                } else {
-//                    detlDtos.add(detlDto);
-//                }
-//            });
-//
-//
-//            for (DetlDto detlDto : detlDtos) {
-//                Mat mat = matService.selectByMatnr(detlDto.getMatnr());
-//                if (Cools.isEmpty(mat)) {
-//                    throw new CoolException(detlDto.getMatnr() + "鍟嗗搧妗f涓嶅瓨鍦�");
-//                }
-//                WaitPakin waitPakin = new WaitPakin();
-//                waitPakin.sync(mat);
-//                waitPakin.setBatch(detlDto.getBatch());
-//                waitPakin.setZpallet(param.getBarcode());   // 鎵樼洏鐮�
-//                waitPakin.setIoStatus("N");     // 鍏ュ嚭鐘舵��
-//                waitPakin.setAnfme(detlDto.getAnfme());  // 鏁伴噺
-//                waitPakin.setStatus("Y");    // 鐘舵��
-//                waitPakin.setAppeUser(userId);
-//                waitPakin.setAppeTime(now);
-//                waitPakin.setModiUser(userId);
-//                waitPakin.setModiTime(now);
-//                if (!waitPakinService.insert(waitPakin)) {
-//                    throw new CoolException("淇濆瓨鍏ュ簱閫氱煡妗eけ璐�");
-//                }
-//            }
-//            // 鍏宠仈缁勬墭
-//        } else {
+        if (Cools.isEmpty(param.getOrderNo())) {
 
-        Order order = orderService.selectOne(new EntityWrapper<Order>().eq("temp1", param.getOrderNo()));
-        if (Cools.isEmpty(order) || order.getSettle() > 2) {
-            throw new CoolException("鍗曟嵁缂栧彿宸茶繃鏈�");
+            // 鐢熸垚鍏ュ簱閫氱煡妗�
+            List<DetlDto> detlDtos = new ArrayList<>();
+            param.getCombMats().forEach(elem -> {
+                DetlDto detlDto = new DetlDto(elem.getMatnr(), elem.getBatch(), elem.getAnfme(), elem.getProType(), elem.getTemp2(), elem.getOutOrderNo());
+                detlDto.setMemo(detlDto.getMemo());
+                if (DetlDto.has(detlDtos, detlDto)) {
+                    DetlDto one = DetlDto.find(detlDtos, detlDto.getMatnr(), detlDto.getBatch());
+                    assert one != null;
+                    one.setAnfme(one.getAnfme() + detlDto.getAnfme());
+                } else {
+                    detlDtos.add(detlDto);
+                }
+            });
+
+
+            for (DetlDto detlDto : detlDtos) {
+                Mat mat = matService.selectByMatnr(detlDto.getMatnr());
+                if (Cools.isEmpty(mat)) {
+                    throw new CoolException(detlDto.getMatnr() + "鍟嗗搧妗f涓嶅瓨鍦�");
+                }
+                //鏍¢獙褰撳墠鐗╂枡涓庢墭鐩樼粦瀹氫俊鎭槸鍚︽纭�
+                MatBarcode matBarcode = new MatBarcode();
+                MatBarcode mb = matBarcodeService.selectbyMatnr(detlDto.getMatnr());
+                if (mb != null){
+                    if (!mb.getZpallet().equals(param.getBarcode())){
+                        throw new CoolException(detlDto.getMatnr() + "璇ョ墿鏂欎笌鍏朵粬鎵樼洏缁戝畾锛岃鍏堣В缁�");
+                    }
+                }else {
+                    matBarcode.setZpallet(param.getBarcode());//鎵樼洏鐮�
+                    matBarcode.setMatnr(mat.getMatnr());//鐗╂枡鍙�
+                    matBarcode.setMaktx(mat.getMaktx());//鐗╂枡鍚嶇О
+                    matBarcode.setSpecs(mat.getSpecs());//瑙勬牸
+                    matBarcode.setModel(mat.getModel());//鍨嬪彿
+                    if (!matBarcodeService.insert(matBarcode)) {
+                        throw new CoolException("鐗╂枡涓庢墭鐩樼粦瀹氬け璐�");
+                    }
+                }
+                WaitPakin waitPakin = new WaitPakin();
+                waitPakin.sync(mat);
+                waitPakin.setProType(detlDto.getProType());
+                waitPakin.setTemp2(detlDto.getTemp2());
+                waitPakin.setOutOrderNo(detlDto.getOutOrderNo());
+                waitPakin.setBatch(detlDto.getBatch());
+                waitPakin.setZpallet(param.getBarcode());   // 鎵樼洏鐮�
+                waitPakin.setIoStatus("N");     // 鍏ュ嚭鐘舵��
+                waitPakin.setAnfme(detlDto.getAnfme());  // 鏁伴噺
+                waitPakin.setStatus("Y");    // 鐘舵��
+                waitPakin.setAppeUser(userId);
+                waitPakin.setAppeTime(now);
+                waitPakin.setModiUser(userId);
+                waitPakin.setModiTime(now);
+                waitPakin.setMemo(detlDto.getMemo());
+                if (!waitPakinService.insert(waitPakin)) {
+                    throw new CoolException("淇濆瓨鍏ュ簱閫氱煡妗eけ璐�");
+                }
+            }
+            // 鍏宠仈缁勬墭
+        } else {
+
+            Order order = orderService.selectOne(new EntityWrapper<Order>().eq("order_no", param.getOrderNo()));
+            if (Cools.isEmpty(order) || order.getSettle() > 2) {
+                throw new CoolException("鍗曟嵁缂栧彿宸茶繃鏈�");
+            }
+            // 鐢熸垚鍏ュ簱閫氱煡妗�
+            List<DetlDto> detlDtos = new ArrayList<>();
+            param.getCombMats().forEach(elem -> {
+
+                // 璁㈠崟鏄庣粏鏁伴噺鏍¢獙
+                //OrderDetl orderDetl = orderDetlService.selectItem(order.getId(), elem.getMatnr(), elem.getBatch(),elem.getAnfme() );
+                OrderDetl orderDetl = orderDetlService.selectById(elem.getDetlId());
+                if (elem.getAnfme() > orderDetl.getEnableQty()) {
+                    throw new CoolException(orderDetl.getMatnr() + "鍏ュ簱鏁伴噺涓嶅悎娉�");
+                }
+                // 淇敼璁㈠崟浣滀笟鏁伴噺
+                if (!orderDetlService.increaseWorkQty(orderDetl, elem.getAnfme())) {
+                    throw new CoolException("淇敼鍗曟嵁浣滀笟鏁伴噺澶辫触");
+                }
+
+                Mat mat = matService.selectByMatnr(orderDetl.getMatnr());
+                if (Cools.isEmpty(mat)) {
+                    throw new CoolException(orderDetl.getMatnr() + "鍟嗗搧妗f涓嶅瓨鍦�");
+                }
+                //鏍¢獙褰撳墠鐗╂枡涓庢墭鐩樼粦瀹氫俊鎭槸鍚︽纭�
+                MatBarcode matBarcode = new MatBarcode();
+                MatBarcode mb = matBarcodeService.selectbyMatnr(orderDetl.getMatnr());
+                if (mb != null){
+                    if (!mb.getZpallet().equals(param.getBarcode())){
+                        throw new CoolException(orderDetl.getMatnr() + "璇ョ墿鏂欎笌鍏朵粬鎵樼洏缁戝畾锛岃鍏堣В缁�");
+                    }
+                }else {
+                    matBarcode.setZpallet(param.getBarcode());//鎵樼洏鐮�
+                    matBarcode.setMatnr(mat.getMatnr());//鐗╂枡鍙�
+                    matBarcode.setMaktx(mat.getMaktx());//鐗╂枡鍚嶇О
+                    matBarcode.setSpecs(mat.getSpecs());//瑙勬牸
+                    matBarcode.setModel(mat.getModel());//鍨嬪彿
+                    if (!matBarcodeService.insert(matBarcode)) {
+                        throw new CoolException("鐗╂枡涓庢墭鐩樼粦瀹氬け璐�");
+                    }
+                }
+                WaitPakin waitPakin = new WaitPakin();
+                waitPakin.sync(mat);
+                waitPakin.setOrderNo(order.getOrderNo());   // 鍗曟嵁缂栧彿
+                waitPakin.setBatch(orderDetl.getBatch());     // 搴忓垪鐮�
+                waitPakin.setZpallet(param.getBarcode());   // 鎵樼洏鐮�
+                waitPakin.setIoStatus("N");     // 鍏ュ嚭鐘舵��
+                waitPakin.setAnfme(elem.getAnfme());  // 鏁伴噺
+                waitPakin.setStatus("Y");    // 鐘舵��
+                waitPakin.setAppeUser(userId);
+                waitPakin.setAppeTime(now);
+                waitPakin.setModiUser(userId);
+                waitPakin.setModiTime(now);
+
+                waitPakin.setBatch(orderDetl.getBatch());
+                waitPakin.setSPgNO(orderDetl.getSPgNO());
+                waitPakin.setOutOrderNo(orderDetl.getOutOrderNo());
+                waitPakin.setProType(orderDetl.getProType());
+                waitPakin.setLuHao(orderDetl.getLuHao());
+                waitPakin.setPacking(orderDetl.getPacking());
+                if (!waitPakinService.insert(waitPakin)) {
+                    throw new CoolException("淇濆瓨鍏ュ簱閫氱煡妗eけ璐�");
+                }
+            });
+
+            orderService.updateSettle(order.getId(), 2L, userId);
         }
-        // 鐢熸垚鍏ュ簱閫氱煡妗�
-        List<DetlDto> detlDtos = new ArrayList<>();
-        param.getCombMats().forEach(elem -> {
-
-            // 璁㈠崟鏄庣粏鏁伴噺鏍¢獙
-            //OrderDetl orderDetl = orderDetlService.selectItem(order.getId(), elem.getMatnr(), elem.getBatch(),elem.getAnfme() );
-            OrderDetl orderDetl = orderDetlService.selectById(elem.getDetlId());
-            if (elem.getAnfme() > orderDetl.getEnableQty()) {
-                throw new CoolException(orderDetl.getMatnr() + "鍏ュ簱鏁伴噺涓嶅悎娉�");
-            }
-            // 淇敼璁㈠崟浣滀笟鏁伴噺
-            if (!orderDetlService.increaseWorkQty(orderDetl, elem.getAnfme())) {
-                throw new CoolException("淇敼鍗曟嵁浣滀笟鏁伴噺澶辫触");
-            }
-
-            Mat mat = matService.selectByMatnr(orderDetl.getMatnr());
-            if (Cools.isEmpty(mat)) {
-                throw new CoolException(orderDetl.getMatnr() + "鍟嗗搧妗f涓嶅瓨鍦�");
-            }
-            WaitPakin waitPakin = new WaitPakin();
-            waitPakin.sync(mat);
-            waitPakin.setOrderNo(order.getOrderNo());   // 鍗曟嵁缂栧彿
-            waitPakin.setBatch(orderDetl.getBatch());     // 搴忓垪鐮�
-            waitPakin.setZpallet(param.getBarcode());   // 鎵樼洏鐮�
-            waitPakin.setIoStatus("N");     // 鍏ュ嚭鐘舵��
-            waitPakin.setAnfme(elem.getAnfme());  // 鏁伴噺
-            waitPakin.setStatus("Y");    // 鐘舵��
-            waitPakin.setAppeUser(userId);
-            waitPakin.setAppeTime(now);
-            waitPakin.setModiUser(userId);
-            waitPakin.setModiTime(now);
-
-            waitPakin.setBatch(orderDetl.getBatch());
-            waitPakin.setSPgNO(orderDetl.getSPgNO());
-            waitPakin.setOutOrderNo(orderDetl.getOutOrderNo());
-            waitPakin.setProType(orderDetl.getProType());
-            waitPakin.setLuHao(orderDetl.getLuHao());
-            waitPakin.setPacking(orderDetl.getPacking());
-            if (!waitPakinService.insert(waitPakin)) {
-                throw new CoolException("淇濆瓨鍏ュ簱閫氱煡妗eけ璐�");
-            }
-        });
-
-        orderService.updateSettle(order.getId(), 2L, userId);
-        //  }
 
     }
 
@@ -366,7 +409,8 @@
 //                Mat analyse = MatUtils.analyseMat(elem.getMatnr());
 //                // 鏉$爜銆佺墿鏂欎唬鐮併�佸簭鍒楀彿銆佹暟閲�
 //                DetlDto detlDto = new DetlDto(elem.getMatnr(), analyse.getMatnr(), analyse.getBarcode(), elem.getAnfme());
-////                DetlDto detlDto = new DetlDto(elem.getMatnr(), elem.getBatch(), elem.getAnfme());
+
+    /// /                DetlDto detlDto = new DetlDto(elem.getMatnr(), elem.getBatch(), elem.getAnfme());
 //                if (DetlDto.has(detlDtos, detlDto)) {
 //                    DetlDto one = DetlDto.find(detlDtos, detlDto.getMatnr(), detlDto.getBatch());
 //                    assert one != null;
@@ -491,7 +535,6 @@
 //
 //        }
 //    }
-
     @Override
     @Transactional
     public void pakoutByOrder(JSONObject param, Long userId) {
@@ -630,4 +673,127 @@
             throw new CoolException(locDetl.getLocNo() + "搴撲綅涓嶆槸鍦ㄥ簱鐘舵��");
         }
     }
+
+
+    @Override
+    @Transactional
+    public void adjustNew(MobileAdjustParam param, Boolean re, Long userId) {
+        WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("barcode", param.getBarcode()));
+        if (Cools.isEmpty(wrkMast)) {
+            throw new CoolException("鎵樼洏鐮�:" + param.getBarcode() + " 鏃犳湁鏁堝伐浣滄。");
+        }
+
+
+        List<CombParam.CombMat> combMats = param.getCombMats();
+        String recordRecordLog = "鎵樼洏鐮�" + param.getBarcode() + "鐩樼偣璁板綍锛�";
+        AdjDetl adjDetl = new AdjDetl();
+        adjDetl.setAppeTime(new Date());
+        adjDetl.setAppeUser(userId);
+        adjDetl.setModiTime(new Date());
+        adjDetl.setModiUser(userId);
+        adjDetl.setLocNo(wrkMast.getSourceLocNo());
+
+        for (CombParam.CombMat wrkDetl : combMats) {
+            WrkDetl wrkDetlOld = wrkDetlService.selectOne(new EntityWrapper<WrkDetl>()
+                            .eq("wrk_no", wrkMast.getWrkNo())
+                            .eq("matnr", wrkDetl.getMatnr())
+//                    .eq("batch",Cools.isEmpty(wrkDetl.getBatch())?"":wrkDetl.getBatch())
+            );
+
+
+            adjDetl.setMatnr(wrkDetl.getMatnr());
+            adjDetl.setBatch(wrkDetl.getBatch());
+            adjDetl.setAdjQty(wrkDetl.getAnfme());
+
+            if (Cools.isEmpty(wrkDetlOld)) {
+                WrkDetl detl = new WrkDetl();
+                detl.sync(wrkDetl);
+                detl.setWrkNo(wrkMast.getWrkNo());
+                detl.setZpallet(wrkMast.getBarcode());
+                wrkDetlService.insert(detl);
+                recordRecordLog = recordRecordLog + "\n" + "鏂板涓�鏉℃槑缁�:" + "\t鍟嗗搧缂栧彿锛�" + wrkDetl.getMatnr() + "\t鎵瑰彿锛�" + wrkDetl.getBatch() + "\t鏁伴噺锛�" + wrkDetl.getAnfme();
+                adjDetl.setOriQty(0.0);
+                adjDetlService.insert(adjDetl);
+
+            } else if (wrkDetlOld.getAnfme() != wrkDetl.getAnfme()) {
+                wrkDetlService.updateAnfme(wrkDetl.getAnfme(), wrkMast.getWrkNo(), wrkDetl.getMatnr(), wrkDetl.getBatch());
+                recordRecordLog = recordRecordLog + "\n" + "鏇存柊涓�鏉℃槑缁�:" + "\t鍟嗗搧缂栧彿锛�" + wrkDetl.getMatnr() + "\t鎵瑰彿锛�" + wrkDetl.getBatch() + "\t鍘熸暟閲忥細" + wrkDetlOld.getAnfme() + "\t鏂版暟閲忥細" + wrkDetl.getAnfme();
+                adjDetl.setOriQty(wrkDetlOld.getAnfme());
+                adjDetlService.insert(adjDetl);
+
+            } else if (wrkDetlOld.getAnfme() == wrkDetl.getAnfme()) {
+                recordRecordLog = recordRecordLog + "\n" + "涓�鏉℃槑缁嗕繚鎸佷笉鍙�:" + "\t鍟嗗搧缂栧彿锛�" + wrkDetl.getMatnr() + "\t鎵瑰彿锛�" + wrkDetl.getBatch() + "\t鏁伴噺锛�" + wrkDetlOld.getAnfme();
+                continue;
+            } else {
+                throw new CoolException("鎵樼洏鐮�:" + param.getBarcode() + " 鏈煡寮傚父锛岃鑱旂郴绠$悊鍛�");
+            }
+        }
+        log.info(recordRecordLog);
+    }
+
+    @Override
+    public void combToWms(WaitPakin waitPakin) {
+        // 鍒ゆ柇鏄惁鏈夌浉鍚屾潯鐮佺殑鏁版嵁
+//        if (waitPakinService.selectCount(new EntityWrapper<WaitPakin>().
+//                eq("zpallet", waitPakin.getBarcode()).eq("io_status", "N")) > 0) {
+//            throw new CoolException(waitPakin.getBarcode() + "鏁版嵁姝e湪杩涜鍏ュ簱");
+//        }
+
+        if (waitPakin.getBarcode().length() != 8) {
+            throw new CoolException("鏉$爜闀垮害涓嶆槸8浣�===>>" + waitPakin.getBarcode());
+        }
+        int countLoc = locDetlService.selectCount(new EntityWrapper<LocDetl>().eq("zpallet", waitPakin.getBarcode()));
+        int countWrk = wrkDetlService.selectCount(new EntityWrapper<WrkDetl>().eq("zpallet", waitPakin.getBarcode()));
+        int countwait = waitPakinService.selectCount(new EntityWrapper<WaitPakin>().eq("zpallet", waitPakin.getBarcode()));
+        if (countLoc > 0 || countWrk > 0) {
+            throw new CoolException("缁勬墭妗�/宸ヤ綔妗�/搴撳瓨鏉$爜鏁版嵁宸插瓨鍦�===>>" + waitPakin.getBarcode());
+        }
+
+        Date now = new Date();
+        // 鐢熸垚鍏ュ簱閫氱煡妗�
+        List<DetlDto> detlDtos = new ArrayList<>();
+        Mat byId = matService.selectById(waitPakin.getModiUser());
+        DetlDto detlDto = new DetlDto(byId.getMatnr(), waitPakin.getBatch(), waitPakin.getAnfme(), waitPakin.getProType(), waitPakin.getTemp2(), waitPakin.getOutOrderNo());
+            detlDto.setMemo(detlDto.getMemo());
+            if (DetlDto.has(detlDtos, detlDto)) {
+                DetlDto one = DetlDto.find(detlDtos, detlDto.getMatnr(), detlDto.getBatch());
+                assert one != null;
+                one.setAnfme(one.getAnfme() + detlDto.getAnfme());
+            } else {
+                detlDtos.add(detlDto);
+            }
+
+
+        for (DetlDto dto : detlDtos) {
+            Mat mat = matService.selectByMatnr(dto.getMatnr());
+            if (Cools.isEmpty(mat)) {
+                throw new CoolException(dto.getMatnr() + "鍟嗗搧妗f涓嶅瓨鍦�");
+            }
+            //鏍¢獙褰撳墠鐗╂枡涓庢墭鐩樼粦瀹氫俊鎭槸鍚︽纭�
+            MatBarcode mb = matBarcodeService.selectbyMatnr(dto.getMatnr());
+            if (mb != null){
+                if (!mb.getZpallet().equals(waitPakin.getBarcode())){
+                    throw new CoolException(detlDto.getMatnr() + "璇ョ墿鏂欎笌鍏朵粬鎵樼洏缁戝畾锛岃鍏堣В缁�");
+                }
+            }
+            WaitPakin waitPakin1 = new WaitPakin();
+            waitPakin1.sync(mat);
+            waitPakin1.setProType(dto.getProType());
+            waitPakin1.setTemp2(dto.getTemp2());
+            waitPakin1.setOutOrderNo(dto.getOutOrderNo());
+            waitPakin1.setBatch(dto.getBatch());
+            waitPakin1.setZpallet(waitPakin.getBarcode());   // 鎵樼洏鐮�
+            waitPakin1.setIoStatus("N");     // 鍏ュ嚭鐘舵��
+            waitPakin1.setAnfme(dto.getAnfme());  // 鏁伴噺
+            waitPakin1.setStatus("Y");    // 鐘舵��
+            waitPakin1.setAppeUser(waitPakin.getAppeUser());
+            waitPakin1.setAppeTime(now);
+            waitPakin1.setModiUser(waitPakin.getAppeUser());
+            waitPakin1.setModiTime(now);
+            waitPakin1.setMemo(detlDto.getMemo());
+            if (!waitPakinService.insert(waitPakin1)) {
+                throw new CoolException("淇濆瓨鍏ュ簱閫氱煡妗eけ璐�");
+            }
+        }
+    }
 }

--
Gitblit v1.9.1