车辆上/下架

This commit is contained in:
attiya 2025-11-05 15:14:40 +08:00
parent 7c8b9dfeb8
commit e3c3d7479a
6 changed files with 221 additions and 10 deletions

View File

@ -1,14 +1,16 @@
package com.cdzy.operations.controller;
import com.cdzy.common.model.request.PageParam;
import com.cdzy.common.model.response.JsonResult;
import com.cdzy.operations.model.entity.EbikeBikeInfo;
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.service.EbikeBikeInfoService;
import com.mybatisflex.core.paginate.Page;
import jakarta.annotation.Resource;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
/**
* 车辆基本信息 控制层
@ -26,6 +28,7 @@ public class EbikeBikeInfoController {
/**
* 整车绑定
*
* @param bindVo 绑定信息
* @return 绑定结果
*/
@ -34,4 +37,51 @@ public class EbikeBikeInfoController {
ebikeBikeInfoService.bind(bindVo);
return JsonResult.success();
}
/**
* 未上架车辆分页查询
*
* @param pageParam 分页参数
* @return 结果
*/
@GetMapping("unLaunchPage")
public JsonResult<?> unLaunchPage(PageParam pageParam) {
Page<EbikeBikeInfo> page = ebikeBikeInfoService.unLaunchPage(pageParam);
return JsonResult.success(page);
}
/**
* 上架车辆分页查询
*
* @param pageParam 分页参数
* @return 结果
*/
@GetMapping("launchPage")
public JsonResult<?> launchPage(PageParam pageParam) {
Page<EbikeBikeInfo> page = ebikeBikeInfoService.launchPage(pageParam);
return JsonResult.success(page);
}
/**
* 批量上架
*
* @return 结果
*/
@PostMapping("batchLaunch")
public JsonResult<?> batchLaunch(@Validated @RequestBody EbikeBatchLaunchVo launchVo) {
ebikeBikeInfoService.batchLaunch(launchVo);
return JsonResult.success();
}
/**
* 批量下架
*
* @return 结果
*/
@PostMapping("batchUnLaunch")
public JsonResult<?> batchUnLaunch(@Validated @RequestBody EbikeBatchUnLaunchVo launchVo) {
ebikeBikeInfoService.batchUnLaunch(launchVo);
return JsonResult.success();
}
}

View File

@ -95,6 +95,20 @@ public class EbikeRegionController {
return JsonResult.success(list);
}
/**
* 查询所有运营中的运营区域表
*
* @return 所有数据
*/
@GetMapping("operationList")
public JsonResult<?> operationList() {
QueryWrapper queryWrapper = QueryWrapper.create()
.where(EBIKE_REGION.STATUS.eq(RegionStatus.OPERATION));
List<EbikeRegion> operationList = ebikeRegionService.list(queryWrapper);
return JsonResult.success(operationList);
}
/**
* 根据运营区域表主键获取详细信息
*

View File

@ -0,0 +1,40 @@
package com.cdzy.operations.model.vo;
import jakarta.validation.constraints.NotNull;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serial;
import java.io.Serializable;
import java.util.List;
/**
* 实体类
*
* @author attiya
* @since 2025-10-21
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class EbikeBatchLaunchVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* 车辆ID列表
*/
@NotNull(message = "车辆ID列表不能为空")
private List<Long> bikeIds;
/**
* 运营区ID
*/
@NotNull(message = "运营区ID不能为空")
private Long regionId;
}

View File

@ -0,0 +1,34 @@
package com.cdzy.operations.model.vo;
import jakarta.validation.constraints.NotNull;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serial;
import java.io.Serializable;
import java.util.List;
/**
* 实体类
*
* @author attiya
* @since 2025-10-21
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class EbikeBatchUnLaunchVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* 车辆ID列表
*/
@NotNull(message = "车辆ID列表不能为空")
private List<Long> bikeIds;
}

View File

