|
|
@@ -6,8 +6,11 @@ import com.github.pagehelper.PageHelper;
|
|
|
import com.google.common.collect.Lists;
|
|
|
import com.google.common.collect.Maps;
|
|
|
import com.google.common.collect.Sets;
|
|
|
+import com.sckw.contract.api.RemoteContractService;
|
|
|
+import com.sckw.contract.api.model.dto.res.ContractLogisticsAndTradeOrderResDto;
|
|
|
import com.sckw.core.common.enums.enums.DictEnum;
|
|
|
import com.sckw.core.common.enums.enums.DictTypeEnum;
|
|
|
+import com.sckw.core.exception.BusinessException;
|
|
|
import com.sckw.core.model.base.BaseModel;
|
|
|
import com.sckw.core.model.enums.AddressTypeEnum;
|
|
|
import com.sckw.core.model.page.PageResult;
|
|
|
@@ -28,6 +31,7 @@ import com.sckw.order.model.dto.OrderListResDTO;
|
|
|
import com.sckw.order.model.dto.TradeOrderListSelectDTO;
|
|
|
import com.sckw.order.model.vo.req.*;
|
|
|
import com.sckw.order.model.vo.res.QueryTradeOrderResp;
|
|
|
+import com.sckw.order.model.vo.res.TradeOrderDetailResp;
|
|
|
import com.sckw.order.repository.*;
|
|
|
import com.sckw.product.api.dubbo.GoodsInfoService;
|
|
|
import com.sckw.product.api.model.KwpGoods;
|
|
|
@@ -35,6 +39,7 @@ import com.sckw.system.api.RemoteSystemService;
|
|
|
import com.sckw.system.api.RemoteUserService;
|
|
|
import com.sckw.system.api.model.dto.res.UserCacheResDto;
|
|
|
import com.sckw.transport.api.dubbo.TransportRemoteService;
|
|
|
+import com.sckw.transport.api.model.vo.KwtLogisticsOrderVO;
|
|
|
import com.sckw.transport.api.model.vo.RTransportEntVo;
|
|
|
import com.sckw.transport.api.model.vo.RWaybillSubOrderVo;
|
|
|
import lombok.AllArgsConstructor;
|
|
|
@@ -45,6 +50,7 @@ import org.springframework.data.domain.Sort;
|
|
|
import org.springframework.data.mongodb.core.query.Criteria;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
+import java.math.BigDecimal;
|
|
|
import java.math.RoundingMode;
|
|
|
import java.util.*;
|
|
|
import java.util.function.Function;
|
|
|
@@ -69,6 +75,8 @@ public class TradeOrderManageService {
|
|
|
|
|
|
@DubboReference(version = "1.0.0", group = "design", check = false)
|
|
|
private TransportRemoteService transportRemoteService;
|
|
|
+ @DubboReference(version = "1.0.0", group = "design", check = false)
|
|
|
+ private RemoteContractService remoteContractService;
|
|
|
|
|
|
private final KwoTradeOrderService tradeOrderService;
|
|
|
private final KwoTradeOrderMapper tradeOrderMapper;
|
|
|
@@ -232,12 +240,12 @@ public class TradeOrderManageService {
|
|
|
//查询贸易合同商品信息
|
|
|
Map<Long, KwoTradeOrderGoods> tradeOrderIdGoodsMap = Maps.newHashMap() ;
|
|
|
List<KwoTradeOrderGoods> tradeOrderGoods = tradeOrderGoodsRepository.queryByOrderIds(tradeOrderIds);
|
|
|
- List<Long> goodsList = Lists.newArrayList();
|
|
|
+ List<Long> goodsIds = Lists.newArrayList();
|
|
|
if (CollectionUtils.isNotEmpty(tradeOrderGoods)){
|
|
|
tradeOrderIdGoodsMap = tradeOrderGoods.stream()
|
|
|
.collect(Collectors.toMap(KwoTradeOrderGoods::getTOrderId, Function.identity(), (k, v) -> k));
|
|
|
//获取商品id
|
|
|
- goodsList = tradeOrderGoods.stream()
|
|
|
+ goodsIds = tradeOrderGoods.stream()
|
|
|
.map(KwoTradeOrderGoods::getGoodsId)
|
|
|
.distinct()
|
|
|
.collect(Collectors.toList());
|
|
|
@@ -245,8 +253,8 @@ public class TradeOrderManageService {
|
|
|
|
|
|
//查询商品信息
|
|
|
Map<Long, KwpGoods> goodsIdAndGoodsMap = Maps.newHashMap() ;
|
|
|
- if (CollectionUtils.isNotEmpty(goodsList)){
|
|
|
- goodsIdAndGoodsMap = goodsInfoService.getGoodsByIds(goodsList);
|
|
|
+ if (CollectionUtils.isNotEmpty(goodsIds)){
|
|
|
+ goodsIdAndGoodsMap = goodsInfoService.getGoodsByIds(goodsIds);
|
|
|
}
|
|
|
|
|
|
//查询贸易订单公司信息
|
|
|
@@ -374,4 +382,240 @@ public class TradeOrderManageService {
|
|
|
queryTradeOrderResp.setCreateTime(DateUtils.format(tradeOrder.getCreateTime(), DateUtils.DATE_TIME_PATTERN));
|
|
|
return queryTradeOrderResp;
|
|
|
}
|
|
|
+
|
|
|
+ public TradeOrderDetailResp getTradeOrderDetail(TradeOrderDetailReq req) {
|
|
|
+ log.info("贸易订单详情查询请求参数req:{}", JSON.toJSONString(req));
|
|
|
+ KwoTradeOrder tradeOrder = tradeOrderRepository.queryByTradeOrderId(Long.valueOf(req.getTradeOrderId()));
|
|
|
+ if (Objects.isNull(tradeOrder)){
|
|
|
+ throw new BusinessException("贸易订单不存在");
|
|
|
+ }
|
|
|
+ //根据贸易id查询贸易合同信息
|
|
|
+ KwoTradeOrderContract tradeOrderContract = tradeOrderContractRepository.queryByTradeOrderId(tradeOrder.getId());
|
|
|
+ //获取合同id
|
|
|
+ Long tradeOrderContractId =
|
|
|
+ Optional.ofNullable(tradeOrderContract).map(KwoTradeOrderContract::getTOrderId).orElse(null);
|
|
|
+ //查询合同信息
|
|
|
+ ContractLogisticsAndTradeOrderResDto logisticsAndTradeOrder = remoteContractService.queryContractByContractId(tradeOrderContractId
|
|
|
+ , tradeOrder.getId());
|
|
|
+
|
|
|
+ //查询贸易订单相关的贸易企业信息
|
|
|
+ List<KwoTradeOrderUnit> kwoTradeOrderUnits = tradeOrderUnitRepository.queryByOrderId(tradeOrder.getId());
|
|
|
+ Map<String, KwoTradeOrderUnit> tradeOrderIdAndUnitTypeAndUnitMap = Maps.newHashMap() ;
|
|
|
+ if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(kwoTradeOrderUnits)){
|
|
|
+ tradeOrderIdAndUnitTypeAndUnitMap = kwoTradeOrderUnits.stream()
|
|
|
+ .peek(x -> x.setTradeOrderIdAndUnitType(tradeOrder.getId() + "-" + x.getUnitType()))
|
|
|
+ .collect(Collectors.toMap(KwoTradeOrderUnit::getTradeOrderIdAndUnitType, Function.identity(), (x, y) -> x));
|
|
|
+ }
|
|
|
+ //查询承运单位
|
|
|
+ List<RTransportEntVo> logisticsEnts = transportRemoteService.queryTransportEntByTradeOrderId(tradeOrder.getId());
|
|
|
+ //查询物流订单
|
|
|
+ List<KwtLogisticsOrderVO> kwtLogisticsOrderVOS = transportRemoteService.queryLogisticOrderByTradeId(tradeOrder.getId());
|
|
|
+ //物流订单id映射物流信息
|
|
|
+ Map<Long, KwtLogisticsOrderVO> logIdAndLogisticsOrderMap = Maps.newHashMap();
|
|
|
+ if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(kwtLogisticsOrderVOS)){
|
|
|
+ logIdAndLogisticsOrderMap = kwtLogisticsOrderVOS.stream()
|
|
|
+ .collect(Collectors.toMap(KwtLogisticsOrderVO::getId, Function.identity(), (x, y) -> x));
|
|
|
+ }
|
|
|
+ //根据物流订单查询运单
|
|
|
+ List<RWaybillSubOrderVo> rWaybillSubOrderVos = transportRemoteService.queryWaybillOrderByTradeOrderIds(Set.of(tradeOrder.getId()));
|
|
|
+ //将贸易订单id和运单进行映射
|
|
|
+ Map<Long, RWaybillSubOrderVo> tradeOrderIdAndSubOrderVoMap = Maps.newHashMap();
|
|
|
+ if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(rWaybillSubOrderVos)){
|
|
|
+ tradeOrderIdAndSubOrderVoMap = rWaybillSubOrderVos.stream().collect(Collectors.toMap(RWaybillSubOrderVo::getTradeId, Function.identity()
|
|
|
+ , (k1, k2) -> k1));
|
|
|
+ }
|
|
|
+
|
|
|
+ //查询贸易订单商品信息
|
|
|
+ KwoTradeOrderGoods tradeOrderGoods = tradeOrderGoodsRepository.queryByOrderId(tradeOrder.getId());
|
|
|
+ Long goodsId = Optional.ofNullable(tradeOrderGoods)
|
|
|
+ .map(KwoTradeOrderGoods::getGoodsId)
|
|
|
+ .orElse(null);
|
|
|
+ //更具商品id查询商品信息
|
|
|
+ KwpGoods goods = goodsInfoService.getGoodsById(goodsId);
|
|
|
+
|
|
|
+ //获取贸易订单地址
|
|
|
+ List<KwoTradeOrderAddress> tradeOrderAddresses = tradeOrderAddressRepository.queryByOrderId(tradeOrder.getId());
|
|
|
+ Map<String, KwoTradeOrderAddress> tradeOrderIdAndAddressMap = Maps.newHashMap();
|
|
|
+ if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(tradeOrderAddresses)){
|
|
|
+ tradeOrderIdAndAddressMap = tradeOrderAddresses.stream()
|
|
|
+ .peek(x -> x.setTradeOrderIdTypeKey(tradeOrder.getId() + "-" + x.getAddressType()))
|
|
|
+ .collect(Collectors.toMap(KwoTradeOrderAddress::getTradeOrderIdTypeKey, Function.identity(), (x, y) -> x));
|
|
|
+ }
|
|
|
+
|
|
|
+ //组装明细信息
|
|
|
+ return getTradeOrderDetailResp(tradeOrder, logisticsAndTradeOrder, tradeOrderIdAndUnitTypeAndUnitMap, logisticsEnts, kwtLogisticsOrderVOS, goods, tradeOrderIdAndAddressMap, tradeOrderIdAndSubOrderVoMap, logIdAndLogisticsOrderMap);
|
|
|
+ }
|
|
|
+
|
|
|
+ @NotNull
|
|
|
+ private static TradeOrderDetailResp getTradeOrderDetailResp(KwoTradeOrder tradeOrder, ContractLogisticsAndTradeOrderResDto logisticsAndTradeOrder, Map<String, KwoTradeOrderUnit> tradeOrderIdAndUnitTypeAndUnitMap, List<RTransportEntVo> logisticsEnts, List<KwtLogisticsOrderVO> kwtLogisticsOrderVOS, KwpGoods goods, Map<String, KwoTradeOrderAddress> tradeOrderIdAndAddressMap, Map<Long, RWaybillSubOrderVo> tradeOrderIdAndSubOrderVoMap, Map<Long, KwtLogisticsOrderVO> logIdAndLogisticsOrderMap) {
|
|
|
+ TradeOrderDetailResp tradeOrderDetailResp = new TradeOrderDetailResp();
|
|
|
+ //合同信息
|
|
|
+ setContractInfo(tradeOrderDetailResp, tradeOrder, logisticsAndTradeOrder);
|
|
|
+
|
|
|
+ //单位信息列表
|
|
|
+ setTradeOrderUnitInfo(tradeOrderIdAndUnitTypeAndUnitMap, tradeOrder, logisticsEnts, kwtLogisticsOrderVOS, tradeOrderDetailResp);
|
|
|
+
|
|
|
+ //商品信息
|
|
|
+ setGoodsInfo(goods, tradeOrder, tradeOrderDetailResp);
|
|
|
+
|
|
|
+ //卸货信息
|
|
|
+ setUnloadInfo(tradeOrderIdAndAddressMap, tradeOrder, tradeOrderDetailResp);
|
|
|
+ //履约信息
|
|
|
+ setPerform(tradeOrder, tradeOrderIdAndSubOrderVoMap, logIdAndLogisticsOrderMap, tradeOrderDetailResp);
|
|
|
+ tradeOrderDetailResp.setRemark(tradeOrder.getRemark());
|
|
|
+ return tradeOrderDetailResp;
|
|
|
+ }
|
|
|
+
|
|
|
+ private static void setPerform(KwoTradeOrder tradeOrder, Map<Long, RWaybillSubOrderVo> tradeOrderIdAndSubOrderVoMap, Map<Long, KwtLogisticsOrderVO> logIdAndLogisticsOrderMap, TradeOrderDetailResp tradeOrderDetailResp) {
|
|
|
+ TradeOrderDetailResp.TradeOrderPerformanceInfo tradeOrderPerformanceInfo = new TradeOrderDetailResp.TradeOrderPerformanceInfo();
|
|
|
+ tradeOrderPerformanceInfo.setPayType(String.valueOf(tradeOrder.getTrading()));
|
|
|
+ tradeOrderPerformanceInfo.setPayTypeDesc(DictEnum.getLabel(DictTypeEnum.TRADE_TYPE.getType(),
|
|
|
+ tradeOrder.getTrading()));
|
|
|
+ tradeOrderPerformanceInfo.setTransportType(String.valueOf(tradeOrder.getConsignmentWay()));
|
|
|
+ tradeOrderPerformanceInfo.setTransportTypeDesc(DictEnum.getLabel(DictTypeEnum.CONSIGNMENT_WAY.getType(),
|
|
|
+ String.valueOf(tradeOrder.getConsignmentWay())));
|
|
|
+ tradeOrderPerformanceInfo.setPriceType(String.valueOf(tradeOrder.getChargeType()));
|
|
|
+ tradeOrderPerformanceInfo.setPriceTypeDesc(DictEnum.getLabel(DictTypeEnum.CHARGING_TYPE.getType(),
|
|
|
+ String.valueOf(tradeOrder.getChargeType())));
|
|
|
+ RWaybillSubOrderVo rWaybillSubOrderVo = tradeOrderIdAndSubOrderVoMap.getOrDefault(tradeOrder.getId(),new RWaybillSubOrderVo());
|
|
|
+ List<RWaybillSubOrderVo.BillSubOrder> subOrders = rWaybillSubOrderVo.getSubOrders();
|
|
|
+ if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(subOrders)){
|
|
|
+
|
|
|
+ //累计装货量
|
|
|
+ double loadTotal = subOrders.stream().filter(x -> Objects.nonNull(x.getLoadAmount()))
|
|
|
+ .mapToDouble(x -> x.getLoadAmount().doubleValue()).sum();
|
|
|
+ double unloadTotal = subOrders.stream().filter(x -> Objects.nonNull(x.getUnloadAmount()))
|
|
|
+ .mapToDouble(x -> x.getUnloadAmount().doubleValue()).sum();
|
|
|
+ double loadAmount = 0.0 ;
|
|
|
+ if (org.apache.commons.lang3.StringUtils.equals(String.valueOf(tradeOrder.getTrading()),
|
|
|
+ DictEnum.CHARGING_TYPE_2.getValue())){
|
|
|
+ //已履约量
|
|
|
+ loadAmount = subOrders.stream().filter(x -> Objects.nonNull(x.getUnloadAmount()))
|
|
|
+ .mapToDouble(x -> x.getUnloadAmount().doubleValue()).sum();
|
|
|
+ }else if (org.apache.commons.lang3.StringUtils.equals(String.valueOf(tradeOrder.getTrading()),
|
|
|
+ DictEnum.CHARGING_TYPE_1.getValue())){
|
|
|
+ //已履约量
|
|
|
+ loadAmount = subOrders.stream().filter(x -> Objects.nonNull(x.getLoadAmount()))
|
|
|
+ .mapToDouble(x -> x.getLoadAmount().doubleValue()).sum();
|
|
|
+
|
|
|
+ }
|
|
|
+ tradeOrderPerformanceInfo.setLoadAmount(String.valueOf(loadAmount));
|
|
|
+
|
|
|
+ tradeOrderPerformanceInfo.setLoadTotal(String.valueOf(loadTotal));
|
|
|
+
|
|
|
+ tradeOrderPerformanceInfo.setUnloadTotal(String.valueOf(unloadTotal));
|
|
|
+ //按照物流id进行分组
|
|
|
+ Map<Long, List<RWaybillSubOrderVo.BillSubOrder>> logIdAndSubOrderVoMap =
|
|
|
+ subOrders.stream().collect(Collectors.groupingBy(RWaybillSubOrderVo.BillSubOrder::getLOrderId));
|
|
|
+ Map<Long, KwtLogisticsOrderVO> finalLogIdAndLogisticsOrderMap = logIdAndLogisticsOrderMap;
|
|
|
+ logIdAndSubOrderVoMap.forEach((logId, subOrderVos) -> {
|
|
|
+ KwtLogisticsOrderVO logisticsOrder = finalLogIdAndLogisticsOrderMap.getOrDefault(logId, new KwtLogisticsOrderVO());
|
|
|
+ BigDecimal price =
|
|
|
+ Optional.ofNullable(logisticsOrder).map(KwtLogisticsOrderVO::getPrice).orElse(BigDecimal.ZERO);
|
|
|
+ double sum = 0.0 ;
|
|
|
+ if (org.apache.commons.lang3.StringUtils.equals(String.valueOf(tradeOrder.getTrading()),
|
|
|
+ DictEnum.CHARGING_TYPE_2.getValue())){
|
|
|
+ //已履约量
|
|
|
+ sum = subOrderVos.stream().filter(x -> Objects.nonNull(x.getUnloadAmount()))
|
|
|
+ .mapToDouble(x -> x.getUnloadAmount().doubleValue()).sum();
|
|
|
+ }else if (org.apache.commons.lang3.StringUtils.equals(String.valueOf(tradeOrder.getTrading()),
|
|
|
+ DictEnum.CHARGING_TYPE_1.getValue())){
|
|
|
+ //已履约量
|
|
|
+ sum = subOrderVos.stream().filter(x -> Objects.nonNull(x.getLoadAmount()))
|
|
|
+ .mapToDouble(x -> x.getLoadAmount().doubleValue()).sum();
|
|
|
+
|
|
|
+ }
|
|
|
+ tradeOrderPerformanceInfo.setLoadAmountPrice(price.multiply(new BigDecimal(sum)).setScale(2,
|
|
|
+ RoundingMode.HALF_UP).toPlainString());
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ tradeOrderDetailResp.setTradeOrderPerformanceInfo(tradeOrderPerformanceInfo);
|
|
|
+ }
|
|
|
+
|
|
|
+ private static void setUnloadInfo(Map<String, KwoTradeOrderAddress> tradeOrderIdAndAddressMap, KwoTradeOrder tradeOrder, TradeOrderDetailResp tradeOrderDetailResp) {
|
|
|
+ TradeOrderDetailResp.TradeOrderUnloadInfo tradeOrderUnloadInfo = new TradeOrderDetailResp.TradeOrderUnloadInfo();
|
|
|
+ KwoTradeOrderAddress unloadAdd = tradeOrderIdAndAddressMap.getOrDefault(tradeOrder.getId() + "-" + AddressTypeEnum.TAKE.getCode(),
|
|
|
+ new KwoTradeOrderAddress());
|
|
|
+ tradeOrderUnloadInfo.setUnloadAddress(unloadAdd.getDetailAddress());
|
|
|
+ tradeOrderUnloadInfo.setUnloadContacts(unloadAdd.getContacts());
|
|
|
+ tradeOrderUnloadInfo.setUnloadContactsPhone(unloadAdd.getPhone());
|
|
|
+ tradeOrderDetailResp.setTradeOrderUnloadInfo(tradeOrderUnloadInfo);
|
|
|
+ }
|
|
|
+
|
|
|
+ private static void setGoodsInfo(KwpGoods goods, KwoTradeOrder tradeOrder, TradeOrderDetailResp tradeOrderDetailResp) {
|
|
|
+ TradeOrderDetailResp.TradeOrderGoodsInfo tradeOrderGoodsInfo = new TradeOrderDetailResp.TradeOrderGoodsInfo();
|
|
|
+ if (Objects.nonNull(goods)){
|
|
|
+ tradeOrderGoodsInfo.setGoodsId(String.valueOf(goods.getId()));
|
|
|
+ tradeOrderGoodsInfo.setGoodsName(goods.getName());
|
|
|
+ }
|
|
|
+ tradeOrderGoodsInfo.setUnitPrice(Objects.nonNull(tradeOrder.getPrice()) ? tradeOrder.getPrice().toPlainString() : null);
|
|
|
+ tradeOrderGoodsInfo.setOrderTotal(Objects.nonNull(tradeOrder.getAmount()) ? tradeOrder.getAmount().toPlainString() : null);
|
|
|
+ if (Objects.nonNull(tradeOrder.getPrice()) && Objects.nonNull(tradeOrder.getAmount())){
|
|
|
+ tradeOrderGoodsInfo.setOrderAmount(tradeOrder.getAmount().multiply(tradeOrder.getAmount()).setScale(2
|
|
|
+ , RoundingMode.HALF_UP).toPlainString());
|
|
|
+ }
|
|
|
+ tradeOrderDetailResp.setTradeOrderGoodsInfo(tradeOrderGoodsInfo);
|
|
|
+ }
|
|
|
+
|
|
|
+ private static void setTradeOrderUnitInfo(Map<String, KwoTradeOrderUnit> tradeOrderIdAndUnitTypeAndUnitMap, KwoTradeOrder tradeOrder, List<RTransportEntVo> logisticsEnts, List<KwtLogisticsOrderVO> kwtLogisticsOrderVOS, TradeOrderDetailResp tradeOrderDetailResp) {
|
|
|
+ TradeOrderDetailResp.TradeOrderUnitInfo tradeOrderUnitInfo = new TradeOrderDetailResp.TradeOrderUnitInfo();
|
|
|
+ KwoTradeOrderUnit purchaseUnit = tradeOrderIdAndUnitTypeAndUnitMap.getOrDefault(tradeOrder.getId() + "-" + OrderUnitTypeEnum.PURCHASE.getType(),
|
|
|
+ new KwoTradeOrderUnit());
|
|
|
+ tradeOrderUnitInfo.setPurchaseUnitId(String.valueOf(purchaseUnit.getId()));
|
|
|
+ tradeOrderUnitInfo.setPurchaseUnitName(purchaseUnit.getFirmName());
|
|
|
+ tradeOrderUnitInfo.setPurchaseContacts(purchaseUnit.getContacts());
|
|
|
+ tradeOrderUnitInfo.setPurchaseContactsPhone(purchaseUnit.getPhone());
|
|
|
+ KwoTradeOrderUnit supplyUnit =
|
|
|
+ tradeOrderIdAndUnitTypeAndUnitMap.getOrDefault(tradeOrder.getId() + "-" + OrderUnitTypeEnum.SALE.getType(),
|
|
|
+ new KwoTradeOrderUnit());
|
|
|
+ tradeOrderUnitInfo.setSupplyUnitId(String.valueOf(supplyUnit.getId()));
|
|
|
+ tradeOrderUnitInfo.setSupplyUnitName(supplyUnit.getFirmName());
|
|
|
+ tradeOrderUnitInfo.setSupplyContacts(supplyUnit.getContacts());
|
|
|
+ tradeOrderUnitInfo.setSupplyContactsPhone(supplyUnit.getPhone());
|
|
|
+ if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(logisticsEnts)){
|
|
|
+ logisticsEnts.forEach(l->{
|
|
|
+ tradeOrderUnitInfo.setCarriageUnitId(String.valueOf(l.getTransportEntId()));
|
|
|
+ tradeOrderUnitInfo.setCarriageUnitName(l.getTransportEntName());
|
|
|
+ tradeOrderUnitInfo.setCarriageContacts(l.getTransportContacts());
|
|
|
+ tradeOrderUnitInfo.setCarriageContactsPhone(l.getTransportContactsPhone());
|
|
|
+ tradeOrderUnitInfo.setCarriagePrice(Objects.nonNull(l.getTransportPrice())?
|
|
|
+ l.getTransportPrice().setScale(2, RoundingMode.HALF_UP).toPlainString():
|
|
|
+ null);
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ BigDecimal carriageCost = BigDecimal.ZERO;
|
|
|
+ if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(kwtLogisticsOrderVOS)){
|
|
|
+ carriageCost = kwtLogisticsOrderVOS.stream()
|
|
|
+ .map(order -> {
|
|
|
+ BigDecimal price = order.getPrice() != null ? order.getPrice() : BigDecimal.ZERO;
|
|
|
+ BigDecimal amount = order.getAmount() != null ? order.getAmount() : BigDecimal.ZERO;
|
|
|
+ return price.multiply(amount);
|
|
|
+ })
|
|
|
+ .reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
+
|
|
|
+ }
|
|
|
+ tradeOrderUnitInfo.setCarriageCost(carriageCost.setScale(2, RoundingMode.HALF_UP).toPlainString());
|
|
|
+ tradeOrderDetailResp.setTradeOrderUnitInfo(tradeOrderUnitInfo);
|
|
|
+ }
|
|
|
+
|
|
|
+ private static void setContractInfo(TradeOrderDetailResp tradeOrderDetailResp, KwoTradeOrder tradeOrder, ContractLogisticsAndTradeOrderResDto logisticsAndTradeOrder) {
|
|
|
+ tradeOrderDetailResp.setTradeOrderId(String.valueOf(tradeOrder.getId()));
|
|
|
+ TradeOrderDetailResp.TradeOrderContractInfo tradeOrderContractInfo = new TradeOrderDetailResp.TradeOrderContractInfo();
|
|
|
+ tradeOrderContractInfo.setContractName(logisticsAndTradeOrder.getContactName());
|
|
|
+ tradeOrderContractInfo.setContractNo(logisticsAndTradeOrder.getContractNo());
|
|
|
+ List<ContractLogisticsAndTradeOrderResDto.ContractLogisticsOrder> logisticsContracts = logisticsAndTradeOrder.getLogisticsContracts();
|
|
|
+ if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(logisticsContracts)){
|
|
|
+ List<TradeOrderDetailResp.LogisticsContract> logisticsContractList =
|
|
|
+ logisticsContracts.stream().map(logisticsContract -> {
|
|
|
+ TradeOrderDetailResp.LogisticsContract logisticsContract1 = new TradeOrderDetailResp.LogisticsContract();
|
|
|
+ logisticsContract1.setLogisticsContractName(logisticsContract.getLogisticsContractName());
|
|
|
+ logisticsContract1.setLogisticsContractNo(logisticsContract.getLogisticsContractNo());
|
|
|
+ return logisticsContract1;
|
|
|
+ }).collect(Collectors.toList());
|
|
|
+ tradeOrderContractInfo.setLogisticsContracts(logisticsContractList);
|
|
|
+ }
|
|
|
+ tradeOrderDetailResp.setTradeOrderContractInfo(tradeOrderContractInfo);
|
|
|
+ }
|
|
|
}
|