From 0ce7d62e80382c7fcd61cfbd3f5a0403800cb243 Mon Sep 17 00:00:00 2001
From: Junjie <540245094@qq.com>
Date: 星期二, 12 十二月 2023 14:40:50 +0800
Subject: [PATCH] #找库位V2
---
src/main/java/com/zy/asrs/service/impl/LocMastServiceImpl.java | 5 +
src/main/java/com/zy/asrs/mapper/LocDetlMapper.java | 2
src/main/java/com/zy/asrs/service/LocDetlService.java | 5 +
src/main/resources/mapper/LocDetlMapper.xml | 21 +++++++
src/main/resources/mapper/LocMastMapper.xml | 11 +++
src/main/resources/mapper/WrkMastMapper.xml | 4 +
src/main/java/com/zy/asrs/service/impl/LocDetlServiceImpl.java | 5 +
src/main/java/com/zy/asrs/service/WrkMastService.java | 4 +
src/main/java/com/zy/asrs/service/impl/WrkMastServiceImpl.java | 4 +
src/main/java/com/zy/asrs/mapper/LocMastMapper.java | 5 +
src/main/java/com/zy/asrs/mapper/WrkMastMapper.java | 1
src/main/java/com/zy/asrs/service/LocMastService.java | 5 +
src/main/java/com/zy/common/service/CommonService.java | 83 +++++++++++++++++++++------
13 files changed, 136 insertions(+), 19 deletions(-)
diff --git a/src/main/java/com/zy/asrs/mapper/LocDetlMapper.java b/src/main/java/com/zy/asrs/mapper/LocDetlMapper.java
index 46f540d..c650abe 100644
--- a/src/main/java/com/zy/asrs/mapper/LocDetlMapper.java
+++ b/src/main/java/com/zy/asrs/mapper/LocDetlMapper.java
@@ -32,6 +32,8 @@
List<String> selectSameDetl(@Param("matnr") String matnr);
+ List<String> selectSameLevDetl(@Param("matnr") String matnr, @Param("lev") Integer lev);
+
@Select("SELECT ld.loc_no FROM asr_loc_detl ld LEFT JOIN asr_loc_mast lm ON ld.loc_no = lm.loc_no WHERE (1 = 1 AND ld.matnr = #{matnr} AND (lm.row1 >= #{start} AND lm.row1 <= #{end}) AND lm.loc_sts = 'F' AND DateDiff(dd, lm.modi_time, getdate()) = 0) ORDER BY lm.modi_time ASC")
List<String> selectSameDetlToday(@Param("matnr") String matnr, @Param("start") Integer start, @Param("end") Integer end);
diff --git a/src/main/java/com/zy/asrs/mapper/LocMastMapper.java b/src/main/java/com/zy/asrs/mapper/LocMastMapper.java
index 8fc3b9a..35e946b 100644
--- a/src/main/java/com/zy/asrs/mapper/LocMastMapper.java
+++ b/src/main/java/com/zy/asrs/mapper/LocMastMapper.java
@@ -26,6 +26,11 @@
*/
List<LocMast> selectAreaEmpty(Short locType1, Integer locType3);
+ /**
+ * 鎼滅储鎸囧畾鍖哄煙鍙敤搴撲綅
+ */
+ List<LocMast> selectAreaEmptyByLev(Short locType1, Integer locType3, Integer lev);
+
LocMast selectAvailableNearLocDesc(@Param("groupLoc") List<String> groupOuterLoc);
LocMast selectAvailableNearLocAsc(@Param("groupOuterLoc") List<String> groupOuterLoc);
diff --git a/src/main/java/com/zy/asrs/mapper/WrkMastMapper.java b/src/main/java/com/zy/asrs/mapper/WrkMastMapper.java
index b175231..6e58ac5 100644
--- a/src/main/java/com/zy/asrs/mapper/WrkMastMapper.java
+++ b/src/main/java/com/zy/asrs/mapper/WrkMastMapper.java
@@ -29,4 +29,5 @@
List<WrkMast> selectSameMatnrs(@Param("matnr") String matnr);
+ List<WrkMast> selectSameLevMatnrs(@Param("matnr") String matnr, @Param("lev") Integer lev);
}
diff --git a/src/main/java/com/zy/asrs/service/LocDetlService.java b/src/main/java/com/zy/asrs/service/LocDetlService.java
index dece3cb..674438a 100644
--- a/src/main/java/com/zy/asrs/service/LocDetlService.java
+++ b/src/main/java/com/zy/asrs/service/LocDetlService.java
@@ -32,6 +32,11 @@
List<String> getSameDetl(String matnr);
/**
+ * 鑾峰彇鐩稿悓瑙勬牸璐х墿
+ */
+ List<String> getSameLevDetl(String matnr, Integer lev);
+
+ /**
* 鑾峰彇褰撳ぉ鐩稿悓瑙勬牸璐х墿鐨勬繁搴撲綅鍙�
* @param matnr 鐗╂枡鍙�
* @return locNo 搴撲綅鍙�
diff --git a/src/main/java/com/zy/asrs/service/LocMastService.java b/src/main/java/com/zy/asrs/service/LocMastService.java
index 4b8f371..38b0869 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 @@
List<LocMast> selectAreaEmpty(Short locType1, Integer locType3);
/**
+ * 鎼滅储鎸囧畾鍖哄煙鍙敤搴撲綅
+ */
+ List<LocMast> selectAreaEmptyByLev(Short locType1, Integer locType3, Integer lev);
+
+ /**
* 鑾峰彇鍚岀粍璐ф灦鐨勭┖搴撲綅
* @param sourceLocNo 婧愬簱浣�
* @return 鍚岀粍绌哄簱浣嶉泦鍚�
diff --git a/src/main/java/com/zy/asrs/service/WrkMastService.java b/src/main/java/com/zy/asrs/service/WrkMastService.java
index cfd3fed..c06469e 100644
--- a/src/main/java/com/zy/asrs/service/WrkMastService.java
+++ b/src/main/java/com/zy/asrs/service/WrkMastService.java
@@ -28,5 +28,7 @@
WrkMast selectOfPick(Integer wrkNo, Integer ioType);
- List<WrkMast> selectSameMatnrs(String s);
+ List<WrkMast> selectSameMatnrs(String matnr);
+
+ List<WrkMast> selectSameLevMatnrs(String matnr, Integer lev);
}
diff --git a/src/main/java/com/zy/asrs/service/impl/LocDetlServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/LocDetlServiceImpl.java
index ffcc871..b17ee3e 100644
--- a/src/main/java/com/zy/asrs/service/impl/LocDetlServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/LocDetlServiceImpl.java
@@ -58,6 +58,11 @@
}
@Override
+ public List<String> getSameLevDetl(String matnr, Integer lev) {
+ return this.baseMapper.selectSameLevDetl(matnr, lev);
+ }
+
+ @Override
public List<String> getSameDetlToday(String matnr, Integer start, Integer end) {
return this.baseMapper.selectSameDetlToday(matnr, start, end);
}
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 c1fa598..a15ceb7 100644
--- a/src/main/java/com/zy/asrs/service/impl/LocMastServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/LocMastServiceImpl.java
@@ -39,6 +39,11 @@
}
@Override
+ public List<LocMast> selectAreaEmptyByLev(Short locType1, Integer locType3, Integer lev) {
+ return this.baseMapper.selectAreaEmptyByLev(locType1, locType3, lev);
+ }
+
+ @Override
public List<String> queryGroupEmptyStock(String sourceLocNo) {
if (Cools.isEmpty(sourceLocNo)) {
return null;
diff --git a/src/main/java/com/zy/asrs/service/impl/WrkMastServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/WrkMastServiceImpl.java
index 4633630..a7d7031 100644
--- a/src/main/java/com/zy/asrs/service/impl/WrkMastServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/WrkMastServiceImpl.java
@@ -95,4 +95,8 @@
return this.baseMapper.selectSameMatnrs(matnr);
}
+ @Override
+ public List<WrkMast> selectSameLevMatnrs(String matnr, Integer lev) {
+ return this.baseMapper.selectSameLevMatnrs(matnr, lev);
+ }
}
diff --git a/src/main/java/com/zy/common/service/CommonService.java b/src/main/java/com/zy/common/service/CommonService.java
index e18606e..47bd2ca 100644
--- a/src/main/java/com/zy/common/service/CommonService.java
+++ b/src/main/java/com/zy/common/service/CommonService.java
@@ -507,40 +507,56 @@
* 鍥涘悜搴撹幏鍙栧簱浣�
*/
public StartupDto getShuttleLocNo(Integer staDescId, Integer sourceStaNo, List<String> matNos, LocTypeDto locTypeDto) {
+ RowLastno rowLastno = rowLastnoService.selectOne(new EntityWrapper<RowLastno>().eq("whs_type", 1));
+ //璧峰灞�
+ Integer startLev = rowLastno.getCurrentRow();
+ return getShuttleLocNo(staDescId, sourceStaNo, matNos, locTypeDto, startLev, 0);
+ }
+
+ public StartupDto getShuttleLocNo(Integer staDescId, Integer sourceStaNo, List<String> matNos, LocTypeDto locTypeDto, int startLev, int times) {
+ RowLastno rowLastno = rowLastnoService.selectOne(new EntityWrapper<RowLastno>().eq("whs_type", 1));
+ //璧峰灞�
+ Integer currentLev = rowLastno.getCurrentRow();
+ if (times > 0 && startLev == currentLev) {
+ throw new CoolException("鏈壘鍒板彲鐢ㄥ簱浣�");
+ }
+ rowLastno.setCurrentRow(currentLev >= rowLastno.geteRow() ? rowLastno.getsRow() : currentLev + 1);//鏇存柊妤煎眰
+ rowLastnoService.updateById(rowLastno);
+
// 鐩爣搴撲綅
LocMast locMast = null;
// 闈犺繎鎽嗘斁瑙勫垯 --- 绌烘墭
- locMast = getShuttleEmptyLocNo(staDescId, locTypeDto);
+ locMast = getShuttleEmptyLocNo(staDescId, locTypeDto, currentLev);
if (locMast != null) {
//鎵惧埌搴撲綅锛岃繑鍥瀌to
- return getLocNoStep6(staDescId, sourceStaNo, locMast);//杩斿洖dto
+ return getShuttleLocStartupDto(staDescId, sourceStaNo, locMast);//杩斿洖dto
}
//鍗曞搧鐗╂枡 闈犺繎鎽嗘斁瑙勫垯 --- 鐩稿悓璁㈠崟鍙�, 鍚屽ぉ鍚岃鏍肩墿鏂�
- locMast = getShuttleSingleLocNo(matNos, locTypeDto);
+ locMast = getShuttleSingleLocNo(matNos, locTypeDto, currentLev);
if (locMast != null) {
//鎵惧埌搴撲綅锛岃繑鍥瀌to
- return getLocNoStep6(staDescId, sourceStaNo, locMast);//杩斿洖dto
+ return getShuttleLocStartupDto(staDescId, sourceStaNo, locMast);//杩斿洖dto
}
// 闈犺繎鎽嗘斁瑙勫垯 --- 鐩稿悓璁㈠崟鍙�, 鍚屽ぉ鍚岃鏍肩墿鏂�
- locMast = getShuttleMixedLocNo(matNos, locTypeDto);
+ locMast = getShuttleMixedLocNo(matNos, locTypeDto, currentLev);
if (locMast != null) {
//鎵惧埌搴撲綅锛岃繑鍥瀌to
- return getLocNoStep6(staDescId, sourceStaNo, locMast);//杩斿洖dto
+ return getShuttleLocStartupDto(staDescId, sourceStaNo, locMast);//杩斿洖dto
}
- throw new CoolException("鏈壘鍒板彲鐢ㄥ簱浣�");
+ return getShuttleLocNo(staDescId, sourceStaNo, matNos, locTypeDto, startLev, times + 1);
}
//鎼滅储绌烘墭鐩樺簱浣�
- private LocMast getShuttleEmptyLocNo(Integer staDescId, LocTypeDto locTypeDto) {
+ private LocMast getShuttleEmptyLocNo(Integer staDescId, LocTypeDto locTypeDto, int lev) {
LocMast locMast = null;
// 闈犺繎鎽嗘斁瑙勫垯 --- 绌烘墭
if (staDescId == 10) {
//鍏堝垽鏂伐浣滄。锛屾煡鎵句富妗OType=1锛� wrkSts < 10鐨勫伐浣滄槑缁嗭紝鏂欏彿鐩稿悓鐨勬槑缁嗗簱浣�
- List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>().eq("io_type",10));
+ List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>().eq("io_type", 10));
for (WrkMast wrkMast : wrkMasts) {
LocMast locMast0 = locMastService.findNearloc(wrkMast.getLocNo());
if (null != locMast0) {
@@ -551,9 +567,9 @@
}
}
}
- if (Cools.isEmpty(locMast)){
+ if (Cools.isEmpty(locMast)) {
List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>()
- .eq("loc_sts", "O").orderBy("row1,bay1,lev1"));
+ .eq("loc_sts", "O").eq("lev1", lev).orderBy("row1,bay1,lev1"));
if (!locMasts.isEmpty()) {
for (LocMast loc : locMasts) {
LocMast locMast0 = locMastService.findNearloc(loc.getLocNo());
@@ -573,10 +589,10 @@
}
//娣锋斁鐗╂枡
- private LocMast getShuttleMixedLocNo(List<String> matNos, LocTypeDto locTypeDto) {
+ private LocMast getShuttleMixedLocNo(List<String> matNos, LocTypeDto locTypeDto, Integer lev) {
LocMast locMast = null;
if (matNos.size() > 1) {
- List<LocMast> locMasts = locMastService.selectAreaEmpty(locTypeDto.getLocType1(), 1);//鎼滅储娣锋斁搴撲綅
+ List<LocMast> locMasts = locMastService.selectAreaEmptyByLev(locTypeDto.getLocType1(), 1, lev);//鎼滅储娣锋斁搴撲綅
//娣锋斁鍖哄煙鐩存帴鍙栫涓�涓嵆鍙�
for (LocMast mast : locMasts) {
// 娴呭簱浣嶇鍚堝昂瀵告娴�
@@ -590,12 +606,12 @@
}
//鍗曞搧鐗╂枡 闈犺繎鎽嗘斁瑙勫垯 --- 鐩稿悓璁㈠崟鍙�, 鍚屽ぉ鍚岃鏍肩墿鏂�
- private LocMast getShuttleSingleLocNo(List<String> matNos, LocTypeDto locTypeDto) {
+ private LocMast getShuttleSingleLocNo(List<String> matNos, LocTypeDto locTypeDto, int lev) {
LocMast locMast = null;
if (matNos.size() == 1) {
String matNo = matNos.get(0);//鐗╂枡鍙�
//鍏堝垽鏂伐浣滄。锛屾煡鎵句富妗OType=1锛� wrkSts < 10鐨勫伐浣滄槑缁嗭紝鏂欏彿鐩稿悓鐨勬槑缁嗗簱浣�
- List<WrkMast> wrkMasts = wrkMastService.selectSameMatnrs(matNo);
+ List<WrkMast> wrkMasts = wrkMastService.selectSameLevMatnrs(matNo, lev);
for (WrkMast wrkMast : wrkMasts) {
LocMast locMast0 = locMastService.findNearloc(wrkMast.getLocNo());
if (null != locMast0) {
@@ -607,7 +623,7 @@
}
if (Cools.isEmpty(locMast)) {
//鍐嶅垽鏂簱瀛樻槑缁嗘。锛屾枡鍙风浉鍚岀殑鏄庣粏搴撲綅
- List<String> locNos = locDetlService.getSameDetl(matNo);
+ List<String> locNos = locDetlService.getSameLevDetl(matNo, lev);
for (String locNo : locNos) {
LocMast locMast0 = locMastService.findInnerLoc(locNo);
if (null != locMast0) {
@@ -621,7 +637,7 @@
}
if (Cools.isEmpty(locMast)) {
//鎵炬柊搴撲綅
- List<LocMast> locMasts = locMastService.selectAreaEmpty(locTypeDto.getLocType1(), 2);//鎼滅储鍗曞搧搴撲綅
+ List<LocMast> locMasts = locMastService.selectAreaEmptyByLev(locTypeDto.getLocType1(), 2, lev);//鎼滅储鍗曞搧搴撲綅
for (LocMast mast : locMasts) {
List<String> groupLoc = Utils.getGroupLoc(mast.getLocNo());
if (!locMastService.checkAllLocEmpty(groupLoc)) {
@@ -653,7 +669,7 @@
}
if (Cools.isEmpty(locMast)) {
//鍗曞搧鎵句笉鍒板簱浣嶏紝鍏佽灏濊瘯浠庢贩鏀惧尯鍩熶腑杩涜鎼滅储
- List<LocMast> locMasts2 = locMastService.selectAreaEmpty(locTypeDto.getLocType1(), 1);//鎼滅储娣锋斁搴撲綅
+ List<LocMast> locMasts2 = locMastService.selectAreaEmptyByLev(locTypeDto.getLocType1(), 1, lev);//鎼滅储娣锋斁搴撲綅
//娣锋斁鍖哄煙鐩存帴鍙栫涓�涓嵆鍙�
for (LocMast mast : locMasts2) {
// 娴呭簱浣嶇鍚堝昂瀵告娴�
@@ -667,4 +683,35 @@
return locMast;
}
+ //杩斿洖dto
+ private StartupDto getShuttleLocStartupDto(Integer staDescId, Integer sourceStaNo, LocMast locMast) {
+ StartupDto startupDto = new StartupDto();
+ String locNo = locMast.getLocNo();
+ // 鑾峰彇鐩爣绔�
+ Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>()
+ .eq("type_no", staDescId)
+ .eq("stn_no", sourceStaNo)
+ .eq("crn_no",Utils.stnNoToLiftNo(sourceStaNo));//鍊熺敤鍫嗗灈鏈哄彿瀛楁鍏呭綋鎻愬崌鏈哄彿
+ StaDesc staDesc = staDescService.selectOne(wrapper);
+ if (Cools.isEmpty(staDesc)) {
+ log.error("鍏ュ簱璺緞涓嶅瓨鍦�, staDescId={}, sourceStaNo={}", staDescId, sourceStaNo);
+ throw new CoolException("鍏ュ簱璺緞涓嶅瓨鍦�");
+ }
+
+ // 妫�娴嬬洰鏍囩珯
+ BasDevp staNo = basDevpService.selectById(staDesc.getCrnStn());
+ if (!staNo.getAutoing().equals("Y")) {
+ throw new CoolException("鐩爣绔�" + staDesc.getCrnStn() + "涓嶅彲鐢�");
+ }
+
+ // 鐢熸垚宸ヤ綔鍙�
+ int workNo = getWorkNo(0);
+ // 杩斿洖dto
+ startupDto.setWorkNo(workNo);
+ startupDto.setSourceStaNo(sourceStaNo);
+ startupDto.setStaNo(staNo.getDevNo());
+ startupDto.setLocNo(locMast.getLocNo());
+ return startupDto;
+ }
+
}
diff --git a/src/main/resources/mapper/LocDetlMapper.xml b/src/main/resources/mapper/LocDetlMapper.xml
index b0dabf7..8e6b7de 100644
--- a/src/main/resources/mapper/LocDetlMapper.xml
+++ b/src/main/resources/mapper/LocDetlMapper.xml
@@ -343,6 +343,27 @@
ORDER BY lm.modi_time ASC
</select>
+ <select id="selectSameLevDetl" resultType="java.lang.String">
+ SELECT
+ ld.loc_no
+ FROM asr_loc_detl ld
+ LEFT JOIN asr_loc_mast lm ON ld.loc_no = lm.loc_no
+ LEFT JOIN (
+ select
+ loc_no,
+ count(1) as count
+ from asr_loc_detl
+ where 1=1
+ group by loc_no
+ ) dual on dual.loc_no = lm.loc_no
+ WHERE 1 = 1
+ AND ld.matnr = #{matnr}
+ AND (lm.loc_sts = 'F')
+ AND dual.count = 1
+ AND lm.lev1 = #{lev}
+ ORDER BY lm.modi_time ASC
+ </select>
+
<select id="searchByLike" resultMap="BaseResultMap">
select *
from asr_loc_detl
diff --git a/src/main/resources/mapper/LocMastMapper.xml b/src/main/resources/mapper/LocMastMapper.xml
index 091887c..ee92255 100644
--- a/src/main/resources/mapper/LocMastMapper.xml
+++ b/src/main/resources/mapper/LocMastMapper.xml
@@ -122,6 +122,17 @@
ORDER BY row1,bay1,lev1
</select>
+ <select id="selectAreaEmptyByLev" resultMap="BaseResultMap">
+ select * from asr_loc_mast
+ where loc_sts in ('O')
+ and loc_type3 = #{locType3}
+ <if test="locType1 != null">
+ and loc_type1 = #{locType1}
+ </if>
+ and lev1 = #{lev}
+ ORDER BY row1,bay1,lev1
+ </select>
+
<select id="selectEmptyByLocNos" resultMap="BaseResultMap">
SELECT * FROM asr_loc_mast
WHERE loc_sts IN ('O')
diff --git a/src/main/resources/mapper/WrkMastMapper.xml b/src/main/resources/mapper/WrkMastMapper.xml
index b23289f..406c6cc 100644
--- a/src/main/resources/mapper/WrkMastMapper.xml
+++ b/src/main/resources/mapper/WrkMastMapper.xml
@@ -106,4 +106,8 @@
where m.wrk_no=d.wrk_no and io_type=1 and wrk_sts < 11 and d.matnr = #{matnr} ORDER BY m.wrk_no desc
</select>
+ <select id="selectSameLevMatnrs" resultMap="BaseResultMap">
+ select m.loc_no from asr_wrk_mast m,asr_wrk_detl d,asr_loc_mast lm
+ where m.wrk_no=d.wrk_no and m.loc_no = lm.loc_no and io_type=1 and wrk_sts < 11 and d.matnr = #{matnr} and lm.lev1 = #{lev} ORDER BY m.wrk_no desc
+ </select>
</mapper>
--
Gitblit v1.9.1