Przeglądaj źródła

提交轨迹修改

chenxiaofei 1 tydzień temu
rodzic
commit
59b8f10afa

+ 3 - 0
sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/dubbo/RemoteFleetServiceImpl.java

@@ -226,6 +226,9 @@ public class RemoteFleetServiceImpl implements RemoteFleetService {
     @Override
     public RTruckVo findDataFirstTruck(Long entId) {
         KwfTruck truck = kwfTruckRepository.getOneByEntId(entId);
+        if (Objects.isNull(truck)){
+            return new RTruckVo();
+        }
         return getTruckVo(truck);
     }
 

+ 3 - 3
sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/service/KwfTruckRouteService.java

@@ -357,9 +357,9 @@ public class KwfTruckRouteService {
             if (CollectionUtils.isNotEmpty(routePoints)) {
                 List<QueryTruckRoteVo.TruckRoteDetail> details = routePoints.stream().map(x -> {
                     QueryTruckRoteVo.TruckRoteDetail truckRoteDetail = new QueryTruckRoteVo.TruckRoteDetail();
-                    truckRoteDetail.setTs(truckRoteDetail.getTs());
-                    truckRoteDetail.setLongitude(truckRoteDetail.getLongitude());
-                    truckRoteDetail.setLatitude(truckRoteDetail.getLatitude());
+                    truckRoteDetail.setTs(x.getTs());
+                    truckRoteDetail.setLongitude(x.getLongitude());
+                    truckRoteDetail.setLatitude(x.getLatitude());
                     return truckRoteDetail;
                 }).collect(Collectors.toList());
                 kwfTruckRoute.setPointInfo(JSON.toJSONString(details));

+ 13 - 12
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/repository/KwtVehicleExceptionRepository.java

@@ -7,11 +7,10 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.sckw.transport.dao.KwtVehicleExceptionMapper;
 import com.sckw.transport.model.KwtVehicleException;
+import org.apache.commons.collections4.CollectionUtils;
 import org.springframework.stereotype.Repository;
 
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
+import java.util.*;
 import java.util.stream.Collectors;
 
 /**
@@ -49,15 +48,14 @@ public class KwtVehicleExceptionRepository extends ServiceImpl<KwtVehicleExcepti
      * 分页查询每个车牌号异常时间最新的一条记录
      * 使用子查询确保每个车牌号只返回异常时间最新的一条记录
      *
-     * @param entId          企业ID
      * @param exceptionType  异常类型
      * @param truckNo        车牌号
      * @param pageNum        页码
      * @param pageSize       每页数量
      * @return 分页结果
      */
-    public IPage<KwtVehicleException> queryExceptionImagePage1(Long entId, Integer exceptionType,
-                                                              String truckNo,String startDate,String endDate, int pageNum, int pageSize) {
+    public IPage<KwtVehicleException> queryExceptionImagePage1(Set<Long> wOrderIds, Integer exceptionType,
+                                                               String truckNo, String startDate, String endDate, int pageNum, int pageSize) {
         // 构建子查询条件:当前记录的异常时间等于该车牌号的最大异常时间
         // 使用 (truck_no, exception_time) IN 子查询来确保只查询每个车牌号最新的一条
         StringBuilder subQuery = new StringBuilder();
@@ -65,9 +63,10 @@ public class KwtVehicleExceptionRepository extends ServiceImpl<KwtVehicleExcepti
         subQuery.append("SELECT truck_no, MAX(exception_time) ");
         subQuery.append("FROM kwt_vehicle_exception ");
         subQuery.append("WHERE del_flag = 0");
-        
-        if (Objects.nonNull(entId)) {
-            subQuery.append(" AND ent_id = ").append(entId);
+        if (CollectionUtils.isNotEmpty(wOrderIds)) {
+            subQuery.append(" AND w_order_id IN (")
+                    .append(wOrderIds.stream().map(String::valueOf)
+                            .collect(Collectors.joining(","))).append(")");
         }
         if (Objects.nonNull(exceptionType)) {
             subQuery.append(" AND exception_type = ").append(exceptionType);
@@ -89,7 +88,7 @@ public class KwtVehicleExceptionRepository extends ServiceImpl<KwtVehicleExcepti
         return page(new Page<>(pageNum, pageSize),
                 Wrappers.<KwtVehicleException>lambdaQuery()
                         .eq(KwtVehicleException::getDelFlag, 0)
-                        .eq(Objects.nonNull(entId), KwtVehicleException::getEntId, entId)
+                        .in(CollectionUtils.isNotEmpty(wOrderIds), KwtVehicleException::getWOrderId, wOrderIds)
                         .eq(Objects.nonNull(exceptionType), KwtVehicleException::getExceptionType, exceptionType)
                         .like(StringUtils.isNotBlank(truckNo), KwtVehicleException::getTruckNo, truckNo)
                         .apply(subQuery.toString())
@@ -122,9 +121,11 @@ public class KwtVehicleExceptionRepository extends ServiceImpl<KwtVehicleExcepti
                 ));
     }
 
-    public List<KwtVehicleException> queryByEnt(Long entId) {
+    public List<KwtVehicleException> queryByEnt(List<Long> waybillOrderIds, Date startDate,Date endDate) {
         return list(Wrappers.<KwtVehicleException>lambdaQuery()
                 .eq(KwtVehicleException::getDelFlag, 0)
-                .eq(KwtVehicleException::getEntId, entId));
+                .in(KwtVehicleException::getWOrderId, waybillOrderIds)
+                .ge(KwtVehicleException::getCreateTime,startDate)
+                .le(KwtVehicleException::getCreateTime,endDate));
     }
 }

+ 9 - 0
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/repository/KwtWaybillOrderRepository.java

@@ -322,4 +322,13 @@ public class KwtWaybillOrderRepository extends ServiceImpl<KwtWaybillOrderMapper
                 .ne(KwtWaybillOrder::getId, waybillId)
                 .orderByAsc(KwtWaybillOrder::getCreateTime));
     }
+
+    public List<KwtWaybillOrder> queryByBillOrderIdsAndTime(Set<Long> wayOrderIds, Date startDate, Date endDate) {
+        return list(Wrappers.<KwtWaybillOrder>lambdaQuery()
+                .in(KwtWaybillOrder::getId, wayOrderIds)
+                .eq(KwtWaybillOrder::getDelFlag, 0)
+                .ge(KwtWaybillOrder::getCreateTime, startDate)
+                .le(KwtWaybillOrder::getCreateTime, endDate)
+        );
+    }
 }

+ 7 - 10
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/KwfTaskService.java

@@ -83,9 +83,7 @@ public class KwfTaskService {
         //查询子运单
         List<KwtWaybillOrderSubtask> kwtWaybillOrderSubtasks = waybillOrderSubtaskDao.selectList(Wrappers.<KwtWaybillOrderSubtask>lambdaQuery()
                 .in(KwtWaybillOrderSubtask::getLOrderId, logOrderIds)
-                .eq(BaseModel::getDelFlag, 0)
-                .ge(BaseModel::getCreateTime, startDate)
-                .le(BaseModel::getCreateTime, endDate));
+                .eq(BaseModel::getDelFlag, 0));
         if(org.apache.commons.collections4.CollectionUtils.isEmpty(kwtWaybillOrderSubtasks)){
             log.info("该企业下子运单的订单数据不存在,企业id:{}", entId);
             return new TaskStatisticsVo();
@@ -94,7 +92,7 @@ public class KwfTaskService {
                 .map(KwtWaybillOrderSubtask::getWOrderId)
                 .collect(Collectors.toSet());
 
-        List<KwtWaybillOrder> waybillOrder= kwtWaybillOrderRepository.queryByBillOrderIds(wayOrderIds);
+        List<KwtWaybillOrder> waybillOrder= kwtWaybillOrderRepository.queryByBillOrderIdsAndTime(wayOrderIds,startDate, endDate);
         //任务总数
         int totalCount =0;
         List<KwtWaybillOrder> kwtWaybillOrderStream = waybillOrder.stream()
@@ -107,13 +105,11 @@ public class KwfTaskService {
         }else {
             totalCount = kwtWaybillOrderStream.size();
         }
-        List<Integer> tasking = Arrays.asList(CarWaybillV1Enum.CANCELLED.getCode(),
-                CarWaybillV1Enum.COMPLETED.getCode(),
-                CarWaybillV1Enum.COMPLETION_LOADING.getCode(),
-                CarWaybillV1Enum.REVIEW_REJECTION.getCode());
+        List<Integer> tasking = Arrays.asList(CarWaybillV1Enum.PENDING_VEHICLE.getCode(),CarWaybillV1Enum.WEIGHT_TRAFFIC.getCode(), CarWaybillV1Enum.REFUSE_TRAFFIC.getCode(),
+                CarWaybillV1Enum.EXIT_COMPLETED.getCode(), CarWaybillV1Enum.WAIT_LOADING.getCode());
         //处理中的任务数
         long taskingCount = waybillOrder.stream()
-                .filter(w -> !tasking.contains(w.getStatus()) && StringUtils.isNotBlank(w.getTruckNo()))
+                .filter(w -> tasking.contains(w.getStatus()) && StringUtils.isNotBlank(w.getTruckNo()))
                 .count();
         //已经完成的任务数
         long completedCount = waybillOrder.stream()
@@ -142,8 +138,9 @@ public class KwfTaskService {
         if (yesterdayTaskCount != 0.0){
             growthRate= (double) (yesterdayTaskCount - taskTotalBeforeYesterday) / taskTotalBeforeYesterday * 100;
         }
+        List<Long> waybillOrderIds = waybillOrder.stream().map(KwtWaybillOrder::getId).collect(Collectors.toList());
         //查询车辆异常车辆数
-        List<KwtVehicleException> vehicleExceptions = kwtVehicleExceptionRepository.queryByEnt(entId);
+        List<KwtVehicleException> vehicleExceptions = kwtVehicleExceptionRepository.queryByEnt(waybillOrderIds,startDate,endDate);
         Map<Long, List<KwtVehicleException>> vehicleExceptionMap = Optional.ofNullable(vehicleExceptions)
                 .orElse(List.of())
                 .stream()

+ 31 - 1
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/VehicleExceptionService.java

@@ -6,18 +6,21 @@ import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
 import com.sckw.core.model.enums.AddressTypeEnum;
 import com.sckw.core.utils.DateUtils;
+import com.sckw.core.web.context.LoginUserHolder;
 import com.sckw.core.web.response.BaseIotResult;
 import com.sckw.core.web.response.result.PageDataResult;
 import com.sckw.transport.api.feign.VehicleTraceClient;
 import com.sckw.transport.api.model.dto.VehicleDataDTO;
 import com.sckw.transport.api.model.dto.VehicleReturnData;
 import com.sckw.transport.model.KwtLogisticsOrderAddress;
+import com.sckw.transport.model.KwtLogisticsOrderUnit;
 import com.sckw.transport.model.KwtVehicleException;
 import com.sckw.transport.model.KwtWaybillOrderSubtask;
 import com.sckw.transport.model.dto.VehicleExceptionQueryReq;
 import com.sckw.transport.model.enuma.VehicleExceptionTypeEnum;
 import com.sckw.transport.model.vo.VehicleExceptionVo;
 import com.sckw.transport.repository.KwtLogisticsOrderAddressRepository;
+import com.sckw.transport.repository.KwtLogisticsOrderUnitRepository;
 import com.sckw.transport.repository.KwtVehicleExceptionRepository;
 import com.sckw.transport.repository.KwtWaybillOrderSubtaskRepository;
 import lombok.RequiredArgsConstructor;
@@ -46,6 +49,7 @@ public class VehicleExceptionService {
     private final VehicleTraceClient vehicleTraceClient;
     private final KwtWaybillOrderSubtaskRepository waybillOrderSubtaskRepository;
     private final KwtLogisticsOrderAddressRepository logisticsOrderAddressRepository;
+    private final KwtLogisticsOrderUnitRepository kwtLogisticsOrderUnitRepository;
     
     /**
      * 分页查询车辆异常图片信息
@@ -274,9 +278,35 @@ public class VehicleExceptionService {
             String endDate = DateUtils.format(DateUtils.getEndOfDay(new Date()), DateUtils.DATE_TIME_PATTERN);
             req.setEndDate(endDate);
         }
+
+        Long entId = Objects.nonNull(req.getEntId()) ? req.getEntId() : LoginUserHolder.getEntId();
+        //根据企业查询物流订单
+        List<KwtLogisticsOrderUnit> kwtLogisticsOrderUnits = kwtLogisticsOrderUnitRepository.queryByEntId(entId);
+        if (CollectionUtils.isEmpty(kwtLogisticsOrderUnits)) {
+            log.info("该企业未查询到物流订单数据,企业id:{}", entId);
+            return PageDataResult.empty(req.getPageNum(), req.getPageSize());
+        }
+        //获取物流订单号
+        Set<Long> logOrderIds = kwtLogisticsOrderUnits.stream()
+                .map(KwtLogisticsOrderUnit::getLOrderId)
+                .collect(Collectors.toSet());
+        if (CollectionUtils.isEmpty(logOrderIds)) {
+            log.info("该企业下物流订单数据,企业id:{}", entId);
+            return PageDataResult.empty(req.getPageNum(), req.getPageSize());
+        }
+        //查询物流运动
+        List<KwtWaybillOrderSubtask> kwtWaybillOrderSubtasks = waybillOrderSubtaskRepository.queryByLogIds(new ArrayList<>(logOrderIds));
+        if (CollectionUtils.isEmpty(kwtWaybillOrderSubtasks)) {
+            log.info("该企业下没有物流运单数据,企业id:{}", entId);
+            return PageDataResult.empty(req.getPageNum(), req.getPageSize());
+        }
+        //获取运单号
+        Set<Long> wOrderIds = kwtWaybillOrderSubtasks.stream()
+                .map(KwtWaybillOrderSubtask::getWOrderId)
+                .collect(Collectors.toSet());
         // 分页查询异常图片数据
         IPage<KwtVehicleException> page = exceptionImageRepository.queryExceptionImagePage1(
-                req.getEntId(),
+                wOrderIds,
                 req.getExceptionType(),
                 req.getTruckNo(),
                 req.getStartDate(),

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

@@ -988,7 +988,7 @@ public class kwfTruckTraceService {
         if (Objects.nonNull(req.getStatus())) {
             taskingStatus.add(req.getStatus());
         } else {
-            taskingStatus.addAll(Arrays.asList(CarWaybillV1Enum.PENDING_VEHICLE.getCode(), CarWaybillV1Enum.REFUSE_TRAFFIC.getCode(),
+            taskingStatus.addAll(Arrays.asList(CarWaybillV1Enum.PENDING_VEHICLE.getCode(),CarWaybillV1Enum.WEIGHT_TRAFFIC.getCode(), CarWaybillV1Enum.REFUSE_TRAFFIC.getCode(),
                     CarWaybillV1Enum.EXIT_COMPLETED.getCode(), CarWaybillV1Enum.WAIT_LOADING.getCode()));
         }