|
|
@@ -25,10 +25,7 @@ import com.sckw.core.common.enums.enums.DictTypeEnum;
|
|
|
import com.sckw.core.exception.BusinessException;
|
|
|
import com.sckw.core.exception.SystemException;
|
|
|
import com.sckw.core.model.constant.Global;
|
|
|
-import com.sckw.core.model.enums.ContractStatusEnum;
|
|
|
-import com.sckw.core.model.enums.ContractTrackEnum;
|
|
|
-import com.sckw.core.model.enums.CooperateTypeEnum;
|
|
|
-import com.sckw.core.model.enums.EntTypeEnum;
|
|
|
+import com.sckw.core.model.enums.*;
|
|
|
import com.sckw.core.model.page.PageHelperUtil;
|
|
|
import com.sckw.core.model.page.PageResult;
|
|
|
import com.sckw.core.utils.*;
|
|
|
@@ -38,6 +35,7 @@ import com.sckw.core.web.response.result.PageDataResult;
|
|
|
import com.sckw.excel.utils.ExcelUtil;
|
|
|
import com.sckw.order.api.dubbo.TradeOrderInfoService;
|
|
|
import com.sckw.order.api.model.ContractSignCompletedParam;
|
|
|
+import com.sckw.order.api.model.OrderDetailVo;
|
|
|
import com.sckw.product.api.dubbo.GoodsInfoService;
|
|
|
import com.sckw.product.api.model.KwpGoods;
|
|
|
import com.sckw.stream.enums.MessageEnum;
|
|
|
@@ -46,6 +44,7 @@ import com.sckw.system.api.RemoteSystemService;
|
|
|
import com.sckw.system.api.RemoteUserService;
|
|
|
import com.sckw.system.api.model.dto.res.*;
|
|
|
import com.sckw.transport.api.dubbo.TransportRemoteService;
|
|
|
+import com.sckw.transport.api.model.vo.RWaybillSubOrderVo;
|
|
|
import jakarta.servlet.http.HttpServletResponse;
|
|
|
import jakarta.validation.Valid;
|
|
|
import lombok.RequiredArgsConstructor;
|
|
|
@@ -57,8 +56,8 @@ import org.springframework.beans.factory.annotation.Value;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
-import javax.xml.crypto.dsig.TransformService;
|
|
|
import java.math.BigDecimal;
|
|
|
+import java.math.RoundingMode;
|
|
|
import java.util.*;
|
|
|
import java.util.function.Function;
|
|
|
import java.util.stream.Collectors;
|
|
|
@@ -1379,6 +1378,16 @@ public class KwcContractTradeService {
|
|
|
KwcContractTradeOrder kwcContractTradeOrder =
|
|
|
kwcContractTradeOrderRepository.queryByContractId(kwcContractTrade.getId());
|
|
|
|
|
|
+ //根据贸易订单号查询贸易订单信息
|
|
|
+ OrderDetailVo orderDetailVo = tradeOrderInfoService.queryByTradeOrderId(kwcContractTrade.getId());
|
|
|
+ //查询运单信息
|
|
|
+ List<RWaybillSubOrderVo> rWaybillSubOrderVos = transportRemoteService.queryWaybillOrderByTradeOrderIds(Set.of(kwcContractTrade.getId()));
|
|
|
+ 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));
|
|
|
+ }
|
|
|
+
|
|
|
//查询物流合同
|
|
|
List<KwcContractLogisticsUnit> kwcContractLogisticsUnits = kwcContractLogisticsUnitRepository.queryByContractId(kwcContractTrade.getId());
|
|
|
//合同id和单位类型组合成key映射物流对象
|
|
|
@@ -1411,7 +1420,10 @@ public class KwcContractTradeService {
|
|
|
contractDetailResp.setGoodsInfo(tradeGoodsInfos);
|
|
|
}
|
|
|
//获取关联贸易订单
|
|
|
- ContractDetailResp.AssociatedOrder associatedOrder = getAssociateOrder(kwcContractTradeOrder, ctTypeKeyAndUnitMap, kwcContractTrade, contractIdUnitTypeKeyAndUnitMap, goodsIdAndGoodsMap, contractIdGoodsIdKeyAndGoodsMap);
|
|
|
+ ContractDetailResp.AssociatedOrder associatedOrder = getAssociateOrder(kwcContractTradeOrder,orderDetailVo,
|
|
|
+ ctTypeKeyAndUnitMap,
|
|
|
+ kwcContractTrade, contractIdUnitTypeKeyAndUnitMap, goodsIdAndGoodsMap,
|
|
|
+ contractIdGoodsIdKeyAndGoodsMap,tradeOrderIdAndSubOrderVoMap);
|
|
|
contractDetailResp.setAssociatedOrder(associatedOrder);
|
|
|
|
|
|
contractDetailResp.setRemark(kwcContractTrade.getRemark());
|
|
|
@@ -1419,7 +1431,10 @@ public class KwcContractTradeService {
|
|
|
return contractDetailResp;
|
|
|
}
|
|
|
|
|
|
- private static ContractDetailResp.AssociatedOrder getAssociateOrder(KwcContractTradeOrder kwcContractTradeOrder, Map<String, KwcContractTradeUnit> ctTypeKeyAndUnitMap, KwcContractTrade kwcContractTrade, Map<String, KwcContractLogisticsUnit> contractIdUnitTypeKeyAndUnitMap, Map<Long, KwpGoods> goodsIdAndGoodsMap, Map<String, KwcContractLogisticsGoods> contractIdGoodsIdKeyAndGoodsMap) {
|
|
|
+ private static ContractDetailResp.AssociatedOrder getAssociateOrder(KwcContractTradeOrder kwcContractTradeOrder,OrderDetailVo orderDetailVo, Map<String,
|
|
|
+ KwcContractTradeUnit> ctTypeKeyAndUnitMap, KwcContractTrade kwcContractTrade, Map<String, KwcContractLogisticsUnit> contractIdUnitTypeKeyAndUnitMap,
|
|
|
+ Map<Long, KwpGoods> goodsIdAndGoodsMap, Map<String, KwcContractLogisticsGoods> contractIdGoodsIdKeyAndGoodsMap
|
|
|
+ ,Map<Long, RWaybillSubOrderVo> tradeOrderIdAndSubOrderVoMap) {
|
|
|
ContractDetailResp.AssociatedOrder associatedOrder = new ContractDetailResp.AssociatedOrder();
|
|
|
if (Objects.nonNull(kwcContractTradeOrder)){
|
|
|
associatedOrder.setOrderId(kwcContractTradeOrder.getOrderId());
|
|
|
@@ -1449,25 +1464,50 @@ public class KwcContractTradeService {
|
|
|
associatedOrder.setTransportEntId(logisticsCarrigeUnit.getEntId());
|
|
|
associatedOrder.setTransportEntName(logisticsCarrigeUnit.getFirmName());
|
|
|
}
|
|
|
+ OrderDetailVo.GoodsInfo goodsInfo = orderDetailVo.getGoodsInfo();
|
|
|
+ if (Objects.nonNull(goodsInfo)){
|
|
|
+ associatedOrder.setGoodsId(goodsInfo.getGoodsId());
|
|
|
+ KwpGoods goods = goodsIdAndGoodsMap.getOrDefault(goodsInfo.getGoodsId(), new KwpGoods());
|
|
|
+ associatedOrder.setGoodsName(goods.getName());
|
|
|
+ }
|
|
|
|
|
|
|
|
|
- associatedOrder.setGoodsId(kwcContractTradeOrder.getGoodsId());
|
|
|
- KwpGoods goods = goodsIdAndGoodsMap.getOrDefault(kwcContractTradeOrder.getGoodsId(), new KwpGoods());
|
|
|
- associatedOrder.setGoodsName(goods.getName());
|
|
|
- associatedOrder.setBillingWay(kwcContractTradeOrder.getBillingWay());
|
|
|
+ associatedOrder.setBillingWay(orderDetailVo.getChargeType());
|
|
|
associatedOrder.setBillingWayDesc(DictEnum.getLabel(DictTypeEnum.CHARGING_TYPE.getType(),
|
|
|
- String.valueOf(kwcContractTradeOrder.getBillingWay())));
|
|
|
- associatedOrder.setAmount(Objects.nonNull(kwcContractTradeOrder.getAmount()) ?
|
|
|
- kwcContractTradeOrder.getAmount().toPlainString() : null);
|
|
|
- associatedOrder.setLoadAmount(Objects.nonNull(kwcContractTradeOrder.getLoadAmount()) ?
|
|
|
- kwcContractTradeOrder.getLoadAmount().toPlainString() : null);
|
|
|
- associatedOrder.setUnloadAmount(Objects.nonNull(kwcContractTradeOrder.getUnloadAmount()) ?
|
|
|
- kwcContractTradeOrder.getUnloadAmount().toPlainString() : null);
|
|
|
- KwcContractLogisticsGoods logisticsGoods =
|
|
|
- contractIdGoodsIdKeyAndGoodsMap.getOrDefault(kwcContractTradeOrder.getContractId() + "-" + kwcContractTradeOrder.getGoodsId(), new KwcContractLogisticsGoods());
|
|
|
- associatedOrder.setTransportPrice(Objects.nonNull(logisticsGoods.getPrice()) ? logisticsGoods.getPrice().toPlainString() : null);
|
|
|
- associatedOrder.setLoadAddress(kwcContractTradeOrder.getLoadAddress());
|
|
|
- associatedOrder.setUnloadAddress(kwcContractTradeOrder.getUnloadAddress());
|
|
|
+ String.valueOf(orderDetailVo.getChargeType())));
|
|
|
+ associatedOrder.setAmount(Objects.nonNull(orderDetailVo.getAmount()) ?
|
|
|
+ orderDetailVo.getAmount().toPlainString() : null);
|
|
|
+ RWaybillSubOrderVo rWaybillSubOrderVo = tradeOrderIdAndSubOrderVoMap.get(kwcContractTrade.getId());
|
|
|
+ List<RWaybillSubOrderVo.BillSubOrder> subOrders = rWaybillSubOrderVo.getSubOrders();
|
|
|
+
|
|
|
+ if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(subOrders)){
|
|
|
+ String loadAmount = subOrders.stream()
|
|
|
+ .map(RWaybillSubOrderVo.BillSubOrder::getLoadAmount)
|
|
|
+ .filter(Objects::nonNull)
|
|
|
+ .reduce(BigDecimal.ZERO, BigDecimal::add).toPlainString();
|
|
|
+ associatedOrder.setLoadAmount(loadAmount);
|
|
|
+ String unloadAmount = subOrders.stream()
|
|
|
+ .map(RWaybillSubOrderVo.BillSubOrder::getUnloadAmount)
|
|
|
+ .filter(Objects::nonNull)
|
|
|
+ .reduce(BigDecimal.ZERO, BigDecimal::add).toPlainString();
|
|
|
+ associatedOrder.setUnloadAmount(unloadAmount);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ List<OrderDetailVo.AddressInfo> addressInfos = orderDetailVo.getAddressInfo();
|
|
|
+ Map<String, OrderDetailVo.AddressInfo> tradeOrderIdAndUnitTypeKeyAndUnitMap = Maps.newHashMap() ;
|
|
|
+ if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(addressInfos)){
|
|
|
+ tradeOrderIdAndUnitTypeKeyAndUnitMap =
|
|
|
+ addressInfos.stream().peek(x -> x.setTradeOrderIdTypeKey(x.getTOrderId() + "-" + x.getAddressType()))
|
|
|
+ .collect(Collectors.toMap(OrderDetailVo.AddressInfo::getTradeOrderIdTypeKey, Function.identity(), (x, y) -> x));
|
|
|
+ }
|
|
|
+
|
|
|
+ associatedOrder.setTransportPrice(Objects.nonNull(orderDetailVo.getPrice()) ?
|
|
|
+ orderDetailVo.getPrice().setScale(2, RoundingMode.HALF_UP).toPlainString() : null);
|
|
|
+ OrderDetailVo.AddressInfo loadAdd = tradeOrderIdAndUnitTypeKeyAndUnitMap.getOrDefault(kwcContractTradeOrder.getContractId() + "-" + AddressTypeEnum.SHIPMENT.getCode(), new OrderDetailVo.AddressInfo());
|
|
|
+ associatedOrder.setLoadAddress(loadAdd.getDetailAddress());
|
|
|
+ OrderDetailVo.AddressInfo unloadAdd = tradeOrderIdAndUnitTypeKeyAndUnitMap.getOrDefault(kwcContractTradeOrder.getContractId() + "-" + AddressTypeEnum.SHIPMENT.getCode(), new OrderDetailVo.AddressInfo());
|
|
|
+ associatedOrder.setUnloadAddress(unloadAdd.getDetailAddress());
|
|
|
}
|
|
|
return associatedOrder;
|
|
|
}
|