Procházet zdrojové kódy

车载心跳监测接口定义修改

gao.qiang před 2 týdny
rodič
revize
34c0bc2bf8

+ 21 - 2
vehicle-sdk/src/main/java/com/ozs/controller/upload/GeoHazardMonitorTokenController.java

@@ -93,8 +93,10 @@ import org.springframework.web.bind.annotation.RestController;
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
 import java.text.SimpleDateFormat;
+import java.time.Instant;
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
+import java.time.temporal.ChronoUnit;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Calendar;
@@ -1729,9 +1731,26 @@ public class GeoHazardMonitorTokenController {
             if (baseTerminalLogService.save(baseTerminalLog) && update) {
                 if (!ObjectUtils.isEmpty(baseTerminalLog.getTrainNum()) && !ObjectUtils.isEmpty(baseTerminalLog.getFrontTrainNum())) {
                     VehiclePosition vehiclePosition = vehiclePositionService.getOne(new LambdaQueryWrapper<VehiclePosition>().eq(VehiclePosition::getVehicleCode, baseTerminalLog.getTrainNum()).orderByDesc(VehiclePosition::getCreateTime).last("limit 1"));
-                    VehiclePosition positionServiceOne = vehiclePositionService.getOne(new LambdaQueryWrapper<VehiclePosition>().eq(VehiclePosition::getVehicleCode, baseTerminalLog.getFrontTrainNum()).orderByDesc(VehiclePosition::getCreateTime).last("limit 1"));
+                    // 获取当前时间的前5分钟
+                    Date fiveMinutesAgo = Date.from(Instant.now().minus(5, ChronoUnit.MINUTES));
+                    log.info("fiveMinutesAgo:{}", fiveMinutesAgo);
+                    VehiclePosition positionServiceOne = vehiclePositionService.getOne(new LambdaQueryWrapper<VehiclePosition>()
+                            .eq(VehiclePosition::getVehicleCode, baseTerminalLog.getFrontTrainNum())
+                            .eq(VehiclePosition::getLineDir, vehiclePosition.getLineDir())
+                            .ge(VehiclePosition::getCreateTime, fiveMinutesAgo) // 添加条件:createTime大于当前时间前5分钟
+                            .orderByDesc(VehiclePosition::getCreateTime).last("limit 1"));
                     Map<String, Object> map = new HashMap<>();
-                    map.put("frontVehicleDistance", vehiclePosition.getTravelMile() - positionServiceOne.getTravelMile());
+                    if (!ObjectUtils.isEmpty(positionServiceOne) && !ObjectUtils.isEmpty(vehiclePosition)) {
+                        if ((vehiclePosition.getLineDir() == 1 && positionServiceOne.getTravelMile() >= vehiclePosition.getTravelMile()) ||
+                                (vehiclePosition.getLineDir() == 2 && positionServiceOne.getTravelMile() <= vehiclePosition.getTravelMile())) {
+                            int dif = vehiclePosition.getTravelMile() - positionServiceOne.getTravelMile();
+                            map.put("frontVehicleDistance", Math.abs(dif));
+                        } else {
+                            map.put("frontVehicleDistance", "_");
+                        }
+                    } else {
+                        map.put("frontVehicleDistance", "_");
+                    }
                     AjaxResults1 = new AjaxResults(1, "ok", map);
                 } else {
                     AjaxResults1 = new AjaxResults(1, "ok");