|
@@ -14,12 +14,14 @@ import com.sd.business.entity.bom.bo.BomBo;
|
|
|
import com.sd.business.entity.department.po.Department;
|
|
|
import com.sd.business.entity.order.enums.OrderStatusEnum;
|
|
|
import com.sd.business.entity.order.po.OrderInfo;
|
|
|
+import com.sd.business.entity.order.po.OrderPackageBom;
|
|
|
import com.sd.business.entity.order.po.OrderSku;
|
|
|
import com.sd.business.entity.order.po.OrderSkuBom;
|
|
|
import com.sd.business.entity.price.po.PriceBillingStandardDetail;
|
|
|
import com.sd.business.entity.sku.po.SkuSpec;
|
|
|
import com.sd.business.entity.sku.po.SkuSpecLink;
|
|
|
import com.sd.business.service.department.DepartmentService;
|
|
|
+import com.sd.business.service.order.OrderPackageBomService;
|
|
|
import com.sd.business.service.order.OrderService;
|
|
|
import com.sd.business.service.order.OrderSkuBomService;
|
|
|
import com.sd.business.service.order.OrderSkuService;
|
|
@@ -65,6 +67,9 @@ public class WlnOrderServiceImpl implements WlnOrderService {
|
|
|
private OrderSkuBomService orderSkuBomService;
|
|
|
|
|
|
@Autowired
|
|
|
+ private OrderPackageBomService orderPackageBomService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
private SkuSpecService skuSpecService;
|
|
|
|
|
|
@Autowired
|
|
@@ -87,6 +92,8 @@ public class WlnOrderServiceImpl implements WlnOrderService {
|
|
|
List<OrderSku> saveOrderSkuList = new ArrayList<>();
|
|
|
// 保存订单包材
|
|
|
List<OrderSkuBom> saveOrderSkuBomList = new ArrayList<>();
|
|
|
+ // 保存订单包装
|
|
|
+ List<OrderPackageBom> orderPackageBomList = new ArrayList<>();
|
|
|
|
|
|
// 查询近3天万里牛订单
|
|
|
List<JSONObject> wlnOrderList = getWlnOrderList(endDate);
|
|
@@ -159,6 +166,7 @@ public class WlnOrderServiceImpl implements WlnOrderService {
|
|
|
saveOrderList.add(orderInfo);
|
|
|
saveOrderSkuList.addAll(tempOrderSkuList);
|
|
|
saveOrderSkuBomList.addAll(tempOrderSkuBomList);
|
|
|
+ orderPackageBomList.addAll(createOrderPackageBomList(tempOrderSkuList, department.getId()));
|
|
|
}
|
|
|
|
|
|
}
|
|
@@ -181,6 +189,9 @@ public class WlnOrderServiceImpl implements WlnOrderService {
|
|
|
if (saveOrderSkuBomList.size() > 0) {
|
|
|
orderSkuBomService.saveBatch(saveOrderSkuBomList);
|
|
|
}
|
|
|
+ if (orderPackageBomList.size() > 0) {
|
|
|
+ orderPackageBomService.saveBatch(orderPackageBomList);
|
|
|
+ }
|
|
|
// 提交事务
|
|
|
platformTransactionManager.commit(transactionStatus);
|
|
|
} catch (Exception e) {
|
|
@@ -368,6 +379,48 @@ public class WlnOrderServiceImpl implements WlnOrderService {
|
|
|
}).collect(Collectors.toList());
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+ private List<OrderPackageBom> createOrderPackageBomList(List<OrderSku> orderSkuList, Long departmentId) {
|
|
|
+
|
|
|
+ // 获取sku规格快递包材map
|
|
|
+ List<Long> skuSpecIdList = orderSkuList.stream().map(OrderSku::getSkuSpecId).collect(Collectors.toList());
|
|
|
+ List<SkuSpecLink> list = skuSpecLinkService.list(q -> q
|
|
|
+ .in(SkuSpecLink::getSkuSpecId, skuSpecIdList)
|
|
|
+ .eq(SkuSpecLink::getType, 2)
|
|
|
+ .eq(SkuSpecLink::getDepartmentId, departmentId)
|
|
|
+ );
|
|
|
+ Map<Long, List<SkuSpecLink>> skuSpecLinkMap = list.stream().collect(Collectors.groupingBy(SkuSpecLink::getSkuSpecId));
|
|
|
+
|
|
|
+
|
|
|
+ Map<Long, OrderPackageBom> orderPackageBomMap = new HashMap<>();
|
|
|
+
|
|
|
+ // 循环订单sku规格
|
|
|
+ for (OrderSku orderSku : orderSkuList) {
|
|
|
+
|
|
|
+ List<SkuSpecLink> skuSpecLinkList = skuSpecLinkMap.get(orderSku.getSkuSpecId());
|
|
|
+ if (ObjectUtil.isEmpty(skuSpecLinkList)) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+
|
|
|
+ for (SkuSpecLink skuSpecLink : skuSpecLinkList) {
|
|
|
+
|
|
|
+ Long bomSpecId = skuSpecLink.getBomSpecId();
|
|
|
+ OrderPackageBom orderPackageBom = orderPackageBomMap.computeIfAbsent(bomSpecId, item -> {
|
|
|
+ OrderPackageBom tempOrderPackageBom = new OrderPackageBom();
|
|
|
+ tempOrderPackageBom.setOrderId(orderSku.getOrderId());
|
|
|
+ tempOrderPackageBom.setBomSpecId(bomSpecId);
|
|
|
+ tempOrderPackageBom.setQuantity(BigDecimal.ZERO);
|
|
|
+ return tempOrderPackageBom;
|
|
|
+ });
|
|
|
+
|
|
|
+ orderPackageBom.setQuantity(orderPackageBom.getQuantity().add(orderSku.getQuantity().multiply(skuSpecLink.getQuantity())));
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return new ArrayList<>(orderPackageBomMap.values());
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 赋值订单价格
|
|
|
*/
|
|
@@ -429,7 +482,7 @@ public class WlnOrderServiceImpl implements WlnOrderService {
|
|
|
departmentIdPriceBillingStandardIdMap, priceBillingStandardMap, skuSpecMap);
|
|
|
|
|
|
// 添加订单金额
|
|
|
- addOrderInfoPrice(orderInfo, orderSku, saveOrderSkuBomList);
|
|
|
+ addOrderInfoPrice(orderInfo, orderSku);
|
|
|
}
|
|
|
|
|
|
}
|
|
@@ -527,7 +580,7 @@ public class WlnOrderServiceImpl implements WlnOrderService {
|
|
|
/**
|
|
|
* 添加订单价格
|
|
|
*/
|
|
|
- private void addOrderInfoPrice(OrderInfo orderInfo, OrderSku orderSku, List<OrderSkuBom> saveOrderSkuBomList) {
|
|
|
+ private void addOrderInfoPrice(OrderInfo orderInfo, OrderSku orderSku) {
|
|
|
BigDecimal quantity = orderSku.getQuantity();
|
|
|
|
|
|
BigDecimal productTotalAmount = quantity.multiply(orderSku.getUnitPrice());
|