From 1afefd5977ab7e664814debc071891f74ac46e54 Mon Sep 17 00:00:00 2001
From: LSH
Date: 星期一, 23 十月 2023 10:18:45 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/asrs/utils/VersionUtils.java              |  126 +------------
 src/main/java/com/zy/asrs/service/impl/BasCrnpServiceImpl.java |   48 -----
 src/main/java/com/zy/asrs/utils/Utils.java                     |   68 +++++++
 src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java    |    4 
 src/main/java/com/zy/common/service/CommonService.java         |  261 +++++++++++++++-------------
 src/main/resources/application.yml                             |    3 
 6 files changed, 225 insertions(+), 285 deletions(-)

diff --git a/src/main/java/com/zy/asrs/service/impl/BasCrnpServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/BasCrnpServiceImpl.java
index 7b36b86..d1a6e17 100644
--- a/src/main/java/com/zy/asrs/service/impl/BasCrnpServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/BasCrnpServiceImpl.java
@@ -41,7 +41,7 @@
     public boolean checkSiteError(Integer crnNo, boolean pakin) {
         BasCrnp crnp = this.selectById(crnNo);
         if (Cools.isEmpty(crnp)) {
-            log.error("{}鍙峰爢鍨涙満涓嶅瓨鍦�", crnNo);
+//            log.error("{}鍙峰爢鍨涙満涓嶅瓨鍦�", crnNo);
             return false;
         }
         if (crnp.getCrnErr() != null && crnp.getCrnSts() != 3){
@@ -56,52 +56,8 @@
         }
 
         if (pakin) {
-//            //TODO鎺у埗鍏ュ簱鏆傚瓨鏁帮紝闃叉涓诲共閬撳牭濉烇紝2022-5-24 ADD
-//            int staNo = 0;
-//            switch (crnNo){
-//                case 1:
-//                    staNo = 123;
-//                    break;
-//                case 2:
-//                    staNo = 121;
-//                    break;
-//                case 3:
-//                    staNo = 119;
-//                    break;
-//                case 4:
-//                    staNo = 117;
-//                    break;
-//                case 5:
-//                    staNo = 115;
-//                    break;
-//                case 6:
-//                    staNo = 113;
-//                    break;
-//                case 7:
-//                    staNo = 111;
-//                    break;
-//                case 8:
-//                    staNo = 109;
-//                    break;
-//                case 9:
-//                    staNo = 106;
-//                    break;
-//                case 10:
-//                    staNo = 105;
-//                    break;
-//                case 11:
-//                    staNo = 103;
-//                    break;
-//                case 12:
-//                    staNo = 101;
-//                    break;
-//            }
+            //鎺у埗鍏ュ簱鏆傚瓨鏁帮紝闃叉涓诲共閬撳牭濉烇紝2022-10-23 ADD  鏈疄瑁�
 //            int maxCount = 2;
-//            BasDevp devp = basDevpService.selectById(staNo);
-//            if(!Cools.isEmpty(devp)){
-//                maxCount = devp.getInQty();
-//            }
-//
 //            int storeCount = wrkMastService.getStoreCount(crnNo);
 //
 //            if(storeCount >= maxCount){
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 875140f..a526e4c 100644
--- a/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -91,7 +91,7 @@
         // 妫�绱㈠簱浣�
         LocTypeDto locTypeDto = new LocTypeDto(sourceStaNo);
         List<String> matnrs = param.getList().stream().map(FullStoreParam.MatCodeStore::getMatnr).distinct().collect(Collectors.toList());
-        StartupDto dto = commonService.getLocNo(DEFAULT_ROW_NO_TYPE, 1, param.getDevpNo(), matnrs, locTypeDto, 0);
+        StartupDto dto = commonService.getLocNo(DEFAULT_ROW_NO_TYPE, 1, param.getDevpNo(), matnrs.get(0), null, null,locTypeDto,0);
         // 鐢熸垚宸ヤ綔鍙�
         int workNo = dto.getWorkNo();
         // 鐢熸垚宸ヤ綔妗�
@@ -371,7 +371,7 @@
         BasDevp sourceStaNo = basDevpService.checkSiteStatus(devpNo, true);
         // 妫�绱㈠簱浣�
         LocTypeDto locTypeDto = new LocTypeDto(sourceStaNo);
-        StartupDto dto = commonService.getLocNo(DEFAULT_ROW_NO_TYPE, 10, devpNo, null, locTypeDto, 0);
+        StartupDto dto = commonService.getLocNo(DEFAULT_ROW_NO_TYPE, 10, devpNo, null,null,null, locTypeDto, 0);
         int workNo = dto.getWorkNo();
         Date now = new Date();
         // 鐢熸垚宸ヤ綔妗�
diff --git a/src/main/java/com/zy/asrs/utils/Utils.java b/src/main/java/com/zy/asrs/utils/Utils.java
index 99e4a80..6aff3ca 100644
--- a/src/main/java/com/zy/asrs/utils/Utils.java
+++ b/src/main/java/com/zy/asrs/utils/Utils.java
@@ -2,6 +2,7 @@
 
 import com.core.common.Arith;
 import com.core.common.Cools;
+import com.core.exception.CoolException;
 import com.zy.common.properties.SlaveProperties;
 
 import java.text.DecimalFormat;
@@ -195,4 +196,71 @@
         System.out.println(deepRow);
 
     }
+
+    public static boolean BooleanWhsTypeSta(Integer whsType){
+        if (whsType==1){
+            return true;
+        }
+        return false;
+    }
+
+    public static boolean BooleanWhsTypeSta(Integer whsType, Integer staDescId){
+        if (whsType==1 && staDescId!=11 && staDescId!=111){
+            return true;
+        }
+        return false;
+    }
+
+    public static int RowCount(Integer whsType,Integer curRow,Integer crnNumber){
+        return LocNecessaryParameters(whsType, curRow,crnNumber)[0];
+    }
+    public static int getCurRow(Integer whsType,Integer curRow,Integer crnNumber){
+        return LocNecessaryParameters(whsType, curRow,crnNumber)[1];
+    }
+    public static int getCrnNo(Integer whsType,Integer curRow,Integer crnNumber){
+        return LocNecessaryParameters(whsType, curRow,crnNumber)[2];
+    }
+    public static int getNearRow(Integer whsType,Integer curRow,Integer crnNumber){
+        return LocNecessaryParameters(whsType, curRow,crnNumber)[3];
+    }
+
+    //搴撲綅鎺掑彿鍒嗛厤
+    public static int[] LocNecessaryParameters(Integer whsType,Integer curRow,Integer crnNumber){
+        return LocNecessaryParametersDoubleExtension(whsType, curRow,crnNumber);
+    }
+
+    //缁忓吀鍙屼几搴撲綅
+    public static int[] LocNecessaryParametersDoubleExtension(Integer whsType,Integer curRow,Integer crnNumber){
+        int[] necessaryParameters=new int[]{0,0,0,0};
+        if (BooleanWhsTypeSta(whsType)){
+            necessaryParameters[0] = crnNumber;
+            //婊℃澘姝e父鍏ュ簱
+            if (curRow.equals(crnNumber*4)){
+                necessaryParameters[1] = 1;    //curRow   鏈�娣卞簱浣嶆帓
+                necessaryParameters[2] = 1;     //crnNo     鍫嗗灈鏈哄彿
+                necessaryParameters[3] = 2;    //nearRow  鏈�娴呭簱浣嶆帓
+            }else if (curRow.equals(crnNumber*4-3)){
+                necessaryParameters[1] = 4;    //curRow   鏈�娣卞簱浣嶆帓
+                necessaryParameters[2] = 1;     //crnNo     鍫嗗灈鏈哄彿
+                necessaryParameters[3] = 3;    //nearRow  鏈�娴呭簱浣嶆帓
+            }else {
+                curRow=curRow+4;
+                if (curRow<1 || curRow > (crnNumber*4)){
+                    throw new CoolException("搴撲綅鎺掑彿寮傚父锛氭帓鍙凤細"+curRow);
+                }
+                if ((curRow-1)%4==0){
+                    necessaryParameters[1] = curRow;    //curRow   鏈�娣卞簱浣嶆帓
+                    necessaryParameters[2] = (curRow+3)/4;     //crnNo     鍫嗗灈鏈哄彿
+                    necessaryParameters[3] = curRow+1;    //nearRow  鏈�娴呭簱浣嶆帓
+                }else if (curRow%4==0){
+                    necessaryParameters[1] = curRow;    //curRow   鏈�娣卞簱浣嶆帓
+                    necessaryParameters[2] = curRow/4;     //crnNo     鍫嗗灈鏈哄彿
+                    necessaryParameters[3] = curRow-1;    //nearRow  鏈�娴呭簱浣嶆帓
+                }else {
+                    throw new CoolException("搴撲綅鎺掑彿寮傚父锛氭帓鍙凤細"+curRow);
+                }
+            }
+        }
+        return necessaryParameters;
+    }
 }
