|
@@ -333,27 +333,36 @@ public class WlnOrderServiceImpl implements WlnOrderService {
|
|
|
* 创建订单包材
|
|
|
*/
|
|
|
private List<OrderSkuBom> createOrderSkuBoom(OrderInfo orderInfo, OrderSku orderSku) {
|
|
|
+
|
|
|
List<SkuSpecLink> list = skuSpecLinkService.list(q -> q
|
|
|
.eq(SkuSpecLink::getSkuSpecId, orderSku.getSkuSpecId())
|
|
|
.eq(SkuSpecLink::getType, 1)
|
|
|
.eq(SkuSpecLink::getDepartmentId, orderInfo.getDepartmentId())
|
|
|
);
|
|
|
|
|
|
+ if (list.size() == 0) {
|
|
|
+ return Collections.emptyList();
|
|
|
+ }
|
|
|
+
|
|
|
// 根据sku规格id获取bomId和bom规格id
|
|
|
- Map<Long, BomBo> bomBoMap = skuSpecService.getBomBoByIdList(
|
|
|
- list.stream().map(SkuSpecLink::getSkuSpecId).collect(Collectors.toList()));
|
|
|
+ List<Long> skuSpecIdList = list.stream().map(SkuSpecLink::getSkuSpecId).collect(Collectors.toList());
|
|
|
+ Map<Long, BomBo> bomBoMap = skuSpecService.getBomBySkuSpecIdList(skuSpecIdList);
|
|
|
|
|
|
return list.stream().map(item -> {
|
|
|
- BomBo bomBo = bomBoMap.get(item.getBomSpecId());
|
|
|
-
|
|
|
OrderSkuBom orderSkuBom = new OrderSkuBom();
|
|
|
orderSkuBom.setId(IdWorker.getId());
|
|
|
orderSkuBom.setOrderId(orderInfo.getId());
|
|
|
orderSkuBom.setOrderSkuId(orderSku.getId());
|
|
|
orderSkuBom.setBomSpecId(item.getBomSpecId());
|
|
|
orderSkuBom.setQuantity(item.getQuantity());
|
|
|
- orderSkuBom.setUnitPrice(bomBo == null ? BigDecimal.ZERO :
|
|
|
- ObjectUtil.defaultIfNull(bomBo.getInternalSellingPrice(), BigDecimal.ZERO));
|
|
|
+
|
|
|
+ BomBo bomBo = bomBoMap.get(item.getBomSpecId());
|
|
|
+ if (bomBo == null) {
|
|
|
+ orderSkuBom.setUnitPrice(BigDecimal.ZERO);
|
|
|
+ } else {
|
|
|
+ orderSkuBom.setUnitPrice(ObjectUtil.defaultIfNull(bomBo.getInternalSellingPrice(), BigDecimal.ZERO));
|
|
|
+ }
|
|
|
+
|
|
|
return orderSkuBom;
|
|
|
}).collect(Collectors.toList());
|
|
|
}
|
|
@@ -385,7 +394,7 @@ public class WlnOrderServiceImpl implements WlnOrderService {
|
|
|
.collect(Collectors.groupingBy(PriceBillingStandardDetail::getPriceBillingStandardId));
|
|
|
|
|
|
// 根据sku规格id获取bomId和bom规格id
|
|
|
- Map<Long, BomBo> bomBoMap = skuSpecService.getBomBoByIdList(
|
|
|
+ Map<Long, BomBo> bomBoMap = skuSpecService.getBomBySkuSpecIdList(
|
|
|
orderSkuList.stream().map(OrderSku::getSkuSpecId).collect(Collectors.toList()));
|
|
|
|
|
|
// 订单明细
|
|
@@ -409,7 +418,10 @@ public class WlnOrderServiceImpl implements WlnOrderService {
|
|
|
for (OrderSku orderSku : itemOrderSkuList) {
|
|
|
|
|
|
// 赋值单价
|
|
|
- assignedUnitPrice(bomBoMap, orderSku);
|
|
|
+ assignedUnitPrice(orderSku, bomBoMap);
|
|
|
+
|
|
|
+ // 赋值包材费
|
|
|
+ assignedPackagingMaterialCost(orderSku, saveOrderSkuBomList);
|
|
|
|
|
|
// 赋值其他价格
|
|
|
assignedOtherPrice(orderSku, orderInfo.getDepartmentId(),
|
|
@@ -425,7 +437,7 @@ public class WlnOrderServiceImpl implements WlnOrderService {
|
|
|
/**
|
|
|
* 赋值单价
|
|
|
*/
|
|
|
- private void assignedUnitPrice(Map<Long, BomBo> bomBoMap, OrderSku orderSku) {
|
|
|
+ private void assignedUnitPrice(OrderSku orderSku, Map<Long, BomBo> bomBoMap) {
|
|
|
BomBo bomBo = bomBoMap.get(orderSku.getSkuSpecId());
|
|
|
if (bomBo != null) {
|
|
|
orderSku.setUnitPrice(ObjectUtil.defaultIfNull(bomBo.getInternalSellingPrice(), BigDecimal.ZERO));
|
|
@@ -435,6 +447,18 @@ public class WlnOrderServiceImpl implements WlnOrderService {
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
+ * 赋值包材费
|
|
|
+ */
|
|
|
+ private void assignedPackagingMaterialCost(OrderSku orderSku, List<OrderSkuBom> saveOrderSkuBomList) {
|
|
|
+ BigDecimal packagingMaterialCost = saveOrderSkuBomList.stream()
|
|
|
+ .filter(item -> Objects.equals(item.getOrderSkuId(), orderSku.getId()))
|
|
|
+ .map(item -> item.getUnitPrice().multiply(item.getQuantity()))
|
|
|
+ .reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
+
|
|
|
+ orderSku.setPackagingMaterialCost(packagingMaterialCost);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
* 赋值其他价格
|
|
|
*/
|
|
|
private void assignedOtherPrice(OrderSku orderSku,
|
|
@@ -491,28 +515,28 @@ public class WlnOrderServiceImpl implements WlnOrderService {
|
|
|
* 添加订单价格
|
|
|
*/
|
|
|
private void addOrderInfoPrice(OrderInfo orderInfo, OrderSku orderSku, List<OrderSkuBom> saveOrderSkuBomList) {
|
|
|
- BigDecimal productTotalAmount = orderSku.getQuantity().multiply(orderSku.getUnitPrice());
|
|
|
- BigDecimal customProcessingFee = orderSku.getQuantity().multiply(orderSku.getCustomProcessingFee());
|
|
|
- BigDecimal lssueFee = orderSku.getQuantity().multiply(orderSku.getLssueFee());
|
|
|
- BigDecimal deliveryMaterialsFee = orderSku.getQuantity().multiply(orderSku.getDeliveryMaterialsFee());
|
|
|
- BigDecimal packingLabor = orderSku.getQuantity().multiply(orderSku.getPackingLabor());
|
|
|
- BigDecimal totalAmount = productTotalAmount.add(customProcessingFee).add(lssueFee).add(deliveryMaterialsFee).add(packingLabor);
|
|
|
-
|
|
|
- BigDecimal packagingMaterialCost = saveOrderSkuBomList.stream()
|
|
|
- .filter(item -> Objects.equals(item.getOrderId(), orderInfo.getId()))
|
|
|
- .filter(item -> Objects.equals(item.getOrderSkuId(), orderSku.getId()))
|
|
|
- .map(item -> item.getUnitPrice().multiply(item.getQuantity()))
|
|
|
- .reduce(BigDecimal.ZERO, BigDecimal::add)
|
|
|
- .multiply(orderSku.getQuantity());
|
|
|
+ BigDecimal quantity = orderSku.getQuantity();
|
|
|
+
|
|
|
+ BigDecimal productTotalAmount = quantity.multiply(orderSku.getUnitPrice());
|
|
|
+ BigDecimal customProcessingFee = quantity.multiply(orderSku.getCustomProcessingFee());
|
|
|
+ BigDecimal lssueFee = quantity.multiply(orderSku.getLssueFee());
|
|
|
+ BigDecimal deliveryMaterialsFee = quantity.multiply(orderSku.getDeliveryMaterialsFee());
|
|
|
+ BigDecimal packingLabor = quantity.multiply(orderSku.getPackingLabor());
|
|
|
+ BigDecimal packagingMaterialCost = quantity.multiply(orderSku.getPackagingMaterialCost());
|
|
|
+ BigDecimal totalAmount = productTotalAmount
|
|
|
+ .add(customProcessingFee)
|
|
|
+ .add(lssueFee)
|
|
|
+ .add(deliveryMaterialsFee)
|
|
|
+ .add(packingLabor)
|
|
|
+ .add(packagingMaterialCost);
|
|
|
|
|
|
orderInfo.setProductTotalAmount(orderInfo.getProductTotalAmount().add(productTotalAmount));
|
|
|
orderInfo.setCustomProcessingFee(orderInfo.getCustomProcessingFee().add(customProcessingFee));
|
|
|
orderInfo.setLssueFee(orderInfo.getLssueFee().add(lssueFee));
|
|
|
orderInfo.setDeliveryMaterialsFee(orderInfo.getDeliveryMaterialsFee().add(deliveryMaterialsFee));
|
|
|
orderInfo.setPackingLabor(orderInfo.getPackingLabor().add(packingLabor));
|
|
|
- orderInfo.setPackagingMaterialCost(packagingMaterialCost);
|
|
|
+ orderInfo.setPackagingMaterialCost(orderInfo.getPackagingMaterialCost().add(packagingMaterialCost));
|
|
|
orderInfo.setTotalAmount(orderInfo.getTotalAmount().add(totalAmount));
|
|
|
-
|
|
|
}
|
|
|
|
|
|
}
|