From c7338c0fc1513507c05c1a7fd00bff8c11ad5d1e Mon Sep 17 00:00:00 2001 From: pang.jiabao <pang_jiabao@163.com> Date: 星期四, 24 十月 2024 08:49:01 +0800 Subject: [PATCH] 生成移库时寻找库位不占用备货区 --- src/main/java/com/zy/asrs/service/impl/LocMastServiceImpl.java | 5 +++++ src/main/java/com/zy/system/mapper/ConfigMapper.java | 6 +++++- src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 19 +++++++++++++++++-- src/main/resources/mapper/LocMastMapper.xml | 11 +++++++++++ src/main/java/com/zy/asrs/mapper/LocMastMapper.java | 5 +++++ src/main/resources/mapper/ConfigMapper.xml | 3 +++ src/main/java/com/zy/asrs/service/LocMastService.java | 5 +++++ 7 files changed, 51 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/zy/asrs/mapper/LocMastMapper.java b/src/main/java/com/zy/asrs/mapper/LocMastMapper.java index 9fd1d06..1232af6 100644 --- a/src/main/java/com/zy/asrs/mapper/LocMastMapper.java +++ b/src/main/java/com/zy/asrs/mapper/LocMastMapper.java @@ -22,6 +22,11 @@ LocMast queryFreeLocMast(@Param("row") Integer row, @Param("locType1") Short locType1); + /** + * 妫�绱㈠彲鐢ㄥ簱浣�,涓嶅崰鐢ㄥ璐у尯 + */ + LocMast queryFreeLocMastNotBay(@Param("row") Integer row, @Param("locType1") Short locType1,@Param("bay") Integer bay); + @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 bc45966..31f4075 100644 --- a/src/main/java/com/zy/asrs/service/LocMastService.java +++ b/src/main/java/com/zy/asrs/service/LocMastService.java @@ -18,6 +18,11 @@ LocMast queryFreeLocMast(Integer row, Short locType1); /** + * 妫�绱㈠彲鐢ㄥ簱浣�,涓嶅崰鐢ㄥ璐у尯 + */ + LocMast queryFreeLocMastNotBay(Integer row, Short locType1, Integer bay); + + /** * 鑾峰彇鍚岀粍璐ф灦鐨勭┖搴撲綅 * @param sourceLocNo 婧愬簱浣� * @return 鍚岀粍绌哄簱浣嶉泦鍚� 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 ababf93..59f47d8 100644 --- a/src/main/java/com/zy/asrs/service/impl/LocMastServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/LocMastServiceImpl.java @@ -23,6 +23,11 @@ } @Override + public LocMast queryFreeLocMastNotBay(Integer row, Short locType1, Integer bay) { + return this.baseMapper.queryFreeLocMastNotBay(row, locType1,bay); + } + + @Override public List<String> queryGroupEmptyStock(String sourceLocNo) { if (Cools.isEmpty(sourceLocNo)) { return null; diff --git a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java index 6c4e932..c7d420b 100644 --- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java @@ -38,6 +38,8 @@ import com.zy.core.thread.LedThread; import com.zy.core.thread.RgvThread; import com.zy.core.thread.SiemensDevpThread; +import com.zy.system.entity.Config; +import com.zy.system.mapper.ConfigMapper; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; @@ -45,6 +47,7 @@ import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.interceptor.TransactionAspectSupport; +import javax.annotation.Resource; import java.util.*; import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; @@ -100,6 +103,9 @@ private BasRgvMapMapper basRgvMapMapper; @Autowired private RgvOneSignMapper rgvOneSignMapper; + + @Resource + private ConfigMapper configMapper; @Value("${wms.url}") private String wmsUrl; @@ -2714,9 +2720,18 @@ try { List<Integer> rows = locMastService.queryDistinctRow(crn.getId()); LocMast loc = null; + + // 鑾峰彇澶囪揣鍖洪厤缃� + Config config = configMapper.selectConfigByCode("auto_stock_up"); + if (config == null) { + return; + } + // 澶囪揣鍙栨槸鍓嶅嚑鍒� + int bay1 = Integer.parseInt(config.getValue()); + for (Integer row : rows) { if (Utils.isDeepLoc(slaveProperties, row)) { - loc = locMastService.queryFreeLocMast(row, shallowLoc.getLocType1()); + loc = locMastService.queryFreeLocMastNotBay(row, shallowLoc.getLocType1(),bay1); if (loc != null) { if (Utils.isDeepLoc(slaveProperties, loc.getLocNo())) { @@ -2735,7 +2750,7 @@ if (null == loc) { for (Integer row : rows) { if (Utils.isShallowLoc(slaveProperties, row)) { - loc = locMastService.queryFreeLocMast(row, shallowLoc.getLocType1()); + loc = locMastService.queryFreeLocMastNotBay(row, shallowLoc.getLocType1(),bay1); if (null != loc) {//瀵瑰簲娣卞簱浣嶉潪鍦ㄥ簱鐘舵��,涓嶈兘绉诲簱 String deepLoc = Utils.getDeepLoc(slaveProperties, loc.getLocNo()); diff --git a/src/main/java/com/zy/system/mapper/ConfigMapper.java b/src/main/java/com/zy/system/mapper/ConfigMapper.java index 9ec6ab3..29400f6 100644 --- a/src/main/java/com/zy/system/mapper/ConfigMapper.java +++ b/src/main/java/com/zy/system/mapper/ConfigMapper.java @@ -3,10 +3,14 @@ import com.baomidou.mybatisplus.mapper.BaseMapper; import com.zy.system.entity.Config; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; import org.springframework.stereotype.Repository; @Mapper @Repository public interface ConfigMapper extends BaseMapper<Config> { - + /** + * 鏍规嵁缂栫爜鏌ヨ閰嶇疆璇︽儏 + */ + Config selectConfigByCode(@Param("code") String code); } diff --git a/src/main/resources/mapper/ConfigMapper.xml b/src/main/resources/mapper/ConfigMapper.xml index 8673fe5..b49e6b7 100644 --- a/src/main/resources/mapper/ConfigMapper.xml +++ b/src/main/resources/mapper/ConfigMapper.xml @@ -12,5 +12,8 @@ <result column="status" property="status" /> </resultMap> + <select id="selectConfigByCode" resultType="com.zy.system.entity.Config"> + select Top 1 * from sys_config where code = #{code} + </select> </mapper> diff --git a/src/main/resources/mapper/LocMastMapper.xml b/src/main/resources/mapper/LocMastMapper.xml index 7821af2..dadeb9b 100644 --- a/src/main/resources/mapper/LocMastMapper.xml +++ b/src/main/resources/mapper/LocMastMapper.xml @@ -58,5 +58,16 @@ select top 1 * from asr_loc_mast where crn_no = #{crnNo} and loc_sts = 'O' ORDER BY NEWID() </select> + <select id="queryFreeLocMastNotBay" resultMap="BaseResultMap"> + select top 1 * + from asr_loc_mast + where row1=#{row} + and loc_sts='O' + and bay1 > #{bay} + <if test="locType1 != null"> + and loc_type1 = #{locType1} + </if> + order by NEWID(),lev1 asc,bay1 asc + </select> </mapper> -- Gitblit v1.9.1