From f7e5ec05f10452c90bdf5130385ebf878ce338c9 Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期五, 26 五月 2023 13:33:04 +0800
Subject: [PATCH] 单品找库位逻辑
---
src/main/java/com/zy/asrs/service/impl/LocMastServiceImpl.java | 2
src/main/java/com/zy/asrs/service/WrkMastService.java | 5 +
src/main/java/com/zy/asrs/utils/Utils.java | 43 ++++++++++++++
src/main/java/com/zy/asrs/service/impl/WrkMastServiceImpl.java | 4 +
src/main/resources/mapper/LocMastMapper.xml | 2
src/main/java/com/zy/asrs/mapper/LocMastMapper.java | 2
src/main/java/com/zy/asrs/mapper/WrkMastMapper.java | 5 +
src/main/resources/mapper/WrkMastMapper.xml | 13 ++++
src/main/java/com/zy/asrs/service/LocMastService.java | 2
src/main/java/com/zy/common/service/CommonService.java | 82 ++++++++++++++++-----------
10 files changed, 122 insertions(+), 38 deletions(-)
diff --git a/src/main/java/com/zy/asrs/mapper/LocMastMapper.java b/src/main/java/com/zy/asrs/mapper/LocMastMapper.java
index 461f22c..c2febf3 100644
--- a/src/main/java/com/zy/asrs/mapper/LocMastMapper.java
+++ b/src/main/java/com/zy/asrs/mapper/LocMastMapper.java
@@ -43,7 +43,7 @@
LocMast findInEmptyLocMast(Short locType1, @Param("rows") List<Integer> rows);
//鍦ㄥ簱浣嶇粍涓悳绱㈠彲鍏ョ殑绌哄簱浣�
- LocMast findEmptyLocMastByLocNos(Short locType1, @Param("locNos") List<String> locNos);
+ List<LocMast> findEmptyLocMastByLocNos(Short locType1, @Param("locNos") List<String> locNos);
//鎼滅储浣庨(娣锋斁鍖哄煙)绌哄簱浣�
List<LocMast> findEmptyLowFrequencyLocMast(Short locType1);
diff --git a/src/main/java/com/zy/asrs/mapper/WrkMastMapper.java b/src/main/java/com/zy/asrs/mapper/WrkMastMapper.java
index c07a8b3..a0d397b 100644
--- a/src/main/java/com/zy/asrs/mapper/WrkMastMapper.java
+++ b/src/main/java/com/zy/asrs/mapper/WrkMastMapper.java
@@ -29,4 +29,9 @@
WrkMast selectPakoutOfStaNo(@Param("staNo")Integer staNo);
+ /**
+ * 鑾峰彇鐩稿悓瑙勬牸璐х墿鐨勫簱浣嶅彿锛屼笖鐘舵�佷负S鍏ュ簱棰勭害绫诲瀷
+ */
+ List<WrkMast> selectSameWrkMast(String matnr);
+
}
diff --git a/src/main/java/com/zy/asrs/service/LocMastService.java b/src/main/java/com/zy/asrs/service/LocMastService.java
index 18dbdba..92f2440 100644
--- a/src/main/java/com/zy/asrs/service/LocMastService.java
+++ b/src/main/java/com/zy/asrs/service/LocMastService.java
@@ -62,7 +62,7 @@
LocMast findInEmptyLocMast(Short locType1, List<Integer> rows);
//鍦ㄥ簱浣嶇粍涓悳绱㈠彲鍏ョ殑绌哄簱浣�
- LocMast findEmptyLocMastByLocNos(Short locType1, List<String> locNos);
+ List<LocMast> findEmptyLocMastByLocNos(Short locType1, List<String> locNos);
//鎼滅储浣庨(娣锋斁鍖哄煙)绌哄簱浣�
List<LocMast> findEmptyLowFrequencyLocMast(Short locType1);
diff --git a/src/main/java/com/zy/asrs/service/WrkMastService.java b/src/main/java/com/zy/asrs/service/WrkMastService.java
index 3757b62..2905f57 100644
--- a/src/main/java/com/zy/asrs/service/WrkMastService.java
+++ b/src/main/java/com/zy/asrs/service/WrkMastService.java
@@ -30,4 +30,9 @@
WrkMast selectPakoutOfStaNo(Integer staNo);
+ /**
+ * 鑾峰彇鐩稿悓瑙勬牸璐х墿鐨勫簱浣嶅彿锛屼笖鐘舵�佷负S鍏ュ簱棰勭害绫诲瀷
+ */
+ List<WrkMast> selectSameWrkMast(String matnr);
+
}
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 4c3dbe9..ba49674 100644
--- a/src/main/java/com/zy/asrs/service/impl/LocMastServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/LocMastServiceImpl.java
@@ -215,7 +215,7 @@
}
@Override
- public LocMast findEmptyLocMastByLocNos(Short locType1, List<String> locNos) {
+ public List<LocMast> findEmptyLocMastByLocNos(Short locType1, List<String> locNos) {
return this.baseMapper.findEmptyLocMastByLocNos(locType1, locNos);
}
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 cf01a2b..256be81 100644
--- a/src/main/java/com/zy/asrs/service/impl/WrkMastServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/WrkMastServiceImpl.java
@@ -116,4 +116,8 @@
return this.baseMapper.selectPakoutOfStaNo(staNo);
}
+ @Override
+ public List<WrkMast> selectSameWrkMast(String matnr) {
+ return this.baseMapper.selectSameWrkMast(matnr);
+ }
}
diff --git a/src/main/java/com/zy/asrs/utils/Utils.java b/src/main/java/com/zy/asrs/utils/Utils.java
index 9e7e7dd..1921ffb 100644
--- a/src/main/java/com/zy/asrs/utils/Utils.java
+++ b/src/main/java/com/zy/asrs/utils/Utils.java
@@ -564,6 +564,49 @@
}
}
+ /**
+ * 妫�娴嬪綋鍓嶅簱浣嶅唴渚у叾浠栧簱浣嶆槸鍚︿负D銆丗銆乆
+ * 杩斿洖true琛ㄧず鍐呬晶搴撲綅涓嶆槸DFX锛岃繑鍥瀎alse琛ㄧず鍐呬晶搴撲綅鏄疍FX
+ */
+ public static boolean checkInsideLocIsDFX(String locNo) {
+ LocMastService locMastService = SpringUtils.getBean(LocMastService.class);
+ List<String> insideLoc = Utils.getGroupInsideLoc(locNo);
+ if (insideLoc.size() > 0) {
+ List<LocMast> insideLocMast = locMastService.selectByLocNos(insideLoc);
+ for (LocMast mast : insideLocMast) {
+ if (!mast.getLocSts().equals("D")
+ && !mast.getLocSts().equals("F")
+ && !mast.getLocSts().equals("X")) {
+ //D銆丗銆乆(涓嶈兘閫夊畾杩欎釜澶栦晶搴撲綅)
+ return true;
+ }
+ }
+ }
+ return false;
+ }
+
+ /**
+ * 妫�娴嬪綋鍓嶅簱浣嶅唴渚у叾浠栧簱浣嶆槸鍚︿负D銆丗銆乆銆丼
+ * 杩斿洖true琛ㄧず鍐呬晶搴撲綅涓嶆槸DFX锛岃繑鍥瀎alse琛ㄧず鍐呬晶搴撲綅鏄疍FX
+ */
+ public static boolean checkInsideLocIsDFXS(String locNo) {
+ LocMastService locMastService = SpringUtils.getBean(LocMastService.class);
+ List<String> insideLoc = Utils.getGroupInsideLoc(locNo);
+ if (insideLoc.size() > 0) {
+ List<LocMast> insideLocMast = locMastService.selectByLocNos(insideLoc);
+ for (LocMast mast : insideLocMast) {
+ if (!mast.getLocSts().equals("D")
+ && !mast.getLocSts().equals("F")
+ && !mast.getLocSts().equals("X")
+ && !mast.getLocSts().equals("S")) {
+ //D銆丗銆乆銆丼(涓嶈兘閫夊畾杩欎釜澶栦晶搴撲綅)
+ return true;
+ }
+ }
+ }
+ return false;
+ }
+
public static void main(String[] args) {
List<String> groupLoc = Utils.getGroupLoc("1300801");
System.out.println(groupLoc);
diff --git a/src/main/java/com/zy/common/service/CommonService.java b/src/main/java/com/zy/common/service/CommonService.java
index f9b084f..1ac22c2 100644
--- a/src/main/java/com/zy/common/service/CommonService.java
+++ b/src/main/java/com/zy/common/service/CommonService.java
@@ -241,12 +241,19 @@
//鍗曞搧绫诲瀷鍏ュ簱
private LocMast getLocNoStep2(LocTypeDto locTypeDto, List<String> matNos, List<Integer> rows) {
LocMast locMast = null;
- //鎵惧唴渚х┖搴撲綅(闈炴渶澶栦晶搴撲綅)
- List<String> locNos = locDetlService.getSameDetl(matNos.get(0));
- for (String locNo : locNos) {
- List<String> groupLoc = Utils.getGroupLoc(locNo);
- LocMast locMast0 = locMastService.findEmptyLocMastByLocNos(locTypeDto.getLocType1(), groupLoc);
- if (null != locMast0) {
+
+ //鍏堟壘宸ヤ綔妗�
+ List<WrkMast> wrkMasts = wrkMastService.selectSameWrkMast(matNos.get(0));
+ for (WrkMast wrkMast : wrkMasts) {
+ List<String> groupLoc = Utils.getGroupLoc(wrkMast.getLocNo());
+ List<LocMast> locMasts = locMastService.findEmptyLocMastByLocNos(locTypeDto.getLocType1(), groupLoc);
+ for (LocMast locMast0 : locMasts) {
+ //妫�娴嬪綋鍓嶅簱浣嶅唴渚у叾浠栧簱浣嶆槸鍚︿负D銆丗銆乆銆丼
+ if (Utils.checkInsideLocIsDFXS(locMast0.getLocNo())) {
+ //鍐呬晶鍏朵粬搴撲綅涓嶆槸D銆丗銆乆銆丼銆備笉鑳介�夊彇璇ュ簱浣�
+ continue;
+ }
+
// 娴呭簱浣嶇鍚堝昂瀵告娴�
if (VersionUtils.locMoveCheckLocType(locMast0, locTypeDto)) {
// 娴呭簱浣嶅搴斿爢鍨涙満蹇呴』鍙敤涓旀棤寮傚父
@@ -255,6 +262,34 @@
if (locMastService.checkEmptyCount(locMast0, 10)) {
locMast = locMast0;
break;
+ }
+ }
+ }
+ }
+ }
+
+ //鎵惧唴渚х┖搴撲綅(闈炴渶澶栦晶搴撲綅)
+ if (locMast == null) {
+ List<String> locNos = locDetlService.getSameDetl(matNos.get(0));
+ for (String locNo : locNos) {
+ List<String> groupLoc = Utils.getGroupLoc(locNo);
+ List<LocMast> locMasts = locMastService.findEmptyLocMastByLocNos(locTypeDto.getLocType1(), groupLoc);
+ for (LocMast locMast0 : locMasts) {
+ //妫�娴嬪綋鍓嶅簱浣嶅唴渚у叾浠栧簱浣嶆槸鍚︿负D銆丗銆乆
+ if (Utils.checkInsideLocIsDFX(locMast0.getLocNo())) {
+ //鍐呬晶鍏朵粬搴撲綅涓嶆槸D銆丗銆乆銆備笉鑳介�夊彇璇ュ簱浣�
+ continue;
+ }
+
+ // 娴呭簱浣嶇鍚堝昂瀵告娴�
+ if (VersionUtils.locMoveCheckLocType(locMast0, locTypeDto)) {
+ // 娴呭簱浣嶅搴斿爢鍨涙満蹇呴』鍙敤涓旀棤寮傚父
+ if (true || basCrnpService.checkSiteError(locMast0.getCrnNo(), true)) {
+ // 鍥犲簱浣嶇Щ杞�侀渶棰勭暀绌哄簱浣�
+ if (locMastService.checkEmptyCount(locMast0, 10)) {
+ locMast = locMast0;
+ break;
+ }
}
}
}
@@ -276,21 +311,8 @@
List<LocMast> locMasts = locMastService.findOutMast(locTypeDto.getLocType1(), crnNos);
for (LocMast locMast0 : locMasts) {
//妫�娴嬪綋鍓嶅簱浣嶅唴渚у叾浠栧簱浣嶆槸鍚︿负D銆丗銆乆
- boolean flag = false;
- List<String> insideLoc = Utils.getGroupInsideLoc(locMast0.getLocNo());
- if (insideLoc.size() > 0) {
- List<LocMast> insideLocMast = locMastService.selectByLocNos(insideLoc);
- for (LocMast mast : insideLocMast) {
- if (!mast.getLocSts().equals("D")
- && !mast.getLocSts().equals("F")
- && !mast.getLocSts().equals("X")) {
- //D銆丗銆乆(涓嶈兘閫夊畾杩欎釜澶栦晶搴撲綅)
- flag = true;
- break;
- }
- }
- }
- if (flag) {
+ if (Utils.checkInsideLocIsDFX(locMast0.getLocNo())) {
+ //鍐呬晶鍏朵粬搴撲綅涓嶆槸D銆丗銆乆銆備笉鑳介�夊彇璇ュ簱浣�
continue;
}
@@ -315,21 +337,13 @@
List<LocMast> locMasts = locMastService.findEmptyLowFrequencyLocMast(locTypeDto.getLocType1());
for (LocMast locMast0 : locMasts) {
//妫�娴嬪綋鍓嶅簱浣嶅唴渚у叾浠栧簱浣嶆槸鍚︿负D銆丗銆乆
- boolean flag = false;
- List<String> insideLoc = Utils.getGroupInsideLoc(locMast0.getLocNo());
- if (insideLoc.size() > 0) {
- List<LocMast> insideLocMast = locMastService.selectByLocNos(insideLoc);
- for (LocMast mast : insideLocMast) {
- if (!mast.getLocSts().equals("D")
- && !mast.getLocSts().equals("F")
- && !mast.getLocSts().equals("X")) {
- //D銆丗銆乆(涓嶈兘閫夊畾杩欎釜澶栦晶搴撲綅)
- flag = true;
- break;
- }
- }
+ if (Utils.checkInsideLocIsDFX(locMast0.getLocNo())) {
+ //鍐呬晶鍏朵粬搴撲綅涓嶆槸D銆丗銆乆銆備笉鑳介�夊彇璇ュ簱浣�
+ continue;
}
+
//妫�娴嬪綋鍓嶅簱浣嶅渚у簱浣嶆槸鍚︿负O(绌哄簱浣�)
+ boolean flag = false;
List<String> outerLoc = Utils.getGroupOuterLoc(locMast0.getLocNo());
if (outerLoc.size() > 0) {
List<LocMast> outerLocMast = locMastService.selectByLocNos(outerLoc);
diff --git a/src/main/resources/mapper/LocMastMapper.xml b/src/main/resources/mapper/LocMastMapper.xml
index 5052fe6..25a8711 100644
--- a/src/main/resources/mapper/LocMastMapper.xml
+++ b/src/main/resources/mapper/LocMastMapper.xml
@@ -308,7 +308,7 @@
</select>
<select id="findEmptyLocMastByLocNos" resultMap="BaseResultMap">
- select top 1 * from asr_loc_mast
+ select * from asr_loc_mast
where loc_type2 = 1
and loc_type1 = #{locType1}
and loc_no in
diff --git a/src/main/resources/mapper/WrkMastMapper.xml b/src/main/resources/mapper/WrkMastMapper.xml
index a101e3e..61a40ea 100644
--- a/src/main/resources/mapper/WrkMastMapper.xml
+++ b/src/main/resources/mapper/WrkMastMapper.xml
@@ -118,4 +118,17 @@
</select>
+ <select id="selectSameWrkMast" resultMap="BaseResultMap">
+ select wm.* from asr_wrk_mast wm
+ left join asr_loc_mast lm
+ on lm.loc_no = wm.loc_no
+ left join asr_wrk_detl wd
+ on wd.wrk_no = wm.wrk_no
+ where io_type=1
+ and wrk_sts < 11
+ and lm.loc_sts = 'S'
+ and wd.matnr = #{matnr}
+ ORDER BY wm.wrk_no desc
+ </select>
+
</mapper>
--
Gitblit v1.9.1