From 6c8588d5f7f0de7e9489426c350472bf911a4933 Mon Sep 17 00:00:00 2001
From: dubin <bindu_bean@163.com>
Date: 星期五, 05 十二月 2025 15:47:07 +0800
Subject: [PATCH] towcs

---
 src/main/java/com/zy/common/service/CommonService.java |  166 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 165 insertions(+), 1 deletions(-)

diff --git a/src/main/java/com/zy/common/service/CommonService.java b/src/main/java/com/zy/common/service/CommonService.java
index 27f3b06..9733d3d 100644
--- a/src/main/java/com/zy/common/service/CommonService.java
+++ b/src/main/java/com/zy/common/service/CommonService.java
@@ -16,6 +16,7 @@
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.util.Arrays;
 import java.util.Collections;
 import java.util.List;
 
@@ -122,6 +123,34 @@
      * @param findLocNoAttributeVo 灞炴��
      * @param locTypeDto           绫诲瀷
      * @return locNo 妫�绱㈠埌鐨勫簱浣嶅彿
+     * wms-dev
+     */
+    @Transactional
+    public StartupDto getLocNoToWmsDev(Integer staDescId, Integer sourceStaNo, FindLocNoAttributeVo findLocNoAttributeVo, LocTypeDto locTypeDto, String barcode,int[] row) {
+        StartupDto startupDto = null;
+        StringBuilder builder = new StringBuilder();
+        try {
+            startupDto = searchLocNoByCrnNoToWmsDev(staDescId, sourceStaNo, findLocNoAttributeVo, locTypeDto,row);
+        } catch (Exception e) {
+            builder.append(e.getMessage()).append(",");
+        }
+
+        if(startupDto == null) {
+            builder.append("鎵句笉鍒扮┖搴撲綅");
+            throw new CoolException(builder.toString());
+        }
+
+        return startupDto;
+    }
+
+    /**
+     * 妫�绱㈠簱浣嶅彿
+     *
+     * @param staDescId            璺緞ID
+     * @param sourceStaNo          婧愮珯
+     * @param findLocNoAttributeVo 灞炴��
+     * @param locTypeDto           绫诲瀷
+     * @return locNo 妫�绱㈠埌鐨勫簱浣嶅彿
      */
     @Transactional
     public StartupDto searchLocNoByCrnNo(Integer staDescId, Integer sourceStaNo, FindLocNoAttributeVo findLocNoAttributeVo, LocTypeDto locTypeDto) {
@@ -158,11 +187,61 @@
         // 鐢熸垚宸ヤ綔鍙�
         int workNo = getWorkNo(0);
         // 杩斿洖dto
-        startupDto.setWorkNo(workNo);
+        startupDto.setTaskNo(workNo);
         startupDto.setCrnNo(locMast.getCrnNo());
         startupDto.setSourceStaNo(sourceStaNo);
         startupDto.setLocNo(locNo);
+        startupDto.setTaskPri(13.0);
         return startupDto;
+    }
+
+    @Transactional
+    public StartupDto searchLocNoByCrnNoToWmsDev(Integer staDescId, Integer sourceStaNo, FindLocNoAttributeVo findLocNoAttributeVo, LocTypeDto locTypeDto,int[] row) {
+        LocMast locMast = null;
+        if (staDescId == 10) {
+            //鎼滅储绌烘墭鐩�
+            locMast = searchEmptyPallet(locTypeDto);
+        }else {
+            //婊℃墭鐩�
+            locMast = searchMaxPalletToWmsDev(findLocNoAttributeVo, locTypeDto,row);
+        }
+
+        if(locMast == null) {
+            throw new CoolException("鎵句笉鍒扮鍚堝昂瀵哥殑绌哄簱浣�");
+        }
+
+        StartupDto startupDto = new StartupDto();
+
+        // 鑾峰彇鐩爣绔�
+//        Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>().eq("type_no", staDescId).eq("stn_no", sourceStaNo).eq("crn_no", locMast.getCrnNo());
+//        StaDesc staDesc = staDescService.selectOne(wrapper);
+//        if (Cools.isEmpty(staDesc)) {
+//            log.error("type_no={},stn_no={},crn_no={}", staDescId, sourceStaNo, crnNo);
+//            throw new CoolException("鍏ュ簱璺緞涓嶅瓨鍦�");
+//        } else {
+//            BasDevp staNo = basDevpService.selectById(staDesc.getCrnStn());
+//            if (!staNo.getAutoing().equals("Y")) {
+//                log.error("鐩爣绔�" + staDesc.getCrnStn() + "涓嶅彲鐢�");
+//                throw new CoolException("鐩爣绔�"+staDesc.getCrnStn()+"涓嶅彲鐢�");
+//            }
+//            startupDto.setStaNo(staNo.getDevNo());
+//        }
+        String locNo = locMast.getLocNo();
+        // 鐢熸垚宸ヤ綔鍙�
+        int workNo = getWorkNo(0);
+        // 杩斿洖dto
+        startupDto.setTaskNo(workNo);
+        startupDto.setCrnNo(locMast.getCrnNo());
+        startupDto.setSourceStaNo(sourceStaNo);
+        startupDto.setLocNo(locToLocNo(locNo));
+        startupDto.setTaskPri(13.0);
+        return startupDto;
+    }
+    public String locToLocNo(String locNo){//0100203
+        int row = Integer.parseInt(locNo.substring(0, 2));
+        int bay = Integer.parseInt(locNo.substring(2, 5));
+        int lev = Integer.parseInt(locNo.substring(5, 7));
+        return row + "-" +bay + "-" + lev;
     }
 
     //鎼滅储婊℃墭鐩樺簱浣�
