Bladeren bron

Merge remote-tracking branch 'origin/dev_20251030' into dev_20251030

donglang 2 maanden geleden
bovenliggende
commit
c3c4da923f
20 gewijzigde bestanden met toevoegingen van 207 en 109 verwijderingen
  1. 4 4
      sckw-gateway/src/main/resources/bootstrap-test.yml
  2. 9 8
      sckw-modules/sckw-contract/src/main/resources/bootstrap-dev.yml
  3. 9 8
      sckw-modules/sckw-file/src/main/resources/bootstrap-dev.yml
  4. 3 0
      sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/model/request/TruckRoteDetailReq.java
  5. 36 6
      sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/service/KwfTruckService.java
  6. 9 8
      sckw-modules/sckw-fleet/src/main/resources/bootstrap-dev.yml
  7. 9 8
      sckw-modules/sckw-manage/src/main/resources/bootstrap-dev.yml
  8. 9 8
      sckw-modules/sckw-message/src/main/resources/bootstrap-dev.yml
  9. 9 8
      sckw-modules/sckw-operation/src/main/resources/bootstrap-dev.yml
  10. 4 4
      sckw-modules/sckw-operation/src/main/resources/bootstrap-test.yml
  11. 9 8
      sckw-modules/sckw-order/src/main/resources/bootstrap-dev.yml
  12. 9 8
      sckw-modules/sckw-payment/src/main/resources/bootstrap-dev.yml
  13. 4 4
      sckw-modules/sckw-payment/src/main/resources/bootstrap-test.yml
  14. 9 8
      sckw-modules/sckw-product/src/main/resources/bootstrap-dev.yml
  15. 9 8
      sckw-modules/sckw-report/src/main/resources/bootstrap-dev.yml
  16. 2 1
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/controller/KwfTruckTraceController.java
  17. 4 0
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/param/CurrentTaskTraceReq.java
  18. 3 0
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/param/VehiclesTrajectoryReq.java
  19. 11 3
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/KwfTaskService.java
  20. 46 7
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/kwfTruckTraceService.java

+ 4 - 4
sckw-gateway/src/main/resources/bootstrap-test.yml

@@ -3,18 +3,18 @@ spring:
     nacos:
       discovery:
         # 服务注册地址
-        server-addr: 10.10.10.224:8848
+        server-addr: @nacos.server@
         # 命名空间
-        namespace: sckw-ng-service-platform
+        namespace: @nacos.namespace@
         # 共享配置
         group: sckw-ng-service-platform
       config:
         # 配置中心地址
-        server-addr: 10.10.10.224:8848
+        server-addr:  @nacos.server@
         # 配置文件格式
         file-extension: yaml
         # 命名空间
-        namespace: sckw-ng-service-platform
+        namespace: @nacos.namespace@
         # 共享配置
         group: sckw-ng-service-platform
 

+ 9 - 8
sckw-modules/sckw-contract/src/main/resources/bootstrap-dev.yml

@@ -3,26 +3,27 @@ spring:
     nacos:
       discovery:
         # 服务注册地址
-        server-addr: 10.10.10.230:8848
+        server-addr: @nacos.server@
         # 命名空间
-        namespace: sckw-ng-service-platform-dev
+        namespace: @nacos.namespace@
         # 共享配置
         group: sckw-ng-service-platform
       config:
         # 配置中心地址
-        server-addr: 10.10.10.230:8848
-        # 配置文件格式
-        file-extension: yaml
+        server-addr: @nacos.server@
         # 命名空间
-        namespace: sckw-ng-service-platform-dev
+        namespace: @nacos.namespace@
         # 共享配置
         group: sckw-ng-service-platform
+        # 配置文件格式
+        file-extension: yaml
         shared-configs:
           - data-id: sckw-common.yml
             group: sckw-ng-common
             refresh: true
-        #可以读多个配置文件  需要在同一个命名空间下面可以是不同的组
+
+        #可以读多个配置文件 需要在同一个命名空间下面可以是不同的组
         extension-configs:
           - dataId: sckw-common.yml
             group: sckw-ng-service-platform
-            refresh: true
+            refresh: true

+ 9 - 8
sckw-modules/sckw-file/src/main/resources/bootstrap-dev.yml

@@ -3,26 +3,27 @@ spring:
     nacos:
       discovery:
         # 服务注册地址
