129 lines
4.3 KiB
Java
Raw Normal View History

2025-09-15 16:34:08 +08:00
package com.cdzy.operations.controller;
import com.cdzy.common.ex.EbikeException;
import com.cdzy.common.model.request.PageParam;
import com.cdzy.common.model.response.JsonResult;
import com.cdzy.operations.enums.BatteryStatus;
2025-09-15 16:34:08 +08:00
import com.cdzy.operations.model.entity.EbikeBatteryInfo;
import com.cdzy.operations.model.vo.EbikeBatteryInfoIdVo;
import com.cdzy.operations.model.vo.EbikeBatteryInfoVo;
2025-09-15 16:34:08 +08:00
import com.cdzy.operations.service.EbikeBatteryInfoService;
import com.mybatisflex.core.paginate.Page;
import com.mybatisflex.core.query.QueryWrapper;
import com.mybatisflex.core.update.UpdateChain;
2025-09-15 16:34:08 +08:00
import jakarta.annotation.Resource;
2025-10-16 15:25:27 +08:00
import org.springframework.validation.annotation.Validated;
2025-09-15 16:34:08 +08:00
import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.Objects;
import static com.cdzy.operations.model.entity.table.EbikeBatteryInfoTableDef.EBIKE_BATTERY_INFO;
2025-09-15 16:34:08 +08:00
/**
* 电池基本信息 控制层
*
* @author attiya
* @since 2025-09-15
*/
@RestController
@RequestMapping("/ebikeBatteryInfo")
public class EbikeBatteryInfoController {
@Resource
private EbikeBatteryInfoService ebikeBatteryInfoService;
/**
* 生产电池二维码
2025-09-15 16:34:08 +08:00
*
* @param ebikeBatteryInfo 电池基本信息
* @return {@code true} 添加成功{@code false} 添加失败
*/
@PostMapping("addBattery")
2025-10-16 15:25:27 +08:00
public JsonResult<?> save(@RequestBody @Validated EbikeBatteryInfoVo ebikeBatteryInfo) throws Exception {
ebikeBatteryInfoService.addBattery(ebikeBatteryInfo);
return JsonResult.success();
2025-09-15 16:34:08 +08:00
}
/**
* 绑定电池二维码
2025-09-15 16:34:08 +08:00
*
* @param batteryId 电池ID
* @return {@code true} 添加成功{@code false} 添加失败
2025-09-15 16:34:08 +08:00
*/
@GetMapping("bind")
2025-10-16 09:42:11 +08:00
public JsonResult<?> bind(@RequestParam("batteryId") Long batteryId) {
EbikeBatteryInfo batteryInfo = ebikeBatteryInfoService.getById(batteryId);
if (batteryInfo == null) {
throw new EbikeException("电池ID错误");
}
2025-10-16 09:42:11 +08:00
if (batteryInfo.getStatus() == BatteryStatus.BIND) {
throw new EbikeException("该电池已绑定");
}
batteryInfo.setStatus(BatteryStatus.BIND);
ebikeBatteryInfoService.updateById(batteryInfo);
return JsonResult.success();
2025-09-15 16:34:08 +08:00
}
/**
* 批量绑定电池二维码
*
* @param ids 电池ID集合
* @return {@code true} 添加成功{@code false} 添加失败
*/
2025-10-16 14:29:20 +08:00
@PostMapping("batchBind")
2025-10-16 15:25:27 +08:00
public JsonResult<?> batchBind(@RequestBody @Validated EbikeBatteryInfoIdVo ids) {
2025-10-16 09:42:11 +08:00
QueryWrapper queryWrapper = QueryWrapper.create()
.where(EBIKE_BATTERY_INFO.BATTERY_ID.in(ids.getBatteryIds()))
.where(EBIKE_BATTERY_INFO.STATUS.eq(BatteryStatus.BIND));
long count = ebikeBatteryInfoService.count(queryWrapper);
if (count > 0) {
throw new EbikeException("选择电池集合中包含已绑定电池");
}
UpdateChain.of(EbikeBatteryInfo.class)
.set(EbikeBatteryInfo::getStatus, BatteryStatus.BIND)
2025-10-16 14:29:20 +08:00
.where(EbikeBatteryInfo::getBatteryId).in(ids.getBatteryIds())
.update();
return JsonResult.success();
}
2025-09-15 16:34:08 +08:00
/**
* 根据主键删除电池二维码信息
2025-09-15 16:34:08 +08:00
*
* @param batteryId 主键
* @return {@code true} 删除成功{@code false} 删除失败
2025-09-15 16:34:08 +08:00
*/
2025-10-16 09:42:11 +08:00
@GetMapping("remove")
public JsonResult<?> remove(@RequestParam(value = "batteryId") Long batteryId) {
ebikeBatteryInfoService.removeById(batteryId);
return JsonResult.success();
2025-09-15 16:34:08 +08:00
}
2025-09-15 16:34:08 +08:00
/**
* 查询所有电池二维码信息
2025-09-15 16:34:08 +08:00
*
* @return 所有数据
*/
@GetMapping("list")
public JsonResult<?> list() {
List<EbikeBatteryInfo> list = ebikeBatteryInfoService.list();
return JsonResult.success(list);
2025-09-15 16:34:08 +08:00
}
/**
* 分页查询电池二维码信息
2025-09-15 16:34:08 +08:00
*
* @param pageParam 分页对象
2025-09-15 16:34:08 +08:00
* @return 分页对象
*/
@GetMapping("page")
2025-10-16 09:42:11 +08:00
public JsonResult<?> page(PageParam pageParam, Integer status) {
QueryWrapper queryWrapper = QueryWrapper.create()
.where(EBIKE_BATTERY_INFO.STATUS.eq(status, Objects.nonNull(status)));
2025-10-16 09:42:11 +08:00
Page<EbikeBatteryInfo> page = ebikeBatteryInfoService.page(pageParam.getPage(), queryWrapper);
return JsonResult.success(page);
2025-09-15 16:34:08 +08:00
}
}