整车绑定
This commit is contained in:
parent
2d50af8e5a
commit
64ff73c373
@ -14,6 +14,7 @@ import com.cdzy.operations.service.EbikeBikeInfoService;
|
|||||||
import com.cdzy.operations.service.EbikeInventoryRecordService;
|
import com.cdzy.operations.service.EbikeInventoryRecordService;
|
||||||
import com.cdzy.operations.service.EbikeInventoryService;
|
import com.cdzy.operations.service.EbikeInventoryService;
|
||||||
import com.mybatisflex.core.query.QueryWrapper;
|
import com.mybatisflex.core.query.QueryWrapper;
|
||||||
|
import com.mybatisflex.core.util.StringUtil;
|
||||||
import com.mybatisflex.spring.service.impl.ServiceImpl;
|
import com.mybatisflex.spring.service.impl.ServiceImpl;
|
||||||
import jakarta.annotation.Resource;
|
import jakarta.annotation.Resource;
|
||||||
import org.postgresql.geometric.PGpolygon;
|
import org.postgresql.geometric.PGpolygon;
|
||||||
@ -62,38 +63,54 @@ public class EbikeBikeInfoServiceImpl extends ServiceImpl<EbikeBikeInfoMapper, E
|
|||||||
throw new EbikeException("该中控不存在");
|
throw new EbikeException("该中控不存在");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ecuInfo.getBindBattery() && bindVo.getBatteryCode()!=null){
|
//判断中控与电池关系
|
||||||
|
if (ecuInfo.getBindBattery() && StringUtil.hasText(bindVo.getBatteryCode())) {
|
||||||
throw new EbikeException("该中控与电池一体无需额外绑定电池");
|
throw new EbikeException("该中控与电池一体无需额外绑定电池");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!ecuInfo.getBindBattery() && !StringUtil.hasText(bindVo.getBatteryCode())) {
|
||||||
|
throw new EbikeException("该中控绑定车辆时车辆需绑定电池");
|
||||||
|
}
|
||||||
|
|
||||||
|
//检查电池是否正确
|
||||||
queryWrapper.clear();
|
queryWrapper.clear();
|
||||||
queryWrapper.where(EBIKE_BATTERY_INFO.BATTERY_CODE.eq(bindVo.getBatteryCode()))
|
queryWrapper.where(EBIKE_BATTERY_INFO.BATTERY_CODE.eq(bindVo.getBatteryCode()))
|
||||||
.where(EBIKE_BATTERY_INFO.STATUS.eq(BatteryStatus.BIND));
|
.where(EBIKE_BATTERY_INFO.STATUS.eq(BatteryStatus.BIND));
|
||||||
EbikeBatteryInfo batteryInfo = batteryInfoMapper.selectOneByQuery(queryWrapper);
|
EbikeBatteryInfo batteryInfo = batteryInfoMapper.selectOneByQuery(queryWrapper);
|
||||||
if (batteryInfo == null) {
|
if (batteryInfo == null && !ecuInfo.getBindBattery()) {
|
||||||
throw new EbikeException("该电池不存在或电池二维码尚未绑定");
|
throw new EbikeException("该电池不存在或电池二维码尚未绑定");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//检查车辆二维码
|
||||||
queryWrapper.clear();
|
queryWrapper.clear();
|
||||||
queryWrapper.where(EBIKE_BIKE_QR.BIKE_QR_CODE.eq(bindVo.getBikeCode()))
|
queryWrapper.where(EBIKE_BIKE_QR.BIKE_QR_CODE.eq(bindVo.getBikeCode()))
|
||||||
.where(EBIKE_BIKE_QR.STATUS.eq(BikeQrStatus.UN_BIND));
|
.where(EBIKE_BIKE_QR.STATUS.eq(BikeQrStatus.UN_BIND));
|
||||||
EbikeBikeQr ebikeBikeQr = bikeQrMapper.selectOneByQuery(queryWrapper);
|
EbikeBikeQr ebikeBikeQr = bikeQrMapper.selectOneByQuery(queryWrapper);
|
||||||
if (ebikeBikeQr == null){
|
if (ebikeBikeQr == null) {
|
||||||
throw new EbikeException("该车辆二维码无效或已使用");
|
throw new EbikeException("该车辆二维码无效或已使用");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!Objects.equals(batteryInfo.getOperatorId(), ecuInfo.getOperatorId()) && !Objects.equals(ecuInfo.getOperatorId(), ebikeBikeQr.getOperatorId()) && !Objects.equals(batteryInfo.getOperatorId(), ebikeBikeQr.getOperatorId())) {
|
//判断组件所属运营商
|
||||||
throw new EbikeException("所选组件属于不同的运营商");
|
if (batteryInfo != null) {
|
||||||
|
if (!Objects.equals(batteryInfo.getOperatorId(), ecuInfo.getOperatorId()) && !Objects.equals(ecuInfo.getOperatorId(), ebikeBikeQr.getOperatorId()) && !Objects.equals(batteryInfo.getOperatorId(), ebikeBikeQr.getOperatorId())) {
|
||||||
|
throw new EbikeException("所选组件属于不同的运营商");
|
||||||
|
}
|
||||||
|
}else {
|
||||||
|
if (!Objects.equals(ecuInfo.getOperatorId(), ebikeBikeQr.getOperatorId())) {
|
||||||
|
throw new EbikeException("所选组件属于不同的运营商");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Long operatorId = batteryInfo.getOperatorId();
|
Long operatorId = ecuInfo.getOperatorId();
|
||||||
|
|
||||||
queryWrapper.clear();
|
queryWrapper.clear();
|
||||||
queryWrapper.where(EBIKE_BIKE_INFO.BATTERY_ID.eq(batteryInfo.getBatteryId()))
|
queryWrapper.where(EBIKE_BIKE_INFO.ECU_ID.eq(ecuInfo.getEcuId()))
|
||||||
.or(EBIKE_BIKE_INFO.ECU_ID.eq(ecuInfo.getEcuId()))
|
|
||||||
.or(EBIKE_BIKE_INFO.BIKE_CODE.eq(bindVo.getBikeCode()));
|
.or(EBIKE_BIKE_INFO.BIKE_CODE.eq(bindVo.getBikeCode()));
|
||||||
|
if (batteryInfo != null) {
|
||||||
|
queryWrapper.or(EBIKE_BIKE_INFO.BATTERY_ID.eq(batteryInfo.getBatteryId()));
|
||||||
|
}
|
||||||
EbikeBikeInfo info = this.mapper.selectOneByQuery(queryWrapper);
|
EbikeBikeInfo info = this.mapper.selectOneByQuery(queryWrapper);
|
||||||
if (info != null){
|
if (info != null) {
|
||||||
throw new EbikeException("车辆绑定配件中存已绑定整车的配件");
|
throw new EbikeException("车辆绑定配件中存已绑定整车的配件");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -102,25 +119,40 @@ public class EbikeBikeInfoServiceImpl extends ServiceImpl<EbikeBikeInfoMapper, E
|
|||||||
bikeQrMapper.update(ebikeBikeQr);
|
bikeQrMapper.update(ebikeBikeQr);
|
||||||
|
|
||||||
List<EbikeInventoryRecord> list = new ArrayList<>();
|
List<EbikeInventoryRecord> list = new ArrayList<>();
|
||||||
|
|
||||||
|
//TODO:优化封装
|
||||||
for (int i = 1; i < 4; i++) {
|
for (int i = 1; i < 4; i++) {
|
||||||
if (i != 2) {
|
if (i != 2) {
|
||||||
EbikeInventoryVo inventoryVo = EbikeInventoryVo.builder()
|
if (i == 1 && !ecuInfo.getBindBattery()) {
|
||||||
.operatorId(operatorId)
|
EbikeInventoryVo inventoryVo = EbikeInventoryVo.builder()
|
||||||
.inventoryType(i)
|
.operatorId(operatorId)
|
||||||
.inventoryNum(-1)
|
.inventoryType(i)
|
||||||
.build();
|
.inventoryNum(-1)
|
||||||
EbikeInventoryRecord inventoryRecord = EbikeInventoryRecord.builder()
|
.build();
|
||||||
.operatorId(inventoryVo.getOperatorId())
|
EbikeInventoryRecord inventoryRecord = EbikeInventoryRecord.builder()
|
||||||
.inventoryType(inventoryVo.getInventoryType())
|
.operatorId(inventoryVo.getOperatorId())
|
||||||
.inventoryRecordNum(Long.valueOf(inventoryVo.getInventoryNum()))
|
.inventoryType(inventoryVo.getInventoryType())
|
||||||
.createdBy(StpUtil.getLoginIdAsLong())
|
.inventoryRecordNum(Long.valueOf(inventoryVo.getInventoryNum()))
|
||||||
.build();
|
.createdBy(StpUtil.getLoginIdAsLong())
|
||||||
list.add(inventoryRecord);
|
.build();
|
||||||
|
list.add(inventoryRecord);
|
||||||
//TODO:优化为批量削减库存(需要更复杂的校验
|
inventoryService.reduceInventory(inventoryVo);
|
||||||
inventoryService.reduceInventory(inventoryVo);
|
} else if (i == 3) {
|
||||||
}
|
EbikeInventoryVo inventoryVo = EbikeInventoryVo.builder()
|
||||||
if (i == 2 && bindVo.getHasHelme()) {
|
.operatorId(operatorId)
|
||||||
|
.inventoryType(i)
|
||||||
|
.inventoryNum(-1)
|
||||||
|
.build();
|
||||||
|
EbikeInventoryRecord inventoryRecord = EbikeInventoryRecord.builder()
|
||||||
|
.operatorId(inventoryVo.getOperatorId())
|
||||||
|
.inventoryType(inventoryVo.getInventoryType())
|
||||||
|
.inventoryRecordNum(Long.valueOf(inventoryVo.getInventoryNum()))
|
||||||
|
.createdBy(StpUtil.getLoginIdAsLong())
|
||||||
|
.build();
|
||||||
|
list.add(inventoryRecord);
|
||||||
|
inventoryService.reduceInventory(inventoryVo);
|
||||||
|
}
|
||||||
|
}else if (bindVo.getHasHelme()) {
|
||||||
EbikeInventoryVo inventoryVo = EbikeInventoryVo.builder()
|
EbikeInventoryVo inventoryVo = EbikeInventoryVo.builder()
|
||||||
.operatorId(operatorId)
|
.operatorId(operatorId)
|
||||||
.inventoryType(i)
|
.inventoryType(i)
|
||||||
@ -138,6 +170,7 @@ public class EbikeBikeInfoServiceImpl extends ServiceImpl<EbikeBikeInfoMapper, E
|
|||||||
}
|
}
|
||||||
recordService.saveBatch(list);
|
recordService.saveBatch(list);
|
||||||
|
|
||||||
|
//录入最终数据
|
||||||
EbikeBikeInfo bikeInfo = EbikeBikeInfo.builder()
|
EbikeBikeInfo bikeInfo = EbikeBikeInfo.builder()
|
||||||
.operatorId(operatorId)
|
.operatorId(operatorId)
|
||||||
.bikeCode(bindVo.getBikeCode())
|
.bikeCode(bindVo.getBikeCode())
|
||||||
@ -156,7 +189,7 @@ public class EbikeBikeInfoServiceImpl extends ServiceImpl<EbikeBikeInfoMapper, E
|
|||||||
QueryWrapper query = QueryWrapper.create()
|
QueryWrapper query = QueryWrapper.create()
|
||||||
.select(EBIKE_BIKE_INFO.ALL_COLUMNS)
|
.select(EBIKE_BIKE_INFO.ALL_COLUMNS)
|
||||||
.from(EBIKE_BIKE_INFO)
|
.from(EBIKE_BIKE_INFO)
|
||||||
.where("ST_Within(location::geometry, ?::geometry)",polygon);
|
.where("ST_Within(location::geometry, ?::geometry)", polygon);
|
||||||
return this.mapper.selectListByQuery(query);
|
return this.mapper.selectListByQuery(query);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user