From 89af7e4c0a0fcd715bad4dbcf4e66442c0bf5975 Mon Sep 17 00:00:00 2001
From: luxiaotao1123 <t1341870251@163.com>
Date: 星期六, 14 五月 2022 23:33:53 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/asrs/service/RowLastnoService.java          |    2 +
 src/main/java/com/zy/asrs/service/WorkService.java               |    2 
 src/main/java/com/zy/asrs/mapper/StaDescMapper.java              |    2 +
 src/main/resources/mapper/RowLastnoMapper.xml                    |    8 ++++
 src/main/java/com/zy/asrs/service/impl/RowLastnoServiceImpl.java |    4 ++
 src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java      |   77 +++++++++++++++++++++++++++++++++++++-
 src/main/java/com/zy/asrs/service/StaDescService.java            |    2 +
 src/main/java/com/zy/asrs/mapper/RowLastnoMapper.java            |    2 +
 src/main/resources/mapper/StaDescMapper.xml                      |    6 +++
 src/main/java/com/zy/asrs/controller/WorkController.java         |    4 +-
 src/main/java/com/zy/asrs/service/impl/StaDescServiceImpl.java   |    5 ++
 11 files changed, 109 insertions(+), 5 deletions(-)

diff --git a/src/main/java/com/zy/asrs/controller/WorkController.java b/src/main/java/com/zy/asrs/controller/WorkController.java
index bc186d4..eae764b 100644
--- a/src/main/java/com/zy/asrs/controller/WorkController.java
+++ b/src/main/java/com/zy/asrs/controller/WorkController.java
@@ -154,8 +154,8 @@
     @RequestMapping("/deal/preHave/start")
     @ManagerAuth(memo = "鍏堝叆鍝佸鐞�")
     public R dealPreHave(@RequestParam Integer wrkNo) {
-        StartupDto startupDto = workService.dealPreHaveStart(wrkNo, getUserId());
-        return R.ok("浠诲姟閲嶆柊鍏ュ簱锛岀洰鏍囧簱浣嶏細" + startupDto.getLocNo());
+        String locNo = workService.dealPreHaveStart(wrkNo, getUserId());
+        return R.ok("浠诲姟閲嶆柊鍏ュ簱锛岀洰鏍囧簱浣嶏細" + locNo);
     }
 
 }
diff --git a/src/main/java/com/zy/asrs/mapper/RowLastnoMapper.java b/src/main/java/com/zy/asrs/mapper/RowLastnoMapper.java
index bfb9079..1a1ca80 100644
--- a/src/main/java/com/zy/asrs/mapper/RowLastnoMapper.java
+++ b/src/main/java/com/zy/asrs/mapper/RowLastnoMapper.java
@@ -9,4 +9,6 @@
 @Repository
 public interface RowLastnoMapper extends BaseMapper<RowLastno> {
 
+    RowLastno findBySection(Integer row);
+
 }
diff --git a/src/main/java/com/zy/asrs/mapper/StaDescMapper.java b/src/main/java/com/zy/asrs/mapper/StaDescMapper.java
index b79dfc7..c26c603 100644
--- a/src/main/java/com/zy/asrs/mapper/StaDescMapper.java
+++ b/src/main/java/com/zy/asrs/mapper/StaDescMapper.java
@@ -14,4 +14,6 @@
 
     List<Integer> queryOutStaNosByLocNo(@Param("locNo") String locNo, @Param("typeNo") Integer typeNo);
 
+    StaDesc queryCrnStn(Integer crnNo);
+
 }
diff --git a/src/main/java/com/zy/asrs/service/RowLastnoService.java b/src/main/java/com/zy/asrs/service/RowLastnoService.java
index dca50fd..66fb173 100644
--- a/src/main/java/com/zy/asrs/service/RowLastnoService.java
+++ b/src/main/java/com/zy/asrs/service/RowLastnoService.java
@@ -5,4 +5,6 @@
 
 public interface RowLastnoService extends IService<RowLastno> {
 
+    RowLastno findBySection(Integer row);
+
 }
