From d514c43a42da505f732535bdb5d72f3ead52e3bed4a027739df8e319af9e7772 Mon Sep 17 00:00:00 2001 From: attiya <2413103649@qq.com> Date: Tue, 21 Oct 2025 11:30:05 +0800 Subject: [PATCH] =?UTF-8?q?=E6=95=B4=E8=BD=A6=E7=BB=91=E5=AE=9A=E5=8A=9F?= =?UTF-8?q?=E8=83=BD=E5=AE=9E=E7=8E=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cdzy/operations/enums/InventoryType.java | 22 ++++++ .../operations/model/vo/EbikeBikeBindVo.java | 8 -- .../impl/EbikeBikeInfoServiceImpl.java | 75 +++++++++++++++++-- 3 files changed, 91 insertions(+), 14 deletions(-) create mode 100644 ebike-operations/src/main/java/com/cdzy/operations/enums/InventoryType.java diff --git a/ebike-operations/src/main/java/com/cdzy/operations/enums/InventoryType.java b/ebike-operations/src/main/java/com/cdzy/operations/enums/InventoryType.java new file mode 100644 index 0000000..3d4d80e --- /dev/null +++ b/ebike-operations/src/main/java/com/cdzy/operations/enums/InventoryType.java @@ -0,0 +1,22 @@ +package com.cdzy.operations.enums; + +/** + * @author attiya + * @since 2025-10-21 + */ +public interface InventoryType { + + /** + * 电池 + */ + int BATTERY = 1; + /** + * 头盔 + */ + int HELMET = 2; + + /** + * 车架 + */ + int BIKE = 3; +} diff --git a/ebike-operations/src/main/java/com/cdzy/operations/model/vo/EbikeBikeBindVo.java b/ebike-operations/src/main/java/com/cdzy/operations/model/vo/EbikeBikeBindVo.java index 9c9936a..128a1d2 100644 --- a/ebike-operations/src/main/java/com/cdzy/operations/model/vo/EbikeBikeBindVo.java +++ b/ebike-operations/src/main/java/com/cdzy/operations/model/vo/EbikeBikeBindVo.java @@ -24,14 +24,6 @@ public class EbikeBikeBindVo implements Serializable { @Serial private static final long serialVersionUID = 1L; - - /** - * 运营商ID - */ - @NotNull(message = "运营商ID不能为空") - private Long operatorId; - - /** * 车辆编号 */ 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 4148b89..2bef26d 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 @@ -4,20 +4,27 @@ import cn.dev33.satoken.stp.StpUtil; import com.cdzy.common.ex.EbikeException; import com.cdzy.operations.enums.BatteryStatus; import com.cdzy.operations.enums.BikeStatus; -import com.cdzy.operations.mapper.EbikeBatteryInfoMapper; -import com.cdzy.operations.mapper.EbikeBikeInfoMapper; -import com.cdzy.operations.mapper.EbikeEcuInfoMapper; +import com.cdzy.operations.mapper.*; import com.cdzy.operations.model.entity.EbikeBatteryInfo; import com.cdzy.operations.model.entity.EbikeBikeInfo; import com.cdzy.operations.model.entity.EbikeEcuInfo; +import com.cdzy.operations.model.entity.EbikeInventoryRecord; 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.EbikeInventoryService; import com.mybatisflex.core.query.QueryWrapper; import com.mybatisflex.spring.service.impl.ServiceImpl; import jakarta.annotation.Resource; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; 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.EbikeEcuInfoTableDef.EBIKE_ECU_INFO; /** @@ -35,7 +42,14 @@ public class EbikeBikeInfoServiceImpl extends ServiceImpl list = new ArrayList<>(); + for (int i = 1; i < 4; i++) { + if (i != 2) { + EbikeInventoryVo inventoryVo = EbikeInventoryVo.builder() + .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); + + //TODO:优化为批量削减库存(需要更复杂的校验 + inventoryService.reduceInventory(inventoryVo); + } + if (i == 2 && bindVo.getHasHelme()) { + EbikeInventoryVo inventoryVo = EbikeInventoryVo.builder() + .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); + } + } + recordMapper.insertBatch(list); + EbikeBikeInfo bikeInfo = EbikeBikeInfo.builder() + .operatorId(operatorId) .bikeCode(bindVo.getBikeCode()) .batteryId(batteryInfo.getBatteryId()) .ecuId(ecuInfo.getEcuId()) @@ -61,8 +127,5 @@ public class EbikeBikeInfoServiceImpl extends ServiceImpl