-        server-addr: 10.10.10.230:8848
+        server-addr: @nacos.server@
         # 命名空间
-        namespace: sckw-ng-service-platform-dev
+        namespace: @nacos.namespace@
         # 共享配置
         group: sckw-ng-service-platform
       config:
         # 配置中心地址
-        server-addr: 10.10.10.230:8848
-        # 配置文件格式
-        file-extension: yaml
+        server-addr: @nacos.server@
         # 命名空间
-        namespace: sckw-ng-service-platform-dev
+        namespace: @nacos.namespace@
         # 共享配置
         group: sckw-ng-service-platform
+        # 配置文件格式
+        file-extension: yaml
         shared-configs:
           - data-id: sckw-common.yml
             group: sckw-ng-common
             refresh: true
-        #可以读多个配置文件  需要在同一个命名空间下面可以是不同的组
+
+        #可以读多个配置文件 需要在同一个命名空间下面可以是不同的组
         extension-configs:
           - dataId: sckw-common.yml
             group: sckw-ng-service-platform
-            refresh: true
+            refresh: true

+ 3 - 0
sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/model/request/TruckRoteDetailReq.java

@@ -3,6 +3,7 @@ package com.sckw.fleet.model.request;
 import com.sckw.core.web.request.PageReq;
 import io.swagger.v3.oas.annotations.media.Schema;
 import jakarta.validation.Valid;
+import jakarta.validation.constraints.NotBlank;
 import jakarta.validation.constraints.NotNull;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
@@ -28,10 +29,12 @@ public class TruckRoteDetailReq implements Serializable {
      * 装货点
      */
     @Schema(description = "装货点")
+    @NotBlank(message = "装货点不能为空")
     private String startPoint;
     /**
      * 卸货点
      */
+    @NotBlank(message = "卸货点不能为空")
     @Schema(description = "卸货点")
     private String unloadingPoint;
 }

+ 36 - 6
sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/service/KwfTruckService.java

@@ -9,6 +9,7 @@ import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
 import com.sckw.core.common.enums.enums.DictTypeEnum;
 import com.sckw.core.common.enums.enums.FileEnum;
 import com.sckw.core.exception.SystemException;
@@ -1508,7 +1509,7 @@ public class KwfTruckService {
         capacityTotalStatusVo.setIdleTotalTruckNum(CollectionUtils.isEmpty(kwfTrucks) ? "0" : String.valueOf(kwfTrucks.stream()
                 .filter(x -> Objects.equals(x.getStatus(), 0))
                 .count()));
-        capacityTotalStatusVo.setAbnormalTotalTruckNum("");
+        capacityTotalStatusVo.setAbnormalTotalTruckNum("0");
         return capacityTotalStatusVo;
     }
 
@@ -1565,30 +1566,41 @@ public class KwfTruckService {
         Map<Long, List<KwfTruck>> entIdAndTruckMap = truckList.stream()
                 .collect(Collectors.groupingBy(KwfTruck::getEntId));
 
+        //查询订单
+        List<RWaybillOrderVo> rWaybillOrderVos = transportRemoteService.queryWaybillOrderByEntId(req.getEntId());
+        Map<Long, List<RWaybillOrderVo>> truckIdAndOrderMap = Maps.newHashMap() ;
+        if (CollectionUtils.isNotEmpty(rWaybillOrderVos)){
+            truckIdAndOrderMap = rWaybillOrderVos.stream()
+                    .collect(Collectors.groupingBy(RWaybillOrderVo::getTruckId));
+        }
+
+
         //遍历所有企业
+        Map<Long, List<RWaybillOrderVo>> finalTruckIdAndOrderMap = truckIdAndOrderMap;
         List<TruckInfoVo> ents = enterpriseResDtoList.stream()
-                .map(e -> getTruckInfoVo(e, entIdAndTruckMap))
+                .map(e -> getTruckInfoVo(e, entIdAndTruckMap, finalTruckIdAndOrderMap))
                 .filter(x->CollectionUtils.isNotEmpty(x.getTruck()))
                 .collect(Collectors.toList());
         return PageDataResult.success(page.getPageNum(),page.getPageSize(),page.getTotal(),ents);
     }
 
 
