|
@@ -2,14 +2,12 @@ package com.sd.cainiao.service.impl;
|
|
|
|
|
|
import com.ruoyi.common.core.domain.BaseIdPo;
|
|
|
import com.ruoyi.common.exception.ServiceException;
|
|
|
-import com.sd.business.entity.order.po.OrderEncasement;
|
|
|
-import com.sd.business.entity.order.po.OrderEncasementDetail;
|
|
|
+import com.sd.business.entity.express.po.ExpressDelivery;
|
|
|
+import com.sd.business.entity.order.enums.OrderStatusEnum;
|
|
|
import com.sd.business.entity.order.po.OrderInfo;
|
|
|
-import com.sd.business.entity.order.po.OrderSku;
|
|
|
-import com.sd.business.service.order.OrderEncasementDetailService;
|
|
|
-import com.sd.business.service.order.OrderEncasementService;
|
|
|
-import com.sd.business.service.order.OrderService;
|
|
|
-import com.sd.business.service.order.OrderSkuService;
|
|
|
+import com.sd.business.entity.order.vo.AssemblyDetailVo;
|
|
|
+import com.sd.business.service.express.ExpressDeliveryService;
|
|
|
+import com.sd.business.service.order.*;
|
|
|
import com.sd.cainiao.entity.bo.BasicKeyBo;
|
|
|
import com.sd.cainiao.entity.dto.TakeNumParamDto;
|
|
|
import com.sd.cainiao.service.IsticeService;
|
|
@@ -20,11 +18,14 @@ import com.taobao.pac.sdk.cp.dataobject.response.TMS_WAYBILL_GET.TmsWaybillGetRe
|
|
|
import com.taobao.pac.sdk.cp.dataobject.response.TMS_WAYBILL_GET.WaybillCloudPrintResponse;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
+import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
+import java.math.BigDecimal;
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.Collections;
|
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
|
+import java.util.function.Function;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
@Service
|
|
@@ -34,6 +35,9 @@ public class IsticeServiceImpl implements IsticeService {
|
|
|
private BasicKeyBo basicKeyBo;
|
|
|
|
|
|
@Autowired
|
|
|
+ private IssueBillService issueBillService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
private OrderService orderService;
|
|
|
|
|
|
@Autowired
|
|
@@ -45,23 +49,37 @@ public class IsticeServiceImpl implements IsticeService {
|
|
|
@Autowired
|
|
|
private OrderEncasementDetailService orderEncasementDetailService;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private ExpressDeliveryService expressDeliveryService;
|
|
|
+
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
@Override
|
|
|
- public List<Map<String, Object>> takeNumBatch(List<Long> orderIdList) {
|
|
|
+ public synchronized List<Map<String, Object>> takeNumBatch(List<Long> orderIdList) {
|
|
|
|
|
|
if (orderIdList.size() == 0) {
|
|
|
return Collections.emptyList();
|
|
|
}
|
|
|
|
|
|
- List<OrderInfo> orderList = orderService.list(q -> q
|
|
|
- .and(r -> r.eq(BaseIdPo::getId, orderIdList).isNull(OrderInfo::getMasterOrderId))
|
|
|
- .or().in(OrderInfo::getMasterOrderId, orderIdList));
|
|
|
- List<Long> allOrderIdList = orderList.stream().map(BaseIdPo::getId).collect(Collectors.toList());
|
|
|
+ List<OrderInfo> orderInfoList = orderService.list(q -> q
|
|
|
+ .in(BaseIdPo::getId, orderIdList)
|
|
|
+ .eq(OrderInfo::getStatus, OrderStatusEnum.IN_PRODUCTION.getKey())
|
|
|
+ );
|
|
|
|
|
|
- List<OrderSku> orderSkuList = orderSkuService.list(q -> q.in(OrderSku::getOrderId, allOrderIdList));
|
|
|
- List<Long> allOrderSkuIdList = orderSkuList.stream().map(BaseIdPo::getId).collect(Collectors.toList());
|
|
|
+ List<String> expressDeliveryIdList = orderInfoList.stream().map(OrderInfo::getExpressDeliveryId).collect(Collectors.toList());
|
|
|
+ List<ExpressDelivery> expressDeliveries = expressDeliveryService.listByIds(expressDeliveryIdList);
|
|
|
+ Map<Long, ExpressDelivery> collect = expressDeliveries.stream().collect(Collectors.toMap(BaseIdPo::getId, Function.identity()));
|
|
|
|
|
|
- List<OrderEncasement> orderEncasementList = orderEncasementService.list(q -> q.in(OrderEncasement::getOrderId, allOrderIdList));
|
|
|
- List<OrderEncasementDetail> orderEncasementDetailList = orderEncasementDetailService.list(q -> q.in(OrderEncasementDetail::getOrderSkuId, allOrderSkuIdList));
|
|
|
+ for (OrderInfo orderInfo : orderInfoList) {
|
|
|
+ AssemblyDetailVo assemblyDetailVo = issueBillService.assemblyDetail(orderInfo.getId());
|
|
|
+
|
|
|
+ for (AssemblyDetailVo.SkuInfo skuInfo : assemblyDetailVo.getSkuInfoList()) {
|
|
|
+ if (skuInfo.getSurplusQuantity().compareTo(BigDecimal.ZERO) > 0) {
|
|
|
+ throw new ServiceException("订单 " + orderInfo.getCode() + " 未包装包裹,打印快递单失败");
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
|
|
|
|
|
|
// List<Map<String, Object>> resultList = new ArrayList<>();
|