|
|
@@ -1,22 +1,17 @@
|
|
|
package com.sckw.contract.dubbo;
|
|
|
|
|
|
-import com.google.common.collect.Lists;
|
|
|
+import com.alibaba.fastjson.JSON;
|
|
|
import com.google.common.collect.Sets;
|
|
|
import com.sckw.contract.api.RemoteContractService;
|
|
|
-import com.sckw.contract.api.model.dto.res.ContractCommonInfoResDto;
|
|
|
-import com.sckw.contract.api.model.dto.res.ContractLogisticsAndTradeOrderResDto;
|
|
|
-import com.sckw.contract.api.model.dto.res.ContractLogisticsOrderResDto;
|
|
|
-import com.sckw.contract.api.model.dto.res.EntInfo;
|
|
|
+import com.sckw.contract.api.model.dto.res.*;
|
|
|
import com.sckw.contract.dao.KwcContractLogisticsMapper;
|
|
|
import com.sckw.contract.dao.KwcContractLogisticsUnitMapper;
|
|
|
import com.sckw.contract.dao.KwcContractTradeMapper;
|
|
|
import com.sckw.contract.model.dto.res.QueryContractValidCountResDto;
|
|
|
-import com.sckw.contract.model.entity.KwcContractLogistics;
|
|
|
-import com.sckw.contract.model.entity.KwcContractLogisticsUnit;
|
|
|
-import com.sckw.contract.model.entity.KwcContractTrade;
|
|
|
-import com.sckw.contract.repository.KwcContractLogisticsRepository;
|
|
|
-import com.sckw.contract.repository.KwcContractTradeRepository;
|
|
|
+import com.sckw.contract.model.entity.*;
|
|
|
+import com.sckw.contract.repository.*;
|
|
|
import com.sckw.contract.service.KwcContractLogisticsUnitService;
|
|
|
+import com.sckw.core.exception.BusinessException;
|
|
|
import com.sckw.core.model.constant.Global;
|
|
|
import com.sckw.core.model.enums.ContractStatusEnum;
|
|
|
import com.sckw.core.model.enums.CooperateTypeEnum;
|
|
|
@@ -26,12 +21,15 @@ import com.sckw.system.api.RemoteSystemService;
|
|
|
import com.sckw.transport.api.dubbo.TransportRemoteService;
|
|
|
import com.sckw.transport.api.model.vo.LogisticContractVo;
|
|
|
import lombok.RequiredArgsConstructor;
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
|
import org.apache.dubbo.config.annotation.DubboReference;
|
|
|
import org.apache.dubbo.config.annotation.DubboService;
|
|
|
+import org.jetbrains.annotations.NotNull;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
|
|
import java.math.BigDecimal;
|
|
|
import java.util.*;
|
|
|
+import java.util.function.Function;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
|
@@ -41,6 +39,7 @@ import java.util.stream.Collectors;
|
|
|
*/
|
|
|
@DubboService(group = "design", version = "1.0.0")
|
|
|
@RequiredArgsConstructor
|
|
|
+@Slf4j
|
|
|
public class RemoteContractServiceImpl implements RemoteContractService {
|
|
|
|
|
|
@Autowired
|
|
|
@@ -62,6 +61,10 @@ public class RemoteContractServiceImpl implements RemoteContractService {
|
|
|
|
|
|
private final KwcContractTradeRepository kwcContractTradeRepository ;
|
|
|
private final KwcContractLogisticsRepository contractLogisticsRepository;
|
|
|
+ private final KwcContractTradeUnitRepository kwcContractTradeUnitRepository;
|
|
|
+ private final KwcContractTradeGoodsRepository kwcContractTradeGoodsRepository;
|
|
|
+ private final KwcContractLogisticsUnitRepository kwcContractLogisticsUnitRepository;
|
|
|
+ private final KwcContractLogisticsGoodsRepository kwcContractLogisticsGoodsRepository;
|
|
|
|
|
|
@Override
|
|
|
public Map<Long, ContractCommonInfoResDto> queryContractBaseInfo(List<Long> contractIds) {
|
|
|
@@ -240,6 +243,150 @@ public class RemoteContractServiceImpl implements RemoteContractService {
|
|
|
return contractLogisticsAndTradeOrderResDto;
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public List<ContractLogisticsOrderResDto> queryContractLogisticsOrder(LogisticsOrderDto logisticsOrderDto) {
|
|
|
+ log.info("查询物流合同请求:{}",JSON.toJSONString( logisticsOrderDto));
|
|
|
+
|
|
|
+ if (Objects.isNull(logisticsOrderDto.getGoodsId())) {
|
|
|
+ throw new BusinessException("商品id不能为空!");
|
|
|
+ }
|
|
|
+ if (Objects.isNull(logisticsOrderDto.getEntId())) {
|
|
|
+ throw new BusinessException("托运方企业id不能为空!");
|
|
|
+ }
|
|
|
+ //查询物流公司
|
|
|
+ List<KwcContractLogisticsUnit> contractLogistics =
|
|
|
+ kwcContractLogisticsUnitRepository.queryByEntId(logisticsOrderDto.getEntId());
|
|
|
+ if (org.apache.commons.collections4.CollectionUtils.isEmpty(contractLogistics)){
|
|
|
+ return Collections.emptyList();
|
|
|
+ }
|
|
|
+ //物流订单和类型组成唯一key
|
|
|
+ Map<String, KwcContractLogisticsUnit> contractLogisticsMap =
|
|
|
+ contractLogistics.stream().peek(c -> c.setContractIdUnitTypeKey(c.getContractId() + "_" + c.getUnitType()))
|
|
|
+ .collect(Collectors.toMap(KwcContractLogisticsUnit::getContractIdUnitTypeKey, Function.identity(), (x,
|
|
|
+ y) -> x));
|
|
|
+ //物流订单合id
|
|
|
+ Set<Long> logTradeContractIds =
|
|
|
+ contractLogistics.stream().map(KwcContractLogisticsUnit::getContractId).collect(Collectors.toSet());
|
|
|
+
|
|
|
+ //查询商品信息
|
|
|
+ List<KwcContractLogisticsGoods> kwcContractLogisticsGoods = kwcContractLogisticsGoodsRepository.queryByLogIdsAndGoodsId(logTradeContractIds,
|
|
|
+ logisticsOrderDto.getGoodsId());
|
|
|
+ if (org.apache.commons.collections4.CollectionUtils.isEmpty(kwcContractLogisticsGoods)){
|
|
|
+ return Collections.emptyList();
|
|
|
+ }
|
|
|
+ //合同id和商品映射
|
|
|
+ Map<Long, KwcContractLogisticsGoods> contractLogisticsGoodsMap =
|
|
|
+ kwcContractLogisticsGoods.stream().collect(Collectors.toMap(KwcContractLogisticsGoods::getContractId,
|
|
|
+ Function.identity(), (x, y) -> x));
|
|
|
+ Set<Long> logTradeContractIdList =
|
|
|
+ kwcContractLogisticsGoods.stream().map(KwcContractLogisticsGoods::getContractId).collect(Collectors.toSet());
|
|
|
+ //查询物流订单
|
|
|
+ List<KwcContractLogistics> logistics = contractLogisticsRepository.queryByLogisticContractIds(logTradeContractIdList);
|
|
|
+ if (CollectionUtils.isEmpty( logistics)){
|
|
|
+ return Collections.emptyList();
|
|
|
+ }
|
|
|
+ return logistics.stream()
|
|
|
+ .map(log -> getContractLogisticsOrderResDto(log, contractLogisticsMap, contractLogisticsGoodsMap))
|
|
|
+ .collect(Collectors.toList());
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ @NotNull
|
|
|
+ private static ContractLogisticsOrderResDto getContractLogisticsOrderResDto(KwcContractLogistics log, Map<String, KwcContractLogisticsUnit> contractLogisticsMap, Map<Long, KwcContractLogisticsGoods> contractLogisticsGoodsMap) {
|
|
|
+ ContractLogisticsOrderResDto contractLogisticsOrderResDto = new ContractLogisticsOrderResDto();
|
|
|
+ contractLogisticsOrderResDto.setId(log.getId());
|
|
|
+ contractLogisticsOrderResDto.setContactName(log.getName());
|
|
|
+ contractLogisticsOrderResDto.setContractNo(log.getContractNo());
|
|
|
+ contractLogisticsOrderResDto.setSigningWay(log.getSigningWay());
|
|
|
+ contractLogisticsOrderResDto.setStatus(log.getStatus());
|
|
|
+ KwcContractLogisticsUnit consignEnt = contractLogisticsMap.getOrDefault(log.getId() + "_" + CooperateTypeEnum.CONSIGN.getCode(),
|
|
|
+ new KwcContractLogisticsUnit());
|
|
|
+ KwcContractLogisticsUnit acceptCarriageEnt = contractLogisticsMap.getOrDefault(log.getId() + "_" + CooperateTypeEnum.CARRIAGE.getCode(),
|
|
|
+ new KwcContractLogisticsUnit());
|
|
|
+ contractLogisticsOrderResDto.setConsignEntId(consignEnt.getContractId());
|
|
|
+ contractLogisticsOrderResDto.setConsignEntName(consignEnt.getFirmName());
|
|
|
+ contractLogisticsOrderResDto.setAcceptCarriageEntId(acceptCarriageEnt.getContractId());
|
|
|
+ contractLogisticsOrderResDto.setAcceptCarriageEntName(acceptCarriageEnt.getFirmName());
|
|
|
+ KwcContractLogisticsGoods goods = contractLogisticsGoodsMap.getOrDefault(log.getId(),
|
|
|
+ new KwcContractLogisticsGoods());
|
|
|
+ contractLogisticsOrderResDto.setPrice(goods.getPrice());
|
|
|
+ return contractLogisticsOrderResDto;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<ContractTradeOrderInfo> queryContractTradeOrder(ContractTradeOrderDto contractTradeOrderDto) {
|
|
|
+ log.info("查询贸易合同订单,请求:{}", JSON.toJSONString(contractTradeOrderDto));
|
|
|
+ checkParam(contractTradeOrderDto.getGoodsId(), contractTradeOrderDto.getEntId(), contractTradeOrderDto.getEntType());
|
|
|
+ //查询贸易合同企业信息
|
|
|
+ List<KwcContractTradeUnit> tradeUnits = kwcContractTradeUnitRepository.queryByEntIdAndUnitType(contractTradeOrderDto.getEntId(),
|
|
|
+ contractTradeOrderDto.getEntType());
|
|
|
+ if (org.apache.commons.collections4.CollectionUtils.isEmpty(tradeUnits)){
|
|
|
+ return Collections.emptyList();
|
|
|
+ }
|
|
|
+ Set<Long> contractIds =
|
|
|
+ tradeUnits.stream().map(KwcContractTradeUnit::getContractId).collect(Collectors.toSet());
|
|
|
+ //查询商品信息
|
|
|
+ List<KwcContractTradeGoods> kwcContractGoods = kwcContractTradeGoodsRepository.queryByContractIdsAndGoodsId(contractIds,
|
|
|
+ contractTradeOrderDto.getGoodsId());
|
|
|
+ if (org.apache.commons.collections4.CollectionUtils.isEmpty(kwcContractGoods)){
|
|
|
+ return Collections.emptyList();
|
|
|
+ }
|
|
|
+ Set<Long> contractIdList = kwcContractGoods.stream()
|
|
|
+ .map(KwcContractTradeGoods::getContractId)
|
|
|
+ .collect(Collectors.toSet());
|
|
|
+ //查询贸易合同
|
|
|
+ List<KwcContractTrade> kwcContractTrades = kwcContractTradeRepository.queryByContractIds(contractIdList);
|
|
|
+ if (org.apache.commons.collections4.CollectionUtils.isEmpty(kwcContractTrades)){
|
|
|
+ return Collections.emptyList();
|
|
|
+ }
|
|
|
+ return kwcContractTrades.stream().map(RemoteContractServiceImpl::getContractTradeOrderInfo)
|
|
|
+ .collect(Collectors.toList());
|
|
|
+ }
|
|
|
+
|
|
|
+ private static void checkParam(Long contractTradeOrderDto, Long contractTradeOrderDto1, Integer contractTradeOrderDto2) {
|
|
|
+ if (Objects.isNull(contractTradeOrderDto)) {
|
|
|
+ throw new BusinessException("商品id不能为空!");
|
|
|
+ }
|
|
|
+ if (Objects.isNull(contractTradeOrderDto1)) {
|
|
|
+ throw new BusinessException("托运方企业id不能为空!");
|
|
|
+ }
|
|
|
+ if (Objects.isNull(contractTradeOrderDto2)) {
|
|
|
+ throw new BusinessException("企业类型不能为空!");
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @NotNull
|
|
|
+ private static ContractTradeOrderInfo getContractTradeOrderInfo(KwcContractTrade c) {
|
|
|
+ ContractTradeOrderInfo contractTradeOrderInfo = new ContractTradeOrderInfo();
|
|
|
+ contractTradeOrderInfo.setId(c.getId());
|
|
|
+ contractTradeOrderInfo.setEntId(c.getEntId());
|
|
|
+ contractTradeOrderInfo.setContractNo(c.getContractNo());
|
|
|
+ contractTradeOrderInfo.setName(c.getName());
|
|
|
+ contractTradeOrderInfo.setSigningWay(c.getSigningWay());
|
|
|
+ contractTradeOrderInfo.setTrading(c.getTrading());
|
|
|
+ contractTradeOrderInfo.setStartTime(c.getStartTime());
|
|
|
+ contractTradeOrderInfo.setEndTime(c.getEndTime());
|
|
|
+ contractTradeOrderInfo.setAmount(c.getAmount());
|
|
|
+ contractTradeOrderInfo.setPerformedAmount(c.getPerformedAmount());
|
|
|
+ contractTradeOrderInfo.setSigningUrl(c.getSigningUrl());
|
|
|
+ contractTradeOrderInfo.setSignedUrl(c.getSignedUrl());
|
|
|
+ contractTradeOrderInfo.setSigningNo(c.getSigningNo());
|
|
|
+ contractTradeOrderInfo.setContractPid(c.getContractPid());
|
|
|
+ contractTradeOrderInfo.setRemark(c.getRemark());
|
|
|
+ contractTradeOrderInfo.setStatus(c.getStatus());
|
|
|
+ contractTradeOrderInfo.setCreateBy(c.getCreateBy());
|
|
|
+ contractTradeOrderInfo.setCreateTime(c.getCreateTime());
|
|
|
+ contractTradeOrderInfo.setUpdateBy(c.getUpdateBy());
|
|
|
+ contractTradeOrderInfo.setUpdateTime(c.getUpdateTime());
|
|
|
+ contractTradeOrderInfo.setDelFlag(c.getDelFlag());
|
|
|
+ contractTradeOrderInfo.setBusinessId(c.getBusinessId());
|
|
|
+ contractTradeOrderInfo.setSettlement(c.getSettlement());
|
|
|
+ contractTradeOrderInfo.setConsignment(c.getConsignment());
|
|
|
+ contractTradeOrderInfo.setUnloadWay(c.getUnloadWay());
|
|
|
+ contractTradeOrderInfo.setSalesmanId(c.getSalesmanId());
|
|
|
+ contractTradeOrderInfo.setSalesmanPhone(c.getSalesmanPhone());
|
|
|
+ return contractTradeOrderInfo;
|
|
|
+ }
|
|
|
|
|
|
|
|
|
private ContractCommonInfoResDto fillContractLogistics(KwcContractLogistics kwcContractLogistics) {
|