G1_bzEvaSync.java 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. import com.baomidou.dynamic.datasource.annotation.DSTransactional;
  2. import com.ruoyi.common.core.domain.BaseIdPo;
  3. import com.sd.SdApplication;
  4. import com.sd.business.entity.bom.bo.BomSpecBo;
  5. import com.sd.business.entity.order.po.OrderInfo;
  6. import com.sd.business.entity.order.po.OrderSku;
  7. import com.sd.business.entity.sku.po.SkuSpec;
  8. import com.sd.business.service.order.OrderService;
  9. import com.sd.business.service.order.OrderSkuService;
  10. import com.sd.business.service.sku.SkuSpecService;
  11. import lombok.SneakyThrows;
  12. import lombok.extern.slf4j.Slf4j;
  13. import org.junit.Test;
  14. import org.junit.runner.RunWith;
  15. import org.springframework.beans.factory.annotation.Autowired;
  16. import org.springframework.boot.test.context.SpringBootTest;
  17. import org.springframework.test.context.junit4.SpringRunner;
  18. import java.math.BigDecimal;
  19. import java.util.List;
  20. import java.util.Map;
  21. import java.util.Objects;
  22. import java.util.stream.Collectors;
  23. @Slf4j
  24. @RunWith(SpringRunner.class)
  25. @SpringBootTest(classes = SdApplication.class, webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT)
  26. public class G1_bzEvaSync {
  27. @Autowired
  28. private OrderService orderService;
  29. @Autowired
  30. private OrderSkuService orderSkuService;
  31. @Autowired
  32. private SkuSpecService skuSpecService;
  33. @SneakyThrows
  34. @DSTransactional
  35. @Test
  36. public void test() {
  37. // 查询白卓订单
  38. List<OrderInfo> list = orderService.list(q -> q.eq(OrderInfo::getDepartmentId, 1689164627162529793L));
  39. List<Long> orderIdList = list.stream().map(BaseIdPo::getId).collect(Collectors.toList());
  40. List<OrderSku> orderSkuList = orderSkuService.list(q -> q.in(OrderSku::getOrderId, orderIdList));
  41. List<Long> bomSpecIdList = orderSkuList.stream().map(OrderSku::getBomSpecId).collect(Collectors.toList());
  42. Map<Long, BomSpecBo> bomSpecBoMap = skuSpecService.getBomSpecBoByIdList(bomSpecIdList);
  43. Map<Long, List<OrderSku>> orderSkuMap = orderSkuList.stream().collect(Collectors.groupingBy(OrderSku::getOrderId));
  44. Map<Long, SkuSpec> skuSpecMap = skuSpecService.mapKEntity(BaseIdPo::getId, null);
  45. for (OrderInfo orderInfo : list) {
  46. boolean flag = false;
  47. List<OrderSku> tempOrderSkuList = orderSkuMap.get(orderInfo.getId());
  48. for (OrderSku orderSku : tempOrderSkuList) {
  49. BomSpecBo bomSpecBo = bomSpecBoMap.get(orderSku.getBomSpecId());
  50. if (bomSpecBo == null) {
  51. continue;
  52. }
  53. SkuSpec skuSpec = skuSpecMap.get(orderSku.getSkuSpecId());
  54. if (skuSpec == null) {
  55. continue;
  56. }
  57. String bomSpecies = bomSpecBo.getBomSpecies();
  58. // 如果不是eva材质
  59. if (!Objects.equals(bomSpecies, "EVA")) {
  60. continue;
  61. }
  62. // 加工计费标准
  63. BigDecimal customProcessingFee = orderSku.getCustomProcessingFee();
  64. // 保证人工费
  65. BigDecimal packingLabor = orderSku.getPackingLabor();
  66. // 代发费
  67. BigDecimal lssueFee = orderSku.getLssueFee();
  68. // 快递包材费
  69. BigDecimal deliveryMaterialsFee = orderSku.getDeliveryMaterialsFee();
  70. // 管理费
  71. BigDecimal managementFee = orderSku.getManagementFee();
  72. BigDecimal fee = Objects.equals(skuSpec.getMachinedPanel(), "20") ? new BigDecimal("0.5") : BigDecimal.ZERO;
  73. orderSku.setCustomProcessingFee(fee);
  74. orderSku.setPackingLabor(new BigDecimal("0.17"));
  75. orderSku.setLssueFee(new BigDecimal("0.50"));
  76. orderSku.setDeliveryMaterialsFee(new BigDecimal("0.28"));
  77. orderSku.setManagementFee(new BigDecimal("0"));
  78. // 计算出改变值
  79. customProcessingFee = fee.subtract(customProcessingFee).multiply(orderSku.getQuantity());
  80. packingLabor = new BigDecimal("0.17").subtract(packingLabor).multiply(orderSku.getQuantity());
  81. lssueFee = new BigDecimal("0.50").subtract(lssueFee).multiply(orderSku.getQuantity());
  82. deliveryMaterialsFee = new BigDecimal("0.28").subtract(deliveryMaterialsFee).multiply(orderSku.getQuantity());
  83. managementFee = new BigDecimal("0").subtract(managementFee).multiply(orderSku.getQuantity());
  84. BigDecimal totalAmount = customProcessingFee.add(lssueFee).add(deliveryMaterialsFee).add(packingLabor).add(managementFee);
  85. orderInfo.setCustomProcessingFee(orderInfo.getCustomProcessingFee().add(customProcessingFee));
  86. orderInfo.setLssueFee(orderInfo.getLssueFee().add(lssueFee));
  87. orderInfo.setDeliveryMaterialsFee(orderInfo.getDeliveryMaterialsFee().add(deliveryMaterialsFee));
  88. orderInfo.setPackingLabor(orderInfo.getPackingLabor().add(packingLabor));
  89. orderInfo.setManagementFee(orderInfo.getManagementFee().add(managementFee));
  90. orderInfo.setTotalAmount(orderInfo.getTotalAmount().add(totalAmount));
  91. flag = true;
  92. }
  93. if (flag) {
  94. orderService.updateById(orderInfo);
  95. orderSkuService.updateBatchById(tempOrderSkuList);
  96. }
  97. }
  98. }
  99. }