diff --git a/ebike-maintenance/src/main/java/com/cdzy/ebikemaintenance/model/dto/response/ResEbikeInfoRegionDto.java b/ebike-maintenance/src/main/java/com/cdzy/ebikemaintenance/model/dto/response/ResEbikeInfoRegionDto.java index 75d383d5..83013e9b 100644 --- a/ebike-maintenance/src/main/java/com/cdzy/ebikemaintenance/model/dto/response/ResEbikeInfoRegionDto.java +++ b/ebike-maintenance/src/main/java/com/cdzy/ebikemaintenance/model/dto/response/ResEbikeInfoRegionDto.java @@ -42,6 +42,11 @@ public class ResEbikeInfoRegionDto { */ private Character state; + /** + * 电动车状态名称 + */ + private String stateName; + /** * 电动车编码 */ @@ -127,4 +132,9 @@ public class ResEbikeInfoRegionDto { */ private String latestTimestamp; + /** + * 间隔时间 + */ + private Integer intervalTime; + } diff --git a/ebike-maintenance/src/main/java/com/cdzy/ebikemaintenance/service/impl/EbikeBikeInfoServiceImpl.java b/ebike-maintenance/src/main/java/com/cdzy/ebikemaintenance/service/impl/EbikeBikeInfoServiceImpl.java index 2f06a2de..63c4b54a 100644 --- a/ebike-maintenance/src/main/java/com/cdzy/ebikemaintenance/service/impl/EbikeBikeInfoServiceImpl.java +++ b/ebike-maintenance/src/main/java/com/cdzy/ebikemaintenance/service/impl/EbikeBikeInfoServiceImpl.java @@ -19,6 +19,7 @@ import com.cdzy.ebikemaintenance.service.EbikeBikeOrderService; import com.cdzy.ebikemaintenance.utils.GeoCodingUtil; import com.cdzy.ebikemaintenance.utils.MinioUtil; import com.cdzy.ebikemaintenance.utils.RedisUtil; +import com.cdzy.ebikemaintenance.utils.TimeUtils; import com.ebike.feign.clients.OperateFeignClient; import com.ebike.feign.clients.StaffFeignClient; import com.ebike.feign.model.res.ReqEcuSnDto; @@ -62,8 +63,7 @@ import static com.cdzy.ebikemaintenance.model.pojo.table.EbikeBikeOrderTableDef. import static com.cdzy.ebikemaintenance.model.pojo.table.EbikeCarStatusInfoTableDef.EBIKE_CAR_STATUS_INFO; import static com.cdzy.ebikemaintenance.model.pojo.table.EbikeDispatchRecordsTableDef.EBIKE_DISPATCH_RECORDS; import static com.cdzy.ebikemaintenance.model.pojo.table.EbikeEcuInfoTableDef.EBIKE_ECU_INFO; -import static com.mybatisflex.core.query.QueryMethods.max; -import static com.mybatisflex.core.query.QueryMethods.select; +import static com.mybatisflex.core.query.QueryMethods.*; /** * 车辆基本信息 服务层实现。 @@ -270,7 +270,7 @@ public class EbikeBikeInfoServiceImpl extends ServiceImpl= start 返回正数,反之返回负数) + */ + public static long daysBetween(LocalDateTime start, LocalDateTime end) { + return ChronoUnit.DAYS.between( + start.toLocalDate(), + end.toLocalDate() + ); + } + + /** + * 判断目标时间是否在时间范围内(支持跨天时间) + * @param target 要检查的时间 + * @param start 开始时间 + * @param end 结束时间 + * @return 是否在时间范围内 + */ + public static boolean isTimeWithinRange(LocalTime target, + LocalTime start, + LocalTime end) { + // 处理跨天时间的情况(如 22:00 - 02:00) + if (start.isAfter(end)) { + return !target.isBefore(start) || !target.isAfter(end); + } + + // 普通时间范围判断 + return !target.isBefore(start) && !target.isAfter(end); + } + + /** + * 计算时间戳到当前时间的小时间隔(整数) + * @param timestamp 毫秒时间戳 + * @return 间隔小时数(向下取整) + */ + public static int hoursSince(long timestamp) { + long now = System.currentTimeMillis(); + return (int) Duration.between( + Instant.ofEpochMilli(timestamp), + Instant.ofEpochMilli(now) + ).toHours(); + } + +}