From f2833c7f3e01c997e94a66bd5dd9be738b5c6cc7 Mon Sep 17 00:00:00 2001 From: skyouc Date: 星期四, 26 六月 2025 13:31:08 +0800 Subject: [PATCH] 波次任务下发功能优化 --- rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/OutStockServiceImpl.java | 61 +++++------------------------- 1 files changed, 11 insertions(+), 50 deletions(-) diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/OutStockServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/OutStockServiceImpl.java index 0ed6f59..4797899 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/OutStockServiceImpl.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/OutStockServiceImpl.java @@ -15,6 +15,7 @@ import com.vincent.rsf.server.manager.entity.*; import com.vincent.rsf.server.manager.mapper.AsnOrderMapper; import com.vincent.rsf.server.manager.service.*; +import com.vincent.rsf.server.manager.utils.LocManageUtil; import com.vincent.rsf.server.manager.utils.OptimalAlgorithmUtil; import com.vincent.rsf.server.system.constant.SerialRuleCode; import com.vincent.rsf.server.system.utils.SerialRuleUtils; @@ -295,10 +296,11 @@ if (!waveService.save(wave)) { throw new CoolException("娉㈡淇濆瓨澶辫触锛侊紒"); } + List<Long> list = orders.stream().map(AsnOrder::getId).collect(Collectors.toList()); List<AsnOrderItem> orderItems = asnOrderItemService .list(new LambdaQueryWrapper<AsnOrderItem>() - .in(AsnOrderItem::getAsnId, list)); + .in(AsnOrderItem::getAsnId, list).apply("anfme > work_qty")); if (orderItems.isEmpty()) { throw new CoolException("鍗曟嵁涓嶅瓨鍦紒锛�"); } @@ -324,7 +326,7 @@ .set(AsnOrder::getWaveId, wave.getId()) .set(AsnOrder::getWorkQty, wkQty) .set(AsnOrder::getExceStatus, AsnExceStatus.OUT_STOCK_STATUS_TASK_WAVE.val) - .in(AsnOrder::getId, params.getIds()))) { + .eq(AsnOrder::getId, order.getId()))) { throw new CoolException("鎵ц鐘舵�佷慨鏀逛慨鏀瑰け璐ワ紒锛�"); } } @@ -346,15 +348,12 @@ throw new CoolException("涓诲崟淇℃伅涓嶈兘涓虹┖"); } AsnOrder orders = params.getOrders(); - if (Objects.isNull(orders)) { - throw new CoolException("鍗曟嵁涓嶈兘涓虹┖锛侊紒"); - } if (StringUtils.isBlank(orders.getWkType())) { throw new CoolException("涓氬姟绫诲瀷涓嶈兘涓虹┖锛侊紒"); } String ruleCode = SerialRuleUtils.generateRuleCode(SerialRuleCode.SYS_OUT_STOCK_CODE, orders); - if (Objects.isNull(ruleCode) || StringUtils.isBlank(ruleCode)) { + if (StringUtils.isBlank(ruleCode)) { throw new CoolException("缂栫爜瑙勫垯閿欒锛氳妫�鏌ャ�孲YS_OUT_STOCK_CODE銆嶆槸鍚﹁缃纭紒锛�"); } orders.setCode(ruleCode) @@ -415,7 +414,8 @@ if (Cools.isEmpty(param.getOrderId())) { throw new CoolException("鍗曟嵁ID涓虹┖"); } - WaveRule waveRule = waveRuleService.getOne(new LambdaQueryWrapper<WaveRule>().eq(WaveRule::getId, param.getWaveId())); + WaveRule waveRule = waveRuleService.getOne(new LambdaQueryWrapper<WaveRule>() + .eq(WaveRule::getId, param.getWaveId())); if (Cools.isEmpty(waveRule)) { throw new CoolException("鏈壘鍒板綋鍓嶇瓥鐣�"); } @@ -569,50 +569,11 @@ } - private List<LocItem> getEfficiencyFirstItemList(AsnOrderItem asnOrderItem) { - LambdaQueryWrapper<LocItem> locItemQueryWrapper = new LambdaQueryWrapper<>(); - locItemQueryWrapper.eq(LocItem::getMatnrCode, asnOrderItem.getMatnrCode()); - locItemQueryWrapper.eq(LocItem::getBatch, asnOrderItem.getSplrBatch()); - String applySql = String.format( - "EXISTS (SELECT 1 FROM man_loc ml " + - "WHERE ml.use_status = '%s'" + - "AND ml.id = man_loc_item.loc_id " + - ")", - LocStsType.LOC_STS_TYPE_F.type - ); - locItemQueryWrapper.apply(applySql); - List<LocItem> locItems = locItemService.list(locItemQueryWrapper); - locItems.sort(Comparator.comparing((LocItem item) -> !LocUtils.isShallowLoc(item.getLocCode()))); - List<LocItem> locsSet = locItems.stream().filter(locItem -> locItem.getAnfme().compareTo(asnOrderItem.getAnfme()) == 0.0).collect(Collectors.toList()); - if (!locsSet.isEmpty()) { - return locsSet; - } - return locItems; - } - - private List<LocItem> getFirstInFirstOutItemList(AsnOrderItem asnOrderItem) { - LambdaQueryWrapper<LocItem> locItemQueryWrapper = new LambdaQueryWrapper<>(); - locItemQueryWrapper.eq(LocItem::getMatnrCode, asnOrderItem.getMatnrCode()); - locItemQueryWrapper.eq(LocItem::getBatch, asnOrderItem.getSplrBatch()); - locItemQueryWrapper.orderByAsc(LocItem::getCreateTime); - String applySql = String.format( - "EXISTS (SELECT 1 FROM man_loc ml " + - "WHERE ml.use_status = '%s'" + - "AND ml.id = man_loc_item.loc_id " + - ")", - LocStsType.LOC_STS_TYPE_F.type - ); - locItemQueryWrapper.apply(applySql); - List<LocItem> locItems = locItemService.list(locItemQueryWrapper); - return locItems; - } - private List<OrderOutItemDto> getOutOrderList(Long orderId, WaveRule waveRule) { List<AsnOrderItem> asnOrderItems = asnOrderItemService.list(new LambdaQueryWrapper<AsnOrderItem>() .eq(AsnOrderItem::getAsnId, orderId)); List<OrderOutItemDto> list = new ArrayList<>(); Set<ExistDto> existDtos = new HashSet<>(); - for (AsnOrderItem asnOrderItem : asnOrderItems) { BigDecimal issued = new BigDecimal(asnOrderItem.getAnfme().toString()) .subtract(new BigDecimal(asnOrderItem.getWorkQty().toString()) @@ -622,11 +583,11 @@ } List<LocItem> locItems = new ArrayList<>(); if (WaveRuleType.Efficiency_First.type.equals(waveRule.getType())) { - locItems = getEfficiencyFirstItemList(asnOrderItem); + locItems = LocManageUtil.getEfficiencyFirstItemList(asnOrderItem.getMatnrCode(), asnOrderItem.getSplrBatch(), asnOrderItem.getAnfme()); } else if (WaveRuleType.First_In_First_Out.type.equals(waveRule.getType())) { - locItems = getFirstInFirstOutItemList(asnOrderItem); + locItems = LocManageUtil.getFirstInFirstOutItemList(asnOrderItem.getMatnrCode(), asnOrderItem.getSplrBatch(), asnOrderItem.getAnfme()); } else { - locItems = getFirstInFirstOutItemList(asnOrderItem); + locItems = LocManageUtil.getFirstInFirstOutItemList(asnOrderItem.getMatnrCode(), asnOrderItem.getSplrBatch(), asnOrderItem.getAnfme()); } for (LocItem locItem : locItems) { Loc loc = locService.getById(locItem.getLocId()); @@ -732,7 +693,7 @@ p1.getUpdateBy(), p1.getMemo() ), - WaveItem::getSplrBatch, WaveItem::getMatnrId, WaveItem::getFieldsIndex + WaveItem::getSplrBatch, WaveItem::getMatnrCode, WaveItem::getFieldsIndex ); return waveItems; -- Gitblit v1.9.1