Browse Source

Merge branch 'master' of http://120.26.116.243:3000/root/alert-backend into cjl-dev

# Conflicts:
#	yudao-server/src/main/resources/application-local.yaml
pull/26/head
chenjiale 2 months ago
parent
commit
80a1490944
  1. 42
      yudao-framework/yudao-spring-boot-starter-excel/src/main/java/cn/iocoder/yudao/framework/excel/core/util/ExcelUtils.java
  2. 7
      yudao-framework/yudao-spring-boot-starter-mybatis/pom.xml
  3. 40
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/device/DeviceController.java
  4. 37
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/device/vo/DeviceRespVO.java
  5. 11
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/exa/EXAController.java
  6. 21
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/instant/InstantCalcController.java
  7. 7
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/instant/vo/InstantPageReqVO.java
  8. 46
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dal/dataobject/device/DeviceDO.java
  9. 10
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dal/mysql/device/DeviceMapper.java
  10. 3
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dal/mysql/instant/InstantMapper.java
  11. 16
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/service/device/DeviceService.java
  12. 52
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/service/device/DeviceServiceImpl.java
  13. 9
      yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/enums/ErrorCodeConstants.java
  14. 63
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/config/Factory/FactoryController.java
  15. 24
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/config/Factory/vo/FactoryBaseVO.java
  16. 12
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/config/Factory/vo/FactoryCreateReqVO.java
  17. 16
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/config/Factory/vo/FactoryPageReqVO.java
  18. 22
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/config/Factory/vo/FactoryRespVO.java
  19. 30
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/config/Factory/vo/FactorySaveReqVO.java
  20. 16
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/config/Factory/vo/FactoryUpdateReqVO.java
  21. 72
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/config/SystemConfig/SystemConfigController.java
  22. 15
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/config/SystemConfig/vo/SystemConfigBaseVO.java
  23. 14
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/config/SystemConfig/vo/SystemConfigPageReqVO.java
  24. 13
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/config/SystemConfig/vo/SystemConfigRespVO.java
  25. 13
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/config/SystemConfig/vo/SystemConfigSaveReqVO.java
  26. 28
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/convert/config/FactoryConvert.java
  27. 48
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/convert/config/SystemConfigConvert.java
  28. 30
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/config/FactoryDO.java
  29. 35
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/config/SystemConfigDO.java
  30. 16
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/config/FactoryMapper.java
  31. 23
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/config/SystemConfigMapper.java
  32. 60
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/config/Factory/FactoryService.java
  33. 65
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/config/Factory/FactoryServiceImpl.java
  34. 44
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/config/SystemConfig/SystemConfigService.java
  35. 75
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/config/SystemConfig/SystemConfigServiceImpl.java
  36. 22
      yudao-module-system/yudao-module-system-biz/src/main/resources/mapper/config/FactoryMapper.xml
  37. 29
      yudao-server/src/main/java/cn/iocoder/yudao/server/config/MybatisPlusCustomConfig.java
  38. 14
      yudao-server/src/main/resources/application-local.yaml

42
yudao-framework/yudao-spring-boot-starter-excel/src/main/java/cn/iocoder/yudao/framework/excel/core/util/ExcelUtils.java

