|
|
@@ -2296,23 +2296,68 @@ public class KwcContractTradeService {
|
|
|
throw new BusinessPlatfromException(ErrorCodeEnum.PARAM_ERROR, "商品id不能为空!");
|
|
|
}
|
|
|
|
|
|
- //查询供应商企业物流合同信息
|
|
|
+ //1. 查询供应商企业物流合同信息
|
|
|
List<KwcContractLogisticsUnit> contractLogisticsUnits = kwcContractLogisticsUnitRepository.queryByEntIdAndType(entId);
|
|
|
if (CollectionUtils.isEmpty(contractLogisticsUnits)) {
|
|
|
return Collections.emptyList();
|
|
|
}
|
|
|
Set<Long> unitContractIds = contractLogisticsUnits.stream().map(KwcContractLogisticsUnit::getContractId).collect(Collectors.toSet());
|
|
|
|
|
|
- //查询物流商品合同信息
|
|
|
- List<KwcContractLogisticsGoods> contractLogisticsGoods = kwcContractLogisticsGoodsRepository.queryByLogIdsAndGoodsId(unitContractIds, goodsId);
|
|
|
- if (CollectionUtils.isEmpty(contractLogisticsGoods)) {
|
|
|
+ //2. 查询手动派车物流合同主信息
|
|
|
+ List<KwcContractLogistics> contractLogisticsList = contractLogisticsRepository.queryBycontractIdList(unitContractIds);
|
|
|
+ if (CollectionUtils.isEmpty(contractLogisticsList)) {
|
|
|
return Collections.emptyList();
|
|
|
}
|
|
|
- List<Long> goodContractIds = contractLogisticsGoods.stream().map(KwcContractLogisticsGoods::getContractId).distinct().collect(Collectors.toList());
|
|
|
|
|
|
- //查询自动派车物流合同
|
|
|
- List<KwcContractLogistics> contractLogisticsList = contractLogisticsRepository.queryBycontractIdList(goodContractIds);
|
|
|
- return toLogisticsEntDtoVO(entId, contractLogisticsList);
|
|
|
+ // 3. 拆分合同:通用价格>0的直接保留,通用价格=0的需要校验商品id
|
|
|
+ List<Long> validContractIds = new ArrayList<>();
|
|
|
+ List<Long> needCheckGoodsContractIds = new ArrayList<>();
|
|
|
+
|
|
|
+ for (KwcContractLogistics contractLogistics : contractLogisticsList) {
|
|
|
+ if (contractLogistics.getCommonPrice().compareTo(BigDecimal.ZERO) > 0) {
|
|
|
+ //通用价格大于0,无需校验goodsIds
|
|
|
+ validContractIds.add(contractLogistics.getId());
|
|
|
+ } else {
|
|
|
+ // 通用价格=0,需要校验商品
|
|
|
+ needCheckGoodsContractIds.add(contractLogistics.getId());
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 4. 处理需要校验商品的合同ID
|
|
|
+ if (CollectionUtils.isNotEmpty(needCheckGoodsContractIds)) {
|
|
|
+ //查询物流商品合同信息
|
|
|
+ List<KwcContractLogisticsGoods> contractLogisticsGoods = kwcContractLogisticsGoodsRepository.queryByContractIds(unitContractIds);
|
|
|
+ if (CollectionUtils.isNotEmpty(contractLogisticsGoods)) {
|
|
|
+ // 按合同ID分组商品信息
|
|
|
+ Map<Long, List<KwcContractLogisticsGoods>> logisticsGoodsMap = contractLogisticsGoods.stream().collect(Collectors.groupingBy(KwcContractLogisticsGoods::getContractId));
|
|
|
+ for (Long contractId : needCheckGoodsContractIds) {
|
|
|
+ List<KwcContractLogisticsGoods> logisticsGoodList = logisticsGoodsMap.get(contractId);
|
|
|
+ // 提取当前合同下的所有商品ID
|
|
|
+ Set<Long> currentGoodsIds = logisticsGoodList.stream().map(KwcContractLogisticsGoods::getGoodsId).filter(Objects::nonNull).collect(Collectors.toSet());
|
|
|
+ // 校验目标商品ID是否包含
|
|
|
+ boolean isContains = currentGoodsIds.contains(goodsId);
|
|
|
+ if (isContains) {
|
|
|
+ validContractIds.add(contractId);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (CollectionUtils.isEmpty(validContractIds)) {
|
|
|
+ return Collections.emptyList();
|
|
|
+ }
|
|
|
+ //过滤满足商品数据
|
|
|
+ List<KwcContractLogistics> finalContractList = contractLogisticsList.stream()
|
|
|
+ .filter(contract -> validContractIds.contains(contract.getId()))
|
|
|
+ .collect(Collectors.toList());
|
|
|
+
|
|
|
+ //过滤有效期合同
|
|
|
+ List<KwcContractLogistics> filteredLogistics = finalContractList.stream().filter(Objects::nonNull)
|
|
|
+ .filter(con -> con.getStartTime() != null)
|
|
|
+ .filter(con -> {
|
|
|
+ return !con.getStartTime().after(new Date());
|
|
|
+ }).collect(Collectors.toList());
|
|
|
+
|
|
|
+ return toLogisticsEntDtoVO(entId, filteredLogistics);
|
|
|
}
|
|
|
|
|
|
|