|
|
|
@ -6,7 +6,6 @@ import cn.hutool.core.util.StrUtil;
|
|
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
|
|
import com.doudian.open.api.order_logisticsAddMultiPack.OrderLogisticsAddMultiPackRequest;
|
|
|
|
|
import com.doudian.open.api.order_logisticsAddMultiPack.OrderLogisticsAddMultiPackResponse;
|
|
|
|
|
import com.doudian.open.api.order_logisticsAddMultiPack.data.OrderLogisticsAddMultiPackData;
|
|
|
|
|
import com.doudian.open.api.order_logisticsAddMultiPack.param.OrderLogisticsAddMultiPackParam;
|
|
|
|
|
import com.doudian.open.api.order_logisticsAddMultiPack.param.PackListItem;
|
|
|
|
|
import com.doudian.open.api.order_logisticsAddMultiPack.param.ShippedOrderInfoItem;
|
|
|
|
@ -18,7 +17,9 @@ import com.ms.api.dto.dsorder.DeliverInfoDTO;
|
|
|
|
|
import com.ms.api.dto.dsorder.OrderPackageInfoDTO;
|
|
|
|
|
import com.ms.api.dto.dsorder.ResultDTO;
|
|
|
|
|
import com.ms.api.dto.order.OrderMultiPackageOutstorageDTO;
|
|
|
|
|
import com.ms.api.exception.DeliveryNotReceivedException;
|
|
|
|
|
import com.ms.api.service.*;
|
|
|
|
|
import com.ms.api.tool.OrderTool;
|
|
|
|
|
import com.ms.api.tool.PurchaseTool;
|
|
|
|
|
import com.ms.dal.bo.OpLogisticsBO;
|
|
|
|
|
import com.ms.dal.bo.OpLogisticsPlatformBO;
|
|
|
|
@ -44,7 +45,6 @@ public class OutstorageServiceImpl implements OutstorageService {
|
|
|
|
|
|
|
|
|
|
private OpOrderService opOrderService;
|
|
|
|
|
private OpOrderDsService opOrderDsService;
|
|
|
|
|
private ShopService shopService;
|
|
|
|
|
private OpLogisticsService opLogisticsService;
|
|
|
|
|
private OpLogisticsPlatformService opLogisticsPlatformService;
|
|
|
|
|
private OpOrderOutstorageHistoryService opOrderOutstorageHistoryService;
|
|
|
|
@ -57,21 +57,20 @@ public class OutstorageServiceImpl implements OutstorageService {
|
|
|
|
|
private OpOrderChildLogisticsService opOrderChildLogisticsService;
|
|
|
|
|
private PurchaseOrderTagService purchaseOrderTagService;
|
|
|
|
|
private PurchaseOrderItemService purchaseOrderItemService;
|
|
|
|
|
private OpOrderDelayOutstorageBufferService opOrderDelayOutstorageBufferService;
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public OrderLogisticsAddMultiPackData orderMultiPackageOutstorage(String orderId, List<OrderMultiPackageOutstorageDTO.PackageInfoDTO> packageList) {
|
|
|
|
|
public ResultDTO orderMultiPackageOutstorage(String orderId, List<OrderMultiPackageOutstorageDTO.PackageInfoDTO> packageList) {
|
|
|
|
|
if (StrUtil.isEmpty(orderId) || CollectionUtil.isEmpty(packageList)) {
|
|
|
|
|
throw new RuntimeException("参数错误");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
OpOrder order = opOrderService.selectByOrderId(orderId);
|
|
|
|
|
Shop shop = shopService.getDetailById(order.getShopId());
|
|
|
|
|
|
|
|
|
|
return orderMultiPackageOutstorage(shop.getShopId(), orderId, packageList, shop.getAccessToken(), LogisticsConst.outstorageSourcePurchaseManualSend);
|
|
|
|
|
return orderMultiPackageOutstorage(order, packageList, LogisticsConst.outstorageSourcePurchaseManualSend);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public OrderLogisticsAddMultiPackData orderMultiPackageOutstorage(Long shopId, String orderId, List<OrderMultiPackageOutstorageDTO.PackageInfoDTO> packageList, String accessToken, String outStorageSource) {
|
|
|
|
|
public ResultDTO orderMultiPackageOutstorage(OpOrder opOrder, List<OrderMultiPackageOutstorageDTO.PackageInfoDTO> packageList, String outStorageSource) {
|
|
|
|
|
List<String> logisticsIds = packageList.stream().map(OrderMultiPackageOutstorageDTO.PackageInfoDTO::getLogisticsId).collect(Collectors.toList());
|
|
|
|
|
Map<Long, OpLogisticsBO> logisticsBOMap = getDdLogisticsListByLogisticsIds(logisticsIds);
|
|
|
|
|
|
|
|
|
@ -86,20 +85,21 @@ public class OutstorageServiceImpl implements OutstorageService {
|
|
|
|
|
packageInfoDTO.setCompany(opLogisticsBO.getLogisticsName());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 保存操作数据,暂时不做
|
|
|
|
|
// saveOrderMultiPackageOutstorageResult(shopId, orderId, packageList, packData, outStorageSource);
|
|
|
|
|
ResultDTO result = orderLogisticsAddMultiPackToDd(opOrder.getOrderId(), packageList);
|
|
|
|
|
saveOrderMultiPackageOutstorageResult(opOrder, packageList, result, outStorageSource);
|
|
|
|
|
|
|
|
|
|
return orderLogisticsAddMultiPackToDd(orderId, packageList);
|
|
|
|
|
return result;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public OrderLogisticsAddMultiPackData orderLogisticsAddMultiPackToDd(String orderId, List<OrderMultiPackageOutstorageDTO.PackageInfoDTO> packageList) {
|
|
|
|
|
public ResultDTO orderLogisticsAddMultiPackToDd(String orderId, List<OrderMultiPackageOutstorageDTO.PackageInfoDTO> packageList) {
|
|
|
|
|
if (StrUtil.isEmpty(orderId) || CollectionUtil.isEmpty(packageList)) {
|
|
|
|
|
throw new RuntimeException("参数错误");
|
|
|
|
|
return ResultDTO.fail("参数错误");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Boolean check = checkCanOutStorage(Collections.singletonList(orderId), packageList);
|
|
|
|
|
if (!check) {
|
|
|
|
|
throw new RuntimeException("检测失败");
|
|
|
|
|
try {
|
|
|
|
|
checkCanOutStorage(Collections.singletonList(orderId), packageList);
|
|
|
|
|
} catch (RuntimeException e) {
|
|
|
|
|
return ResultDTO.fail(e.getMessage());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
List<PackListItem> itemList = new ArrayList<>();
|
|
|
|
@ -116,7 +116,6 @@ public class OutstorageServiceImpl implements OutstorageService {
|
|
|
|
|
infoItems.add(infoItem);
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
itemList.add(item);
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
@ -126,14 +125,17 @@ public class OutstorageServiceImpl implements OutstorageService {
|
|
|
|
|
param.setRequestId(UUID.randomUUID().toString());
|
|
|
|
|
param.setPackList(itemList);
|
|
|
|
|
|
|
|
|
|
request.setParam(param);
|
|
|
|
|
OrderLogisticsAddMultiPackResponse response = request.execute();
|
|
|
|
|
if (!response.isSuccess()) {
|
|
|
|
|
throw new RuntimeException(response.getSubMsg());
|
|
|
|
|
}
|
|
|
|
|
return response.getData();
|
|
|
|
|
Map<String, Object> data = new HashMap<>();
|
|
|
|
|
data.put("packList", response.getData().getPackList());
|
|
|
|
|
return ResultDTO.success(data);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private Boolean checkCanOutStorage(List<String> orderIds, List<OrderMultiPackageOutstorageDTO.PackageInfoDTO> packageList) {
|
|
|
|
|
private void checkCanOutStorage(List<String> orderIds, List<OrderMultiPackageOutstorageDTO.PackageInfoDTO> packageList) {
|
|
|
|
|
if (CollectionUtil.isEmpty(orderIds)) {
|
|
|
|
|
throw new RuntimeException("发货接口调用参数错误");
|
|
|
|
|
}
|
|
|
|
@ -167,7 +169,7 @@ public class OutstorageServiceImpl implements OutstorageService {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (CollectionUtil.isEmpty(goingOrderIdList)) {
|
|
|
|
|
return true;
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (CollectionUtil.isNotEmpty(packageList)) {
|
|
|
|
@ -192,8 +194,26 @@ public class OutstorageServiceImpl implements OutstorageService {
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void saveOrderMultiPackageOutstorageResult() {
|
|
|
|
|
private void saveOrderMultiPackageOutstorageResult(OpOrder opOrder, List<OrderMultiPackageOutstorageDTO.PackageInfoDTO> packageList, ResultDTO result, String source) {
|
|
|
|
|
if (!result.isSuccess()) {
|
|
|
|
|
for (OrderMultiPackageOutstorageDTO.PackageInfoDTO packageInfo: packageList) {
|
|
|
|
|
opOrderOutstorageHistoryService.addHistoryByOrder(opOrder, Integer.valueOf(packageInfo.getLogisticsId()), packageInfo.getLogisticsCode(), source, 0, result);
|
|
|
|
|
}
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
for (OrderMultiPackageOutstorageDTO.PackageInfoDTO packageInfo: packageList) {
|
|
|
|
|
String ddPackId = OrderTool.buildDdPackId(packageInfo.getCompanyCode(), packageInfo.getWaybillCode());
|
|
|
|
|
OpPackage newPackage = opPackageService.save(opOrder.getShopId(), ddPackId, packageInfo.getCompanyCode(), packageInfo.getWaybillCode());
|
|
|
|
|
OpPackageOrder newPackageOrder = opPackageOrderService.saveByOpPackage(newPackage, opOrder.getOrderId());
|
|
|
|
|
for (OrderMultiPackageOutstorageDTO.ShippedOrderInfo shippedOrderInfo: packageInfo.getShippedOrderInfo()) {
|
|
|
|
|
opOrderChildLogisticsService.saveByOpPackageOrderChild(opOrder.getOrderId(), shippedOrderInfo.getShippedOrderId(), opOrder.getShopId(), shippedOrderInfo.getShippedNum(), packageInfo.getCompanyCode(), packageInfo.getWaybillCode(), packageInfo.getLogisticsName());
|
|
|
|
|
opPackageOrderChildService.save(newPackage.getOpPackageId(), shippedOrderInfo.getShippedOrderId(), opOrder.getOrderId(), shippedOrderInfo.getShippedNum());
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
opOrderOutstorageHistoryService.addHistoryByOrder(opOrder, Integer.valueOf(packageInfo.getLogisticsId()), packageInfo.getLogisticsCode(), source, 0, result);
|
|
|
|
|
}
|
|
|
|
|
updateOrderStatusAfterPackageSend(Collections.singletonList(opOrder.getOrderId()));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private Map<Long, OpLogisticsBO> getDdLogisticsListByLogisticsIds(List<String> logisticsIds) {
|
|
|
|
@ -222,13 +242,24 @@ public class OutstorageServiceImpl implements OutstorageService {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void dsOrderOutStorage(OpOrder opOrder, PurchaseOrder purchaseOrder, DsPurchaseSetting dsPurchaseSetting) {
|
|
|
|
|
Long nearExpShipTime = checkDsPurchaseAutoOutStorage(opOrder, purchaseOrder, dsPurchaseSetting);
|
|
|
|
|
Long nearExpShipTime;
|
|
|
|
|
try {
|
|
|
|
|
nearExpShipTime = checkDsPurchaseAutoOutStorage(opOrder, purchaseOrder, dsPurchaseSetting);
|
|
|
|
|
} catch (DeliveryNotReceivedException e) {
|
|
|
|
|
opOrderDelayOutstorageBufferService.save(opOrder.getShopId(), opOrder.getOrderId(), new Date(e.getShipTimestamp() * 1000));
|
|
|
|
|
throw e;
|
|
|
|
|
} catch (RuntimeException e) {
|
|
|
|
|
System.out.println(e.getMessage());
|
|
|
|
|
throw e;
|
|
|
|
|
}
|
|
|
|
|
boolean isShipAfterLogisticsAccept= dsPurchaseSetting.getDeliveryTimeType().equals(PurchaseOrderConst.DELIVERY_TIME_TYPE_LOGISTICS_ACCEPT) && nearExpShipTime != null;
|
|
|
|
|
List<PurchaseOrder> purchaseOrders = new ArrayList<>();
|
|
|
|
|
purchaseOrders.add(purchaseOrder);
|
|
|
|
|
OrderPackageInfoDTO orderPackageInfoDTO = packOrderDeliveryInfos(opOrder, purchaseOrders, isShipAfterLogisticsAccept, false, false);
|
|
|
|
|
orderMultiPackageOutstorage(opOrder.getShopId(), opOrder.getOrderId(), orderPackageInfoDTO.getPackageList(), "", LogisticsConst.outstorageSourceDsAuto);
|
|
|
|
|
opOrderDsService.updateOpOrderDsOrderStatus(opOrder);
|
|
|
|
|
ResultDTO result = orderMultiPackageOutstorage(opOrder, orderPackageInfoDTO.getPackageList(), LogisticsConst.outstorageSourceDsAuto);
|
|
|
|
|
if (result.isSuccess()) {
|
|
|
|
|
opOrderDsService.updateOpOrderDsOrderStatus(opOrder);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private Long checkDsPurchaseAutoOutStorage(OpOrder opOrder, PurchaseOrder purchaseOrder, DsPurchaseSetting dsPurchaseSetting) {
|
|
|
|
@ -239,11 +270,12 @@ public class OutstorageServiceImpl implements OutstorageService {
|
|
|
|
|
return null;
|
|
|
|
|
case PurchaseOrderConst.DELIVERY_TIME_TYPE_LOGISTICS_ACCEPT:
|
|
|
|
|
if (purchaseOrder.getLogisticsIsAccept() == 1 && opOrder.getGmtExpShipTime() != null) {
|
|
|
|
|
long nearExpShipTime = (opOrder.getGmtExpShipTime().getTime() - (new Date()).getTime()) / 1000;
|
|
|
|
|
long shipTimestamp = opOrder.getGmtExpShipTime().getTime();
|
|
|
|
|
long nearExpShipTime = (shipTimestamp - (new Date()).getTime()) / 1000;
|
|
|
|
|
if (nearExpShipTime <= 3600) {
|
|
|
|
|
return nearExpShipTime;
|
|
|
|
|
} else {
|
|
|
|
|
throw new RuntimeException("快递未揽收");
|
|
|
|
|
throw new DeliveryNotReceivedException("快递未揽收", shipTimestamp/1000 - 3600);
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
return null;
|
|
|
|
@ -295,26 +327,46 @@ public class OutstorageServiceImpl implements OutstorageService {
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
List<String> errorMessages = new ArrayList<>();
|
|
|
|
|
boolean hasProcessOutstorage = false;
|
|
|
|
|
if (!newPackages.isEmpty()) {
|
|
|
|
|
Long nearExpShipTime = checkDsPurchaseAutoOutStorage(opOrder, purchaseOrder, dsPurchaseSetting);
|
|
|
|
|
orderMultiPackageOutstorage(opOrder.getShopId(), opOrder.getOrderId(), new ArrayList<>(newPackages.values()), "", LogisticsConst.outstorageSourceDsAuto);
|
|
|
|
|
opOrderDsService.updateOpOrderDsOrderStatus(opOrder);
|
|
|
|
|
try {
|
|
|
|
|
checkDsPurchaseAutoOutStorage(opOrder, purchaseOrder, dsPurchaseSetting);
|
|
|
|
|
} catch (DeliveryNotReceivedException e) {
|
|
|
|
|
opOrderDelayOutstorageBufferService.save(opOrder.getShopId(), opOrder.getOrderId(), new Date(e.getShipTimestamp() * 1000));
|
|
|
|
|
errorMessages.add(e.getMessage());
|
|
|
|
|
} catch (RuntimeException e) {
|
|
|
|
|
errorMessages.add(e.getMessage());
|
|
|
|
|
}
|
|
|
|
|
ResultDTO result = orderMultiPackageOutstorage(opOrder, new ArrayList<>(newPackages.values()), LogisticsConst.outstorageSourceDsAuto);
|
|
|
|
|
if (result.isSuccess()) {
|
|
|
|
|
opOrderDsService.updateOpOrderDsOrderStatus(opOrder);
|
|
|
|
|
} else {
|
|
|
|
|
errorMessages.add(result.getMessage());
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (!needUpdateDdPackIds.isEmpty() && dsPurchaseSetting.getIsPurchaseLogisticsUpdateToPlatform() > 0 && !dsPurchaseSetting.getDeliveryTimeType().equals(PurchaseOrderConst.DELIVERY_TIME_TYPE_DISABLED)) {
|
|
|
|
|
for (OpPackage opPackage: currentHasSentPackages) {
|
|
|
|
|
if (needUpdateDdPackIds.contains(opPackage.getDdPackId())) {
|
|
|
|
|
hasProcessOutstorage = true;
|
|
|
|
|
doUpdateLogistics(opOrder, opPackage.getDdPackId(), orderPackageInfoDTO.getDeliveryInfo(), LogisticsConst.outstorageSourceDsLogisticsChangeUpdate);
|
|
|
|
|
try {
|
|
|
|
|
doUpdateLogistics(opOrder, opPackage.getDdPackId(), orderPackageInfoDTO.getDeliveryInfo(), LogisticsConst.outstorageSourceDsLogisticsChangeUpdate);
|
|
|
|
|
} catch (RuntimeException e) {
|
|
|
|
|
errorMessages.add("包裹:" + opPackage.getDdPackId() + ",失败原因:" + e.getMessage());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (!hasProcessOutstorage) {
|
|
|
|
|
String failCode = (!newPackages.isEmpty() || !needUpdateDdPackIds.isEmpty()) ? "needAddHistory" : "";
|
|
|
|
|
// String failCode = (!newPackages.isEmpty() || !needUpdateDdPackIds.isEmpty()) ? "needAddHistory" : "";
|
|
|
|
|
throw new RuntimeException("没有达到发货或者更新物流信息条件" + (errorMessages.isEmpty() ? "" : ":" + String.join(";", errorMessages)));
|
|
|
|
|
}
|
|
|
|
|
if (!errorMessages.isEmpty()) {
|
|
|
|
|
throw new RuntimeException(String.join(";", errorMessages));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void doUpdateLogistics(OpOrder opOrder, String ddPackId, DeliverInfoDTO deliverInfo, String outStorageSource) {
|
|
|
|
@ -330,10 +382,12 @@ public class OutstorageServiceImpl implements OutstorageService {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
String packId = oldPackageExt == null || StringUtils.isBlank(oldPackageExt.getDeliveryId()) ? ddPackId : oldPackageExt.getDeliveryId();
|
|
|
|
|
logisticsEditByPackToDd(opOrder.getOrderId(), packId, companyCode, waybillCode);
|
|
|
|
|
ResultDTO outstorageRet = new ResultDTO();
|
|
|
|
|
ResultDTO result = logisticsEditByPackToDd(opOrder.getOrderId(), packId, companyCode, waybillCode);
|
|
|
|
|
if (!result.isSuccess()) {
|
|
|
|
|
throw new RuntimeException(result.getMessage());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
String newDdPackId = (companyCode + "_" + waybillCode).toLowerCase();
|
|
|
|
|
String newDdPackId = OrderTool.buildDdPackId (companyCode, waybillCode);
|
|
|
|
|
if (newDdPackId.equals(ddPackId)) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
@ -365,17 +419,17 @@ public class OutstorageServiceImpl implements OutstorageService {
|
|
|
|
|
List<String> childOrderIds = new ArrayList<>();
|
|
|
|
|
for (OpPackageOrderChild packageOrderChild: oldPackageOrderChildren) {
|
|
|
|
|
childOrderIds.add(packageOrderChild.getChildOrderId());
|
|
|
|
|
opOrderChildLogisticsService.saveByOpPackageOrderChild(packageOrderChild, opOrder.getShopId(), companyCode, waybillCode, logisticsName);
|
|
|
|
|
opOrderChildLogisticsService.saveByOpPackageOrderChild(packageOrderChild.getOrderId(), packageOrderChild.getChildOrderId(), opOrder.getShopId(), packageOrderChild.getShippedNum(), companyCode, waybillCode, logisticsName);
|
|
|
|
|
opPackageOrderChildService.save(newPackage.getOpPackageId(), packageOrderChild.getChildOrderId(), opOrder.getOrderId(), packageOrderChild.getShippedNum());
|
|
|
|
|
}
|
|
|
|
|
opOrderChildLogisticsService.deleteByChildOrderIdsAndLogistics(childOrderIds, oldPackage.getCompanyCode(), oldPackage.getLogisticsCode());
|
|
|
|
|
List<String> orderIds = new ArrayList<>();
|
|
|
|
|
orderIds.add(opOrder.getOrderId());
|
|
|
|
|
opOrderOutstorageHistoryService.addOrderOutstorageHistory(opOrder.getShopId(), orderIds, logisticsId, waybillCode, outStorageSource, 1, outstorageRet);
|
|
|
|
|
opOrderOutstorageHistoryService.addOrderOutstorageHistory(opOrder.getShopId(), orderIds, logisticsId, waybillCode, outStorageSource, 1, result);
|
|
|
|
|
updateOrderStatusAfterPackageSend(orderIds);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void logisticsEditByPackToDd(String orderId, String packId, String companyCode, String logisticsCode) {
|
|
|
|
|
private ResultDTO logisticsEditByPackToDd(String orderId, String packId, String companyCode, String logisticsCode) {
|
|
|
|
|
OrderLogisticsEditByPackRequest request = new OrderLogisticsEditByPackRequest();
|
|
|
|
|
OrderLogisticsEditByPackParam param = new OrderLogisticsEditByPackParam();
|
|
|
|
|
param.setOrderId(orderId);
|
|
|
|
@ -386,25 +440,14 @@ public class OutstorageServiceImpl implements OutstorageService {
|
|
|
|
|
request.execute();
|
|
|
|
|
OrderLogisticsEditByPackResponse response = request.execute();
|
|
|
|
|
if (!response.isSuccess()) {
|
|
|
|
|
throw new RuntimeException(response.getSubMsg());
|
|
|
|
|
return ResultDTO.fail(response.getMsg());
|
|
|
|
|
}
|
|
|
|
|
return ResultDTO.success();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void updateOrderStatusAfterPackageSend(List<String> orderIds) {
|
|
|
|
|
List<OpOrderChild> children = opOrderChildService.getListByOrderIds(orderIds);
|
|
|
|
|
Map<String, Map<String, Integer>> orderIdAndChildOrderIdAndComboNumMap = new HashMap<>();
|
|
|
|
|
for (OpOrderChild child: children) {
|
|
|
|
|
Map<String, Integer> childOrderIdAndComboNumMap = new HashMap<>();
|
|
|
|
|
if (orderIdAndChildOrderIdAndComboNumMap.containsKey(child.getOrderId())) {
|
|
|
|
|
childOrderIdAndComboNumMap = orderIdAndChildOrderIdAndComboNumMap.get(child.getOrderId());
|
|
|
|
|
}
|
|
|
|
|
if (childOrderIdAndComboNumMap.containsKey(child.getChildOrderId())) {
|
|
|
|
|
childOrderIdAndComboNumMap.put(child.getChildOrderId(), childOrderIdAndComboNumMap.get(child.getChildOrderId()) + child.getComboNum());
|
|
|
|
|
} else {
|
|
|
|
|
childOrderIdAndComboNumMap.put(child.getChildOrderId(), child.getComboNum());
|
|
|
|
|
}
|
|
|
|
|
orderIdAndChildOrderIdAndComboNumMap.put(child.getOrderId(), childOrderIdAndComboNumMap);
|
|
|
|
|
}
|
|
|
|
|
Map<String, Map<String, Integer>> orderIdAndChildOrderIdAndComboNumMap = buildOrderIdAndChildOrderIdAndComboNumMap(children);
|
|
|
|
|
|
|
|
|
|
List<OpOrderChildLogistics> childLogisticsRows = opOrderChildLogisticsService.getListByOrderIds(orderIds);
|
|
|
|
|
Map<String, Map<String, Integer>> orderIdAndChildOrderIdAndShippedNumMap = new HashMap<>();
|
|
|
|
@ -453,6 +496,23 @@ public class OutstorageServiceImpl implements OutstorageService {
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private static Map<String, Map<String, Integer>> buildOrderIdAndChildOrderIdAndComboNumMap(List<OpOrderChild> children) {
|
|
|
|
|
Map<String, Map<String, Integer>> orderIdAndChildOrderIdAndComboNumMap = new HashMap<>();
|
|
|
|
|
for (OpOrderChild child: children) {
|
|
|
|
|
Map<String, Integer> childOrderIdAndComboNumMap = new HashMap<>();
|
|
|
|
|
if (orderIdAndChildOrderIdAndComboNumMap.containsKey(child.getOrderId())) {
|
|
|
|
|
childOrderIdAndComboNumMap = orderIdAndChildOrderIdAndComboNumMap.get(child.getOrderId());
|
|
|
|
|
}
|
|
|
|
|
if (childOrderIdAndComboNumMap.containsKey(child.getChildOrderId())) {
|
|
|
|
|
childOrderIdAndComboNumMap.put(child.getChildOrderId(), childOrderIdAndComboNumMap.get(child.getChildOrderId()) + child.getComboNum());
|
|
|
|
|
} else {
|
|
|
|
|
childOrderIdAndComboNumMap.put(child.getChildOrderId(), child.getComboNum());
|
|
|
|
|
}
|
|
|
|
|
orderIdAndChildOrderIdAndComboNumMap.put(child.getOrderId(), childOrderIdAndComboNumMap);
|
|
|
|
|
}
|
|
|
|
|
return orderIdAndChildOrderIdAndComboNumMap;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private OrderPackageInfoDTO packOrderDeliveryInfos(OpOrder opOrder, List<PurchaseOrder> purchaseOrders, boolean isShipAfterLogisticsAccept, boolean isUpdateDelivery, boolean isIgnoreOrderStatus) {
|
|
|
|
|
if (purchaseOrders.isEmpty()) {
|
|
|
|
|
throw new RuntimeException("没有需要出库的采购单");
|
|
|
|
|