From bf22f0953d5a2e699b6a69dc4b6bfab8ec0a7c7d Mon Sep 17 00:00:00 2001 From: lsh <lsh@163.com> Date: 星期四, 20 六月 2024 16:33:13 +0800 Subject: [PATCH] # --- src/main/java/com/zy/common/service/CommonService.java | 167 +++++++++++++++++++++++++++++++++++++++++++++++++++---- 1 files changed, 155 insertions(+), 12 deletions(-) diff --git a/src/main/java/com/zy/common/service/CommonService.java b/src/main/java/com/zy/common/service/CommonService.java index fcaf695..3dd5b72 100644 --- a/src/main/java/com/zy/common/service/CommonService.java +++ b/src/main/java/com/zy/common/service/CommonService.java @@ -139,9 +139,9 @@ log.error("绔欑偣={} 鏈煡璇㈠埌瀵瑰簲鐨勮鍒�",sourceStaNo); break; case 4: - return getLocNoRun2(whsType,staDescId,sourceStaNo,matnr,batch,grade,3,locTypeDto,0); + return getLocNoRun4(whsType,staDescId,sourceStaNo,matnr,batch,grade,4,locTypeDto,0); case 5: - return getLocNoRun2(whsType,staDescId,sourceStaNo,matnr,batch,grade,3,locTypeDto,0); + return getLocNoRun5(whsType,staDescId,sourceStaNo,matnr,batch,grade,0,locTypeDto,0); default: log.error("绔欑偣={} 鏈煡璇㈠埌瀵瑰簲鐨勮鍒�",sourceStaNo); break; @@ -462,7 +462,7 @@ return startupDto; } - public StartupDto getLocNoRun2(Integer whsType, Integer staDescId, Integer sourceStaNo, String matnr, String batch, String grade, Integer moveCrnNo, LocTypeDto locTypeDto, int times) { + public StartupDto getLocNoRun4(Integer whsType, Integer staDescId, Integer sourceStaNo, String matnr, String batch, String grade, Integer moveCrnNo, LocTypeDto locTypeDto, int times) { if (Cools.isEmpty(matnr)) { //鐗╂枡鍙� matnr = ""; } @@ -536,6 +536,8 @@ int nearbay = 0; //鐩镐技宸ヤ綔妗f 鐩爣搴撲綅鍒� int nearlev = 0; //鐩镐技宸ヤ綔妗f 鐩爣搴撲綅灞� for (WrkMast wrkMast:wrkMasts){ + int curRowW = curRow; //鐩镐技宸ヤ綔妗f 鏈�娣卞簱浣嶆帓 + int nearRowW = nearRow; //鐩镐技宸ヤ綔妗f 鏈�娴呭簱浣嶆帓 if (Cools.isEmpty(wrkMast.getLocNo())){ continue; } @@ -554,15 +556,26 @@ nearbay=Utils.getBay(wrkMast.getLocNo()); nearlev=Utils.getLev(wrkMast.getLocNo()); } + //鑾峰彇鐩爣搴撲綅鎵�鍦ㄥ贩閬撳苟鎺掑簭 // List<String> groupOutsideLocCrn = Utils.getGroupOutLocCrn(curRow,nearRow,wrkMast.getLocNo(), curRow>nearRow); LocMast locMastGro = locMastService.selectById(wrkMast.getLocNo()); + for (int i = 0; i < crnNumber*2; i++) { + if (!(Utils.getRow(locMastGro.getLocNo())>nearRowW && Utils.getRow(locMastGro.getLocNo())<=curRowW) && !(Utils.getRow(locMastGro.getLocNo())<nearRowW && Utils.getRow(locMastGro.getLocNo())>=curRowW) ){ + int[] locNecessaryParameters = Utils.LocNecessaryParameters(rowLastno, curRowW, crnNumber); + curRowW = locNecessaryParameters[1]; + nearRowW = locNecessaryParameters[3]; + }else { + break; + } + } + //鑾峰彇鐩爣搴撲綅鎵�鍦ㄥ贩閬撴渶娴呴潪绌哄簱浣� - LocMast locMast2 = locMastService.selectLocByLocStsPakInF(curRow,nearRow,locMastGro,rowLastnoType.getType().longValue()); + LocMast locMast2 = locMastService.selectLocByLocStsPakInF(curRowW,nearRowW,locMastGro,rowLastnoType.getType().longValue()); //鐩爣搴撲綅鎵�鍦ㄥ贩閬撴渶娴呴潪绌哄簱浣嶅瓨鍦�&&闈炴渶澶栦晶搴撲綅&&鍏ュ簱鐘舵�� - if (!Cools.isEmpty(locMast2) && Utils.getRow(locMast2.getLocNo())!=nearRow && (locMast2.getLocSts().equals("S") || locMast2.getLocSts().equals("Q"))){ + if (!Cools.isEmpty(locMast2) && Utils.getRow(locMast2.getLocNo())!=nearRowW && (locMast2.getLocSts().equals("S") || locMast2.getLocSts().equals("Q"))){ //鑾峰彇搴撳瓨鏄庣粏 WrkDetl wrkDetl = wrkDetlService.selectOne(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo())); //鍒ゆ柇鍚岃鏍肩墿鏂� @@ -570,13 +583,16 @@ && batch.equals(batch.isEmpty() ? "":wrkDetl.getBatch()) && grade.equals(grade.isEmpty()? "":wrkDetl.getBrand())){ int row2=0; - if (Utils.getRow(locMast2.getLocNo())>nearRow){ + if (Utils.getRow(locMast2.getLocNo())>nearRowW){ row2=Utils.getRow(locMast2.getLocNo())-1; } else { row2=Utils.getRow(locMast2.getLocNo())+1; } String targetLocNo = zerofill(String.valueOf(row2), 2) + locMast2.getLocNo().substring(2); - locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no",targetLocNo)); + locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no",targetLocNo).eq("loc_sts","O")); + if (Cools.isEmpty(locMast)){ + continue; + } break; } } @@ -831,16 +847,12 @@ // } } - if (!Cools.isEmpty(locMast) && !basCrnpService.checkSiteError(crnNo, true)) { - locMast = null; - } - // 閫掑綊鏌ヨ if (Cools.isEmpty(locMast) || !locMast.getLocSts().equals("O")) { // 褰撳墠宸烽亾鏃犵┖搴撲綅鏃讹紝閫掑綊璋冩暣鑷充笅涓�宸烽亾锛屾绱㈠叏閮ㄥ贩閬撴棤鏋滃悗锛岃烦鍑洪�掑綊 if (times < rowCount*2) { times = times + 1; - return getLocNoRun(whsType, staDescId, sourceStaNo, matnr, batch, grade,moveCrnNo, locTypeDto, times); + return getLocNoRun4(whsType, staDescId, sourceStaNo, matnr, batch, grade,moveCrnNo, locTypeDto, times); } // // 2.搴撲綅褰撳墠鎵�灞炲昂瀵告棤绌哄簱浣嶆椂锛岃皟鏁村昂瀵稿弬鏁帮紝鍚戜笂鍏煎妫�绱㈠簱浣� // if (locTypeDto.getLocType1() < 2) { @@ -862,6 +874,137 @@ startupDto.setLocNo(locNo); return startupDto; } + public StartupDto getLocNoRun5(Integer whsType, Integer staDescId, Integer sourceStaNo, String matnr, String batch, String grade, Integer moveCrnNo, LocTypeDto locTypeDto, int times) { + if (Cools.isEmpty(matnr)) { //鐗╂枡鍙� + matnr = ""; + } + if (Cools.isEmpty(batch)) { //鎵规 + batch = ""; + } + if (Cools.isEmpty(grade)) { //澶囩敤 + grade = ""; + } + + // 鍒濆鍖栧弬鏁� + int crnNo = 0; //鍫嗗灈鏈哄彿 + int nearRow = 0; //鏈�娴呭簱浣嶆帓 + int curRow = 0; //鏈�娣卞簱浣嶆帓 + int rowCount = 0; //杞杞 + LocMast locMast = null; // 鐩爣搴撲綅 + + StartupDto startupDto = new StartupDto(); + RowLastno rowLastno = rowLastnoService.selectById(whsType); + if (Cools.isEmpty(rowLastno)) { + throw new CoolException("鏁版嵁寮傚父锛岃鑱旂郴绠$悊鍛�===>搴撲綅瑙勫垯鏈煡"); + } + RowLastnoType rowLastnoType = rowLastnoTypeService.selectById(rowLastno.getTypeId()); + if (Cools.isEmpty(rowLastnoType)) { + throw new CoolException("鏁版嵁寮傚父锛岃鑱旂郴绠$悊鍛�===銆嬪簱浣嶈鍒欑被鍨嬫湭鐭�"); + } + int sRow = rowLastno.getsRow(); + int eRow = rowLastno.geteRow(); + int crnNumber = eRow-sRow+1; + + // ===============>>>> 寮�濮嬫墽琛� + curRow = rowLastno.getCurrentRow(); + + if (!Cools.isEmpty(moveCrnNo) && moveCrnNo!=0){ + crnNumber = moveCrnNo; + } + + //姝ょ▼搴忕敤浜庝紭鍖栧爢鍨涙満寮傚父鏃剁殑杩愯鏃堕棿 + for (int i = times; i < crnNumber*2; i++) { + int[] locNecessaryParameters = Utils.LocNecessaryParameters(rowLastno, curRow, crnNumber); + curRow = locNecessaryParameters[1]; + crnNo = locNecessaryParameters[2]; + if (basCrnpService.checkSiteError(crnNo, true)) { + rowCount = locNecessaryParameters[0]; + nearRow = locNecessaryParameters[3]; + break; + } else { + times++; + } + } + if (crnNo == 0) { + throw new CoolException("鏃犲彲鐢ㄥ簱浣�"); + } + + Wrapper<StaDesc> wrapper = null; + StaDesc staDesc = null; + BasDevp staNo = null; + + if (Utils.BooleanWhsTypeSta(rowLastno, staDescId)) { + // 鑾峰彇鐩爣绔� + wrapper = new EntityWrapper<StaDesc>() + .eq("type_no", staDescId) + .eq("stn_no", sourceStaNo) + .eq("crn_no", crnNo); + staDesc = staDescService.selectOne(wrapper); + if (Cools.isEmpty(staDesc)) { + log.error("type_no={},stn_no={},crn_no={}", staDescId, sourceStaNo, crnNo); +// throw new CoolException("鍏ュ簱璺緞涓嶅瓨鍦�"); + crnNo = 0; + }else { + staNo = basDevpService.selectById(staDesc.getCrnStn()); + if (!staNo.getAutoing().equals("Y")) { + log.error("鐩爣绔�"+staDesc.getCrnStn()+"涓嶅彲鐢�"); +// throw new CoolException("鐩爣绔�"+staDesc.getCrnStn()+"涓嶅彲鐢�"); + crnNo = 0; + } + startupDto.setStaNo(staNo.getDevNo()); + } + } + + // 鏇存柊搴撲綅鎺掑彿 + if (Utils.BooleanWhsTypeSta(rowLastno, staDescId) && Cools.isEmpty(locMast)) { + rowLastno.setCurrentRow(curRow); + rowLastnoService.updateById(rowLastno); + } + + // 寮�濮嬫煡鎵惧簱浣� ==============================>> + + // 1.鎸夎鍒欐煡鎵惧簱浣� + if (Cools.isEmpty(locMast) && crnNo != 0) { + List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>() + .eq("row1", nearRow) + .eq("loc_sts", "O").eq("whs_type",rowLastnoType.getType().longValue()) + .orderBy("lev1",true).orderBy("bay1",true));//鏈�娴呭簱浣� + for (LocMast locMast1 : locMasts) { + if (!VersionUtils.locMoveCheckLocTypeComplete(locMast1, locTypeDto)) { + continue; + } + if (Utils.BooleanWhsTypeStaIoType(rowLastno)){ + //鑾峰彇鐩爣搴撲綅鎵�鍦ㄥ贩閬撴渶娣辩┖搴撲綅 + LocMast locMast2 = locMastService.selectLocByLocStsPakInO(curRow,nearRow,locMast1,rowLastnoType.getType().longValue()); + if (!Cools.isEmpty(locMast2) && locMast2.getBay1()==curRow) { + locMast = locMast2; + break; + } + } + } + } + + // 閫掑綊鏌ヨ + if (Cools.isEmpty(locMast) || !locMast.getLocSts().equals("O")) { + // 褰撳墠宸烽亾鏃犵┖搴撲綅鏃讹紝閫掑綊璋冩暣鑷充笅涓�宸烽亾锛屾绱㈠叏閮ㄥ贩閬撴棤鏋滃悗锛岃烦鍑洪�掑綊 + if (times < rowCount*2) { + times = times + 1; + return getLocNoRun5(whsType, staDescId, sourceStaNo, matnr, batch, grade,moveCrnNo, 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); + startupDto.setSourceStaNo(sourceStaNo); + startupDto.setLocNo(locNo); + return startupDto; + } public static String zerofill(String msg, Integer count) { if (msg.length() == count) { -- Gitblit v1.9.1