From 70fae8bb37133d84894a42712d9435dabb9edf8d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=82=96=E6=99=8B=E9=A3=9E?= <378266566@qq.com> Date: Fri, 27 Jun 2025 10:18:27 +0800 Subject: [PATCH 1/9] =?UTF-8?q?fix:=E5=A2=9E=E5=8A=A0=E6=9C=BA=E7=BB=84?= =?UTF-8?q?=E3=80=81=E7=B3=BB=E7=BB=9F=E3=80=81=E5=AD=90=E7=B3=BB=E7=BB=9F?= =?UTF-8?q?=E7=AD=9B=E9=80=89=E6=9D=A1=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/admin/instant/vo/InstantPageReqVO.java | 7 ++++++- .../module/alert/dal/mysql/instant/InstantMapper.java | 3 +++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/instant/vo/InstantPageReqVO.java b/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/instant/vo/InstantPageReqVO.java index 640eea7..7098d13 100644 --- a/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/instant/vo/InstantPageReqVO.java +++ b/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; diff --git a/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dal/mysql/instant/InstantMapper.java b/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dal/mysql/instant/InstantMapper.java index 49d83d1..1453fd2 100644 --- a/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dal/mysql/instant/InstantMapper.java +++ b/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 { .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)); } From 66a82465e3845e6eebcdaec1011b2a9b546e63bb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=82=96=E6=99=8B=E9=A3=9E?= <378266566@qq.com> Date: Fri, 27 Jun 2025 10:18:55 +0800 Subject: [PATCH 2/9] =?UTF-8?q?fix:=E5=B0=86excel=E6=94=B9=E4=B8=BAcsv?= =?UTF-8?q?=E6=A0=BC=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../framework/excel/core/util/ExcelUtils.java | 42 +++++++++++++++++++ .../controller/admin/exa/EXAController.java | 11 +++-- 2 files changed, 50 insertions(+), 3 deletions(-) diff --git a/yudao-framework/yudao-spring-boot-starter-excel/src/main/java/cn/iocoder/yudao/framework/excel/core/util/ExcelUtils.java b/yudao-framework/yudao-spring-boot-starter-excel/src/main/java/cn/iocoder/yudao/framework/excel/core/util/ExcelUtils.java index 44a1929..4535cba 100644 --- a/yudao-framework/yudao-spring-boot-starter-excel/src/main/java/cn/iocoder/yudao/framework/excel/core/util/ExcelUtils.java +++ b/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 泛型,保证 head 和 data 类型的一致性 + * @throws IOException 写入失败的情况 + */ + public static void writeCSV(HttpServletResponse response, String filename, String sheetName, + Class head, List 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 List readCSV(MultipartFile file, Class head) throws IOException { + return EasyExcel.read(file.getInputStream(), head, null) + .excelType(ExcelTypeEnum.CSV) + .autoCloseStream(false) // 不要自动关闭,交给 Servlet 自己处理 + .doReadAllSync(); + } + } diff --git a/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/exa/EXAController.java b/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/exa/EXAController.java index 56e98e3..e91b1d0 100644 --- a/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/exa/EXAController.java +++ b/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 importExcel(@RequestParam("file") MultipartFile file, @RequestParam(value = "updateSupport", required = false, defaultValue = "false") Boolean updateSupport) throws Exception { System.out.println(file); - List list = ExcelUtils.read(file, Point.class); + List list = ExcelUtils.readCSV(file, Point.class); return success(exaService.importPointList(list, updateSupport)); } From 5854784fcac8f675d01a94c921849993ae3e1b5a Mon Sep 17 00:00:00 2001 From: Dreamglade Date: Thu, 24 Jul 2025 17:23:52 +0800 Subject: [PATCH 3/9] =?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 4/9] =?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 From 82fc7fe2c89017e9b028ad36267e0c1fcb93aa83 Mon Sep 17 00:00:00 2001 From: Dreamglade Date: Fri, 15 Aug 2025 11:22:05 +0800 Subject: [PATCH 5/9] =?UTF-8?q?=E7=B3=BB=E7=BB=9F=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 | 5 ++ .../SystemConfig/SystemConfigController.java | 72 ++++++++++++++++++ .../SystemConfig/vo/SystemConfigBaseVO.java | 15 ++++ .../vo/SystemConfigPageReqVO.java | 14 ++++ .../SystemConfig/vo/SystemConfigRespVO.java | 13 ++++ .../vo/SystemConfigSaveReqVO.java | 13 ++++ .../convert/config/SystemConfigConvert.java | 48 ++++++++++++ .../dal/dataobject/config/SystemConfigDO.java | 35 +++++++++ .../dal/mysql/config/SystemConfigMapper.java | 23 ++++++ .../SystemConfig/SystemConfigService.java | 44 +++++++++++ .../SystemConfig/SystemConfigServiceImpl.java | 75 +++++++++++++++++++ 11 files changed, 357 insertions(+) create mode 100644 yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/config/SystemConfig/SystemConfigController.java create mode 100644 yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/config/SystemConfig/vo/SystemConfigBaseVO.java create mode 100644 yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/config/SystemConfig/vo/SystemConfigPageReqVO.java create mode 100644 yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/config/SystemConfig/vo/SystemConfigRespVO.java create mode 100644 yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/config/SystemConfig/vo/SystemConfigSaveReqVO.java create mode 100644 yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/convert/config/SystemConfigConvert.java create mode 100644 yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/config/SystemConfigDO.java create mode 100644 yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/config/SystemConfigMapper.java create mode 100644 yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/config/SystemConfig/SystemConfigService.java create mode 100644 yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/config/SystemConfig/SystemConfigServiceImpl.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 f19fdeb..5fe882a 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 @@ -182,4 +182,9 @@ public interface ErrorCodeConstants { // ========== 厂级 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, "已经存在该名字的系统配置"); + } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/config/SystemConfig/SystemConfigController.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/config/SystemConfig/SystemConfigController.java new file mode 100644 index 0000000..d540d9b --- /dev/null +++ b/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 createSystemConfig(@Valid @RequestBody SystemConfigSaveReqVO createReqVO) { + return success(systemConfigService.createSystemConfig(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新系统配置") + @PreAuthorize("@ss.hasPermission('system:system-config:update')") + public CommonResult 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 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 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> getSystemConfigPage(@Valid SystemConfigPageReqVO pageVO) { + PageResult pageResult = systemConfigService.getSystemConfigPage(pageVO); + return success(systemConfigConvert.convertPage(pageResult)); // 【关键修正】使用注入的bean进行转换 + } +} \ 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/SystemConfig/vo/SystemConfigBaseVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/config/SystemConfig/vo/SystemConfigBaseVO.java new file mode 100644 index 0000000..5247a92 --- /dev/null +++ b/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; +} \ 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/SystemConfig/vo/SystemConfigPageReqVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/config/SystemConfig/vo/SystemConfigPageReqVO.java new file mode 100644 index 0000000..8b716b4 --- /dev/null +++ b/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; +} \ 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/SystemConfig/vo/SystemConfigRespVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/config/SystemConfig/vo/SystemConfigRespVO.java new file mode 100644 index 0000000..b2b6056 --- /dev/null +++ b/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; +} \ 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/SystemConfig/vo/SystemConfigSaveReqVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/config/SystemConfig/vo/SystemConfigSaveReqVO.java new file mode 100644 index 0000000..fec6eaf --- /dev/null +++ b/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; +} \ 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/SystemConfigConvert.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/convert/config/SystemConfigConvert.java new file mode 100644 index 0000000..0744f9b --- /dev/null +++ b/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 convertList(List list) { + if (list == null) { + return null; + } + List result = new ArrayList<>(list.size()); + for (SystemConfigDO systemConfigDO : list) { + result.add(convert(systemConfigDO)); + } + return result; + } + + default PageResult convertPage(PageResult page) { + if (page == null) { + return null; + } + return new PageResult<>(convertList(page.getList()), page.getTotal()); + } + + SystemConfigDO convert(SystemConfigSaveReqVO bean); + +} \ 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/dataobject/config/SystemConfigDO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/config/SystemConfigDO.java new file mode 100644 index 0000000..d384541 --- /dev/null +++ b/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; + +} \ 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/SystemConfigMapper.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/config/SystemConfigMapper.java new file mode 100644 index 0000000..b8b9cd1 --- /dev/null +++ b/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 { + + // 【关键修正】恢复使用框架默认的分页查询,无需XML + default PageResult selectPage(SystemConfigPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .likeIfPresent(SystemConfigDO::getName, reqVO.getName()) + .orderByDesc(SystemConfigDO::getId)); + } + + default SystemConfigDO selectByName(String name) { + return selectOne(SystemConfigDO::getName, name); + } +} \ 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/SystemConfig/SystemConfigService.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/config/SystemConfig/SystemConfigService.java new file mode 100644 index 0000000..1c761b8 --- /dev/null +++ b/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 getSystemConfigPage(SystemConfigPageReqVO pageReqVO); + +} \ 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/SystemConfig/SystemConfigServiceImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/config/SystemConfig/SystemConfigServiceImpl.java new file mode 100644 index 0000000..80f7579 --- /dev/null +++ b/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 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); + } + } +} \ No newline at end of file From c3ecd4ea720cc1f8fbb1c9a88e9ddf5d4e10d37a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=82=96=E6=99=8B=E9=A3=9E?= <378266566@qq.com> Date: Fri, 12 Sep 2025 16:58:58 +0800 Subject: [PATCH 6/9] =?UTF-8?q?fix:=E9=A2=84=E8=AD=A6=E5=9B=9E=E7=AE=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/instant/InstantCalcController.java | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/instant/InstantCalcController.java diff --git a/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/instant/InstantCalcController.java b/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/instant/InstantCalcController.java new file mode 100644 index 0000000..c4e2f5c --- /dev/null +++ b/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; + + + + +} From fd0323865bfc924a8868b2ac13024af99fe6644e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=82=96=E6=99=8B=E9=A3=9E?= <378266566@qq.com> Date: Thu, 18 Sep 2025 08:59:22 +0800 Subject: [PATCH 7/9] =?UTF-8?q?feat:=E5=A2=9E=E5=8A=A0=E6=A0=B9=E6=8D=AEid?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2json=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/device/DeviceController.java | 40 ++++++++++++++ .../admin/device/vo/DeviceRespVO.java | 37 +++++++++++++ .../alert/dal/dataobject/device/DeviceDO.java | 46 ++++++++++++++++ .../alert/dal/mysql/device/DeviceMapper.java | 10 ++++ .../alert/service/device/DeviceService.java | 16 ++++++ .../service/device/DeviceServiceImpl.java | 52 +++++++++++++++++++ 6 files changed, 201 insertions(+) create mode 100644 yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/device/DeviceController.java create mode 100644 yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/device/vo/DeviceRespVO.java create mode 100644 yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dal/dataobject/device/DeviceDO.java create mode 100644 yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dal/mysql/device/DeviceMapper.java create mode 100644 yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/service/device/DeviceService.java create mode 100644 yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/service/device/DeviceServiceImpl.java diff --git a/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/device/DeviceController.java b/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/device/DeviceController.java new file mode 100644 index 0000000..9688b49 --- /dev/null +++ b/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 getdeviceInfo(Long id) { + DeviceDO list = deviceService.getDeviceInfo(id); + return success(BeanUtils.toBean(list, DeviceRespVO.class)); + } +} diff --git a/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/device/vo/DeviceRespVO.java b/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/device/vo/DeviceRespVO.java new file mode 100644 index 0000000..1703f26 --- /dev/null +++ b/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; +} diff --git a/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dal/dataobject/device/DeviceDO.java b/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dal/dataobject/device/DeviceDO.java new file mode 100644 index 0000000..b324e70 --- /dev/null +++ b/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; + +} diff --git a/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dal/mysql/device/DeviceMapper.java b/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dal/mysql/device/DeviceMapper.java new file mode 100644 index 0000000..67fa2ec --- /dev/null +++ b/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 { +} diff --git a/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/service/device/DeviceService.java b/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/service/device/DeviceService.java new file mode 100644 index 0000000..a6d57b1 --- /dev/null +++ b/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); + + +} diff --git a/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/service/device/DeviceServiceImpl.java b/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/service/device/DeviceServiceImpl.java new file mode 100644 index 0000000..a3c8883 --- /dev/null +++ b/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); + } + +} From a6627716e5bdd1edf401f77ea0882433e23a35c7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=82=96=E6=99=8B=E9=A3=9E?= <378266566@qq.com> Date: Thu, 18 Sep 2025 09:00:27 +0800 Subject: [PATCH 8/9] =?UTF-8?q?fix:=E5=A2=9E=E5=8A=A0sqlserver=E9=A9=B1?= =?UTF-8?q?=E5=8A=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- yudao-framework/yudao-spring-boot-starter-mybatis/pom.xml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/yudao-framework/yudao-spring-boot-starter-mybatis/pom.xml b/yudao-framework/yudao-spring-boot-starter-mybatis/pom.xml index 5a619c5..3505473 100644 --- a/yudao-framework/yudao-spring-boot-starter-mybatis/pom.xml +++ b/yudao-framework/yudao-spring-boot-starter-mybatis/pom.xml @@ -46,8 +46,15 @@ com.microsoft.sqlserver mssql-jdbc + 11.2.0.jre11 + true + + com.microsoft.sqlserver + sqljdbc4 + 4.0 + com.dameng DmJdbcDriver18 From c07a7399110d32efe0c7f709c5e148d50056fa42 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=82=96=E6=99=8B=E9=A3=9E?= <378266566@qq.com> Date: Thu, 18 Sep 2025 09:01:16 +0800 Subject: [PATCH 9/9] =?UTF-8?q?fix:=E8=A7=A3=E5=86=B3DUAL=E4=B8=8D?= =?UTF-8?q?=E5=AD=98=E5=9C=A8=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/resources/application-local.yaml | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/yudao-server/src/main/resources/application-local.yaml b/yudao-server/src/main/resources/application-local.yaml index 3680358..ae5cf1f 100644 --- a/yudao-server/src/main/resources/application-local.yaml +++ b/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: 120.26.116.243 + ip: 120.27.236.75 point: head: XN. algorithm: