From 1c4c580c21a8f721c85f8725ee5f2e699228b40e Mon Sep 17 00:00:00 2001
From: LSH
Date: 星期二, 27 二月 2024 16:52:45 +0800
Subject: [PATCH] #

---
 src/main/resources/mapper/RowLastnoMapper.xml      |    5 +
 src/main/java/com/zy/asrs/utils/Utils.java         |  120 +++++++++++++++++------
 src/main/java/com/zy/common/web/WcsController.java |   60 ++++++++++++
 src/main/java/com/zy/asrs/entity/RowLastno.java    |   74 ++++++++++++++
 4 files changed, 226 insertions(+), 33 deletions(-)

diff --git a/src/main/java/com/zy/asrs/entity/RowLastno.java b/src/main/java/com/zy/asrs/entity/RowLastno.java
index 292294b..5414062 100644
--- a/src/main/java/com/zy/asrs/entity/RowLastno.java
+++ b/src/main/java/com/zy/asrs/entity/RowLastno.java
@@ -100,6 +100,41 @@
     @TableField("limint_loc")
     private Integer limintLoc;
 
+    /**
+     * 璧峰鍫嗗灈鏈哄彿
+     */
+    @ApiModelProperty(value= "璧峰鎺掑彿")
+    @TableField("s_crn_no")
+    private Integer sCrnNo;
+
+    /**
+     * 缁堟鍫嗗灈鏈哄彿
+     */
+    @ApiModelProperty(value= "缁堟鎺掑彿")
+    @TableField("e_crn_no")
+    private Integer eCrnNo;
+
+    /**
+     * 鏍囪绫诲埆锛堟槸鍚﹁緭閫佺嚎浜掗�氾級
+     */
+    @ApiModelProperty(value= "鏍囪绫诲埆")
+    @TableField("sign_type")
+    private Integer signType;
+
+    /**
+     * 鏄惁鍚敤鍏跺畠鏍囪绫诲埆  0:鍏抽棴   1锛氭墦寮�
+     */
+    @ApiModelProperty(value= "鏄惁鍚敤鍏跺畠鏍囪绫诲埆")
+    @TableField("sign_type_other")
+    private Integer signTypeOther;
+
+    /**
+     * 鍏跺畠鏍囪绫诲埆锛堟槸鍚﹁緭閫佺嚎浜掗�氾級
+     */
+    @ApiModelProperty(value= "鍏跺畠鏍囪绫诲埆")
+    @TableField("sign_type_other_boolean")
+    private String signTypeOtherBoolean;
+
     public RowLastno() {}
 
     public RowLastno(String wrkMk,Integer currentRow,Integer sRow,Integer eRow,Integer crnQty,String memo,Long modiUser,Date modiTime,Long appeUser,Date appeTime,Integer limintLoc) {
@@ -258,5 +293,44 @@
         this.limintLoc = limintLoc;
     }
 
+    public Integer getsCrnNo() {
+        return sCrnNo;
+    }
+
+    public void setsCrnNo(Integer sCrnNo) {
+        this.sCrnNo = sCrnNo;
+    }
+
+    public Integer geteCrnNo() {
+        return eCrnNo;
+    }
+
+    public void seteCrnNo(Integer eCrnNo) {
+        this.eCrnNo = eCrnNo;
+    }
+
+    public Integer getSignType() {
+        return signType;
+    }
+
+    public void setSignType(Integer signType) {
+        this.signType = signType;
+    }
+
+    public Integer getSignTypeOther() {
+        return signTypeOther;
+    }
+
+    public void setSignTypeOther(Integer signTypeOther) {
+        this.signTypeOther = signTypeOther;
+    }
+
+    public String getSignTypeOtherBoolean() {
+        return signTypeOtherBoolean;
+    }
+
+    public void setSignTypeOtherBoolean(String signTypeOtherBoolean) {
+        this.signTypeOtherBoolean = signTypeOtherBoolean;
+    }
 
 }
