From 203e2664c13883f8bb64f638cb1794c0b4480ec2 Mon Sep 17 00:00:00 2001
From: pang.jiabao <pang_jiabao@163.com>
Date: 星期日, 27 四月 2025 08:24:20 +0800
Subject: [PATCH] 完成米多泉州wms开发

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

diff --git a/src/main/java/com/zy/common/service/CommonService.java b/src/main/java/com/zy/common/service/CommonService.java
index e659ad1..9dea891 100644
--- a/src/main/java/com/zy/common/service/CommonService.java
+++ b/src/main/java/com/zy/common/service/CommonService.java
@@ -3,28 +3,25 @@
 import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.baomidou.mybatisplus.mapper.Wrapper;
-import com.core.common.Arith;
 import com.core.common.Cools;
 import com.core.exception.CoolException;
 import com.zy.asrs.entity.*;
 import com.zy.asrs.entity.result.FindLocNoAttributeVo;
-import com.zy.asrs.entity.result.KeyValueVo;
+import com.zy.asrs.mapper.WrkMastMapper;
 import com.zy.asrs.service.*;
 import com.zy.asrs.utils.Utils;
 import com.zy.asrs.utils.VersionUtils;
 import com.zy.common.model.LocTypeDto;
-import com.zy.common.model.Shelves;
 import com.zy.common.model.StartupDto;
 import com.zy.common.properties.SlaveProperties;
+import com.zy.common.web.param.SearchLocParam;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Propagation;
 import org.springframework.transaction.annotation.Transactional;
 
