فهرست منبع

修改车辆轨迹查询

chenxiaofei 2 ماه پیش
والد
کامیت
3fe9b9a8e0

+ 4 - 0
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/param/KwfTruckTraceReplayReq.java

@@ -27,4 +27,8 @@ public class KwfTruckTraceReplayReq extends PageReq implements Serializable {
      */
     @Schema(description = "任务创建时间上限")
     private String endTime;
+    /**
+     * 车牌号
+     */
+    private String truckNo;
 }

+ 3 - 1
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/repository/KwtWaybillOrderRepository.java

@@ -1,6 +1,7 @@
 package com.sckw.transport.repository;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -23,12 +24,13 @@ import java.util.Objects;
 
 @Repository
 public class KwtWaybillOrderRepository extends ServiceImpl<KwtWaybillOrderMapper, KwtWaybillOrder> {
-    public Page<KwtWaybillOrder> findPage(int pageNum, int pageSize, Date beforeDate, Date date) {
+    public Page<KwtWaybillOrder> findPage(String truckNo,int pageNum, int pageSize, Date beforeDate, Date date) {
         Page<KwtWaybillOrder> page = new Page<>(pageNum, pageSize);
         LambdaQueryWrapper<KwtWaybillOrder> wrapper = Wrappers.<KwtWaybillOrder>lambdaQuery()
                 .ge(KwtWaybillOrder::getCreateTime, beforeDate)
                 .le(KwtWaybillOrder::getCreateTime, date)
                 .eq(KwtWaybillOrder::getDelFlag, 0)
+                .eq(StringUtils.isNotBlank(truckNo),KwtWaybillOrder::getTruckNo, truckNo)
                 .orderByDesc(KwtWaybillOrder::getCreateTime);
         return page(page,wrapper);
     }

+ 7 - 0
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/repository/KwtWaybillOrderSubtaskRepository.java

@@ -34,4 +34,11 @@ public class KwtWaybillOrderSubtaskRepository extends ServiceImpl<KwtWaybillOrde
                 .eq(BaseModel::getDelFlag,0)
                 .eq(KwtWaybillOrderSubtask::getEntId,entId));
     }
+
+    public List<KwtWaybillOrderSubtask> queryByWOrderIds(List<Long> wOrderIds) {
+
+        return list(Wrappers.<KwtWaybillOrderSubtask>lambdaQuery()
+                .eq(BaseModel::getDelFlag,0)
+                .in(KwtWaybillOrderSubtask::getWOrderId,wOrderIds));
+    }
 }

+ 37 - 10
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/kwfTruckTraceService.java

@@ -3,6 +3,8 @@ package com.sckw.transport.service;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 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.core.exception.BusinessException;
 import com.sckw.core.model.constant.UrlConstants;
@@ -100,6 +102,9 @@ public class kwfTruckTraceService {
 
     public PageDataResult<KwfTruckTraceReplayVo> findPage(KwfTruckTraceReplayReq req) {
         log.info("查询历轨迹回放氢气参数:{}", req);
+        if (StringUtils.isBlank(req.getTruckNo())){
+            return PageDataResult.empty(req.getPageNum(), req.getPageSize());
+        }
         Date date = new Date();
         if (StringUtils.isNotBlank(req.getStartTime())){
             date = DateUtils.formatDate(req.getStartTime());
@@ -108,19 +113,30 @@ public class kwfTruckTraceService {
         if (StringUtils.isNotBlank(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();
         if(CollectionUtils.isEmpty(page.getRecords())) {
             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
         List<Long> wOrderIds = records.stream().map(KwtWaybillOrder::getId).collect(Collectors.toList());
+        //通过运单号查询订单
+        List<KwtWaybillOrderSubtask> waybillOrderSubtasks = kwtWaybillOrderSubtaskRepository.queryByWOrderIds(wOrderIds);
+
         //关联订单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);
-        //运单号映射企业
+        //物流订单id映射企业
         Map<Long, KwtLogisticsOrderUnit> lOrderIdAndLogisticsOrderUnitMap = logisticsOrderUnits.stream()
                 .collect(Collectors.toMap(KwtLogisticsOrderUnit::getLOrderId, Function.identity(), (k1, k2) -> k1));
         //通过企业id映射企业信息
@@ -133,8 +149,9 @@ public class kwfTruckTraceService {
         Map<Long, List<KwtWaybillOrderAddress>> wOrderIdAndAddressMap = orderAddresses.stream()
                 .collect(Collectors.groupingBy(KwtWaybillOrderAddress::getWOrderId));
 
+        Map<String, KwtWaybillOrderSubtask> finalWorderNoAndWorderMap = worderNoAndWorderMap;
         List<KwfTruckTraceReplayVo> kwfTruckTraceReplayVoList = records.stream()
-                .map(r -> getKwfTruckTraceReplayVo(r, idAndKwsEnterpriseMap, wOrderIdAndAddressMap, lOrderIdAndLogisticsOrderUnitMap))
+                .map(r -> getKwfTruckTraceReplayVo(r, idAndKwsEnterpriseMap, wOrderIdAndAddressMap, lOrderIdAndLogisticsOrderUnitMap, finalWorderNoAndWorderMap))
                 .collect(Collectors.toList());
        return PageDataResult.of(page,kwfTruckTraceReplayVoList);
     }
@@ -148,7 +165,8 @@ public class kwfTruckTraceService {
      */
     private static KwfTruckTraceReplayVo getKwfTruckTraceReplayVo(KwtWaybillOrder waybillOrder, Map<Long, KwsEnterpriseResDto> idAndKwsEnterpriseMap,
                                                                   Map<Long, List<KwtWaybillOrderAddress>> wOrderIdAndAddressMap
-                                                                ,Map<Long, KwtLogisticsOrderUnit> lOrderIdAndLogisticsOrderUnitMap) {
+                                                                ,Map<Long, KwtLogisticsOrderUnit> lOrderIdAndLogisticsOrderUnitMap
+                                                                ,Map<String, KwtWaybillOrderSubtask> worderNoAndWorderMap) {
 
         KwfTruckTraceReplayVo kwfTruckTraceReplay = new KwfTruckTraceReplayVo();
         kwfTruckTraceReplay.setWOrderId(waybillOrder.getId());
@@ -157,7 +175,9 @@ public class kwfTruckTraceService {
         kwfTruckTraceReplay.setPhone(waybillOrder.getDriverPhone());
         kwfTruckTraceReplay.setStatus(String.valueOf(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());
         kwfTruckTraceReplay.setCarrier(orDefault.getFirmName());
         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);
         kwfTruckTraceReplay.setTaskStartTime(StringUtils.equals(taskStartEndTime, CommonConstants.DATE_TIME) ? StringUtils.EMPTY: taskStartEndTime);
@@ -326,9 +345,17 @@ public class kwfTruckTraceService {
      */
     public CurrentTaskTraceReqVo queryCurrentTaskTrace(CurrentTaskTraceReq 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)){
             return new CurrentTaskTraceReqVo();
         }