From a488088a18a9b8808bc57124681cee8c4ada7299 Mon Sep 17 00:00:00 2001
From: chen.lin <1442464845@qq.com>
Date: 星期二, 10 三月 2026 17:23:03 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/devlop-phyz' into devlop-phyz
---
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/OutStockServiceImpl.java | 101 ++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 101 insertions(+), 0 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 33f3510..60635d3 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
@@ -276,6 +276,107 @@
*/
@Override
@Transactional(rollbackFor = Exception.class)
+ public R generateWavesOrderAuto(GenWaveParams params,String stationId,String locCode) {
+ if (Objects.isNull(params.getIds()) || params.getIds().isEmpty()) {
+ throw new CoolException("鍙傛暟涓嶈兘涓虹┖锛侊紒");
+ }
+ List<WkOrder> orders = this.list(new LambdaQueryWrapper<WkOrder>()
+ .eq(WkOrder::getExceStatus, AsnExceStatus.OUT_STOCK_STATUS_TASK_INIT.val)
+ .in(WkOrder::getId, params.getIds()));
+ if (orders.isEmpty()) {
+ throw new CoolException("褰撳墠鍗曟嵁鐘舵�佷笉鑳芥墽琛屾尝娆$敓鎴愭搷浣滐紒锛�");
+ }
+ Double sum = orders.stream().mapToDouble(WkOrder::getAnfme).sum();
+ Double workQty = orders.stream().mapToDouble(WkOrder::getWorkQty).sum();
+ Double anfme = Math.round((sum - workQty) * 10000) / 10000.0;
+ Wave wave = new Wave();
+ String ruleCode = SerialRuleUtils.generateRuleCode(SerialRuleCode.SYS_WAVE_TYPE, null);
+ if (StringUtils.isBlank(ruleCode)) {
+ throw new CoolException("缂栫爜瑙勫垯閿欒锛氳瑕佹煡鐪嬨�孲YS_WAVE_TYPE銆嶆槸鍚﹁缃垚鍔燂紒锛�");
+ }
+ wave.setOrderNum(params.getIds().size())
+ .setType(Short.parseShort("1"))
+ .setCode(ruleCode)
+ .setExceStatus(WaveExceStatus.WAVE_EXCE_STATUS_INIT.val)
+ .setAnfme(anfme);
+ if (!waveService.save(wave)) {
+ throw new CoolException("娉㈡淇濆瓨澶辫触锛侊紒");
+ }
+
+ List<Long> list = orders.stream().map(WkOrder::getId).collect(Collectors.toList());
+ List<WkOrderItem> orderItems = asnOrderItemService
+ .list(new LambdaQueryWrapper<WkOrderItem>()
+ .in(WkOrderItem::getOrderId, list).apply("anfme > work_qty"));
+ if (orderItems.isEmpty()) {
+ throw new CoolException("鍗曟嵁涓嶅瓨鍦紒锛�");
+ }
+
+ //鍚堝苟鐗╂枡锛岀敓鎴愭尝娆℃槑缁�
+ List<WaveItem> waveItems = mergeWave(orderItems, wave);
+
+ if (!waveItemService.saveBatch(waveItems)) {
+ throw new CoolException("娉㈡鏄庣粏淇濆瓨澶辫触锛侊紒");
+ }
+ double sum1 = waveItems.stream().mapToDouble(WaveItem::getAnfme).sum();
+ wave.setAnfme(sum1).setGroupQty(waveItems.size());
+ wave.setStationId(stationId);
+ wave.setLocCode(locCode);
+ if (!waveService.saveOrUpdate(wave)) {
+ throw new CoolException("涓诲崟淇敼澶辫触锛侊紒");
+ }
+ for (int i = 0; i < orderItems.size(); i++) {
+ orderItems.get(i).setWorkQty(orderItems.get(i).getAnfme());
+ }
+
+ /**
+ *璁㈠崟淇℃伅瀛樺偍鑷抽�昏緫鍏宠仈琛�
+ */
+ for (WaveItem item : waveItems) {
+ List<WkOrderItem> items = orderItems.stream()
+ .filter(orderItem -> item.getMatnrId()
+ .equals(orderItem.getMatnrId()))
+ .collect(Collectors.toList());
+
+ items.forEach(orderItem -> {
+ WaveOrderRela orderRela = new WaveOrderRela();
+ orderRela.setId(null)
+ .setOrderId(orderItem.getOrderId())
+ .setOrderItemId(orderItem.getId())
+ .setWaveId(wave.getId())
+ .setWaveItemId(item.getId());
+ if (!waveOrderRelaService.saveOrUpdate(orderRela)) {
+ throw new CoolException("<UNK>");
+ }
+ });
+ }
+
+
+ if (!asnOrderItemService.saveOrUpdateBatch(orderItems)) {
+ throw new CoolException("鍑哄簱鍗曟墽琛屾暟閲忎慨鏀瑰け璐ワ紒锛�");
+ }
+ for (WkOrder order : orders) {
+ Double wkQty = Math.round((order.getWorkQty() + order.getAnfme()) * 10000) / 10000.0;
+ if (!this.update(new LambdaUpdateWrapper<WkOrder>()
+ .set(WkOrder::getWaveId, wave.getId())
+ .set(WkOrder::getWorkQty, wkQty)
+ .set(WkOrder::getExceStatus, AsnExceStatus.OUT_STOCK_STATUS_TASK_WAVE.val)
+ .eq(WkOrder::getId, order.getId()))) {
+ throw new CoolException("鎵ц鐘舵�佷慨鏀逛慨鏀瑰け璐ワ紒锛�");
+ }
+ }
+
+ return R.ok("鎿嶄綔瀹屾垚锛侊紒");
+ }
+
+ /**
+ * @param
+ * @return
+ * @author Ryan
+ * @description 鐢熸垚娉㈡
+ * @time 2025/4/24 15:04
+ */
+ @Override
+ @Transactional(rollbackFor = Exception.class)
public R generateWaves(GenWaveParams params) {
if (Objects.isNull(params.getIds()) || params.getIds().isEmpty()) {
throw new CoolException("鍙傛暟涓嶈兘涓虹┖锛侊紒");
--
Gitblit v1.9.1