@ -1,8 +1,12 @@
package com.cdzy.operations.service;
import com.cdzy.operations.model.vo.EbikeBikeBindVo;
import com.mybatisflex.core.service.IService;
import com.cdzy.common.model.request.PageParam;
import com.cdzy.operations.model.entity.EbikeBikeInfo;
import com.cdzy.operations.model.vo.EbikeBatchLaunchVo;
import com.cdzy.operations.model.vo.EbikeBatchUnLaunchVo;
import com.cdzy.operations.model.vo.EbikeBikeBindVo;
import com.mybatisflex.core.paginate.Page;
import com.mybatisflex.core.service.IService;
import org.postgresql.geometric.PGpolygon;
import java.util.List;
@ -27,4 +31,30 @@ public interface EbikeBikeInfoService extends IService<EbikeBikeInfo> {
* @return 列表
*/
List<EbikeBikeInfo> list(PGpolygon polygon);
/**
* 上架车辆分页查询
* @param pageParam 分页参数
* @return 结果
*/
Page<EbikeBikeInfo> launchPage(PageParam pageParam);
/**
* 未上架车辆分页查询
* @param pageParam 分页参数
* @return 结果
*/
Page<EbikeBikeInfo> unLaunchPage(PageParam pageParam);
/**
* 批量上架
* @param launchVo 上架参数
*/
void batchLaunch(EbikeBatchLaunchVo launchVo);
/**
* 批量下架
* @param launchVo 下架参数
*/
void batchUnLaunch(EbikeBatchUnLaunchVo launchVo);
}

View File

@ -2,18 +2,20 @@ package com.cdzy.operations.service.impl;
import cn.dev33.satoken.stp.StpUtil;
import com.cdzy.common.ex.EbikeException;
import com.cdzy.operations.enums.BatteryStatus;
import com.cdzy.operations.enums.BikeQrStatus;
import com.cdzy.operations.enums.BikeStatus;
import com.cdzy.operations.enums.BikeUsageStatus;
import com.cdzy.common.model.request.PageParam;
import com.cdzy.operations.enums.*;
import com.cdzy.operations.mapper.*;
import com.cdzy.operations.model.entity.*;
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.EbikeInventoryVo;
import com.cdzy.operations.service.EbikeBikeInfoService;
import com.cdzy.operations.service.EbikeInventoryRecordService;
import com.cdzy.operations.service.EbikeInventoryService;
import com.mybatisflex.core.paginate.Page;
import com.mybatisflex.core.query.QueryWrapper;
import com.mybatisflex.core.update.UpdateChain;
import com.mybatisflex.core.util.StringUtil;
import com.mybatisflex.spring.service.impl.ServiceImpl;
import jakarta.annotation.Resource;
@ -45,6 +47,9 @@ public class EbikeBikeInfoServiceImpl extends ServiceImpl<EbikeBikeInfoMapper, E
@Resource
EbikeBikeQrMapper bikeQrMapper;
@Resource
EbikeRegionMapper regionMapper;
@Resource
EbikeEcuInfoMapper ebikeEcuInfoMapper;
@ -195,4 +200,42 @@ public class EbikeBikeInfoServiceImpl extends ServiceImpl<EbikeBikeInfoMapper, E
return this.mapper.selectListByQuery(query);
}
@Override
public Page<EbikeBikeInfo> launchPage(PageParam pageParam) {
QueryWrapper query = QueryWrapper.create()
.select(EBIKE_BIKE_INFO.ALL_COLUMNS)
.from(EBIKE_BIKE_INFO)
.where(EBIKE_BIKE_INFO.STATUS.eq(BikeStatus.LAUNCH));
return this.mapper.paginate(pageParam.getPage(),query);
}
@Override
public Page<EbikeBikeInfo> unLaunchPage(PageParam pageParam) {
QueryWrapper query = QueryWrapper.create()
.select(EBIKE_BIKE_INFO.ALL_COLUMNS)
.from(EBIKE_BIKE_INFO)
.where(EBIKE_BIKE_INFO.STATUS.eq(BikeStatus.UN_LAUNCH));
return this.mapper.paginate(pageParam.getPage(),query);
}
@Override
public void batchLaunch(EbikeBatchLaunchVo launchVo) {
EbikeRegion region = regionMapper.selectOneById(launchVo.getRegionId());
if (region == null || region.getStatus() == RegionStatus.UN_OPERATION || region.getStatus() == RegionStatus.STOP_OPERATION) {
throw new EbikeException("该运营区不存在或未开始运营");
}
UpdateChain.of(EbikeBikeInfo.class)
.set(EBIKE_BIKE_INFO.STATUS, BikeStatus.LAUNCH)
.where(EBIKE_BIKE_INFO.BIKE_INFO_ID.in(launchVo.getBikeIds()))
.update();
}
@Override
public void batchUnLaunch(EbikeBatchUnLaunchVo launchVo) {
UpdateChain.of(EbikeBikeInfo.class)
.set(EBIKE_BIKE_INFO.STATUS, BikeStatus.UN_LAUNCH)
.where(EBIKE_BIKE_INFO.BIKE_INFO_ID.in(launchVo.getBikeIds()))
.update();
}
}