|
@@ -17,7 +17,9 @@ import com.sckw.contract.api.model.dto.res.ContractCommonInfoResDto;
|
|
|
import com.sckw.contract.api.model.vo.KwcContractLogisticsDto;
|
|
import com.sckw.contract.api.model.vo.KwcContractLogisticsDto;
|
|
|
import com.sckw.core.common.enums.enums.DictEnum;
|
|
import com.sckw.core.common.enums.enums.DictEnum;
|
|
|
import com.sckw.core.common.enums.enums.DictTypeEnum;
|
|
import com.sckw.core.common.enums.enums.DictTypeEnum;
|
|
|
|
|
+import com.sckw.core.common.enums.enums.ErrorCodeEnum;
|
|
|
import com.sckw.core.exception.BusinessException;
|
|
import com.sckw.core.exception.BusinessException;
|
|
|
|
|
+import com.sckw.core.exception.BusinessPlatfromException;
|
|
|
import com.sckw.core.model.constant.Global;
|
|
import com.sckw.core.model.constant.Global;
|
|
|
import com.sckw.core.model.constant.NumberConstant;
|
|
import com.sckw.core.model.constant.NumberConstant;
|
|
|
import com.sckw.core.model.enums.*;
|
|
import com.sckw.core.model.enums.*;
|
|
@@ -2299,6 +2301,17 @@ public class KwtLogisticsConsignmentService {
|
|
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ Map<Long, List<KwtLogisticsOrder>> tradeIdAndLogOrderList = records.stream()
|
|
|
|
|
+ .collect(Collectors.groupingBy(KwtLogisticsOrder::getTOrderId));
|
|
|
|
|
+
|
|
|
|
|
+ //子运单
|
|
|
|
|
+ List<KwtWaybillOrderSubtask> orderSubtaskList = waybillOrderSubtaskRepository.queryByLogIds(logOrderIdList);
|
|
|
|
|
+ Map<Long, List<KwtWaybillOrderSubtask>> logOrderIdAndSubtaskMap = Maps.newHashMap();
|
|
|
|
|
+ if (CollectionUtils.isNotEmpty(orderSubtaskList)) {
|
|
|
|
|
+ logOrderIdAndSubtaskMap = orderSubtaskList.stream()
|
|
|
|
|
+ .collect(Collectors.groupingBy(KwtWaybillOrderSubtask::getLOrderId));
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
Map<String, KwtLogisticsOrderUnit> finalLogOrderIdAndUnitTypeKeyAndUnitMap = logOrderIdAndUnitTypeKeyAndUnitMap;
|
|
Map<String, KwtLogisticsOrderUnit> finalLogOrderIdAndUnitTypeKeyAndUnitMap = logOrderIdAndUnitTypeKeyAndUnitMap;
|
|
|
Map<Long, KwtLogisticsOrderGoods> finalLogIdAndGoodsMap = logIdAndGoodsMap;
|
|
Map<Long, KwtLogisticsOrderGoods> finalLogIdAndGoodsMap = logIdAndGoodsMap;
|
|
|
Map<Long, KwpGoods> finalGoodsIdAndGoodsMap = goodsIdAndGoodsMap;
|
|
Map<Long, KwpGoods> finalGoodsIdAndGoodsMap = goodsIdAndGoodsMap;
|
|
@@ -2307,10 +2320,11 @@ public class KwtLogisticsConsignmentService {
|
|
|
|
|
|
|
|
Map<String, SysDictResDto> finalDictValueAndDictResDtoMap = dictValueAndDictResDtoMap;
|
|
Map<String, SysDictResDto> finalDictValueAndDictResDtoMap = dictValueAndDictResDtoMap;
|
|
|
Map<Long, OrderDetailVo> finalTradeIdAndOrderDetailVoMap = tradeIdAndOrderDetailVoMap;
|
|
Map<Long, OrderDetailVo> finalTradeIdAndOrderDetailVoMap = tradeIdAndOrderDetailVoMap;
|
|
|
|
|
+ Map<Long, List<KwtWaybillOrderSubtask>> finalLogOrderIdAndSubtaskMap = logOrderIdAndSubtaskMap;
|
|
|
List<LogisticsOrderResp> resps = records.stream()
|
|
List<LogisticsOrderResp> resps = records.stream()
|
|
|
.map(x ->getLogisticsOrderResp(x, finalLogOrderIdAndUnitTypeKeyAndUnitMap, finalLogIdAndGoodsMap
|
|
.map(x ->getLogisticsOrderResp(x, finalLogOrderIdAndUnitTypeKeyAndUnitMap, finalLogIdAndGoodsMap
|
|
|
, finalGoodsIdAndGoodsMap, finalLogisticsOrderIdAndUnitTypeKeyAndAddressMap, finalLogOrderIdAndContractMap,
|
|
, finalGoodsIdAndGoodsMap, finalLogisticsOrderIdAndUnitTypeKeyAndAddressMap, finalLogOrderIdAndContractMap,
|
|
|
- finalDictValueAndDictResDtoMap, finalTradeIdAndOrderDetailVoMap))
|
|
|
|
|
|
|
+ finalDictValueAndDictResDtoMap, finalTradeIdAndOrderDetailVoMap, tradeIdAndLogOrderList, finalLogOrderIdAndSubtaskMap))
|
|
|
.collect(Collectors.toList());
|
|
.collect(Collectors.toList());
|
|
|
if(org.apache.commons.lang3.StringUtils.isNotBlank(req.getConsignCompanyId())){
|
|
if(org.apache.commons.lang3.StringUtils.isNotBlank(req.getConsignCompanyId())){
|
|
|
resps = resps.stream()
|
|
resps = resps.stream()
|
|
@@ -2437,7 +2451,9 @@ public class KwtLogisticsConsignmentService {
|
|
|
Map<String, KwtLogisticsOrderAddress> finalLogisticsOrderIdAndUnitTypeKeyAndAddressMap,
|
|
Map<String, KwtLogisticsOrderAddress> finalLogisticsOrderIdAndUnitTypeKeyAndAddressMap,
|
|
|
Map<Long, KwtLogisticsOrderContract> finalLogOrderIdAndContractMap,
|
|
Map<Long, KwtLogisticsOrderContract> finalLogOrderIdAndContractMap,
|
|
|
Map<String, SysDictResDto> dictValueAndDictResDtoMap,
|
|
Map<String, SysDictResDto> dictValueAndDictResDtoMap,
|
|
|
- Map<Long, OrderDetailVo> tradeIdAndOrderDetailVoMap) {
|
|
|
|
|
|
|
+ Map<Long, OrderDetailVo> tradeIdAndOrderDetailVoMap,
|
|
|
|
|
+ Map<Long, List<KwtLogisticsOrder>> tradeIdAndLogOrderList,
|
|
|
|
|
+ Map<Long, List<KwtWaybillOrderSubtask>> logisticsOrderIdAndSubtaskList) {
|
|
|
LogisticsOrderResp logisticsOrderResp = new LogisticsOrderResp();
|
|
LogisticsOrderResp logisticsOrderResp = new LogisticsOrderResp();
|
|
|
logisticsOrderResp.setLogisticsOrderId(String.valueOf(kwtLogisticsOrder.getId()));
|
|
logisticsOrderResp.setLogisticsOrderId(String.valueOf(kwtLogisticsOrder.getId()));
|
|
|
logisticsOrderResp.setLogisticsOrderNo(kwtLogisticsOrder.getLOrderNo());
|
|
logisticsOrderResp.setLogisticsOrderNo(kwtLogisticsOrder.getLOrderNo());
|
|
@@ -2459,14 +2475,14 @@ public class KwtLogisticsConsignmentService {
|
|
|
SysDictResDto dictResDto = dictValueAndDictResDtoMap.getOrDefault(kwpGoods.getGoodsType(), new SysDictResDto());
|
|
SysDictResDto dictResDto = dictValueAndDictResDtoMap.getOrDefault(kwpGoods.getGoodsType(), new SysDictResDto());
|
|
|
logisticsOrderResp.setGoodsName(kwpGoods.getName()+"/"+dictResDto.getLabel()+"/"+kwpGoods.getSpec());
|
|
logisticsOrderResp.setGoodsName(kwpGoods.getName()+"/"+dictResDto.getLabel()+"/"+kwpGoods.getSpec());
|
|
|
}
|
|
}
|
|
|
- logisticsOrderResp.setTransportPrice(Objects.nonNull(kwtLogisticsOrder.getPrice()) ? kwtLogisticsOrder.getPrice().setScale(2,
|
|
|
|
|
- RoundingMode.HALF_UP).toPlainString() : "0.00" + priceUnit);
|
|
|
|
|
|
|
+ logisticsOrderResp.setTransportPrice((Objects.nonNull(kwtLogisticsOrder.getPrice()) ? kwtLogisticsOrder.getPrice().setScale(2,
|
|
|
|
|
+ RoundingMode.HALF_UP).toPlainString() : "0.00" ) +priceUnit);
|
|
|
logisticsOrderResp.setChargeType(kwtLogisticsOrder.getBillingMode());
|
|
logisticsOrderResp.setChargeType(kwtLogisticsOrder.getBillingMode());
|
|
|
logisticsOrderResp.setChargeTypeDesc(DictEnum.getLabel(DictTypeEnum.CHARGING_TYPE.getType(),
|
|
logisticsOrderResp.setChargeTypeDesc(DictEnum.getLabel(DictTypeEnum.CHARGING_TYPE.getType(),
|
|
|
String.valueOf(kwtLogisticsOrder.getBillingMode())));
|
|
String.valueOf(kwtLogisticsOrder.getBillingMode())));
|
|
|
OrderDetailVo orderDetailVo = tradeIdAndOrderDetailVoMap.getOrDefault(kwtLogisticsOrder.getTOrderId(), new OrderDetailVo());
|
|
OrderDetailVo orderDetailVo = tradeIdAndOrderDetailVoMap.getOrDefault(kwtLogisticsOrder.getTOrderId(), new OrderDetailVo());
|
|
|
- logisticsOrderResp.setAmount(Objects.nonNull(orderDetailVo.getAmount()) ?
|
|
|
|
|
- orderDetailVo.getAmount().setScale(2, RoundingMode.HALF_UP).toPlainString() : "0.00"+kwtLogisticsOrder.getUnit());
|
|
|
|
|
|
|
+ logisticsOrderResp.setAmount((Objects.nonNull(orderDetailVo.getAmount()) ?
|
|
|
|
|
+ orderDetailVo.getAmount().setScale(2, RoundingMode.HALF_UP).toPlainString() : "0.00")+kwtLogisticsOrder.getUnit());
|
|
|
|
|
|
|
|
BigDecimal expectedTransportPrice =
|
|
BigDecimal expectedTransportPrice =
|
|
|
Objects.nonNull(kwtLogisticsOrder.getPrice()) && Objects.nonNull(orderDetailVo.getAmount()) ?
|
|
Objects.nonNull(kwtLogisticsOrder.getPrice()) && Objects.nonNull(orderDetailVo.getAmount()) ?
|
|
@@ -2476,10 +2492,10 @@ public class KwtLogisticsConsignmentService {
|
|
|
|
|
|
|
|
logisticsOrderResp.setExpectedTransportPrice(expectedTransportPrice.setScale(2,RoundingMode.HALF_UP).toPlainString()+priceUnit);
|
|
logisticsOrderResp.setExpectedTransportPrice(expectedTransportPrice.setScale(2,RoundingMode.HALF_UP).toPlainString()+priceUnit);
|
|
|
logisticsOrderResp.setActualTransportPrice(actualTransportPrice.setScale(2,RoundingMode.HALF_UP).toPlainString()+priceUnit);
|
|
logisticsOrderResp.setActualTransportPrice(actualTransportPrice.setScale(2,RoundingMode.HALF_UP).toPlainString()+priceUnit);
|
|
|
- logisticsOrderResp.setLoadAmount(Objects.nonNull(kwtLogisticsOrder.getLoadAmount()) ?
|
|
|
|
|
- kwtLogisticsOrder.getLoadAmount().setScale(2,RoundingMode.HALF_UP).toPlainString() : "0.00"+kwtLogisticsOrder.getUnit());
|
|
|
|
|
- logisticsOrderResp.setUnloadAmount(Objects.nonNull(kwtLogisticsOrder.getUnloadAmount()) ?
|
|
|
|
|
- kwtLogisticsOrder.getUnloadAmount().setScale(2,RoundingMode.HALF_UP).toPlainString() : "0.00"+kwtLogisticsOrder.getUnit());
|
|
|
|
|
|
|
+ logisticsOrderResp.setLoadAmount((Objects.nonNull(kwtLogisticsOrder.getLoadAmount()) ?
|
|
|
|
|
+ kwtLogisticsOrder.getLoadAmount().setScale(2,RoundingMode.HALF_UP).toPlainString() : "0.00")+kwtLogisticsOrder.getUnit());
|
|
|
|
|
+ logisticsOrderResp.setUnloadAmount((Objects.nonNull(kwtLogisticsOrder.getUnloadAmount()) ?
|
|
|
|
|
+ kwtLogisticsOrder.getUnloadAmount().setScale(2,RoundingMode.HALF_UP).toPlainString() : "0.00")+kwtLogisticsOrder.getUnit());
|
|
|
|
|
|
|
|
KwtLogisticsOrderAddress loadAdd = finalLogisticsOrderIdAndUnitTypeKeyAndAddressMap.getOrDefault(kwtLogisticsOrder.getId() + "-" + AddressTypeEnum.SHIPMENT.getCode(), new KwtLogisticsOrderAddress());
|
|
KwtLogisticsOrderAddress loadAdd = finalLogisticsOrderIdAndUnitTypeKeyAndAddressMap.getOrDefault(kwtLogisticsOrder.getId() + "-" + AddressTypeEnum.SHIPMENT.getCode(), new KwtLogisticsOrderAddress());
|
|
|
logisticsOrderResp.setLoadAddress(loadAdd.getCityName()+loadAdd.getDetailAddress());
|
|
logisticsOrderResp.setLoadAddress(loadAdd.getCityName()+loadAdd.getDetailAddress());
|
|
@@ -2497,10 +2513,44 @@ public class KwtLogisticsConsignmentService {
|
|
|
logisticsOrderResp.setCreateTime(DateUtils.format(kwtLogisticsOrder.getCreateTime(), DateUtils.DATE_TIME_PATTERN));
|
|
logisticsOrderResp.setCreateTime(DateUtils.format(kwtLogisticsOrder.getCreateTime(), DateUtils.DATE_TIME_PATTERN));
|
|
|
logisticsOrderResp.setStatus(String.valueOf(kwtLogisticsOrder.getStatus()));
|
|
logisticsOrderResp.setStatus(String.valueOf(kwtLogisticsOrder.getStatus()));
|
|
|
logisticsOrderResp.setStatusDesc(LogisticsOrderV1Enum.getDesc(kwtLogisticsOrder.getStatus()));
|
|
logisticsOrderResp.setStatusDesc(LogisticsOrderV1Enum.getDesc(kwtLogisticsOrder.getStatus()));
|
|
|
-
|
|
|
|
|
|
|
+ //设置余量
|
|
|
|
|
+ String orderSurplus = getSupAmount(kwtLogisticsOrder.getTOrderId(), tradeIdAndOrderDetailVoMap, tradeIdAndLogOrderList, logisticsOrderIdAndSubtaskList);
|
|
|
|
|
+ logisticsOrderResp.setOrderSurplus(orderSurplus+kwtLogisticsOrder.getUnit());
|
|
|
return logisticsOrderResp;
|
|
return logisticsOrderResp;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ private static String getSupAmount(Long tradeOrderId,
|
|
|
|
|
+ Map<Long, OrderDetailVo> tradeIdAndOrderDetailVoMap,
|
|
|
|
|
+ Map<Long, List<KwtLogisticsOrder>> tradeIdAndLogOrderList,
|
|
|
|
|
+ Map<Long, List<KwtWaybillOrderSubtask>> logisticsOrderIdAndSubtaskList) {
|
|
|
|
|
+ // KwtLogisticsOrder order = logOrderMap.getOrDefault(wbOrder.getLOrderId(), new KwtLogisticsOrder());
|
|
|
|
|
+ OrderDetailVo detailVo = tradeIdAndOrderDetailVoMap.getOrDefault(tradeOrderId, new OrderDetailVo());
|
|
|
|
|
+ BigDecimal tradeAmount = Optional.ofNullable(detailVo).map(OrderDetailVo::getAmount).orElse(BigDecimal.ZERO);
|
|
|
|
|
+ List<KwtLogisticsOrder> kwtLogisticsOrders = tradeIdAndLogOrderList.get(tradeOrderId);
|
|
|
|
|
+ BigDecimal logTotatalAmount = BigDecimal.ZERO;
|
|
|
|
|
+ if (CollectionUtils.isNotEmpty(kwtLogisticsOrders)){
|
|
|
|
|
+ String billingMode = kwtLogisticsOrders.get(0).getBillingMode();
|
|
|
|
|
+
|
|
|
|
|
+ for (KwtLogisticsOrder kwtLogisticsOrder : kwtLogisticsOrders) {
|
|
|
|
|
+ List<KwtWaybillOrderSubtask> waybillOrderSubtasks = logisticsOrderIdAndSubtaskList.getOrDefault(kwtLogisticsOrder.getId(), new ArrayList<>());
|
|
|
|
|
+ BigDecimal loadAmountSum = waybillOrderSubtasks.stream()
|
|
|
|
|
+ .filter(x->!Arrays.asList(CarWaybillV1Enum.COMPLETED.getCode(), CarWaybillV1Enum.CANCELLED.getCode()).contains(x.getStatus()))
|
|
|
|
|
+ .map(KwtWaybillOrderSubtask::getEntrustAmount)
|
|
|
|
|
+ .filter(Objects::nonNull)
|
|
|
|
|
+ .reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
|
|
+ //logTotatalAmount = logTotatalAmount.add(loadAmountSum);
|
|
|
|
|
+ BigDecimal unloadAmountSum = waybillOrderSubtasks.stream()
|
|
|
|
|
+ .filter(x->!Objects.equals(x.getStatus(),CarWaybillV1Enum.CANCELLED.getCode()))
|
|
|
|
|
+ .map(KwtWaybillOrderSubtask::getUnloadAmount)
|
|
|
|
|
+ .filter(Objects::nonNull)
|
|
|
|
|
+ .reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
|
|
+ logTotatalAmount = logTotatalAmount.add(loadAmountSum).add(unloadAmountSum);
|
|
|
|
|
+ //logTotatalAmount = logTotatalAmount.add(unloadAmountSum);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ return tradeAmount.subtract(logTotatalAmount).setScale(2, RoundingMode.HALF_UP).toPlainString();
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
public LogisticsOrderDetailResp getLogisticsOrderDetail(@Valid LogisticsOrderReq req) {
|
|
public LogisticsOrderDetailResp getLogisticsOrderDetail(@Valid LogisticsOrderReq req) {
|
|
|
KwtLogisticsOrder logisticsOrder =
|
|
KwtLogisticsOrder logisticsOrder =
|
|
|
logisticsOrderRepository.queryByLogisticsOrderId(Long.valueOf(req.getLogisticsOrderId()));
|
|
logisticsOrderRepository.queryByLogisticsOrderId(Long.valueOf(req.getLogisticsOrderId()));
|
|
@@ -2718,8 +2768,8 @@ public class KwtLogisticsConsignmentService {
|
|
|
goodsInfoVO.setGoodsName(kwpGoods.getName());
|
|
goodsInfoVO.setGoodsName(kwpGoods.getName());
|
|
|
priceUnit = kwpGoods.getPriceUnit();
|
|
priceUnit = kwpGoods.getPriceUnit();
|
|
|
}
|
|
}
|
|
|
- goodsInfoVO.setUnitPrice(Objects.nonNull(logisticsOrder.getPrice())? logisticsOrder.getPrice().setScale(2,RoundingMode.HALF_UP).toPlainString() : "0.00"+logisticsOrder.getUnit());
|
|
|
|
|
- goodsInfoVO.setOrderAmount(Objects.nonNull(orderDetailVo.getAmount()) ? orderDetailVo.getAmount().setScale(2,RoundingMode.HALF_UP).toPlainString() : "0.00"+orderDetailVo.getUnit());
|
|
|
|
|
|
|
+ goodsInfoVO.setUnitPrice((Objects.nonNull(logisticsOrder.getPrice())? logisticsOrder.getPrice().setScale(2,RoundingMode.HALF_UP).toPlainString() : "0.00")+logisticsOrder.getUnit());
|
|
|
|
|
+ goodsInfoVO.setOrderAmount((Objects.nonNull(orderDetailVo.getAmount()) ? orderDetailVo.getAmount().setScale(2,RoundingMode.HALF_UP).toPlainString() : "0.00")+logisticsOrder.getUnit());
|
|
|
BigDecimal carriageCost = Objects.nonNull(orderDetailVo.getAmount()) && Objects.nonNull(logisticsOrder.getPrice()) ?
|
|
BigDecimal carriageCost = Objects.nonNull(orderDetailVo.getAmount()) && Objects.nonNull(logisticsOrder.getPrice()) ?
|
|
|
orderDetailVo.getAmount().multiply(logisticsOrder.getPrice()) : BigDecimal.ZERO;
|
|
orderDetailVo.getAmount().multiply(logisticsOrder.getPrice()) : BigDecimal.ZERO;
|
|
|
goodsInfoVO.setCarriageCost(carriageCost.setScale(2,RoundingMode.HALF_UP).toPlainString()+priceUnit);
|
|
goodsInfoVO.setCarriageCost(carriageCost.setScale(2,RoundingMode.HALF_UP).toPlainString()+priceUnit);
|
|
@@ -2895,6 +2945,8 @@ public class KwtLogisticsConsignmentService {
|
|
|
BigDecimal unloadAmount = BigDecimal.ZERO;
|
|
BigDecimal unloadAmount = BigDecimal.ZERO;
|
|
|
String unit = Optional.ofNullable(logisticsOrders).map(x -> x.get(0))
|
|
String unit = Optional.ofNullable(logisticsOrders).map(x -> x.get(0))
|
|
|
.map(KwtLogisticsOrder::getUnit).orElse("");
|
|
.map(KwtLogisticsOrder::getUnit).orElse("");
|
|
|
|
|
+ capacityVo.setStatus("0");
|
|
|
|
|
+ capacityVo.setStatusDesc("待接单");
|
|
|
if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(waybillOrders)){
|
|
if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(waybillOrders)){
|
|
|
List<KwtWaybillOrder> waybillOrderList = Optional.ofNullable(waybillOrders).orElse(List.of())
|
|
List<KwtWaybillOrder> waybillOrderList = Optional.ofNullable(waybillOrders).orElse(List.of())
|
|
|
.stream()
|
|
.stream()
|