@ -4,6 +4,7 @@ import cn.iocoder.yudao.framework.common.util.http.HttpUtils;
import cn.iocoder.yudao.framework.excel.core.handler.SelectSheetWriteHandler;
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.converters.longconverter.LongStringConverter;
import com.alibaba.excel.support.ExcelTypeEnum;
import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.web.multipart.MultipartFile;
@ -54,4 +55,45 @@ public class ExcelUtils {
.doReadAllSync();
}
/**
* 将列表以 CSV 响应给前端
*
* @param response 响应
* @param filename 文件名
* @param sheetName Excel sheet
* @param head Excel head
* @param data 数据列表哦
* @param <T> 泛型保证 head data 类型的一致性
* @throws IOException 写入失败的情况
*/
public static <T> void writeCSV(HttpServletResponse response, String filename, String sheetName,
Class<T> head, List<T> data) throws IOException {
response.setHeader("Content-Disposition", "attachment;filename=" + HttpUtils.encodeUtf8(filename));
// response.setContentType("application/vnd.ms-excel;charset=UTF-8");
response.setContentType("application/vnd.opencmlformats-officedocument.spreadsheetml.sheet");
// 输出 Excel
EasyExcel.write(response.getOutputStream(), head)
.excelType(ExcelTypeEnum.CSV)
.autoCloseStream(false) // 不要自动关闭,交给 Servlet 自己处理
.registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()) // 基于 column 长度,自动适配。最大 255 宽度
.registerWriteHandler(new SelectSheetWriteHandler(head)) // 基于固定 sheet 实现下拉框
.registerConverter(new LongStringConverter()) // 避免 Long 类型丢失精度
.sheet(sheetName).doWrite(data);
// 设置 header 和 contentType。写在最后的原因是,避免报错时,响应 contentType 已经被修改了
response.setHeader("Content-Disposition", "attachment;filename=" + HttpUtils.encodeUtf8(filename));
// response.setContentType("application/vnd.ms-excel;charset=UTF-8");
response.setContentType("application/vnd.opencmlformats-officedocument.spreadsheetml.sheet");
}
public static <T> List<T> readCSV(MultipartFile file, Class<T> head) throws IOException {
return EasyExcel.read(file.getInputStream(), head, null)
.excelType(ExcelTypeEnum.CSV)
.autoCloseStream(false) // 不要自动关闭,交给 Servlet 自己处理
.doReadAllSync();
}
}

7
yudao-framework/yudao-spring-boot-starter-mybatis/pom.xml

@ -46,8 +46,15 @@
<dependency>
<groupId>com.microsoft.sqlserver</groupId>
<artifactId>mssql-jdbc</artifactId>
<version>11.2.0.jre11</version>
<optional>true</optional>
</dependency>
<dependency>
<groupId>com.microsoft.sqlserver</groupId>
<artifactId>sqljdbc4</artifactId>
<version>4.0</version>
</dependency>
<dependency>
<groupId>com.dameng</groupId>
<artifactId>DmJdbcDriver18</artifactId>

40
yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/device/DeviceController.java

@ -0,0 +1,40 @@
package cn.iocoder.yudao.module.alert.controller.admin.device;
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.module.alert.controller.admin.calcgroup.vo.CalcGroupPageReqVO;
import cn.iocoder.yudao.module.alert.controller.admin.calcgroup.vo.CalcGroupRespVO;
import cn.iocoder.yudao.module.alert.controller.admin.device.vo.DeviceRespVO;
import cn.iocoder.yudao.module.alert.dal.dataobject.calcgroup.CalcGroupDO;
import cn.iocoder.yudao.module.alert.dal.dataobject.device.DeviceDO;
import cn.iocoder.yudao.module.alert.service.calcgroup.CalcGroupService;
import cn.iocoder.yudao.module.alert.service.device.DeviceService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.annotation.Resource;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.Comparator;
import java.util.List;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
@Tag(name = "设备 - 设备首页")
@RestController
@RequestMapping("/device")
@Validated
public class DeviceController {
@Resource
private DeviceService deviceService;
@GetMapping("/info")
@Operation(summary = "获取页面属性", description = "用于构造前端页面")
public CommonResult<DeviceRespVO> getdeviceInfo(Long id) {
DeviceDO list = deviceService.getDeviceInfo(id);
return success(BeanUtils.toBean(list, DeviceRespVO.class));
}
}

37
yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/device/vo/DeviceRespVO.java

@ -0,0 +1,37 @@
package cn.iocoder.yudao.module.alert.controller.admin.device.vo;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.fasterxml.jackson.annotation.JsonProperty;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@Schema(description = "设备 - 设备首页")
@Data
@ExcelIgnoreUnannotated
public class DeviceRespVO {
@JsonProperty("ID")
@Schema(description = "id", example = "id")
private Long id;
@JsonProperty("Unit_ID")
@Schema(description = "机组id", example = "id")
private Long unitId;
@JsonProperty("System_ID")
@Schema(description = "系统id", example = "id")
private Long systemId;
@JsonProperty("Name")
@Schema(description = "页面名称", example = "yudao")
private String name;
@JsonProperty("Page_Content")
@Schema(description = "页面信息", example = "yudao")
private String pageContent;
}

11
yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/exa/EXAController.java

