diff --git a/ebike-operations/src/main/java/com/cdzy/operations/controller/EbikeBikeInfoController.java b/ebike-operations/src/main/java/com/cdzy/operations/controller/EbikeBikeInfoController.java index 2caa82e..98ea931 100644 --- a/ebike-operations/src/main/java/com/cdzy/operations/controller/EbikeBikeInfoController.java +++ b/ebike-operations/src/main/java/com/cdzy/operations/controller/EbikeBikeInfoController.java @@ -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 page = ebikeBikeInfoService.unLaunchPage(pageParam); + return JsonResult.success(page); + } + + /** + * 上架车辆分页查询 + * + * @param pageParam 分页参数 + * @return 结果 + */ + @GetMapping("launchPage") + public JsonResult launchPage(PageParam pageParam) { + Page 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(); + } } diff --git a/ebike-operations/src/main/java/com/cdzy/operations/controller/EbikeRegionController.java b/ebike-operations/src/main/java/com/cdzy/operations/controller/EbikeRegionController.java index 4e4702d..cb92218 100644 --- a/ebike-operations/src/main/java/com/cdzy/operations/controller/EbikeRegionController.java +++ b/ebike-operations/src/main/java/com/cdzy/operations/controller/EbikeRegionController.java @@ -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 operationList = ebikeRegionService.list(queryWrapper); + return JsonResult.success(operationList); + } + /** * 根据运营区域表主键获取详细信息。 * diff --git a/ebike-operations/src/main/java/com/cdzy/operations/model/vo/EbikeBatchLaunchVo.java b/ebike-operations/src/main/java/com/cdzy/operations/model/vo/EbikeBatchLaunchVo.java new file mode 100644 index 0000000..7f4b2a8 --- /dev/null +++ b/ebike-operations/src/main/java/com/cdzy/operations/model/vo/EbikeBatchLaunchVo.java @@ -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 bikeIds; + + /** + * 运营区ID + */ + @NotNull(message = "运营区ID不能为空") + private Long regionId; + +} diff --git a/ebike-operations/src/main/java/com/cdzy/operations/model/vo/EbikeBatchUnLaunchVo.java b/ebike-operations/src/main/java/com/cdzy/operations/model/vo/EbikeBatchUnLaunchVo.java new file mode 100644 index 0000000..2b8522c --- /dev/null +++ b/ebike-operations/src/main/java/com/cdzy/operations/model/vo/EbikeBatchUnLaunchVo.java @@ -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 bikeIds; + +} diff --git a/ebike-operations/src/main/java/com/cdzy/operations/service/EbikeBikeInfoService.java b/ebike-operations/src/main/java/com/cdzy/operations/service/EbikeBikeInfoService.java index a5d8ba4..5f7d77f 100644 --- a/ebike-operations/src/main/java/com/cdzy/operations/service/EbikeBikeInfoService.java +++ b/ebike-operations/src/main/java/com/cdzy/operations/service/EbikeBikeInfoService.java @@ -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 { * @return 列表 */ List list(PGpolygon polygon); + + /** + * 上架车辆分页查询 + * @param pageParam 分页参数 + * @return 结果 + */ + Page launchPage(PageParam pageParam); + + /** + * 未上架车辆分页查询 + * @param pageParam 分页参数 + * @return 结果 + */ + Page unLaunchPage(PageParam pageParam); + + /** + * 批量上架 + * @param launchVo 上架参数 + */ + void batchLaunch(EbikeBatchLaunchVo launchVo); + + /** + * 批量下架 + * @param launchVo 下架参数 + */ + void batchUnLaunch(EbikeBatchUnLaunchVo launchVo); } diff --git a/ebike-operations/src/main/java/com/cdzy/operations/service/impl/EbikeBikeInfoServiceImpl.java b/ebike-operations/src/main/java/com/cdzy/operations/service/impl/EbikeBikeInfoServiceImpl.java index 88c25d9..0509d54 100644 --- a/ebike-operations/src/main/java/com/cdzy/operations/service/impl/EbikeBikeInfoServiceImpl.java +++ b/ebike-operations/src/main/java/com/cdzy/operations/service/impl/EbikeBikeInfoServiceImpl.java @@ -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 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 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(); + } + }