|
@@ -4,12 +4,15 @@ import com.alibaba.fastjson.JSON;
|
|
|
import com.alibaba.fastjson.JSONArray;
|
|
import com.alibaba.fastjson.JSONArray;
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
-import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
|
|
import com.github.pagehelper.PageHelper;
|
|
import com.github.pagehelper.PageHelper;
|
|
|
import com.github.pagehelper.PageInfo;
|
|
import com.github.pagehelper.PageInfo;
|
|
|
import com.google.common.collect.Lists;
|
|
import com.google.common.collect.Lists;
|
|
|
import com.google.common.collect.Maps;
|
|
import com.google.common.collect.Maps;
|
|
|
import com.google.common.collect.Sets;
|
|
import com.google.common.collect.Sets;
|
|
|
|
|
+import com.sckw.contract.api.model.dto.res.ContractLogisticsOrderResDto;
|
|
|
|
|
+import com.sckw.contract.api.model.dto.res.ContractTradeOrderDto;
|
|
|
|
|
+import com.sckw.contract.api.model.dto.res.ContractTradeOrderInfo;
|
|
|
|
|
+import com.sckw.contract.api.model.dto.res.LogisticsOrderDto;
|
|
|
import com.sckw.contract.dao.KwcContractTradeMapper;
|
|
import com.sckw.contract.dao.KwcContractTradeMapper;
|
|
|
import com.sckw.contract.model.dto.req.QueryListReqDto;
|
|
import com.sckw.contract.model.dto.req.QueryListReqDto;
|
|
|
import com.sckw.contract.model.dto.res.QueryListResDto;
|
|
import com.sckw.contract.model.dto.res.QueryListResDto;
|
|
@@ -97,6 +100,7 @@ public class KwcContractTradeService {
|
|
|
private final KwcContractTradeOrderRepository kwcContractTradeOrderRepository;
|
|
private final KwcContractTradeOrderRepository kwcContractTradeOrderRepository;
|
|
|
private final KwcContractLogisticsUnitRepository kwcContractLogisticsUnitRepository;
|
|
private final KwcContractLogisticsUnitRepository kwcContractLogisticsUnitRepository;
|
|
|
private final KwcContractLogisticsGoodsRepository kwcContractLogisticsGoodsRepository;
|
|
private final KwcContractLogisticsGoodsRepository kwcContractLogisticsGoodsRepository;
|
|
|
|
|
+ private final KwcContractLogisticsRepository contractLogisticsRepository;
|
|
|
|
|
|
|
|
@DubboReference(version = "1.0.0", group = "design", check = false)
|
|
@DubboReference(version = "1.0.0", group = "design", check = false)
|
|
|
private RemoteSystemService remoteSystemService;
|
|
private RemoteSystemService remoteSystemService;
|
|
@@ -1633,4 +1637,165 @@ public class KwcContractTradeService {
|
|
|
queryListResVo.setSignTime(t.getSignTime());
|
|
queryListResVo.setSignTime(t.getSignTime());
|
|
|
return queryListResVo;
|
|
return queryListResVo;
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ 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();
|
|
|
|
|
+ }
|
|
|
|
|
+ //物流订单合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();
|
|
|
|
|
+ }
|
|
|
|
|
+ //查询企业
|
|
|
|
|
+ List<KwcContractLogisticsUnit> units = kwcContractLogisticsUnitRepository.queryByContractIds(logTradeContractIdList);
|
|
|
|
|
+ //物流订单和类型组成唯一key
|
|
|
|
|
+ Map<String, KwcContractLogisticsUnit> contractLogisticsMap = Maps.newHashMap();
|
|
|
|
|
+ if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(units)){
|
|
|
|
|
+ contractLogisticsMap = units.stream()
|
|
|
|
|
+ .collect(Collectors.toMap(c -> c.getContractId() + "_" + c.getUnitType(),
|
|
|
|
|
+ Function.identity(), (x, y) -> x));
|
|
|
|
|
+ }
|
|
|
|
|
+ Map<String, KwcContractLogisticsUnit> finalContractLogisticsMap = contractLogisticsMap;
|
|
|
|
|
+ return logistics.stream()
|
|
|
|
|
+ .filter(log -> Objects.equals(log.getStatus(),ContractStatusEnum.SIGNED.getCode()))
|
|
|
|
|
+ .map(log -> getContractLogisticsOrderResDto(log, finalContractLogisticsMap, 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;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ 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();
|
|
|
|
|
+ }
|
|
|
|
|
+ Map<String, KwcContractTradeUnit> conTractTradeUnitMap =
|
|
|
|
|
+ tradeUnits.stream().collect(Collectors.toMap(x -> x.getContractId() +
|
|
|
|
|
+ "_" + x.getUnitType(), Function.identity(),
|
|
|
|
|
+ (x, y) -> x));
|
|
|
|
|
+ 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()
|
|
|
|
|
+ .filter(x->Objects.equals(x.getStatus(), ContractStatusEnum.SIGNED.getCode()))
|
|
|
|
|
+ .map(KwcContractTradeGoods::getContractId)
|
|
|
|
|
+ .collect(Collectors.toSet());
|
|
|
|
|
+ //查询贸易合同
|
|
|
|
|
+ List<KwcContractTrade> kwcContractTrades = kwcContractTradeRepository.findByContractIds(contractIdList);
|
|
|
|
|
+ if (org.apache.commons.collections4.CollectionUtils.isEmpty(kwcContractTrades)){
|
|
|
|
|
+ return Collections.emptyList();
|
|
|
|
|
+ }
|
|
|
|
|
+ return kwcContractTrades.stream()
|
|
|
|
|
+ .map(x-> getContractTradeOrderInfo(x, conTractTradeUnitMap,contractTradeOrderDto.getEntType()))
|
|
|
|
|
+ .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, Map<String,
|
|
|
|
|
+ KwcContractTradeUnit> conTractTradeUnitMap,Integer entType) {
|
|
|
|
|
+ ContractTradeOrderInfo contractTradeOrderInfo = new ContractTradeOrderInfo();
|
|
|
|
|
+ contractTradeOrderInfo.setId(c.getId());
|
|
|
|
|
+ KwcContractTradeUnit unit = conTractTradeUnitMap.getOrDefault(c.getId() + "_" + entType,
|
|
|
|
|
+ new KwcContractTradeUnit());
|
|
|
|
|
+ contractTradeOrderInfo.setEntId(unit.getEntId());
|
|
|
|
|
+ contractTradeOrderInfo.setContractNo(unit.getFirmName());
|
|
|
|
|
+ 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;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
}
|
|
}
|