From 07c572bea979dbd3ee46ec24083cb1bdcc014e3a Mon Sep 17 00:00:00 2001
From: pang.jiabao <pang_jiabao@163.com>
Date: 星期五, 05 七月 2024 13:56:50 +0800
Subject: [PATCH] 一期找库位方法修改

---
 src/main/resources/mapper/LocMastMapper.xml            |   22 ++++++++++
 src/main/java/com/zy/asrs/mapper/LocMastMapper.java    |    8 ++++
 src/main/java/com/zy/common/web/WcsController.java     |   11 +++--
 src/main/java/com/zy/common/service/CommonService.java |   71 ++++++++++++++++++++++++++++++++++-
 4 files changed, 103 insertions(+), 9 deletions(-)

diff --git a/src/main/java/com/zy/asrs/mapper/LocMastMapper.java b/src/main/java/com/zy/asrs/mapper/LocMastMapper.java
index db1c6b9..50e169a 100644
--- a/src/main/java/com/zy/asrs/mapper/LocMastMapper.java
+++ b/src/main/java/com/zy/asrs/mapper/LocMastMapper.java
@@ -46,4 +46,12 @@
     LocMast queryEmptyLocNoByStaNo(@Param("crnNo") int crnNo);
 
     LocMast queryLocByBarCode(@Param("row") int row);
+
+    /**
+     * 鑾峰彇婊¤冻鏉′欢鐨勭┖搴撲綅
+     * @param devpNo 鍏ュ簱绔欑偣
+     * @param flag 灞傛爣璇嗭紝1琛ㄧず鍘�1-6灞傦紝2鍘昏〃绀�7-11灞�
+     * @return 搴撲綅
+     */
+    LocMast queryLocByBarCodeNew(@Param("devpNo") int devpNo, @Param("flag") int flag);
 }
diff --git a/src/main/java/com/zy/common/service/CommonService.java b/src/main/java/com/zy/common/service/CommonService.java
index ac2e0a7..6995422 100644
--- a/src/main/java/com/zy/common/service/CommonService.java
+++ b/src/main/java/com/zy/common/service/CommonService.java
@@ -511,12 +511,17 @@
 
     public StartupDto emptyIngetLocNo(Integer devpNo) {
         int crnNo = 0;
-        // 鐩爣搴撲綅
-        LocMast locMast = null;
+
         if (devpNo == 304) {
             crnNo = 3;
-            locMast = locMastMapper.queryEmptyLocNoByStaNo(crnNo);
+        } else if(devpNo == 204) {
+            crnNo = 2;
+        } else if(devpNo == 104) {
+            crnNo = 1;
         }
+
+        // 鐩爣搴撲綅
+        LocMast locMast = locMastMapper.queryEmptyLocNoByStaNo(crnNo);
 
         if (locMast == null) {
             throw new CoolException("娌℃湁绌哄簱浣�");
@@ -598,4 +603,64 @@
         startupDto.setLocNo(locMast.getLocNo());
         return startupDto;
     }
+
+    /**
+     * 涓�鏈熷鎵惧簱浣�
+     * 1-6灞� 鏉$爜1鎴栬��2寮�澶�
+     * 7-11灞� 鏉$爜8寮�澶�
+     * @param ioType 1.鍏ュ簱
+     * @param devpNo 鍏ュ簱绔欑偣
+     * @param barcode 鏉$爜
+     * @return 搴撲綅淇℃伅
+     */
+    public StartupDto getLocNoNew(int ioType, Integer devpNo, String barcode) {
+        char type = barcode.charAt(0);
+        int flag = 0;
+        if (type == '1' || type == '2') {
+            flag = 1;
+        } else if( type == '8') {
+            flag = 2;
+        }
+        if (flag == 0) {
+            throw new CoolException("鏉$爜鏈夎锛�" + barcode);
+        }
+
+        // 鐩爣搴撲綅
+        LocMast locMast = locMastMapper.queryLocByBarCodeNew(devpNo,flag);
+        if (locMast == null) {
+            throw new CoolException("鍏ュ簱娌℃湁绌哄簱浣�");
+        }
+
+        // 鍫嗗灈鏈哄彿
+        Integer crnNo = locMast.getCrnNo();
+
+        // 鑾峰彇鐩爣绔�
+        Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>()
+                .eq("type_no", ioType)
+                .eq("stn_no", devpNo)
+                .eq("crn_no", crnNo);
+        StaDesc staDesc = staDescService.selectOne(wrapper);
+        if (Cools.isEmpty(staDesc)) {
+            log.error("鍏ュ簱璺緞涓嶅瓨鍦�, staDescId={}, sourceStaNo={}, crnNo={}", 1, devpNo, crnNo);
+            throw new CoolException("鍏ュ簱璺緞涓嶅瓨鍦�");
+        }
+
+        // 妫�娴嬬洰鏍囩珯
+        BasDevp staNo = basDevpService.selectById(staDesc.getCrnStn());
+        if (!staNo.getAutoing().equals("Y")) {
+            throw new CoolException("鐩爣绔�"+staDesc.getCrnStn()+"涓嶅彲鐢�");
+        }
+
+        basCrnpService.checkSiteStatus(crnNo, true);
+
+        // 杩斿洖dto
+        StartupDto startupDto = new StartupDto();
+        startupDto.setWorkNo(getWorkNo(0));
+        startupDto.setCrnNo(crnNo);
+        startupDto.setSourceStaNo(devpNo);
+        startupDto.setStaNo(devpNo);
+        startupDto.setLocNo(locMast.getLocNo());
+        return startupDto;
+
+    }
 }
