换电工单附加功能

This commit is contained in:
attiya 2025-12-01 21:48:21 +08:00
parent 676720c65b
commit 5290567a5e
9 changed files with 356 additions and 5 deletions

View File

@ -7,6 +7,8 @@ import com.cdzy.common.model.response.JsonResult;
import com.cdzy.operations.enums.BikeOrderHandleState;
import com.cdzy.operations.model.dto.EbikeBikeOrderInfoDto;
import com.cdzy.operations.model.dto.EbikeBikeOrderPageDto;
import com.cdzy.operations.model.vo.EbikeBatteryChangeVo;
import com.cdzy.operations.model.vo.EbikeBatteryClaimReturnVo;
import com.cdzy.operations.model.vo.FaultOrderVo;
import com.cdzy.operations.model.vo.InspectionSwapOrderVo;
import com.cdzy.operations.service.EbikeBikeOrderService;
@ -151,12 +153,58 @@ public class EbikeBikeOrderController {
/**
* 上传远程故障图片
*
* @param file 文件
* @return 操作结果
*/
@PostMapping("upload")
public JsonResult<?> upload(@RequestParam("file") MultipartFile file) throws Exception {
String result = ebikeBikeOrderService.upload(file);
return JsonResult.success(Message.SUCCESS,result);
return JsonResult.success(Message.SUCCESS, result);
}
/**
* 电池二维码检查换电工单用,包含带电池中控二维码
* @param code 电池二维码
*
* @return 操作结果
*/
@GetMapping("checkCode")
public JsonResult<?> checkCode(@NotNull(message = "二维码不能为空")String code) {
ebikeBikeOrderService.checkCode(code);
return JsonResult.success(Message.SUCCESS);
}
/**
* 领取电池换电工单用
*
* @return 操作结果
*/
@PostMapping("batteryClaim")
public JsonResult<?> batteryClaim(@Validated @RequestBody EbikeBatteryClaimReturnVo batteryClaimVo) {
ebikeBikeOrderService.batteryClaim(batteryClaimVo);
return JsonResult.success(Message.SUCCESS);
}
/**
* 归还电池换电工单用
*
* @return 操作结果
*/
@PostMapping("batteryReturn")
public JsonResult<?> batteryReturn(@Validated @RequestBody EbikeBatteryClaimReturnVo batteryClaimVo) {
ebikeBikeOrderService.batteryReturn(batteryClaimVo);
return JsonResult.success(Message.SUCCESS);
}
/**
* 更换电池换电工单用
*
* @return 操作结果
*/
@PostMapping("batteryChange")
public JsonResult<?> batteryChange(@Validated @RequestBody EbikeBatteryChangeVo changeVo) {
ebikeBikeOrderService.batteryChange(changeVo);
return JsonResult.success(Message.SUCCESS);
}
}

View File

@ -0,0 +1,14 @@
package com.cdzy.operations.mapper;
import com.mybatisflex.core.BaseMapper;
import com.cdzy.operations.model.entity.EbikeBorrowBatteryRecord;
/**
* 电池领取归还记录 映射层
*
* @author attiya
* @since 2025-11-28
*/
public interface EbikeBorrowBatteryRecordMapper extends BaseMapper<EbikeBorrowBatteryRecord> {
}

View File

@ -0,0 +1,14 @@
package com.cdzy.operations.mapper;
import com.mybatisflex.core.BaseMapper;
import com.cdzy.operations.model.entity.EbikeRecordCodes;
/**
* 电池领取归还电池编号记录 映射层
*
* @author attiya
* @since 2025-11-28
*/
public interface EbikeRecordCodesMapper extends BaseMapper<EbikeRecordCodes> {
}

View File

@ -0,0 +1,59 @@
package com.cdzy.operations.model.entity;
import com.mybatisflex.annotation.Column;
import com.mybatisflex.annotation.Id;
import com.mybatisflex.annotation.Table;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serial;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* 电池领取归还记录 实体类
*
* @author attiya
* @since 2025-11-28
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Table("ebike_borrow_battery_record")
public class EbikeBorrowBatteryRecord implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* 电池领取记录ID
*/
@Id
private Long borrowBatteryRecordId;
/**
* 领取时间
*/
private Integer borrowNum;
/**
* 创建时间
*/
@Column(onInsertValue = "now()")
private LocalDateTime createAt;
/**
* 创建人
*/
private Long createBy;
/**
* 是否已归还
*/
@Column(onInsertValue = "f")
private Boolean isReturn;
}

View File

@ -0,0 +1,51 @@
package com.cdzy.operations.model.entity;
import com.mybatisflex.annotation.Id;
import com.mybatisflex.annotation.Table;
import java.io.Serializable;
import java.io.Serial;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* 电池领取归还电池编号记录 实体类
*
* @author attiya
* @since 2025-11-28
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Table("ebike_record_codes")
public class EbikeRecordCodes implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* 电池领取详细ID
*/
@Id
private Long ebikeRecordCodeId;
/**
* 电池编号也可能是带电池中控编号
*/
private String batteryCode;
/**
* 类型1-领取 2-归还
*/
private Integer type;
/**
* 电池领取记录ID
*/
private Long borrowBatteryRecordId;
}

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;
/**
* 电池更换基本信息
*
* @author attiya
* @since 2025-09-15
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class EbikeBatteryChangeVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* 车辆二维码
*/
@NotNull(message = "车辆二维码不能为空")
private String bikeCode;
/**
* 车辆二维码
*/
@NotNull(message = "电池二维码不能为空")
private String batteryCode;
}

View File

@ -0,0 +1,35 @@
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-09-15
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class EbikeBatteryClaimReturnVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* 二维码(包含电池和中控,主要是待电池部分中控)
*/
@NotNull(message = "二维码内容不能为空")
private List<String> codes;
}