@ -105,8 +105,13 @@ public class EXAController {
Point.builder().ItemName("gbqegj").GroupName("test").ItemType(5).Descriptor("fqnewfej")
.EngUnits("ge").Source("批量录入").AutoSave(true).build()
);
// 输出
ExcelUtils.write(response, "用户导入模板.xls", "测点列表", Point.class, list);
// 输出excel
// ExcelUtils.write(response, "用户导入模板.xls", "测点列表", Point.class, list);
//输出csv
ExcelUtils.writeCSV(response, "用户导入模板.csv", "测点列表", Point.class, list);
}
@PostMapping("/import")
@ -119,7 +124,7 @@ public class EXAController {
public CommonResult<EXAPointImportRespVO> importExcel(@RequestParam("file") MultipartFile file,
@RequestParam(value = "updateSupport", required = false, defaultValue = "false") Boolean updateSupport) throws Exception {
System.out.println(file);
List<Point> list = ExcelUtils.read(file, Point.class);
List<Point> list = ExcelUtils.readCSV(file, Point.class);
return success(exaService.importPointList(list, updateSupport));
}

21
yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/instant/InstantCalcController.java

@ -0,0 +1,21 @@
package cn.iocoder.yudao.module.alert.controller.admin.instant;
import cn.iocoder.yudao.module.alert.service.instant.InstantService;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.annotation.Resource;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@Tag(name = "运行中心 - 模型实例-回算")
@RestController
@RequestMapping("/alert/instant/calc")
@Validated
public class InstantCalcController {
@Resource
private InstantService instantService;
}

7
yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/instant/vo/InstantPageReqVO.java

@ -10,8 +10,13 @@ import lombok.EqualsAndHashCode;
@EqualsAndHashCode(callSuper = true)
public class InstantPageReqVO extends PageParam {
@Schema(description = "机组id", example = "id")
private Integer unitId;
private Integer unit;
@Schema(description = "系统id", example = "id")
private Integer type;
@Schema(description = "子系统id", example = "id")
private Integer system;
@Schema(description = "系统id", example = "yudao")
private Integer modelId;

46
yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dal/dataobject/device/DeviceDO.java

@ -0,0 +1,46 @@
package cn.iocoder.yudao.module.alert.dal.dataobject.device;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.mybatisplus.annotation.KeySequence;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonAlias;
import com.fasterxml.jackson.annotation.JsonProperty;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
@DS("slave")
@TableName(value = "Page_Display", autoResultMap = true)
@KeySequence("system_role_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
@Data
@EqualsAndHashCode(callSuper = false)
public class DeviceDO {
@TableId("ID")
@Schema(description = "id", example = "id")
private Long id;
@TableField("Unit_ID")
@Schema(description = "机组id", example = "id")
private Long unitId;
@TableField("System_ID")
@Schema(description = "系统id", example = "id")
private Long systemId;
@TableField("Name")
@Schema(description = "页面名称", example = "yudao")
private String name;
@TableField("Page_Content")
@Schema(description = "页面信息", example = "yudao")
private String pageContent;
}

10
yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dal/mysql/device/DeviceMapper.java

@ -0,0 +1,10 @@
package cn.iocoder.yudao.module.alert.dal.mysql.device;
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
import cn.iocoder.yudao.module.alert.dal.dataobject.device.DeviceDO;
import cn.iocoder.yudao.module.alert.dal.dataobject.instant.InstantTableDO;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface DeviceMapper extends BaseMapperX<DeviceDO> {
}

3
yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dal/mysql/instant/InstantMapper.java

@ -17,6 +17,9 @@ public interface InstantMapper extends BaseMapperX<InstantDO> {
.eqIfPresent(InstantDO::getIsUpdate,reqVO.getIsUpdate())
.eqIfPresent(InstantDO::getRunning,reqVO.getRunning())
.eqIfPresent(InstantDO::getRunningLog,reqVO.getRunningLog())
.eqIfPresent(InstantDO::getUnitId,reqVO.getUnit())
.eqIfPresent(InstantDO::getSystemTypeId,reqVO.getType())
.eqIfPresent(InstantDO::getSystemId,reqVO.getSystem())
.orderByAsc(InstantDO::getId));
}

16
yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/service/device/DeviceService.java

@ -0,0 +1,16 @@
package cn.iocoder.yudao.module.alert.service.device;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.alert.controller.admin.instant.vo.*;
import cn.iocoder.yudao.module.alert.dal.dataobject.device.DeviceDO;
import cn.iocoder.yudao.module.alert.dal.dataobject.instant.InstantDO;
import jakarta.validation.Valid;
import java.io.IOException;
import java.util.List;
public interface DeviceService {
DeviceDO getDeviceInfo(Long id);
}

52
yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/service/device/DeviceServiceImpl.java

@ -0,0 +1,52 @@
package cn.iocoder.yudao.module.alert.service.device;
import cn.hutool.core.util.ObjUtil;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.json.JsonUtils;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.module.alert.controller.admin.exa.vo.Point;
import cn.iocoder.yudao.module.alert.controller.admin.instant.vo.*;
import cn.iocoder.yudao.module.alert.controller.admin.model.vo.RunModelInfoVO;
import cn.iocoder.yudao.module.alert.dal.dataobject.device.DeviceDO;
import cn.iocoder.yudao.module.alert.dal.dataobject.instant.InstantDO;
import cn.iocoder.yudao.module.alert.dal.dataobject.instant.InstantTableDO;
import cn.iocoder.yudao.module.alert.dal.mysql.device.DeviceMapper;
import cn.iocoder.yudao.module.alert.dal.mysql.instant.InstantMapper;
import cn.iocoder.yudao.module.alert.dal.mysql.instant.InstantTableMapper;
import cn.iocoder.yudao.module.alert.utils.EXAUtils;
import cn.iocoder.yudao.module.system.dal.redis.RedisKeyConstants;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.dynamic.datasource.annotation.Slave;
import com.google.common.annotations.VisibleForTesting;
import com.mzt.logapi.context.LogRecordContext;
import com.mzt.logapi.service.impl.DiffParseFunction;
import com.mzt.logapi.starter.annotation.LogRecord;
import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cache.annotation.CacheEvict;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Objects;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.INSTANT_NOT_EXISTS;
import static cn.iocoder.yudao.module.system.enums.LogRecordConstants.*;
@Slave
@Service
@Slf4j
public class DeviceServiceImpl implements DeviceService {
@Resource
private DeviceMapper deviceMapper;
@Override
public DeviceDO getDeviceInfo(Long id) {
return deviceMapper.selectById(id);
}
}

9
yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/enums/ErrorCodeConstants.java

@ -178,4 +178,13 @@ 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, "已经存在相同名字的厂级");
// ========== 系统配置 1-002-033-000 ==========
ErrorCode SYSTEM_CONFIG_NOT_EXISTS = new ErrorCode(1_002_033_000, "系统配置不存在");
ErrorCode SYSTEM_CONFIG_NAME_DUPLICATE = new ErrorCode(1_002_033_001, "已经存在该名字的系统配置");
}