diff --git a/src/main/java/com/zy/asrs/service/StaDescService.java b/src/main/java/com/zy/asrs/service/StaDescService.java
index 4d47cf9..13d18b8 100644
--- a/src/main/java/com/zy/asrs/service/StaDescService.java
+++ b/src/main/java/com/zy/asrs/service/StaDescService.java
@@ -13,4 +13,6 @@
 
     StaDesc queryCrnStnAuto(Integer typeNo, Integer crnNo, Integer stnNo);
 
+    StaDesc queryCrnStn(Integer crnNo);
+
 }
diff --git a/src/main/java/com/zy/asrs/service/WorkService.java b/src/main/java/com/zy/asrs/service/WorkService.java
index f5c0c1f..239535b 100644
--- a/src/main/java/com/zy/asrs/service/WorkService.java
+++ b/src/main/java/com/zy/asrs/service/WorkService.java
@@ -85,6 +85,6 @@
     /**
      * 閫氱煡妗f墜鍔ㄧ敓鎴愪换鍔�
      */
-    StartupDto dealPreHaveStart(Integer wrkNo, Long userId);
+    String dealPreHaveStart(Integer wrkNo, Long userId);
 
 }
diff --git a/src/main/java/com/zy/asrs/service/impl/RowLastnoServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/RowLastnoServiceImpl.java
index 1a32cff..4926799 100644
--- a/src/main/java/com/zy/asrs/service/impl/RowLastnoServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/RowLastnoServiceImpl.java
@@ -9,4 +9,8 @@
 @Service("rowLastnoService")
 public class RowLastnoServiceImpl extends ServiceImpl<RowLastnoMapper, RowLastno> implements RowLastnoService {
 
+    @Override
+    public RowLastno findBySection(Integer row) {
+        return this.baseMapper.findBySection(row);
+    }
 }
diff --git a/src/main/java/com/zy/asrs/service/impl/StaDescServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/StaDescServiceImpl.java
index c92d7e8..1b995a3 100644
--- a/src/main/java/com/zy/asrs/service/impl/StaDescServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/StaDescServiceImpl.java
@@ -54,4 +54,9 @@
         return staDesc;
     }
 
+    @Override
+    public StaDesc queryCrnStn(Integer crnNo) {
+        return this.baseMapper.queryCrnStn(crnNo);
+    }
+
 }
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 dab964d..0b89c2c 100644
--- a/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -13,9 +13,11 @@
 import com.zy.asrs.entity.param.LocDetlAdjustParam;
 import com.zy.asrs.entity.param.StockOutParam;
 import com.zy.asrs.service.*;
+import com.zy.asrs.utils.Utils;
 import com.zy.common.model.*;
 import com.zy.common.model.enums.IoWorkType;
 import com.zy.common.model.enums.WorkNoType;
+import com.zy.common.properties.SlaveProperties;
 import com.zy.common.service.CommonService;
 import com.zy.common.web.WcsController;
 import lombok.extern.slf4j.Slf4j;
@@ -69,6 +71,10 @@
     private OrderDetlService orderDetlService;
     @Autowired
     private WcsController wcsController;
+    @Autowired
+    private RowLastnoService rowLastnoService;
+    @Autowired
+    private SlaveProperties slaveProperties;
 
     @Override
     @Transactional
@@ -881,9 +887,76 @@
     }
 
     @Override