-import java.time.LocalDate;
-import java.time.format.DateTimeFormatter;
-import java.time.temporal.ChronoUnit;
-import java.util.ArrayList;
+import javax.annotation.Resource;
 import java.util.List;
 
 /**
@@ -57,6 +54,14 @@
     private SlaveProperties slaveProperties;
     @Autowired
     private WrkDetlService wrkDetlService;
+
+    @Resource
+    private WrkMastMapper wrkMastMapper;
+
+    /**
+     * 缃愯绾垮彿鏄犲皠鐩爣绔欑偣 涓嬫爣:鐩爣绔欑偣
+     */
+    private static final int[] fillingLineMappingSite = {0,1079,1065,1072};
 
     /**
      * 鐢熸垚宸ヤ綔鍙�
@@ -156,6 +161,128 @@
         return null;
     }
 
+    @Transactional(propagation = Propagation.REQUIRED)
+    public StartupDto getLocNoNew(Integer staDescId, Integer sourceStaNo, FindLocNoAttributeVo findLocNoAttributeVo, int locArea) {
+
+        // 鐩爣搴撲綅
+        LocMast locMast;
+
+        // 鍏ョ┖妗跺簱
+        if (staDescId == 1 && locArea == 2) {
+            String model = findLocNoAttributeVo.getModel(); // 褰撳墠妗剁被鍨�
+            List<WrkMast> wrkMastList = wrkMastMapper.selectLastInEmptyLoc(); // 鍓嶉潰鍏ョ┖妗跺簱鐨勪换鍔�(鏈墽琛屽爢鍨涙満鍏ュ簱)
+
+            if (wrkMastList.size() == 0) {
+                // 鍙栨柊搴撲綅缁勭殑绗竴涓簱浣�
+                locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_sts", 'O').in("row1", 9, 11).orderBy("lev1").orderBy("bay1").orderBy("row1"));
+            } else {
+                WrkMast wrkMast = wrkMastList.get(0); // 鏈�鍚庝竴涓叆绌烘《搴撲换鍔�
+                // 鍓嶄竴涓换鍔℃槑缁�
+                WrkDetl wrkDetl = wrkDetlService.selectOne(new EntityWrapper<WrkDetl>().eq("wrk_no",wrkMast.getWrkNo()));
+                // 鍓嶄竴涓换鍔℃《绫诲瀷
+                String oldModel = wrkDetl.getModel();
+                // 鍓嶄竴涓换鍔″熬鎵樻爣璇�
+                Integer oldCtnType = wrkMast.getCtnType();
+                if(model.equals(oldModel)) { // 褰撳墠妗朵笌鍓嶆《鏄竴绉嶇被鍨�
+                    // 褰撳墠妗剁被鍨嬬殑浠诲姟鏈夊嚑涓�
+                    long count = wrkMastList.stream().filter(wrkMast1 -> wrkMast1.getPdcType().equals(oldModel)).count();
+                    if (count % 2  == 0) { // 鍋舵暟锛屽彇涓�缁勬柊搴撲綅
+                        locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_sts", 'O').in("row1", 9, 11).orderBy("lev1").orderBy("bay1").orderBy("row1"));
+                    } else { // 濂囨暟锛屽彇鍓嶄竴搴撲綅瀵瑰簲鐨勭┖搴撲綅
+                        String locNo = wrkMast.getLocNo();
+                        int row = Integer.parseInt(locNo.substring(0, 2));
+                        if(row == 9 || row == 11) {
+                            String newLocNo = (row + 1) + locNo.substring(2);
+                            locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", newLocNo).eq("loc_sts","O"));
+                            if (locMast == null) {
+                                log.error("-----涓庡墠闈㈡《绫诲瀷涓�鏍凤紝鍓嶉潰璇ユ《绫诲瀷浠诲姟鏁版槸濂囨暟锛屾槸9锛�11鎺�,浣嗘槸瀵瑰簲搴撲綅涓嶄负绌�----");
+                                throw new CoolException("涓庡墠闈㈡《绫诲瀷涓�鏍凤紝鍓嶉潰璇ユ《绫诲瀷浠诲姟鏁版槸濂囨暟锛屾槸9锛�11鎺�,浣嗘槸瀵瑰簲搴撲綅涓嶄负绌�");
+                            }
+                        } else {
+                            log.error("-----涓庡墠闈㈡《绫诲瀷涓�鏍凤紝鍓嶉潰璇ユ《绫诲瀷浠诲姟鏁版槸濂囨暟锛屼絾鏄笉鏄�9锛�11鎺�----");
+                            throw new CoolException("涓庡墠闈㈡《绫诲瀷涓�鏍凤紝鍓嶉潰璇ユ《绫诲瀷浠诲姟鏁版槸濂囨暟锛屼絾鏄笉鏄�9锛�11鎺�");
+                        }
+                    }
+                } else { // 褰撳墠妗朵笌鍓嶆《涓嶆槸涓�绉嶇被鍨�
+                      if(oldCtnType == 1) { // 鍓嶉潰鏄熬妗�
+                          // 鍙栨柊搴撲綅缁勭殑绗竴涓簱浣�
+                          locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_sts", 'O').in("row1", 9, 11).orderBy("lev1").orderBy("bay1").orderBy("row1"));
+                      } else { // 鍓嶉潰涓嶆槸灏炬《
+                          // 鍒ゆ柇鍓嶉潰鍏ョ┖妗跺簱浠诲姟鏁伴噺(鏈墽琛屽爢鍨涙満鍏ュ簱)
+                          long count = wrkMastList.stream().filter(wrkMast1 -> wrkMast1.getPdcType().equals(oldModel)).count();
+                          if (count % 2 == 0) { // 鍋舵暟锛屽彲浠ュ叆搴�
+                              // 鍙栨柊搴撲綅缁勭殑绗竴涓簱浣�
+                              locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_sts", 'O').in("row1", 9, 11).orderBy("lev1").orderBy("bay1").orderBy("row1"));
+                          } else { // 濂囨暟锛屼笉鍙互鍏ュ簱
+                              log.error("-----涓庡墠闈㈡《绫诲瀷涓嶄竴鏍凤紝鍓嶉潰妗朵笉鏄熬妗讹紝鍓嶉潰璇ユ《绫诲瀷浠诲姟鏁颁笉鏄伓鏁帮紝涓嶈兘鍏ュ簱----");
+                              throw new CoolException("涓庡墠闈㈡《绫诲瀷涓嶄竴鏍凤紝鍓嶉潰妗朵笉鏄熬妗讹紝鍓嶉潰璇ユ《绫诲瀷浠诲姟鏁颁笉鏄伓鏁帮紝涓嶈兘鍏ュ簱");
+                          }
+                      }
+                }
+            }
+
+        } else if ((staDescId == 1 && locArea == 1) || staDescId == 10) { // 婊℃澘鍏ユ垚鍝佸簱鎴栬�呯┖鏉垮叆鎴愬搧搴�
+            // 鎸夊眰鍒楁帓椤哄簭鑾峰彇涓�涓狢anningLineInLocParam param搴撲綅
+            locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_sts", 'O').in("row1", 1, 4, 5, 6, 7, 8).orderBy("lev1").orderBy("bay1").orderBy("row1"));
+
+            // 娴呭簱浣嶆病鏈変簡鍒欒幏鍙栦竴涓祬搴撲綅
+            if (locMast == null) {
+                locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_sts", 'O').in("row1", 2, 3).orderBy("lev1").orderBy("bay1").orderBy("row1"));
+                if (locMast == null) {
+                    log.error("-----搴撲綅涓嶈冻----");
+                    throw new CoolException("搴撲綅涓嶈冻");
+                } else {
+                    int count = locMastService.selectCount(new EntityWrapper<LocMast>().eq("loc_sts", 'O'));
+                    if (count <= 10) {
+                        log.error("-----搴撲綅涓嶈冻锛岄鐣�10涓簱浣嶇敤鏉ュ簱浣嶈浆绉�----");
+                        throw new CoolException("搴撲綅涓嶈冻锛岄鐣�10涓簱浣嶇敤鏉ュ簱浣嶈浆绉�");
+                    }
+                }
+            }
+        } else {
+            log.error("鍏ュ簱绫诲瀷閿欒锛宻taDescId={}", staDescId);
+            throw new CoolException("鍏ュ簱绫诲瀷閿欒锛宻taDescId=" + staDescId);
+        }
+        // 杩斿洖dto
+        StartupDto startupDto = new StartupDto();
+        StaDesc staDesc = staDescService.selectOne(new EntityWrapper<StaDesc>()
+                .eq("type_no", staDescId)
+                .eq("stn_no", sourceStaNo)
+                .eq("crn_no", locMast.getCrnNo()));
+        if (Cools.isEmpty(staDesc)) {
+            log.error("type_no={},stn_no={},crn_no={}", staDescId, sourceStaNo, locMast.getCrnNo());
+            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());
+        }
+
+        // 鐢熸垚宸ヤ綔鍙�
+        int workNo = getWorkNo(0);
+        startupDto.setWorkNo(workNo);
+        startupDto.setCrnNo(locMast.getCrnNo());
+        startupDto.setSourceStaNo(sourceStaNo);
+        startupDto.setLocNo(locMast.getLocNo());
+        return startupDto;
+    }
+
+    @Transactional(propagation = Propagation.REQUIRED)
+    public StartupDto getLocNo(SearchLocParam param, Integer wantBucketFlag) {
+
+        // 杩斿洖dto
+        StartupDto startupDto = new StartupDto();
+
+        startupDto.setWorkNo(getWorkNo(0)); // 宸ヤ綔鍙�
+        startupDto.setSourceStaNo(param.getSourceStaNo()); // 婧愮珯鐐�
+        startupDto.setStaNo(fillingLineMappingSite[wantBucketFlag]); // 鐩爣绔欑偣
+        startupDto.setCrnNo(wantBucketFlag); // 璁板綍缃愯绾垮彿锛寃cs娓呴櫎瑕佹《淇″彿
+        return startupDto;
+    }
+
     /**
      * 妫�绱㈠簱浣嶅彿
      *

--
Gitblit v1.9.1