63
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/config/Factory/FactoryController.java

@ -0,0 +1,63 @@
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.validation.Valid;
import lombok.RequiredArgsConstructor; // 新增导入
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")
@Validated
@RequiredArgsConstructor // << 修改点1:新增注解
public class FactoryController {
private final FactoryService factoryService; // << 修改点2:移除@Resource, 添加final
@GetMapping("/page")
@Operation(summary = "获得厂级分页列表")
public CommonResult<PageResult<FactoryRespVO>> getFactoryPage(@Valid FactoryPageReqVO reqVO) {
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);
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;
}

30
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,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;
@Schema(description = "电厂名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "正宁电厂")
@NotBlank(message = "电厂名称不能为空")
@Size(max = 255)
private String name;
@Schema(description = "电厂简称", example = "正宁")
@Size(max = 50)
private String shortName;
@Schema(description = "所属集团编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "9")
@NotNull(message = "所属集团不能为空")
private Long areaId;
// --- 此处所有手写的 Getter 和 Setter 方法均已删除 ---
}

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

72
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/config/SystemConfig/SystemConfigController.java

@ -0,0 +1,72 @@
package cn.iocoder.yudao.module.system.controller.admin.config.SystemConfig;
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.SystemConfig.vo.*;
import cn.iocoder.yudao.module.system.convert.config.SystemConfigConvert; // 确保引入正确的Convert
import cn.iocoder.yudao.module.system.dal.dataobject.config.SystemConfigDO;
import cn.iocoder.yudao.module.system.service.config.SystemConfig.SystemConfigService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.annotation.Resource;
import jakarta.validation.Valid;
import org.springframework.security.access.prepost.PreAuthorize;
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/system-config")
@Validated
public class SystemConfigController {
@Resource
private SystemConfigService systemConfigService;
@Resource
private SystemConfigConvert systemConfigConvert; // 【关键修正】注入Converter
@PostMapping("/create")
@Operation(summary = "创建系统配置")
@PreAuthorize("@ss.hasPermission('system:system-config:create')")
public CommonResult<Long> createSystemConfig(@Valid @RequestBody SystemConfigSaveReqVO createReqVO) {
return success(systemConfigService.createSystemConfig(createReqVO));
}
@PutMapping("/update")
@Operation(summary = "更新系统配置")
@PreAuthorize("@ss.hasPermission('system:system-config:update')")
public CommonResult<Boolean> updateSystemConfig(@Valid @RequestBody SystemConfigSaveReqVO updateReqVO) {
systemConfigService.updateSystemConfig(updateReqVO);
return success(true);
}
@DeleteMapping("/delete")
@Operation(summary = "删除系统配置")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('system:system-config:delete')")
public CommonResult<Boolean> deleteSystemConfig(@RequestParam("id") Long id) {
systemConfigService.deleteSystemConfig(id);
return success(true);
}
@GetMapping("/get")
@Operation(summary = "获得系统配置")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('system:system-config:query')")
public CommonResult<SystemConfigRespVO> getSystemConfig(@RequestParam("id") Long id) {
SystemConfigDO config = systemConfigService.getSystemConfig(id);
return success(systemConfigConvert.convert(config)); // 【关键修正】使用注入的bean进行转换
}
@GetMapping("/page")
@Operation(summary = "获得系统配置分页")
@PreAuthorize("@ss.hasPermission('system:system-config:query')")
public CommonResult<PageResult<SystemConfigRespVO>> getSystemConfigPage(@Valid SystemConfigPageReqVO pageVO) {
PageResult<SystemConfigDO> pageResult = systemConfigService.getSystemConfigPage(pageVO);
return success(systemConfigConvert.convertPage(pageResult)); // 【关键修正】使用注入的bean进行转换
}
}

15
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/config/SystemConfig/vo/SystemConfigBaseVO.java

@ -0,0 +1,15 @@
package cn.iocoder.yudao.module.system.controller.admin.config.SystemConfig.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotBlank;
import lombok.Data;
@Data
public class SystemConfigBaseVO {
@Schema(description = "系统名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "锅炉系统")
@NotBlank(message = "系统名称不能为空")
private String name;
@Schema(description = "系统简称", example = "锅炉")
private String abbreviation;
}

14
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/config/SystemConfig/vo/SystemConfigPageReqVO.java

@ -0,0 +1,14 @@
package cn.iocoder.yudao.module.system.controller.admin.config.SystemConfig.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 SystemConfigPageReqVO extends PageParam {
@Schema(description = "系统名称", example = "锅炉")
private String name;
}

13
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/config/SystemConfig/vo/SystemConfigRespVO.java

@ -0,0 +1,13 @@
package cn.iocoder.yudao.module.system.controller.admin.config.SystemConfig.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
@Schema(description = "管理后台 - 系统配置响应 VO")
@Data
@EqualsAndHashCode(callSuper = true)
public class SystemConfigRespVO extends SystemConfigBaseVO {
@Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED)
private Long id;
}

13
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/config/SystemConfig/vo/SystemConfigSaveReqVO.java

@ -0,0 +1,13 @@
package cn.iocoder.yudao.module.system.controller.admin.config.SystemConfig.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
@Schema(description = "管理后台 - 系统配置创建/修改 Request VO")
@Data
@EqualsAndHashCode(callSuper = true)
public class SystemConfigSaveReqVO extends SystemConfigBaseVO {
@Schema(description = "编号,更新时必填", 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);
}

48
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/convert/config/SystemConfigConvert.java

@ -0,0 +1,48 @@
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.SystemConfig.vo.SystemConfigRespVO;
import cn.iocoder.yudao.module.system.controller.admin.config.SystemConfig.vo.SystemConfigSaveReqVO;
import cn.iocoder.yudao.module.system.dal.dataobject.config.SystemConfigDO;
import org.mapstruct.Mapper;
import java.util.ArrayList;
import java.util.List;
@Mapper(componentModel = "spring")
public interface SystemConfigConvert {
default SystemConfigRespVO convert(SystemConfigDO bean) {
if (bean == null) {
return null;
}
SystemConfigRespVO respVO = new SystemConfigRespVO();
respVO.setId(bean.getId());
respVO.setName(bean.getName());
respVO.setAbbreviation(bean.getAbbreviation());
return respVO;
}
default List<SystemConfigRespVO> convertList(List<SystemConfigDO> list) {
if (list == null) {
return null;
}
List<SystemConfigRespVO> result = new ArrayList<>(list.size());
for (SystemConfigDO systemConfigDO : list) {
result.add(convert(systemConfigDO));
}
return result;
}
default PageResult<SystemConfigRespVO> convertPage(PageResult<SystemConfigDO> page) {
if (page == null) {
return null;
}
return new PageResult<>(convertList(page.getList()), page.getTotal());
}
SystemConfigDO convert(SystemConfigSaveReqVO bean);
}

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

35
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/config/SystemConfigDO.java

@ -0,0 +1,35 @@
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.*;
/**
* 系统配置 DO
*
* @author 芋道源码
*/
@TableName("system_cfg")
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class SystemConfigDO {
@TableId("system_id")
private Long id;
@TableField("system_name")
private String name;
@TableField("system_shortname")
private String abbreviation;
@TableField("system_type_id")
private Integer systemTypeId;
@TableField("unit_id")
private Integer unitId;
}

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

23
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/config/SystemConfigMapper.java

@ -0,0 +1,23 @@
package cn.iocoder.yudao.module.system.dal.mysql.config;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.module.system.controller.admin.config.SystemConfig.vo.SystemConfigPageReqVO;
import cn.iocoder.yudao.module.system.dal.dataobject.config.SystemConfigDO;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface SystemConfigMapper extends BaseMapperX<SystemConfigDO> {
// 【关键修正】恢复使用框架默认的分页查询,无需XML
default PageResult<SystemConfigDO> selectPage(SystemConfigPageReqVO reqVO) {
return selectPage(reqVO, new LambdaQueryWrapperX<SystemConfigDO>()
.likeIfPresent(SystemConfigDO::getName, reqVO.getName())
.orderByDesc(SystemConfigDO::getId));
}
default SystemConfigDO selectByName(String name) {
return selectOne(SystemConfigDO::getName, name);
}
}

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

65
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/config/Factory/FactoryServiceImpl.java

@ -0,0 +1,65 @@
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;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import lombok.RequiredArgsConstructor; // 新增导入
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
@RequiredArgsConstructor // << 修改点1:新增注解
public class FactoryServiceImpl implements FactoryService {
private final FactoryMapper factoryMapper; // << 修改点2:移除@Resource, 添加final
private final FactoryConvert factoryConvert; // << 修改点3:移除@Resource, 添加final
@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) {
Page<FactoryDO> page = new Page<>(pageReqVO.getPageNo(), pageReqVO.getPageSize());
IPage<FactoryDO> pageResult = factoryMapper.selectFactoryPage(page, pageReqVO);
return new PageResult<>(factoryConvert.convertList(pageResult.getRecords()), pageResult.getTotal());
}
}

