From 5854784fcac8f675d01a94c921849993ae3e1b5a Mon Sep 17 00:00:00 2001 From: Dreamglade Date: Thu, 24 Jul 2025 17:23:52 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=8E=82=E7=BA=A7?= =?UTF-8?q?=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../system/enums/ErrorCodeConstants.java | 4 ++ .../config/Factory/FactoryController.java | 65 +++++++++++++++++ .../config/Factory/vo/FactoryBaseVO.java | 24 +++++++ .../config/Factory/vo/FactoryCreateReqVO.java | 12 ++++ .../config/Factory/vo/FactoryPageReqVO.java | 16 +++++ .../config/Factory/vo/FactoryRespVO.java | 22 ++++++ .../config/Factory/vo/FactorySaveReqVO.java | 37 ++++++++++ .../config/Factory/vo/FactoryUpdateReqVO.java | 16 +++++ .../system/convert/config/FactoryConvert.java | 28 ++++++++ .../dal/dataobject/config/FactoryDO.java | 30 ++++++++ .../dal/mysql/config/FactoryMapper.java | 16 +++++ .../config/Factory/FactoryService.java | 60 ++++++++++++++++ .../config/Factory/FactoryServiceImpl.java | 70 +++++++++++++++++++ .../resources/mapper/config/FactoryMapper.xml | 22 ++++++ .../config/MybatisPlusCustomConfig.java | 29 ++++++++ 15 files changed, 451 insertions(+) create mode 100644 yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/config/Factory/FactoryController.java create mode 100644 yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/config/Factory/vo/FactoryBaseVO.java create mode 100644 yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/config/Factory/vo/FactoryCreateReqVO.java create mode 100644 yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/config/Factory/vo/FactoryPageReqVO.java create mode 100644 yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/config/Factory/vo/FactoryRespVO.java create mode 100644 yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/config/Factory/vo/FactorySaveReqVO.java create mode 100644 yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/config/Factory/vo/FactoryUpdateReqVO.java create mode 100644 yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/convert/config/FactoryConvert.java create mode 100644 yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/config/FactoryDO.java create mode 100644 yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/config/FactoryMapper.java create mode 100644 yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/config/Factory/FactoryService.java create mode 100644 yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/config/Factory/FactoryServiceImpl.java create mode 100644 yudao-module-system/yudao-module-system-biz/src/main/resources/mapper/config/FactoryMapper.xml create mode 100644 yudao-server/src/main/java/cn/iocoder/yudao/server/config/MybatisPlusCustomConfig.java diff --git a/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/enums/ErrorCodeConstants.java b/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/enums/ErrorCodeConstants.java index a220fd5..f19fdeb 100644 --- a/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/enums/ErrorCodeConstants.java +++ b/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/enums/ErrorCodeConstants.java @@ -178,4 +178,8 @@ public interface ErrorCodeConstants { ErrorCode WARN_NOT_EXISTS = new ErrorCode(4_001_000, "预警不存在"); ErrorCode Company_NOT_EXISTS = new ErrorCode(1_002_30_000,"集团不存在"); ErrorCode Company_NAME_DUPLICATE = new ErrorCode(1_002_31_000,"集团名称已存在"); + + // ========== 厂级 1-002-32-000 ========== + ErrorCode Factory_NOT_EXISTS = new ErrorCode(1_002_32_000, "厂级不存在"); + ErrorCode Factory_NAME_DUPLICATE = new ErrorCode(1_002_32_001, "已经存在相同名字的厂级"); } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/config/Factory/FactoryController.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/config/Factory/FactoryController.java new file mode 100644 index 0000000..d74a1d6 --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/config/Factory/FactoryController.java @@ -0,0 +1,65 @@ +package cn.iocoder.yudao.module.system.controller.admin.config.Factory; + +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.module.system.controller.admin.config.Factory.vo.FactoryPageReqVO; +import cn.iocoder.yudao.module.system.controller.admin.config.Factory.vo.FactoryRespVO; +import cn.iocoder.yudao.module.system.controller.admin.config.Factory.vo.FactorySaveReqVO; +import cn.iocoder.yudao.module.system.convert.config.FactoryConvert; +import cn.iocoder.yudao.module.system.dal.dataobject.config.FactoryDO; +import cn.iocoder.yudao.module.system.service.config.Factory.FactoryService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.annotation.Resource; +import jakarta.validation.Valid; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; + +@Tag(name = "管理后台 - 厂级管理") +@RestController +@RequestMapping("/system/Factory") // 【注意】根据您的业务,这里可能应该是 /system/plant +@Validated +public class FactoryController { + + @Resource + private FactoryService factoryService; // 变量名建议小写开头 factoryService + + @GetMapping("/page") + @Operation(summary = "获得厂级分页列表") + public CommonResult> getFactoryPage(@Valid FactoryPageReqVO reqVO) { + // 【核心修改】直接接收 Service 返回的 PageResult + PageResult pageResult = factoryService.getFactoryPage(reqVO); + return success(pageResult); + } + + @GetMapping("/get") + @Operation(summary = "获得厂级详情") + public CommonResult getFactory(@RequestParam("id") Long id) { + FactoryDO factory = factoryService.getFactory(id); + // 【注意】这里也需要处理集团名称的关联显示,简单起见暂时保持原样 + // 理想情况下,getFactory 也应该返回一个包含 areaName 的 VO + return success(FactoryConvert.INSTANCE.convert(factory)); + } + + @PostMapping("/create") + @Operation(summary = "创建厂级") + public CommonResult createFactory(@Valid @RequestBody FactorySaveReqVO reqVO) { + return success(factoryService.createFactory(reqVO)); + } + + @PutMapping("/update") + @Operation(summary = "修改厂级") + public CommonResult updateFactory(@Valid @RequestBody FactorySaveReqVO reqVO) { + factoryService.updateFactory(reqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除厂级") + public CommonResult deleteFactory(@RequestParam("id") Long id) { + factoryService.deleteFactory(id); + return success(true); + } +} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/config/Factory/vo/FactoryBaseVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/config/Factory/vo/FactoryBaseVO.java new file mode 100644 index 0000000..d7dd95a --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/config/Factory/vo/FactoryBaseVO.java @@ -0,0 +1,24 @@ +package cn.iocoder.yudao.module.system.controller.admin.config.Factory.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Schema(description = "管理后台 - 厂级基础VO") +@Data +public class FactoryBaseVO { + + @Schema(description = "序号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") + + private Long id; + + @Schema(description = "厂级序号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1001") + + private Long num; + + @Schema(description = "厂级名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "测试厂级") + + private String name; + + @Schema(description = "厂级简称", requiredMode = Schema.RequiredMode.REQUIRED, example = "测试") + private String shortName; +} \ No newline at end of file diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/config/Factory/vo/FactoryCreateReqVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/config/Factory/vo/FactoryCreateReqVO.java new file mode 100644 index 0000000..0aebaef --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/config/Factory/vo/FactoryCreateReqVO.java @@ -0,0 +1,12 @@ +package cn.iocoder.yudao.module.system.controller.admin.config.Factory.vo; + +import cn.iocoder.yudao.module.system.controller.admin.config.Company.vo.CompanyBaseVO; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@Schema(description = "管理后台 - 厂级创建请求VO") +@Data +@EqualsAndHashCode(callSuper = true) +public class FactoryCreateReqVO extends CompanyBaseVO { +} \ No newline at end of file diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/config/Factory/vo/FactoryPageReqVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/config/Factory/vo/FactoryPageReqVO.java new file mode 100644 index 0000000..a9c8817 --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/config/Factory/vo/FactoryPageReqVO.java @@ -0,0 +1,16 @@ +package cn.iocoder.yudao.module.system.controller.admin.config.Factory.vo; + +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@Schema(description = "管理后台 - 厂级分页请求VO") +@Data +@EqualsAndHashCode(callSuper = true) +public class FactoryPageReqVO extends PageParam { + + @Schema(description = "厂级名称", example = "测试") + private String name; + private Long num; +} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/config/Factory/vo/FactoryRespVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/config/Factory/vo/FactoryRespVO.java new file mode 100644 index 0000000..f17c8fe --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/config/Factory/vo/FactoryRespVO.java @@ -0,0 +1,22 @@ +package cn.iocoder.yudao.module.system.controller.admin.config.Factory.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import java.time.LocalDateTime; + +@Schema(description = "管理后台 - 电厂响应 VO") +@Data +public class FactoryRespVO { + @Schema(description = "电厂编号 (对应 plant_id)", requiredMode = Schema.RequiredMode.REQUIRED) + private Long id; + @Schema(description = "电厂名称 (对应 plant_name)", requiredMode = Schema.RequiredMode.REQUIRED) + private String name; + @Schema(description = "电厂简称 (对应 plant_shortname)") + private String shortName; + @Schema(description = "所属集团编号 (对应 area_id)", requiredMode = Schema.RequiredMode.REQUIRED) + private Long areaId; + @Schema(description = "所属集团名称 (后端关联查询得到)") + private String areaName; + @Schema(description = "创建时间") + private LocalDateTime createTime; +} \ No newline at end of file diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/config/Factory/vo/FactorySaveReqVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/config/Factory/vo/FactorySaveReqVO.java new file mode 100644 index 0000000..a591408 --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/config/Factory/vo/FactorySaveReqVO.java @@ -0,0 +1,37 @@ +// ----------------------------------------------------------------- +package cn.iocoder.yudao.module.system.controller.admin.config.Factory.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Size; + +@Schema(description = "管理后台 - 电厂创建/修改 Request VO") +public class FactorySaveReqVO { + + @Schema(description = "电厂编号,更新时必填", example = "1") + private Long id; // 对应 plant_id + + @Schema(description = "电厂名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "正宁电厂") + @NotBlank(message = "电厂名称不能为空") + @Size(max = 255) + private String name; // 对应 plant_name + + @Schema(description = "电厂简称", example = "正宁") + @Size(max = 50) + private String shortName; // 对应 plant_shortname + + @Schema(description = "所属集团编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "9") + @NotNull(message = "所属集团不能为空") + private Long areaId; // 对应 area_id + + // --- Getter 和 Setter 方法 --- + public Long getId() { return id; } + public void setId(Long id) { this.id = id; } + public String getName() { return name; } + public void setName(String name) { this.name = name; } + public String getShortName() { return shortName; } + public void setShortName(String shortName) { this.shortName = shortName; } + public Long getAreaId() { return areaId; } + public void setAreaId(Long areaId) { this.areaId = areaId; } +} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/config/Factory/vo/FactoryUpdateReqVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/config/Factory/vo/FactoryUpdateReqVO.java new file mode 100644 index 0000000..5870765 --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/config/Factory/vo/FactoryUpdateReqVO.java @@ -0,0 +1,16 @@ +package cn.iocoder.yudao.module.system.controller.admin.config.Factory.vo; + +import cn.iocoder.yudao.module.system.controller.admin.config.Company.vo.CompanyBaseVO; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; + + +@Schema(description = "管理后台 - 厂级更新请求VO") +@Data +@EqualsAndHashCode(callSuper = true) +public class FactoryUpdateReqVO extends CompanyBaseVO { + + @Schema(description = "序号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") + private Long id; +} \ No newline at end of file diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/convert/config/FactoryConvert.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/convert/config/FactoryConvert.java new file mode 100644 index 0000000..8981bfa --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/convert/config/FactoryConvert.java @@ -0,0 +1,28 @@ +package cn.iocoder.yudao.module.system.convert.config; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.module.system.controller.admin.config.Factory.vo.FactoryRespVO; +import cn.iocoder.yudao.module.system.controller.admin.config.Factory.vo.FactorySaveReqVO; +import cn.iocoder.yudao.module.system.dal.dataobject.config.FactoryDO; +import org.mapstruct.Mapper; +import org.mapstruct.factory.Mappers; +import java.util.List; + +@Mapper(componentModel = "spring") // 【核心修正】添加 componentModel = "spring" 属性 +public interface FactoryConvert { + + FactoryConvert INSTANCE = Mappers.getMapper(FactoryConvert.class); + + // 将 SaveReqVO 转换为 DO + FactoryDO convert(FactorySaveReqVO bean); + + // 将 DO 转换为 RespVO + FactoryRespVO convert(FactoryDO bean); + + // 将 DO 列表转换为 RespVO 列表 + List convertList(List list); + + // 将 DO 分页 转换为 RespVO 分页 + PageResult convertPage(PageResult page); + +} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/config/FactoryDO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/config/FactoryDO.java new file mode 100644 index 0000000..1204f92 --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/config/FactoryDO.java @@ -0,0 +1,30 @@ +package cn.iocoder.yudao.module.system.dal.dataobject.config; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.*; + +@TableName("plant_cfg") +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class FactoryDO { + + @TableId("plant_id") + private Long id; + + @TableField("plant_name") + private String name; + + @TableField("plant_shortname") + private String shortName; + + @TableField("area_id") + private Long areaId; + + @TableField(exist = false) + private String areaName; + +} \ No newline at end of file diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/config/FactoryMapper.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/config/FactoryMapper.java new file mode 100644 index 0000000..69ccc19 --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/config/FactoryMapper.java @@ -0,0 +1,16 @@ +package cn.iocoder.yudao.module.system.dal.mysql.config; + +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.module.system.controller.admin.config.Factory.vo.FactoryPageReqVO; +import cn.iocoder.yudao.module.system.dal.dataobject.config.FactoryDO; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +@Mapper +public interface FactoryMapper extends BaseMapperX { + + IPage selectFactoryPage(Page page, @Param("reqVO") FactoryPageReqVO reqVO); + +} \ No newline at end of file diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/config/Factory/FactoryService.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/config/Factory/FactoryService.java new file mode 100644 index 0000000..6d84747 --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/config/Factory/FactoryService.java @@ -0,0 +1,60 @@ +package cn.iocoder.yudao.module.system.service.config.Factory; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.module.system.controller.admin.config.Factory.vo.FactoryPageReqVO; +import cn.iocoder.yudao.module.system.controller.admin.config.Factory.vo.FactoryRespVO; +import cn.iocoder.yudao.module.system.controller.admin.config.Factory.vo.FactorySaveReqVO; +import cn.iocoder.yudao.module.system.dal.dataobject.config.FactoryDO; +import jakarta.validation.Valid; +import java.util.Collection; +import java.util.List; + +public interface FactoryService { + + /** + * 创建电厂 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createFactory(@Valid FactorySaveReqVO createReqVO); + + /** + * 更新电厂 + * + * @param updateReqVO 更新信息 + */ + void updateFactory(@Valid FactorySaveReqVO updateReqVO); + + /** + * 删除电厂 + * + * @param id 编号 + */ + void deleteFactory(Long id); + + /** + * 获得电厂 + * + * @param id 编号 + * @return 电厂 + */ + FactoryDO getFactory(Long id); + + /** + * 获得电厂列表 + * + * @param ids 编号 + * @return 电厂列表 + */ + List getFactoryList(Collection ids); + + /** + * 获得电厂分页 + * + * @param pageReqVO 分页查询 + * @return 电厂分页 + */ + PageResult getFactoryPage(FactoryPageReqVO pageReqVO); + +} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/config/Factory/FactoryServiceImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/config/Factory/FactoryServiceImpl.java new file mode 100644 index 0000000..76c2454 --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/config/Factory/FactoryServiceImpl.java @@ -0,0 +1,70 @@ +package cn.iocoder.yudao.module.system.service.config.Factory; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.module.system.controller.admin.config.Factory.vo.FactoryPageReqVO; +import cn.iocoder.yudao.module.system.controller.admin.config.Factory.vo.FactoryRespVO; +import cn.iocoder.yudao.module.system.controller.admin.config.Factory.vo.FactorySaveReqVO; +import cn.iocoder.yudao.module.system.convert.config.FactoryConvert; +import cn.iocoder.yudao.module.system.dal.dataobject.config.FactoryDO; +import cn.iocoder.yudao.module.system.dal.mysql.config.FactoryMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; // 【关键新增】导入 IPage 类 +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; // 【关键新增】导入 Page 类 +import jakarta.annotation.Resource; +import org.springframework.stereotype.Service; +import org.springframework.validation.annotation.Validated; + +import java.util.Collection; +import java.util.Collections; +import java.util.List; + +@Service +@Validated +public class FactoryServiceImpl implements FactoryService { + + @Resource + private FactoryMapper factoryMapper; + @Resource + private FactoryConvert factoryConvert; + + @Override + public Long createFactory(FactorySaveReqVO createReqVO) { + FactoryDO factory = factoryConvert.convert(createReqVO); + factoryMapper.insert(factory); + return factory.getId(); + } + + @Override + public void updateFactory(FactorySaveReqVO updateReqVO) { + FactoryDO updateObj = factoryConvert.convert(updateReqVO); + factoryMapper.updateById(updateObj); + } + + @Override + public void deleteFactory(Long id) { + factoryMapper.deleteById(id); + } + + @Override + public FactoryDO getFactory(Long id) { + return factoryMapper.selectById(id); + } + + @Override + public List getFactoryList(Collection ids) { + if (ids == null || ids.isEmpty()) { + return Collections.emptyList(); + } + return factoryMapper.selectBatchIds(ids); + } + + @Override + public PageResult getFactoryPage(FactoryPageReqVO pageReqVO) { + // 1. 创建MyBatis-Plus的Page对象 + Page page = new Page<>(pageReqVO.getPageNo(), pageReqVO.getPageSize()); + // 2. 调用我们新定义的、专门用于JOIN查询的Mapper方法 + IPage pageResult = factoryMapper.selectFactoryPage(page, pageReqVO); + // 3. 将MyBatis-Plus的IPage结果,转换为框架自定义的PageResult + return new PageResult<>(factoryConvert.convertList(pageResult.getRecords()), pageResult.getTotal()); + } + +} \ No newline at end of file diff --git a/yudao-module-system/yudao-module-system-biz/src/main/resources/mapper/config/FactoryMapper.xml b/yudao-module-system/yudao-module-system-biz/src/main/resources/mapper/config/FactoryMapper.xml new file mode 100644 index 0000000..a6f56e0 --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/resources/mapper/config/FactoryMapper.xml @@ -0,0 +1,22 @@ + + + + + + + \ No newline at end of file diff --git a/yudao-server/src/main/java/cn/iocoder/yudao/server/config/MybatisPlusCustomConfig.java b/yudao-server/src/main/java/cn/iocoder/yudao/server/config/MybatisPlusCustomConfig.java new file mode 100644 index 0000000..72a4489 --- /dev/null +++ b/yudao-server/src/main/java/cn/iocoder/yudao/server/config/MybatisPlusCustomConfig.java @@ -0,0 +1,29 @@ +package cn.iocoder.yudao.server.config; + +import com.baomidou.mybatisplus.autoconfigure.MybatisPlusPropertiesCustomizer; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +/** + * MyBatis Plus 的自定义配置类 + * + * @author 芋道源码 + */ +@Configuration +public class MybatisPlusCustomConfig { + + /** + * 创建一个 MybatisPlusPropertiesCustomizer Bean + * 用于在 Spring Boot 自动配置 MyBatis-Plus 之前,自定义其属性 + */ + @Bean + public MybatisPlusPropertiesCustomizer mybatisPlusPropertiesCustomizer() { + return properties -> { + // 【核心配置】在这里用代码的方式,为 mybatis-plus.mapper-locations 赋上我们期望的值 + // "classpath*:mapper/**/*.xml" 会递归扫描所有模块下 resources/mapper 目录中的所有xml文件 + String[] mapperLocations = {"classpath*:mapper/**/*.xml"}; + properties.setMapperLocations(mapperLocations); + }; + } + +} \ No newline at end of file From 9575c2f5bddbc6d7867e2fff820e36eb6bd09752 Mon Sep 17 00:00:00 2001 From: Dreamglade Date: Fri, 1 Aug 2025 19:32:26 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E5=8E=82=E7=BA=A7=E9=85=8D=E7=BD=AE?= =?UTF-8?q?=E4=B8=80=E6=AC=A1=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../config/Factory/FactoryController.java | 14 +++++------ .../config/Factory/vo/FactorySaveReqVO.java | 23 +++++++------------ .../config/Factory/FactoryServiceImpl.java | 17 +++++--------- 3 files changed, 20 insertions(+), 34 deletions(-) diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/config/Factory/FactoryController.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/config/Factory/FactoryController.java index d74a1d6..731897b 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/config/Factory/FactoryController.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/config/Factory/FactoryController.java @@ -10,8 +10,8 @@ import cn.iocoder.yudao.module.system.dal.dataobject.config.FactoryDO; import cn.iocoder.yudao.module.system.service.config.Factory.FactoryService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; -import jakarta.annotation.Resource; import jakarta.validation.Valid; +import lombok.RequiredArgsConstructor; // 新增导入 import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; @@ -19,27 +19,25 @@ import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; @Tag(name = "管理后台 - 厂级管理") @RestController -@RequestMapping("/system/Factory") // 【注意】根据您的业务,这里可能应该是 /system/plant +@RequestMapping("/system/Factory") @Validated +@RequiredArgsConstructor // << 修改点1:新增注解 public class FactoryController { - @Resource - private FactoryService factoryService; // 变量名建议小写开头 factoryService + private final FactoryService factoryService; // << 修改点2:移除@Resource, 添加final @GetMapping("/page") @Operation(summary = "获得厂级分页列表") public CommonResult> getFactoryPage(@Valid FactoryPageReqVO reqVO) { - // 【核心修改】直接接收 Service 返回的 PageResult PageResult pageResult = factoryService.getFactoryPage(reqVO); return success(pageResult); } + // ... 其他方法保持不变 ... @GetMapping("/get") @Operation(summary = "获得厂级详情") public CommonResult getFactory(@RequestParam("id") Long id) { FactoryDO factory = factoryService.getFactory(id); - // 【注意】这里也需要处理集团名称的关联显示,简单起见暂时保持原样 - // 理想情况下,getFactory 也应该返回一个包含 areaName 的 VO return success(FactoryConvert.INSTANCE.convert(factory)); } @@ -62,4 +60,4 @@ public class FactoryController { factoryService.deleteFactory(id); return success(true); } -} +} \ No newline at end of file diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/config/Factory/vo/FactorySaveReqVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/config/Factory/vo/FactorySaveReqVO.java index a591408..85a3748 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/config/Factory/vo/FactorySaveReqVO.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/config/Factory/vo/FactorySaveReqVO.java @@ -1,37 +1,30 @@ -// ----------------------------------------------------------------- package cn.iocoder.yudao.module.system.controller.admin.config.Factory.vo; import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.Size; +import lombok.Data; // 新增导入 @Schema(description = "管理后台 - 电厂创建/修改 Request VO") +@Data // << 修改点:新增注解,并移除所有手写的getter/setter public class FactorySaveReqVO { @Schema(description = "电厂编号,更新时必填", example = "1") - private Long id; // 对应 plant_id + private Long id; @Schema(description = "电厂名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "正宁电厂") @NotBlank(message = "电厂名称不能为空") @Size(max = 255) - private String name; // 对应 plant_name + private String name; @Schema(description = "电厂简称", example = "正宁") @Size(max = 50) - private String shortName; // 对应 plant_shortname + private String shortName; @Schema(description = "所属集团编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "9") @NotNull(message = "所属集团不能为空") - private Long areaId; // 对应 area_id + private Long areaId; - // --- Getter 和 Setter 方法 --- - public Long getId() { return id; } - public void setId(Long id) { this.id = id; } - public String getName() { return name; } - public void setName(String name) { this.name = name; } - public String getShortName() { return shortName; } - public void setShortName(String shortName) { this.shortName = shortName; } - public Long getAreaId() { return areaId; } - public void setAreaId(Long areaId) { this.areaId = areaId; } -} + // --- 此处所有手写的 Getter 和 Setter 方法均已删除 --- +} \ No newline at end of file diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/config/Factory/FactoryServiceImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/config/Factory/FactoryServiceImpl.java index 76c2454..bb288c4 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/config/Factory/FactoryServiceImpl.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/config/Factory/FactoryServiceImpl.java @@ -7,9 +7,9 @@ import cn.iocoder.yudao.module.system.controller.admin.config.Factory.vo.Factory import cn.iocoder.yudao.module.system.convert.config.FactoryConvert; import cn.iocoder.yudao.module.system.dal.dataobject.config.FactoryDO; import cn.iocoder.yudao.module.system.dal.mysql.config.FactoryMapper; -import com.baomidou.mybatisplus.core.metadata.IPage; // 【关键新增】导入 IPage 类 -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; // 【关键新增】导入 Page 类 -import jakarta.annotation.Resource; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import lombok.RequiredArgsConstructor; // 新增导入 import org.springframework.stereotype.Service; import org.springframework.validation.annotation.Validated; @@ -19,12 +19,11 @@ import java.util.List; @Service @Validated +@RequiredArgsConstructor // << 修改点1:新增注解 public class FactoryServiceImpl implements FactoryService { - @Resource - private FactoryMapper factoryMapper; - @Resource - private FactoryConvert factoryConvert; + private final FactoryMapper factoryMapper; // << 修改点2:移除@Resource, 添加final + private final FactoryConvert factoryConvert; // << 修改点3:移除@Resource, 添加final @Override public Long createFactory(FactorySaveReqVO createReqVO) { @@ -59,12 +58,8 @@ public class FactoryServiceImpl implements FactoryService { @Override public PageResult getFactoryPage(FactoryPageReqVO pageReqVO) { - // 1. 创建MyBatis-Plus的Page对象 Page page = new Page<>(pageReqVO.getPageNo(), pageReqVO.getPageSize()); - // 2. 调用我们新定义的、专门用于JOIN查询的Mapper方法 IPage pageResult = factoryMapper.selectFactoryPage(page, pageReqVO); - // 3. 将MyBatis-Plus的IPage结果,转换为框架自定义的PageResult return new PageResult<>(factoryConvert.convertList(pageResult.getRecords()), pageResult.getTotal()); } - } \ No newline at end of file