@@ -249,6 +328,91 @@
         return targetLocMast;
     }
 
+    //鎼滅储婊℃墭鐩樺簱浣� wms-dev
+    public LocMast searchMaxPalletToWmsDev(FindLocNoAttributeVo findLocNoAttributeVo, LocTypeDto locTypeDto,int[] rows) {
+        LocMast targetLocMast = null;
+        List<String> locNos = locDetlService.getSameDetlListToWmsDev(findLocNoAttributeVo.getMatnr(),rows);
+        for (String locNo : locNos) {
+            //鑾峰彇閫氶亾缁�
+            List<Integer> locRowGroupDesc = Utils.getLocGroupDesc(slaveProperties, locNo);
+            for (Integer row : locRowGroupDesc) {
+                String deepLocNo = Utils.getLocNo(row, Utils.getBay(locNo), Utils.getLev(locNo));
+                LocMast deepLoc = locMastService.selectById(deepLocNo);
+                if (deepLoc == null) {
+                    continue;
+                }
+
+                if (deepLoc.getLocSts().equals("F")) {
+                    continue;
+                } else if (deepLoc.getLocSts().equals("O")) {
+                    targetLocMast = deepLoc;
+                    break;
+                }else {
+                    break;
+                }
+            }
+
+        }
+
+        if(targetLocMast == null) {
+            //鐩歌繎鐗╂枡鍖归厤澶辫触锛屾悳绱㈠彲鐢ㄧ┖搴撲綅缁�
+
+            //鑾峰彇璁惧妤煎眰
+//            List<Integer> levList = basCrnpService.getLevList();
+//            Collections.shuffle(levList);
+//
+//            List<Integer> locLevList = locMastService.getLevList();
+//            levList.addAll(locLevList);
+
+//            for (Integer lev : levList) {
+//            List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>()
+//                    .eq("loc_sts", "O")
+//                    .in("row1",rows)
+//                    .orderBy("bay1", true));
+           List<LocMast> locMasts = locMastService.selectLoc(rows);
+            for (LocMast locMast : locMasts) {
+                String locNo = locMast.getLocNo();
+                //鑾峰彇閫氶亾缁�
+                List<Integer> locRowGroupDesc = Utils.getLocGroupDesc(slaveProperties, locNo);
+
+                boolean flag = true;
+                for (Integer row : locRowGroupDesc) {
+                    String deepLocNo = Utils.getLocNo(row, Utils.getBay(locNo), Utils.getLev(locNo));
+                    LocMast deepLoc = locMastService.selectById(deepLocNo);
+                    if (deepLoc == null) {
+                        continue;
+                    }
+
+                    if (!deepLoc.getLocSts().equals("O")) {
+                        flag = false;
+                        break;
+                    }
+                }
+
+                if (flag) {
+                    for (Integer row : locRowGroupDesc) {
+                        String deepLocNo = Utils.getLocNo(row, Utils.getBay(locNo), Utils.getLev(locNo));
+                        LocMast deepLoc = locMastService.selectById(deepLocNo);
+                        if (deepLoc == null) {
+                            continue;
+                        }
+
+                        targetLocMast = deepLoc;
+                        break;
+                    }
+                    break;
+                }
+            }
+
+//                if (targetLocMast != null) {
+//                    break;
+//                }
+//            }
+
+        }
+        return targetLocMast;
+    }
+
     //鎼滅储绌烘墭鐩樺簱浣�
     public LocMast searchEmptyPallet(LocTypeDto locTypeDto) {
         LocMast targetLocMast = null;

--
Gitblit v1.9.1