diff --git a/src/main/java/com/zy/asrs/utils/VersionUtils.java b/src/main/java/com/zy/asrs/utils/VersionUtils.java
index 09ef9c2..bdf8dd8 100644
--- a/src/main/java/com/zy/asrs/utils/VersionUtils.java
+++ b/src/main/java/com/zy/asrs/utils/VersionUtils.java
@@ -10,124 +10,9 @@
  */
 public class VersionUtils {
 
-
-    // 涓氬姟 ----------------------------------------------------------------------
-
-    //    public static void setWrkDetl(WrkDetl wrkDetl, Mat mat) {
-//        wrkDetl.setMatnr(matCode.getMatNo()); // 鐗╂枡缂栧彿
-//        wrkDetl.setMaktx(matCode.getMatName()); // 鐗╂枡鎻忚堪
-//        wrkDetl.setLgnum(matCode.getStr2()); // 瑙勬牸
-//        wrkDetl.setType(matCode.getStr5()); // 鍨嬪彿
-//        wrkDetl.setColor(matCode.getBarcode()); // 鏉$爜
-//        wrkDetl.setSupplier(matCode.getStr6()); // 搴忓垪鐮�
-//        wrkDetl.setWarehouse(matCode.getStr7()); // 鍗曟嵁缂栧彿
-//        wrkDetl.setBrand(matCode.getStr3()); // 鍝侀」鏁�
-//        wrkDetl.setAltme(matCode.getStr1()); // 鍗曚綅
-//        wrkDetl.setBname(matCode.getStr4()); // 瀹㈡埛鍚嶇О
-//    }
-//
-//    public static void setWrkDetl(WrkDetl wrkDetl, LocDetl locDetl) {
-//        wrkDetl.setMatnr(locDetl.getMatnr()); // 鐗╂枡缂栧彿
-//        wrkDetl.setMaktx(locDetl.getMaktx()); // 鐗╂枡鎻忚堪w
-//        wrkDetl.setBatch(locDetl.getBatch());
-//        wrkDetl.setOrderNo(locDetl.getOrderNo());
-//        wrkDetl.setLgnum(locDetl.getLgnum()); // 瑙勬牸
-//        wrkDetl.setType(locDetl.getType()); // 鍨嬪彿
-//        wrkDetl.setColor(locDetl.getColor()); // 鏉$爜
-//        wrkDetl.setSupplier(locDetl.getSupplier()); // 搴忓垪鐮�
-//        wrkDetl.setWarehouse(locDetl.getWarehouse()); // 鍗曟嵁缂栧彿
-//        wrkDetl.setBrand(locDetl.getBrand()); // 鍝侀」鏁�
-//        wrkDetl.setAltme(locDetl.getAltme()); // 鍗曚綅
-//        wrkDetl.setBname(locDetl.getBname()); // 瀹㈡埛鍚嶇О
-//        wrkDetl.setZpallet(locDetl.getZpallet()); // 鎵樼洏鏉$爜
-//    }
-//
-//    public static void setLocDetl(LocDetl locDetl, MatCode matCode) {
-//        locDetl.setMatnr(matCode.getMatNo()); // 鐗╂枡缂栧彿
-//        locDetl.setMaktx(matCode.getMatName()); // 鐗╂枡鎻忚堪
-//        locDetl.setLgnum(matCode.getStr2()); // 瑙勬牸
-//        locDetl.setType(matCode.getStr5()); // 鍨嬪彿
-//        locDetl.setColor(matCode.getBarcode()); // 鏉$爜
-//        locDetl.setSupplier(matCode.getStr6()); // 搴忓垪鐮�
-//        locDetl.setWarehouse(matCode.getStr7()); // 鍗曟嵁缂栧彿
-//        locDetl.setBrand(matCode.getStr3()); // 鍝侀」鏁�
-//        locDetl.setAltme(matCode.getStr1()); // 鍗曚綅
-//        locDetl.setBname(matCode.getStr4()); // 瀹㈡埛鍚嶇О
-//    }
-//
-//    public static void setLocDetl(LocDetl locDetl, WrkDetl wrkDetl) {
-//        locDetl.setMatnr(wrkDetl.getMatnr()); // 鐗╂枡缂栧彿
-//        locDetl.setMaktx(wrkDetl.getMaktx()); // 鐗╂枡鎻忚堪
-//        locDetl.setBatch(wrkDetl.getBatch());
-//        locDetl.setOrderNo(wrkDetl.getOrderNo());
-//        locDetl.setLgnum(wrkDetl.getLgnum()); // 瑙勬牸
-//        locDetl.setType(wrkDetl.getType()); // 鍨嬪彿
-//        locDetl.setColor(wrkDetl.getColor()); // 鏉$爜
-//        locDetl.setSupplier(wrkDetl.getSupplier()); // 搴忓垪鐮�
-//        locDetl.setWarehouse(wrkDetl.getWarehouse()); // 鍗曟嵁缂栧彿
-//        locDetl.setBrand(wrkDetl.getBrand()); // 鍝侀」鏁�
-//        locDetl.setAltme(wrkDetl.getAltme()); // 鍗曚綅
-//        locDetl.setBname(wrkDetl.getBname()); // 瀹㈡埛鍚嶇О
-//        locDetl.setZpallet(wrkDetl.getZpallet()); // 鎵樼洏鏉$爜
-//    }
-//
-//    public static void setWaitPakIn(WaitPakin waitPakIn, MatCode matCode) {
-//        waitPakIn.setMatnr(matCode.getMatNo()); // 鐗╂枡缂栧彿
-//        waitPakIn.setMaktx(matCode.getMatName()); // 鐗╂枡鎻忚堪
-//        waitPakIn.setLgnum(matCode.getStr2()); // 瑙勬牸
-//        waitPakIn.setType(matCode.getStr5()); // 鍨嬪彿
-//        waitPakIn.setColor(matCode.getBarcode()); // 鏉$爜
-//        waitPakIn.setSupplier(matCode.getStr6()); // 搴忓垪鐮�
-//        waitPakIn.setWarehouse(matCode.getStr7()); // 鍗曟嵁缂栧彿
-//        waitPakIn.setBrand(matCode.getStr3()); // 鍝侀」鏁�
-//        waitPakIn.setAltme(matCode.getStr1()); // 鍗曚綅
-//        waitPakIn.setBname(matCode.getStr4()); // 瀹㈡埛鍚嶇О
-//    }
-//
-//    public static void setOrderDetl(OrderDetl orderDetl, MatCode matCode) {
-//        orderDetl.setMatnr(matCode.getMatNo()); // 鐗╂枡缂栧彿
-//        orderDetl.setMaktx(matCode.getMatName()); // 鐗╂枡鎻忚堪
-//        orderDetl.setSpecs(matCode.getStr2()); // 瑙勬牸
-//        orderDetl.setSupplier(matCode.getStr6()); // 搴忓垪鐮�
-//    }
-//
-//    public static void setWaitPakIn(WaitPakin waitPakIn, OrderDetl orderDetl) {
-//        waitPakIn.setMatnr(orderDetl.getMatnr()); // 鐗╂枡缂栧彿
-//        waitPakIn.setMaktx(orderDetl.getMaktx()); // 鐗╂枡鎻忚堪
-//        waitPakIn.setBatch(orderDetl.getBatch());
-//        waitPakIn.setOrderNo(orderDetl.getOrderNo());
-//        waitPakIn.setLgnum(orderDetl.getSpecs()); // 瑙勬牸
-//        waitPakIn.setType(orderDetl.getModel()); // 鍨嬪彿
-//        waitPakIn.setSupplier(orderDetl.getSupplier()); // 搴忓垪鐮�
-//        waitPakIn.setAltme(orderDetl.getUnit()); // 鍗曚綅
-//    }
-//
-//    public static void setWrkDetl(WrkDetl wrkDetl, OrderDetl orderDetl) {
-//        wrkDetl.setMatnr(orderDetl.getMatnr()); // 鐗╂枡缂栧彿
-//        wrkDetl.setMaktx(orderDetl.getMaktx()); // 鐗╂枡鎻忚堪
-//        wrkDetl.setBatch(orderDetl.getBatch());
-//        wrkDetl.setOrderNo(orderDetl.getOrderNo());
-//        wrkDetl.setLgnum(orderDetl.getSpecs()); // 瑙勬牸
-//        wrkDetl.setType(orderDetl.getModel()); // 鍨嬪彿
-//        wrkDetl.setSupplier(orderDetl.getSupplier()); // 搴忓垪鐮�
-//        wrkDetl.setAltme(orderDetl.getUnit()); // 鍗曚綅
-//    }
-    public static void setPakin(Pakin pakin, Mat mat) {
-        pakin.setMatnr(mat.getMatnr());
-        pakin.setMaktx(mat.getMaktx());
-        pakin.setName(mat.getName());
-        pakin.setSpecs(mat.getSpecs());
-        pakin.setModel(mat.getModel());
-        pakin.setUnit(mat.getUnit());
-        pakin.setBarcode(mat.getBarcode());
-        pakin.setItemNum(Integer.valueOf(mat.getItemNum()));
-        pakin.setPrice(mat.getPrice());
-        pakin.setWeight(mat.getWeight());
-    }
-
-
     /**
      * 搴撲綅绉昏浆鏃剁被鍨嬫娴�
+     * 鍏煎鐗�
      **/
     public static boolean locMoveCheckLocType(LocMast loc, LocTypeDto dto) {
         // 濡傛灉婧愬簱浣嶆槸楂樺簱浣嶏紝鐩爣搴撲綅鏄綆搴撲綅
@@ -137,4 +22,13 @@
         return true;
     }
 
+    /**
+     * 绫诲瀷妫�娴�
+     * 瀹屽叏妫�娴�
+     **/
+    public static boolean locMoveCheckLocTypeComplete(LocMast loc, LocTypeDto dto) {
+        // 濡傛灉婧愬簱浣嶆槸楂樺簱浣嶏紝鐩爣搴撲綅鏄綆搴撲綅
+        return dto.getLocType1().equals(loc.getLocType1());
+    }
+
 }
