From e6fc4345bb82c01a190c16093a175b87573525b7 Mon Sep 17 00:00:00 2001
From: LSH
Date: 星期六, 11 二月 2023 11:16:52 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/asrs/service/impl/LocMastServiceImpl.java |    9 +++-
 src/main/resources/mapper/LocMastMapper.xml                    |   19 +++++++++
 src/main/java/com/zy/asrs/mapper/LocMastMapper.java            |    4 +
 src/main/java/com/zy/asrs/service/LocMastService.java          |    7 +++
 src/main/java/com/zy/common/service/CommonService.java         |   26 +++++++++---
 src/main/resources/application.yml                             |    2 +
 6 files changed, 55 insertions(+), 12 deletions(-)

diff --git a/src/main/java/com/zy/asrs/mapper/LocMastMapper.java b/src/main/java/com/zy/asrs/mapper/LocMastMapper.java
index c495423..46de5b0 100644
--- a/src/main/java/com/zy/asrs/mapper/LocMastMapper.java
+++ b/src/main/java/com/zy/asrs/mapper/LocMastMapper.java
@@ -17,7 +17,9 @@
 
     LocMast queryFreeLocMast1(@Param("row") Integer row, @Param("locType1") Short locType1 ,@Param("channelMax") int channelMax);
 
-    LocMast queryFreeLocMast2(@Param("row") Integer row, @Param("locType1") Short locType1);
+    LocMast queryFreeLocMast2(@Param("row") Integer row, @Param("locType1") Short locType1, @Param("locType2") Short locType2);
+
+    Integer queryFreeLocMastCount(@Param("row") Integer row, @Param("locType1") Short locType1, @Param("locType2") Short locType2);
 
     @Select("select loc_no from asr_loc_mast where 1=1 and loc_sts = 'O' and crn_no = #{crnNo}")
     List<String> queryGroupEmptyStock(Integer crnNo);
diff --git a/src/main/java/com/zy/asrs/service/LocMastService.java b/src/main/java/com/zy/asrs/service/LocMastService.java
index e137a2c..db7cb1d 100644
--- a/src/main/java/com/zy/asrs/service/LocMastService.java
+++ b/src/main/java/com/zy/asrs/service/LocMastService.java
@@ -21,7 +21,12 @@
     /**
      * 妫�绱㈠彲鐢ㄥ簱浣�
      */