-    public StartupDto dealPreHaveStart(Integer wrkNo, Long userId) {
+    @Transactional
+    public String dealPreHaveStart(Integer wrkNo, Long userId) {
+        WrkMast wrkMast = wrkMastService.selectById(wrkNo);
+        if (wrkMast == null) {
+            throw new CoolException("浠诲姟宸插け鏁�");
+        }
+        String locNo = wrkMast.getLocNo();
+        LocMast locMast = locMastService.selectById(locNo);
+        assert locMast != null;
+        RowLastno rowLastno = rowLastnoService.findBySection(locMast.getRow1());
+        assert rowLastno != null;
 
-        return null;
+        // 鐩爣搴撲綅
+        LocMast targetLoc = null;
+
+        for (int curRow = rowLastno.getsRow(); curRow<=rowLastno.geteRow(); curRow++) {
+
+            if (Utils.isShallowLoc(slaveProperties, curRow)) {
+                Integer deepRow = Utils.getDeepRow(slaveProperties, curRow);
+                targetLoc = locMastService.queryFreeLocMast(deepRow, locMast.getLocType1());
+                // 鍥犲簱浣嶇Щ杞�侀渶棰勭暀绌哄簱浣�
+                if (!locMastService.checkEmptyCount(targetLoc)) {
+                    continue;
+                }
+            }
+            if (Cools.isEmpty(targetLoc)) {
+                targetLoc = locMastService.queryFreeLocMast(curRow, locMast.getLocType1());
+                // 鍥犲簱浣嶇Щ杞�侀渶棰勭暀绌哄簱浣�
+                if (!locMastService.checkEmptyCount(targetLoc)) {
+                    continue;
+                }
+                // 鐩爣搴撲綅 ===>> 娴呭簱浣嶏紝 鍒欐牎楠屽叾娣卞簱浣嶆槸鍚︿负 F D X
+                if (null != targetLoc && Utils.isShallowLoc(slaveProperties, targetLoc.getLocNo())) {
+                    LocMast deepLoc = locMastService.selectById(Utils.getDeepLoc(slaveProperties, targetLoc.getLocNo()));
+                    if (!deepLoc.getLocSts().equals("F") && !deepLoc.getLocSts().equals("D") && !deepLoc.getLocSts().equals("X")) {
+                        continue;
+                    }
+                }
+                // 鐩爣搴撲綅 ===>> 娣卞簱浣嶏紝 鍒欐牎楠屽叾娴呭簱浣嶆槸鍚︿负 O
+                if (null != targetLoc && Utils.isDeepLoc(slaveProperties, targetLoc.getLocNo())) {
+                    LocMast shallowLoc = locMastService.selectById(Utils.getShallowLoc(slaveProperties, targetLoc.getLocNo()));
+                    if (!shallowLoc.getLocSts().equals("O")) {
+                        continue;
+                    }
+                }
+            }
+
+            if (!Cools.isEmpty(targetLoc)) {
+                break;
+            }
+
+        }
+
+        if (targetLoc == null) {
+            throw new CoolException("鎿嶄綔澶辫触锛屽綋鍓嶄粨搴撴壘涓嶅埌绌哄簱浣�");
+        }
+
+        // 淇敼宸ヤ綔妗�
+        StaDesc staDesc = staDescService.queryCrnStn(targetLoc.getCrnNo());
+        if (Cools.isEmpty(staDesc)) {
+            throw new CoolException("鍏ュ簱璺緞涓嶅瓨鍦�");
+        }
+        wrkMast.setWrkSts(2L);
+        wrkMast.setLocNo(targetLoc.getLocNo());
+        wrkMast.setStaNo(staDesc.getCrnStn());
+        if (!wrkMastService.updateById(wrkMast)) {
+            throw new CoolException("淇敼宸ヤ綔妗eけ璐�");
+        }
+
+        return targetLoc.getLocNo();
     }
 
 }
diff --git a/src/main/resources/mapper/RowLastnoMapper.xml b/src/main/resources/mapper/RowLastnoMapper.xml
index 45639f6..fd58a60 100644
--- a/src/main/resources/mapper/RowLastnoMapper.xml
+++ b/src/main/resources/mapper/RowLastnoMapper.xml
@@ -19,4 +19,12 @@
 
     </resultMap>
 
+    <select id="findBySection" resultMap="BaseResultMap">
+        select * from asr_row_lastno
+        where 1=1
+        and s_row &lt;= #{row}
+        and e_row >= #{row}
+        order by (e_row - s_row)
+    </select>
+
 </mapper>
diff --git a/src/main/resources/mapper/StaDescMapper.xml b/src/main/resources/mapper/StaDescMapper.xml
index ab8b4c6..6bbea2d 100644
--- a/src/main/resources/mapper/StaDescMapper.xml
+++ b/src/main/resources/mapper/StaDescMapper.xml
@@ -29,7 +29,13 @@
         <if test="typeNo != null and typeNo !=''">
             and asd.type_no = #{typeNo}
         </if>
+    </select>
 
+    <select id="queryCrnStn" resultMap="BaseResultMap">
+        select top 1 * from asr_sta_desc
+        where 1=1
+        and crn_no = #{crnNo}
+        and type_no = 1
     </select>
 
 </mapper>

--
Gitblit v1.9.1