44
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/config/SystemConfig/SystemConfigService.java

@ -0,0 +1,44 @@
package cn.iocoder.yudao.module.system.service.config.SystemConfig;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.system.controller.admin.config.SystemConfig.vo.SystemConfigPageReqVO;
import cn.iocoder.yudao.module.system.controller.admin.config.SystemConfig.vo.SystemConfigSaveReqVO;
import cn.iocoder.yudao.module.system.dal.dataobject.config.SystemConfigDO;
import jakarta.validation.Valid;
public interface SystemConfigService {
/**
* 创建系统配置
* @param createReqVO 创建信息
* @return 编号
*/
Long createSystemConfig(@Valid SystemConfigSaveReqVO createReqVO);
/**
* 更新系统配置
* @param updateReqVO 更新信息
*/
void updateSystemConfig(@Valid SystemConfigSaveReqVO updateReqVO);
/**
* 删除系统配置
* @param id 编号
*/
void deleteSystemConfig(Long id);
/**
* 获得系统配置
* @param id 编号
* @return 系统配置
*/
SystemConfigDO getSystemConfig(Long id);
/**
* 获得系统配置分页
* @param pageReqVO 分页查询
* @return 系统配置分页
*/
PageResult<SystemConfigDO> getSystemConfigPage(SystemConfigPageReqVO pageReqVO);
}

