|
|
@@ -29,10 +29,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.*;
|
|
|
@@ -50,6 +47,7 @@ import com.sckw.system.api.model.dto.res.EntCacheResDto;
|
|
|
import com.sckw.system.api.model.dto.res.KwsUserResDto;
|
|
|
import com.sckw.system.api.model.dto.res.SysDictResDto;
|
|
|
import com.sckw.system.api.model.dto.res.UserCacheResDto;
|
|
|
+import com.sckw.transport.api.dubbo.TransportRemoteService;
|
|
|
import com.sckw.transport.api.model.vo.RWaybillSubOrderVo;
|
|
|
import jakarta.servlet.http.HttpServletResponse;
|
|
|
import lombok.RequiredArgsConstructor;
|
|
|
@@ -108,6 +106,9 @@ public class KwcContractLogisticsService {
|
|
|
@DubboReference(version = "1.0.0", group = "design", check = false)
|
|
|
private GoodsInfoService goodsInfoService;
|
|
|
|
|
|
+ @DubboReference(version = "1.0.0", group = "design", check = false)
|
|
|
+ private TransportRemoteService transportRemoteService;
|
|
|
+
|
|
|
//销售合同
|
|
|
@Value(value = "${jumpUrl.saleSendContract}")
|
|
|
private String saleSendContract;
|
|
|
@@ -1115,71 +1116,106 @@ public class KwcContractLogisticsService {
|
|
|
Function.identity(), (x, y) -> x));
|
|
|
}
|
|
|
|
|
|
+ // 根据物流合同查询运单
|
|
|
+ List<RWaybillSubOrderVo> rWaybillSubOrderVos = transportRemoteService.queryWaybillOrderByLogContractIds(contractIds);
|
|
|
+ Map<Long, RWaybillSubOrderVo> logTradeOrderIdAndWaybillMap = Maps.newHashMap();
|
|
|
+ if (CollectionUtils.isNotEmpty(rWaybillSubOrderVos)){
|
|
|
+ logTradeOrderIdAndWaybillMap = rWaybillSubOrderVos.stream()
|
|
|
+ .collect(Collectors.toMap(RWaybillSubOrderVo::getLogContractId, Function.identity(), (x, y) -> x));
|
|
|
+ }
|
|
|
+
|
|
|
Map<Long, UserCacheResDto> finalLongUserCacheResDtoMap = longUserCacheResDtoMap;
|
|
|
Map<String, KwcContractLogisticsUnit> finalContractUniTypeAndUnitMap = contractUniTypeAndUnitMap;
|
|
|
Map<Long, List<KwcContractLogisticsGoods>> finalContractIdAndGoodsMap = contractIdAndGoodsMap;
|
|
|
- List<QueryLogisticListResp> resp = records.stream().map(r -> {
|
|
|
- QueryLogisticListResp queryLogisticListResp = new QueryLogisticListResp();
|
|
|
- queryLogisticListResp.setId(r.getId());
|
|
|
- queryLogisticListResp.setContractStatus(r.getStatus());
|
|
|
- queryLogisticListResp.setContractStatusDesc(ContractStatusEnum.getNameByCode(r.getStatus()));
|
|
|
- KwcContractLogisticsUnit logisticsUnit = finalContractUniTypeAndUnitMap.get(r.getId() + "-" + CooperateTypeEnum.CONSIGN.getCode());
|
|
|
- if (Objects.nonNull(logisticsUnit)){
|
|
|
- queryLogisticListResp.setConsignUnit(String.valueOf(logisticsUnit.getEntId()));
|
|
|
- queryLogisticListResp.setConsignUnitName(logisticsUnit.getFirmName());
|
|
|
- }
|
|
|
- KwcContractLogisticsUnit carriageUnit =
|
|
|
- finalContractUniTypeAndUnitMap.get(r.getId() + "-" + CooperateTypeEnum.CARRIAGE.getCode());
|
|
|
- if (Objects.nonNull(carriageUnit)){
|
|
|
- queryLogisticListResp.setCarriageUnit(String.valueOf(carriageUnit.getEntId()));
|
|
|
- queryLogisticListResp.setCarriageUnitName(carriageUnit.getFirmName());
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- queryLogisticListResp.setContractCode(r.getContractNo());
|
|
|
- queryLogisticListResp.setContractName(r.getName());
|
|
|
- queryLogisticListResp.setSignWay(r.getSigningWay());
|
|
|
- queryLogisticListResp.setSignWayDesc(DictEnum.getLabel(DictTypeEnum.SIGNING_TYPE.getType(),
|
|
|
- String.valueOf( r.getSigningWay())));
|
|
|
- queryLogisticListResp.setContractTransportAmount(Objects.nonNull(r.getAmount())?
|
|
|
- r.getAmount().toPlainString():null);
|
|
|
- queryLogisticListResp.setPerformedAmount(Objects.nonNull(r.getPerformedAmount())
|
|
|
- ? r.getPerformedAmount().toPlainString() : null);
|
|
|
- List<KwcContractLogisticsGoods> goods = finalContractIdAndGoodsMap.get(r.getId());
|
|
|
- if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(goods)){
|
|
|
- boolean b = goods.stream().anyMatch(g -> Objects.isNull(g.getAmount()));
|
|
|
- if (b){
|
|
|
- queryLogisticListResp.setContractTransportAmount(null);
|
|
|
- }else {
|
|
|
- BigDecimal totalTransportAmount = goods.stream()
|
|
|
- .map(KwcContractLogisticsGoods::getAmount)
|
|
|
- .filter(Objects::nonNull)
|
|
|
- .reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
- queryLogisticListResp.setTotalTransportAmount(totalTransportAmount.setScale(2, RoundingMode.HALF_UP).toPlainString());
|
|
|
- }
|
|
|
-
|
|
|
+ Map<Long, RWaybillSubOrderVo> finalLogTradeOrderIdAndWaybillMap = logTradeOrderIdAndWaybillMap;
|
|
|
+ List<QueryLogisticListResp> resp = records.stream()
|
|
|
+ .map(r -> getQueryLogisticListResp(r, finalContractUniTypeAndUnitMap, finalContractIdAndGoodsMap, finalLongUserCacheResDtoMap, finalLogTradeOrderIdAndWaybillMap))
|
|
|
+ .collect(Collectors.toList());
|
|
|
|
|
|
- }
|
|
|
+ return PageDataResult.of(page, resp);
|
|
|
+ }
|
|
|
|
|
|
+ @NotNull
|
|
|
+ private static QueryLogisticListResp getQueryLogisticListResp(KwcContractLogistics r,
|
|
|
+ Map<String, KwcContractLogisticsUnit> finalContractUniTypeAndUnitMap,
|
|
|
+ Map<Long, List<KwcContractLogisticsGoods>> finalContractIdAndGoodsMap,
|
|
|
+ Map<Long, UserCacheResDto> finalLongUserCacheResDtoMap,
|
|
|
+ Map<Long, RWaybillSubOrderVo> logTradeOrderIdAndWaybillMap) {
|
|
|
+ QueryLogisticListResp queryLogisticListResp = new QueryLogisticListResp();
|
|
|
+ queryLogisticListResp.setId(r.getId());
|
|
|
+ queryLogisticListResp.setContractStatus(r.getStatus());
|
|
|
+ queryLogisticListResp.setContractStatusDesc(ContractStatusEnum.getNameByCode(r.getStatus()));
|
|
|
+ KwcContractLogisticsUnit logisticsUnit = finalContractUniTypeAndUnitMap.get(r.getId() + "-" + CooperateTypeEnum.CONSIGN.getCode());
|
|
|
+ if (Objects.nonNull(logisticsUnit)){
|
|
|
+ queryLogisticListResp.setConsignUnit(String.valueOf(logisticsUnit.getEntId()));
|
|
|
+ queryLogisticListResp.setConsignUnitName(logisticsUnit.getFirmName());
|
|
|
+ }
|
|
|
+ KwcContractLogisticsUnit carriageUnit =
|
|
|
+ finalContractUniTypeAndUnitMap.get(r.getId() + "-" + CooperateTypeEnum.CARRIAGE.getCode());
|
|
|
+ if (Objects.nonNull(carriageUnit)){
|
|
|
+ queryLogisticListResp.setCarriageUnit(String.valueOf(carriageUnit.getEntId()));
|
|
|
+ queryLogisticListResp.setCarriageUnitName(carriageUnit.getFirmName());
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ queryLogisticListResp.setContractCode(r.getContractNo());
|
|
|
+ queryLogisticListResp.setContractName(r.getName());
|
|
|
+ queryLogisticListResp.setSignWay(r.getSigningWay());
|
|
|
+ queryLogisticListResp.setSignWayDesc(DictEnum.getLabel(DictTypeEnum.SIGNING_TYPE.getType(),
|
|
|
+ String.valueOf( r.getSigningWay())));
|
|
|
+
|
|
|
+ queryLogisticListResp.setPerformedAmount(Objects.nonNull(r.getPerformedAmount())
|
|
|
+ ? r.getPerformedAmount().toPlainString() : null);
|
|
|
+ List<KwcContractLogisticsGoods> goods = finalContractIdAndGoodsMap.get(r.getId());
|
|
|
+ if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(goods)){
|
|
|
+ boolean b = goods.stream().anyMatch(g -> Objects.isNull(g.getAmount()));
|
|
|
+ if (b){
|
|
|
+ queryLogisticListResp.setContractTransportAmount(null);
|
|
|
+ }else {
|
|
|
+ BigDecimal contractTransportAmount = goods.stream()
|
|
|
+ .map(KwcContractLogisticsGoods::getAmount)
|
|
|
+ .filter(Objects::nonNull)
|
|
|
+ .reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
|
|
|
- String startDate = DateUtils.format(r.getStartTime(), DateUtils.DATE_PATTERN);
|
|
|
- queryLogisticListResp.setStartDate(startDate);
|
|
|
- String endDate = DateUtils.format(r.getEndTime(), DateUtils.DATE_PATTERN);
|
|
|
- queryLogisticListResp.setEndDate(org.apache.commons.lang3.StringUtils.equals(endDate,"9999-12-30") ? "": endDate);
|
|
|
- queryLogisticListResp.setInitiatorId(r.getCreateBy());
|
|
|
- UserCacheResDto userCacheResDto = finalLongUserCacheResDtoMap.getOrDefault(r.getCreateBy(), new UserCacheResDto());
|
|
|
- queryLogisticListResp.setInitiator(userCacheResDto.getName());
|
|
|
- EntCacheResDto entInfo = userCacheResDto.getEntInfo();
|
|
|
- queryLogisticListResp.setInitiatorUnit(Objects.nonNull(entInfo) ? entInfo.getFirmName() : null);
|
|
|
- queryLogisticListResp.setInitiatorTime(DateUtils.format(r.getCreateTime(), DateUtils.DATE_TIME_PATTERN));
|
|
|
- queryLogisticListResp.setRemark(r.getRemark());
|
|
|
+ queryLogisticListResp.setContractTransportAmount(contractTransportAmount.setScale(2, RoundingMode.HALF_UP).toPlainString());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ RWaybillSubOrderVo waybillSubOrderVo = logTradeOrderIdAndWaybillMap.getOrDefault(r.getId(), new RWaybillSubOrderVo());
|
|
|
+ List<RWaybillSubOrderVo.BillSubOrder> subOrders = waybillSubOrderVo.getSubOrders();
|
|
|
+ BigDecimal totalTransportAmount = BigDecimal.ZERO;
|
|
|
+ if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(subOrders)){
|
|
|
+ String billMode = subOrders.get(0).getBillMode();
|
|
|
+ if (org.apache.commons.lang3.StringUtils.equals(billMode, DictEnum.LOAD_UNLOAD_WAY_1.getValue())){
|
|
|
+ totalTransportAmount = subOrders.stream()
|
|
|
+ .filter(x->Arrays.asList(CarWaybillV1Enum.COMPLETION_LOADING.getCode(),CarWaybillV1Enum.WAIT_UNLOADING.getCode()).contains(x.getStatus()))
|
|
|
+ .map(RWaybillSubOrderVo.BillSubOrder::getLoadAmount)
|
|
|
+ .filter(Objects::nonNull)
|
|
|
+ .reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
+ }else {
|
|
|
+ totalTransportAmount = subOrders.stream()
|
|
|
+ .filter(x->Objects.equals(x.getStatus(), CarWaybillV1Enum.WAIT_UNLOADING.getCode()))
|
|
|
+ .map(RWaybillSubOrderVo.BillSubOrder::getUnloadAmount)
|
|
|
+ .filter(Objects::nonNull)
|
|
|
+ .reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
+ }
|
|
|
+ queryLogisticListResp.setTotalTransportAmount(totalTransportAmount.setScale(2, RoundingMode.HALF_UP).toPlainString());
|
|
|
+ }
|
|
|
|
|
|
|
|
|
+ String startDate = DateUtils.format(r.getStartTime(), DateUtils.DATE_PATTERN);
|
|
|
+ queryLogisticListResp.setStartDate(startDate);
|
|
|
+ String endDate = DateUtils.format(r.getEndTime(), DateUtils.DATE_PATTERN);
|
|
|
+ queryLogisticListResp.setEndDate(org.apache.commons.lang3.StringUtils.equals(endDate,"9999-12-30") ? "": endDate);
|
|
|
+ queryLogisticListResp.setInitiatorId(r.getCreateBy());
|
|
|
+ UserCacheResDto userCacheResDto = finalLongUserCacheResDtoMap.getOrDefault(r.getCreateBy(), new UserCacheResDto());
|
|
|
+ queryLogisticListResp.setInitiator(userCacheResDto.getName());
|
|
|
+ EntCacheResDto entInfo = userCacheResDto.getEntInfo();
|
|
|
+ queryLogisticListResp.setInitiatorUnit(Objects.nonNull(entInfo) ? entInfo.getFirmName() : null);
|
|
|
+ queryLogisticListResp.setInitiatorTime(DateUtils.format(r.getCreateTime(), DateUtils.DATE_TIME_PATTERN));
|
|
|
+ queryLogisticListResp.setRemark(r.getRemark());
|
|
|
|
|
|
- return queryLogisticListResp;
|
|
|
- }).collect(Collectors.toList());
|
|
|
|
|
|
- return PageDataResult.of(page, resp);
|
|
|
+ return queryLogisticListResp;
|
|
|
}
|
|
|
|
|
|
@Transactional(rollbackFor = Exception.class)
|