Browse Source

优化获取当前巡检计划状态超时处理
优化巡检轨迹查询为空的问题

linzhiwei 2 years ago
parent
commit
eb812f31a8

+ 3 - 1
snws-gps/snws-gps-boot/src/main/java/com/tofly/gpsboot/controller/es/GpsUploadController.java

@@ -202,12 +202,14 @@ public class GpsUploadController {
             pageGpsInfo =  iGpsUploadService.getPageGpsInfo(page, dto);
 
         }else {
+            dto.setUserIds("");
             List<CarGpsUpload> all = iCarGpsUploadService.getAll(dto);
             totalMileage = all.stream().map(CarGpsUpload::getDistance).reduce(BigDecimal.ZERO, BigDecimal::add).divide(BigDecimal.valueOf(1000), 4, BigDecimal.ROUND_HALF_UP);
 
             totalTimeConsuming = all.stream()
                     .filter(g -> 0 != BigDecimal.ZERO.compareTo(g.getDistance()))
-                    .map(CarGpsUpload::getGpsTimespan).reduce(BigDecimal.ZERO, BigDecimal::add).divide(BigDecimal.valueOf(3600), 4, BigDecimal.ROUND_HALF_UP);
+                    .map(CarGpsUpload::getGpsTimespan)
+                    .filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add).divide(BigDecimal.valueOf(3600), 4, BigDecimal.ROUND_HALF_UP);
             if (0 != BigDecimal.ZERO.compareTo(totalTimeConsuming)) {
                 overallAverageSpeed = totalMileage.divide(totalTimeConsuming, 2, BigDecimal.ROUND_HALF_UP);
             }

+ 12 - 6
snws-gps/snws-gps-boot/src/main/java/com/tofly/gpsboot/handler/plan/PlanTimeoutHandler.java

@@ -12,7 +12,10 @@ import org.springframework.stereotype.Component;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.time.LocalDateTime;
+import java.util.ArrayList;
+import java.util.HashSet;
 import java.util.List;
+import java.util.Set;
 
 /**
  * 计划超时处理
@@ -26,16 +29,19 @@ public class PlanTimeoutHandler {
 
     @Transactional(rollbackFor = Exception.class)
     public void planTimeoutHandler(String param) {
-        // 获取当前巡检计划状态为5已开始未执行 3 正在执行的数据
+        // 获取当前巡检计划状态为5已开始未执行 3 正在执行的数据 2已开始数据
+        List<String> planStateList = new ArrayList<>();
+        planStateList.add(PlanStateEnum.PLAN_STATE_BEING_PERFORMED.getCode());
+        planStateList.add(PlanStateEnum.PLAN_STATE_EXECUTION_NOT_STARTED.getCode());
+        planStateList.add(PlanStateEnum.PLAN_STATE_NOT_START_ON_TIME.getCode());
+
         List<Plan> planList = planService.list(new QueryWrapper<Plan>().lambda()
-                .eq(Plan::getPlanState, PlanStateEnum.PLAN_STATE_BEING_PERFORMED.getCode())
-                .or()
-                .eq(Plan::getPlanState, PlanStateEnum.PLAN_STATE_EXECUTION_NOT_STARTED.getCode()));
+                .in(Plan::getPlanState, planStateList));
         // 判断计划结束时间是否小于当前时间,若小于状态则改为 11 计划未完成,已超时
         LocalDateTime now = LocalDateTime.now();
-        planList.forEach(info ->{
+        planList.forEach(info -> {
             LocalDateTime dateTime = DateTimeUtil.fromLong2LocalDateTime(info.getPlanEnddate().getTime());
-            if(!now.isBefore(dateTime)){
+            if (!now.isBefore(dateTime)) {
                 info.setPlanState(PlanStateEnum.PLAN_STATE_PLAN_UNFINISHED.getCode());
             }
         });

+ 1 - 1
snws-gps/snws-gps-boot/src/main/resources/mapper/plan/PlanFactoryMapper.xml

@@ -103,7 +103,7 @@
         on t1.belong_station_id = t2.id
         LEFT JOIN tf_monitor_pump_station_w t3
         on t1.belong_Pump_Id = t3.id
-        RIGHT JOIN tf_ywpn_plan_factory t4
+        LEFT JOIN tf_ywpn_plan_factory t4
         on t1.id = t4.device_Id
         where 1=1
         <if test="dto.category != null ">