View File

@ -2,6 +2,8 @@ package com.cdzy.operations.service;
import com.cdzy.operations.model.dto.EbikeBikeOrderInfoDto;
import com.cdzy.operations.model.entity.EbikeBikeOrder;
import com.cdzy.operations.model.vo.EbikeBatteryChangeVo;
import com.cdzy.operations.model.vo.EbikeBatteryClaimReturnVo;
import com.cdzy.operations.model.vo.FaultOrderVo;
import com.cdzy.operations.model.vo.InspectionSwapOrderVo;
import com.mybatisflex.core.service.IService;
@ -59,4 +61,29 @@ public interface EbikeBikeOrderService extends IService<EbikeBikeOrder> {
* @param faultOrderVo 故障信息
*/
void faultOrder(FaultOrderVo faultOrderVo);
/**
* 领取电池
* @param batteryClaimVo 领取电池
*/
void batteryClaim(EbikeBatteryClaimReturnVo batteryClaimVo);
/**
* 电池二维码检查换电工单用,包含带电池中控二维码
* @param code 电池二维码
*
*/
void checkCode(String code);
/**
* 归还电池
* @param batteryClaimVo 归还电池
*/
void batteryReturn(EbikeBatteryClaimReturnVo batteryClaimVo);
/**
* 更换电池
* @param changeVo 更换信息
*/
void batteryChange(EbikeBatteryChangeVo changeVo);
}

View File

@ -7,10 +7,9 @@ import com.cdzy.common.model.dto.ResGPSDto;
import com.cdzy.operations.enums.*;
import com.cdzy.operations.mapper.*;
import com.cdzy.operations.model.dto.EbikeBikeOrderInfoDto;
import com.cdzy.operations.model.entity.EbikeBikeInfo;
import com.cdzy.operations.model.entity.EbikeBikeOrder;
import com.cdzy.operations.model.entity.EbikeOrderFile;
import com.cdzy.operations.model.entity.EbikeOrderPart;
import com.cdzy.operations.model.entity.*;
import com.cdzy.operations.model.vo.EbikeBatteryChangeVo;
import com.cdzy.operations.model.vo.EbikeBatteryClaimReturnVo;
import com.cdzy.operations.model.vo.FaultOrderVo;
import com.cdzy.operations.model.vo.InspectionSwapOrderVo;
import com.cdzy.operations.service.EbikeBikeOrderService;
@ -31,6 +30,7 @@ import java.util.List;
import java.util.Objects;
import java.util.UUID;
import static com.cdzy.operations.model.entity.table.EbikeBatteryInfoTableDef.EBIKE_BATTERY_INFO;
import static com.cdzy.operations.model.entity.table.EbikeBikeInfoTableDef.EBIKE_BIKE_INFO;
import static com.cdzy.operations.model.entity.table.EbikeBikeOrderTableDef.EBIKE_BIKE_ORDER;
import static com.cdzy.operations.model.entity.table.EbikeEcuInfoTableDef.EBIKE_ECU_INFO;
@ -55,6 +55,15 @@ public class EbikeBikeOrderServiceImpl extends ServiceImpl<EbikeBikeOrderMapper,
@Resource
EbikeBikeInfoMapper bikeInfoMapper;
@Resource
EbikeBatteryInfoMapper batteryInfoMapper;
@Resource
EbikeBorrowBatteryRecordMapper batteryRecordMapper;
@Resource
EbikeRecordCodesMapper recordCodesMapper;
@Resource
EbikeOrderPartMapper orderPartMapper;
@ -225,6 +234,60 @@ public class EbikeBikeOrderServiceImpl extends ServiceImpl<EbikeBikeOrderMapper,
}
}
@Transactional
@Override
public void batteryClaim(EbikeBatteryClaimReturnVo batteryClaimVo) {
List<String> codes = batteryClaimVo.getCodes();
EbikeBorrowBatteryRecord batteryRecord = EbikeBorrowBatteryRecord.builder()
.borrowNum(codes.size())
.createBy(StpUtil.getLoginIdAsLong())
.build();
batteryRecordMapper.insert(batteryRecord);
Long batteryRecordId = batteryRecord.getBorrowBatteryRecordId();
List<EbikeRecordCodes> list = new ArrayList<>();
for (String code : codes) {
EbikeRecordCodes recordCodes = EbikeRecordCodes.builder()
.batteryCode(code)
.type(1)
.borrowBatteryRecordId(batteryRecordId)
.build();
list.add(recordCodes);
}
if (!list.isEmpty()){
recordCodesMapper.insertBatch(list);
}
}
@Override
public void checkCode(String code) {
if (code.startsWith("B")){
QueryWrapper queryWrapper = QueryWrapper.create()
.where(EBIKE_BATTERY_INFO.BATTERY_CODE.eq(code));
EbikeBatteryInfo batteryInfo = batteryInfoMapper.selectOneByQuery(queryWrapper);
if (batteryInfo == null) {
throw new EbikeException("电池二维码错误");
}
}else {
QueryWrapper queryWrapper = QueryWrapper.create()
.where(EBIKE_ECU_INFO.ECU_SN.eq(code));
EbikeEcuInfo ecuInfo = ebikeEcuInfoMapper.selectOneByQuery(queryWrapper);
if (ecuInfo == null) {
throw new EbikeException("电池二维码错误");
}
}
}
@Override
public void batteryReturn(EbikeBatteryClaimReturnVo batteryClaimVo) {
}
@Override
public void batteryChange(EbikeBatteryChangeVo changeVo) {
}
EbikeBikeInfo checkBikeCode(String bikeCode) {
QueryWrapper queryWrapper = QueryWrapper.create()
.where(EBIKE_BIKE_INFO.BIKE_CODE.eq(bikeCode))