低电量不允许骑车

This commit is contained in:
attiya 2025-11-25 14:27:47 +08:00
parent 2218768ebe
commit 7ef5dd4baf
3 changed files with 51 additions and 16 deletions

View File

@ -20,7 +20,13 @@ public interface EbikeBikeOrderService extends IService<EbikeBikeOrder> {
/**
* 根据车辆编号bikeCode生成车辆巡检工单
* @param bikeCode 中控编码
* @param bikeCode 车辆编号
*/
void createInspectionSwapOrder(String bikeCode);
/**
* 根据车辆编号bikeCode生成车辆调度工单
* @param bikeCode 车辆编号
*/
void createDispatchSwapOrder(String bikeCode);
}

View File

@ -287,14 +287,14 @@ public class EbikeBikeInfoServiceImpl extends ServiceImpl<EbikeBikeInfoMapper, E
//车辆状态检查
if (info.getStatus() != BikeStatus.LAUNCH) {
throw new RuntimeException("车辆未上架,不可骑行");
throw new EbikeException("车辆未上架,不可骑行");
}
if (info.getUsageStatus() == BikeUsageStatus.CYCLING) {
throw new RuntimeException("车辆已被占用");
throw new EbikeException("车辆已被占用");
}
if (info.getUsageStatus() == BikeUsageStatus.REPAIR || info.getUsageStatus() == BikeUsageStatus.UNDER_REPAIR) {
throw new RuntimeException("车辆故障");
throw new EbikeException("车辆故障");
}
query.clear();
query.where(EBIKE_REGION.REGION_ID.eq(info.getRegionId()));
@ -302,16 +302,22 @@ public class EbikeBikeInfoServiceImpl extends ServiceImpl<EbikeBikeInfoMapper, E
//运营区是否运营中
if (region == null || region.getStatus() != RegionStatus.OPERATION) {
throw new RuntimeException("该区暂停运营中");
throw new EbikeException("该区暂停运营中");
}
//车辆是否在运营区内
boolean result = regionMapper.checkBikeInRegion(bikeCode);
if (!result) {
throw new RuntimeException("该车辆在运营区外,暂不能骑行");
throw new EbikeException("该车辆在运营区外,暂不能骑行");
}
EbikeEcuInfo ebikeEcuInfo = ebikeEcuInfoService.getEcu(bikeCode);
ResGPSDto resGPSDto = (ResGPSDto)redisUtil.get(RedisUtil.Database.DB2, ebikeEcuInfo.getEcuSn());
if (resGPSDto.getSoc() < 20){
throw new EbikeException("该车辆电量低,暂不能骑行");
}
ebikeEcuInfoService.unLock(ebikeEcuInfo);
info.setUsageStatus(BikeUsageStatus.CYCLING);

View File

@ -69,16 +69,8 @@ public class EbikeBikeOrderServiceImpl extends ServiceImpl<EbikeBikeOrderMapper,
@Override
public void createInspectionSwapOrder(String bikeCode) {
QueryWrapper queryWrapper = QueryWrapper.create()
.where(EBIKE_BIKE_INFO.BIKE_CODE.eq(bikeCode))
.where(EBIKE_BIKE_INFO.STATUS.eq(BikeStatus.LAUNCH));
EbikeBikeInfo bikeInfo = bikeInfoMapper.selectOneByQuery(queryWrapper);
if (bikeInfo == null) {
log.error("创建巡检工单失败,车辆不存在或未上架,bikeCode={} ", bikeCode);
throw new EbikeException("创建巡检工单失败,车辆编号错误");
}
queryWrapper.clear();
queryWrapper.where(EBIKE_BIKE_ORDER.BIKE_CODE.eq(bikeInfo.getBikeCode()))
EbikeBikeInfo bikeInfo = checkBikeCode(bikeCode);
QueryWrapper queryWrapper = QueryWrapper.create().where(EBIKE_BIKE_ORDER.BIKE_CODE.eq(bikeInfo.getBikeCode()))
.where(EBIKE_BIKE_ORDER.ORDER_TYPE.eq(BikeOrderType.INSPECTION));
EbikeBikeOrder bikeOrder = this.mapper.selectOneByQuery(queryWrapper);
if (bikeOrder != null) {
@ -93,4 +85,35 @@ public class EbikeBikeOrderServiceImpl extends ServiceImpl<EbikeBikeOrderMapper,
.build();
this.mapper.insert(ebikeBikeOrder);
}
@Override
public void createDispatchSwapOrder(String bikeCode) {
EbikeBikeInfo bikeInfo = checkBikeCode(bikeCode);
QueryWrapper queryWrapper = QueryWrapper.create().where(EBIKE_BIKE_ORDER.BIKE_CODE.eq(bikeInfo.getBikeCode()))
.where(EBIKE_BIKE_ORDER.ORDER_TYPE.eq(BikeOrderType.DISPATCH));
EbikeBikeOrder bikeOrder = this.mapper.selectOneByQuery(queryWrapper);
if (bikeOrder != null) {
log.error("车辆已存在调度工单,bikeCode={} ", bikeInfo.getBikeCode());
throw new EbikeException("车辆已存在调度工单");
}
EbikeBikeOrder ebikeBikeOrder = EbikeBikeOrder.builder()
.bikeCode(bikeInfo.getBikeCode())
.orderCode(snowFlakeIDKeyGenerator.nextId())
.orderType(BikeOrderType.DISPATCH)
.operatorId(bikeInfo.getOperatorId())
.build();
this.mapper.insert(ebikeBikeOrder);
}
EbikeBikeInfo checkBikeCode(String bikeCode) {
QueryWrapper queryWrapper = QueryWrapper.create()
.where(EBIKE_BIKE_INFO.BIKE_CODE.eq(bikeCode))
.where(EBIKE_BIKE_INFO.STATUS.eq(BikeStatus.LAUNCH));
EbikeBikeInfo bikeInfo = bikeInfoMapper.selectOneByQuery(queryWrapper);
if (bikeInfo == null) {
log.error("创建工单失败,车辆不存在或未上架,bikeCode={} ", bikeCode);
throw new EbikeException("创建工单失败,车辆编号错误");
}
return bikeInfo;
}
}