75
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/config/SystemConfig/SystemConfigServiceImpl.java

@ -0,0 +1,75 @@
package cn.iocoder.yudao.module.system.service.config.SystemConfig;
import cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.system.controller.admin.config.SystemConfig.vo.SystemConfigPageReqVO;
import cn.iocoder.yudao.module.system.controller.admin.config.SystemConfig.vo.SystemConfigSaveReqVO;
import cn.iocoder.yudao.module.system.convert.config.SystemConfigConvert;
import cn.iocoder.yudao.module.system.dal.dataobject.config.SystemConfigDO;
import cn.iocoder.yudao.module.system.dal.mysql.config.SystemConfigMapper;
import jakarta.annotation.Resource;
import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated;
import java.util.Objects;
import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.*;
@Service
@Validated
public class SystemConfigServiceImpl implements SystemConfigService {
@Resource
private SystemConfigMapper systemConfigMapper;
@Resource
private SystemConfigConvert systemConfigConvert;
@Override
public Long createSystemConfig(SystemConfigSaveReqVO createReqVO) {
validateNameDuplicate(createReqVO.getName(), null);
SystemConfigDO systemConfig = systemConfigConvert.convert(createReqVO);
systemConfigMapper.insert(systemConfig);
return systemConfig.getId();
}
@Override
public void updateSystemConfig(SystemConfigSaveReqVO updateReqVO) {
validateExists(updateReqVO.getId());
validateNameDuplicate(updateReqVO.getName(), updateReqVO.getId());
SystemConfigDO updateObj = systemConfigConvert.convert(updateReqVO);
systemConfigMapper.updateById(updateObj);
}
@Override
public void deleteSystemConfig(Long id) {
validateExists(id);
systemConfigMapper.deleteById(id);
}
@Override
public SystemConfigDO getSystemConfig(Long id) {
return systemConfigMapper.selectById(id);
}
@Override
public PageResult<SystemConfigDO> getSystemConfigPage(SystemConfigPageReqVO pageReqVO) {
return systemConfigMapper.selectPage(pageReqVO);
}
private void validateExists(Long id) {
if (systemConfigMapper.selectById(id) == null) {
throw ServiceExceptionUtil.exception(SYSTEM_CONFIG_NOT_EXISTS);
}
}
private void validateNameDuplicate(String name, Long id) {
SystemConfigDO config = systemConfigMapper.selectByName(name);
if (config == null) {
return;
}
if (id == null || !Objects.equals(config.getId(), id)) {
throw ServiceExceptionUtil.exception(SYSTEM_CONFIG_NAME_DUPLICATE);
}
}
}

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

