From 0b190d8a9aad67aa521ec163b437c59f6e63c400 Mon Sep 17 00:00:00 2001 From: skyouc Date: 星期四, 17 七月 2025 14:04:27 +0800 Subject: [PATCH] 盘点单下发功能优化 --- rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/WaveServiceImpl.java | 64 +++++++++++++++++++++++++++++-- 1 files changed, 59 insertions(+), 5 deletions(-) diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/WaveServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/WaveServiceImpl.java index 50e433d..b833343 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/WaveServiceImpl.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/WaveServiceImpl.java @@ -19,8 +19,6 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 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; import lombok.Synchronized; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; @@ -56,6 +54,8 @@ private WaveService waveService; @Autowired private WaveRuleServiceImpl waveRuleService; + @Autowired + private WaveOrderRelaServiceImpl waveOrderRelaService; /** * @param @@ -102,9 +102,9 @@ } List<Long> orderIds = waveItems.stream().map(WaveItem::getOrderId).collect(Collectors.toList()); /**淇敼鍑哄簱鍗曠姸鎬�*/ - if (!asnOrderService.update(new LambdaUpdateWrapper<AsnOrder>() - .set(AsnOrder::getExceStatus, AsnExceStatus.OUT_STOCK_STATUS_TASK_WORKING.val) - .in(AsnOrder::getId, orderIds))) { + if (!asnOrderService.update(new LambdaUpdateWrapper<WkOrder>() + .set(WkOrder::getExceStatus, AsnExceStatus.OUT_STOCK_STATUS_TASK_WORKING.val) + .in(WkOrder::getId, orderIds))) { throw new CoolException("鍑哄簱鍗曟嵁鐘舵�佷慨鏀瑰け璐ワ紒锛�"); } return R.ok(); @@ -129,6 +129,10 @@ throw new CoolException("鏁版嵁閿欒锛� 娉㈡涓嶅瓨鍦紒锛�"); } for (Wave wave : waves) { + if (wave.getExceStatus() >= WaveExceStatus.WAVE_EXCE_STATUS_EXCING.val) { + throw new CoolException("褰撳墠鐘舵�佹棤娉曚笅鍙戞墽琛岋紒锛�"); + } + List<WaveItem> items = waveItemService.list(new LambdaQueryWrapper<WaveItem>().eq(WaveItem::getWaveId, wave.getId())); if (items.isEmpty()) { throw new CoolException("娉㈡鏄庣粏涓嶅瓨鍦紒锛�"); @@ -163,6 +167,7 @@ } else { wave.setExceStatus(WaveExceStatus.WAVE_EXCE_STATUS_EXCING.val); } + wave.setMemo("-->搴撳瓨涓嶈冻"); waveService.updateById(wave); return R.ok(); } @@ -212,6 +217,55 @@ } /** + * 缁堟娉㈡涓嬪彂浠诲姟 + * + * @param id + * @return + */ + @Override + @Transactional(rollbackFor = Exception.class) + public R stopPubTask(Long id) { + Wave wave = this.getById(id); + if (Objects.isNull(wave)) { + throw new CoolException("娉㈡鍗曚笉瀛樺湪锛侊紒"); + } + + List<TaskItem> taskItems = taskItemService.list(new LambdaQueryWrapper<TaskItem>() + .eq(TaskItem::getSourceId, wave.getId())); + if (!taskItems.isEmpty()) { + throw new CoolException("宸茬敓鎴愪换鍔′笉鍙粓姝㈠綋鍓嶆尝娆★紒锛�"); + } + + List<WaveOrderRela> orderRelas = waveOrderRelaService.list(new LambdaQueryWrapper<WaveOrderRela>().eq(WaveOrderRela::getWaveId, id)); + if (orderRelas.isEmpty()) { + throw new CoolException("鏃犲叧鑱旀槑缁�!!"); + } + + List<Long> orderIds = orderRelas.stream().map(WaveOrderRela::getOrderItemId).collect(Collectors.toList()); + List<WkOrderItem> orderItems = asnOrderItemService.list(new LambdaQueryWrapper<WkOrderItem>().in(WkOrderItem::getId, orderIds)); + orderItems.forEach(asnOrderItem -> { + asnOrderItem.setWorkQty(0.0); + if (!asnOrderItemService.updateById(asnOrderItem)) { + throw new CoolException("鍗曟嵁鏄庣粏鏇存柊澶辫触锛�!"); + } + }); + + List<Long> orders = orderRelas.stream().map(WaveOrderRela::getOrderId).collect(Collectors.toList()); + if (!asnOrderService.update(new LambdaUpdateWrapper<WkOrder>() + .set(WkOrder::getWorkQty, 0.0) + .set(WkOrder::getExceStatus, AsnExceStatus.OUT_STOCK_STATUS_TASK_INIT.val) + .in(WkOrder::getId, orders))) { + throw new CoolException("鍗曟嵁鏇存柊澶辫触锛�!"); + } + + this.update(new LambdaUpdateWrapper<Wave>() + .eq(Wave::getId, id) + .set(Wave::getExceStatus, WaveExceStatus.WAVE_EXCE_STATUS_TASK.val)); + + return R.ok(); + } + + /** * @param * @param loginUserId * @param wave -- Gitblit v1.9.1