From 2ded9514aa9a93ee440af0b1437d788fb052028b Mon Sep 17 00:00:00 2001
From: pjb <pjb123456>
Date: 星期六, 23 八月 2025 08:36:59 +0800
Subject: [PATCH] wms功能完善

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

diff --git a/src/main/java/com/zy/common/service/CommonService.java b/src/main/java/com/zy/common/service/CommonService.java
index 54280cc..dce1bc3 100644
--- a/src/main/java/com/zy/common/service/CommonService.java
+++ b/src/main/java/com/zy/common/service/CommonService.java
@@ -16,6 +16,8 @@
 import com.zy.common.model.StartupDto;
 import com.zy.common.properties.SlaveProperties;
 import com.zy.common.web.param.SearchLocParam;
+import com.zy.system.entity.Config;
+import com.zy.system.service.ConfigService;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -62,6 +64,9 @@
 
     @Resource
     private LocMastMapper locMastMapper;
+
+    @Resource
+    private ConfigService configService;
 
     /**
      * 鐢熸垚宸ヤ綔鍙�
@@ -169,166 +174,183 @@
 
         // 鍏ョ┖妗跺簱
         if (staDescId == 1 && locArea == 2) {
+            Config config = configService.selectOne(new EntityWrapper<Config>().eq("code", "emptyBucketInCacheCount").eq("status", 1));
+            if (config != null && !Cools.isEmpty(config.getValue())) { // 闄愬埗鍏ョ┖妗跺簱杈撻�佺嚎缂撳瓨浠诲姟鏁帮紝閬垮厤鍫靛
+                int value = Integer.parseInt(config.getValue());
+                List<BasDevp> basDevps = basDevpService.selectList(new EntityWrapper<BasDevp>().in("dev_no", 1044, 1045, 1046, 1047, 1048, 1049, 1050).ne("wrk_no", 0));
+                long count = basDevps.stream().map(BasDevp::getWrkNo).distinct().count();
+                log.info("鍏ョ┖妗跺簱杈撻�佺嚎缂撳瓨浠诲姟鏁�:{}",count);
+                if(count >= value) {
+                    log.error("-----鍏ョ┖妗跺簱杈撻�佺嚎缂撳瓨浠诲姟鏁帮細{}锛岃秴閰嶇疆缂撳瓨鏁帮細{}----",count,value);
+                    throw new CoolException("鍏ョ┖妗跺簱杈撻�佺嚎缂撳瓨浠诲姟鏁帮細"+count+"锛岃秴閰嶇疆缂撳瓨鏁帮細" + value);
+                }
+            }
+            locMast = new LocMast();
+            locMast.setCrnNo(4);
+            locMast.setLocNo("");
             List<WrkMast> wrkMastList = wrkMastMapper.selectLastInEmptyLoc(); // 鍓嶉潰鍏ョ┖妗跺簱鐨勪换鍔�(鏈墽琛屽爢鍨涙満鍏ュ簱)
 
-            if (wrkMastList.size() == 0) {
+//            if (wrkMastList.size() == 0) {
                 // 鍙栨柊搴撲綅缁勭殑绗竴涓簱浣�
                 List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>().eq("crn_no", 4).eq("loc_sts", "O"));
                 List<LocMast> collect = locMasts.stream().filter(locMast1 -> locMast1.getRow1() == 9 || locMast1.getRow1() == 11).collect(Collectors.toList());
                 List<LocMast> collect1 = locMasts.stream().filter(locMast1 -> locMast1.getRow1() == 10 || locMast1.getRow1() == 12).collect(Collectors.toList()); // 绗竴涓厛鏀捐繖涓ゆ帓
-                if (collect.size() == 0 || collect1.size() == 0) {
+                if (collect.size() - wrkMastList.size() <= 0 && collect1.size()  - wrkMastList.size() <= 0) {
                     log.error("-----绌烘《搴撴棤绌哄簱浣�----");
                     throw new CoolException("绌烘《搴撴棤绌哄簱浣�");
                 }
-                // 鍙敤搴撲綅缁�
-                List<LocMast> locMastList = new ArrayList<>();
-                for(LocMast locMast1:collect) {
-                    Optional<LocMast> first = collect1.stream().filter(locMast2 -> locMast1.getRow1() + 1 == locMast2.getRow1() && Objects.equals(locMast1.getLev1(), locMast2.getLev1())
-                            && Objects.equals(locMast1.getBay1(), locMast2.getBay1())).findFirst();
-                    first.ifPresent(locMastList::add);
-                }
-
-                if (locMastList.size() == 0) {
-                    log.error("-----绌烘《搴撴棤瀵瑰簲绌虹┖妗剁粍----");
-                    throw new CoolException("绌烘《搴撴棤瀵瑰簲绌虹┖妗剁粍");
-                }
-                String model = findLocNoAttributeVo.getModel(); // 褰撳墠妗剁被鍨�
-                if (model.equals("208L") && locMastList.size() <= 40 * 2 * 2) { // 鏈�涓婇潰涓�灞傚彧鑳芥斁208L锛屽簱浣嶅墿浣欓噺涓嶅鏃讹紝濡傛灉鏄�208L妗跺叆搴擄紝鍒欏厛浠庢渶椤跺眰鏀�
-                    locMastList = locMastList.stream().sorted(Comparator.comparing(LocMast::getLev1).reversed().thenComparing(LocMast::getBay1).thenComparing(LocMast::getRow1)).collect(Collectors.toList());
-                } else {
-                    locMastList = locMastList.stream().sorted(Comparator.comparing(LocMast::getLev1).thenComparing(LocMast::getBay1).thenComparing(LocMast::getRow1)).collect(Collectors.toList());
-                }
-                locMast = locMastList.get(0);
-
-            } else {
-                WrkMast wrkMast = wrkMastList.get(0); // 鏈�鍚庝竴涓叆绌烘《搴撲换鍔�
-                // 鍓嶄竴涓换鍔℃《绫诲瀷
-                String oldModel = wrkMast.getPdcType();
-                // 鍓嶄竴涓换鍔″熬鎵樻爣璇�
-                Integer oldCtnType = wrkMast.getCtnType();
-                // 褰撳墠妗剁被鍨�
-                String matnr = findLocNoAttributeVo.getMatnr();
-                if(findLocNoAttributeVo.getMatnr().equals(wrkMast.getPdcType())) { // 褰撳墠妗朵笌鍓嶆《鏄竴绉嶇被鍨�
-                    // 褰撳墠妗剁被鍨嬬殑浠诲姟鏈夊嚑涓�
-                    long count = wrkMastList.stream().filter(wrkMast1 -> wrkMast1.getPdcType().equals(matnr)).count();
-                    if (count % 2  == 0) { // 鍋舵暟锛屽彇涓�缁勬柊搴撲綅
-                        // 鍙栨柊搴撲綅缁勭殑绗竴涓簱浣�
-                        List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>().eq("crn_no", 4).eq("loc_sts", "O"));
-                        List<LocMast> collect = locMasts.stream().filter(locMast1 -> locMast1.getRow1() == 9 || locMast1.getRow1() == 11).collect(Collectors.toList());
-                        List<LocMast> collect1 = locMasts.stream().filter(locMast1 -> locMast1.getRow1() == 10 || locMast1.getRow1() == 12).collect(Collectors.toList()); // 绗竴涓厛鏀捐繖涓ゆ帓
-                        if (collect.size() == 0 || collect1.size() == 0) {
-                            log.error("-----绌烘《搴撴棤绌哄簱浣�----");
-                            throw new CoolException("绌烘《搴撴棤绌哄簱浣�");
-                        }
-                        // 鍙敤搴撲綅缁�
-                        List<LocMast> locMastList = new ArrayList<>();
-                        for(LocMast locMast1:collect) {
-                            Optional<LocMast> first = collect1.stream().filter(locMast2 -> locMast1.getRow1() + 1 == locMast2.getRow1() && Objects.equals(locMast1.getLev1(), locMast2.getLev1())
-                                    && Objects.equals(locMast1.getBay1(), locMast2.getBay1())).findFirst();
-                            first.ifPresent(locMastList::add);
-                        }
-
-                        if (locMastList.size() == 0) {
-                            log.error("-----绌烘《搴撴棤瀵瑰簲绌虹┖妗剁粍----");
-                            throw new CoolException("绌烘《搴撴棤瀵瑰簲绌虹┖妗剁粍");
-                        }
-                        String model = findLocNoAttributeVo.getModel(); // 褰撳墠妗剁被鍨�
-                        if (model.equals("208L") && locMastList.size() <= 40 * 2 * 2) { // 鏈�涓婇潰涓�灞傚彧鑳芥斁208L锛屽簱浣嶅墿浣欓噺涓嶅鏃讹紝濡傛灉鏄�208L妗跺叆搴擄紝鍒欏厛浠庢渶椤跺眰鏀�
-                            locMastList = locMastList.stream().sorted(Comparator.comparing(LocMast::getLev1).reversed().thenComparing(LocMast::getBay1).thenComparing(LocMast::getRow1)).collect(Collectors.toList());
-                        } else {
-                            locMastList = locMastList.stream().sorted(Comparator.comparing(LocMast::getLev1).thenComparing(LocMast::getBay1).thenComparing(LocMast::getRow1)).collect(Collectors.toList());
-                        }
-                        locMast = locMastList.get(0);
-                    } else { // 濂囨暟锛屽彇鍓嶄竴搴撲綅瀵瑰簲鐨勭┖搴撲綅
-                        String locNo = wrkMast.getLocNo();
-                        int row = Integer.parseInt(locNo.substring(0, 2));
-                        if(row == 10 || row == 12) {
-                            String newLocNo =(row == 10 ? "09" : "11") + locNo.substring(2);
-                            locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", newLocNo).eq("loc_sts","O"));
-                            if (locMast == null) {
-                                log.error("-----涓庡墠闈㈡《绫诲瀷涓�鏍凤紝鍓嶉潰璇ユ《绫诲瀷浠诲姟鏁版槸濂囨暟锛�10锛�12鎺�,浣嗘槸瀵瑰簲搴撲綅涓嶄负绌�----");
-                                throw new CoolException("涓庡墠闈㈡《绫诲瀷涓�鏍凤紝鍓嶉潰璇ユ《绫诲瀷浠诲姟鏁版槸濂囨暟锛屾槸10锛�12鎺�,浣嗘槸瀵瑰簲搴撲綅涓嶄负绌�");
-                            }
-                        } else {
-                            log.error("-----涓庡墠闈㈡《绫诲瀷涓�鏍凤紝鍓嶉潰璇ユ《绫诲瀷浠诲姟鏁版槸濂囨暟锛屼絾鏄笉鏄�10锛�12鎺�----");
-                            throw new CoolException("涓庡墠闈㈡《绫诲瀷涓�鏍凤紝鍓嶉潰璇ユ《绫诲瀷浠诲姟鏁版槸濂囨暟锛屼絾鏄笉鏄�10锛�12鎺�");
-                        }
-                    }
-                } else { // 褰撳墠妗朵笌鍓嶆《涓嶆槸涓�绉嶇被鍨�
-                      if(oldCtnType == 1) { // 鍓嶉潰鏄熬妗�
-                          // 鍙栨柊搴撲綅缁勭殑绗竴涓簱浣�
-                          List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>().eq("crn_no", 4).eq("loc_sts", "O"));
-                          List<LocMast> collect = locMasts.stream().filter(locMast1 -> locMast1.getRow1() == 9 || locMast1.getRow1() == 11).collect(Collectors.toList());
-                          List<LocMast> collect1 = locMasts.stream().filter(locMast1 -> locMast1.getRow1() == 10 || locMast1.getRow1() == 12).collect(Collectors.toList()); // 绗竴涓厛鏀捐繖涓ゆ帓
-                          if (collect.size() == 0 || collect1.size() == 0) {
-                              log.error("-----绌烘《搴撴棤绌哄簱浣�----");
-                              throw new CoolException("绌烘《搴撴棤绌哄簱浣�");
-                          }
-                          // 鍙敤搴撲綅缁�
-                          List<LocMast> locMastList = new ArrayList<>();
-                          for(LocMast locMast1:collect) {
-                              Optional<LocMast> first = collect1.stream().filter(locMast2 -> locMast1.getRow1() + 1 == locMast2.getRow1() && Objects.equals(locMast1.getLev1(), locMast2.getLev1())
-                                      && Objects.equals(locMast1.getBay1(), locMast2.getBay1())).findFirst();
-                              first.ifPresent(locMastList::add);
-                          }
-
-                          if (locMastList.size() == 0) {
-                              log.error("-----绌烘《搴撴棤瀵瑰簲绌虹┖妗剁粍----");
-                              throw new CoolException("绌烘《搴撴棤瀵瑰簲绌虹┖妗剁粍");
-                          }
-                          String model = findLocNoAttributeVo.getModel(); // 褰撳墠妗剁被鍨�
-                          if (model.equals("208L") && locMastList.size() <= 40 * 2 * 2) { // 鏈�涓婇潰涓�灞傚彧鑳芥斁208L锛屽簱浣嶅墿浣欓噺涓嶅鏃讹紝濡傛灉鏄�208L妗跺叆搴擄紝鍒欏厛浠庢渶椤跺眰鏀�
-                              locMastList = locMastList.stream().sorted(Comparator.comparing(LocMast::getLev1).reversed().thenComparing(LocMast::getBay1).thenComparing(LocMast::getRow1)).collect(Collectors.toList());
-                          } else {
-                              locMastList = locMastList.stream().sorted(Comparator.comparing(LocMast::getLev1).thenComparing(LocMast::getBay1).thenComparing(LocMast::getRow1)).collect(Collectors.toList());
-                          }
-                          locMast = locMastList.get(0);
-                      } else { // 鍓嶉潰涓嶆槸灏炬《
-                          // 鍒ゆ柇鍓嶉潰鍏ョ┖妗跺簱浠诲姟鏁伴噺(鏈墽琛屽爢鍨涙満鍏ュ簱)
-                          long count = wrkMastList.stream().filter(wrkMast1 -> wrkMast1.getPdcType().equals(oldModel)).count();
-                          if (count % 2 == 0) { // 鍋舵暟锛屽彲浠ュ叆搴�
-                              // 鍙栨柊搴撲綅缁勭殑绗竴涓簱浣�
-                              List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>().eq("crn_no", 4).eq("loc_sts", "O"));
-                              List<LocMast> collect = locMasts.stream().filter(locMast1 -> locMast1.getRow1() == 9 || locMast1.getRow1() == 11).collect(Collectors.toList());
-                              List<LocMast> collect1 = locMasts.stream().filter(locMast1 -> locMast1.getRow1() == 10 || locMast1.getRow1() == 12).collect(Collectors.toList()); // 绗竴涓厛鏀捐繖涓ゆ帓
-                              if (collect.size() == 0 || collect1.size() == 0) {
-                                  log.error("-----绌烘《搴撴棤绌哄簱浣�----");
-                                  throw new CoolException("绌烘《搴撴棤绌哄簱浣�");
-                              }
-                              // 鍙敤搴撲綅缁�
-                              List<LocMast> locMastList = new ArrayList<>();
-                              for(LocMast locMast1:collect) {
-                                  Optional<LocMast> first = collect1.stream().filter(locMast2 -> locMast1.getRow1() + 1 == locMast2.getRow1() && Objects.equals(locMast1.getLev1(), locMast2.getLev1())
-                                          && Objects.equals(locMast1.getBay1(), locMast2.getBay1())).findFirst();
-                                  first.ifPresent(locMastList::add);
-                              }
-
-                              if (locMastList.size() == 0) {
-                                  log.error("-----绌烘《搴撴棤瀵瑰簲绌虹┖妗剁粍----");
-                                  throw new CoolException("绌烘《搴撴棤瀵瑰簲绌虹┖妗剁粍");
-                              }
-                              String model = findLocNoAttributeVo.getModel(); // 褰撳墠妗剁被鍨�
-                              if (model.equals("208L") && locMastList.size() <= 40 * 2 * 2) { // 鏈�涓婇潰涓�灞傚彧鑳芥斁208L锛屽簱浣嶅墿浣欓噺涓嶅鏃讹紝濡傛灉鏄�208L妗跺叆搴擄紝鍒欏厛浠庢渶椤跺眰鏀�
-                                  locMastList = locMastList.stream().sorted(Comparator.comparing(LocMast::getLev1).reversed().thenComparing(LocMast::getBay1).thenComparing(LocMast::getRow1)).collect(Collectors.toList());
-                              } else {
-                                  locMastList = locMastList.stream().sorted(Comparator.comparing(LocMast::getLev1).thenComparing(LocMast::getBay1).thenComparing(LocMast::getRow1)).collect(Collectors.toList());
-                              }
-                              locMast = locMastList.get(0);
-                          } else { // 濂囨暟锛屼笉鍙互鍏ュ簱
-                              // 鑷姩缁欏墠闈换鍔¤ˉ灏炬《淇″彿
-                              wrkMastService.updateCtnType(wrkMast);
-                              log.error("-----涓庡墠闈㈡《绫诲瀷涓嶄竴鏍凤紝鍓嶉潰妗朵笉鏄熬妗讹紝鍓嶉潰璇ユ《绫诲瀷浠诲姟鏁颁笉鏄伓鏁帮紝涓嶈兘鍏ュ簱----");
-                              throw new CoolException("涓庡墠闈㈡《绫诲瀷涓嶄竴鏍凤紝鍓嶉潰妗朵笉鏄熬妗讹紝鍓嶉潰璇ユ《绫诲瀷浠诲姟鏁颁笉鏄伓鏁帮紝涓嶈兘鍏ュ簱");
-                          }
-                      }
-                }
-            }
+//                // 鍙敤搴撲綅缁�
+//                List<LocMast> locMastList = new ArrayList<>();
+//                for(LocMast locMast1:collect) {
+//                    Optional<LocMast> first = collect1.stream().filter(locMast2 -> locMast1.getRow1() + 1 == locMast2.getRow1() && Objects.equals(locMast1.getLev1(), locMast2.getLev1())
+//                            && Objects.equals(locMast1.getBay1(), locMast2.getBay1())).findFirst();
+//                    first.ifPresent(locMastList::add);
+//                }
+//
+//                if (locMastList.size() == 0) {
+//                    log.error("-----绌烘《搴撴棤瀵瑰簲绌虹┖妗剁粍----");
+//                    throw new CoolException("绌烘《搴撴棤瀵瑰簲绌虹┖妗剁粍");
+//                }
+//                String model = findLocNoAttributeVo.getModel(); // 褰撳墠妗剁被鍨�
+//                if (model.equals("208L") && locMastList.size() <= 40 * 2 * 2) { // 鏈�涓婇潰涓�灞傚彧鑳芥斁208L锛屽簱浣嶅墿浣欓噺涓嶅鏃讹紝濡傛灉鏄�208L妗跺叆搴擄紝鍒欏厛浠庢渶椤跺眰鏀�
+//                    locMastList = locMastList.stream().sorted(Comparator.comparing(LocMast::getLev1).reversed().thenComparing(LocMast::getBay1).thenComparing(LocMast::getRow1)).collect(Collectors.toList());
+//                } else {
+//                    locMastList = locMastList.stream().sorted(Comparator.comparing(LocMast::getLev1).thenComparing(LocMast::getBay1).thenComparing(LocMast::getRow1)).collect(Collectors.toList());
+//                }
+//                locMast = locMastList.get(0);
+//
+//            } else {
+//                WrkMast wrkMast = wrkMastList.get(0); // 鏈�鍚庝竴涓叆绌烘《搴撲换鍔�
+//                // 鍓嶄竴涓换鍔℃《绫诲瀷
+//                String oldModel = wrkMast.getPdcType();
+//                // 鍓嶄竴涓换鍔″熬鎵樻爣璇�
+//                Integer oldCtnType = wrkMast.getCtnType();
+//                // 褰撳墠妗剁被鍨�
+//                String matnr = findLocNoAttributeVo.getMatnr();
+//                if(findLocNoAttributeVo.getMatnr().equals(wrkMast.getPdcType())) { // 褰撳墠妗朵笌鍓嶆《鏄竴绉嶇被鍨�
+//                    // 褰撳墠妗剁被鍨嬬殑浠诲姟鏈夊嚑涓�
+//                    long count = wrkMastList.stream().filter(wrkMast1 -> wrkMast1.getPdcType().equals(matnr)).count();
+//                    if (count % 2  == 0) { // 鍋舵暟锛屽彇涓�缁勬柊搴撲綅
+//                        // 鍙栨柊搴撲綅缁勭殑绗竴涓簱浣�
+//                        List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>().eq("crn_no", 4).eq("loc_sts", "O"));
+//                        List<LocMast> collect = locMasts.stream().filter(locMast1 -> locMast1.getRow1() == 9 || locMast1.getRow1() == 11).collect(Collectors.toList());
+//                        List<LocMast> collect1 = locMasts.stream().filter(locMast1 -> locMast1.getRow1() == 10 || locMast1.getRow1() == 12).collect(Collectors.toList()); // 绗竴涓厛鏀捐繖涓ゆ帓
+//                        if (collect.size() == 0 || collect1.size() == 0) {
+//                            log.error("-----绌烘《搴撴棤绌哄簱浣�----");
+//                            throw new CoolException("绌烘《搴撴棤绌哄簱浣�");
+//                        }
+//                        // 鍙敤搴撲綅缁�
+//                        List<LocMast> locMastList = new ArrayList<>();
+//                        for(LocMast locMast1:collect) {
+//                            Optional<LocMast> first = collect1.stream().filter(locMast2 -> locMast1.getRow1() + 1 == locMast2.getRow1() && Objects.equals(locMast1.getLev1(), locMast2.getLev1())
+//                                    && Objects.equals(locMast1.getBay1(), locMast2.getBay1())).findFirst();
+//                            first.ifPresent(locMastList::add);
+//                        }
+//
+//                        if (locMastList.size() == 0) {
+//                            log.error("-----绌烘《搴撴棤瀵瑰簲绌虹┖妗剁粍----");
+//                            throw new CoolException("绌烘《搴撴棤瀵瑰簲绌虹┖妗剁粍");
+//                        }
+//                        String model = findLocNoAttributeVo.getModel(); // 褰撳墠妗剁被鍨�
+//                        if (model.equals("208L") && locMastList.size() <= 40 * 2 * 2) { // 鏈�涓婇潰涓�灞傚彧鑳芥斁208L锛屽簱浣嶅墿浣欓噺涓嶅鏃讹紝濡傛灉鏄�208L妗跺叆搴擄紝鍒欏厛浠庢渶椤跺眰鏀�
+//                            locMastList = locMastList.stream().sorted(Comparator.comparing(LocMast::getLev1).reversed().thenComparing(LocMast::getBay1).thenComparing(LocMast::getRow1)).collect(Collectors.toList());
+//                        } else {
+//                            locMastList = locMastList.stream().sorted(Comparator.comparing(LocMast::getLev1).thenComparing(LocMast::getBay1).thenComparing(LocMast::getRow1)).collect(Collectors.toList());
+//                        }
+//                        locMast = locMastList.get(0);
+//                    } else { // 濂囨暟锛屽彇鍓嶄竴搴撲綅瀵瑰簲鐨勭┖搴撲綅
+//                        String locNo = wrkMast.getLocNo();
+//                        int row = Integer.parseInt(locNo.substring(0, 2));
+//                        if(row == 10 || row == 12) {
+//                            String newLocNo =(row == 10 ? "09" : "11") + locNo.substring(2);
+//                            locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", newLocNo).eq("loc_sts","O"));
+//                            if (locMast == null) {
+//                                log.error("-----涓庡墠闈㈡《绫诲瀷涓�鏍凤紝鍓嶉潰璇ユ《绫诲瀷浠诲姟鏁版槸濂囨暟锛�10锛�12鎺�,浣嗘槸瀵瑰簲搴撲綅涓嶄负绌�----");
+//                                throw new CoolException("涓庡墠闈㈡《绫诲瀷涓�鏍凤紝鍓嶉潰璇ユ《绫诲瀷浠诲姟鏁版槸濂囨暟锛屾槸10锛�12鎺�,浣嗘槸瀵瑰簲搴撲綅涓嶄负绌�");
+//                            }
+//                        } else {
+//                            // 鑷姩缁欏墠闈换鍔¤ˉ灏炬《淇″彿
+//                            wrkMastService.updateCtnType(wrkMast);
+//                            log.error("-----涓庡墠闈㈡《绫诲瀷涓�鏍凤紝鍓嶉潰璇ユ《绫诲瀷浠诲姟鏁版槸濂囨暟锛屼絾鏄笉鏄�10锛�12鎺�----");
+//                            throw new CoolException("涓庡墠闈㈡《绫诲瀷涓�鏍凤紝鍓嶉潰璇ユ《绫诲瀷浠诲姟鏁版槸濂囨暟锛屼絾鏄笉鏄�10锛�12鎺�");
+//                        }
+//                    }
+//                } else { // 褰撳墠妗朵笌鍓嶆《涓嶆槸涓�绉嶇被鍨�
+//                      if(oldCtnType == 1) { // 鍓嶉潰鏄熬妗�
+//                          // 鍙栨柊搴撲綅缁勭殑绗竴涓簱浣�
+//                          List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>().eq("crn_no", 4).eq("loc_sts", "O"));
+//                          List<LocMast> collect = locMasts.stream().filter(locMast1 -> locMast1.getRow1() == 9 || locMast1.getRow1() == 11).collect(Collectors.toList());
+//                          List<LocMast> collect1 = locMasts.stream().filter(locMast1 -> locMast1.getRow1() == 10 || locMast1.getRow1() == 12).collect(Collectors.toList()); // 绗竴涓厛鏀捐繖涓ゆ帓
+//                          if (collect.size() == 0 || collect1.size() == 0) {
+//                              log.error("-----绌烘《搴撴棤绌哄簱浣�----");
+//                              throw new CoolException("绌烘《搴撴棤绌哄簱浣�");
+//                          }
+//                          // 鍙敤搴撲綅缁�
+//                          List<LocMast> locMastList = new ArrayList<>();
+//                          for(LocMast locMast1:collect) {
+//                              Optional<LocMast> first = collect1.stream().filter(locMast2 -> locMast1.getRow1() + 1 == locMast2.getRow1() && Objects.equals(locMast1.getLev1(), locMast2.getLev1())
+//                                      && Objects.equals(locMast1.getBay1(), locMast2.getBay1())).findFirst();
+//                              first.ifPresent(locMastList::add);
+//                          }
+//
+//                          if (locMastList.size() == 0) {
+//                              log.error("-----绌烘《搴撴棤瀵瑰簲绌虹┖妗剁粍----");
+//                              throw new CoolException("绌烘《搴撴棤瀵瑰簲绌虹┖妗剁粍");
+//                          }
+//                          String model = findLocNoAttributeVo.getModel(); // 褰撳墠妗剁被鍨�
+//                          if (model.equals("208L") && locMastList.size() <= 40 * 2 * 2) { // 鏈�涓婇潰涓�灞傚彧鑳芥斁208L锛屽簱浣嶅墿浣欓噺涓嶅鏃讹紝濡傛灉鏄�208L妗跺叆搴擄紝鍒欏厛浠庢渶椤跺眰鏀�
+//                              locMastList = locMastList.stream().sorted(Comparator.comparing(LocMast::getLev1).reversed().thenComparing(LocMast::getBay1).thenComparing(LocMast::getRow1)).collect(Collectors.toList());
+//                          } else {
+//                              locMastList = locMastList.stream().sorted(Comparator.comparing(LocMast::getLev1).thenComparing(LocMast::getBay1).thenComparing(LocMast::getRow1)).collect(Collectors.toList());
+//                          }
+//                          locMast = locMastList.get(0);
+//                      } else { // 鍓嶉潰涓嶆槸灏炬《
+//                          // 鍒ゆ柇鍓嶉潰鍏ョ┖妗跺簱浠诲姟鏁伴噺(鏈墽琛屽爢鍨涙満鍏ュ簱)
+//                          long count = wrkMastList.stream().filter(wrkMast1 -> wrkMast1.getPdcType().equals(oldModel)).count();
+//                          if (count % 2 == 0) { // 鍋舵暟锛屽彲浠ュ叆搴�
+//                              // 鍙栨柊搴撲綅缁勭殑绗竴涓簱浣�
+//                              List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>().eq("crn_no", 4).eq("loc_sts", "O"));
+//                              List<LocMast> collect = locMasts.stream().filter(locMast1 -> locMast1.getRow1() == 9 || locMast1.getRow1() == 11).collect(Collectors.toList());
+//                              List<LocMast> collect1 = locMasts.stream().filter(locMast1 -> locMast1.getRow1() == 10 || locMast1.getRow1() == 12).collect(Collectors.toList()); // 绗竴涓厛鏀捐繖涓ゆ帓
+//                              if (collect.size() == 0 || collect1.size() == 0) {
+//                                  log.error("-----绌烘《搴撴棤绌哄簱浣�----");
+//                                  throw new CoolException("绌烘《搴撴棤绌哄簱浣�");
+//                              }
+//                              // 鍙敤搴撲綅缁�
+//                              List<LocMast> locMastList = new ArrayList<>();
+//                              for(LocMast locMast1:collect) {
+//                                  Optional<LocMast> first = collect1.stream().filter(locMast2 -> locMast1.getRow1() + 1 == locMast2.getRow1() && Objects.equals(locMast1.getLev1(), locMast2.getLev1())
+//                                          && Objects.equals(locMast1.getBay1(), locMast2.getBay1())).findFirst();
+//                                  first.ifPresent(locMastList::add);
+//                              }
+//
+//                              if (locMastList.size() == 0) {
+//                                  log.error("-----绌烘《搴撴棤瀵瑰簲绌虹┖妗剁粍----");
+//                                  throw new CoolException("绌烘《搴撴棤瀵瑰簲绌虹┖妗剁粍");
+//                              }
+//                              String model = findLocNoAttributeVo.getModel(); // 褰撳墠妗剁被鍨�
+//                              if (model.equals("208L") && locMastList.size() <= 40 * 2 * 2) { // 鏈�涓婇潰涓�灞傚彧鑳芥斁208L锛屽簱浣嶅墿浣欓噺涓嶅鏃讹紝濡傛灉鏄�208L妗跺叆搴擄紝鍒欏厛浠庢渶椤跺眰鏀�
+//                                  locMastList = locMastList.stream().sorted(Comparator.comparing(LocMast::getLev1).reversed().thenComparing(LocMast::getBay1).thenComparing(LocMast::getRow1)).collect(Collectors.toList());
+//                              } else {
+//                                  locMastList = locMastList.stream().sorted(Comparator.comparing(LocMast::getLev1).thenComparing(LocMast::getBay1).thenComparing(LocMast::getRow1)).collect(Collectors.toList());
+//                              }
+//                              locMast = locMastList.get(0);
+//                          } else { // 濂囨暟锛屼笉鍙互鍏ュ簱
+//                              // 鑷姩缁欏墠闈换鍔¤ˉ灏炬《淇″彿
+//                              wrkMastService.updateCtnType(wrkMast);
+//                              log.error("-----涓庡墠闈㈡《绫诲瀷涓嶄竴鏍凤紝鍓嶉潰妗朵笉鏄熬妗讹紝鍓嶉潰璇ユ《绫诲瀷浠诲姟鏁颁笉鏄伓鏁帮紝涓嶈兘鍏ュ簱----");
+//                              throw new CoolException("涓庡墠闈㈡《绫诲瀷涓嶄竴鏍凤紝鍓嶉潰妗朵笉鏄熬妗讹紝鍓嶉潰璇ユ《绫诲瀷浠诲姟鏁颁笉鏄伓鏁帮紝涓嶈兘鍏ュ簱");
+//                          }
+//                      }
+//                }
+//            }
 
         } else if ((staDescId == 1 && locArea == 1) || staDescId == 10) { // 婊℃澘鍏ユ垚鍝佸簱鎴栬�呯┖鏉垮叆鎴愬搧搴�
 
             // 鍏ユ垚鍝佸簱鎽嗘斁瑙勫垯 鍒ゆ柇鍙敤鍫嗗灈鏈鸿嚜鍔�-鏃犳姤璀� 鎸夊眰鍒楁帓椤哄簭浠庝笅寰�涓婏紝浠庡墠寰�鍚庢帓 鍏堟繁搴撲綅鍦ㄦ祬搴撲綅 鏈�涓婇潰涓�灞傚彧鑳芥斁208L妗�(鍓╀綑搴撲綅杈惧埌涓�涓槇鍊�208L灏卞厛浠庢渶涓婇潰寮�濮嬫斁锛屼笅闈㈢暀缁欏叾浠栬揣鐗�-鍚庣画浼樺寲)
 
-            List<BasCrnp> basCrnps = basCrnpService.selectList(new EntityWrapper<BasCrnp>().eq("crn_sts", 3).eq("crn_err", 0).in("crn_no",1,2,3));
+            List<BasCrnp> basCrnps = basCrnpService.selectList(new EntityWrapper<BasCrnp>().eq("crn_sts", 3).eq("crn_err", 0).in("crn_no",1,2,3)
+                    .eq("in_enable","Y"));
             if (basCrnps.size() == 0) {
                 log.error("鍏ュ簱璇锋眰搴撲綅澶辫触锛屾病鏈夎仈鏈哄爢鍨涙満鎴栧爢鍨涙満寮傚父");
                 throw new CoolException("鍏ュ簱璇锋眰搴撲綅澶辫触锛屾病鏈夎仈鏈哄爢鍨涙満鎴栧爢鍨涙満寮傚父");
@@ -341,7 +363,12 @@
                 basCrnpList.add(basCrnp);
             }
 
-            basCrnpList = basCrnpList.stream().sorted(Comparator.comparing(BasCrnp::getWrkNo)).collect(Collectors.toList());
+            basCrnpList = basCrnpList.stream().sorted(Comparator.comparing(BasCrnp::getWrkNo).thenComparing(BasCrnp::getCrnNo,((o1, o2) -> {
+                // 瀹氫箟 2 鈫� 3 鈫� 1 鐨勪紭鍏堢骇
+                int order1 = getCustomOrder(o1);
+                int order2 = getCustomOrder(o2);
+                return Integer.compare(order1, order2);
+            }))).collect(Collectors.toList());
 
             // 鍏ュ簱妗跺瀷
             String model = findLocNoAttributeVo.getModel();
@@ -413,6 +440,16 @@
         return startupDto;
     }
 
+    // 杈呭姪鏂规硶锛氬畾涔� crn_no 鐨勬帓搴忎紭鍏堢骇
+    private static int getCustomOrder(Integer crnNo) {
+        switch (crnNo) {
+            case 2: return 1;  // 2 鎺掔涓�
+            case 3: return 2;  // 3 鎺掔浜�
+            case 1: return 3;  // 1 鎺掔涓�
+            default: return 4; // 鍏朵粬鍊兼帓鏈�鍚庯紙濡傛灉鏈夛級
+        }
+    }
+
     @Transactional(propagation = Propagation.REQUIRED)
     public StartupDto getLocNo(SearchLocParam param, Integer staNo) {
 

--
Gitblit v1.9.1