14
yudao-server/src/main/resources/application-local.yaml

@ -40,7 +40,7 @@ spring:
time-between-eviction-runs-millis: 60000 # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位:毫秒
min-evictable-idle-time-millis: 300000 # 配置一个连接在池中最小生存的时间,单位:毫秒
max-evictable-idle-time-millis: 900000 # 配置一个连接在池中最大生存的时间,单位:毫秒
validation-query: SELECT 1 FROM DUAL # 配置检测连接是否有效
validation-query: SELECT 1 # 配置检测连接是否有效
test-while-idle: true
test-on-borrow: false
test-on-return: false
@ -64,10 +64,12 @@ spring:
# username: root # OpenGauss 连接的示例
# password: Yudao@2024 # OpenGauss 连接的示例
slave: # 模拟从库,可根据自己需要修改
lazy: true # 开启懒加载,保证启动速度
url: jdbc:mysql://120.26.116.243:3306/alert?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&rewriteBatchedStatements=true&nullCatalogMeansCurrent=true
username: root
password: 123456
# lazy: true # 开启懒加载,保证启动速度
# url: jdbc:mysql://120.26.116.243:3306/alert?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&rewriteBatchedStatements=true&nullCatalogMeansCurrent=true
url: jdbc:sqlserver://47.98.32.148:1433;DatabaseName=alert # SQLServer 连接的示例
driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
username: sa
password: powerSIS#123
# tdengine: # IoT 数据库(需要 IoT 物联网再开启噢!)
# url: jdbc:TAOS-RS://127.0.0.1:6041/ruoyi_vue_pro
# driver-class-name: com.taosdata.jdbc.rs.RestfulDriver
@ -271,7 +273,7 @@ pf4j:
# pluginsDir: /tmp/
pluginsDir: ../plugins
EXA:
ip: 47.98.32.148
ip: 120.27.236.75
point:
head: XN.
algorithm:

Loading…
Cancel
Save