From 4dffb4cbf5febb2e8f7436f28ca3470a35bee5d4 Mon Sep 17 00:00:00 2001 From: 野心家 <1051256694@qq.com> Date: 星期一, 28 四月 2025 12:43:04 +0800 Subject: [PATCH] # --- src/main/java/com/zy/common/service/CommonService.java | 176 +++++++++++++++++++++++++++++++++++----------------------- 1 files changed, 106 insertions(+), 70 deletions(-) diff --git a/src/main/java/com/zy/common/service/CommonService.java b/src/main/java/com/zy/common/service/CommonService.java index a4df5c5..854ca6f 100644 --- a/src/main/java/com/zy/common/service/CommonService.java +++ b/src/main/java/com/zy/common/service/CommonService.java @@ -1,7 +1,9 @@ package com.zy.common.service; +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.*; @@ -95,32 +97,30 @@ */ @Transactional public StartupDto getLocNo(Integer whsType, Integer staDescId, Integer sourceStaNo, List<String> matNos, LocTypeDto locTypeDto, int times) { +// whsType = getWhsType(sourceStaNo, times); StartupDto startupDto = new StartupDto(); - // 鐢熸垚宸ヤ綔鍙� - int workNo = getWorkNo(0); - switch (sourceStaNo) { - case 202: - whsType = 2; - break; - case 205: - whsType = 1; - break; - case 126: - whsType = 3; - break; - case 110: - whsType = 4; - break; - case 301: - whsType = 5; - break; - default: - throw new CoolException("搴撲綅鎺掑彿鍒嗛厤閿欒, 婧愮珯鍙凤細" + sourceStaNo); +// if (sourceStaNo < 200){ +// whsType = 1; +// } else if (sourceStaNo > 199 && sourceStaNo < 300){ +// whsType = 2; +// } else if (sourceStaNo > 299 && sourceStaNo < 400){ +// whsType = 3; +// } else if (sourceStaNo > 399){ +// whsType = 4; +// } + + if (sourceStaNo ==101||sourceStaNo==103){ + whsType = 1; + } else if (sourceStaNo ==105||sourceStaNo==107){ + whsType = 2; + } else{ + throw new CoolException("绔欑偣鏁版嵁寮傚父锛岃鑱旂郴绠$悊鍛�"); } + RowLastno rowLastno = rowLastnoService.selectById(whsType); if (Cools.isEmpty(rowLastno)) { - throw new CoolException("鏁版嵁寮傚父锛岃鑱旂郴绠$悊鍛�"); + throw new CoolException("1鏁版嵁寮傚父锛岃鑱旂郴绠$悊鍛�"); } // ===============>>>> 寮�濮嬫墽琛� @@ -168,6 +168,9 @@ // 妫�娴嬬洰鏍囧簱浣嶆槸鍚︿负绌哄簱浣� LocMast shallowLoc = locMastService.selectById(shallowLocNo); if (shallowLoc != null && shallowLoc.getLocSts().equals("O")) { + if (shallowLoc.getLocType1()<locTypeDto.getLocType1()){ + continue; + } if (basCrnpService.checkSiteError(shallowLoc.getCrnNo(), true)) { locMast = shallowLoc; crnNo = locMast.getCrnNo(); @@ -181,48 +184,22 @@ // 濡傛灉娌℃湁鐩歌繎鐗╂枡锛屽垯鎸夎鍒欒疆璇㈣揣鏋� if (null == locMast) { Shelves shelves = new Shelves(rowCount, crn_qty); - // 1-4鎺� - if (whsType == 1) { - for (int i = 0; i < shelves.group; i ++) { - curRow = shelves.start(curRow); - if (curRow < 0) { - throw new CoolException("妫�绱㈠簱浣嶅け璐ワ紝璇疯仈绯荤鐞嗗憳"); - } - Integer crnNo1 = shelves.get(curRow); - if (basCrnpService.checkSiteError(crnNo1, true)) { - crnNo = crnNo1; - break; - } + 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("妫�绱㈠簱浣嶅け璐ワ紝璇疯仈绯荤鐞嗗憳"); } - // 5-8鎺� - } else if (whsType == 2) { - curRow = 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); - if (basCrnpService.checkSiteError(crnNo1 + 1, true)) { - // 鍋忕Щ閲忚ˉ鍋� - curRow = curRow + 4; - crnNo = crnNo1 + 1; - break; - } - - } - // 126绌烘澘鍏� 1-8鎺� - } else { - for (int i = 0; i < shelves.group; i ++) { - curRow = shelves.start(curRow); - if (curRow < 0) { - throw new CoolException("妫�绱㈠簱浣嶅け璐ワ紝璇疯仈绯荤鐞嗗憳"); - } - Integer crnNo1 = shelves.get(curRow); - if (basCrnpService.checkSiteError(crnNo1, true)) { - crnNo = crnNo1; - break; - } + Integer crnNo1 = shelves.get(curRow); + crnNo1 = crnNo1 + divides*1; + if (basCrnpService.checkSiteError(crnNo1, true)) { + crnNo = crnNo1; + curRow = curRow + divides*4; + break; } } } @@ -244,14 +221,19 @@ if (!staNo.getAutoing().equals("Y")) { throw new CoolException("鐩爣绔�"+staDesc.getCrnStn()+"涓嶅彲鐢�"); } + // 鏇存柊搴撲綅鎺掑彿 rowLastno.setCurrentRow(curRow); rowLastnoService.updateById(rowLastno); - // 鏌ユ壘搴撲綅 + + // 寮�濮嬫煡鎵惧簱浣� ==============================>> + + // 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; @@ -263,23 +245,43 @@ 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 (!shallowLoc.getLocSts().equals("O")) { + locMast = null; + } + } } } + + // 2.搴撲綅褰撳墠鎵�灞炲昂瀵告棤绌哄簱浣嶆椂锛岃皟鏁村昂瀵稿弬鏁帮紝鍚戜笂鍏煎妫�绱㈠簱浣� if (Cools.isEmpty(locMast)) { + // 褰撳墠宸烽亾鏃犵┖搴撲綅鏃讹紝閫掑綊璋冩暣鑷充笅涓�宸烽亾锛屾绱㈠叏閮ㄥ贩閬撴棤鏋滃悗锛岃烦鍑洪�掑綊 + if (times < rowCount) { + times = times + 1; + return getLocNo(1, staDescId, sourceStaNo, matNos, locTypeDto, times); + } + // 杞昏揣鐗╂壘杞诲簱浣嶄负绌烘椂锛屽彲浠ュ幓鎵鹃噸搴撲綅浠� if (locTypeDto.getLocType1() == 1) { locTypeDto.setLocType1((short) 2); - return getLocNo(null, staDescId, sourceStaNo, matNos, locTypeDto, times); + return getLocNo(1, staDescId, sourceStaNo, matNos, locTypeDto, times); } - if (times >= rowCount) { - log.error("娌℃湁绌哄簱浣�"); - throw new CoolException("娌℃湁绌哄簱浣�"); - } - times = times + 1; - return getLocNo(1, staDescId, sourceStaNo, matNos, locTypeDto, times); + log.error("绯荤粺娌℃湁绌哄簱浣嶏紒锛侊紒 灏哄瑙勬牸锛� {}锛� 杞娆℃暟锛歿}", JSON.toJSONString(locTypeDto), times); + throw new CoolException("娌℃湁绌哄簱浣�"); } String locNo = locMast.getLocNo(); + // 鐢熸垚宸ヤ綔鍙� + int workNo = getWorkNo(0); // 杩斿洖dto startupDto.setWorkNo(workNo); startupDto.setCrnNo(crnNo); @@ -304,4 +306,38 @@ } } + /** + * 鏍规嵁鍏ュ簱绔欒幏鍙栧簱浣嶆帓鍙峰垎閰� + */ + private Integer getWhsType(Integer sourceStaNo, int times) { + if (times >= 16) { + return 4; + } + switch (sourceStaNo) { + case 173: + case 176: + case 180: + case 185: + return 1; + case 189: + case 194: + case 198: + case 202: + return 2; + case 206: +// case 211: +// case 215: +// case 219: +// case 223: + case 227: + return 3; + case 305: + case 303: + case 301: + return 4; + default: + throw new CoolException("鏍规嵁鍏ュ簱绔欒幏鍙栧簱浣嶆帓鍙峰垎閰嶅け璐ワ紝鍏ュ簱绔欙細" + sourceStaNo); + } + } + } -- Gitblit v1.9.1