-    LocMast queryFreeLocMast2(Integer row, Short locType1);
+    LocMast queryFreeLocMast2(Integer row, Short locType1, Short locType2);
+
+    /**
+     * 妫�绱㈠彲鐢ㄥ簱浣�
+     */
+    Integer queryFreeLocMastCount(Integer row, Short locType1, Short locType2);
 
     /**
      * 鑾峰彇鍚岀粍璐ф灦鐨勭┖搴撲綅
diff --git a/src/main/java/com/zy/asrs/service/impl/LocMastServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/LocMastServiceImpl.java
index 163de40..97348ce 100644
--- a/src/main/java/com/zy/asrs/service/impl/LocMastServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/LocMastServiceImpl.java
@@ -29,8 +29,13 @@
     }
 
     @Override
-    public LocMast queryFreeLocMast2(Integer row, Short locType1) {
-        return this.baseMapper.queryFreeLocMast2(row, locType1);
+    public LocMast queryFreeLocMast2(Integer row, Short locType1, Short locType2) {
+        return this.baseMapper.queryFreeLocMast2(row, locType1 ,locType2);
+    }
+
+    @Override
+        public Integer queryFreeLocMastCount(Integer row, Short locType1, Short locType2) {
+        return this.baseMapper.queryFreeLocMastCount(row, locType1 ,locType2);
     }
 
 
diff --git a/src/main/java/com/zy/common/service/CommonService.java b/src/main/java/com/zy/common/service/CommonService.java
index 0ca81d5..d27601c 100644
--- a/src/main/java/com/zy/common/service/CommonService.java
+++ b/src/main/java/com/zy/common/service/CommonService.java
@@ -3,16 +3,12 @@
 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.service.*;
-import com.zy.asrs.utils.Utils;
-import com.zy.asrs.utils.VersionUtils;
 import com.zy.common.entity.Parameter;
 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 lombok.extern.slf4j.Slf4j;
@@ -51,6 +47,8 @@
     private SlaveProperties slaveProperties;
     @Value("${channel.channelMax}")
     private Integer channelMax;
+    @Value("${channel.equipmentCount}")
+    private Integer equipmentCount;
 
     /**
      * 鐢熸垚宸ヤ綔鍙�
@@ -162,10 +160,10 @@
             } else if (ruleId == 1){  //鎸夋祴璇曡澶囨帓搴忥紝浼樺厛鎺掓弧鍗曞彴璁惧
                 locMast = locMastService.queryFreeLocMast1(curRow, locTypeDto.getLocType1() ,channelMax+1);
             } else if (ruleId == 2){  //鎸夐�氶亾鎺掑簭锛屽潎鍖�鍒嗛厤姣忓彴璁惧
-
-                locMast = locMastService.queryFreeLocMast2(curRow, locTypeDto.getLocType1() );
+                Short locType2 = getLocType2Small(curRow, locTypeDto.getLocType1());
+                locMast = locMastService.queryFreeLocMast2(curRow, locTypeDto.getLocType1() ,locType2);
             } else { //榛樿瑙勫垯
-                locMast = locMastService.queryFreeLocMast(curRow, locTypeDto.getLocType1());
+                locMast = locMastService.queryFreeLocMast2(curRow, locTypeDto.getLocType1(),(short)0);
             }
         }
 
@@ -193,4 +191,18 @@
         return startupDto;
     }
 
+    public Short getLocType2Small(Integer curRow,short locType1){
+        Integer OCount = locMastService.queryFreeLocMastCount(curRow, locType1, (short)1);
+        Short locType2=1;
+        for (int i=2;i<equipmentCount+1;i++){
+            Integer integer =locMastService.queryFreeLocMastCount(curRow, locType1, (short)i);
+            if (OCount<integer){
+                OCount=integer;
+                locType2=(short)i;
+            }
+        }
+
+        return locType2;
+    }
+
 }
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index 6a87a9f..c747e2e 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -56,6 +56,8 @@
 channel:
   # 鏈�澶ч�氶亾鏁�
   channelMax: 48
+  # 鍏呮斁鐢垫祴璇曟煖鏁伴噺
+  equipmentCount: 6
 
 # MES绯荤粺
 mes:
diff --git a/src/main/resources/mapper/LocMastMapper.xml b/src/main/resources/mapper/LocMastMapper.xml
index 9c463e0..57b8a01 100644
--- a/src/main/resources/mapper/LocMastMapper.xml
+++ b/src/main/resources/mapper/LocMastMapper.xml
@@ -70,13 +70,30 @@
         from asr_loc_mast
         where row1=#{row}
         and loc_sts='O'
-        and bay1=#{bay}
+        <if test="locType2 != null and locType != 0">
+            and loc_type2 = #{locType2}
+        </if>
+        <if test="locType2 != null and locType == 0">
+            and loc_type2 != null
+            and loc_type2 != #{locType2}
+        </if>
         <if test="locType1 != null">
             and loc_type1 = #{locType1}
         </if>
         order by lev1 asc,bay1 asc
     </select>
 
+    <select id="queryFreeLocMastCount" resultMap="BaseResultMap">
+        select count(1)
+        from asr_loc_mast
+        where row1=#{row}
+        and loc_sts='O'
+        and loc_type2 = #{locType2}
+        <if test="locType1 != null">
+            and loc_type1 = #{locType1}
+        </if>
+    </select>
+
     <select id="queryShallowLocFMast" resultMap="BaseResultMap">
         select * from asr_loc_mast
         where 1=1

--
Gitblit v1.9.1