From d5c663fba990518ab37a995ebb71ff038b3a4989 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=8F=E6=9C=B1?= <2671189764@qq.com> Date: Tue, 20 May 2025 16:42:35 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=BB=BA=E5=AE=9E=E4=BD=93=EF=BC=8C?= =?UTF-8?q?=E4=BB=93=E5=BA=93=E9=83=A8=E4=BB=B6=E6=A8=A1=E5=9D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/EbikeComponentController.java | 51 ++++ .../mapper/EbikeComponentInventoryMapper.java | 14 + .../EbikeComponentInventorycountMapper.java | 14 + .../mapper/EbikeEcuEnterRecordsMapper.java | 14 + .../mapper/EbikeEcuOutRecordsMapper.java | 14 + .../dto/request/ReqDevicePartStockInDto.java | 66 +++++ .../model/pojo/EbikeComponentInventory.java | 88 ++++++ .../pojo/EbikeComponentInventorycount.java | 72 +++++ .../model/pojo/EbikeEcuEnterRecords.java | 51 ++++ .../model/pojo/EbikeEcuOutRecords.java | 51 ++++ .../EbikeComponentInventoryService.java | 14 + .../EbikeComponentInventorycountService.java | 14 + .../service/EbikeComponentService.java | 36 +++ .../service/EbikeEcuEnterRecordsService.java | 14 + .../service/EbikeEcuOutRecordsService.java | 14 + .../EbikeComponentInventoryServiceImpl.java | 18 ++ ...ikeComponentInventorycountServiceImpl.java | 18 ++ .../impl/EbikeComponentServiceImpl.java | 269 ++++++++++++++++++ .../impl/EbikeEcuEnterRecordsServiceImpl.java | 18 ++ 19 files changed, 850 insertions(+) create mode 100644 ebike-operate/src/main/java/com/cdzy/ebikeoperate/controller/EbikeComponentController.java create mode 100644 ebike-operate/src/main/java/com/cdzy/ebikeoperate/mapper/EbikeComponentInventoryMapper.java create mode 100644 ebike-operate/src/main/java/com/cdzy/ebikeoperate/mapper/EbikeComponentInventorycountMapper.java create mode 100644 ebike-operate/src/main/java/com/cdzy/ebikeoperate/mapper/EbikeEcuEnterRecordsMapper.java create mode 100644 ebike-operate/src/main/java/com/cdzy/ebikeoperate/mapper/EbikeEcuOutRecordsMapper.java create mode 100644 ebike-operate/src/main/java/com/cdzy/ebikeoperate/model/dto/request/ReqDevicePartStockInDto.java create mode 100644 ebike-operate/src/main/java/com/cdzy/ebikeoperate/model/pojo/EbikeComponentInventory.java create mode 100644 ebike-operate/src/main/java/com/cdzy/ebikeoperate/model/pojo/EbikeComponentInventorycount.java create mode 100644 ebike-operate/src/main/java/com/cdzy/ebikeoperate/model/pojo/EbikeEcuEnterRecords.java create mode 100644 ebike-operate/src/main/java/com/cdzy/ebikeoperate/model/pojo/EbikeEcuOutRecords.java create mode 100644 ebike-operate/src/main/java/com/cdzy/ebikeoperate/service/EbikeComponentInventoryService.java create mode 100644 ebike-operate/src/main/java/com/cdzy/ebikeoperate/service/EbikeComponentInventorycountService.java create mode 100644 ebike-operate/src/main/java/com/cdzy/ebikeoperate/service/EbikeComponentService.java create mode 100644 ebike-operate/src/main/java/com/cdzy/ebikeoperate/service/EbikeEcuEnterRecordsService.java create mode 100644 ebike-operate/src/main/java/com/cdzy/ebikeoperate/service/EbikeEcuOutRecordsService.java create mode 100644 ebike-operate/src/main/java/com/cdzy/ebikeoperate/service/impl/EbikeComponentInventoryServiceImpl.java create mode 100644 ebike-operate/src/main/java/com/cdzy/ebikeoperate/service/impl/EbikeComponentInventorycountServiceImpl.java create mode 100644 ebike-operate/src/main/java/com/cdzy/ebikeoperate/service/impl/EbikeComponentServiceImpl.java create mode 100644 ebike-operate/src/main/java/com/cdzy/ebikeoperate/service/impl/EbikeEcuEnterRecordsServiceImpl.java diff --git a/ebike-operate/src/main/java/com/cdzy/ebikeoperate/controller/EbikeComponentController.java b/ebike-operate/src/main/java/com/cdzy/ebikeoperate/controller/EbikeComponentController.java new file mode 100644 index 00000000..ff8dad34 --- /dev/null +++ b/ebike-operate/src/main/java/com/cdzy/ebikeoperate/controller/EbikeComponentController.java @@ -0,0 +1,51 @@ +package com.cdzy.ebikeoperate.controller; + +import com.cdzy.common.model.JsonResult; +import com.cdzy.ebikeoperate.model.dto.request.ReqDevicePartStockInDto; +import com.cdzy.ebikeoperate.service.EbikeBikeQrcodeService; +import com.cdzy.ebikeoperate.service.EbikeComponentService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.Map; + +/** + * 部件的相关接口 + */ +@RestController +@RequestMapping("/ebikeComponent") +public class EbikeComponentController { + + @Autowired + EbikeComponentService ebikeComponentService; + /*** + * 中控设备部件入库接口 + * @param params + * @return + */ + @PostMapping("/ecuStorageSave") + public JsonResult ecuStorageSave(@RequestBody ReqDevicePartStockInDto params) { + + return ebikeComponentService.ecuStorageSave(params); + } + + /*** + * 设备部件作废接口 (通用 + * @param componentEnterRecordId + * @return + */ + @GetMapping("/invalidateDevicePart") + public JsonResult invalidateDevicePart(@RequestParam(name="componentEnterRecordId")String componentEnterRecordId) { + return ebikeComponentService.invalidateDevicePart(componentEnterRecordId); + } + + /*** + * 设备部件取消接口(通用) + * @param componentEnterRecordId + * @return + */ + @GetMapping("/cancelDevicePart") + public JsonResult cancelDevicePart(@RequestParam(name = "componentEnterRecordId") String componentEnterRecordId) { + return ebikeComponentService.cancelDevicePart(componentEnterRecordId); + } +} diff --git a/ebike-operate/src/main/java/com/cdzy/ebikeoperate/mapper/EbikeComponentInventoryMapper.java b/ebike-operate/src/main/java/com/cdzy/ebikeoperate/mapper/EbikeComponentInventoryMapper.java new file mode 100644 index 00000000..ed740ea7 --- /dev/null +++ b/ebike-operate/src/main/java/com/cdzy/ebikeoperate/mapper/EbikeComponentInventoryMapper.java @@ -0,0 +1,14 @@ +package com.cdzy.ebikeoperate.mapper; + +import com.cdzy.ebikeoperate.model.pojo.EbikeComponentInventory; +import com.mybatisflex.core.BaseMapper; + +/** + * 映射层。 + * + * @author zjd + * @since 2025-05-19 + */ +public interface EbikeComponentInventoryMapper extends BaseMapper { + +} diff --git a/ebike-operate/src/main/java/com/cdzy/ebikeoperate/mapper/EbikeComponentInventorycountMapper.java b/ebike-operate/src/main/java/com/cdzy/ebikeoperate/mapper/EbikeComponentInventorycountMapper.java new file mode 100644 index 00000000..811177fe --- /dev/null +++ b/ebike-operate/src/main/java/com/cdzy/ebikeoperate/mapper/EbikeComponentInventorycountMapper.java @@ -0,0 +1,14 @@ +package com.cdzy.ebikeoperate.mapper; + +import com.cdzy.ebikeoperate.model.pojo.EbikeComponentInventorycount; +import com.mybatisflex.core.BaseMapper; + +/** + * 映射层。 + * + * @author zjd + * @since 2025-05-19 + */ +public interface EbikeComponentInventorycountMapper extends BaseMapper { + +} diff --git a/ebike-operate/src/main/java/com/cdzy/ebikeoperate/mapper/EbikeEcuEnterRecordsMapper.java b/ebike-operate/src/main/java/com/cdzy/ebikeoperate/mapper/EbikeEcuEnterRecordsMapper.java new file mode 100644 index 00000000..91c1bae2 --- /dev/null +++ b/ebike-operate/src/main/java/com/cdzy/ebikeoperate/mapper/EbikeEcuEnterRecordsMapper.java @@ -0,0 +1,14 @@ +package com.cdzy.ebikeoperate.mapper; + +import com.cdzy.ebikeoperate.model.pojo.EbikeEcuEnterRecords; +import com.mybatisflex.core.BaseMapper; + +/** + * 映射层。 + * + * @author zjd + * @since 2025-05-19 + */ +public interface EbikeEcuEnterRecordsMapper extends BaseMapper { + +} diff --git a/ebike-operate/src/main/java/com/cdzy/ebikeoperate/mapper/EbikeEcuOutRecordsMapper.java b/ebike-operate/src/main/java/com/cdzy/ebikeoperate/mapper/EbikeEcuOutRecordsMapper.java new file mode 100644 index 00000000..b183370c --- /dev/null +++ b/ebike-operate/src/main/java/com/cdzy/ebikeoperate/mapper/EbikeEcuOutRecordsMapper.java @@ -0,0 +1,14 @@ +package com.cdzy.ebikeoperate.mapper; + +import com.cdzy.ebikeoperate.model.pojo.EbikeEcuOutRecords; +import com.mybatisflex.core.BaseMapper; + +/** + * 映射层。 + * + * @author zjd + * @since 2025-05-19 + */ +public interface EbikeEcuOutRecordsMapper extends BaseMapper { + +} diff --git a/ebike-operate/src/main/java/com/cdzy/ebikeoperate/model/dto/request/ReqDevicePartStockInDto.java b/ebike-operate/src/main/java/com/cdzy/ebikeoperate/model/dto/request/ReqDevicePartStockInDto.java new file mode 100644 index 00000000..276f7971 --- /dev/null +++ b/ebike-operate/src/main/java/com/cdzy/ebikeoperate/model/dto/request/ReqDevicePartStockInDto.java @@ -0,0 +1,66 @@ +package com.cdzy.ebikeoperate.model.dto.request; + +import com.cdzy.ebikeoperate.model.pojo.EbikeBatteryEnterRecords; +import com.cdzy.ebikeoperate.model.pojo.EbikeEcuEnterRecords; +import com.cdzy.ebikeoperate.model.pojo.EbikeHelmetEnterRecords; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; + +/** + * 中控设备部件入库Dto + * + * 用于接收中控设备部件入库请求数据,包含设备部件的基本信息及入库记录。 + * 支持多种类型的部件,增强了类型的扩展性与可读性。 + * + * @author zjd + * @date 2025/5/20 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +public class ReqDevicePartStockInDto { + + /** + * 部件记录主键。若存在记录ID则传递,若无则可不传。 + */ + private String componentEnterRecordId; + + /** + * 所属区域,表示设备部件入库的区域。 + */ + private String owningRegion; + + /** + * 部件类型ID,表示部件的类别(如电池、ECU等,部件的编号)。 + */ + private String componentType; + + /** + * 入库数量,表示该批次部件的数量。 + */ + private int enterQuantity; + + /** + * 入库类型:1 表示暂存,2 表示入库。 + */ + private Integer stockInType; + + /** + * 中控信息列表,包含所有ECU部件的入库记录。 + */ + private List ebikeEcuEnterRecords; + + /** + * 头盔信息列表,包含所有头盔部件的入库记录。 + */ + private List ebikeHelmetEnterRecords; + + /** + * 电池信息列表,包含所有电池部件的入库记录。 + */ + private List ebikeBatteryEnterRecords; + +} diff --git a/ebike-operate/src/main/java/com/cdzy/ebikeoperate/model/pojo/EbikeComponentInventory.java b/ebike-operate/src/main/java/com/cdzy/ebikeoperate/model/pojo/EbikeComponentInventory.java new file mode 100644 index 00000000..afaab805 --- /dev/null +++ b/ebike-operate/src/main/java/com/cdzy/ebikeoperate/model/pojo/EbikeComponentInventory.java @@ -0,0 +1,88 @@ +package com.cdzy.ebikeoperate.model.pojo; + +import com.mybatisflex.annotation.Id; +import com.mybatisflex.annotation.Table; +import java.io.Serializable; +import java.math.BigDecimal; +import java.time.LocalDateTime; + +import java.io.Serial; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * 实体类。 + * + * @author zjd + * @since 2025-05-19 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@Table("ebike_component_inventory") +public class EbikeComponentInventory implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 库存记录的唯一ID + */ + @Id + private String inventoryId; + + /** + * 部件编号(如头盔编号、电池编号、中控编号) + */ + private String itemCode; + + /** + * 部件序列号(例如:EcuSn + */ + private String serialNumber; + + /** + * 部件类型 + */ + private String componentType; + + /** + * 部件名称 + */ + private String componentName; + + /** + * 组织id(运营商id + */ + private Long orgId; + + /** + * 品牌 + */ + private String brand; + + /** + * 部件单价 + */ + private Double componentPrice; + + /** + * 上次更新时间 + */ + private LocalDateTime lastUpdatedAt; + + /** + * 上次更新操作员 + */ + private String lastUpdatedUser; + + /** + * 0:待入库,1:取消,2:废除,3已入库,4:已出库 + */ + private Integer state; + +} diff --git a/ebike-operate/src/main/java/com/cdzy/ebikeoperate/model/pojo/EbikeComponentInventorycount.java b/ebike-operate/src/main/java/com/cdzy/ebikeoperate/model/pojo/EbikeComponentInventorycount.java new file mode 100644 index 00000000..c785cf71 --- /dev/null +++ b/ebike-operate/src/main/java/com/cdzy/ebikeoperate/model/pojo/EbikeComponentInventorycount.java @@ -0,0 +1,72 @@ +package com.cdzy.ebikeoperate.model.pojo; + +import com.mybatisflex.annotation.Id; +import com.mybatisflex.annotation.Table; +import java.io.Serializable; +import java.math.BigDecimal; + +import java.io.Serial; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * 实体类。 + * + * @author zjd + * @since 2025-05-19 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@Table("ebike_component_inventorycount") +public class EbikeComponentInventorycount implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 部件类型的唯一ID + */ + @Id + private String id; + + /** + * 组织id(运营商id + */ + private Long orgId; + + /** + * 部件类型编号 + */ + private String code; + + /** + * 部件类型名称 + */ + private String name; + + /** + * 品牌 + */ + private String brand; + + /** + * 部件数量 + */ + private Integer count; + + /** + * 单位 + */ + private String unit; + + /** + * 价格 + */ + private Double price; + +} diff --git a/ebike-operate/src/main/java/com/cdzy/ebikeoperate/model/pojo/EbikeEcuEnterRecords.java b/ebike-operate/src/main/java/com/cdzy/ebikeoperate/model/pojo/EbikeEcuEnterRecords.java new file mode 100644 index 00000000..d56c0b0b --- /dev/null +++ b/ebike-operate/src/main/java/com/cdzy/ebikeoperate/model/pojo/EbikeEcuEnterRecords.java @@ -0,0 +1,51 @@ +package com.cdzy.ebikeoperate.model.pojo; + +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 zjd + * @since 2025-05-19 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@Table("ebike_ecu_enter_records") +public class EbikeEcuEnterRecords implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 中控入库记录的唯一ID + */ + @Id + private String ecuEnterRecordId; + + /** + * 组件入库记录ID + */ + private String componentEnterRecordId; + + /** + * 中控编码 + */ + private String ecuCode; + + /** + * 中控序列号 + */ + private String ecuSn; + +} diff --git a/ebike-operate/src/main/java/com/cdzy/ebikeoperate/model/pojo/EbikeEcuOutRecords.java b/ebike-operate/src/main/java/com/cdzy/ebikeoperate/model/pojo/EbikeEcuOutRecords.java new file mode 100644 index 00000000..db48979e --- /dev/null +++ b/ebike-operate/src/main/java/com/cdzy/ebikeoperate/model/pojo/EbikeEcuOutRecords.java @@ -0,0 +1,51 @@ +package com.cdzy.ebikeoperate.model.pojo; + +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 zjd + * @since 2025-05-19 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@Table("ebike_ecu_out_records") +public class EbikeEcuOutRecords implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 中控出库记录的唯一ID + */ + @Id + private String ecuOutRecordId; + + /** + * 组件出库记录ID + */ + private Integer componentOutRecordId; + + /** + * 中控编码 + */ + private String ecuCode; + + /** + * 中控序列号 + */ + private String ecuSn; + +} diff --git a/ebike-operate/src/main/java/com/cdzy/ebikeoperate/service/EbikeComponentInventoryService.java b/ebike-operate/src/main/java/com/cdzy/ebikeoperate/service/EbikeComponentInventoryService.java new file mode 100644 index 00000000..09fadd0d --- /dev/null +++ b/ebike-operate/src/main/java/com/cdzy/ebikeoperate/service/EbikeComponentInventoryService.java @@ -0,0 +1,14 @@ +package com.cdzy.ebikeoperate.service; + +import com.cdzy.ebikeoperate.model.pojo.EbikeComponentInventory; +import com.mybatisflex.core.service.IService; + +/** + * 服务层。 + * + * @author zjd + * @since 2025-05-19 + */ +public interface EbikeComponentInventoryService extends IService { + +} diff --git a/ebike-operate/src/main/java/com/cdzy/ebikeoperate/service/EbikeComponentInventorycountService.java b/ebike-operate/src/main/java/com/cdzy/ebikeoperate/service/EbikeComponentInventorycountService.java new file mode 100644 index 00000000..6332559b --- /dev/null +++ b/ebike-operate/src/main/java/com/cdzy/ebikeoperate/service/EbikeComponentInventorycountService.java @@ -0,0 +1,14 @@ +package com.cdzy.ebikeoperate.service; + +import com.cdzy.ebikeoperate.model.pojo.EbikeComponentInventorycount; +import com.mybatisflex.core.service.IService; + +/** + * 服务层。 + * + * @author zjd + * @since 2025-05-19 + */ +public interface EbikeComponentInventorycountService extends IService { + +} diff --git a/ebike-operate/src/main/java/com/cdzy/ebikeoperate/service/EbikeComponentService.java b/ebike-operate/src/main/java/com/cdzy/ebikeoperate/service/EbikeComponentService.java new file mode 100644 index 00000000..b3ea119f --- /dev/null +++ b/ebike-operate/src/main/java/com/cdzy/ebikeoperate/service/EbikeComponentService.java @@ -0,0 +1,36 @@ +package com.cdzy.ebikeoperate.service; + +import com.cdzy.common.model.JsonResult; +import com.cdzy.ebikeoperate.model.dto.request.ReqDevicePartStockInDto; +import com.mybatisflex.core.service.IService; + +import java.util.Map; + + +/** + * 中控设备部件入库接口 + */ +public interface EbikeComponentService { + + + /*** + * 中控设备部件入库接口 + * @param params + * @return + */ + JsonResult ecuStorageSave(ReqDevicePartStockInDto params); + + /*** + * 设备部件作废接口 (通用 + * @param componentEnterRecordId + * @return + */ + JsonResult invalidateDevicePart(String componentEnterRecordId); + /*** + * 设备部件取消接口(通用) + * @param componentEnterRecordId + * @return + */ + JsonResult cancelDevicePart(String componentEnterRecordId); + +} \ No newline at end of file diff --git a/ebike-operate/src/main/java/com/cdzy/ebikeoperate/service/EbikeEcuEnterRecordsService.java b/ebike-operate/src/main/java/com/cdzy/ebikeoperate/service/EbikeEcuEnterRecordsService.java new file mode 100644 index 00000000..f32893cf --- /dev/null +++ b/ebike-operate/src/main/java/com/cdzy/ebikeoperate/service/EbikeEcuEnterRecordsService.java @@ -0,0 +1,14 @@ +package com.cdzy.ebikeoperate.service; + +import com.cdzy.ebikeoperate.model.pojo.EbikeEcuEnterRecords; +import com.mybatisflex.core.service.IService; + +/** + * 服务层。 + * + * @author zjd + * @since 2025-05-19 + */ +public interface EbikeEcuEnterRecordsService extends IService { + +} diff --git a/ebike-operate/src/main/java/com/cdzy/ebikeoperate/service/EbikeEcuOutRecordsService.java b/ebike-operate/src/main/java/com/cdzy/ebikeoperate/service/EbikeEcuOutRecordsService.java new file mode 100644 index 00000000..044bc940 --- /dev/null +++ b/ebike-operate/src/main/java/com/cdzy/ebikeoperate/service/EbikeEcuOutRecordsService.java @@ -0,0 +1,14 @@ +package com.cdzy.ebikeoperate.service; + +import com.cdzy.ebikeoperate.model.pojo.EbikeEcuOutRecords; +import com.mybatisflex.core.service.IService; + +/** + * 服务层。 + * + * @author zjd + * @since 2025-05-19 + */ +public interface EbikeEcuOutRecordsService extends IService { + +} diff --git a/ebike-operate/src/main/java/com/cdzy/ebikeoperate/service/impl/EbikeComponentInventoryServiceImpl.java b/ebike-operate/src/main/java/com/cdzy/ebikeoperate/service/impl/EbikeComponentInventoryServiceImpl.java new file mode 100644 index 00000000..a942b110 --- /dev/null +++ b/ebike-operate/src/main/java/com/cdzy/ebikeoperate/service/impl/EbikeComponentInventoryServiceImpl.java @@ -0,0 +1,18 @@ +package com.cdzy.ebikeoperate.service.impl; + +import com.cdzy.ebikeoperate.model.pojo.EbikeComponentInventory; +import com.mybatisflex.spring.service.impl.ServiceImpl; +import com.cdzy.ebikeoperate.mapper.EbikeComponentInventoryMapper; +import com.cdzy.ebikeoperate.service.EbikeComponentInventoryService; +import org.springframework.stereotype.Service; + +/** + * 服务层实现。 + * + * @author zjd + * @since 2025-05-19 + */ +@Service +public class EbikeComponentInventoryServiceImpl extends ServiceImpl implements EbikeComponentInventoryService{ + +} diff --git a/ebike-operate/src/main/java/com/cdzy/ebikeoperate/service/impl/EbikeComponentInventorycountServiceImpl.java b/ebike-operate/src/main/java/com/cdzy/ebikeoperate/service/impl/EbikeComponentInventorycountServiceImpl.java new file mode 100644 index 00000000..59f2501b --- /dev/null +++ b/ebike-operate/src/main/java/com/cdzy/ebikeoperate/service/impl/EbikeComponentInventorycountServiceImpl.java @@ -0,0 +1,18 @@ +package com.cdzy.ebikeoperate.service.impl; + +import com.cdzy.ebikeoperate.model.pojo.EbikeComponentInventorycount; +import com.mybatisflex.spring.service.impl.ServiceImpl; +import com.cdzy.ebikeoperate.mapper.EbikeComponentInventorycountMapper; +import com.cdzy.ebikeoperate.service.EbikeComponentInventorycountService; +import org.springframework.stereotype.Service; + +/** + * 服务层实现。 + * + * @author zjd + * @since 2025-05-19 + */ +@Service +public class EbikeComponentInventorycountServiceImpl extends ServiceImpl implements EbikeComponentInventorycountService{ + +} diff --git a/ebike-operate/src/main/java/com/cdzy/ebikeoperate/service/impl/EbikeComponentServiceImpl.java b/ebike-operate/src/main/java/com/cdzy/ebikeoperate/service/impl/EbikeComponentServiceImpl.java new file mode 100644 index 00000000..15d6a905 --- /dev/null +++ b/ebike-operate/src/main/java/com/cdzy/ebikeoperate/service/impl/EbikeComponentServiceImpl.java @@ -0,0 +1,269 @@ +package com.cdzy.ebikeoperate.service.impl; + +import cn.dev33.satoken.stp.StpUtil; +import com.cdzy.common.enums.Code; +import com.cdzy.common.model.JsonResult; +import com.cdzy.ebikeoperate.mapper.*; +import com.cdzy.ebikeoperate.model.dto.request.ReqDevicePartStockInDto; +import com.cdzy.ebikeoperate.model.pojo.*; +import com.cdzy.ebikeoperate.service.EbikeComponentService; +import com.cdzy.ebikeoperate.service.EbikeComponentTypeInfoService; +import com.ebike.feign.clients.StaffFeignClient; +import com.ebike.feign.model.rsp.StaffFeign; +import com.mybatisflex.core.query.QueryWrapper; +import jakarta.annotation.Resource; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.time.LocalDateTime; +import java.util.List; +import java.util.Map; + +/** + * 部件的相关接口实现 + */ +@Service +public class EbikeComponentServiceImpl implements EbikeComponentService { + + @Resource + private EbikeEcuEnterRecordsMapper ebikeEcuEnterRecordsMapper; + @Resource + private EbikeComponentProductionMapper ebikeComponentProductionMapper; + + @Resource + private StaffFeignClient staffFeignClient; + @Resource + private EbikeComponentTypeInfoMapper ebikeComponentTypeInfoMapper; + @Resource + private EbikeComponentEnterRecordsMapper ebikeComponentEnterRecordsMapper; + + @Resource + private EbikeComponentInventoryMapper ebikeComponentInventoryMapper; + @Resource + private EbikeComponentInventorycountMapper ebikeComponentInventorycountMapper; + @Resource + private EbikeBatteryEnterRecordsMapper ebikeBatteryEnterRecordsMapper; + @Resource + private EbikeHelmetEnterRecordsMapper ebikeHelmetEnterRecordsMapper; + + + public EbikeComponentServiceImpl(EbikeEcuEnterRecordsMapper ebikeEcuEnterRecordsMapper, EbikeComponentProductionMapper ebikeComponentProductionMapper) { + this.ebikeEcuEnterRecordsMapper = ebikeEcuEnterRecordsMapper; + this.ebikeComponentProductionMapper = ebikeComponentProductionMapper; + } + + /*** + * 中控设备部件入库接口 + * @param params + * @return + */ + @Override + @Transactional + public JsonResult ecuStorageSave(ReqDevicePartStockInDto params){ + //判断是 + //查询部件价格 + QueryWrapper queryWrapper = new QueryWrapper(); + queryWrapper.eq("id",params.getComponentType()); + EbikeComponentTypeInfo ebikeComponentTypeInfo = ebikeComponentTypeInfoMapper.selectOneById(queryWrapper); + StaffFeign staffFeign = getStaffFeignInfo(); + // 获取当前操作用户 + String userId = staffFeign.getStaffId().toString(); + Long orgId = staffFeign.getOrgId(); + + //判断 + String componentEnterRecordId = params.getComponentEnterRecordId(); + EbikeComponentEnterRecords ebikeComponentEnterRecords = new EbikeComponentEnterRecords(); + ebikeComponentEnterRecords.setOwningRegion(params.getOwningRegion()); + ebikeComponentEnterRecords.setComponentEnterRecordId(params.getComponentType()); + ebikeComponentEnterRecords.setEnterQuantity(params.getEnterQuantity()); + ebikeComponentEnterRecords.setComponentPrice(ebikeComponentTypeInfo.getPrice()); + ebikeComponentEnterRecords.setCreatedUser(userId); + ebikeComponentEnterRecords.setCreatedAt(LocalDateTime.now()); + ebikeComponentEnterRecords.setState("1");//已入库 + if(componentEnterRecordId==null){ //新增 + ebikeComponentEnterRecordsMapper.insert(ebikeComponentEnterRecords); + }else{ + //查询表中是否存在一条记录 + QueryWrapper query = new QueryWrapper(); + query.eq("component_enter_record_id", componentEnterRecordId); + long l = ebikeComponentEnterRecordsMapper.selectCountByQuery(query); + if(l>0){//编辑 + ebikeComponentEnterRecords.setComponentEnterRecordId(componentEnterRecordId); + ebikeComponentEnterRecordsMapper.update(ebikeComponentEnterRecords); + }else{ + ebikeComponentEnterRecordsMapper.insert(ebikeComponentEnterRecords); + } + } + componentEnterRecordId=ebikeComponentEnterRecords.getComponentEnterRecordId(); + + //判断数据是否存在 存在则更新 否则插入 删除这次记录的所有 重新插入 + QueryWrapper query = new QueryWrapper(); + query.eq("component_enter_record_id", componentEnterRecordId); + ebikeEcuEnterRecordsMapper.deleteByQuery(query); + //保存ecu入库记录 + List enterRecords = params.getEbikeEcuEnterRecords(); + for(EbikeEcuEnterRecords record:enterRecords){ + record.setComponentEnterRecordId(componentEnterRecordId); + ebikeEcuEnterRecordsMapper.insert(record); + //部件仓库明细的插入 只有入库的时候才写入 写入后就不可删除了 只能通过状态控制 + EbikeComponentInventory ebikeComponentInventory = new EbikeComponentInventory(); + ebikeComponentInventory.setItemCode(record.getEcuCode()); + ebikeComponentInventory.setSerialNumber(record.getEcuCode()); + ebikeComponentInventory.setComponentType(ebikeComponentTypeInfo.getId()); + ebikeComponentInventory.setComponentName(ebikeComponentTypeInfo.getName()); + ebikeComponentInventory.setComponentPrice(ebikeComponentTypeInfo.getPrice()); + ebikeComponentInventory.setOrgId(orgId); + ebikeComponentInventory.setBrand(ebikeComponentTypeInfo.getBrand()); + ebikeComponentInventory.setLastUpdatedAt(LocalDateTime.now()); + ebikeComponentInventory.setLastUpdatedUser(userId); + ebikeComponentInventory.setState(1);//已入库 + ebikeComponentInventoryMapper.insert(ebikeComponentInventory); + } + int size = enterRecords.size(); + // 根据部件类型编号查询部件类型 新增或更新 统计表 + QueryWrapper query1 = new QueryWrapper(); + query1.eq("code", ebikeComponentTypeInfo.getId()); + EbikeComponentInventorycount ebikeComponentInventorycount = ebikeComponentInventorycountMapper.selectOneByQuery(query1); + ebikeComponentInventorycount.setOrgId(orgId); + ebikeComponentInventorycount.setCode(ebikeComponentTypeInfo.getId()); + ebikeComponentInventorycount.setName(ebikeComponentTypeInfo.getName()); + ebikeComponentInventorycount.setBrand(ebikeComponentTypeInfo.getBrand()); + ebikeComponentInventorycount.setUnit(ebikeComponentTypeInfo.getUnit()); + ebikeComponentInventorycount.setPrice(ebikeComponentTypeInfo.getPrice()); + if(ebikeComponentInventorycount==null){ + ebikeComponentInventorycount.setCount(size); + ebikeComponentInventorycountMapper.insert(ebikeComponentInventorycount); + }else { + ebikeComponentInventorycount.setCount(size+ebikeComponentInventorycount.getCount()); + ebikeComponentInventorycountMapper.update(ebikeComponentInventorycount); + } + return JsonResult.success("入库成功"); + } + + + /*** + * 设备部件作废接口 (通用 + * @param componentEnterRecordId + * @return + */ + @Override + @Transactional + public JsonResult invalidateDevicePart(String componentEnterRecordId){ + QueryWrapper query = new QueryWrapper(); + query.eq("component_enter_record_id", componentEnterRecordId); + EbikeComponentEnterRecords ebikeComponentEnterRecords = ebikeComponentEnterRecordsMapper.selectOneByQuery(query); + String componentType = ebikeComponentEnterRecords.getComponentType(); + Integer enterQuantity = ebikeComponentEnterRecords.getEnterQuantity(); + // 电池262711452730000 头盔262711452730001 中控262711452730008 需要单独操作明细表 + //先更新记录表状态 为已作废(-2) + ebikeComponentEnterRecords.setState("-2"); + ebikeComponentEnterRecordsMapper.update(ebikeComponentEnterRecords); + switch (componentType) { + case "262711452730000": // 电池 + updateBatteryDetails(componentEnterRecordId,componentType,-2); // 找到电池编号 更新仓库明细状态 和仓库总数量 + break; + case "262711452730001": // 头盔 + updateHelmetDetails(componentEnterRecordId,componentType,-2); // 找到头盔编号 更新仓库明细状态 和仓库总数量 + break; + case "262711452730008": // 中控 + updateCentralControlDetails(componentEnterRecordId,componentType,-2); // 找到中控编号 更新仓库明细状态 和仓库总数量 + break; + default: // 其他 + updateOtherComponentStock(componentType,enterQuantity); // 其他直接根据数量 更新仓库总数量 + break; + } + return JsonResult.success("成功"); + } + + + /*** + * 设备部件取消接口(通用) + * @param componentEnterRecordId + * @return + */ + @Override + @Transactional + public JsonResult cancelDevicePart(String componentEnterRecordId){ + QueryWrapper query = new QueryWrapper(); + query.eq("component_enter_record_id", componentEnterRecordId); + EbikeComponentEnterRecords ebikeComponentEnterRecords = ebikeComponentEnterRecordsMapper.selectOneByQuery(query); + //先更新记录表状态 为已取消(-1) + ebikeComponentEnterRecords.setState("-1"); + ebikeComponentEnterRecordsMapper.update(ebikeComponentEnterRecords); + return JsonResult.success("成功"); + } + + +// 方法实现 + private void updateBatteryDetails(String componentEnterRecordId,String componentType,Integer state) { + // 具体更新电池仓库明细状态和仓库总数量的逻辑 + QueryWrapper query = new QueryWrapper(); + query.eq("component_enter_record_id", componentEnterRecordId); + List ebikeBatteryEnterRecords = ebikeBatteryEnterRecordsMapper.selectListWithRelationsByQuery(query); + for(EbikeBatteryEnterRecords record:ebikeBatteryEnterRecords){ + query = new QueryWrapper(); + query.eq("item_code", record.getBatteryCode()); + EbikeComponentInventory ebikeComponentInventory = ebikeComponentInventoryMapper.selectOneByQuery(query); + ebikeComponentInventory.setState(state); + ebikeComponentInventoryMapper.update(ebikeComponentInventory); + } + int size = ebikeBatteryEnterRecords.size(); + updateOtherComponentStock(componentType,size); + } + private void updateHelmetDetails(String componentEnterRecordId,String componentType,Integer state) { + // 具体更新头盔仓库明细状态和仓库总数量的逻辑 + QueryWrapper query = new QueryWrapper(); + query.eq("component_enter_record_id", componentEnterRecordId); + + List ebikeHelmetEnterRecords = ebikeHelmetEnterRecordsMapper.selectListWithRelationsByQuery(query); + for(EbikeHelmetEnterRecords record:ebikeHelmetEnterRecords){ + query = new QueryWrapper(); + query.eq("item_code", record.getHelmetCode()); + EbikeComponentInventory ebikeComponentInventory = ebikeComponentInventoryMapper.selectOneByQuery(query); + ebikeComponentInventory.setState(state); + ebikeComponentInventoryMapper.update(ebikeComponentInventory); + } + int size = ebikeHelmetEnterRecords.size(); + updateOtherComponentStock(componentType,size); + } + + private void updateCentralControlDetails(String componentEnterRecordId,String componentType,Integer state) { + // 具体更新中控仓库明细状态和仓库总数量的逻辑 + QueryWrapper query = new QueryWrapper(); + query.eq("component_enter_record_id", componentEnterRecordId); + List ebikeEcuEnterRecords = ebikeEcuEnterRecordsMapper.selectListWithRelationsByQuery(query); + for(EbikeEcuEnterRecords record:ebikeEcuEnterRecords){ + query = new QueryWrapper(); + query.eq("item_code", record.getEcuSn()); + query.eq("serial_number", record.getEcuCode()); + EbikeComponentInventory ebikeComponentInventory = ebikeComponentInventoryMapper.selectOneByQuery(query); + ebikeComponentInventory.setState(state); + ebikeComponentInventoryMapper.update(ebikeComponentInventory); + } + int size = ebikeEcuEnterRecords.size(); + updateOtherComponentStock(componentType,size); + } + private void updateOtherComponentStock(String componentType,Integer size) { + // 具体更新其他组件仓库总数量的逻辑 + QueryWrapper query1 = new QueryWrapper(); + query1.eq("code", componentType); + EbikeComponentInventorycount ebikeComponentInventorycount = ebikeComponentInventorycountMapper.selectOneByQuery(query1); + if(ebikeComponentInventorycount !=null){ + ebikeComponentInventorycount.setCount(ebikeComponentInventorycount.getCount()-size); + ebikeComponentInventorycountMapper.update(ebikeComponentInventorycount); + } + } + public StaffFeign getStaffFeignInfo() { + String tokenValue = StpUtil.getTokenValue(); + // 调用 Feign 客户端获取用户信息 + JsonResult result = staffFeignClient.getInfoByToken(tokenValue); + // 判断返回码,若失败则抛出异常 + if (result.getCode() != Code.SUCCESS) { + throw new RuntimeException("获取用户信息失败"); + } + // 返回获取到的 StaffFeign 数据 + return result.getData(); + } +} diff --git a/ebike-operate/src/main/java/com/cdzy/ebikeoperate/service/impl/EbikeEcuEnterRecordsServiceImpl.java b/ebike-operate/src/main/java/com/cdzy/ebikeoperate/service/impl/EbikeEcuEnterRecordsServiceImpl.java new file mode 100644 index 00000000..f550432e --- /dev/null +++ b/ebike-operate/src/main/java/com/cdzy/ebikeoperate/service/impl/EbikeEcuEnterRecordsServiceImpl.java @@ -0,0 +1,18 @@ +package com.cdzy.ebikeoperate.service.impl; + +import com.cdzy.ebikeoperate.model.pojo.EbikeEcuEnterRecords; +import com.mybatisflex.spring.service.impl.ServiceImpl; +import com.cdzy.ebikeoperate.mapper.EbikeEcuEnterRecordsMapper; +import com.cdzy.ebikeoperate.service.EbikeEcuEnterRecordsService; +import org.springframework.stereotype.Service; + +/** + * 服务层实现。 + * + * @author zjd + * @since 2025-05-19 + */ +@Service +public class EbikeEcuEnterRecordsServiceImpl extends ServiceImpl implements EbikeEcuEnterRecordsService{ + +}