From 8ceb589d37614124816a98f4e09153a50e43ff96 Mon Sep 17 00:00:00 2001 From: attiya <2413103649@qq.com> Date: Thu, 5 Jun 2025 12:01:10 +0800 Subject: [PATCH] =?UTF-8?q?=E8=BF=90=E8=90=A5=E5=8C=BA=E8=BD=A6=E8=BE=86?= =?UTF-8?q?=E5=88=97=E8=A1=A8=EF=BC=88=E4=BB=93=E5=BA=93=E5=A4=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dto/response/ResEbikeInfoRegionDto.java | 10 + .../impl/EbikeBikeInfoServiceImpl.java | 23 +- .../com/cdzy/ebikemaintenance/test/Tese.java | 83 ------- .../ebikemaintenance/utils/TimeUtils.java | 211 ++++++++++++++++++ 4 files changed, 236 insertions(+), 91 deletions(-) delete mode 100644 ebike-maintenance/src/main/java/com/cdzy/ebikemaintenance/test/Tese.java create mode 100644 ebike-maintenance/src/main/java/com/cdzy/ebikemaintenance/utils/TimeUtils.java 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(); + } + +}