redis新增ecu_sn的区域id
This commit is contained in:
parent
ce54a49c7e
commit
bad1d0435b
@ -13,5 +13,5 @@ public interface EbikeContents {
|
||||
/**
|
||||
* 中控ecu区域id
|
||||
*/
|
||||
String ECU_SN = "bike:ecusn:regionid";
|
||||
String ECU_SN = "bike:ecusn:regionid:";
|
||||
}
|
||||
|
||||
@ -0,0 +1,21 @@
|
||||
package com.cdzy.operations.model.vo;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* @author yanglei
|
||||
* @since 2026-03-05 11:22
|
||||
*/
|
||||
@Data
|
||||
public class EbikeEcuSnInfoVo {
|
||||
|
||||
/**
|
||||
* 车辆编号
|
||||
*/
|
||||
private String bikeCode;
|
||||
|
||||
/**
|
||||
* 中控SN码
|
||||
*/
|
||||
private String ecuSn;
|
||||
}
|
||||
@ -23,13 +23,18 @@ import com.cdzy.operations.mapper.EbikeDefaultBillingConfigurationMapper;
|
||||
import com.cdzy.operations.mapper.EbikeRegionMapper;
|
||||
import com.cdzy.operations.mapper.EbikeSiteMapper;
|
||||
import com.cdzy.operations.mapper.EbikeSpecialBillingConfigurationMapper;
|
||||
import com.cdzy.operations.model.dto.*;
|
||||
import com.cdzy.operations.model.dto.EbikeBikeInfoDto;
|
||||
import com.cdzy.operations.model.dto.EbikeDto;
|
||||
import com.cdzy.operations.model.dto.EbikeScanInfoDto;
|
||||
import com.cdzy.operations.model.dto.EbikeScanOrderDto;
|
||||
import com.cdzy.operations.model.dto.EbikeUserBikeInfo;
|
||||
import com.cdzy.operations.model.dto.EbikeUserLockDto;
|
||||
import com.cdzy.operations.model.entity.EbikeBatteryInfo;
|
||||
import com.cdzy.operations.model.entity.EbikeBikeInfo;
|
||||
import com.cdzy.operations.model.entity.EbikeBikeOrder;
|
||||
import com.cdzy.operations.model.entity.EbikeBikeQr;
|
||||
import com.cdzy.operations.model.entity.EbikeDefaultBillingConfiguration;
|
||||
import com.cdzy.operations.model.entity.EbikeCarrierConfiguration;
|
||||
import com.cdzy.operations.model.entity.EbikeDefaultBillingConfiguration;
|
||||
import com.cdzy.operations.model.entity.EbikeEcuInfo;
|
||||
import com.cdzy.operations.model.entity.EbikeInventoryRecord;
|
||||
import com.cdzy.operations.model.entity.EbikeRegion;
|
||||
@ -37,7 +42,13 @@ import com.cdzy.operations.model.entity.EbikeSite;
|
||||
import com.cdzy.operations.model.entity.EbikeSpecialBillingConfiguration;
|
||||
import com.cdzy.operations.model.entity.EbikeSpecialDay;
|
||||
import com.cdzy.operations.model.entity.EbikeSpecialTime;
|
||||
import com.cdzy.operations.model.vo.*;
|
||||
import com.cdzy.operations.model.vo.EbikeBatchLaunchVo;
|
||||
import com.cdzy.operations.model.vo.EbikeBatchUnLaunchVo;
|
||||
import com.cdzy.operations.model.vo.EbikeBikeBindVo;
|
||||
import com.cdzy.operations.model.vo.EbikeBikeRadiusVo;
|
||||
import com.cdzy.operations.model.vo.EbikeEcuMsgDto;
|
||||
import com.cdzy.operations.model.vo.EbikeEcuSnInfoVo;
|
||||
import com.cdzy.operations.model.vo.EbikeInventoryVo;
|
||||
import com.cdzy.operations.service.EbikeBikeInfoService;
|
||||
import com.cdzy.operations.service.EbikeCarrierConfigurationService;
|
||||
import com.cdzy.operations.service.EbikeEcuInfoService;
|
||||
@ -316,6 +327,11 @@ public class EbikeBikeInfoServiceImpl extends ServiceImpl<EbikeBikeInfoMapper, E
|
||||
EbikeCarrierConfiguration configuration = orderConfigurationService.getConfigurationByOperationId(region.getOperatorId());
|
||||
redisUtil.saveInspectionOrder(bikeCode, null, configuration != null ? configuration.getInspectionIntervalDuration() : 30L, TimeUnit.DAYS);
|
||||
}
|
||||
// 批量获取车辆编码获取车辆ecu_sn
|
||||
List<EbikeEcuSnInfoVo> bikeEcuSn = getEcuSn(bikeCodes);
|
||||
for (EbikeEcuSnInfoVo ecsSnInfo : bikeEcuSn) {
|
||||
redisUtil.saveEcuSnRegionId(ecsSnInfo.getEcuSn(), launchVo.getRegionId());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -329,6 +345,11 @@ public class EbikeBikeInfoServiceImpl extends ServiceImpl<EbikeBikeInfoMapper, E
|
||||
for (String bikeCode : bikeCodes) {
|
||||
redisUtil.deleteInspectionOrder(bikeCode);
|
||||
}
|
||||
// 批量获取车辆编码获取车辆ecu_sn
|
||||
List<EbikeEcuSnInfoVo> bikeEcuSn = getEcuSn(bikeCodes);
|
||||
for (EbikeEcuSnInfoVo ecsSnInfo : bikeEcuSn) {
|
||||
redisUtil.deleteEcuSnRegionId(ecsSnInfo.getEcuSn());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -549,6 +570,13 @@ public class EbikeBikeInfoServiceImpl extends ServiceImpl<EbikeBikeInfoMapper, E
|
||||
|
||||
@Override
|
||||
public void changeEcu(String bikeCode, String ecuSn) {
|
||||
// 获取旧的ecu_sn
|
||||
QueryWrapper query = QueryWrapper.create()
|
||||
.select(EBIKE_ECU_INFO.ECU_SN)
|
||||
.from(EBIKE_BIKE_INFO)
|
||||
.leftJoin(EBIKE_ECU_INFO).on(EBIKE_BIKE_INFO.ECU_ID.eq(EBIKE_ECU_INFO.ECU_ID))
|
||||
.where(EBIKE_BIKE_INFO.BIKE_CODE.eq(bikeCode));
|
||||
String oldEcuSn = this.mapper.selectOneByQueryAs(query, String.class);
|
||||
QueryWrapper queryWrapper = QueryWrapper.create()
|
||||
.where(EBIKE_ECU_INFO.ECU_SN.eq(ecuSn));
|
||||
EbikeEcuInfo ebikeEcuInfo = ebikeEcuInfoService.getOne(queryWrapper);
|
||||
@ -572,6 +600,11 @@ public class EbikeBikeInfoServiceImpl extends ServiceImpl<EbikeBikeInfoMapper, E
|
||||
throw new EbikeException("车辆骑行中暂时无法换绑");
|
||||
}
|
||||
updateById(bikeInfo);
|
||||
// 车辆上架,删除旧ecu_sn,保存新的ecu_sn
|
||||
if (bikeInfo.getStatus() == 1) {
|
||||
redisUtil.deleteEcuSnRegionId(oldEcuSn);
|
||||
redisUtil.saveEcuSnRegionId(ecuSn, bikeInfo.getRegionId());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -685,6 +718,21 @@ public class EbikeBikeInfoServiceImpl extends ServiceImpl<EbikeBikeInfoMapper, E
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 获取车辆列表的ecs_sn编码
|
||||
* @param bikeCodes 车辆编号列表
|
||||
* @return 中控sn码
|
||||
*/
|
||||
private List<EbikeEcuSnInfoVo> getEcuSn(List<String> bikeCodes) {
|
||||
QueryWrapper query = QueryWrapper.create()
|
||||
.select(EBIKE_BIKE_INFO.BIKE_CODE, EBIKE_ECU_INFO.ECU_SN)
|
||||
.from(EBIKE_BIKE_INFO)
|
||||
.leftJoin(EBIKE_ECU_INFO).on(EBIKE_BIKE_INFO.ECU_ID.eq(EBIKE_ECU_INFO.ECU_ID))
|
||||
.where(EBIKE_BIKE_INFO.BIKE_CODE.in(bikeCodes));
|
||||
return this.mapper.selectListByQueryAs(query, EbikeEcuSnInfoVo.class);
|
||||
}
|
||||
|
||||
|
||||
static EbikeSpecialDay getEbikeSpecialDay(List<EbikeSpecialDay> ebikeSpecialDays) {
|
||||
LocalDate today = LocalDate.now();
|
||||
DayOfWeek dayOfWeek = today.getDayOfWeek();
|
||||
|
||||
@ -401,6 +401,13 @@ public class EbikeBikeOrderServiceImpl extends ServiceImpl<EbikeBikeOrderMapper,
|
||||
|
||||
@Override
|
||||
public void batteryChange(EbikeBatteryChangeVo changeVo) {
|
||||
// 获取旧的ecu_sn
|
||||
QueryWrapper query = QueryWrapper.create()
|
||||
.select(EBIKE_ECU_INFO.ECU_SN)
|
||||
.from(EBIKE_BIKE_INFO)
|
||||
.leftJoin(EBIKE_ECU_INFO).on(EBIKE_BIKE_INFO.ECU_ID.eq(EBIKE_ECU_INFO.ECU_ID))
|
||||
.where(EBIKE_BIKE_INFO.BIKE_CODE.eq(changeVo.getBikeCode()));
|
||||
String oldEcuSn = bikeInfoMapper.selectOneByQueryAs(query, String.class);
|
||||
String bikeCode = changeVo.getBikeCode();
|
||||
String batteryCode = changeVo.getBatteryCode();
|
||||
QueryWrapper queryWrapper = QueryWrapper.create()
|
||||
@ -463,7 +470,11 @@ public class EbikeBikeOrderServiceImpl extends ServiceImpl<EbikeBikeOrderMapper,
|
||||
if (ebikeBikeInfo != null) {
|
||||
throw new EbikeException("该中控编号已绑定其他车辆");
|
||||
}
|
||||
|
||||
// 车辆上架,删除旧区域id,保存新区域id
|
||||
if (bikeInfo.getStatus() == 1) {
|
||||
redisUtil.deleteEcuSnRegionId(oldEcuSn);
|
||||
redisUtil.saveEcuSnRegionId(batteryCode, bikeInfo.getRegionId());
|
||||
}
|
||||
bikeInfo.setEcuId(ecuInfo.getEcuId());
|
||||
bikeInfo.setBatteryId(null);
|
||||
bikeInfoMapper.update(bikeInfo);
|
||||
|
||||
@ -1,5 +1,7 @@
|
||||
package com.cdzy.operations.utils;
|
||||
|
||||
import com.cdzy.common.enums.EbikeContents;
|
||||
import com.cdzy.operations.model.vo.EbikeEcuSnInfoVo;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.annotation.Qualifier;
|
||||
import org.springframework.data.redis.core.RedisTemplate;
|
||||
@ -544,6 +546,20 @@ public class RedisUtil {
|
||||
return get(Database.DB2, BIKE_ECU_PREFIX + ecuSn);
|
||||
}
|
||||
|
||||
/**
|
||||
* 数据库2专用:存储ecs_sn的区域id
|
||||
*/
|
||||
public void saveEcuSnRegionId(String ecsSn, Long regionId) {
|
||||
set(Database.DB2, EbikeContents.ECU_SN + ecsSn, regionId);
|
||||
}
|
||||
|
||||
/**
|
||||
* 数据库2专用:删除ecs_sn的区域id
|
||||
*/
|
||||
public void deleteEcuSnRegionId(String ecsSn) {
|
||||
delete(Database.DB2, EbikeContents.ECU_SN + ecsSn);
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量获取ECU信息(基于已知的SN列表)
|
||||
*
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user