From e012a72a5660566d698c93ca4f29b6e5ffe997b0 Mon Sep 17 00:00:00 2001
From: pang.jiabao <pang_jiabao@163.com>
Date: 星期三, 29 十月 2025 16:47:35 +0800
Subject: [PATCH] 3077,3106只有合格能出,2041 只有待判能出
---
src/main/java/com/zy/common/service/CommonService.java | 211 +++++++++++++++++++---------------------------------
1 files changed, 77 insertions(+), 134 deletions(-)
diff --git a/src/main/java/com/zy/common/service/CommonService.java b/src/main/java/com/zy/common/service/CommonService.java
index a1548b8..c269c0f 100644
--- a/src/main/java/com/zy/common/service/CommonService.java
+++ b/src/main/java/com/zy/common/service/CommonService.java
@@ -3,7 +3,6 @@
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.*;
@@ -11,15 +10,20 @@
import com.zy.asrs.utils.Utils;
import com.zy.asrs.utils.VersionUtils;
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 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.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
+import javax.annotation.Resource;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
/**
* 璐ф灦鏍稿績鍔熻兘
@@ -47,6 +51,9 @@
private LocDetlService locDetlService;
@Autowired
private SlaveProperties slaveProperties;
+
+ @Resource
+ private ConfigMapper configMapper;
/**
* 鐢熸垚宸ヤ綔鍙�
@@ -122,115 +129,9 @@
*/
@Transactional
public StartupDto getLocNo(Integer staDescId, Integer sourceStaNo,LocTypeDto locTypeDto,int times) {
+ LocMast locMast;
- // 鍒濆鍖栧弬鏁�
- int crnNo = 0; //鍫嗗灈鏈哄彿
- int nearRow = 0; //鏈�娴呭簱浣嶆帓
- int curRow = 0; //鏈�娣卞簱浣嶆帓
- LocMast locMast = null; // 鐩爣搴撲綅
-
- StartupDto startupDto = new StartupDto();
- RowLastno rowLastno = rowLastnoService.selectById(1);
- int sRow = rowLastno.getsRow();
- int eRow = rowLastno.geteRow();
- int crn_qty = rowLastno.getCrnQty();
- int rowCount = eRow - sRow + 1;
- if (Cools.isEmpty(rowLastno)) {
- throw new CoolException("鏁版嵁寮傚父锛岃鑱旂郴绠$悊鍛�");
- }
- // ===============>>>> 寮�濮嬫墽琛�
-
- curRow = rowLastno.getCurrentRow();
-
- // 濡傛灉娌℃湁鐩歌繎鐗╂枡锛屽垯鎸夎鍒欒疆璇㈣揣鏋�
- if (Cools.isEmpty(locMast)) {
- Shelves shelves = new Shelves(rowCount, crn_qty);
- int divides = (int) Arith.divides(1, curRow - 1, 4);
- curRow = (int) Arith.remainder(curRow, 4);
- if (curRow == 0) {
- curRow = 4;
- }
- for (int i = 0; i < shelves.group; i ++) {
- curRow = shelves.start(curRow);
- if (curRow < 0) {
- throw new CoolException("妫�绱㈠簱浣嶅け璐ワ紝璇疯仈绯荤鐞嗗憳");
- }
- Integer crnNo1 = shelves.get(curRow);
- crnNo1 = crnNo1 + divides*1;
- if (basCrnpService.checkSiteError(crnNo1, true)) {
- crnNo = crnNo1;
- curRow = curRow + divides*4;
- break;
- }
- }
- }
-
- if (crnNo == 0) {
- throw new CoolException("娌℃湁鍙敤鐨勫爢鍨涙満");
- }
-
- // 1.褰撴绱㈠簱鎺掍负娴呭簱浣嶆帓鏃讹紝浼樺厛瀵绘壘褰撳墠搴撴帓鐨勬繁搴撲綅鎺�
- if (locMast == null) {
- if (Utils.isShallowLoc(slaveProperties, curRow)) {
- Integer deepRow = Utils.getDeepRow(slaveProperties, curRow);
- locMast = locMastService.queryFreeLocMast(deepRow, locTypeDto.getLocType1());
- // todo:luxiaotao 濡傛灉鐢ㄦ祬鎺掓壘鍒扮殑娣卞簱浣嶏紝閭d箞鍒欓渶瑕佸垽鏂繖涓繁搴撲綅瀵瑰簲鐨勬祬搴撲綅鏄惁鏈夎揣锛團銆乆銆丏锛�
- // 鍥犲簱浣嶇Щ杞�侀渶棰勭暀绌哄簱浣�
- if (!locMastService.checkEmptyCount(locMast)) {
- locMast = null;
- }
- }
- if (Cools.isEmpty(locMast)) {
- locMast = locMastService.queryFreeLocMast(curRow, locTypeDto.getLocType1());
- // 鍥犲簱浣嶇Щ杞�侀渶棰勭暀绌哄簱浣�
- if (!locMastService.checkEmptyCount(locMast)) {
- locMast = null;
- }
- // 鐩爣搴撲綅 ===>> 娴呭簱浣嶏紝 鍒欐牎楠屽叾娣卞簱浣嶆槸鍚︿负 F D X
- if (null != locMast && Utils.isShallowLoc(slaveProperties, locMast.getLocNo())) {
- LocMast deepLoc = locMastService.selectById(Utils.getDeepLoc(slaveProperties, locMast.getLocNo()));
- if (!deepLoc.getLocSts().equals("F") && !deepLoc.getLocSts().equals("D") && !deepLoc.getLocSts().equals("X")) {
- locMast = null;
- }
- }
- // 鐩爣搴撲綅 ===>> 娣卞簱浣嶏紝 鍒欐牎楠屽叾娴呭簱浣嶆槸鍚︿负 O
- if (null != locMast && Utils.isDeepLoc(slaveProperties, locMast.getLocNo())) {
- LocMast shallowLoc = locMastService.selectById(Utils.getShallowLoc(slaveProperties, locMast.getLocNo()));
- if (!Cools.isEmpty(shallowLoc)) {
- if (!shallowLoc.getLocSts().equals("O")) {
- locMast = null;
- }
- }
-
-
- }
- }
- }
- // 鏇存柊搴撲綅鎺掑彿
- rowLastno.setCurrentRow(curRow);
- rowLastnoService.updateById(rowLastno);
- // 2.搴撲綅褰撳墠鎵�灞炲昂瀵告棤绌哄簱浣嶆椂锛岃皟鏁村昂瀵稿弬鏁帮紝鍚戜笂鍏煎妫�绱㈠簱浣�
- if (Cools.isEmpty(locMast)) {
- // 褰撳墠宸烽亾鏃犵┖搴撲綅鏃讹紝閫掑綊璋冩暣鑷充笅涓�宸烽亾锛屾绱㈠叏閮ㄥ贩閬撴棤鏋滃悗锛岃烦鍑洪�掑綊
- if (times < rowCount) {
- times = times + 1;
- return getLocNo(staDescId, sourceStaNo, locTypeDto, times);
- }
- log.error("绯荤粺娌℃湁绌哄簱浣嶏紒锛侊紒 灏哄瑙勬牸锛� {}锛� 杞娆℃暟锛歿}", JSON.toJSONString(locTypeDto), times);
- throw new CoolException("娌℃湁绌哄簱浣�");
- }
-
-
-// // 鎼滅储绌烘墭
-// locMast = getLocNoStep4(staDescId, sourceStaNo);
-// if (locMast != null) {
-// //鎵惧埌搴撲綅锛岃繑鍥瀌to
-// return getLocNoStep6(staDescId, sourceStaNo, locMast);//杩斿洖dto
-// }
- if (locMast == null) {
- //鎼滅储鏁翠釜绌哄簱浣嶇粍
- locMast = getLocNoStepSingle(locTypeDto);
- }
+ locMast = getLocNoStepSingle(locTypeDto);
if (locMast != null) {
//鎵惧埌搴撲綅锛岃繑鍥瀌to
@@ -240,38 +141,80 @@
//鎵句笉鍒板簱浣嶏紝鎶涘嚭寮傚父
throw new CoolException("娌℃湁绌哄簱浣�");
}
+
// 鎼滅储鍗曞搧(鏁翠釜搴撲綅缁�)
private LocMast getLocNoStepSingle(LocTypeDto locTypeDto) {
+
LocMast locMast = null;
- //鍗曞搧
- List<LocMast> locMasts = locMastService.selectAreaEmpty(locTypeDto.getLocType1());//鎼滅储璐х墿
+ // 鑾峰彇妯″紡涓虹數鑴戞ā寮忥紝鏃犱换鍔$殑鍫嗗灈鏈哄垪琛�:闃叉鍒嗛厤鍒板爢鍨涙満涓嶅彲鐢�
+ List<BasCrnp> basCrnps = basCrnpService.selectList(new EntityWrapper<BasCrnp>().eq("crn_sts",3)
+ .eq("wrk_no",0).eq("in_enable","Y"));
+ if (basCrnps.isEmpty()) {
+ // 閮芥湁浠诲姟鍒欒幏鍙栫數鑴戞ā寮忕殑鍫嗗灈鏈哄垪琛�
+ basCrnps = basCrnpService.selectList(new EntityWrapper<BasCrnp>().eq("crn_sts",3).eq("in_enable","Y"));
+ }
+ if (basCrnps.isEmpty()) {
+ throw new CoolException("娌℃湁鍙敤鍫嗗灈鏈�,鍫嗗灈鏈哄仠姝㈡垨寮傚父鎴栫鐢�");
+ }
+ // 鍙敤鍫嗗灈鏈哄垪琛�
+ List<Integer> crnNoList = basCrnps.stream().map(BasCrnp::getCrnNo).collect(Collectors.toList());
+
+ // 鑾峰彇澶囪揣鍖洪厤缃�
+ Config config = configMapper.selectConfigByCode("auto_stock_up");
+ if (config == null) {
+ throw new CoolException("鐞嗚揣鑾峰彇澶囪揣鍖洪厤缃敊璇紒锛侊紒");
+ }
+
+ // 鍓嶅嚑鍒楁槸澶囪揣鍖�
+ int columnNum = Integer.parseInt(config.getValue());
+
+ // 鎼滅储娣卞簱浣�
+ List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>()
+ .eq("loc_sts","O").in("crn_no",crnNoList).in("row1","1,4,5,8,9,12,13,16,17,20,21,24").orderBy("lev1,bay1,row1")
+ .gt("bay1",columnNum));
+
+ // 娣卞簱浣嶆病鏈夊垯鎼滅储娴呭簱浣�
+// if (locMasts.isEmpty()) {
+ List<LocMast> locMasts2 = locMastService.selectList(new EntityWrapper<LocMast>()
+ .eq("loc_sts","O").in("crn_no",crnNoList).in("row1","2,3,6,7,10,11,14,15,18,19,22,23").orderBy("lev1,bay1,row1")
+ .gt("bay1",columnNum));
+ if(!locMasts2.isEmpty()) {
+ locMasts.addAll(locMasts2);
+ }
+// }
+ if (locMasts.isEmpty()) {
+ throw new CoolException("娌℃湁鍙敤搴撲綅");
+ }
+ // 娴呭簱浣�
+ String[] split = "02,03,06,07,10,11,14,15,18,19,22,23".split(",");
+ // 璁板綍鍫嗗灈鏈烘槸鍚︽煡璇㈣繃锛岄伩鍏嶉噸澶嶆煡璇�
+ Map<Integer,Boolean> crnMap = new HashMap<>();
for (LocMast mast : locMasts) {
- List<String> groupLoc = Utils.getGroupLocNo(mast.getLocNo(), true);
-// if (!locMastService.checkAllLocEmpty(groupLoc)) {
-// continue;
-// }
-
- LocMast tmp = null;
- for (String loc : groupLoc) {
- LocMast locMast1 = locMastService.selectByLoc(loc);
- if (locMast1 == null) {
- continue;
+ if (crnMap.get(mast.getCrnNo()) == null) {
+ //棰勭暀绌哄簱浣�
+ if (locMastService.checkEmptyCount(mast, 10)) {
+ Integer row1 = mast.getRow1();
+ if(slaveProperties.getDoubleLocs().contains(row1)){
+ // 鍙栨祬搴撲綅
+ String s = split[slaveProperties.getDoubleLocs().indexOf(row1)];
+ LocMast locMast1 = locMastService.selectById(s + mast.getLocNo().substring(2));
+ if(locMast1 != null && !locMast1.getLocSts().equals("O")) {
+ log.warn("鍏ュ簱鍒嗛厤搴撲綅锛歿}锛屽搴旀祬搴撲綅{}涓嶄负绌猴細{}",mast.getLocNo(),locMast1.getLocNo(),locMast1.getLocSts());
+ continue;
+ }
+ }
+ locMast = mast;
+ break;
+ } else {
+ crnMap.put(mast.getCrnNo(),true);
}
-
- if (!locMast1.getLocSts().equals("O")) {
- continue;
- }
-
- tmp = locMast1;
- break;
}
+ }
- //棰勭暀绌哄簱浣�
- if (tmp != null && locMastService.checkEmptyCount(mast, 10)) {
- locMast = tmp;
- break;
- }
+ if (locMast == null) {
+ log.error("鍏ュ簱璇锋眰搴撲綅涓嶈冻锛屽墿浣欏簱浣嶄笉瓒�/涓嶆弧瓒冲叆搴撴潯浠�");
+ throw new CoolException("鍏ュ簱璇锋眰搴撲綅涓嶈冻锛屽墿浣欐暟閲忎笉瓒�/涓嶆弧瓒冲叆搴撴潯浠�");
}
return locMast;
--
Gitblit v1.9.1