-    private TruckInfoVo getTruckInfoVo(KwsEnterpriseResDto e, Map<Long, List<KwfTruck>> entIdAndTruckMap) {
+    private TruckInfoVo getTruckInfoVo(KwsEnterpriseResDto e, Map<Long, List<KwfTruck>> entIdAndTruckMap
+                                        , Map<Long, List<RWaybillOrderVo>> truckIdAndOrderMap) {
         TruckInfoVo ent = new TruckInfoVo();
         ent.setEntId(String.valueOf(e.getId()));
         ent.setEntName(e.getFirmName());
         List<KwfTruck> kwfTrucks = entIdAndTruckMap.get(e.getId());
         if (CollectionUtils.isNotEmpty(kwfTrucks)) {
             List<TruckInfoVo.TruckData> truckDataList = kwfTrucks.stream()
-                    .map(t -> getTruckData(t))
+                    .map(t -> getTruckData(t,truckIdAndOrderMap))
                     .collect(Collectors.toList());
             ent.setTruck(truckDataList);
         }
         return ent;
     }
 
-    private TruckInfoVo.TruckData getTruckData(KwfTruck t) {
+    private TruckInfoVo.TruckData getTruckData(KwfTruck t, Map<Long, List<RWaybillOrderVo>> truckIdAndOrderMap) {
         TruckInfoVo.TruckData truck = new TruckInfoVo.TruckData();
         truck.setTruckId(String.valueOf(t.getId()));
         truck.setTruckNo(t.getTruckNo());
@@ -1603,6 +1615,24 @@ public class KwfTruckService {
         return truck;
     }
 
+    private VehicleReturnData getVehicleReturnDataByOrderNo(String odrderNo) {
+        VehicleDataDTO vehicleDataDTO = new VehicleDataDTO();
+        vehicleDataDTO.setWOrderNo(odrderNo);
+        String res = null;
+        try {
+            res = HttpUtil.postJson(urlConfigProperties.getApiBaseUrl()+ UrlConstants.QUERY_REAL_TIME_TRACE_URL, JSON.toJSONString(vehicleDataDTO), null);
+        } catch (Exception e) {
+            log.error("查询任务轨迹异常",e);
+            return null;
+            // throw new BusinessException("查询任务轨迹异常");
+        }
+        if (org.apache.commons.lang3.StringUtils.isBlank(res)){
+            return null;
+        }
+        JSONObject jsonObject  = JSON.parseObject(res);
+        return JSON.parseObject(JSON.toJSONString(jsonObject.get("data")), VehicleReturnData.class);
+    }
+
     public VehicleReturnData getVehicleReturnData(String truckId) {
         VehicleDataDTO vehicleDataDTO = new VehicleDataDTO();
         vehicleDataDTO.setCarNo(truckId);
@@ -1618,7 +1648,7 @@ public class KwfTruckService {
             return null;
         }
         JSONObject jsonObject  = JSON.parseObject(res);
-        return JSON.parseObject(jsonObject.get("data").toString(), VehicleReturnData.class);
+        return JSON.parseObject(JSON.toJSONString(jsonObject.get("data")), VehicleReturnData.class);
     }
 
     public PageDataResult<AppTruckInfoVo> pageAppTruckInfo(TruckInfoReq req) {

+ 9 - 8
sckw-modules/sckw-fleet/src/main/resources/bootstrap-dev.yml

@@ -3,21 +3,20 @@ spring:
     nacos:
       discovery:
         # 服务注册地址
-        server-addr: 10.10.10.230:8848
+        server-addr: @nacos.server@
         # 命名空间
-        namespace: sckw-ng-service-platform-dev
+        namespace: @nacos.namespace@
         # 共享配置
         group: sckw-ng-service-platform
       config:
         # 配置中心地址
-        server-addr: 10.10.10.230:8848
-        # 配置文件格式
-        file-extension: yaml
+        server-addr: @nacos.server@
         # 命名空间
-        namespace: sckw-ng-service-platform-dev
+        namespace: @nacos.namespace@
         # 共享配置
         group: sckw-ng-service-platform
-        #可以读多个配置文件  需要在同一个命名空间下面可以是不同的组
+        # 配置文件格式
+        file-extension: yaml
         shared-configs:
           - data-id: sckw-common.yml
             group: sckw-ng-common
@@ -25,7 +24,9 @@ spring:
           - data-id: amap-config.yml
             group: sckw-ng-service-platform
             refresh: true
+
+        #可以读多个配置文件 需要在同一个命名空间下面可以是不同的组
         extension-configs:
           - dataId: sckw-common.yml
             group: sckw-ng-service-platform
-            refresh: true
+            refresh: true

+ 9 - 8
sckw-modules/sckw-manage/src/main/resources/bootstrap-dev.yml

@@ -3,26 +3,27 @@ spring:
     nacos:
       discovery:
         # 服务注册地址
-        server-addr: 10.10.10.230:8848
+        server-addr: @nacos.server@
         # 命名空间
-        namespace: sckw-ng-service-platform-dev
+        namespace: @nacos.namespace@
         # 共享配置
         group: sckw-ng-service-platform
       config:
         # 配置中心地址
-        server-addr: 10.10.10.230:8848
-        # 配置文件格式
-        file-extension: yaml
+        server-addr: @nacos.server@
         # 命名空间
-        namespace: sckw-ng-service-platform-dev
+        namespace: @nacos.namespace@
         # 共享配置
         group: sckw-ng-service-platform
+        # 配置文件格式
+        file-extension: yaml
         shared-configs:
           - data-id: sckw-common.yml
             group: sckw-ng-common
             refresh: true
-        #可以读多个配置文件  需要在同一个命名空间下面可以是不同的组
+
+        #可以读多个配置文件 需要在同一个命名空间下面可以是不同的组
         extension-configs:
           - dataId: sckw-common.yml
             group: sckw-ng-service-platform
-            refresh: true
+            refresh: true

+ 9 - 8
sckw-modules/sckw-message/src/main/resources/bootstrap-dev.yml

@@ -3,26 +3,27 @@ spring:
     nacos:
       discovery:
         # 服务注册地址
-        server-addr: 10.10.10.230:8848
+        server-addr: @nacos.server@
         # 命名空间
-        namespace: sckw-ng-service-platform-dev
+        namespace: @nacos.namespace@
         # 共享配置
         group: sckw-ng-service-platform
       config:
         # 配置中心地址
-        server-addr: 10.10.10.230:8848
-        # 配置文件格式
-        file-extension: yaml
+        server-addr: @nacos.server@
         # 命名空间
-        namespace: sckw-ng-service-platform-dev
+        namespace: @nacos.namespace@
         # 共享配置
         group: sckw-ng-service-platform
+        # 配置文件格式
+        file-extension: yaml
         shared-configs:
           - data-id: sckw-common.yml
             group: sckw-ng-common
             refresh: true
-        #可以读多个配置文件  需要在同一个命名空间下面可以是不同的组
+
+        #可以读多个配置文件 需要在同一个命名空间下面可以是不同的组
         extension-configs:
           - dataId: sckw-common.yml
             group: sckw-ng-service-platform
-            refresh: true
+            refresh: true

+ 9 - 8
sckw-modules/sckw-operation/src/main/resources/bootstrap-dev.yml

@@ -3,26 +3,27 @@ spring:
     nacos:
       discovery:
         # 服务注册地址
-        server-addr: 10.10.10.230:8848
+        server-addr: @nacos.server@
         # 命名空间
-        namespace: sckw-ng-service-platform-dev
+        namespace: @nacos.namespace@
         # 共享配置
         group: sckw-ng-service-platform
       config:
         # 配置中心地址
-        server-addr: 10.10.10.230:8848
-        # 配置文件格式
-        file-extension: yaml
+        server-addr: @nacos.server@
         # 命名空间
-        namespace: sckw-ng-service-platform-dev
+        namespace: @nacos.namespace@
         # 共享配置
         group: sckw-ng-service-platform
+        # 配置文件格式
+        file-extension: yaml
         shared-configs:
           - data-id: sckw-common.yml
             group: sckw-ng-common
             refresh: true
-        #可以读多个配置文件  需要在同一个命名空间下面可以是不同的组
+
+        #可以读多个配置文件 需要在同一个命名空间下面可以是不同的组
         extension-configs:
           - dataId: sckw-common.yml
             group: sckw-ng-service-platform
-            refresh: true
+            refresh: true

+ 4 - 4
sckw-modules/sckw-operation/src/main/resources/bootstrap-test.yml

@@ -3,16 +3,16 @@ spring:
     nacos:
       discovery:
         # 服务注册地址
-        server-addr: 10.10.10.224:8848
+        server-addr: @nacos.server@
         # 命名空间
-        namespace: sckw-ng-service-platform
+        namespace: @nacos.namespace@
         # 共享配置
         group: sckw-ng-service-platform
       config:
         # 配置中心地址
-        server-addr: 10.10.10.224:8848
+        server-addr: @nacos.server@
         # 命名空间
-        namespace: sckw-ng-service-platform
+        namespace: @nacos.namespace@
         # 共享配置
         group: sckw-ng-service-platform
         # 配置文件格式

+ 9 - 8
sckw-modules/sckw-order/src/main/resources/bootstrap-dev.yml

@@ -3,26 +3,27 @@ spring:
     nacos:
       discovery:
         # 服务注册地址
-        server-addr: 10.10.10.230:8848
+        server-addr: @nacos.server@
         # 命名空间
-        namespace: sckw-ng-service-platform-dev
+        namespace: @nacos.namespace@
         # 共享配置
         group: sckw-ng-service-platform
       config:
         # 配置中心地址
-        server-addr: 10.10.10.230:8848
-        # 配置文件格式
-        file-extension: yaml
+        server-addr: @nacos.server@
         # 命名空间
-        namespace: sckw-ng-service-platform-dev
+        namespace: @nacos.namespace@
         # 共享配置
         group: sckw-ng-service-platform
+        # 配置文件格式
+        file-extension: yaml
         shared-configs:
           - data-id: sckw-common.yml
             group: sckw-ng-common
             refresh: true
-        #可以读多个配置文件  需要在同一个命名空间下面可以是不同的组
+
+        #可以读多个配置文件 需要在同一个命名空间下面可以是不同的组
         extension-configs:
           - dataId: sckw-common.yml
             group: sckw-ng-service-platform
-            refresh: true
+            refresh: true

+ 9 - 8
sckw-modules/sckw-payment/src/main/resources/bootstrap-dev.yml

@@ -3,26 +3,27 @@ spring:
     nacos:
       discovery:
         # 服务注册地址
-        server-addr: 10.10.10.230:8848
+        server-addr: @nacos.server@
         # 命名空间
-        namespace: sckw-ng-service-platform-dev
+        namespace: @nacos.namespace@
         # 共享配置
         group: sckw-ng-service-platform
       config:
         # 配置中心地址
-        server-addr: 10.10.10.230:8848
-        # 配置文件格式
-        file-extension: yaml
+        server-addr: @nacos.server@
         # 命名空间
-        namespace: sckw-ng-service-platform-dev
+        namespace: @nacos.namespace@
         # 共享配置
         group: sckw-ng-service-platform
+        # 配置文件格式
+        file-extension: yaml
         shared-configs:
           - data-id: sckw-common.yml
             group: sckw-ng-common
             refresh: true
-        #可以读多个配置文件  需要在同一个命名空间下面可以是不同的组
+
+        #可以读多个配置文件 需要在同一个命名空间下面可以是不同的组
         extension-configs:
           - dataId: sckw-common.yml
             group: sckw-ng-service-platform
-            refresh: true
+            refresh: true

+ 4 - 4
sckw-modules/sckw-payment/src/main/resources/bootstrap-test.yml

@@ -3,16 +3,16 @@ spring:
     nacos:
       discovery:
         # 服务注册地址
-        server-addr: 10.10.10.224:8848
+        server-addr: @nacos.server@
         # 命名空间
-        namespace: sckw-ng-service-platform
+        namespace: @nacos.namespace@
         # 共享配置
         group: sckw-ng-service-platform
       config:
         # 配置中心地址
-        server-addr: 10.10.10.224:8848
+        server-addr: @nacos.server@
         # 命名空间
-        namespace: sckw-ng-service-platform
+        namespace: @nacos.namespace@
         # 共享配置
         group: sckw-ng-service-platform
         # 配置文件格式

+ 9 - 8
sckw-modules/sckw-product/src/main/resources/bootstrap-dev.yml

@@ -3,26 +3,27 @@ spring:
     nacos:
       discovery:
         # 服务注册地址
-        server-addr: 10.10.10.230:8848
+        server-addr: @nacos.server@
         # 命名空间
-        namespace: sckw-ng-service-platform-dev
+        namespace: @nacos.namespace@
         # 共享配置
         group: sckw-ng-service-platform
       config:
         # 配置中心地址
-        server-addr: 10.10.10.230:8848
-        # 配置文件格式
-        file-extension: yaml
+        server-addr: @nacos.server@
         # 命名空间
-        namespace: sckw-ng-service-platform-dev
+        namespace: @nacos.namespace@
         # 共享配置
         group: sckw-ng-service-platform
+        # 配置文件格式
+        file-extension: yaml
         shared-configs:
           - data-id: sckw-common.yml
             group: sckw-ng-common
             refresh: true
-        #可以读多个配置文件  需要在同一个命名空间下面可以是不同的组
+
+        #可以读多个配置文件 需要在同一个命名空间下面可以是不同的组
         extension-configs:
           - dataId: sckw-common.yml
             group: sckw-ng-service-platform
-            refresh: true
+            refresh: true

+ 9 - 8
sckw-modules/sckw-report/src/main/resources/bootstrap-dev.yml

@@ -3,26 +3,27 @@ spring:
     nacos:
       discovery:
         # 服务注册地址
-        server-addr: 10.10.10.230:8848
+        server-addr: @nacos.server@
         # 命名空间
-        namespace: sckw-ng-service-platform-dev
+        namespace: @nacos.namespace@
         # 共享配置
         group: sckw-ng-service-platform
       config:
         # 配置中心地址
-        server-addr: 10.10.10.230:8848
-        # 配置文件格式
-        file-extension: yaml
+        server-addr: @nacos.server@
         # 命名空间
-        namespace: sckw-ng-service-platform-dev
+        namespace: @nacos.namespace@
         # 共享配置
         group: sckw-ng-service-platform
+        # 配置文件格式
+        file-extension: yaml
         shared-configs:
           - data-id: sckw-common.yml
             group: sckw-ng-common
             refresh: true
-        #可以读多个配置文件  需要在同一个命名空间下面可以是不同的组
+
+        #可以读多个配置文件 需要在同一个命名空间下面可以是不同的组
         extension-configs:
           - dataId: sckw-common.yml
             group: sckw-ng-service-platform
-            refresh: true
+            refresh: true

+ 2 - 1
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/controller/KwfTruckTraceController.java

@@ -11,6 +11,7 @@ import com.sckw.transport.model.vo.TruckInfoVo;
 import com.sckw.transport.service.kwfTruckTraceService;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.tags.Tag;
+import jakarta.validation.Valid;
 import lombok.RequiredArgsConstructor;
 import org.springframework.web.bind.annotation.*;
 
@@ -41,7 +42,7 @@ public class KwfTruckTraceController {
      */
     @PostMapping("/queryCurrentTaskTrace")
     @Operation(summary = "查询当前任务的线路")
-    public BaseResult<CurrentTaskTraceReqVo> queryCurrentTaskTrace(@RequestBody CurrentTaskTraceReq req )  {
+    public BaseResult<CurrentTaskTraceReqVo> queryCurrentTaskTrace(@Valid @RequestBody CurrentTaskTraceReq req )  {
         CurrentTaskTraceReqVo taskTrace = kwfTruckTraceService.queryCurrentTaskTrace(req);
         return BaseResult.success(taskTrace);
     }

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

@@ -1,6 +1,8 @@
 package com.sckw.transport.model.param;
 
 import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.Valid;
+import jakarta.validation.constraints.NotBlank;
 import lombok.Data;
 
 import java.io.Serial;
@@ -11,6 +13,7 @@ import java.io.Serializable;
  * @author PC
  */
 @Data
+@Valid
 public class CurrentTaskTraceReq implements Serializable {
     @Serial
     private static final long serialVersionUID = -8645240848510669952L;
@@ -24,5 +27,6 @@ public class CurrentTaskTraceReq implements Serializable {
      * 运单号
      */
     @Schema(description = "运单号")
+    @NotBlank(message = "运单号不能为空")
     private String orderNo;
 }

+ 3 - 0
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/param/VehiclesTrajectoryReq.java

@@ -13,12 +13,14 @@ import java.util.Date;
  * @author PC
  */
 @Data
+@Valid
 public class VehiclesTrajectoryReq {
     //private String ts;
     /**
      * 手机号
      */
     @Schema(description = "手机号")
+    @NotBlank(message = "手机号不能为空")
     private String mobile;
 
     /**
@@ -45,6 +47,7 @@ public class VehiclesTrajectoryReq {
      * 车速(km/h)
      */
     @Schema(description = "车速(km/h)")
+    @NotBlank(message = "车速speed不能为空")
     private Float speed;
 
     /**

+ 11 - 3
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/KwfTaskService.java

@@ -77,9 +77,16 @@ public class KwfTaskService {
         //获取上个月初到某个时间点的数据(卸货吨数)
         double unloadTonBeforeMonth = getUnloadTonBeforeMonth(waybillOrder);
         //较上个月同比增长或者下降
-        double unloadGrowthRate = (unloadTonBeforeMonth - unloadTonThisMonth) / unloadTonBeforeMonth * 100;
+        double unloadGrowthRate = 0.0;
+        if (unloadTonBeforeMonth != 0.0){
+            unloadGrowthRate= (unloadTonBeforeMonth - unloadTonThisMonth) / unloadTonBeforeMonth * 100;
+        }
+
         // 计算增长率
-        double growthRate = (double) (yesterdayTaskCount - taskTotalBeforeYesterday) / taskTotalBeforeYesterday * 100;
+        double growthRate = 0.0;
+        if (yesterdayTaskCount != 0.0){
+            growthRate= (double) (yesterdayTaskCount - taskTotalBeforeYesterday) / taskTotalBeforeYesterday * 100;
+        }
         return getTaskStatisticsVo(totalCount, taskingCount, completedCount, yesterdayTaskCount,
                 taskTotalBeforeYesterday, growthRate, unloadTon, unloadTonThisMonth, unloadTonBeforeMonth,unloadGrowthRate);
     }
@@ -185,7 +192,8 @@ public class KwfTaskService {
 
         //安装年月进行分组
         Map<String, List<KwtWaybillOrder>> yearMonthAndWayOrderListMap = waybillOrders.stream()
-                .peek(x -> DateUtils.format(x.getCreateTime(), DateUtils.FORMAT10))
+                .filter(x ->Objects.nonNull(x.getCreateTime()))
+                .peek(x ->x.setYearAndMonth(DateUtils.format(x.getCreateTime(), DateUtils.FORMAT10)) )
                 .collect(Collectors.groupingBy(KwtWaybillOrder::getYearAndMonth));
         //获取已接单的状态
         List<Integer> accepted = CarWaybillEnum.accepted();

+ 46 - 7
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/kwfTruckTraceService.java

@@ -58,6 +58,7 @@ import org.springframework.stereotype.Service;
 import java.time.Duration;
 import java.time.LocalDateTime;
 import java.time.ZoneOffset;
+import java.time.format.DateTimeFormatter;
 import java.util.*;
 import java.util.concurrent.TimeUnit;
 import java.util.function.Function;
@@ -102,7 +103,7 @@ public class kwfTruckTraceService {
     PaymentDubboService paymentDubboService ;
 
     public PageDataResult<KwfTruckTraceReplayVo> findPage(KwfTruckTraceReplayReq req) {
-        log.info("查询历轨迹回放氢气参数:{}", req);
+        log.info("查询历轨迹回放参数:{}", req);
         if (StringUtils.isBlank(req.getTruckNo())){
             return PageDataResult.empty(req.getPageNum(), req.getPageSize());
         }
@@ -231,7 +232,7 @@ public class kwfTruckTraceService {
             TruckDto truckDto = JSON.parseObject(location, TruckDto.class);
             //如果运单号为空那么返回redis的数据 这个数据是app最后一次上报的数据
             if (Objects.nonNull(truckDto)){
-                return TruckInfoVo.toTruckInfoVo(truckDto);
+                return getTruckInfoVo(truckId, truckDto);
             }
         }
 
@@ -245,6 +246,42 @@ public class kwfTruckTraceService {
         return getTruckInfoVoByZj(truckNo, wOrderNo,truckId);
     }
 
+
+    private TruckInfoVo getTruckInfoVo(String truckId, TruckDto truckDto) {
+        TruckInfoVo truckInfoVo = TruckInfoVo.toTruckInfoVo(truckDto);
+        truckInfoVo.setGpsStatus(truckDto.getGpsStatus());
+        truckInfoVo.setLongitude(truckDto.getLongitude());
+        truckInfoVo.setLatitude(truckDto.getLatitude());
+        truckInfoVo.setLocationTime(truckDto.getLocationTime());
+        truckInfoVo.setTaskAddress(truckDto.getTaskAddress());
+        KwtWaybillOrder order = kwtWaybillOrderRepository.findOneByTruckId(truckId);
+        if (Objects.nonNull(order)){
+            truckInfoVo.setTruckNo(order.getTruckNo());
+            truckInfoVo.setOrderNo(order.getWOrderNo());
+            truckInfoVo.setDriveId(String.valueOf(order.getDriverId()));
+            truckInfoVo.setDriveName(order.getDriverName());
+            truckInfoVo.setDrivePhone(order.getDriverPhone());
+            truckInfoVo.setTruckId(truckId);
+            truckInfoVo.setTaskStatus(String.valueOf(order.getStatus()));
+        }
+
+        KwtWaybillOrderSubtask subtask = kwtWaybillOrderSubtaskRepository.findOneByWOrderNo(Optional.ofNullable(order)
+                .map(KwtWaybillOrder::getWOrderNo).
+                orElse( null));
+        truckInfoVo.setLogicOrderNo(Objects.isNull(subtask) ? "" : String.valueOf(subtask.getLOrderId()));
+        if (Objects.isNull(subtask)){
+            return truckInfoVo;
+        }
+        truckInfoVo.setLogicOrderNo(String.valueOf(subtask.getLOrderId()));
+        //根据物流订单号查询承运单位 2.代表承运企业
+        KwtLogisticsOrderUnit kwtLogisticsOrderUnit = kwtLogisticsOrderUnitRepository.queryByLOrderIdAndUnitType(subtask.getLOrderId(), 2);
+        if (Objects.nonNull(kwtLogisticsOrderUnit) && Objects.nonNull(kwtLogisticsOrderUnit.getEntId())){
+            EntCacheResDto entCacheResDto = remoteSystemService.queryEntCacheById(kwtLogisticsOrderUnit.getEntId());
+            truckInfoVo.setCarrier(Optional.ofNullable(entCacheResDto).map(EntCacheResDto::getFirmName).orElse(""));
+        }
+        return truckInfoVo;
+    }
+
     private void saveRedisCache(String truckId, String wOrderNo, String truckNo, VehicleReturnData vehicleReturnData) {
         TruckDto truckDto = new TruckDto();
         truckDto.setWOrderNo(vehicleReturnData.getWOrderNo());
@@ -388,6 +425,7 @@ public class kwfTruckTraceService {
             //组织返回数据
             List<CurrentTaskTraceReqVo.CurrentTaskTrace> currentTaskTraceList = vehicleReturnDataList.stream()
                     .map(kwfTruckTraceService::getCurrentTaskTrace)
+                    .filter(x->StringUtils.isNotBlank(x.getLocationTime()))
                     .sorted(Comparator.comparing(CurrentTaskTraceReqVo.CurrentTaskTrace::getLocationTime))
                     .collect(Collectors.toList());
 
@@ -396,16 +434,17 @@ public class kwfTruckTraceService {
             for (int i = 1; i < currentTaskTraceList.size(); i++) {
                 CurrentTaskTraceReqVo.CurrentTaskTrace current = currentTaskTraceList.get(i);
                 CurrentTaskTraceReqVo.CurrentTaskTrace previous = currentTaskTraceList.get(i - 1);
-                LocalDateTime currentTime = LocalDateTime.parse(current.getLocationTime());
-                LocalDateTime previousTime = LocalDateTime.parse(previous.getLocationTime());
+                DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+                LocalDateTime currentTime = LocalDateTime.parse(current.getLocationTime(), formatter);
+                LocalDateTime previousTime = LocalDateTime.parse(previous.getLocationTime(), formatter);
                 Duration duration = Duration.between(previousTime, currentTime);
                 current.setDuration(String.valueOf(duration.toMinutes()));
             }
             CurrentTaskTraceReqVo.CurrentTaskTrace first = currentTaskTraceList.get(0);
             CurrentTaskTraceReqVo.CurrentTaskTrace last = currentTaskTraceList.get(currentTaskTraceList.size() - 1);
-
-            LocalDateTime firstTime = LocalDateTime.parse(first.getLocationTime());
-            LocalDateTime lastTime = LocalDateTime.parse(last.getLocationTime());
+            DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+            LocalDateTime firstTime = LocalDateTime.parse(first.getLocationTime(),formatter);
+            LocalDateTime lastTime = LocalDateTime.parse(last.getLocationTime(),formatter);
 
             Duration totalDuration = Duration.between(firstTime, lastTime);
             long durationInMinutes = totalDuration.toMinutes();