diff --git a/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/calcgroup/CalcGroupController.java b/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/calcgroup/CalcGroupController.java index 89e967e..6e1604f 100644 --- a/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/calcgroup/CalcGroupController.java +++ b/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/calcgroup/CalcGroupController.java @@ -5,12 +5,8 @@ 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.model.vo.ModelVersionPageReqVO; -import cn.iocoder.yudao.module.alert.controller.admin.model.vo.ModelVersionRespVO; import cn.iocoder.yudao.module.alert.dal.dataobject.calcgroup.CalcGroupDO; -import cn.iocoder.yudao.module.alert.dal.dataobject.model.ModelVersionDO; import cn.iocoder.yudao.module.alert.service.calcgroup.CalcGroupService; -import cn.iocoder.yudao.module.alert.service.model.ModelService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.annotation.Resource; diff --git a/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/calcgroup/vo/CalcGroupRespVO.java b/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/calcgroup/vo/CalcGroupRespVO.java index 2dc2fb6..59d2f99 100644 --- a/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/calcgroup/vo/CalcGroupRespVO.java +++ b/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/calcgroup/vo/CalcGroupRespVO.java @@ -9,11 +9,11 @@ import lombok.Data; @ExcelIgnoreUnannotated public class CalcGroupRespVO { @Schema(description = "版本id", example = "id") - private String id; + private Long id; @Schema(description = "机组id", example = "id") - private String unitId; + private Long unitId; @Schema(description = "计算组名称", example = "yudao") private String groupName; 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 146d30c..640eea7 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 @@ -14,7 +14,7 @@ public class InstantPageReqVO extends PageParam { private Integer unitId; @Schema(description = "系统id", example = "yudao") - private Integer MODEL_ID; + private Integer modelId; @Schema(description = "模型名称", example = "yudao") private String mpName; diff --git a/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/instant/vo/InstantRespVO.java b/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/instant/vo/InstantRespVO.java index ba516c3..9d503f6 100644 --- a/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/instant/vo/InstantRespVO.java +++ b/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/instant/vo/InstantRespVO.java @@ -14,10 +14,10 @@ import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_ @ExcelIgnoreUnannotated public class InstantRespVO { @Schema(description = "实例id", example = "id") - private String id; + private Long id; @Schema(description = "模型id", example = "yudao") - private String modelId; + private Long modelId; @Schema(description = "实例名称", example = "yudao") private String mpName; @@ -55,7 +55,7 @@ public class InstantRespVO { private Long calcGroup; @Schema(description = "版本号", example = "1024") - private String modelVersionId; + private Long modelVersionId; private Integer isUpdate; diff --git a/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/instant/vo/InstantSaveReqVO.java b/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/instant/vo/InstantSaveReqVO.java index 7ebc7c2..35ad0c2 100644 --- a/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/instant/vo/InstantSaveReqVO.java +++ b/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/instant/vo/InstantSaveReqVO.java @@ -17,33 +17,30 @@ import java.util.List; @Data public class InstantSaveReqVO extends InstantInfoVO { @Schema(description = "实例编号", example = "1") + @NotNull(message = "实例编号不能为空") + private Long id; @Schema(description = "模型编号", requiredMode = Schema.RequiredMode.REQUIRED,example = "1") - @NotNull(message = "模型编号不能为空") @DiffLogField(name = "模型编号") private Long modelId; @Schema(description = "模型实例信息", requiredMode = Schema.RequiredMode.REQUIRED,example = "1") - @NotNull(message = "模型实例信息不能为空") @DiffLogField(name = "模型实例信息") @JsonIgnore private String instantInfo; @Schema(description = "输入点号信息-原始数据", requiredMode = Schema.RequiredMode.REQUIRED,example = "1") - @NotNull(message = "输入点号信息不能为空") @DiffLogField(name = "输入点号信息") private List pointInfo; @Schema(description = "实例名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") - @NotBlank(message = "实例名称不能为空") @Size(max = 30, message = "实例名称长度不能超过 30 个字符") @DiffLogField(name = "实例名称") private String mpName; @Schema(description = "时间间隔", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") - @NotNull(message = "时间间隔不能为空") @DiffLogField(name = "时间间隔") private Long intervalTime; @@ -58,20 +55,17 @@ public class InstantSaveReqVO extends InstantInfoVO { @Schema(description = "是否存历史-是(存),否(不存)", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") - @NotNull(message = "是否存历史不能为空") @DiffLogField(name = "是否存历史") private Long hisSto; @Schema(description = "计算组编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") - @NotNull(message = "计算组") @DiffLogField(name = "计算组") private Long calcGroup; @Schema(description = "版本编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") - @NotNull(message = "版本编号") @DiffLogField(name = "版本编号") private Long modelVersionId; diff --git a/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/warn/vo/WarnPageReqVO.java b/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/warn/vo/WarnPageReqVO.java new file mode 100644 index 0000000..a13ef92 --- /dev/null +++ b/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/warn/vo/WarnPageReqVO.java @@ -0,0 +1,16 @@ +package cn.iocoder.yudao.module.alert.controller.admin.warn.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 = "运行中心 - 预警分页 Request VO") +@Data +@EqualsAndHashCode(callSuper = true) +public class WarnPageReqVO extends PageParam { + + @Schema(description = "实例id", example = "id") + private Long mpId; + +} diff --git a/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/warn/vo/WarnRespVO.java b/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/warn/vo/WarnRespVO.java new file mode 100644 index 0000000..338b900 --- /dev/null +++ b/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/warn/vo/WarnRespVO.java @@ -0,0 +1,89 @@ +package cn.iocoder.yudao.module.alert.controller.admin.warn.vo; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.time.LocalDateTime; + +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +@Schema(description = "运行中心 - 预警分页 Request VO") +@Data +@ExcelIgnoreUnannotated +public class WarnRespVO { + @Schema(description = "预警id", example = "id") + private Long id; + + @Schema(description = "实例id", example = "id") + + private Long mpId; + @Schema(description = "点号", example = "id") + + private String pointId; + + @Schema(description = "点号描述", example = "id") + + private String pointName; + @Schema(description = "实例名称", example = "id") + + private String mpName; + + + private String unit; + + + + private Long alarmLevel; + + //报警类型 + private String alarmModelRuleName; + + + private String warnConstraint; + private String warnConstraintName; + + + + private String timeDurationThreshold; + + //短信开关 + private Long shortMessageOnOff; + //光字牌 + private Long gzpOnOff; + + private String gzpName; + + //推送诊断 + private Long copyToDiagOnOff; + + //已有实例数量 + private Long number; + + //参与报警 + private Long warnStatus; + + + + private Double uplimit; + + private Double lowlimit; + + private String systemName; + + /** + * 创建者-名称 + * + * + */ + + private String createName; + /** + * 更新者-名称 + * + * + */ + + private String updateName; +} diff --git a/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/warn/vo/WarnSaveReqVO.java b/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/warn/vo/WarnSaveReqVO.java new file mode 100644 index 0000000..a9e2e7b --- /dev/null +++ b/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/warn/vo/WarnSaveReqVO.java @@ -0,0 +1,50 @@ +package cn.iocoder.yudao.module.alert.controller.admin.warn.vo; + +import cn.iocoder.yudao.module.alert.controller.admin.instant.vo.InstantInfoVO; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.mzt.logapi.starter.annotation.DiffLogField; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Size; +import lombok.Data; + +import java.util.List; + +@Schema(description = "运行中心 - 预警创建/更新 Request VO") +@Data +public class WarnSaveReqVO { + @Schema(description = "预警编号", example = "1") + @NotNull(message = "预警编号不能为空") + + private Long id; + + + + + @Schema(description = "参与报警", requiredMode = Schema.RequiredMode.REQUIRED,example = "1") + @DiffLogField(name = "参与报警") + private Long warnStatus; + + private Long timeDurationThreshold; + + private Long alarmLevel; + private String warnConstraint; + private String warnConstraintName; + //短信开关 + private Long shortMessageOnOff; + //光字牌 + private Long gzpOnOff; + + private String gzpName; + //推送诊断 + private Long copyToDiagOnOff; + + //已有实例数量 + private Long number; + + private Double uplimit; + + private Double lowlimit; + + +} diff --git a/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/warn/warnController.java b/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/warn/warnController.java new file mode 100644 index 0000000..a4e5a3d --- /dev/null +++ b/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/warn/warnController.java @@ -0,0 +1,59 @@ +package cn.iocoder.yudao.module.alert.controller.admin.warn; + +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.module.alert.controller.admin.instant.vo.InstantPageReqVO; +import cn.iocoder.yudao.module.alert.controller.admin.instant.vo.InstantRespVO; +import cn.iocoder.yudao.module.alert.controller.admin.instant.vo.InstantSaveReqVO; +import cn.iocoder.yudao.module.alert.controller.admin.warn.vo.WarnPageReqVO; +import cn.iocoder.yudao.module.alert.controller.admin.warn.vo.WarnRespVO; +import cn.iocoder.yudao.module.alert.controller.admin.warn.vo.WarnSaveReqVO; +import cn.iocoder.yudao.module.alert.dal.dataobject.instant.InstantDO; +import cn.iocoder.yudao.module.alert.dal.dataobject.warn.WarnDO; +import cn.iocoder.yudao.module.alert.service.instant.InstantService; +import cn.iocoder.yudao.module.alert.service.warn.WarnService; +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.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("/alert/warn") +@Validated +public class warnController { + + + @Resource + private WarnService warnService; + + @GetMapping("/page") + @Operation(summary = "获得预警分页列表") + @PreAuthorize("@ss.hasPermission('run:warn:query')") + public CommonResult> getInstantPage(@Valid WarnPageReqVO pageReqVO) { + PageResult pageResult = warnService.getWarnPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, WarnRespVO.class)); + } + + @GetMapping("/get") + @Operation(summary = "获得预警信息") + @PreAuthorize("@ss.hasPermission('run:warn:query')") + public CommonResult getWarn(@RequestParam("id") Long id) { + WarnDO warn = warnService.getWarn(id); + return success(BeanUtils.toBean(warn, WarnRespVO.class)); + } + + @PutMapping("/update") + @Operation(summary = "修改预警") + @PreAuthorize("@ss.hasPermission('run:warn:update')") + public CommonResult updateInstant(@Valid @RequestBody WarnSaveReqVO updateReqVO) { + warnService.updateWarn(updateReqVO); + return success(true); + } +} diff --git a/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dal/dataobject/instant/InstantDO.java b/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dal/dataobject/instant/InstantDO.java index e14e159..82f1fd0 100644 --- a/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dal/dataobject/instant/InstantDO.java +++ b/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dal/dataobject/instant/InstantDO.java @@ -18,7 +18,7 @@ public class InstantDO extends BaseDO { private Long id; - private String modelId; + private Long modelId; private String mpName; @@ -49,7 +49,7 @@ public class InstantDO extends BaseDO { private Long calcGroup; - private String modelVersionId; + private Long modelVersionId; private Long isUpdate; diff --git a/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dal/dataobject/instant/InstantTableDO.java b/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dal/dataobject/instant/InstantTableDO.java index 4283ad5..6902710 100644 --- a/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dal/dataobject/instant/InstantTableDO.java +++ b/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dal/dataobject/instant/InstantTableDO.java @@ -15,7 +15,7 @@ import java.time.LocalDateTime; public class InstantTableDO extends BaseDO { private Long id; - private String modelId; + private Long modelId; private String mpName; diff --git a/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dal/dataobject/warn/WarnDO.java b/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dal/dataobject/warn/WarnDO.java new file mode 100644 index 0000000..63e369b --- /dev/null +++ b/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dal/dataobject/warn/WarnDO.java @@ -0,0 +1,68 @@ +package cn.iocoder.yudao.module.alert.dal.dataobject.warn; + +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; +import com.baomidou.mybatisplus.annotation.KeySequence; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.time.LocalDateTime; + +@TableName(value = "warn_online_cfg_view", autoResultMap = true) +@KeySequence("system_role_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +public class WarnDO extends BaseDO { + + private Long id; + + private Long mpId; + + private String pointId; + + + private String pointName; + + private String mpName; + + private String formula; + + private String unit; + +//报警类型-id + private Long alarmLevel; + //报警类型 + private String alarmModelRuleName; + + private String warnConstraint; + private String warnConstraintName; + + + + private Long timeDurationThreshold; + + //短信开关 + private Long shortMessageOnOff; + //光字牌 + private Long gzpOnOff; + private String gzpName; + //推送诊断 + private Long copyToDiagOnOff; + + //已有实例数量 + private Long number; + + //参与报警 + private Long warnStatus; + + + + private Double uplimit; + + private Double lowlimit; + + private String systemName; + + private String createName; + private String updateName; +} diff --git a/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dal/dataobject/warn/WarnTableDO.java b/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dal/dataobject/warn/WarnTableDO.java new file mode 100644 index 0000000..5af27f2 --- /dev/null +++ b/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dal/dataobject/warn/WarnTableDO.java @@ -0,0 +1,60 @@ +package cn.iocoder.yudao.module.alert.dal.dataobject.warn; + +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; +import com.baomidou.mybatisplus.annotation.KeySequence; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.time.LocalDateTime; + +@TableName(value = "warn_online_cfg", autoResultMap = true) +@KeySequence("system_role_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +public class WarnTableDO extends BaseDO { + + private Long id; + + private Long mpId; + + private String pointId; + + + private String pointName; + + private String mpName; + + private String formula; + + private String unit; + + //报警类型 + private String modelOrRule; + + + private String warnConstraint; + private String warnConstraintName; + private Long alarmLevel; + + + private Long timeDurationThreshold; + + //短信开关 + private Long shortMessageOnOff; + //光字牌 + private Long gzpOnOff; + private String gzpName; + //推送诊断 + private Long copyToDiagOnOff; + + //参与报警 + private Long warnStatus; + + + private Double uplimit; + + private Double lowlimit; + + +} diff --git a/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dal/mysql/warn/WarnMapper.java b/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dal/mysql/warn/WarnMapper.java new file mode 100644 index 0000000..943aa7c --- /dev/null +++ b/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dal/mysql/warn/WarnMapper.java @@ -0,0 +1,20 @@ +package cn.iocoder.yudao.module.alert.dal.mysql.warn; + +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.alert.controller.admin.instant.vo.InstantPageReqVO; +import cn.iocoder.yudao.module.alert.controller.admin.warn.vo.WarnPageReqVO; +import cn.iocoder.yudao.module.alert.dal.dataobject.instant.InstantDO; +import cn.iocoder.yudao.module.alert.dal.dataobject.warn.WarnDO; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface WarnMapper extends BaseMapperX { + default PageResult selectPage(WarnPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .likeIfPresent(WarnDO::getMpId, reqVO.getMpId().toString()) + .orderByAsc(WarnDO::getId)); + } + +} diff --git a/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dal/mysql/warn/WarnTableMapper.java b/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dal/mysql/warn/WarnTableMapper.java new file mode 100644 index 0000000..11d115c --- /dev/null +++ b/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dal/mysql/warn/WarnTableMapper.java @@ -0,0 +1,9 @@ +package cn.iocoder.yudao.module.alert.dal.mysql.warn; + +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.module.alert.dal.dataobject.warn.WarnTableDO; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface WarnTableMapper extends BaseMapperX { +} \ No newline at end of file diff --git a/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/service/warn/WarnService.java b/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/service/warn/WarnService.java new file mode 100644 index 0000000..e91e42a --- /dev/null +++ b/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/service/warn/WarnService.java @@ -0,0 +1,30 @@ +package cn.iocoder.yudao.module.alert.service.warn; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.module.alert.controller.admin.instant.vo.InstantSaveReqVO; +import cn.iocoder.yudao.module.alert.controller.admin.warn.vo.WarnPageReqVO; +import cn.iocoder.yudao.module.alert.controller.admin.warn.vo.WarnSaveReqVO; +import cn.iocoder.yudao.module.alert.dal.dataobject.instant.InstantDO; +import cn.iocoder.yudao.module.alert.dal.dataobject.warn.WarnDO; +import jakarta.validation.Valid; + +public interface WarnService { + /** + * 获得预警分页 + * + * @param reqVO 预警分页查询 + * @return 预警分页结果 + */ + PageResult getWarnPage(WarnPageReqVO reqVO); + + + WarnDO getWarn(Long id); + + /** + * 更新预警 + * + * @param updateReqVO 更新预警 + */ + void updateWarn(@Valid WarnSaveReqVO updateReqVO); + +} diff --git a/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/service/warn/WarnServiceImpl.java b/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/service/warn/WarnServiceImpl.java new file mode 100644 index 0000000..8d4ad51 --- /dev/null +++ b/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/service/warn/WarnServiceImpl.java @@ -0,0 +1,81 @@ +package cn.iocoder.yudao.module.alert.service.warn; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.module.alert.controller.admin.instant.vo.InstantSaveReqVO; +import cn.iocoder.yudao.module.alert.controller.admin.warn.vo.WarnPageReqVO; +import cn.iocoder.yudao.module.alert.controller.admin.warn.vo.WarnSaveReqVO; +import cn.iocoder.yudao.module.alert.dal.dataobject.instant.InstantDO; +import cn.iocoder.yudao.module.alert.dal.dataobject.warn.WarnDO; +import cn.iocoder.yudao.module.alert.dal.dataobject.warn.WarnTableDO; +import cn.iocoder.yudao.module.alert.dal.mysql.warn.WarnMapper; +import cn.iocoder.yudao.module.alert.dal.mysql.warn.WarnTableMapper; +import cn.iocoder.yudao.module.system.dal.redis.RedisKeyConstants; +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.cache.annotation.CacheEvict; +import org.springframework.stereotype.Service; + +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; +import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.WARN_NOT_EXISTS; +import static cn.iocoder.yudao.module.system.enums.LogRecordConstants.*; + +@Service +@Slf4j +public class WarnServiceImpl implements WarnService { + @Resource + private WarnMapper warnMapper; + @Resource + private WarnTableMapper warnTableMapper; + + + @Override + public PageResult getWarnPage(WarnPageReqVO reqVO) { + return warnMapper.selectPage(reqVO); + } + + + @Override + public WarnDO getWarn(Long id) { + return warnMapper.selectById(id); + } + @Override + @CacheEvict(value = RedisKeyConstants.WARN, key = "#updateReqVO.id") + @LogRecord(type = SYSTEM_WARN_TYPE, subType = SYSTEM_WARN_UPDATE_SUB_TYPE, bizNo = "{{#updateReqVO.id}}", + success = SYSTEM_WARN_UPDATE_SUCCESS) + public void updateWarn(WarnSaveReqVO updateReqVO) { + //为简单--省去检验步骤,之后根据情况增加 + // 1.1 校验是否可以更新 + WarnDO warn = validateWarnForUpdate(updateReqVO.getId()); + // 1.2 校验角色的唯一字段是否重复 +// validateRoleDuplicate(updateReqVO.getName(), updateReqVO.getCode(), updateReqVO.getId()); + + // 2. 更新到数据库 + WarnTableDO updateObj = BeanUtils.toBean(updateReqVO, WarnTableDO.class); + warnTableMapper.updateById(updateObj); + + // 3. 记录操作日志上下文 + LogRecordContext.putVariable(DiffParseFunction.OLD_OBJECT, BeanUtils.toBean(warn, WarnSaveReqVO.class)); + LogRecordContext.putVariable("warn", warn); + } + + /** + * 校验预警是否可以被更新 + * + * @param id 编号 + */ + @VisibleForTesting + WarnDO validateWarnForUpdate(Long id) { + WarnDO warn = warnMapper.selectById(id); + if (warn == null) { + throw exception(WARN_NOT_EXISTS); + } + + return warn; + } + +} 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 e1e157f..8ba2a29 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 @@ -173,6 +173,8 @@ public interface ErrorCodeConstants { // ========== 模型实例模块 3-001========== ErrorCode INSTANT_NOT_EXISTS = new ErrorCode(3_001_000, "模型实例不存在"); + // ========== 预警模块 4-001========== + ErrorCode WARN_NOT_EXISTS = new ErrorCode(4_001_000, "预警不存在"); } diff --git a/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/enums/LogRecordConstants.java b/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/enums/LogRecordConstants.java index b537f4d..225050d 100644 --- a/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/enums/LogRecordConstants.java +++ b/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/enums/LogRecordConstants.java @@ -41,6 +41,14 @@ public interface LogRecordConstants { String SYSTEM_INSTANT_DELETE_SUB_TYPE = "删除模型实例"; String SYSTEM_INSTANT_DELETE_SUCCESS = "删除了模型实例【{{#instant.mpName}}】"; - + // =======================warn_online_cfg 预警 ======================= + + String SYSTEM_WARN_TYPE = "预警"; + String SYSTEM_WARN_CREATE_SUB_TYPE = "创建预警"; + String SYSTEM_WARN_CREATE_SUCCESS = "创建了预警【{{#warn.pointName}}】"; + String SYSTEM_WARN_UPDATE_SUB_TYPE = "更新预警"; + String SYSTEM_WARN_UPDATE_SUCCESS = "更新了模预警【{{#warn.pointName}}】: {_DIFF{#updateReqVO}}"; + String SYSTEM_WARN_DELETE_SUB_TYPE = "删除预警"; + String SYSTEM_WARN_DELETE_SUCCESS = "删除了预警【{{#warn.pointName}}】"; } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/redis/RedisKeyConstants.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/redis/RedisKeyConstants.java index b721aac..89b029c 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/redis/RedisKeyConstants.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/redis/RedisKeyConstants.java @@ -32,6 +32,13 @@ public interface RedisKeyConstants { */ String INSTANT = "instant"; + /** + * 预警的缓存 + *

+ * KEY 格式:warn:{id} + * VALUE 数据类型:String 模型实例信息 + */ + String WARN = "warn"; /** * 用户拥有的角色编号的缓存 *