puzhibing
90 分钟以前 66a18938bf8935f331feb4c5d44fdc195ea5750c
修改bug
1个文件已添加
1个文件已修改
40 ■■■■■ 已修改文件
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
sql/20261013_card_full_card_no.sql 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java
@@ -2086,14 +2086,6 @@
        return StringUtils.hasLength(vin) ? vin.replaceAll("\\s+", "").toUpperCase(Locale.ROOT) : null;
    }
    private boolean vinMatches(String expectedVin, String actualVin) {
        if (!StringUtils.hasLength(expectedVin) || !StringUtils.hasLength(actualVin)) {
            return false;
        }
        return expectedVin.equals(actualVin)
                || expectedVin.equals(new StringBuilder(actualVin).reverse().toString());
    }
    @Scheduled(fixedDelay = 5000L)
    public void startDueReservationOrders() {
        LocalDateTime now = LocalDateTime.now();
@@ -2135,17 +2127,6 @@
            TChargingGun gun = chargingGunClient.getChargingGunById(latest.getChargingGunId()).getData();
            TChargingPile pile = chargingPileClient.getChargingPileById(gun.getChargingPileId()).getData();
            String actualVin = normalizeVin(check.getActualVin());
            String expectedVin = normalizeVin(latest.getExpectedVin());
            if (Integer.valueOf(1).equals(pile.getVinFlag())
                    && !vinMatches(expectedVin, actualVin)) {
                check.setStartupSuccess(3);
                check.setFailureCause(9);
                latest.setActualVin(actualVin);
                this.updateById(latest);
                redisService.setCacheObject("AQJC_" + latest.getChargingGunId(), check, 24L, TimeUnit.HOURS);
                refund(latest.getCode());
                return;
            }
            PlatformStartCharging command = new PlatformStartCharging();
            command.setTransaction_serial_number(latest.getCode());
            command.setCharging_pile_code(pile.getCode());
@@ -2156,7 +2137,7 @@
            latest.setActualVin(actualVin);
            this.updateById(latest);
            redisService.setCacheObject("AQJC_" + latest.getChargingGunId(), check, 24L, TimeUnit.HOURS);
            log.info(latest.getCode() + ":安全检测及VIN校验通过,下发启动充电命令:" + command);
            log.info(latest.getCode() + ":安全检测通过,下发启动充电命令:" + command);
            sendMessageClient.platformStartCharging(command);
            ScheduledExecutorService resultScheduler = Executors.newScheduledThreadPool(1);
            resultScheduler.scheduleAtFixedRate(() -> {
sql/20261013_card_full_card_no.sql
New file
@@ -0,0 +1,19 @@
-- 卡片管理:t_charging_card 新增「完整卡号」字段 full_card_no。
-- 用途:完整卡号固定 16 位,不足 16 位在前面补 0;仅用于充电桩发起充电时查询卡片,
--       不在 web 前端展示(实体侧 @JsonIgnore 不对外返回)。
-- 执行环境:Mycat 2.0(MySQL 5.7.33 兼容),逻辑库 charging_pile_account。
-- 注意:脚本不含 SET @变量 / PREPARE(Mycat 不支持);ALTER 为 DDL 不可回滚,执行前建议备份。
USE charging_pile_account;
-- 1. 新增完整卡号列(固定 16 位;仅充电查询,不对前端返回)
ALTER TABLE `t_charging_card`
  ADD COLUMN `full_card_no` varchar(16) NOT NULL DEFAULT '' COMMENT '完整卡号(固定16位,不足前补0,仅充电桩刷卡查询)' AFTER `card_no`;
-- 2. 历史数据回填:不足 16 位左补 0(card_no 已满 16 位保持不变;LPAD 幂等,可重复执行)
UPDATE `t_charging_card`
  SET `full_card_no` = LPAD(`card_no`, 16, '0');
-- 3. 唯一索引:保证充电查询唯一且高效
ALTER TABLE `t_charging_card`
  ADD UNIQUE KEY `uk_full_card_no` (`full_card_no`);