From d51f64c1f0105d4b18aa8344c11e47827730a40c Mon Sep 17 00:00:00 2001 From: skyouc Date: 星期五, 08 八月 2025 10:42:39 +0800 Subject: [PATCH] Merge branch 'devlop' of http://47.97.1.152:5880/r/wms-master into devlop --- rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/WcsServiceImpl.java | 63 +++++++++++++++++++++++-------- 1 files changed, 47 insertions(+), 16 deletions(-) diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/WcsServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/WcsServiceImpl.java index 5c04328..c6bec07 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/WcsServiceImpl.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/WcsServiceImpl.java @@ -361,7 +361,7 @@ //鏍规嵁绔嬪簱绫诲瀷鑾峰彇鑾峰彇搴撲綅 if (warehouseArea.getType().equals(WarehType.WAREHOUSE_TYPE_CRN.val)) { //鍫嗗灈鏈� - dto = getLocNoCrn(deviceBind, warehouseArea.getId(), param.getSourceStaNo(), matnr, batch, locTypeDto, 0, param.getIoType()); + dto = getLocNoCrn(param.getOrgLoc(),deviceBind, warehouseArea.getId(), param.getSourceStaNo(), matnr, batch, locTypeDto, 0, param.getIoType()); } else if (warehouseArea.getType().equals(WarehType.WAREHOUSE_TYPE_FOUR_DIRECTIONS.val)) { //鍥涘悜搴� @@ -372,7 +372,7 @@ return dto; } - private InTaskMsgDto getLocNoCrn(DeviceBind deviceBind, Long area, Integer sourceStaNo, String matnr, String batch, LocTypeDto locTypeDto, int times, Integer ioType) { + private InTaskMsgDto getLocNoCrn(String orgLoc,DeviceBind deviceBind, Long area, Integer sourceStaNo, String matnr, String batch, LocTypeDto locTypeDto, int times, Integer ioType) { if (Cools.isEmpty(matnr)) { //鐗╂枡鍙� matnr = ""; } @@ -388,28 +388,25 @@ InTaskMsgDto inTaskMsgDto = new InTaskMsgDto(); - int sRow = deviceBind.getStartRow(); - int eRow = deviceBind.getEndRow(); int deviceQty = deviceBind.getDeviceQty(); // ===============>>>> 寮�濮嬫墽琛� curRow = deviceBind.getCurrentRow(); - //姝ょ▼搴忕敤浜庝紭鍖栧爢鍨涙満寮傚父鏃剁殑杩愯鏃堕棿 - for (int i = times; i <= deviceQty * 2; i++) { - int[] locNecessaryParameters = LocUtils.LocNecessaryParameters(deviceBind, curRow, deviceQty); - curRow = locNecessaryParameters[1]; - channel = locNecessaryParameters[2]; - rowCount = locNecessaryParameters[0]; - nearRow = locNecessaryParameters[3]; - break; - } + //鑾峰彇鎺� + int[] locNecessaryParameters = LocUtils.LocNecessaryParameters(deviceBind, curRow, deviceQty); + curRow = locNecessaryParameters[1]; + channel = locNecessaryParameters[2]; + rowCount = locNecessaryParameters[0]; + nearRow = locNecessaryParameters[3]; + + if (nearRow == 0) { throw new CoolException("鏃犲彲鐢ㄥ爢鍨涙満"); } //鍏ュ簱闈犺繎鎽嗘斁 - if (ioType == 1 && deviceBind.getBeSimilar().equals("1") && !Cools.isEmpty(matnr)) { + if (ioType == 1 && deviceBind.getBeSimilar().equals("1") && !Cools.isEmpty(matnr) && Cools.isEmpty(orgLoc)) { if (nearRow != curRow) { List<LocItem> locItems = locItemService.list(new LambdaQueryWrapper<LocItem>().eq(LocItem::getMatnrCode, matnr)); for (LocItem locItem : locItems) { @@ -484,6 +481,10 @@ .orderByAsc(Loc::getLev) .orderByAsc(Loc::getCol) ); + Loc orgMoveLoc = null; + if (!Cools.isEmpty(orgLoc)) { + orgMoveLoc = locService.getOne(new LambdaQueryWrapper<Loc>().eq(Loc::getCode, orgLoc)); + } for (Loc locMast1 : locMasts) { if (!LocUtils.locMoveCheckLocTypeComplete(locMast1, locTypeDto)) { continue; @@ -496,7 +497,13 @@ .eq(Loc::getUseStatus, LocStsType.LOC_STS_TYPE_O.type) .eq(Loc::getAreaId, area) ); + if (!Cools.isEmpty(locMast2)) { + if (null != orgMoveLoc){ + if (!locMast2.getChannel().equals(orgMoveLoc.getChannel())) { + break; + } + } loc = locMast2; break; } @@ -507,7 +514,13 @@ .in(Loc::getUseStatus, LocStsType.LOC_STS_TYPE_D.type, LocStsType.LOC_STS_TYPE_F.type) .eq(Loc::getAreaId, area) ); + if (!Cools.isEmpty(locMast2)) { + if (null != orgMoveLoc){ + if (!locMast2.getChannel().equals(orgMoveLoc.getChannel())) { + break; + } + } loc = locMast1; break; } else { @@ -516,7 +529,13 @@ .eq(Loc::getUseStatus, LocStsType.LOC_STS_TYPE_O.type) .eq(Loc::getAreaId, area) ); + if (!Cools.isEmpty(locMast2)) { + if (null != orgMoveLoc){ + if (!locMast2.getChannel().equals(orgMoveLoc.getChannel())) { + break; + } + } loc = locMast2; break; } @@ -535,7 +554,13 @@ .eq(Loc::getUseStatus, LocStsType.LOC_STS_TYPE_O.type) .eq(Loc::getAreaId, area) ); + if (!Cools.isEmpty(locMast2)) { + if (null != orgMoveLoc){ + if (!locMast2.getChannel().equals(orgMoveLoc.getChannel())) { + break; + } + } loc = locMast2; break; } else { @@ -544,7 +569,13 @@ .in(Loc::getUseStatus, LocStsType.LOC_STS_TYPE_D.type, LocStsType.LOC_STS_TYPE_D.type) .eq(Loc::getAreaId, area) ); + if (!Cools.isEmpty(locMast2)) { + if (null != orgMoveLoc){ + if (!locMast2.getChannel().equals(orgMoveLoc.getChannel())) { + break; + } + } loc = locMast1; break; } @@ -573,14 +604,14 @@ // 褰撳墠宸烽亾鏃犵┖搴撲綅鏃讹紝閫掑綊璋冩暣鑷充笅涓�宸烽亾锛屾绱㈠叏閮ㄥ贩閬撴棤鏋滃悗锛岃烦鍑洪�掑綊 if (times < rowCount * 2) { times = times + 1; - return getLocNoCrn(deviceBind, area, sourceStaNo, matnr, batch, locTypeDto, times, ioType); + return getLocNoCrn(orgLoc,deviceBind, area, sourceStaNo, matnr, batch, locTypeDto, times, ioType); } // 2.搴撲綅褰撳墠鎵�灞炲昂瀵告棤绌哄簱浣嶆椂锛岃皟鏁村昂瀵稿弬鏁帮紝鍚戜笂鍏煎妫�绱㈠簱浣� if (locTypeDto.getLocType1() < 3) { int i = locTypeDto.getLocType1() + 1; locTypeDto.setLocType1(i); - return getLocNoCrn(deviceBind, area, sourceStaNo, matnr, batch, locTypeDto, 0, ioType); + return getLocNoCrn(orgLoc,deviceBind, area, sourceStaNo, matnr, batch, locTypeDto, 0, ioType); } throw new CoolException("娌℃湁绌哄簱浣�"); } -- Gitblit v1.9.1