diff --git a/src/main/java/com/zy/common/service/CommonService.java b/src/main/java/com/zy/common/service/CommonService.java
index 0423184..e851ca8 100644
--- a/src/main/java/com/zy/common/service/CommonService.java
+++ b/src/main/java/com/zy/common/service/CommonService.java
@@ -90,47 +90,88 @@
     /**
      * 妫�绱㈠簱浣嶅彿
      * @param whsType 绫诲瀷 1:鍙屾繁寮忚揣鏋�
-     * @param staDescId 璺緞宸ヤ綔绫诲瀷
+     * @param staDescId 璺緞ID
      * @param sourceStaNo 婧愮珯
-     * @param matNos 鍟嗗搧缂栧彿闆嗗悎
+     * @param matnr 鐗╂枡鍙烽泦鍚�
      * @return locNo 妫�绱㈠埌鐨勫簱浣嶅彿
      */
     @Transactional
-    public StartupDto getLocNo(Integer whsType, Integer staDescId, Integer sourceStaNo, List<String> matNos, LocTypeDto locTypeDto, int times) {
+    public StartupDto getLocNo(Integer whsType, Integer staDescId, Integer sourceStaNo, String matnr, String batch,String grade,LocTypeDto locTypeDto, int times) {
+        if (Cools.isEmpty(matnr)){  //鐗╂枡鍙�
+            matnr="";
+        }
+        if (Cools.isEmpty(batch)){  //绠卞彿
+            batch="";
+        }
+        if (Cools.isEmpty(grade)){  //澶囩敤
+            grade="";
+        }
 
-        if (sourceStaNo < 200){
-            whsType = 1;
-        } else if (sourceStaNo > 199 && sourceStaNo < 300){
-            whsType = 2;
-        } else if (sourceStaNo > 299){
-            whsType = 3;
-        }
-        // 鐩爣鍫嗗灈鏈哄彿
-        int crnNo = whsType;
-        if (!basCrnpService.checkSiteError(crnNo, true)){
-            throw new CoolException("娌℃湁鍙敤鐨勫爢鍨涙満");
-        }
+        // 鍒濆鍖栧弬鏁�
+        int crnNo = 0;      //鍫嗗灈鏈哄彿
+        int nearRow = 0;    //鏈�娴呭簱浣嶆帓
+        int curRow = 0;     //鏈�娣卞簱浣嶆帓
+        int rowCount = 0;   //杞杞
+        LocMast locMast = null;     // 鐩爣搴撲綅
 
         StartupDto startupDto = new StartupDto();
-
         RowLastno rowLastno = rowLastnoService.selectById(whsType);
+        int sRow = rowLastno.getsRow();
+        int eRow = rowLastno.geteRow();
+        int crnNumber = rowLastno.getCrnQty();
+
         if (Cools.isEmpty(rowLastno)) {
             throw new CoolException("鏁版嵁寮傚父锛岃鑱旂郴绠$悊鍛�");
         }
-
         // ===============>>>> 寮�濮嬫墽琛�
-        int curRow = rowLastno.getCurrentRow();
-        int sRow = rowLastno.getsRow();
-        int eRow = rowLastno.geteRow();
-        int crn_qty = rowLastno.getCrnQty();
-        int rowCount = eRow - sRow + 1;
+        curRow = rowLastno.getCurrentRow();
 
-        // 鐩爣搴撲綅
-        LocMast locMast = null;
+        int[] locNecessaryParameters  = Utils.LocNecessaryParameters(whsType, curRow,crnNumber);
+        rowCount=locNecessaryParameters[0];
+        curRow=locNecessaryParameters[1];
+        crnNo=locNecessaryParameters[2];
+        nearRow=locNecessaryParameters[3];
+        if (!basCrnpService.checkSiteError(crnNo,true)){  //姝ょ▼搴忕敤浜庝紭鍖栧爢鍨涙満寮傚父鏃剁殑杩愯鏃堕棿
+            times++;
+            for (int i=times;i<Utils.RowCount(whsType,curRow,crnNumber);i++){
+                locNecessaryParameters  = Utils.LocNecessaryParameters(whsType, curRow,crnNumber);
+                rowCount=locNecessaryParameters[0];
+                curRow=locNecessaryParameters[1];
+                crnNo=locNecessaryParameters[2];
+                nearRow=locNecessaryParameters[3];
+                if (basCrnpService.checkSiteError(crnNo,true)){
+                    break;
+                }else {
+                    times++;
+                }
+            }
+            if (times==Utils.RowCount(whsType,curRow,crnNumber)){
+                throw new CoolException("鏃犲彲鐢ㄥ爢鍨涙満");
+            }
+        }
 
-        // 闈犺繎鎽嗘斁瑙勫垯 --- 鍚屽ぉ鍚岃鏍肩墿鏂�
-        if (!Cools.isEmpty(matNos)) {
-            List<String> locNos = locDetlService.getSameDetlToday(matNos.get(0), sRow, eRow);
+//        // 闈犺繎鎽嗘斁瑙勫垯 --- 鍚屽ぉ鍚岃鏍肩墿鏂� //鍒嗙鐗�
+//        if (!Cools.isEmpty(matnr) &&  (staDescId == 1 || staDescId == 11 || staDescId == 111)) {
+//            List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>().eq("row1", nearRow).eq("loc_sts", "O"));
+//            for (LocMast locMast1:locMasts){
+//                if (VersionUtils.locMoveCheckLocTypeComplete(locMast1, locTypeDto)) {
+//                    continue;
+//                }
+//                String shallowLoc = Utils.getDeepLoc(slaveProperties,locMast1.getLocNo());
+//                LocMast locMast2 = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no",shallowLoc));
+//                if (!Cools.isEmpty(locMast2) && locMast2.getLocSts().equals("F")){
+//                    LocDetl locDetl = locDetlService.selectOne(new EntityWrapper<LocDetl>().eq("loc_no", locMast2.getLocNo()));
+//                    if (!Cools.isEmpty(locDetl) && matnr.equals(locDetl.getMatnr())) {
+//                        locMast = locMast1;
+//                        break;
+//                    }
+//                }
+//            }
+//        }
+
+        // 闈犺繎鎽嗘斁瑙勫垯 --- 鍚屽ぉ鍚岃鏍肩墿鏂� //浜掗�氱増
+        if (!Cools.isEmpty(matnr) && (staDescId == 1 || staDescId == 11 || staDescId == 111)) {
+            List<String> locNos = locDetlService.getSameDetlToday(matnr, sRow, eRow);
             for (String locNo : locNos) {
                 if (Utils.isShallowLoc(slaveProperties, locNo)) {
                     continue;
@@ -139,9 +180,10 @@
                 // 妫�娴嬬洰鏍囧簱浣嶆槸鍚︿负绌哄簱浣�
                 LocMast shallowLoc = locMastService.selectById(shallowLocNo);
                 if (shallowLoc != null && shallowLoc.getLocSts().equals("O")) {
-                    if (VersionUtils.locMoveCheckLocType(shallowLoc, locTypeDto)) {
+                    if (VersionUtils.locMoveCheckLocTypeComplete(shallowLoc, locTypeDto)) {
                         if (basCrnpService.checkSiteError(shallowLoc.getCrnNo(), true)) {
                             locMast = shallowLoc;
+                            crnNo = locMast.getCrnNo();
                             break;
                         }
                     }
@@ -149,7 +191,23 @@
             }
         }
 
-        // 闈犺繎鎽嗘斁瑙勫垯 --- 绌烘墭
+//        // 闈犺繎鎽嗘斁瑙勫垯 --- 绌烘墭  //鍒嗙鐗�
+//        if (staDescId == 10) {
+//            List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>().eq("row1", nearRow).eq("loc_sts", "O"));
+//            for (LocMast locMast1:locMasts){
+//                if (VersionUtils.locMoveCheckLocTypeComplete(locMast1, locTypeDto)) {
+//                    continue;
+//                }
+//                String shallowLoc = Utils.getDeepLoc(slaveProperties,locMast1.getLocNo());
+//                LocMast locMast2 = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no",shallowLoc));
+//                if (!Cools.isEmpty(locMast2) && locMast2.getLocSts().equals("D")){
+//                    locMast = locMast1;
+//                    break;
+//                }
+//            }
+//        }
+
+        // 闈犺繎鎽嗘斁瑙勫垯 --- 绌烘墭 //浜掗�氱増
         if (staDescId == 10) {
             List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>().eq("loc_sts", "D").ge("row1", sRow).le("row1", eRow));
             if (locMasts.size() > 0) {
@@ -161,88 +219,83 @@
                     // 妫�娴嬬洰鏍囧簱浣嶆槸鍚︿负绌哄簱浣�
                     LocMast shallowLoc = locMastService.selectById(shallowLocNo);
                     if (shallowLoc != null && shallowLoc.getLocSts().equals("O")) {
-                        if (basCrnpService.checkSiteError(shallowLoc.getCrnNo(), true)) {
-                            locMast = shallowLoc;
-                            break;
+                        if (VersionUtils.locMoveCheckLocTypeComplete(shallowLoc, locTypeDto)) {
+                            if (basCrnpService.checkSiteError(shallowLoc.getCrnNo(), true)) {
+                                locMast = shallowLoc;
+                                crnNo = locMast.getCrnNo();
+                                break;
+                            }
                         }
                     }
                 }
             }
         }
 
-        // 濡傛灉娌℃湁鐩歌繎鐗╂枡锛屽垯鎸夎鍒欒疆璇㈣揣鏋�
-        if (null == locMast){
-            curRow = getCurRow(curRow);
-        }
+        Wrapper<StaDesc> wrapper = null;
+        StaDesc staDesc = null;
+        BasDevp staNo = null;
 
-        // 鑾峰彇鐩爣绔�
-        Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>()
-                .eq("type_no", staDescId)
-                .eq("stn_no", sourceStaNo)
-                .eq("crn_no", crnNo);
-        StaDesc staDesc = staDescService.selectOne(wrapper);
-        if (Cools.isEmpty(staDesc)) {
-            log.error("type_no={},stn_no={},crn_no={}", staDescId, sourceStaNo, crnNo);
-            throw new CoolException("鍏ュ簱璺緞涓嶅瓨鍦�");
-        }
-        BasDevp staNo = basDevpService.selectById(staDesc.getCrnStn());
-        if (!staNo.getAutoing().equals("Y")) {
-            throw new CoolException("鐩爣绔�"+staDesc.getCrnStn()+"涓嶅彲鐢�");
+        if (Utils.BooleanWhsTypeSta(whsType,staDescId)){
+            // 鑾峰彇鐩爣绔�
+            wrapper = new EntityWrapper<StaDesc>()
+                    .eq("type_no", staDescId)
+                    .eq("stn_no", sourceStaNo)
+                    .eq("crn_no", crnNo);
+            staDesc = staDescService.selectOne(wrapper);
+            if (Cools.isEmpty(staDesc)) {
+                log.error("type_no={},stn_no={},crn_no={}", staDescId, sourceStaNo, crnNo);
+//                throw new CoolException("鍏ュ簱璺緞涓嶅瓨鍦�");
+                crnNo=0;
+            }
+            staNo = basDevpService.selectById(staDesc.getCrnStn());
+            if (!staNo.getAutoing().equals("Y")) {
+//                throw new CoolException("鐩爣绔�"+staDesc.getCrnStn()+"涓嶅彲鐢�");
+                crnNo=0;
+            }
+            startupDto.setStaNo(staNo.getDevNo());
         }
 
         // 鏇存柊搴撲綅鎺掑彿
-        rowLastno.setCurrentRow(curRow);
-        rowLastnoService.updateById(rowLastno);
+        if (Utils.BooleanWhsTypeSta(whsType,staDescId)){
+            rowLastno.setCurrentRow(curRow);
+            rowLastnoService.updateById(rowLastno);
+        }
 
         // 寮�濮嬫煡鎵惧簱浣� ==============================>>
 
-        // 1.褰撴绱㈠簱鎺掍负娴呭簱浣嶆帓鏃讹紝浼樺厛瀵绘壘褰撳墠搴撴帓鐨勬繁搴撲綅鎺�
-        if (locMast == null) {
-            if ( Utils.isShallowLoc(slaveProperties, curRow)) {
-                Integer deepRow = Utils.getDeepRow(slaveProperties, curRow);
-                locMast = locMastService.queryFreeLocMast(deepRow, locTypeDto.getLocType1());
-                // todo:luxiaotao 濡傛灉鐢ㄦ祬鎺掓壘鍒扮殑娣卞簱浣嶏紝閭d箞鍒欓渶瑕佸垽鏂繖涓繁搴撲綅瀵瑰簲鐨勬祬搴撲綅鏄惁鏈夎揣锛團銆乆銆丏锛�
-                // 鍥犲簱浣嶇Щ杞�侀渶棰勭暀绌哄簱浣�
-                if (!locMastService.checkEmptyCount(locMast)) {
-                    locMast = null;
+        // 1.鎸夎鍒欐煡鎵惧簱浣�
+        if (Cools.isEmpty(locMast) && crnNo!=0){
+            List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>().eq("row1", nearRow).eq("loc_sts", "O"));
+            for (LocMast locMast1:locMasts){
+                if (VersionUtils.locMoveCheckLocTypeComplete(locMast1, locTypeDto)) {
+                    continue;
                 }
-            }
-            if (Cools.isEmpty(locMast)) {
-                locMast = locMastService.queryFreeLocMast(curRow, locTypeDto.getLocType1());
-                // 鍥犲簱浣嶇Щ杞�侀渶棰勭暀绌哄簱浣�
-                if (!locMastService.checkEmptyCount(locMast)) {
-                    locMast = null;
-                }
-                // 鐩爣搴撲綅 ===>> 娴呭簱浣嶏紝 鍒欐牎楠屽叾娣卞簱浣嶆槸鍚︿负 F D X
-                if (null != locMast && Utils.isShallowLoc(slaveProperties, locMast.getLocNo())) {
-                    LocMast deepLoc = locMastService.selectById(Utils.getDeepLoc(slaveProperties, locMast.getLocNo()));
-                    if (!deepLoc.getLocSts().equals("F") && !deepLoc.getLocSts().equals("D") && !deepLoc.getLocSts().equals("X")) {
-                        locMast = null;
-                    }
-                }
-                // 鐩爣搴撲綅 ===>> 娣卞簱浣嶏紝 鍒欐牎楠屽叾娴呭簱浣嶆槸鍚︿负 O
-                if (null != locMast && Utils.isDeepLoc(slaveProperties, locMast.getLocNo())) {
-                    LocMast shallowLoc = locMastService.selectById(Utils.getShallowLoc(slaveProperties, locMast.getLocNo()));
-                    if (!shallowLoc.getLocSts().equals("O")) {
-                        locMast = null;
-                    }
+                String shallowLoc = Utils.getDeepLoc(slaveProperties,locMast1.getLocNo());
+                LocMast locMast2 = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no",shallowLoc).eq("loc_sts","O"));
+                if (!Cools.isEmpty(locMast2)){
+                    locMast = locMast2;
+                    break;
                 }
             }
         }
 
-        // 2.搴撲綅褰撳墠鎵�灞炲昂瀵告棤绌哄簱浣嶆椂锛岃皟鏁村昂瀵稿弬鏁帮紝鍚戜笂鍏煎妫�绱㈠簱浣�
-        if (Cools.isEmpty(locMast)) {
+        if (!Cools.isEmpty(locMast) && !basCrnpService.checkSiteError(crnNo,true)){
+            locMast = null;
+        }
+
+        // 閫掑綊鏌ヨ
+        if (Cools.isEmpty(locMast)  || !locMast.getLocSts().equals("O")) {
             // 褰撳墠宸烽亾鏃犵┖搴撲綅鏃讹紝閫掑綊璋冩暣鑷充笅涓�宸烽亾锛屾绱㈠叏閮ㄥ贩閬撴棤鏋滃悗锛岃烦鍑洪�掑綊
             if (times < rowCount) {
                 times = times + 1;
-                return getLocNo(1, staDescId, sourceStaNo, matNos, locTypeDto, times);
+                return getLocNo(1, staDescId, sourceStaNo, matnr,batch,grade, locTypeDto, times);
             }
-
-            // 杞昏揣鐗╂壘杞诲簱浣嶄负绌烘椂锛屽彲浠ュ幓鎵鹃噸搴撲綅浠�
-            if (locTypeDto.getLocType1() == 1) {
-                locTypeDto.setLocType1((short) 2);
-                return getLocNo(1, staDescId, sourceStaNo, matNos, locTypeDto, times);
-            }
+//            // 2.搴撲綅褰撳墠鎵�灞炲昂瀵告棤绌哄簱浣嶆椂锛岃皟鏁村昂瀵稿弬鏁帮紝鍚戜笂鍏煎妫�绱㈠簱浣�
+//            if (locTypeDto.getLocType1() < 2) {
+//                int i = locTypeDto.getLocType1() + 1;
+//                locTypeDto.setLocType1((short)i);
+//                return getLocNo(1, staDescId, sourceStaNo, matnr,batch,grade, locTypeDto, times);
+//            }
             log.error("绯荤粺娌℃湁绌哄簱浣嶏紒锛侊紒 灏哄瑙勬牸锛� {}锛� 杞娆℃暟锛歿}", JSON.toJSONString(locTypeDto), times);
             throw new CoolException("娌℃湁绌哄簱浣�");
         }
@@ -254,37 +307,7 @@
         startupDto.setWorkNo(workNo);
         startupDto.setCrnNo(crnNo);
         startupDto.setSourceStaNo(sourceStaNo);
-        startupDto.setStaNo(staNo.getDevNo());
         startupDto.setLocNo(locNo);
         return startupDto;
-    }
-
-
-    public static String zerofill(String msg, Integer count) {
-        if (msg.length() == count) {
-            return msg;
-        } else if (msg.length() > count) {
-            return msg.substring(0, 16);
-        } else {
-            StringBuilder msgBuilder = new StringBuilder(msg);
-            for(int i = 0; i < count - msg.length(); ++i) {
-                msgBuilder.insert(0, "0");
-            }
-            return msgBuilder.toString();
-        }
-    }
-
-    /**
-     * 鏍规嵁鍏ュ簱绔欒幏鍙栧簱浣嶆帓鍙峰垎閰�
-     */
-    private Integer getCurRow(Integer curRow) {
-        if (Utils.isDeepLocLeft(slaveProperties,curRow)){
-            curRow=curRow+3;
-        }else if (Utils.isDeepLocLeft(slaveProperties,curRow-1)){
-            curRow=curRow+1;
-        }else {
-            curRow=curRow-2;
-        }
-        return curRow;
     }
 }
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index e146ccf..704666e 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -50,7 +50,6 @@
   # 鍙屾繁
   doubleDeep: true
   # 鍙屾繁搴撲綅鎺掑彿
-#  doubleLocs: 1,4,11,14,21,24
   doubleLocs: 1,4,5,8,9,12,13,16
   # 涓�涓爢鍨涙満璐熻矗鐨勮揣鏋舵帓鏁�
   groupCount: 4
@@ -67,7 +66,7 @@
   #  寮�鍏�
   switch:
     #鑾峰彇鍗曟嵁寮�鍏�
-    InboundOrderSwitch: false
+    InboundOrderSwitch: true
     #鐧诲綍鎺ュ彛寮�鍏�
     LoginAuthenticationSwitch: false
     #涓婃姤銆佸鏍稿崟鎹紑鍏�

--
Gitblit v1.9.1