24282 1 жил өмнө
parent
commit
d9e0f1bab8

+ 32 - 33
sd-business/src/main/java/com/sd/business/service/order/impl/OrderInfoServiceImpl.java

@@ -359,12 +359,15 @@ public class OrderInfoServiceImpl extends ServiceImpl<OrderInfoMapper, OrderInfo
             throw new ServiceException("订单已生产,无法删除");
         }
 
+        List<Long> orderSkuIdList = orderSkuService.listObject(BaseIdPo::getId, q -> q.eq(OrderSku::getOrderId, id));
+
         removeById(id);
         orderSkuService.remove(q -> q.eq(OrderSku::getOrderId, id));
         orderSkuBomService.remove(q -> q.eq(OrderSkuBom::getOrderId, id));
         orderPackageBomService.remove(q -> q.eq(OrderPackageBom::getOrderId, id));
         orderSkuProductionCostService.remove(q -> q.eq(OrderSkuProductionCost::getOrderId, id));
         ObsFileUtil.removeFile(id);
+        ObsFileUtil.removeFile(orderSkuIdList);
     }
 
     @DSTransactional
@@ -505,34 +508,24 @@ public class OrderInfoServiceImpl extends ServiceImpl<OrderInfoMapper, OrderInfo
     @Override
     public void saveOrderDeliveryCode(OrderInfoDto dto) {
         OrderInfo orderInfo = getById(dto.getId());
-        if (orderInfo == null) {
-            throw new ServiceException("未找到订单");
-        }
-        if (StrUtil.isBlank(dto.getDeliveryCode())) {
-            throw new ServiceException("送货单号不能为空");
-        }
-        OrderInfo one = getOne(q -> q.eq(OrderInfo::getDeliveryCode, dto.getDeliveryCode()));
-        if (one != null) {
-            throw new ServiceException("送货单号重复,请重新生成!");
-        }
+        Assert.notNull(orderInfo, "未找到订单");
+        Assert.notBlank(dto.getDeliveryCode(), "送货单号不能为空");
+        Long count = count(q -> q.eq(OrderInfo::getDeliveryCode, dto.getDeliveryCode()).last("limit 1"));
+        Assert.eqZero(count, "送货单号重复,请重新生成!");
         update(q -> q.set(OrderInfo::getDeliveryCode, dto.getDeliveryCode()).eq(BaseIdPo::getId, dto.getId()));
     }
 
     @Override
     public void suspendOrder(Long id) {
         OrderInfo orderInfo = getById(id);
-        if (orderInfo == null) {
-            throw new ServiceException("未找到订单");
-        }
+        Assert.notNull(orderInfo, "未找到订单");
         update(q -> q.set(OrderInfo::getStatus, OrderStatusEnum.SUSPEND.getKey()).eq(BaseIdPo::getId, id));
     }
 
     @Override
     public void cancelSuspendOrder(Long id) {
         OrderInfo orderInfo = getById(id);
-        if (orderInfo == null) {
-            throw new ServiceException("未找到订单");
-        }
+        Assert.notNull(orderInfo, "未找到订单");
         update(q -> q.set(OrderInfo::getStatus, OrderStatusEnum.SCHEDULING.getKey()).eq(BaseIdPo::getId, id));
     }
 
@@ -550,8 +543,7 @@ public class OrderInfoServiceImpl extends ServiceImpl<OrderInfoMapper, OrderInfo
         }
 
         List<OrderPackageBomDto> tempOrderPackageBomList = dto.getOrderPackageBomList();
-        BigDecimal totalAmount = orderInfo.getTotalAmount();
-        BigDecimal oldDeliveryMaterialsFee = orderInfo.getDeliveryMaterialsFee();
+
         BigDecimal newDeliveryMaterialsFee = BigDecimal.ZERO;
         if (ObjectUtil.isEmpty(tempOrderPackageBomList)) {
             orderPackageBomService.remove(q -> q.eq(OrderPackageBom::getOrderId, orderInfo.getId()));
@@ -566,12 +558,13 @@ public class OrderInfoServiceImpl extends ServiceImpl<OrderInfoMapper, OrderInfo
                     .reduce(BigDecimal.ZERO, BigDecimal::add);
         }
         orderInfo.setDeliveryMaterialsFee(newDeliveryMaterialsFee);
+
         List<OrderSku> orderSkuList = orderSkuService.list(q -> q.eq(OrderSku::getOrderId, orderInfo.getId()));
         BigDecimal quantity = orderSkuList.stream().map(OrderSku::getQuantity).reduce(BigDecimal.ZERO, BigDecimal::add);
-        orderSkuList.forEach(item ->
-                item.setDeliveryMaterialsFee(orderInfo.getDeliveryMaterialsFee()
-                        .divide(quantity, 4, RoundingMode.HALF_UP))
-        );
+        BigDecimal totalAmount = orderInfo.getTotalAmount();
+        BigDecimal oldDeliveryMaterialsFee = orderInfo.getDeliveryMaterialsFee();
+        orderSkuList.forEach(item -> item.setDeliveryMaterialsFee(
+                orderInfo.getDeliveryMaterialsFee().divide(quantity, 4, RoundingMode.HALF_UP)));
         orderInfo.setTotalAmount(totalAmount.subtract(oldDeliveryMaterialsFee).add(newDeliveryMaterialsFee));
         updateById(orderInfo);
         orderSkuService.updateBatchById(orderSkuList);
@@ -620,6 +613,7 @@ public class OrderInfoServiceImpl extends ServiceImpl<OrderInfoMapper, OrderInfo
         return new ArrayList<>(bomVoMap.values());
     }
 