diff --git a/src/main/java/com/zy/common/web/WcsController.java b/src/main/java/com/zy/common/web/WcsController.java
index 4946169..c99bb49 100644
--- a/src/main/java/com/zy/common/web/WcsController.java
+++ b/src/main/java/com/zy/common/web/WcsController.java
@@ -127,7 +127,8 @@
         if (devpNo == 304) {
             dto = commonService.getLocNoBy304(str5.get(0));
         } else {
-            dto = commonService.getLocNo(1, 1, devpNo, false, matNos, locTypeDto,0);
+//            dto = commonService.getLocNo(1, 1, devpNo, false, matNos, locTypeDto,0);
+            dto = commonService.getLocNoNew(1, devpNo,barcode);
         }
         int workNo = dto.getWorkNo();
 
@@ -197,11 +198,11 @@
         BasDevp sourceStaNo = basDevpService.checkSiteStatus(devpNo, true);
         // 妫�绱㈠簱浣�
         StartupDto dto;
-        if (devpNo >= 300) {
+//        if (devpNo >= 300) {
             dto = commonService.emptyIngetLocNo(devpNo);
-        } else {
-            dto = commonService.getLocNo(1, 10, devpNo, true, null, locTypeDto, 0);
-        }
+//        } else {
+//            dto = commonService.getLocNo(1, 10, devpNo, true, null, locTypeDto, 0);
+//        }
         int workNo = dto.getWorkNo();
         // 鐢熸垚宸ヤ綔妗�
         WrkMast wrkMast = new WrkMast();
diff --git a/src/main/resources/mapper/LocMastMapper.xml b/src/main/resources/mapper/LocMastMapper.xml
index 5aa38d2f..66c977c 100644
--- a/src/main/resources/mapper/LocMastMapper.xml
+++ b/src/main/resources/mapper/LocMastMapper.xml
@@ -183,7 +183,7 @@
         SELECT TOP 1 loc_no AS locNo,crn_no AS crnNo FROM asr_loc_mast
         where loc_sts = 'O'
         <if test="crnNo == 1">
-            and row1 in(1,2)
+            and row1 in(1,2,3)
         </if>
         <if test="crnNo == 2">
             and row1 in(5,6)
@@ -197,4 +197,24 @@
         SELECT TOP 1 loc_no AS locNo,crn_no AS crnNo FROM asr_loc_mast
         where loc_sts = 'O' and row1 = #{row} ORDER BY lev1 ASC, bay1 ASC
     </select>
+    <select id="queryLocByBarCodeNew" resultType="com.zy.asrs.entity.LocMast">
+        SELECT TOP 1 loc_no AS locNo,crn_no AS crnNo FROM asr_loc_mast
+        where loc_sts = 'O' and bay1 not in(1,39)
+        <if test="devpNo == 104">
+            and row1 in(1,2,3)
+        </if>
+        <if test="devpNo == 204">
+            and row1 in(4,5)
+        </if>
+        <if test="devpNo == 304">
+            and row1 in(6,7)
+        </if>
+        <if test="flag == 1">
+            and lev1 in(1,2,3,4,5,6)
+        </if>
+        <if test="flag == 2">
+            and lev1 in(7,8,9,10,11)
+        </if>
+        ORDER BY lev1 ASC, bay1 ASC
+    </select>
 </mapper>

--
Gitblit v1.9.1