From f41987779e09b4bf2e10df27ff60f4b28318d630 Mon Sep 17 00:00:00 2001
From: lsh <lsh@163.com>
Date: 星期四, 21 八月 2025 17:15:38 +0800
Subject: [PATCH] *

---
 src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java |  110 +++++++++++++++++++++++++++++++++++++++++++-----------
 1 files changed, 87 insertions(+), 23 deletions(-)

diff --git a/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
index e4767f4..64997b7 100644
--- a/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
@@ -19,6 +19,7 @@
 import com.zy.asrs.utils.CodeDetectionUtil;
 import com.zy.asrs.utils.MatUtils;
 import com.zy.asrs.utils.PostMesDataUtils;
+import com.zy.asrs.utils.Utils;
 import com.zy.common.model.DetlDto;
 import com.zy.common.model.LocTypeDto;
 import com.zy.common.model.StartupDto;
@@ -426,7 +427,7 @@
                             null    // 澶囨敞
                     );
                     if (tagMapper.insert(priTag) == 0) {
-                        throw new CoolException("鏈嶅姟鍣ㄥ唴閮ㄩ敊璇紝璇疯仈绯荤鐞嗗憳");
+                        throw new CoolException("涓�绾у垎绫诲垱寤哄紓甯革紝璇疯仈绯荤鐞嗗憳");
                     }
                 }
                 // 浜岀骇鍒嗙被
@@ -456,7 +457,7 @@
                             null    // 澶囨敞
                     );
                     if (tagMapper.insert(secTag) == 0) {
-                        throw new CoolException("鏈嶅姟鍣ㄥ唴閮ㄩ敊璇紝璇疯仈绯荤鐞嗗憳");
+                        throw new CoolException("浜岀骇鍒嗙被鍒涘缓寮傚父锛岃鑱旂郴绠$悊鍛�");
                     }
                 }
                 tagId = secTag.getId();
@@ -472,7 +473,7 @@
             mat.setCreateTime(now);
             mat.setUpdateTime(now);
             if (!matService.insert(mat)) {
-                throw new CoolException("鏈嶅姟鍣ㄥ唴閮ㄩ敊璇紝璇疯仈绯荤鐞嗗憳");
+                throw new CoolException("鐗╂枡淇℃伅鏂板寮傚父锛岃鑱旂郴绠$悊鍛�");
             } else {
                 log.info("鎵撳寘涓婄嚎娣诲姞鏂扮墿鏂橻鍟嗗搧缂栧彿锛歿}]", mat.getMatnr());
             }
@@ -526,7 +527,7 @@
                                 null    // 澶囨敞
                         );
                         if (tagMapper.insert(priTag) == 0) {
-                            throw new CoolException("鏈嶅姟鍣ㄥ唴閮ㄩ敊璇紝璇疯仈绯荤鐞嗗憳");
+                            throw new CoolException("涓�绾у垎绫诲垱寤哄紓甯革紝璇疯仈绯荤鐞嗗憳");
                         }
                     }
                     // 浜岀骇鍒嗙被
@@ -556,7 +557,7 @@
                                 null    // 澶囨敞
                         );
                         if (tagMapper.insert(secTag) == 0) {
-                            throw new CoolException("鏈嶅姟鍣ㄥ唴閮ㄩ敊璇紝璇疯仈绯荤鐞嗗憳");
+                            throw new CoolException("浜岀骇鍒嗙被鍒涘缓寮傚父锛岃鑱旂郴绠$悊鍛�");
                         }
                     }
                     tagId = secTag.getId();
@@ -574,7 +575,7 @@
                 mat.setCreateTime(now);
                 mat.setUpdateTime(now);
                 if (!matService.insert(mat)) {
-                    throw new CoolException("鏈嶅姟鍣ㄥ唴閮ㄩ敊璇紝璇疯仈绯荤鐞嗗憳");
+                    throw new CoolException("鏂板鐗╂枡淇℃伅寮傚父锛岃鑱旂郴绠$悊鍛�");
                 } else {
                     log.info("鍚屾鏂扮墿鏂橻鍟嗗搧缂栧彿锛歿}]", mat.getMatnr());
                 }
@@ -813,7 +814,7 @@
             }
             WaitPakin waitPakin = new WaitPakin();
             waitPakin.sync(mat);
-            waitPakin.setBatch(matList.getBatch());       //鏈ㄧ缂栫爜  //鎵规  鍞竴鍊�  绠卞彿
+            waitPakin.setBatch(matList.getBatch());       //鏈ㄧ缂栫爜  //鎵规  鍞竴鍊�  鎵规
             waitPakin.setModel(matList.getModel());       //鍗峰彿  鍞竴鍊�
             waitPakin.setBrand(param.getBoxType());     //鏈ㄧ绫诲瀷
             waitPakin.setZpallet(param.getBarcode());   //鎵樼洏鐮�
@@ -821,7 +822,7 @@
             waitPakin.setWeight(matList.getWeight());  //鍑�閲�
             waitPakin.setVolume(matList.getRoughWeight());  //姣涢噸
             waitPakin.setPrice(matList.getRollExtent());   //闀垮害