+    @LogicIgnore
     @Override
     public Page<OrderInfoVo> deletedOrderPage(OrderInfoSelectDto dto) {
         return Sql.create(OrderInfoVo.class)
@@ -645,23 +639,27 @@ public class OrderInfoServiceImpl extends ServiceImpl<OrderInfoMapper, OrderInfo
     public void orderExportExcel(Long id) {
         OrderInfo orderInfo = this.getById(id);
         List<OrderSku> list = orderSkuService.list(q -> q.eq(OrderSku::getOrderId, id));
+
         List<Long> bomSpecIds = list.stream().map(OrderSku::getBomSpecId).collect(Collectors.toList());
-        List<Long> skuSpecIds = list.stream().map(OrderSku::getSkuSpecId).collect(Collectors.toList());
         Map<Long, BomSpecBo> bomSpecBoMap = bomSpecService.getBomSpecBo(bomSpecIds);
+
+        List<Long> skuSpecIds = list.stream().map(OrderSku::getSkuSpecId).collect(Collectors.toList());
         Map<Long, SkuSpec> skuSpecMap = skuSpecService.byIdsToMap(skuSpecIds);
+
         List<OrderSku> orderPackageSkuList = list.stream()
                 .filter(item -> !Objects.equals(bomSpecBoMap.get(item.getBomSpecId()).getClassifyParentId(), 1L))
                 .collect(Collectors.toList());
+
         List<OrderSku> orderSkuList = list.stream()
                 .filter(item -> Objects.equals(bomSpecBoMap.get(item.getBomSpecId()).getClassifyParentId(), 1L))
                 .collect(Collectors.toList());
+
         BigDecimal orderPackageSku = orderPackageSkuList.stream()
-                .map(item -> (item.getUnitPrice()
-                        .add(item.getDeliveryMaterialsFee())
-                        .add(item.getPackagingMaterialCost()))
-                        .multiply(item.getQuantity()))
+                .map(item -> item.getUnitPrice().add(item.getDeliveryMaterialsFee()).add(item.getPackagingMaterialCost()).multiply(item.getQuantity()))
                 .reduce(BigDecimal.ZERO, BigDecimal::add);
+
         BigDecimal orderPackagePrice = orderPackageSku.divide(BigDecimal.valueOf(orderSkuList.size()), 2, RoundingMode.HALF_UP);
+
         List<OrderSkuExportVo> exportVoList = orderSkuList.stream().map(item -> {
             BigDecimal subtotal = item.getUnitPrice()
                     .add(item.getDeliveryMaterialsFee())
@@ -678,6 +676,7 @@ public class OrderInfoServiceImpl extends ServiceImpl<OrderInfoMapper, OrderInfo
             orderSkuExportVo.setTotalAmount(subtotal.multiply(item.getQuantity()).add(orderPackagePrice));
             return orderSkuExportVo;
         }).collect(Collectors.toList());
+
         ExcelUtil.export(response, exportVoList, OrderSkuExportVo.class);
     }
 
@@ -810,6 +809,11 @@ public class OrderInfoServiceImpl extends ServiceImpl<OrderInfoMapper, OrderInfo
     private List<OrderSkuProductionCost> getOrderSkuProductionCostList(List<OrderSku> orderSkuList, List<OrderSkuBom> orderSkuBomList) {
         Map<Long, List<OrderSkuBom>> orderSkuBomMap = orderSkuBomList.stream().collect(Collectors.groupingBy(OrderSkuBom::getOrderSkuId));
         return orderSkuList.stream().map(item -> {
+            List<OrderSkuBom> bomList = orderSkuBomMap.getOrDefault(item.getId(), Collections.emptyList());
+            BigDecimal productPackagingMaterialCost = bomList.stream()
+                    .map(orderSkuBom -> orderSkuBom.getQuantity().multiply(orderSkuBom.getUnitPrice()).multiply(item.getQuantity()))
+                    .reduce(BigDecimal.ZERO, BigDecimal::add);
+
             OrderSkuProductionCost orderSkuProductionCost = new OrderSkuProductionCost();
             orderSkuProductionCost.setOrderId(item.getOrderId());
             orderSkuProductionCost.setOrderSkuId(item.getId());
@@ -818,15 +822,10 @@ public class OrderInfoServiceImpl extends ServiceImpl<OrderInfoMapper, OrderInfo
             // 辅料成本暂时没有默认为零
             orderSkuProductionCost.setAuxiliaryMaterialCost(BigDecimal.ZERO);
             // 产品包材成本
-            List<OrderSkuBom> bomList = orderSkuBomMap.getOrDefault(item.getId(), new ArrayList<>());
-            BigDecimal productPackagingMaterialCost = bomList.stream()
-                    .map(orderSkuBom -> orderSkuBom.getQuantity()
-                            .multiply(orderSkuBom.getUnitPrice())
-                            .multiply(item.getQuantity()))
-                    .reduce(BigDecimal.ZERO, BigDecimal::add);
             orderSkuProductionCost.setProductPackagingMaterialCost(productPackagingMaterialCost);
             // 物流包材成本
             orderSkuProductionCost.setLogisticsPackagingMaterialCost(item.getDeliveryMaterialsFee().multiply(item.getQuantity()));
+            // 成本总
             orderSkuProductionCost.setTotalAmount(orderSkuProductionCost.getMaterialCost()
                     .add(orderSkuProductionCost.getAuxiliaryMaterialCost())
                     .add(orderSkuProductionCost.getProductPackagingMaterialCost())