From c312a110ee4823a4a1f912a05e9648edc56f96e7 Mon Sep 17 00:00:00 2001 From: skyouc Date: 星期五, 06 六月 2025 15:48:42 +0800 Subject: [PATCH] DO 单生成出库单功能优化 --- rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/OutStockServiceImpl.java | 90 ++++++++++++++++++++++---------------------- 1 files changed, 45 insertions(+), 45 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 d6d4e80..e034a1f 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 @@ -120,30 +120,25 @@ if (!deliveryItemService.updateById(deliveryItem)) { throw new CoolException("DO鍗曟槑缁嗘洿鏂板け璐ワ紒锛�"); } + + Delivery delivery = deliveryService.getOne(new LambdaQueryWrapper<Delivery>().eq(Delivery::getCode, orderItem.getPoCode())); + if (!Objects.isNull(delivery)) { + Double wkQty = Math.round((delivery.getWorkQty() - delivery.getAnfme()) * 10000) / 10000.0; + delivery.setWorkQty(wkQty.compareTo(0.0) >= 0 ? wkQty : 0).setExceStatus(POExceStatus.PO_EXCE_STATUS_UN_EXCE.val); + if (!deliveryService.updateById(delivery)) { + throw new CoolException("DO鍗曟嵁淇敼澶辫触锛侊紒"); + } + } } } } - if (!Objects.isNull(order.getPoId())) { - Delivery delivery = deliveryService.getById(order.getPoId()); - if (!Objects.isNull(delivery)) { - Double sum = orderItems.stream().mapToDouble(AsnOrderItem::getAnfme).sum(); - Double workQty = Math.round((delivery.getWorkQty() - sum) * 10000) / 10000.0; - delivery.setWorkQty(workQty.compareTo(0.0) >= 0 ? workQty : 0).setExceStatus(POExceStatus.PO_EXCE_STATUS_UN_EXCE.val); - if (!deliveryService.updateById(delivery)) { - throw new CoolException("DO鍗曟嵁淇敼澶辫触锛侊紒"); - } - } - } if (!this.remove(new LambdaQueryWrapper<AsnOrder>().eq(AsnOrder::getId, id))) { throw new CoolException("涓诲崟鍒犻櫎澶辫触锛侊紒"); } if (!outStockItemService.remove(new LambdaQueryWrapper<AsnOrderItem>().eq(AsnOrderItem::getAsnId, id))) { throw new CoolException("鍗曟嵁鏄庣粏鍒犻櫎澶辫触锛侊紒"); } -// if (!this.saveOrUpdate(order)) { -// throw new CoolException("鍗曟嵁鍙栨秷澶辫触锛侊紒"); -// } return R.ok("鎿嶄綔鎴愬姛"); } @@ -166,37 +161,38 @@ throw new CoolException("鍗曟嵁涓嶅瓨鍦紒锛�"); } Map<Long, List<DeliveryItem>> listMap = items.stream().collect(Collectors.groupingBy(DeliveryItem::getDeliveryId)); + //鑾峰彇绗竴涓狪D + Long deliveryId = items.stream().findFirst().get().getDeliveryId(); + Delivery delivery = deliveryService.getById(deliveryId); + if (Objects.isNull(delivery)) { + throw new CoolException("涓诲崟鎹笉瀛樺湪锛侊紒"); + } + AsnOrder order = new AsnOrder(); + BeanUtils.copyProperties(delivery, order); + String ruleCode = SerialRuleUtils.generateRuleCode(SerialRuleCode.SYS_OUT_STOCK_CODE, order); + if (Objects.isNull(ruleCode) || StringUtils.isBlank(ruleCode)) { + throw new CoolException("缂栫爜瑙勫垯閿欒锛氳妫�鏌� 銆孲YS_OUT_STOCK_CODE銆嶇紪鐮佹槸鍚﹁缃垚鍔�"); + } + order.setExceStatus(AsnExceStatus.OUT_STOCK_STATUS_TASK_INIT.val) + .setType(delivery.getType()) + .setWkType(delivery.getWkType()) + .setCode(ruleCode) + .setId(null) + .setUpdateBy(loginUserId) + .setCreateBy(loginUserId); + if (!this.save(order)) { + throw new CoolException("涓诲崟淇濆瓨澶辫触锛侊紒"); + } + listMap.keySet().forEach(key -> { - //TODO 鍒ゆ柇鍗曟嵁鏄惁宸茬粡瀛樺湪锛屽瀛樺湪鍒欑疮鍔犱慨鏀瑰瓙琛紝涓嶅瓨鍦ㄦ墠鏂板缓 - Delivery delivery = deliveryService.getById(key); - if (Objects.isNull(delivery)) { - throw new CoolException("鍗曟嵁涓嶅瓨鍦紒锛�"); - } - AsnOrder order = new AsnOrder(); - BeanUtils.copyProperties(delivery, order); - String ruleCode = SerialRuleUtils.generateRuleCode(SerialRuleCode.SYS_OUT_STOCK_CODE, order); - if (Objects.isNull(ruleCode) || StringUtils.isBlank(ruleCode)) { - throw new CoolException("缂栫爜瑙勫垯閿欒锛氳妫�鏌� 銆孲YS_OUT_STOCK_CODE銆嶇紪鐮佹槸鍚﹁缃垚鍔�"); - } - order.setExceStatus(AsnExceStatus.OUT_STOCK_STATUS_TASK_INIT.val) - .setType(delivery.getType()) - .setWkType(delivery.getWkType()) - .setCode(ruleCode) - .setPoId(delivery.getId()) - .setId(null) - .setUpdateBy(loginUserId) - .setCreateBy(loginUserId) - .setPoCode(delivery.getCode()); - if (!this.save(order)) { - throw new CoolException("涓诲崟淇濆瓨澶辫触锛侊紒"); - } + Delivery delivery1 = deliveryService.getById(key); List<AsnOrderItem> orderItems = new ArrayList<>(); listMap.get(key).forEach(item -> { AsnOrderItem orderItem = new AsnOrderItem(); Double anfme = Math.round((item.getAnfme() - item.getWorkQty() - item.getQty()) * 10000) / 10000.0; BeanUtils.copyProperties(item, orderItem); orderItem.setId(null) - .setPoCode(order.getPoCode()) + .setPoCode(delivery1.getCode()) .setMaktx(item.getMaktx()) .setMatnrCode(item.getMatnrCode()) .setFieldsIndex(item.getFieldsIndex()) @@ -210,6 +206,7 @@ .setPlatOrderCode(item.getPlatOrderCode()) .setProjectCode(item.getProjectCode()) .setPlatItemId(item.getPlatItemId()) + .setFieldsIndex(item.getFieldsIndex()) .setUpdateBy(loginUserId) .setCreateBy(loginUserId) .setPoDetlId(item.getId()); @@ -223,17 +220,13 @@ }); Double sum = orderItems.stream().mapToDouble(AsnOrderItem::getAnfme).sum(); - //淇敼璁″垝鏁伴噺 - order.setAnfme(sum).setWorkQty(0.0); - if (!this.saveOrUpdate(order)) { - throw new CoolException("涓诲崟鏁伴噺淇敼澶辫触锛侊紒"); - } + if (!asnOrderItemService.saveBatch(orderItems)) { throw new CoolException("鏄庣粏淇濆瓨澶辫触锛侊紒"); } Short exceStatus = POExceStatus.PO_EXCE_STATUS_SECTION_DONE.val; - if (delivery.getAnfme().compareTo(order.getAnfme()) <= 0) { + if (delivery1.getAnfme().compareTo(sum) <= 0) { exceStatus = AsnExceStatus.ASN_EXCE_STATUS_TASK_DONE.val; } @@ -243,8 +236,15 @@ .eq(Delivery::getId, key))) { throw new CoolException("涓诲崟淇敼澶辫触锛侊紒"); } - }); + + Double sum = items.stream().mapToDouble(DeliveryItem::getAnfme).sum(); + //淇敼璁″垝鏁伴噺 + order.setAnfme(sum).setWorkQty(0.0); + if (!this.saveOrUpdate(order)) { + throw new CoolException("涓诲崟鏁伴噺淇敼澶辫触锛侊紒"); + } + return R.ok(); } -- Gitblit v1.9.1