-            waitPakin.setSpecs(String.valueOf(matList.getJoint()));   //鎺ュご
+            waitPakin.setSpecs(String.valueOf(matList.getJoint()));   //鎺ュご MES璁㈠崟鍙�
             waitPakin.setIoStatus("N");     // 鍏ュ嚭鐘舵��
             waitPakin.setAnfme(matList.getAnfme());  // 鏁伴噺
             waitPakin.setStatus("Y");    // 鐘舵��
@@ -1133,8 +1134,20 @@
         if (Cools.isEmpty(basDevp.getCanining()) || !basDevp.getCanining().equals("Y")){
             throw new CoolException("鐮佸灈浣嶇紪鍙� palletizingNo="+param.getStaNo()+" 鎵�澶勭珯鐐逛笉鏄兘鍏ョ姸鎬�");
         }
-        if (Cools.isEmpty(basDevp.getBarcode())){
+        if (Cools.isEmpty(basDevp.getBarcode()) || basDevp.getBarcode().equals("00000000")){
             throw new CoolException("鐮佸灈浣嶇紪鍙� palletizingNo="+param.getStaNo()+" 鎵�澶勭珯鐐规枡绠辩爜寮傚父鐘舵�侊紱鏂欑鐮�==銆嬩负绌�"+basDevp.getBarcode());
+        }
+        if (!basDevp.getInEnable().equals("Y")){
+            try{
+                Thread.sleep(500);
+            } catch (Exception e){
+
+            }
+            BasDevp basDevp1111 = basDevpService.selectById(param.getStaNo());
+            if (!basDevp1111.getInEnable().equals("Y")){
+                throw new CoolException("鐮佸灈浣嶇紪鍙� palletizingNo="+param.getStaNo()+" 鎵�澶勭珯鐐癸紝璇风瓑寰呯炕杞畬鎴愶紱鏂欑鐮�==銆�"+basDevp.getBarcode());
+            }
+
         }
         if (!CodeDetectionUtil.barcodeDetection(basDevp.getBarcode(),8)){
             throw new CoolException("鐮佸灈浣嶇紪鍙� palletizingNo="+param.getStaNo()+" 鎵�澶勭珯鐐规枡绠辩爜寮傚父鐘舵�侊紱鏂欑鐮侊細"+basDevp.getBarcode());
@@ -1153,14 +1166,14 @@
         WaitPakin waitPakin = new WaitPakin();
         waitPakin.sync(mat);
         waitPakin.setBatch(param.getBatch());       //鏈ㄧ缂栫爜  //鎵规  鍞竴鍊�  绠卞彿
-        waitPakin.setModel(param.getTaskNo());       //鍗峰彿  鍞竴鍊�
+        waitPakin.setModel(param.getTaskNo());       //鍗峰彿  鍞竴鍊�  宸ヤ綔鍙�
 //        waitPakin.setBrand(param.getBoxType());     //鏈ㄧ绫诲瀷
         waitPakin.setZpallet(basDevp.getBarcode());   //鎵樼洏鐮�
 //        waitPakin.setOrigin(matList.getPosition()); //鏈ㄧ鍦ㄦ墭鐩樹笂鐨勪綅缃�
         waitPakin.setWeight(param.getWeight());  //鍑�閲�
 //        waitPakin.setVolume(matList.getRoughWeight());  //姣涢噸
 //        waitPakin.setPrice(matList.getRollExtent());   //闀垮害
-        waitPakin.setSpecs(param.getOrderNo());   //鍗曞彿  鍊熺敤
+        waitPakin.setSpecs(param.getOrderNo());   //MES璁㈠崟鍙�  鍊熺敤瑙勬牸
 //        waitPakin.setIoStatus("N");     // 鍏ュ嚭鐘舵��
 //        waitPakin.setAnfme(matList.getAnfme());  // 鏁伴噺
         waitPakin.setColor(param.getColor());  // 棰滆壊
@@ -1199,7 +1212,7 @@
             throw new CoolException("鍝佸彿 matnr,璇峰厛涓嬪彂鍩虹妗f锛侊紒锛�");
         }
         if (Cools.isEmpty(mat.getUnits())){
-            throw new CoolException("鍝佸彿 matnr,閲嶉噺鑼冨洿鍋忕Щ鍊间负绌猴紒锛侊紒,璇峰厛涓嬪彂鍩虹妗f锛侊紒锛�");
+            throw new CoolException("鍝佸彿 matnr,閲嶉噺鑼冨洿鍋忕Щ鍊间负绌猴紒锛侊紒,璇峰厛缁存姢鍩虹妗f锛侊紒锛�");
         }
 
         ArrayList<Integer> crns =new ArrayList<>();
@@ -1232,10 +1245,15 @@
         }
 
         ArrayList<LocDetl> locDetlArrayList = new ArrayList<>();
