|
@@ -3,6 +3,8 @@ package com.sckw.transport.service;
|
|
|
import com.alibaba.fastjson.JSON;
|
|
import com.alibaba.fastjson.JSON;
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
|
|
+import com.google.common.collect.Lists;
|
|
|
|
|
+import com.google.common.collect.Maps;
|
|
|
import com.sckw.contract.api.RemoteContractService;
|
|
import com.sckw.contract.api.RemoteContractService;
|
|
|
import com.sckw.core.exception.BusinessException;
|
|
import com.sckw.core.exception.BusinessException;
|
|
|
import com.sckw.core.model.constant.UrlConstants;
|
|
import com.sckw.core.model.constant.UrlConstants;
|
|
@@ -100,6 +102,9 @@ public class kwfTruckTraceService {
|
|
|
|
|
|
|
|
public PageDataResult<KwfTruckTraceReplayVo> findPage(KwfTruckTraceReplayReq req) {
|
|
public PageDataResult<KwfTruckTraceReplayVo> findPage(KwfTruckTraceReplayReq req) {
|
|
|
log.info("查询历轨迹回放氢气参数:{}", req);
|
|
log.info("查询历轨迹回放氢气参数:{}", req);
|
|
|
|
|
+ if (StringUtils.isBlank(req.getTruckNo())){
|
|
|
|
|
+ return PageDataResult.empty(req.getPageNum(), req.getPageSize());
|
|
|
|
|
+ }
|
|
|
Date date = new Date();
|
|
Date date = new Date();
|
|
|
if (StringUtils.isNotBlank(req.getStartTime())){
|
|
if (StringUtils.isNotBlank(req.getStartTime())){
|
|
|
date = DateUtils.formatDate(req.getStartTime());
|
|
date = DateUtils.formatDate(req.getStartTime());
|
|
@@ -108,19 +113,30 @@ public class kwfTruckTraceService {
|
|
|
if (StringUtils.isNotBlank(req.getEndTime())){
|
|
if (StringUtils.isNotBlank(req.getEndTime())){
|
|
|
beforeDate = DateUtils.formatDate(req.getEndTime());
|
|
beforeDate = DateUtils.formatDate(req.getEndTime());
|
|
|
}
|
|
}
|
|
|
- Page<KwtWaybillOrder> page = kwtWaybillOrderRepository.findPage(req.getPageNum(), req.getPageSize(), beforeDate, date);
|
|
|
|
|
|
|
+ Page<KwtWaybillOrder> page = kwtWaybillOrderRepository.findPage(req.getTruckNo(),req.getPageNum(), req.getPageSize(), beforeDate, date);
|
|
|
List<KwtWaybillOrder> records = page.getRecords();
|
|
List<KwtWaybillOrder> records = page.getRecords();
|
|
|
if(CollectionUtils.isEmpty(page.getRecords())) {
|
|
if(CollectionUtils.isEmpty(page.getRecords())) {
|
|
|
return PageDataResult.success(req.getPageNum(), req.getPageSize(),0L, null);
|
|
return PageDataResult.success(req.getPageNum(), req.getPageSize(),0L, null);
|
|
|
}
|
|
}
|
|
|
//查询企业 获取承运单位
|
|
//查询企业 获取承运单位
|
|
|
- List<Long> entIds = records.stream().map(KwtWaybillOrder::getId).distinct().collect(Collectors.toList());
|
|
|
|
|
|
|
+ List<Long> entIds = records.stream().map(KwtWaybillOrder::getEntId).distinct().collect(Collectors.toList());
|
|
|
//运单id
|
|
//运单id
|
|
|
List<Long> wOrderIds = records.stream().map(KwtWaybillOrder::getId).collect(Collectors.toList());
|
|
List<Long> wOrderIds = records.stream().map(KwtWaybillOrder::getId).collect(Collectors.toList());
|
|
|
|
|
+ //通过运单号查询订单
|
|
|
|
|
+ List<KwtWaybillOrderSubtask> waybillOrderSubtasks = kwtWaybillOrderSubtaskRepository.queryByWOrderIds(wOrderIds);
|
|
|
|
|
+
|
|
|
//关联订单id
|
|
//关联订单id
|
|
|
- Set<Long> lOrderIds = records.stream().map(KwtWaybillOrder::getLOrderId).collect(Collectors.toSet());
|
|
|
|
|
|
|
+ Set<Long> lOrderIds = null;
|
|
|
|
|
+ //订单号映射订单对象
|
|
|
|
|
+ Map<String, KwtWaybillOrderSubtask> worderNoAndWorderMap = Maps.newHashMap();
|
|
|
|
|
+ if (CollectionUtils.isNotEmpty(waybillOrderSubtasks)){
|
|
|
|
|
+ lOrderIds = waybillOrderSubtasks.stream().map(KwtWaybillOrderSubtask::getLOrderId).collect(Collectors.toSet());
|
|
|
|
|
+ worderNoAndWorderMap = waybillOrderSubtasks.stream()
|
|
|
|
|
+ .collect(Collectors.toMap(KwtWaybillOrderSubtask::getWOrderNo, Function.identity(), (k1, k2) -> k1));
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
List<KwtLogisticsOrderUnit> logisticsOrderUnits = kwtLogisticsOrderUnitRepository.queryByLOrderIdsAndUnitType(lOrderIds,2);
|
|
List<KwtLogisticsOrderUnit> logisticsOrderUnits = kwtLogisticsOrderUnitRepository.queryByLOrderIdsAndUnitType(lOrderIds,2);
|
|
|
- //运单号映射企业
|
|
|
|
|
|
|
+ //物流订单id映射企业
|
|
|
Map<Long, KwtLogisticsOrderUnit> lOrderIdAndLogisticsOrderUnitMap = logisticsOrderUnits.stream()
|
|
Map<Long, KwtLogisticsOrderUnit> lOrderIdAndLogisticsOrderUnitMap = logisticsOrderUnits.stream()
|
|
|
.collect(Collectors.toMap(KwtLogisticsOrderUnit::getLOrderId, Function.identity(), (k1, k2) -> k1));
|
|
.collect(Collectors.toMap(KwtLogisticsOrderUnit::getLOrderId, Function.identity(), (k1, k2) -> k1));
|
|
|
//通过企业id映射企业信息
|
|
//通过企业id映射企业信息
|
|
@@ -133,8 +149,9 @@ public class kwfTruckTraceService {
|
|
|
Map<Long, List<KwtWaybillOrderAddress>> wOrderIdAndAddressMap = orderAddresses.stream()
|
|
Map<Long, List<KwtWaybillOrderAddress>> wOrderIdAndAddressMap = orderAddresses.stream()
|
|
|
.collect(Collectors.groupingBy(KwtWaybillOrderAddress::getWOrderId));
|
|
.collect(Collectors.groupingBy(KwtWaybillOrderAddress::getWOrderId));
|
|
|
|
|
|
|
|
|
|
+ Map<String, KwtWaybillOrderSubtask> finalWorderNoAndWorderMap = worderNoAndWorderMap;
|
|
|
List<KwfTruckTraceReplayVo> kwfTruckTraceReplayVoList = records.stream()
|
|
List<KwfTruckTraceReplayVo> kwfTruckTraceReplayVoList = records.stream()
|
|
|
- .map(r -> getKwfTruckTraceReplayVo(r, idAndKwsEnterpriseMap, wOrderIdAndAddressMap, lOrderIdAndLogisticsOrderUnitMap))
|
|
|
|
|
|
|
+ .map(r -> getKwfTruckTraceReplayVo(r, idAndKwsEnterpriseMap, wOrderIdAndAddressMap, lOrderIdAndLogisticsOrderUnitMap, finalWorderNoAndWorderMap))
|
|
|
.collect(Collectors.toList());
|
|
.collect(Collectors.toList());
|
|
|
return PageDataResult.of(page,kwfTruckTraceReplayVoList);
|
|
return PageDataResult.of(page,kwfTruckTraceReplayVoList);
|
|
|
}
|
|
}
|
|
@@ -148,7 +165,8 @@ public class kwfTruckTraceService {
|
|
|
*/
|
|
*/
|
|
|
private static KwfTruckTraceReplayVo getKwfTruckTraceReplayVo(KwtWaybillOrder waybillOrder, Map<Long, KwsEnterpriseResDto> idAndKwsEnterpriseMap,
|
|
private static KwfTruckTraceReplayVo getKwfTruckTraceReplayVo(KwtWaybillOrder waybillOrder, Map<Long, KwsEnterpriseResDto> idAndKwsEnterpriseMap,
|
|
|
Map<Long, List<KwtWaybillOrderAddress>> wOrderIdAndAddressMap
|
|
Map<Long, List<KwtWaybillOrderAddress>> wOrderIdAndAddressMap
|
|
|
- ,Map<Long, KwtLogisticsOrderUnit> lOrderIdAndLogisticsOrderUnitMap) {
|
|
|
|
|
|
|
+ ,Map<Long, KwtLogisticsOrderUnit> lOrderIdAndLogisticsOrderUnitMap
|
|
|
|
|
+ ,Map<String, KwtWaybillOrderSubtask> worderNoAndWorderMap) {
|
|
|
|
|
|
|
|
KwfTruckTraceReplayVo kwfTruckTraceReplay = new KwfTruckTraceReplayVo();
|
|
KwfTruckTraceReplayVo kwfTruckTraceReplay = new KwfTruckTraceReplayVo();
|
|
|
kwfTruckTraceReplay.setWOrderId(waybillOrder.getId());
|
|
kwfTruckTraceReplay.setWOrderId(waybillOrder.getId());
|
|
@@ -157,7 +175,9 @@ public class kwfTruckTraceService {
|
|
|
kwfTruckTraceReplay.setPhone(waybillOrder.getDriverPhone());
|
|
kwfTruckTraceReplay.setPhone(waybillOrder.getDriverPhone());
|
|
|
kwfTruckTraceReplay.setStatus(String.valueOf(waybillOrder.getStatus()));
|
|
kwfTruckTraceReplay.setStatus(String.valueOf(waybillOrder.getStatus()));
|
|
|
kwfTruckTraceReplay.setStatusDesc(CarWaybillEnum.getName(waybillOrder.getStatus()));
|
|
kwfTruckTraceReplay.setStatusDesc(CarWaybillEnum.getName(waybillOrder.getStatus()));
|
|
|
- KwtLogisticsOrderUnit kwtLogisticsOrderUnit = lOrderIdAndLogisticsOrderUnitMap.get(waybillOrder.getLOrderId());
|
|
|
|
|
|
|
+ KwtWaybillOrderSubtask subtask = worderNoAndWorderMap.getOrDefault(waybillOrder.getWOrderNo(), new KwtWaybillOrderSubtask());
|
|
|
|
|
+ kwfTruckTraceReplay.setRelationTaskNo(String.valueOf(subtask.getLOrderId()));
|
|
|
|
|
+ KwtLogisticsOrderUnit kwtLogisticsOrderUnit = lOrderIdAndLogisticsOrderUnitMap.getOrDefault(subtask.getLOrderId(), new KwtLogisticsOrderUnit());
|
|
|
KwsEnterpriseResDto orDefault = idAndKwsEnterpriseMap.getOrDefault(kwtLogisticsOrderUnit.getEntId(), new KwsEnterpriseResDto());
|
|
KwsEnterpriseResDto orDefault = idAndKwsEnterpriseMap.getOrDefault(kwtLogisticsOrderUnit.getEntId(), new KwsEnterpriseResDto());
|
|
|
kwfTruckTraceReplay.setCarrier(orDefault.getFirmName());
|
|
kwfTruckTraceReplay.setCarrier(orDefault.getFirmName());
|
|
|
List<KwtWaybillOrderAddress> addressList = wOrderIdAndAddressMap.get(waybillOrder.getId());
|
|
List<KwtWaybillOrderAddress> addressList = wOrderIdAndAddressMap.get(waybillOrder.getId());
|
|
@@ -170,7 +190,6 @@ public class kwfTruckTraceService {
|
|
|
}
|
|
}
|
|
|
});
|
|
});
|
|
|
|
|
|
|
|
- kwfTruckTraceReplay.setRelationTaskNo(Objects.nonNull(waybillOrder.getLOrderId()) ? String.valueOf(waybillOrder.getLOrderId()) : "");
|
|
|
|
|
|
|
|
|
|
String taskStartEndTime = DateUtils.format(waybillOrder.getTaskStartTime(), DateUtils.DATE_TIME_PATTERN);
|
|
String taskStartEndTime = DateUtils.format(waybillOrder.getTaskStartTime(), DateUtils.DATE_TIME_PATTERN);
|
|
|
kwfTruckTraceReplay.setTaskStartTime(StringUtils.equals(taskStartEndTime, CommonConstants.DATE_TIME) ? StringUtils.EMPTY: taskStartEndTime);
|
|
kwfTruckTraceReplay.setTaskStartTime(StringUtils.equals(taskStartEndTime, CommonConstants.DATE_TIME) ? StringUtils.EMPTY: taskStartEndTime);
|
|
@@ -326,9 +345,17 @@ public class kwfTruckTraceService {
|
|
|
*/
|
|
*/
|
|
|
public CurrentTaskTraceReqVo queryCurrentTaskTrace(CurrentTaskTraceReq req) {
|
|
public CurrentTaskTraceReqVo queryCurrentTaskTrace(CurrentTaskTraceReq req) {
|
|
|
log.info("查询当前任务轨迹参数:{}", req);
|
|
log.info("查询当前任务轨迹参数:{}", req);
|
|
|
- KwtWaybillOrder waybillOrder = kwtWaybillOrderRepository.findOneByTruckNo(req.getTruckNo());
|
|
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ String wOrderNo = StringUtils.EMPTY ;
|
|
|
|
|
+ if (StringUtils.isNotBlank(req.getWOrderNo())){
|
|
|
|
|
+ wOrderNo = req.getWOrderNo();
|
|
|
|
|
+ }else {
|
|
|
|
|
+ KwtWaybillOrder waybillOrder = kwtWaybillOrderRepository.findOneByTruckNo(req.getTruckNo());
|
|
|
|
|
+ wOrderNo = Optional.ofNullable(waybillOrder).map(KwtWaybillOrder::getWOrderNo).orElse("");
|
|
|
|
|
+ }
|
|
|
//查询数据中台获取轨迹
|
|
//查询数据中台获取轨迹
|
|
|
- List<VehicleReturnData> vehicleReturnDataList = getVehicleReturnDataList(waybillOrder.getWOrderNo());
|
|
|
|
|
|
|
+ List<VehicleReturnData> vehicleReturnDataList = getVehicleReturnDataList(wOrderNo);
|
|
|
if (CollectionUtils.isEmpty(vehicleReturnDataList)){
|
|
if (CollectionUtils.isEmpty(vehicleReturnDataList)){
|
|
|
return new CurrentTaskTraceReqVo();
|
|
return new CurrentTaskTraceReqVo();
|
|
|
}
|
|
}
|