Browse Source

新增厂级配置

pull/21/head
Dreamglade 2 months ago
parent
commit
5854784fca
  1. 4
      yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/enums/ErrorCodeConstants.java
  2. 65
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/config/Factory/FactoryController.java
  3. 24
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/config/Factory/vo/FactoryBaseVO.java
  4. 12
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/config/Factory/vo/FactoryCreateReqVO.java
  5. 16
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/config/Factory/vo/FactoryPageReqVO.java
  6. 22
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/config/Factory/vo/FactoryRespVO.java
  7. 37
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/config/Factory/vo/FactorySaveReqVO.java
  8. 16
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/config/Factory/vo/FactoryUpdateReqVO.java
  9. 28
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/convert/config/FactoryConvert.java
  10. 30
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/config/FactoryDO.java
  11. 16
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/config/FactoryMapper.java
  12. 60
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/config/Factory/FactoryService.java
  13. 70
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/config/Factory/FactoryServiceImpl.java
  14. 22
      yudao-module-system/yudao-module-system-biz/src/main/resources/mapper/config/FactoryMapper.xml
  15. 29
      yudao-server/src/main/java/cn/iocoder/yudao/server/config/MybatisPlusCustomConfig.java

4
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, "已经存在相同名字的厂级");
}

65
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<PageResult<FactoryRespVO>> getFactoryPage(@Valid FactoryPageReqVO reqVO) {
// 【核心修改】直接接收 Service 返回的 PageResult<FactoryRespVO>
PageResult<FactoryRespVO> pageResult = factoryService.getFactoryPage(reqVO);
return success(pageResult);
}
@GetMapping("/get")
@Operation(summary = "获得厂级详情")
public CommonResult<FactoryRespVO> 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<Long> createFactory(@Valid @RequestBody FactorySaveReqVO reqVO) {
return success(factoryService.createFactory(reqVO));
}
@PutMapping("/update")
@Operation(summary = "修改厂级")
public CommonResult<Boolean> updateFactory(@Valid @RequestBody FactorySaveReqVO reqVO) {
factoryService.updateFactory(reqVO);
return success(true);
}
@DeleteMapping("/delete")
@Operation(summary = "删除厂级")
public CommonResult<Boolean> deleteFactory(@RequestParam("id") Long id) {
factoryService.deleteFactory(id);
return success(true);
}
}

24
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;
}

12
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 {
}

16
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;
}

22
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;
}

37
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; }
}

16
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;
}

28
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<FactoryRespVO> convertList(List<FactoryDO> list);
// 将 DO 分页 转换为 RespVO 分页
PageResult<FactoryRespVO> convertPage(PageResult<FactoryDO> page);
}

30
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;
}

16
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<FactoryDO> {
IPage<FactoryDO> selectFactoryPage(Page<?> page, @Param("reqVO") FactoryPageReqVO reqVO);
}

60
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<FactoryDO> getFactoryList(Collection<Long> ids);
/**
* 获得电厂分页
*
* @param pageReqVO 分页查询
* @return 电厂分页
*/
PageResult<FactoryRespVO> getFactoryPage(FactoryPageReqVO pageReqVO);
}

70
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<FactoryDO> getFactoryList(Collection<Long> ids) {
if (ids == null || ids.isEmpty()) {
return Collections.emptyList();
}
return factoryMapper.selectBatchIds(ids);
}
@Override
public PageResult<FactoryRespVO> getFactoryPage(FactoryPageReqVO pageReqVO) {
// 1. 创建MyBatis-Plus的Page对象
Page<FactoryDO> page = new Page<>(pageReqVO.getPageNo(), pageReqVO.getPageSize());
// 2. 调用我们新定义的、专门用于JOIN查询的Mapper方法
IPage<FactoryDO> pageResult = factoryMapper.selectFactoryPage(page, pageReqVO);
// 3. 将MyBatis-Plus的IPage<DO>结果,转换为框架自定义的PageResult<VO>
return new PageResult<>(factoryConvert.convertList(pageResult.getRecords()), pageResult.getTotal());
}
}

22
yudao-module-system/yudao-module-system-biz/src/main/resources/mapper/config/FactoryMapper.xml

@ -0,0 +1,22 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.iocoder.yudao.module.system.dal.mysql.config.FactoryMapper">
<select id="selectFactoryPage" resultType="cn.iocoder.yudao.module.system.dal.dataobject.config.FactoryDO">
SELECT
p.plant_id AS id,
p.plant_name AS name,
p.plant_shortname AS short_name,
p.area_id,
a.area_name AS area_name
FROM
plant_cfg AS p
LEFT JOIN area_cfg AS a ON p.area_id = a.area_id
<where>
<if test="reqVO.name != null and reqVO.name != ''">
AND p.plant_name LIKE CONCAT('%', #{reqVO.name}, '%')
</if>
</where>
</select>
</mapper>

29
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);
};
}
}
Loading…
Cancel
Save