longz
2026-07-20 65ea660821332196676a496e0306c7549b82569d
fix: 兼容预约充电时段校验
3个文件已修改
26 ■■■■■ 已修改文件
ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/vo/SiteInfoVO.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/SiteController.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/vo/SiteInfoVO.java
@@ -43,6 +43,8 @@
    private String reservationStartTime;
    @ApiModelProperty(value = "允许预约结束时间,格式HH:mm")
    private String reservationEndTime;
    @ApiModelProperty(value = "最早可提前预约分钟数")
    private Integer reservationAheadMinute;
    @ApiModelProperty(value = "是否支持VIN码识别")
    private Integer vinFlag;
ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/SiteController.java
@@ -204,6 +204,7 @@
        siteInfoVO.setSupportOrder(site.getSupportOrder());
        siteInfoVO.setReservationStartTime(site.getReservationStartTime());
        siteInfoVO.setReservationEndTime(site.getReservationEndTime());
        siteInfoVO.setReservationAheadMinute(site.getReservationAheadMinute());
        siteInfoVO.setVinFlag(one.getVinFlag());
        return R.ok(siteInfoVO);
    }
@@ -282,6 +283,7 @@
        siteInfoVO.setSupportOrder(site.getSupportOrder());
        siteInfoVO.setReservationStartTime(site.getReservationStartTime());
        siteInfoVO.setReservationEndTime(site.getReservationEndTime());
        siteInfoVO.setReservationAheadMinute(site.getReservationAheadMinute());
        siteInfoVO.setVinFlag(one.getVinFlag());
        return R.ok(siteInfoVO);
    }
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java
@@ -1577,14 +1577,32 @@
                || !StringUtils.hasLength(site.getReservationEndTime())) {
            return AjaxResult.error("电站尚未配置预约时段");
        }
        LocalTime start = LocalTime.parse(site.getReservationStartTime(), DateTimeFormatter.ofPattern("HH:mm"));
        LocalTime end = LocalTime.parse(site.getReservationEndTime(), DateTimeFormatter.ofPattern("HH:mm"));
        LocalTime start = parseReservationClock(site.getReservationStartTime());
        LocalTime end = parseReservationClock(site.getReservationEndTime());
        if (start == null || end == null) {
            return AjaxResult.error("电站预约时段配置不正确");
        }
        if (!isTimeInWindow(reservationTime.toLocalTime(), start, end)) {
            return AjaxResult.error("预约时间不在允许预约时段内");
        }
        return null;
    }
    private LocalTime parseReservationClock(String value) {
        if (!StringUtils.hasLength(value)) {
            return null;
        }
        String[] parts = value.trim().split(":");
        if (parts.length < 2) {
            return null;
        }
        try {
            return LocalTime.of(Integer.parseInt(parts[0]), Integer.parseInt(parts[1]));
        } catch (RuntimeException e) {
            return null;
        }
    }
    private boolean isTimeInWindow(LocalTime value, LocalTime start, LocalTime end) {
        if (start.equals(end)) {
            return true;