-        Wrapper<LocDetl> wrapper = new EntityWrapper<LocDetl>().eq("matnr", param.getMatnr()).eq("weight", param.getWeight());
-        if (param.getDevNo() == 536) {
+        Wrapper<LocDetl> wrapper = new EntityWrapper<LocDetl>()
+                .eq("matnr", param.getMatnr())
+                .eq("weight", param.getWeight());
+        if (param.getDevNo() == 536){
             wrapper.eq("model", param.getModel())
-                    .eq("specs", param.getOrderNo());
+                    .eq("specs", param.getOrderNo())
+                    .orderBy("appe_time", true);
+        } else {
+            wrapper.orderBy("batch", true);
         }
 
         List<LocDetl> locDetls = locDetlService.selectList(wrapper);
@@ -1258,11 +1276,16 @@
             Wrapper<LocDetl> locDetlWrapper = new EntityWrapper<LocDetl>().eq("matnr", param.getMatnr())
                     .lt("weight", param.getWeight() + mat.getUnits())
                     .and()
-                    .gt("weight", param.getWeight())
-                    .orderBy("weight", true);
+                    .gt("weight", param.getWeight());
             if (param.getDevNo() == 536){
                 locDetlWrapper.eq("model", param.getModel())
-                        .eq("specs", param.getOrderNo());
+                        .eq("specs", param.getOrderNo())
+                        .orderBy("appe_time", true)
+                        .orderBy("weight", true);
+            } else {
+                locDetlWrapper
+                        .orderBy("batch", true)
+                        .orderBy("weight", true);
             }
             locDetls = locDetlService.selectList(locDetlWrapper);
             if (locDetls.isEmpty()){
@@ -1283,11 +1306,16 @@
             Wrapper<LocDetl> locDetlWrapper = new EntityWrapper<LocDetl>().eq("matnr", param.getMatnr())
                     .gt("weight", param.getWeight() - mat.getUnits())
                     .and()
-                    .lt("weight", param.getWeight())
-                    .orderBy("weight", false);
+                    .lt("weight", param.getWeight());
             if (param.getDevNo() == 536){
                 locDetlWrapper.eq("model", param.getModel())
-                        .eq("specs", param.getOrderNo());
+                        .eq("specs", param.getOrderNo())
+                        .orderBy("appe_time", true)
+                        .orderBy("weight", false);
+            } else {
+                locDetlWrapper
+                        .orderBy("batch", true)
+                        .orderBy("weight", false);
             }
             locDetls = locDetlService.selectList(locDetlWrapper);
 
@@ -1311,12 +1339,48 @@
         if (locDetlArrayList.size()<batchNum){
             throw new CoolException("搴撳瓨鏁伴噺:"+locDetlArrayList.size()+"锛涘皬浜庨渶姹傛暟閲�:"+param.getBatchNum());
         }
+        ArrayList<String> locS = new ArrayList<>();
+
+        ArrayList<LocDetl> locDetlArrayAnd = new ArrayList<>();
+        for (LocDetl locDetl : locDetlArrayList){
+            if (!locS.contains(locDetl.getLocNo())){
+                locDetlArrayAnd.add(locDetl);
+                locS.add(locDetl.getLocNo());
+                if (crnList.contains(1) || crnList.contains(2)){
+                    String singleLoc = Utils.singleLoc(locDetl.getLocNo());
+                    if (Cools.isEmpty(singleLoc)){
+                        log.error("寮傚父搴撲綅鍙凤細"+singleLoc+"锛涜緭鍏ュ簱浣嶅彿锛�"+locDetl.getLocNo());
+                        continue;
+                    }
+                    LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", singleLoc));
+                    if (locMast.getLocSts().equals("F")){
+                        LocDetl locDetl1 = locDetlService.selectOne(new EntityWrapper<LocDetl>().eq("loc_no", singleLoc));
+                        if (Cools.isEmpty(locDetl1)){
+                            throw new CoolException("搴撲綅"+locMast.getLocNo()+"寮傚父锛屽湪搴撲絾鏄棤搴撳瓨锛侊紒锛�");
+                        }
+                        if (!locS.contains(locDetl1.getLocNo())){
+                            if (locDetl1.getMatnr().equals(locDetl.getMatnr())){
+                                locDetlArrayAnd.add(locDetl1);
+                                locS.add(locDetl1.getLocNo());
+                            }
+                        }
+                    }
+                }
+            }
+        }
+
+        if (locDetlArrayAnd.isEmpty()){
+            throw new CoolException("鏈壘鍒扮鍚堟潯浠剁殑鐗╂枡鏄庣粏锛氬搧鍙�==銆媘atnr:"+param.getMatnr()+"锛涢噸閲�==銆媤right:"+param.getWeight());
+        }
+        if (locDetlArrayAnd.size()<batchNum){
+            throw new CoolException("搴撳瓨鏁伴噺:"+locDetlArrayAnd.size()+"锛涘皬浜庨渶姹傛暟閲�:"+param.getBatchNum());
+        }
 
         ArrayList<LocDetl> locDetlArraySou = new ArrayList<>();
 
-        for (LocDetl locDetl : locDetlArrayList){
+        for (LocDetl locDetl : locDetlArrayAnd){
             if (batchNum <= 0){
-                return;
+                break;
             }
             locDetlArraySou.add(locDetl);
             batchNum --;

--
Gitblit v1.9.1