diff --git a/src/main/java/com/zy/asrs/utils/Utils.java b/src/main/java/com/zy/asrs/utils/Utils.java
index 2adeca1..6f8e8ce 100644
--- a/src/main/java/com/zy/asrs/utils/Utils.java
+++ b/src/main/java/com/zy/asrs/utils/Utils.java
@@ -2,10 +2,14 @@
 
 import com.core.common.Arith;
 import com.core.common.Cools;
+import com.core.common.SpringUtils;
 import com.core.exception.CoolException;
 import com.zy.asrs.entity.LocMast;
+import com.zy.asrs.entity.RowLastno;
+import com.zy.asrs.service.RowLastnoService;
 import com.zy.common.model.LocDetlDto;
 import com.zy.common.properties.SlaveProperties;
+import com.zy.system.service.UserService;
 
 import java.text.DecimalFormat;
 import java.util.ArrayList;
@@ -227,6 +231,13 @@
             case 130:
             case 125:
                 return 5;
+            case 204:
+            case 273:
+            case 274:
+            case 275:
+            case 230:
+            case 225:
+                return 2;
             default:
                 return 0;
         }
@@ -274,12 +285,12 @@
         switch (whsType){
             case 1://缁忓吀鍙屼几搴撲綅
                 return LocNecessaryParametersDoubleExtension(whsType, curRow, crnNumber); //宸插畬鍠�
-//            case 2://缁忓吀鍗曚几搴撲綅
-//                return LocNecessaryParametersDoubleExtension1(whsType, curRow, crnNumber); //鏈畬鍠�
+            case 2://缁忓吀鍗曚几搴撲綅
+                return LocNecessaryParametersDoubleExtension2(whsType, curRow, crnNumber); //鏈畬鍠�
 //            case 3://缁忓吀鍗曞弻浼稿簱浣�  宸﹀崟鍙冲弻
-//                return LocNecessaryParametersDoubleExtension2(whsType, curRow, crnNumber); //鏈畬鍠�
-//            case 4://缁忓吀鍗曞弻浼稿簱浣�  宸﹀弻鍙冲崟
 //                return LocNecessaryParametersDoubleExtension3(whsType, curRow, crnNumber); //鏈畬鍠�
+//            case 4://缁忓吀鍗曞弻浼稿簱浣�  宸﹀弻鍙冲崟
+//                return LocNecessaryParametersDoubleExtension4(whsType, curRow, crnNumber); //鏈畬鍠�
             case 5://鍙屽伐浣嶅崟浼稿簱浣�
                 return LocNecessaryParametersDoubleExtension5(whsType, curRow, crnNumber); //鏈畬鍠�
             default:
@@ -289,6 +300,61 @@
 
     //缁忓吀鍙屼几搴撲綅
     public static int[] LocNecessaryParametersDoubleExtension(Integer whsType, Integer curRow, Integer crnNumber) {
+        int[] necessaryParameters = new int[]{0, 0, 0, 0};
+        RowLastnoService rowLastnoService = SpringUtils.getBean(RowLastnoService.class);
+        RowLastno rowLastno = rowLastnoService.selectById(whsType);
+        Integer sRow = rowLastno.getsRow();
+        Integer sCrnNo = rowLastno.getsCrnNo();
+        if (BooleanWhsTypeSta(whsType)) {
+            necessaryParameters[0] = crnNumber; // 杞娆℃暟
+            //婊℃澘姝e父鍏ュ簱
+            if (curRow.equals(crnNumber * 4 + sRow - 1)) {
+                necessaryParameters[1] = sRow;    //curRow   鏈�娣卞簱浣嶆帓
+                necessaryParameters[2] = sCrnNo;     //crnNo     鍫嗗灈鏈哄彿
+                necessaryParameters[3] = sRow+1;    //nearRow  鏈�娴呭簱浣嶆帓
+            } else if (curRow.equals(crnNumber * 4 - 3 + sRow - 1)) {
+                necessaryParameters[1] = sRow+3;    //curRow   鏈�娣卞簱浣嶆帓
+                necessaryParameters[2] = sCrnNo;     //crnNo     鍫嗗灈鏈哄彿
+                necessaryParameters[3] = sRow+2;    //nearRow  鏈�娴呭簱浣嶆帓
+            } else {
+                curRow = curRow + 4;
+                if (curRow <  sRow || curRow > (crnNumber * 4 + sRow - 1)) {
+                    throw new CoolException("搴撲綅鎺掑彿寮傚父锛氭帓鍙凤細" + curRow);
+                }
+                if ((curRow - sRow) % 4 == 0) {
+                    necessaryParameters[1] = curRow;    //curRow   鏈�娣卞簱浣嶆帓
+                    necessaryParameters[2] = (curRow - sRow + 2) / 4 + sCrnNo - 1;     //crnNo     鍫嗗灈鏈哄彿
+                    necessaryParameters[3] = curRow + 1;    //nearRow  鏈�娴呭簱浣嶆帓
+                } else if ((curRow - sRow + 1) % 4 == 0) {
+                    necessaryParameters[1] = curRow;    //curRow   鏈�娣卞簱浣嶆帓
+                    necessaryParameters[2] = (curRow - sRow + 1) / 4 + sCrnNo - 1;     //crnNo     鍫嗗灈鏈哄彿
+                    necessaryParameters[3] = curRow - 1;    //nearRow  鏈�娴呭簱浣嶆帓
+                } else {
+                    throw new CoolException("搴撲綅鎺掑彿寮傚父锛氭帓鍙凤細" + curRow);
+                }
+            }
+        }
+        return necessaryParameters;
+    }
+
+    //缁忓吀鍙屼几搴撲綅绉诲簱
+    public static int[] LocNecessaryParametersMove(Integer whsType, Integer curRow, Integer moveCrnNo) {
+        int[] necessaryParameters = new int[]{0, 0, 0, 0};
+        necessaryParameters[0] = 2; // 杞娆℃暟
+        if (curRow.equals(moveCrnNo*4-2)){
+            necessaryParameters[1] = curRow+2;    //curRow   鏈�娣卞簱浣嶆帓
+            necessaryParameters[2] = moveCrnNo;     //crnNo     鍫嗗灈鏈哄彿
+            necessaryParameters[3] = curRow+1;    //nearRow  鏈�娴呭簱浣嶆帓
+        }else {
+            necessaryParameters[1] = curRow-2;    //curRow   鏈�娣卞簱浣嶆帓
+            necessaryParameters[2] = moveCrnNo;     //crnNo     鍫嗗灈鏈哄彿
+            necessaryParameters[3] = curRow-1;    //nearRow  鏈�娴呭簱浣嶆帓
+        }
+        return necessaryParameters;
+    }
+
+    //缁忓吀鍗曚几搴撲綅
+    public static int[] LocNecessaryParametersDoubleExtension2(Integer whsType, Integer curRow, Integer crnNumber) {
         int[] necessaryParameters = new int[]{0, 0, 0, 0};
         if (BooleanWhsTypeSta(whsType)) {
             necessaryParameters[0] = crnNumber; // 杞娆℃暟
@@ -322,48 +388,36 @@
         return necessaryParameters;
     }
 
-    //缁忓吀鍙屼几搴撲綅绉诲簱
-    public static int[] LocNecessaryParametersMove(Integer whsType, Integer curRow, Integer moveCrnNo) {
-        int[] necessaryParameters = new int[]{0, 0, 0, 0};
-        necessaryParameters[0] = 2; // 杞娆℃暟
-        if (curRow.equals(moveCrnNo*4-2)){
-            necessaryParameters[1] = curRow+2;    //curRow   鏈�娣卞簱浣嶆帓
-            necessaryParameters[2] = moveCrnNo;     //crnNo     鍫嗗灈鏈哄彿
-            necessaryParameters[3] = curRow+1;    //nearRow  鏈�娴呭簱浣嶆帓
-        }else {
-            necessaryParameters[1] = curRow-2;    //curRow   鏈�娣卞簱浣嶆帓
-            necessaryParameters[2] = moveCrnNo;     //crnNo     鍫嗗灈鏈哄彿
-            necessaryParameters[3] = curRow-1;    //nearRow  鏈�娴呭簱浣嶆帓
-        }
-        return necessaryParameters;
-    }
-
     //鍙屽伐浣嶅崟浼稿簱浣�
     public static int[] LocNecessaryParametersDoubleExtension5(Integer whsType, Integer curRow, Integer crnNumber) {
         int[] necessaryParameters = new int[]{0, 0, 0, 0};
+        RowLastnoService rowLastnoService = SpringUtils.getBean(RowLastnoService.class);
+        RowLastno rowLastno = rowLastnoService.selectById(whsType);
+        Integer sRow = rowLastno.getsRow();
+        Integer sCrnNo = rowLastno.getsCrnNo();
         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  鏈�娴呭簱浣嶆帓
+            if (curRow.equals(crnNumber * 4 + sRow - 1)) {
+                necessaryParameters[1] = sRow;    //curRow   鏈�娣卞簱浣嶆帓
+                necessaryParameters[2] = sCrnNo;     //crnNo     鍫嗗灈鏈哄彿
+                necessaryParameters[3] = sRow+1;    //nearRow  鏈�娴呭簱浣嶆帓
+            } else if (curRow.equals(crnNumber * 4 - 3 + sRow - 1)) {
+                necessaryParameters[1] = sRow+3;    //curRow   鏈�娣卞簱浣嶆帓
+                necessaryParameters[2] = sCrnNo;     //crnNo     鍫嗗灈鏈哄彿
+                necessaryParameters[3] = sRow+2;    //nearRow  鏈�娴呭簱浣嶆帓
             } else {
                 curRow = curRow + 4;
-                if (curRow < 1 || curRow > (crnNumber * 4)) {
+                if (curRow <  sRow || curRow > (crnNumber * 4 + sRow - 1)) {
                     throw new CoolException("搴撲綅鎺掑彿寮傚父锛氭帓鍙凤細" + curRow);
                 }
-                if ((curRow - 1) % 4 == 0) {
+                if ((curRow - sRow) % 4 == 0) {
                     necessaryParameters[1] = curRow;    //curRow   鏈�娣卞簱浣嶆帓
-                    necessaryParameters[2] = (curRow + 3) / 4;     //crnNo     鍫嗗灈鏈哄彿
+                    necessaryParameters[2] = (curRow - sRow + 2) / 4 + sCrnNo - 1;     //crnNo     鍫嗗灈鏈哄彿
                     necessaryParameters[3] = curRow + 1;    //nearRow  鏈�娴呭簱浣嶆帓
-                } else if (curRow % 4 == 0) {
+                } else if ((curRow - sRow + 1) % 4 == 0) {
                     necessaryParameters[1] = curRow;    //curRow   鏈�娣卞簱浣嶆帓
-                    necessaryParameters[2] = curRow / 4;     //crnNo     鍫嗗灈鏈哄彿
+                    necessaryParameters[2] = (curRow - sRow + 1) / 4 + sCrnNo - 1;     //crnNo     鍫嗗灈鏈哄彿
                     necessaryParameters[3] = curRow - 1;    //nearRow  鏈�娴呭簱浣嶆帓
                 } else {
                     throw new CoolException("搴撲綅鎺掑彿寮傚父锛氭帓鍙凤細" + curRow);
diff --git a/src/main/java/com/zy/common/web/WcsController.java b/src/main/java/com/zy/common/web/WcsController.java
index 97186ca..c58df7d 100644
--- a/src/main/java/com/zy/common/web/WcsController.java
+++ b/src/main/java/com/zy/common/web/WcsController.java
@@ -171,6 +171,66 @@
         return R.ok().add(dto);
     }
 
+    /*
+     * 鍙屽伐浣嶅崟浼稿爢鍨涙満锛屽垵濮嬩笉鍒嗛厤搴撲綅
+     * */
+    @PostMapping("/pakin/pair/station/large/loc/v1")
+    @ResponseBody
+    public synchronized R getLocNoPairLarge(@RequestBody SearchLocParam param) {
+        log.info("鏀跺埌WCS鍏ュ簱鎺ュ彛璇锋眰====>>鍏ュ弬:{}", param);
+        if (Cools.isEmpty(param.getIoType())) {
+            return R.error("鍏ュ嚭搴撶被鍨嬩笉鑳戒负绌�");
+        }
+        if (Cools.isEmpty(param.getSourceStaNo())) {
+            return R.error("婧愮珯缂栧彿涓嶈兘涓虹┖");
+        }
+        List<WaitPakin> waitPakins = null;
+        if (param.getIoType() == 1) {
+            if (Cools.isEmpty(param.getBarcode())) {
+                return R.error("鏉$爜涓嶈兘涓虹┖");
+            }
+            waitPakins = waitPakinService.selectList(new EntityWrapper<WaitPakin>().eq("zpallet", param.getBarcode()));
+            if (Cools.isEmpty(waitPakins)) {
+                WrkMast wrkMast = wrkMastService.selectByBarcode(param.getBarcode());
+                if (wrkMast != null && wrkMast.getIoType() == 103) {
+                    return R.parse(CodeRes.PICK_600);
+                }
+                return R.parse(CodeRes.NO_COMB_700);
+            }
+            int countLoc = locDetlService.selectCount(new EntityWrapper<LocDetl>().eq("zpallet",param.getBarcode()));
+            int countWrk = wrkDetlService.selectCount(new EntityWrapper<WrkDetl>().eq("zpallet",param.getBarcode()));
+            if (countLoc > 0 || countWrk > 0) {
+                return R.error(CodeRes.EXIST_500);
+            }
+        }
+        if (Cools.isEmpty(param.getLocType1())){
+            return R.error("楂樹綆妫�娴嬩俊鍙蜂笉鑳戒负绌�");
+        }
+
+        // 婧愮珯鐐圭姸鎬佹娴�
+        BasDevp sourceStaNo = basDevpService.checkSiteStatus(param.getSourceStaNo(), true);
+        sourceStaNo.setLocType1(param.getLocType1());
+        LocTypeDto locTypeDto = new LocTypeDto(sourceStaNo);
+
+        StartupDto dto = null;
+        switch (param.getIoType()) {
+            case 1://婊℃墭鐩樺叆搴�
+                assert waitPakins != null;
+                dto = startupFullPutStorePairSingle(param.getSourceStaNo(), param.getBarcode(), locTypeDto, waitPakins);
+                break;
+            case 10://绌烘墭鐩樺叆搴�
+                dto = emptyPlateInPairSingle(param.getSourceStaNo(), locTypeDto, param.getBarcode());
+                break;
+//            case 201://鑷姩琛ョ┖鏉夸换鍔�
+//                dto = emptyPlateIn201(param.getSourceStaNo(), locTypeDto, param.getBarcode());
+//                break;
+            default:
+                break;
+        }
+        log.info("WCS鍏ュ簱鎺ュ彛杩斿弬:{},鎵樼洏鐮�:{}", dto, param.getBarcode());
+        return R.ok().add(dto);
+    }
+
     @PostMapping("/pakin2/loc/v1")
     @ResponseBody
     @Transactional
diff --git a/src/main/resources/mapper/RowLastnoMapper.xml b/src/main/resources/mapper/RowLastnoMapper.xml
index fd58a60..18c3461 100644
--- a/src/main/resources/mapper/RowLastnoMapper.xml
+++ b/src/main/resources/mapper/RowLastnoMapper.xml
@@ -16,6 +16,11 @@
         <result column="appe_user" property="appeUser" />
         <result column="appe_time" property="appeTime" />
         <result column="limint_loc" property="limintLoc" />
+        <result column="s_crn_no" property="sCrnNo" />
+        <result column="e_crn_no" property="eCrnNo" />
+        <result column="sign_type" property="signType" />
+        <result column="sign_type_other" property="signTypeOther" />
+        <result column="sign_type_other_boolean" property="signTypeOtherBoolean" />
 
     </resultMap>
 

--
Gitblit v1.9.1