55 changed files with 2381 additions and 42 deletions
@ -0,0 +1,40 @@ |
|||
package cn.iocoder.yudao.module.alert.controller.admin.calcgroup; |
|||
|
|||
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.dal.dataobject.calcgroup.CalcGroupDO; |
|||
import cn.iocoder.yudao.module.alert.service.calcgroup.CalcGroupService; |
|||
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("/alert/calcgroup") |
|||
@Validated |
|||
public class CalcGroupController { |
|||
|
|||
@Resource |
|||
private CalcGroupService calcGroupService; |
|||
|
|||
@GetMapping("/list") |
|||
@Operation(summary = "获取计算组列表", description = "用于前端的下拉选项") |
|||
public CommonResult<List<CalcGroupRespVO>> getCalcGroupList(CalcGroupPageReqVO ReqVO) { |
|||
ReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); |
|||
List<CalcGroupDO> list = calcGroupService.getCalcGroupPage(ReqVO).getList(); |
|||
list.sort(Comparator.comparing(CalcGroupDO::getId)); |
|||
return success(BeanUtils.toBean(list, CalcGroupRespVO.class)); |
|||
} |
|||
} |
|||
@ -0,0 +1,16 @@ |
|||
package cn.iocoder.yudao.module.alert.controller.admin.calcgroup.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 CalcGroupPageReqVO extends PageParam { |
|||
@Schema(description = "机组id", example = "1") |
|||
private String unitId; |
|||
|
|||
|
|||
} |
|||
@ -0,0 +1,22 @@ |
|||
package cn.iocoder.yudao.module.alert.controller.admin.calcgroup.vo; |
|||
|
|||
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; |
|||
import io.swagger.v3.oas.annotations.media.Schema; |
|||
import lombok.Data; |
|||
|
|||
@Schema(description = "运行中心 - 模型分页 Request VO") |
|||
@Data |
|||
@ExcelIgnoreUnannotated |
|||
public class CalcGroupRespVO { |
|||
@Schema(description = "版本id", example = "id") |
|||
private Long id; |
|||
|
|||
@Schema(description = "机组id", example = "id") |
|||
|
|||
private Long unitId; |
|||
|
|||
@Schema(description = "计算组名称", example = "yudao") |
|||
private String groupName; |
|||
|
|||
|
|||
} |
|||
@ -0,0 +1,106 @@ |
|||
package cn.iocoder.yudao.module.alert.controller.admin.instant; |
|||
|
|||
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.exa.vo.EXAHistoryReqVO; |
|||
import cn.iocoder.yudao.module.alert.controller.admin.instant.vo.*; |
|||
import cn.iocoder.yudao.module.alert.dal.dataobject.instant.InstantDO; |
|||
import cn.iocoder.yudao.module.alert.service.instant.InstantService; |
|||
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 java.io.IOException; |
|||
import java.util.List; |
|||
|
|||
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; |
|||
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList; |
|||
|
|||
|
|||
@Tag(name = "运行中心 - 模型实例") |
|||
@RestController |
|||
@RequestMapping("/alert/instant") |
|||
@Validated |
|||
public class InstantController { |
|||
|
|||
@Resource |
|||
private InstantService instantService; |
|||
|
|||
@GetMapping("/page") |
|||
@Operation(summary = "获得模型实例分页列表") |
|||
@PreAuthorize("@ss.hasPermission('run:instant:query')") |
|||
public CommonResult<PageResult<InstantRespVO>> getInstantPage(@Valid InstantPageReqVO pageReqVO) { |
|||
PageResult<InstantDO> pageResult = instantService.getInstantPage(pageReqVO); |
|||
return success(BeanUtils.toBean(pageResult, InstantRespVO.class)); |
|||
} |
|||
|
|||
|
|||
@GetMapping("/get") |
|||
@Operation(summary = "获得实例信息") |
|||
@PreAuthorize("@ss.hasPermission('run:instant:query')") |
|||
public CommonResult<InstantRespVO> getInstant(@RequestParam("id") Long id) { |
|||
InstantDO instant = instantService.getInstant(id); |
|||
return success(BeanUtils.toBean(instant, InstantRespVO.class)); |
|||
} |
|||
|
|||
|
|||
@GetMapping("/getPoint") |
|||
@Operation(summary = "获得某实例的测点列表") |
|||
@PreAuthorize("@ss.hasPermission('run:instant:query')") |
|||
public CommonResult<List<InstantPointRespVO>> getInstantPoint(@RequestParam("id") Long id) { |
|||
List<InstantPointRespVO> instantPointList= instantService.getInstantPoint(id); |
|||
return success(instantPointList); |
|||
} |
|||
|
|||
|
|||
@PostMapping("/getChart") |
|||
@Operation(summary = "获得某实例的曲线数据--默认-读历史") |
|||
@PreAuthorize("@ss.hasPermission('run:instant:query')") |
|||
public CommonResult<List<InstantChartRespVO>> getInstantChart( @Valid @RequestBody InstantChartReqVO instantChartReqVO) { |
|||
List<InstantChartRespVO> instantChartList= instantService.getInstantChart(instantChartReqVO); |
|||
return success(instantChartList); |
|||
} |
|||
|
|||
|
|||
// @GetMapping("/getChartCalc")
|
|||
// @Operation(summary = "获得某实例的曲线数据--复盘")
|
|||
// @PreAuthorize("@ss.hasPermission('run:instant:query')")
|
|||
// public CommonResult<List<InstantChartRespVO>> getInstantChartCalc(@RequestParam("id") Long id,@Valid EXAHistoryReqVO exaHistoryReqVo) {
|
|||
// List<InstantChartRespVO> result= instantService.getInstantChart(id,exaHistoryReqVo);
|
|||
// return success(result);
|
|||
// }
|
|||
|
|||
|
|||
@PutMapping("/update") |
|||
@Operation(summary = "修改模型实例") |
|||
@PreAuthorize("@ss.hasPermission('run:instant:update')") |
|||
public CommonResult<Boolean> updateInstant(@Valid @RequestBody InstantSaveReqVO updateReqVO) { |
|||
instantService.updateInstant(updateReqVO); |
|||
return success(true); |
|||
} |
|||
|
|||
@GetMapping("/count") |
|||
@Operation(summary = "获得各状态数量列表") |
|||
@PreAuthorize("@ss.hasPermission('run:instant:query')") |
|||
public CommonResult<InstantCountRespVO> getInstantPage() { |
|||
InstantCountRespVO instantCountRespVO= instantService.getInstantCount(); |
|||
return success(BeanUtils.toBean(instantCountRespVO, InstantCountRespVO.class)); |
|||
|
|||
} |
|||
|
|||
|
|||
@PostMapping("/create") |
|||
@Operation(summary = "创建模型实例") |
|||
@PreAuthorize("@ss.hasPermission('run:instant:create')") |
|||
public CommonResult<List<String>> createInstant(@RequestBody InstantSaveReqVO createReqVO) throws IOException { |
|||
return success(instantService.createInstant(createReqVO, null)); |
|||
} |
|||
|
|||
|
|||
|
|||
} |
|||
@ -0,0 +1,14 @@ |
|||
package cn.iocoder.yudao.module.alert.controller.admin.instant.vo; |
|||
|
|||
import cn.iocoder.yudao.module.alert.controller.admin.exa.vo.EXAHistoryReqVO; |
|||
import com.fasterxml.jackson.annotation.JsonProperty; |
|||
import io.swagger.v3.oas.annotations.media.Schema; |
|||
import lombok.Data; |
|||
|
|||
@Data |
|||
public class InstantChartReqVO extends EXAHistoryReqVO { |
|||
|
|||
@JsonProperty(value="id") |
|||
@Schema(description = "实例id", example = "id") |
|||
private Long id; |
|||
} |
|||
@ -0,0 +1,21 @@ |
|||
package cn.iocoder.yudao.module.alert.controller.admin.instant.vo; |
|||
|
|||
import lombok.Data; |
|||
import lombok.EqualsAndHashCode; |
|||
|
|||
import java.util.List; |
|||
|
|||
@Data |
|||
@EqualsAndHashCode(callSuper = false) |
|||
public class InstantChartRespVO { |
|||
|
|||
|
|||
|
|||
private String title; |
|||
|
|||
|
|||
private List<String> name; |
|||
|
|||
|
|||
private List<List<List<Double>>> seriesData; |
|||
} |
|||
@ -0,0 +1,20 @@ |
|||
package cn.iocoder.yudao.module.alert.controller.admin.instant.vo; |
|||
|
|||
import io.swagger.v3.oas.annotations.media.Schema; |
|||
|
|||
import lombok.Data; |
|||
import lombok.EqualsAndHashCode; |
|||
|
|||
@Schema(description = "运行中心 - 模型实例分页 Request VO") |
|||
@Data |
|||
@EqualsAndHashCode(callSuper = false) |
|||
public class InstantCountReqVO { |
|||
@Schema(description = "运行状态", example = "yudao") |
|||
private Long running; |
|||
|
|||
@Schema(description = "运行日志", example = "yudao") |
|||
private String runningLog; |
|||
|
|||
@Schema(description = "更新状态", example = "yudao") |
|||
private Long isUpdate; |
|||
} |
|||
@ -0,0 +1,25 @@ |
|||
package cn.iocoder.yudao.module.alert.controller.admin.instant.vo; |
|||
|
|||
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; |
|||
import io.swagger.v3.oas.annotations.media.Schema; |
|||
import lombok.Data; |
|||
|
|||
@Schema(description = "运行中心 - 模型实例分页 Request VO") |
|||
@Data |
|||
@ExcelIgnoreUnannotated |
|||
public class InstantCountRespVO { |
|||
@Schema(description = "正常运行数量", example = "id") |
|||
private Long normal; |
|||
|
|||
@Schema(description = "模式外运行数量", example = "yudao") |
|||
private Long outside; |
|||
|
|||
@Schema(description = "运行失败数量", example = "yudao") |
|||
private Long failure; |
|||
|
|||
@Schema(description = "版本更新数量", example = "yudao") |
|||
private Long update; |
|||
|
|||
@Schema(description = "模型停运数量", example = "yudao") |
|||
private Long stop; |
|||
} |
|||
@ -0,0 +1,21 @@ |
|||
package cn.iocoder.yudao.module.alert.controller.admin.instant.vo; |
|||
|
|||
import lombok.Data; |
|||
|
|||
import java.util.List; |
|||
|
|||
@Data |
|||
public class InstantInfoVO { |
|||
|
|||
|
|||
private List<String> inputInfo; |
|||
private List<String> inputName; |
|||
private List<String> unit; |
|||
//重构值
|
|||
private List<String> outPointInfo; |
|||
private List<String> timePointInfo; |
|||
private List<String> biasPointInfo; |
|||
private List<String> faultVariablePointInfo; |
|||
private String model_state; |
|||
private String model_status; |
|||
} |
|||
@ -0,0 +1,30 @@ |
|||
package cn.iocoder.yudao.module.alert.controller.admin.instant.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 InstantPageReqVO extends PageParam { |
|||
|
|||
@Schema(description = "机组id", example = "id") |
|||
private Integer unitId; |
|||
|
|||
@Schema(description = "系统id", example = "yudao") |
|||
private Integer modelId; |
|||
|
|||
@Schema(description = "模型名称", example = "yudao") |
|||
private String mpName; |
|||
|
|||
@Schema(description = "运行状态", example = "yudao") |
|||
private String running; |
|||
|
|||
@Schema(description = "运行日志", example = "yudao") |
|||
private String runningLog; |
|||
|
|||
@Schema(description = "更新状态", example = "yudao") |
|||
private String isUpdate; |
|||
} |
|||
@ -0,0 +1,45 @@ |
|||
package cn.iocoder.yudao.module.alert.controller.admin.instant.vo; |
|||
|
|||
import com.mzt.logapi.starter.annotation.DiffLogField; |
|||
import io.swagger.v3.oas.annotations.media.Schema; |
|||
import jakarta.validation.constraints.NotNull; |
|||
import lombok.Data; |
|||
|
|||
@Schema(description = "运行中心 - 模型实例所用测点 Req VO") |
|||
@Data |
|||
public class InstantPointRespVO { |
|||
@Schema(description = "实例编号,后端手动生成--直接用", example = "1") |
|||
private Long id; |
|||
|
|||
|
|||
@Schema(description = "输入点号", requiredMode = Schema.RequiredMode.REQUIRED,example = "1") |
|||
@NotNull(message = "输入点号不能为空") |
|||
@DiffLogField(name = "输入点号") |
|||
private String inputInfo; |
|||
|
|||
@Schema(description = "输入点号名称", requiredMode = Schema.RequiredMode.REQUIRED,example = "1") |
|||
@NotNull(message = "输入点号名称不能为空") |
|||
@DiffLogField(name = "输入点号名称") |
|||
private String inputName; |
|||
|
|||
@Schema(description = "单位名称", requiredMode = Schema.RequiredMode.REQUIRED,example = "1") |
|||
@NotNull(message = "单位名称不能为空") |
|||
@DiffLogField(name = "单位名称") |
|||
private String unit; |
|||
|
|||
|
|||
@Schema(description = "重构值点号", requiredMode = Schema.RequiredMode.REQUIRED,example = "1") |
|||
@NotNull(message = "重构值点号不能为空") |
|||
@DiffLogField(name = "重构值点号") |
|||
private String outPointInfo; |
|||
|
|||
@Schema(description = "偏差值点号", requiredMode = Schema.RequiredMode.REQUIRED,example = "1") |
|||
@NotNull(message = "偏差值点号不能为空") |
|||
@DiffLogField(name = "偏差值点号") |
|||
private String biasPointInfo; |
|||
|
|||
@Schema(description = "错误状态点号", requiredMode = Schema.RequiredMode.REQUIRED,example = "1") |
|||
@NotNull(message = "错误状态点号不能为空") |
|||
@DiffLogField(name = "错误状态点号") |
|||
private String faultVariablePointInfo; |
|||
} |
|||
@ -0,0 +1,135 @@ |
|||
package cn.iocoder.yudao.module.alert.controller.admin.instant.vo; |
|||
|
|||
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; |
|||
import com.baomidou.mybatisplus.annotation.FieldFill; |
|||
import com.baomidou.mybatisplus.annotation.TableField; |
|||
import io.swagger.v3.oas.annotations.media.Schema; |
|||
import lombok.Data; |
|||
import org.apache.ibatis.type.JdbcType; |
|||
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 InstantRespVO { |
|||
@Schema(description = "实例id", example = "id") |
|||
private Long id; |
|||
|
|||
@Schema(description = "模型id", example = "yudao") |
|||
private Long modelId; |
|||
|
|||
@Schema(description = "实例名称", example = "yudao") |
|||
private String mpName; |
|||
|
|||
@Schema(description = "实例信息", example = "yudao") |
|||
private String instantInfo; |
|||
|
|||
@Schema(description = "时间间隔", example = "1") |
|||
private Integer intervalTime; |
|||
|
|||
@Schema(description = "是否存历史", example = "1") |
|||
private Integer hisSto; |
|||
|
|||
@Schema(description = "是否可见", example = "1") |
|||
private Integer visible; |
|||
|
|||
@Schema(description = "状态", example = "1") |
|||
private Integer status; |
|||
|
|||
@Schema(description = "创建时间", example = "2022-07-01 00:00:00") |
|||
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) |
|||
private LocalDateTime setupTime; |
|||
|
|||
@Schema(description = "更新时间", example = "2022-07-01 00:00:00") |
|||
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) |
|||
private LocalDateTime newestUpdateTime; |
|||
|
|||
@Schema(description = "运行", example = "1024") |
|||
private Long running; |
|||
|
|||
@Schema(description = "运行日志", example = "1024") |
|||
private String runningLog; |
|||
|
|||
@Schema(description = "计算组", example = "1024") |
|||
private Long calcGroup; |
|||
|
|||
@Schema(description = "版本号", example = "1024") |
|||
private Long modelVersionId; |
|||
|
|||
private Integer isUpdate; |
|||
|
|||
//视图额外增加的字段
|
|||
private String conditionInfo; |
|||
private String groupName; |
|||
@Schema(description = "实例所属模型名称", example = "1024") |
|||
private String modelName; |
|||
|
|||
@Schema(description = "实例所属模型信息", example = "1024") |
|||
private String modelInfo; |
|||
|
|||
|
|||
@Schema(description = "算法id", example = "1024") |
|||
|
|||
private Integer algorithmId; |
|||
@Schema(description = "算法名称-缩写", example = "1024") |
|||
private String algorithmShortname; |
|||
@Schema(description = "算法名称", example = "1024") |
|||
private String algorithmName; |
|||
private String areaId; |
|||
private String plantShortname; |
|||
private String plantName; |
|||
private String areaShortname; |
|||
private String areaName; |
|||
private String unitShortname; |
|||
private String unitName; |
|||
private Integer plantId; |
|||
private String systemTypeShortname; |
|||
private String systemTypeName; |
|||
private Integer unitId; |
|||
private Integer systemTypeId; |
|||
|
|||
private String systemName; |
|||
private Integer systemId; |
|||
private String systemShortname; |
|||
|
|||
@Schema(description = "模式", example = "1024") |
|||
private String conditionName; |
|||
|
|||
/** |
|||
* 创建时间 |
|||
*/ |
|||
private LocalDateTime createTime; |
|||
/** |
|||
* 最后更新时间 |
|||
*/ |
|||
private LocalDateTime updateTime; |
|||
/** |
|||
* 创建者,目前使用 SysUser 的 id 编号 |
|||
* |
|||
* 使用 String 类型的原因是,未来可能会存在非数值的情况,留好拓展性。 |
|||
*/ |
|||
|
|||
private String creator; |
|||
/** |
|||
* 更新者,目前使用 SysUser 的 id 编号 |
|||
* |
|||
* 使用 String 类型的原因是,未来可能会存在非数值的情况,留好拓展性。 |
|||
*/ |
|||
|
|||
private String updater; |
|||
/** |
|||
* 创建者-名称 |
|||
* |
|||
* |
|||
*/ |
|||
|
|||
private String createName; |
|||
/** |
|||
* 更新者-名称 |
|||
* |
|||
* |
|||
*/ |
|||
|
|||
private String updateName; |
|||
} |
|||
@ -0,0 +1,74 @@ |
|||
package cn.iocoder.yudao.module.alert.controller.admin.instant.vo; |
|||
|
|||
import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; |
|||
import cn.iocoder.yudao.framework.common.validation.InEnum; |
|||
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.NotBlank; |
|||
import jakarta.validation.constraints.NotNull; |
|||
import jakarta.validation.constraints.Size; |
|||
import lombok.Data; |
|||
import org.apache.poi.ss.formula.functions.T; |
|||
|
|||
import java.util.List; |
|||
|
|||
@Schema(description = "运行中心 - 模型实例创建/更新 Request VO") |
|||
@Data |
|||
public class InstantSaveReqVO extends InstantInfoVO { |
|||
@Schema(description = "实例编号", example = "1") |
|||
@NotNull(message = "实例编号不能为空") |
|||
|
|||
private Long id; |
|||
|
|||
|
|||
@Schema(description = "模型编号", requiredMode = Schema.RequiredMode.REQUIRED,example = "1") |
|||
@DiffLogField(name = "模型编号") |
|||
private Long modelId; |
|||
|
|||
@Schema(description = "模型实例信息", requiredMode = Schema.RequiredMode.REQUIRED,example = "1") |
|||
@DiffLogField(name = "模型实例信息") |
|||
@JsonIgnore |
|||
private String instantInfo; |
|||
|
|||
@Schema(description = "输入点号信息-原始数据", requiredMode = Schema.RequiredMode.REQUIRED,example = "1") |
|||
@DiffLogField(name = "输入点号信息") |
|||
private List<pointInfo> pointInfo; |
|||
|
|||
@Schema(description = "实例名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") |
|||
@Size(max = 30, message = "实例名称长度不能超过 30 个字符") |
|||
@DiffLogField(name = "实例名称") |
|||
private String mpName; |
|||
|
|||
@Schema(description = "时间间隔", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") |
|||
@DiffLogField(name = "时间间隔") |
|||
private Long intervalTime; |
|||
|
|||
|
|||
@Schema(description = "是否可见", requiredMode = Schema.RequiredMode.REQUIRED,example = "1") |
|||
@DiffLogField(name = "是否可见") |
|||
private Long visible; |
|||
|
|||
@Schema(description = "状态可见", requiredMode = Schema.RequiredMode.REQUIRED,example = "1") |
|||
@DiffLogField(name = "状态") |
|||
private Long status; |
|||
|
|||
|
|||
@Schema(description = "是否存历史-是(存),否(不存)", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") |
|||
@DiffLogField(name = "是否存历史") |
|||
private Long hisSto; |
|||
|
|||
|
|||
|
|||
@Schema(description = "计算组编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") |
|||
@DiffLogField(name = "计算组") |
|||
private Long calcGroup; |
|||
|
|||
|
|||
@Schema(description = "版本编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") |
|||
@DiffLogField(name = "版本编号") |
|||
private Long modelVersionId; |
|||
|
|||
|
|||
|
|||
} |
|||
@ -0,0 +1,24 @@ |
|||
package cn.iocoder.yudao.module.alert.controller.admin.instant.vo; |
|||
|
|||
import com.fasterxml.jackson.annotation.JsonProperty; |
|||
import io.swagger.v3.oas.annotations.media.Schema; |
|||
import lombok.Data; |
|||
|
|||
@Data |
|||
public class pointInfo { |
|||
@JsonProperty(value="PointId") |
|||
@Schema(description = "点号", example = "id") |
|||
private String PointId; |
|||
|
|||
@JsonProperty(value="Description") |
|||
@Schema(description = "描述", example = "yudao") |
|||
private String Description; |
|||
|
|||
@JsonProperty(value="Unit") |
|||
@Schema(description = "单位", example = "yudao") |
|||
private String Unit; |
|||
|
|||
@JsonProperty(value="Type") |
|||
@Schema(description = "类型(输入-false;输出-true;ANN-空)", example = "yudao") |
|||
private Object Type; |
|||
} |
|||
@ -0,0 +1,55 @@ |
|||
package cn.iocoder.yudao.module.alert.controller.admin.model; |
|||
|
|||
import cn.iocoder.yudao.framework.common.pojo.CommonResult; |
|||
import cn.iocoder.yudao.framework.common.pojo.PageParam; |
|||
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.model.vo.ModelPageReqVO; |
|||
import cn.iocoder.yudao.module.alert.controller.admin.model.vo.ModelRespVO; |
|||
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.model.ModelDO; |
|||
import cn.iocoder.yudao.module.alert.dal.dataobject.model.ModelVersionDO; |
|||
import cn.iocoder.yudao.module.alert.service.model.RunModelService; |
|||
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.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("/alert/model") |
|||
@Validated |
|||
public class RunModelController { |
|||
@Resource |
|||
private RunModelService runModelService; |
|||
|
|||
@GetMapping("/page") |
|||
@Operation(summary = "获得模型分页列表") |
|||
@PreAuthorize("@ss.hasPermission('run:model:query')") |
|||
public CommonResult<PageResult<ModelRespVO>> getModelPage(@Valid ModelPageReqVO pageReqVO) { |
|||
PageResult<ModelDO> pageResult = runModelService.getModelPage(pageReqVO); |
|||
return success(BeanUtils.toBean(pageResult, ModelRespVO.class)); |
|||
} |
|||
|
|||
@GetMapping("/version/list") |
|||
@Operation(summary = "获取模型版本列表", description = "用于前端的下拉选项") |
|||
public CommonResult<List<ModelVersionRespVO>> getModelVersionList(ModelVersionPageReqVO versionReqVO) { |
|||
versionReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); |
|||
List<ModelVersionDO> list = runModelService.getModelVersionPage(versionReqVO).getList(); |
|||
list.sort(Comparator.comparing(ModelVersionDO::getVersion)); |
|||
return success(BeanUtils.toBean(list, ModelVersionRespVO.class)); |
|||
} |
|||
|
|||
|
|||
} |
|||
@ -0,0 +1,18 @@ |
|||
package cn.iocoder.yudao.module.alert.controller.admin.model.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 ModelPageReqVO extends PageParam { |
|||
|
|||
|
|||
@Schema(description = "模型名称", example = "yudao") |
|||
private String modelName; |
|||
|
|||
|
|||
} |
|||
@ -0,0 +1,47 @@ |
|||
package cn.iocoder.yudao.module.alert.controller.admin.model.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 ModelRespVO { |
|||
@Schema(description = "模型id", example = "id") |
|||
private String id; |
|||
|
|||
|
|||
@Schema(description = "模型名称", example = "yudao") |
|||
private String modelName; |
|||
/** |
|||
* 机组名称 |
|||
*/ |
|||
@Schema(description = "机组id", example = "1") |
|||
|
|||
private String unitId; |
|||
/** |
|||
* 机组名称 |
|||
*/ |
|||
@Schema(description = "机组名称", example = "yudao") |
|||
|
|||
private String unitName; |
|||
|
|||
/** |
|||
* 算法名称 |
|||
*/ |
|||
@Schema(description = "算法名称-简写", example = "yudao") |
|||
|
|||
private String algorithmName; |
|||
/** |
|||
* 模型信息 |
|||
*/ |
|||
@Schema(description = "模型信息-长字符串", example = "yudao") |
|||
|
|||
private String modelInfo; |
|||
} |
|||
@ -0,0 +1,16 @@ |
|||
package cn.iocoder.yudao.module.alert.controller.admin.model.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 ModelVersionPageReqVO extends PageParam { |
|||
@Schema(description = "模型id", example = "modelId") |
|||
private String modelId; |
|||
|
|||
|
|||
} |
|||
@ -0,0 +1,22 @@ |
|||
package cn.iocoder.yudao.module.alert.controller.admin.model.vo; |
|||
|
|||
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; |
|||
import io.swagger.v3.oas.annotations.media.Schema; |
|||
import lombok.Data; |
|||
|
|||
@Schema(description = "运行中心 - 模型分页 Request VO") |
|||
@Data |
|||
@ExcelIgnoreUnannotated |
|||
public class ModelVersionRespVO { |
|||
@Schema(description = "版本id", example = "id") |
|||
private Long id; |
|||
|
|||
@Schema(description = "所属模型id", example = "id") |
|||
|
|||
private Long modelId; |
|||
|
|||
@Schema(description = "模型版本名称", example = "yudao") |
|||
private String version; |
|||
|
|||
|
|||
} |
|||
@ -0,0 +1,134 @@ |
|||
package cn.iocoder.yudao.module.alert.controller.admin.model.vo; |
|||
|
|||
import com.fasterxml.jackson.annotation.JsonProperty; |
|||
import lombok.Data; |
|||
import lombok.NoArgsConstructor; |
|||
|
|||
import java.util.List; |
|||
|
|||
@Data |
|||
@NoArgsConstructor |
|||
public class RunModelInfoVO { |
|||
|
|||
public Para_ch_instant para; |
|||
|
|||
@JsonProperty(value="alarmmodelset") |
|||
public alarmmodelset alarmmodelset; |
|||
@Data |
|||
@NoArgsConstructor |
|||
public static class alarmmodelset |
|||
{ |
|||
@JsonProperty(value="alarmname") |
|||
public String alarmname; |
|||
@JsonProperty(value="alarmcondition") |
|||
public String alarmcondition; |
|||
|
|||
} |
|||
@Data |
|||
@NoArgsConstructor |
|||
public static class Para_ch_instant |
|||
{ |
|||
/// <summary>
|
|||
///
|
|||
/// </summary>
|
|||
@JsonProperty(value="Model_info") |
|||
|
|||
public Model_info_ch_instant Model_info; |
|||
|
|||
@JsonProperty(value="limit") |
|||
public double limit; |
|||
} |
|||
@Data |
|||
@NoArgsConstructor |
|||
public static class Model_info_ch_instant |
|||
{ |
|||
/// <summary>
|
|||
///
|
|||
/// </summary>
|
|||
@JsonProperty(value="QCUL_95") |
|||
|
|||
public Double QCUL_95; |
|||
/// <summary>
|
|||
///
|
|||
/// </summary>
|
|||
@JsonProperty(value="QCUL_99") |
|||
|
|||
public Double QCUL_99 ; |
|||
/// <summary>
|
|||
///
|
|||
/// </summary>
|
|||
@JsonProperty(value="QCUL_95_line") |
|||
|
|||
public List<Double> QCUL_95_line; |
|||
/// <summary>
|
|||
///
|
|||
/// </summary>
|
|||
@JsonProperty(value="QCUL_99_line") |
|||
public List<Double> QCUL_99_line ; |
|||
/// <summary>
|
|||
///
|
|||
/// </summary>
|
|||
@JsonProperty(value="T2CUL_95") |
|||
public Double T2CUL_95 ; |
|||
/// <summary>
|
|||
///
|
|||
/// </summary>
|
|||
@JsonProperty(value="T2CUL_99") |
|||
|
|||
public Double T2CUL_99; |
|||
/// <summary>
|
|||
///
|
|||
/// </summary>
|
|||
@JsonProperty(value="T2CUL_95_line") |
|||
|
|||
public List<Double> T2CUL_95_line; |
|||
/// <summary>
|
|||
///
|
|||
/// </summary>
|
|||
@JsonProperty(value="T2CUL_99_line") |
|||
|
|||
public List<Double> T2CUL_99_line; |
|||
/// <summary>
|
|||
///
|
|||
/// </summary>
|
|||
@JsonProperty(value="Kesi_95") |
|||
|
|||
public Double Kesi_95; |
|||
/// <summary>
|
|||
///
|
|||
/// </summary>
|
|||
@JsonProperty(value="Kesi_99") |
|||
|
|||
public Double Kesi_99 ; |
|||
/// <summary>
|
|||
///
|
|||
/// </summary>
|
|||
@JsonProperty(value="Kesi_95_line") |
|||
|
|||
public List<Double> Kesi_95_line ; |
|||
/// <summary>
|
|||
///
|
|||
/// </summary>
|
|||
@JsonProperty(value="Kesi_99_line") |
|||
|
|||
public List<Double> Kesi_99_line; |
|||
/// <summary>
|
|||
///
|
|||
/// </summary>
|
|||
@JsonProperty(value="COV") |
|||
|
|||
public List<List<Double>> COV ; |
|||
/// <summary>
|
|||
///
|
|||
/// </summary>
|
|||
@JsonProperty(value="K") |
|||
|
|||
public int K ; |
|||
/// <summary>
|
|||
///
|
|||
/// </summary>
|
|||
@JsonProperty(value="R") |
|||
|
|||
public Double R ; |
|||
} |
|||
} |
|||
@ -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; |
|||
|
|||
} |
|||
@ -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; |
|||
} |
|||
@ -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; |
|||
|
|||
|
|||
} |
|||
@ -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<PageResult<WarnRespVO>> getInstantPage(@Valid WarnPageReqVO pageReqVO) { |
|||
PageResult<WarnDO> pageResult = warnService.getWarnPage(pageReqVO); |
|||
return success(BeanUtils.toBean(pageResult, WarnRespVO.class)); |
|||
} |
|||
|
|||
@GetMapping("/get") |
|||
@Operation(summary = "获得预警信息") |
|||
@PreAuthorize("@ss.hasPermission('run:warn:query')") |
|||
public CommonResult<WarnRespVO> 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<Boolean> updateInstant(@Valid @RequestBody WarnSaveReqVO updateReqVO) { |
|||
warnService.updateWarn(updateReqVO); |
|||
return success(true); |
|||
} |
|||
} |
|||
@ -0,0 +1,24 @@ |
|||
package cn.iocoder.yudao.module.alert.dal.dataobject.calcgroup; |
|||
|
|||
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; |
|||
|
|||
@TableName(value = "group_view", autoResultMap = true) |
|||
@KeySequence("system_role_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
|
|||
@Data |
|||
@EqualsAndHashCode(callSuper = true) |
|||
public class CalcGroupDO extends BaseDO { |
|||
private String id; |
|||
|
|||
/** |
|||
* 计算组名称 |
|||
*/ |
|||
private String groupName; |
|||
/** |
|||
* 机组id |
|||
*/ |
|||
private String unitId; |
|||
} |
|||
@ -0,0 +1,83 @@ |
|||
package cn.iocoder.yudao.module.alert.dal.dataobject.instant; |
|||
|
|||
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; |
|||
import cn.iocoder.yudao.module.alert.controller.admin.instant.vo.InstantInfoVO; |
|||
import com.baomidou.mybatisplus.annotation.KeySequence; |
|||
import com.baomidou.mybatisplus.annotation.TableName; |
|||
import lombok.Data; |
|||
import lombok.EqualsAndHashCode; |
|||
|
|||
import java.time.LocalDateTime; |
|||
import java.util.List; |
|||
|
|||
@TableName(value = "instant_view", autoResultMap = true) |
|||
@KeySequence("system_role_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
|
|||
@Data |
|||
@EqualsAndHashCode(callSuper = true) |
|||
public class InstantDO extends BaseDO { |
|||
|
|||
private Long id; |
|||
|
|||
private Long modelId; |
|||
|
|||
private String mpName; |
|||
|
|||
|
|||
private String instantInfo; |
|||
|
|||
|
|||
private Long intervalTime; |
|||
|
|||
|
|||
private Long hisSto; |
|||
|
|||
|
|||
private Long visible; |
|||
|
|||
private Long status; |
|||
|
|||
|
|||
private LocalDateTime setupTime; |
|||
|
|||
|
|||
private LocalDateTime newestUpdateTime; |
|||
|
|||
|
|||
private Long running; |
|||
|
|||
private String runningLog; |
|||
|
|||
private Long calcGroup; |
|||
|
|||
private Long modelVersionId; |
|||
|
|||
private Long isUpdate; |
|||
|
|||
//所用模型的信息-json字符串
|
|||
private String modelInfo; |
|||
//视图额外增加的字段
|
|||
private String conditionInfo; |
|||
private String groupName; |
|||
private String modelName; |
|||
private String algorithmShortname; |
|||
private String algorithmName; |
|||
private String areaId; |
|||
private String plantShortname; |
|||
private String plantName; |
|||
private String areaShortname; |
|||
private String areaName; |
|||
private String unitShortname; |
|||
private String unitName; |
|||
private Long plantId; |
|||
private String systemTypeShortname; |
|||
private String systemTypeName; |
|||
private Long unitId; |
|||
private Long systemTypeId; |
|||
private String systemShortname; |
|||
private String systemName; |
|||
private Long algorithmId; |
|||
private Long systemId; |
|||
private String conditionName; |
|||
private String createName; |
|||
private String updateName; |
|||
} |
|||
@ -0,0 +1,58 @@ |
|||
package cn.iocoder.yudao.module.alert.dal.dataobject.instant; |
|||
|
|||
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 = "instant_cfg", autoResultMap = true) |
|||
@KeySequence("system_role_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
|
|||
@Data |
|||
@EqualsAndHashCode(callSuper = true) |
|||
public class InstantTableDO extends BaseDO { |
|||
private Long id; |
|||
|
|||
private Long modelId; |
|||
|
|||
private String mpName; |
|||
|
|||
|
|||
private String instantInfo; |
|||
|
|||
|
|||
private Long intervalTime; |
|||
|
|||
|
|||
private Long hisSto; |
|||
|
|||
|
|||
private Long visible; |
|||
|
|||
private Long status; |
|||
|
|||
|
|||
private LocalDateTime setupTime; |
|||
|
|||
|
|||
private LocalDateTime newestUpdateTime; |
|||
|
|||
|
|||
private Long running; |
|||
|
|||
private String runningLog; |
|||
|
|||
private Long calcGroup; |
|||
|
|||
private String modelVersionId; |
|||
|
|||
private Long isUpdate; |
|||
|
|||
//所用模型的信息-json字符串
|
|||
private String modelInfo; |
|||
|
|||
private String createName; |
|||
private String updateName; |
|||
} |
|||
@ -0,0 +1,50 @@ |
|||
package cn.iocoder.yudao.module.alert.dal.dataobject.model; |
|||
|
|||
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 = "model_view", autoResultMap = true) |
|||
@KeySequence("system_role_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
|
|||
@Data |
|||
@EqualsAndHashCode(callSuper = true) |
|||
public class ModelDO extends BaseDO { |
|||
private String id; |
|||
|
|||
/** |
|||
* 专业名称 |
|||
*/ |
|||
private String systemId; |
|||
|
|||
|
|||
private String algorithmId; |
|||
|
|||
/** |
|||
* 模型名称 |
|||
*/ |
|||
private String modelName; |
|||
/** |
|||
* 机组id |
|||
*/ |
|||
private String unitId; |
|||
/** |
|||
* 机组名称 |
|||
*/ |
|||
private String unitName; |
|||
|
|||
/** |
|||
* 算法名称 |
|||
*/ |
|||
private String algorithmName; |
|||
/** |
|||
* 模型信息 |
|||
*/ |
|||
private String modelInfo; |
|||
|
|||
|
|||
|
|||
} |
|||
@ -0,0 +1,21 @@ |
|||
package cn.iocoder.yudao.module.alert.dal.dataobject.model; |
|||
|
|||
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; |
|||
import com.baomidou.mybatisplus.annotation.KeySequence; |
|||
import com.baomidou.mybatisplus.annotation.TableName; |
|||
import io.swagger.v3.oas.annotations.media.Schema; |
|||
import lombok.Data; |
|||
import lombok.EqualsAndHashCode; |
|||
|
|||
@TableName(value = "model_version", autoResultMap = true) |
|||
@KeySequence("system_role_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
|
|||
@Data |
|||
@EqualsAndHashCode(callSuper = true) |
|||
public class ModelVersionDO extends BaseDO { |
|||
private String id; |
|||
|
|||
private String modelId; |
|||
|
|||
private String version; |
|||
|
|||
} |
|||
@ -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; |
|||
} |
|||
@ -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; |
|||
|
|||
|
|||
} |
|||
@ -0,0 +1,22 @@ |
|||
package cn.iocoder.yudao.module.alert.dal.mysql.calcgroup; |
|||
|
|||
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.calcgroup.vo.CalcGroupPageReqVO; |
|||
import cn.iocoder.yudao.module.alert.controller.admin.model.vo.ModelVersionPageReqVO; |
|||
import cn.iocoder.yudao.module.alert.dal.dataobject.calcgroup.CalcGroupDO; |
|||
import cn.iocoder.yudao.module.alert.dal.dataobject.model.ModelVersionDO; |
|||
import org.apache.ibatis.annotations.Mapper; |
|||
|
|||
@Mapper |
|||
public interface CalcGroupMapper extends BaseMapperX<CalcGroupDO> { |
|||
|
|||
default PageResult<CalcGroupDO> selectPage(CalcGroupPageReqVO reqVO) { |
|||
return selectPage(reqVO, new LambdaQueryWrapperX<CalcGroupDO>() |
|||
.eqIfPresent(CalcGroupDO::getUnitId, reqVO.getUnitId()) |
|||
|
|||
.orderByAsc(CalcGroupDO::getId)); |
|||
} |
|||
|
|||
} |
|||
@ -0,0 +1,33 @@ |
|||
package cn.iocoder.yudao.module.alert.dal.mysql.instant; |
|||
|
|||
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.dal.dataobject.instant.InstantDO; |
|||
import org.apache.ibatis.annotations.Mapper; |
|||
|
|||
@Mapper |
|||
public interface InstantMapper extends BaseMapperX<InstantDO> { |
|||
|
|||
|
|||
default PageResult<InstantDO> selectPage(InstantPageReqVO reqVO) { |
|||
return selectPage(reqVO, new LambdaQueryWrapperX<InstantDO>() |
|||
.likeIfPresent(InstantDO::getMpName, reqVO.getMpName()) |
|||
.eqIfPresent(InstantDO::getIsUpdate,reqVO.getIsUpdate()) |
|||
.eqIfPresent(InstantDO::getRunning,reqVO.getRunning()) |
|||
.eqIfPresent(InstantDO::getRunningLog,reqVO.getRunningLog()) |
|||
.orderByAsc(InstantDO::getId)); |
|||
} |
|||
|
|||
default Long selectCountByRunningLog(String runningLog){ |
|||
return selectCount(InstantDO::getRunningLog,runningLog); |
|||
} |
|||
default Long selectCountByRunning(Long running){ |
|||
return selectCount(InstantDO::getRunning,running); |
|||
} |
|||
default Long selectCountByIsUpdate(Long isUpdate){ |
|||
return selectCount(InstantDO::getIsUpdate,isUpdate); |
|||
} |
|||
|
|||
} |
|||
@ -0,0 +1,10 @@ |
|||
package cn.iocoder.yudao.module.alert.dal.mysql.instant; |
|||
|
|||
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; |
|||
import cn.iocoder.yudao.module.alert.dal.dataobject.instant.InstantDO; |
|||
import cn.iocoder.yudao.module.alert.dal.dataobject.instant.InstantTableDO; |
|||
import org.apache.ibatis.annotations.Mapper; |
|||
|
|||
@Mapper |
|||
public interface InstantTableMapper extends BaseMapperX<InstantTableDO> { |
|||
} |
|||
@ -0,0 +1,20 @@ |
|||
package cn.iocoder.yudao.module.alert.dal.mysql.model; |
|||
|
|||
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.model.vo.ModelPageReqVO; |
|||
import cn.iocoder.yudao.module.alert.dal.dataobject.model.ModelDO; |
|||
import org.apache.ibatis.annotations.Mapper; |
|||
|
|||
@Mapper |
|||
public interface ModelMapper extends BaseMapperX<ModelDO> { |
|||
|
|||
default PageResult<ModelDO> selectPage(ModelPageReqVO reqVO) { |
|||
return selectPage(reqVO, new LambdaQueryWrapperX<ModelDO>() |
|||
.likeIfPresent(ModelDO::getModelName, reqVO.getModelName()) |
|||
|
|||
.orderByAsc(ModelDO::getId)); |
|||
} |
|||
|
|||
} |
|||
@ -0,0 +1,23 @@ |
|||
package cn.iocoder.yudao.module.alert.dal.mysql.model; |
|||
|
|||
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.model.vo.ModelPageReqVO; |
|||
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.model.ModelDO; |
|||
import cn.iocoder.yudao.module.alert.dal.dataobject.model.ModelVersionDO; |
|||
import org.apache.ibatis.annotations.Mapper; |
|||
|
|||
@Mapper |
|||
public interface ModelVersionMapper extends BaseMapperX<ModelVersionDO> { |
|||
|
|||
default PageResult<ModelVersionDO> selectPage(ModelVersionPageReqVO reqVO) { |
|||
return selectPage(reqVO, new LambdaQueryWrapperX<ModelVersionDO>() |
|||
.eqIfPresent(ModelVersionDO::getModelId, reqVO.getModelId()) |
|||
|
|||
.orderByAsc(ModelVersionDO::getId)); |
|||
} |
|||
|
|||
} |
|||
@ -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<WarnDO> { |
|||
default PageResult<WarnDO> selectPage(WarnPageReqVO reqVO) { |
|||
return selectPage(reqVO, new LambdaQueryWrapperX<WarnDO>() |
|||
.likeIfPresent(WarnDO::getMpId, reqVO.getMpId().toString()) |
|||
.orderByAsc(WarnDO::getId)); |
|||
} |
|||
|
|||
} |
|||
@ -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<WarnTableDO> { |
|||
} |
|||
@ -0,0 +1,21 @@ |
|||
package cn.iocoder.yudao.module.alert.service.calcgroup; |
|||
|
|||
import cn.iocoder.yudao.framework.common.pojo.PageResult; |
|||
import cn.iocoder.yudao.module.alert.controller.admin.calcgroup.vo.CalcGroupPageReqVO; |
|||
import cn.iocoder.yudao.module.alert.controller.admin.model.vo.ModelPageReqVO; |
|||
import cn.iocoder.yudao.module.alert.controller.admin.model.vo.ModelVersionPageReqVO; |
|||
import cn.iocoder.yudao.module.alert.dal.dataobject.calcgroup.CalcGroupDO; |
|||
import cn.iocoder.yudao.module.alert.dal.dataobject.model.ModelDO; |
|||
import cn.iocoder.yudao.module.alert.dal.dataobject.model.ModelVersionDO; |
|||
|
|||
public interface CalcGroupService { |
|||
|
|||
/** |
|||
* 获得计算组不分页-主要用于下拉框 |
|||
* |
|||
* @param ReqVO 计算组查询 |
|||
* @return 计算组查询结果 |
|||
*/ |
|||
PageResult<CalcGroupDO> getCalcGroupPage(CalcGroupPageReqVO ReqVO); |
|||
} |
|||
|
|||
@ -0,0 +1,31 @@ |
|||
package cn.iocoder.yudao.module.alert.service.calcgroup; |
|||
|
|||
import cn.iocoder.yudao.framework.common.pojo.PageResult; |
|||
import cn.iocoder.yudao.module.alert.controller.admin.calcgroup.vo.CalcGroupPageReqVO; |
|||
import cn.iocoder.yudao.module.alert.controller.admin.model.vo.ModelPageReqVO; |
|||
import cn.iocoder.yudao.module.alert.controller.admin.model.vo.ModelVersionPageReqVO; |
|||
import cn.iocoder.yudao.module.alert.dal.dataobject.calcgroup.CalcGroupDO; |
|||
import cn.iocoder.yudao.module.alert.dal.dataobject.model.ModelDO; |
|||
import cn.iocoder.yudao.module.alert.dal.dataobject.model.ModelVersionDO; |
|||
import cn.iocoder.yudao.module.alert.dal.mysql.calcgroup.CalcGroupMapper; |
|||
import cn.iocoder.yudao.module.alert.dal.mysql.model.ModelMapper; |
|||
import cn.iocoder.yudao.module.alert.dal.mysql.model.ModelVersionMapper; |
|||
import jakarta.annotation.Resource; |
|||
import lombok.extern.slf4j.Slf4j; |
|||
import org.springframework.stereotype.Service; |
|||
|
|||
@Service |
|||
@Slf4j |
|||
public class CalcGroupServiceImpl implements CalcGroupService { |
|||
@Resource |
|||
private CalcGroupMapper calcGroupMapper; |
|||
|
|||
@Override |
|||
public PageResult<CalcGroupDO> getCalcGroupPage (CalcGroupPageReqVO reqVO) { |
|||
return calcGroupMapper.selectPage(reqVO); |
|||
} |
|||
|
|||
|
|||
|
|||
|
|||
} |
|||
@ -0,0 +1,57 @@ |
|||
package cn.iocoder.yudao.module.alert.service.instant; |
|||
|
|||
import cn.iocoder.yudao.framework.common.pojo.PageResult; |
|||
import cn.iocoder.yudao.module.alert.controller.admin.exa.vo.EXAHistoryReqVO; |
|||
import cn.iocoder.yudao.module.alert.controller.admin.instant.vo.*; |
|||
import cn.iocoder.yudao.module.alert.dal.dataobject.instant.InstantDO; |
|||
import jakarta.validation.Valid; |
|||
|
|||
import java.io.IOException; |
|||
import java.util.List; |
|||
|
|||
public interface InstantService { |
|||
/** |
|||
* 获得模型实例分页 |
|||
* |
|||
* @param reqVO 模型实例分页查询 |
|||
* @return 模型实例分页结果 |
|||
*/ |
|||
PageResult<InstantDO> getInstantPage(InstantPageReqVO reqVO); |
|||
/** |
|||
* 获得模型实例所用测点信息 |
|||
* |
|||
* @param id 模型实例的id |
|||
* @return 模型实例测点列表结果list |
|||
*/ |
|||
List<InstantPointRespVO> getInstantPoint(Long id); |
|||
|
|||
List<InstantChartRespVO> getInstantChart(InstantChartReqVO instantChartReqVO); |
|||
|
|||
|
|||
InstantDO getInstant(Long id); |
|||
|
|||
/** |
|||
* 更新模型实例 |
|||
* |
|||
* @param updateReqVO 更新模型实例 |
|||
*/ |
|||
void updateInstant(@Valid InstantSaveReqVO updateReqVO); |
|||
|
|||
/** |
|||
* 获取各状态的模型实例数量 |
|||
* |
|||
* @param |
|||
*/ |
|||
InstantCountRespVO getInstantCount(); |
|||
|
|||
|
|||
/** |
|||
* 创建实例 |
|||
* |
|||
* @param createReqVO 创建实例信息 |
|||
* @param type 实例类型--目前用不到 |
|||
* @return 实例编号 |
|||
*/ |
|||
List<String> createInstant(@Valid InstantSaveReqVO createReqVO, Integer type) throws IOException; |
|||
|
|||
} |
|||
@ -0,0 +1,372 @@ |
|||
package cn.iocoder.yudao.module.alert.service.instant; |
|||
|
|||
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.instant.InstantDO; |
|||
import cn.iocoder.yudao.module.alert.dal.dataobject.instant.InstantTableDO; |
|||
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 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 cn.iocoder.yudao.module.system.dal.redis.RedisKeyConstants; |
|||
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.*; |
|||
import static cn.iocoder.yudao.module.system.enums.LogRecordConstants.*; |
|||
|
|||
@Service |
|||
@Slf4j |
|||
public class InstantServiceImpl implements InstantService { |
|||
@Resource |
|||
private InstantMapper instantMapper; |
|||
@Resource |
|||
private InstantTableMapper instantTableMapper; |
|||
EXAUtils exaUtils = new EXAUtils(); |
|||
@Value("${point.head}") |
|||
private String HEAD; |
|||
@Value("${EXA.ip}") |
|||
private String EXA_IP; |
|||
|
|||
@Override |
|||
@Transactional(rollbackFor = Exception.class) |
|||
@LogRecord(type = SYSTEM_INSTANT_TYPE, subType = SYSTEM_INSTANT_CREATE_SUB_TYPE, bizNo = "{{#role.id}}", |
|||
success = SYSTEM_INSTANT_CREATE_SUCCESS) |
|||
public List<String> createInstant(InstantSaveReqVO createReqVO, Integer type) throws IOException { |
|||
// 1. 校验角色
|
|||
// validateRoleDuplicate(createReqVO.getName(), createReqVO.getCode(), null);
|
|||
|
|||
//插入除instantInfo外的所有数据,获取到id
|
|||
// 2. 插入到数据库-status、visible默认值
|
|||
InstantTableDO instant = BeanUtils.toBean(createReqVO, InstantTableDO.class) |
|||
.setStatus(ObjUtil.defaultIfNull(createReqVO.getStatus(), 1L)) |
|||
.setVisible(ObjUtil.defaultIfNull(createReqVO.getVisible(), 1L)); |
|||
|
|||
instantTableMapper.insert(instant); |
|||
|
|||
// 3. 记录操作日志上下文
|
|||
LogRecordContext.putVariable("instant", instant); |
|||
|
|||
Long insertId = instant.getId(); |
|||
|
|||
//处理数据
|
|||
// inputInfo 各种转换
|
|||
List<pointInfo> pointInfoList = createReqVO.getPointInfo(); |
|||
System.out.println(pointInfoList); |
|||
|
|||
List<String> inputInfoList = new ArrayList<>(); |
|||
List<String> inputNameList = new ArrayList<>(); |
|||
List<String> unitList = new ArrayList<>(); |
|||
List<String> outPointInfoList = new ArrayList<>(); |
|||
List<String> timePointInfoList = new ArrayList<>(); |
|||
List<String> biasPointInfoList = new ArrayList<>(); |
|||
List<String> faultVariablePointList = new ArrayList<>(); |
|||
|
|||
List<Point> InstantPointList = new ArrayList<>(); |
|||
Point point = new Point(); |
|||
String outpoint = ""; |
|||
for (Integer i = 0; i < pointInfoList.size(); i++) { |
|||
inputInfoList.add(pointInfoList.get(i).getPointId()); |
|||
inputNameList.add(pointInfoList.get(i).getDescription()); |
|||
unitList.add(pointInfoList.get(i).getUnit()); |
|||
if (Objects.isNull(pointInfoList.get(i).getType()) || pointInfoList.get(i).getType().equals("1")) { |
|||
//构建重构值对象
|
|||
outpoint = HEAD + "M" + String.format("%04d", insertId) + String.format("%04d", i + 1) + "R"; |
|||
point = new Point(); |
|||
point.setGroupName("warn"); |
|||
outPointInfoList.add(outpoint); |
|||
point.setItemName(outpoint); |
|||
point.setDescriptor(pointInfoList.get(i).getDescription() + "_重构值"); |
|||
point.setEngUnits(pointInfoList.get(i).getUnit()); |
|||
point.setItemType(5); |
|||
InstantPointList.add(point); |
|||
|
|||
//构建时间值对象
|
|||
outpoint = HEAD + "M" + String.format("%04d", insertId) + String.format("%04d", i + 1) + "T"; |
|||
point = new Point(); |
|||
point.setGroupName("warn"); |
|||
timePointInfoList.add(outpoint); |
|||
point.setItemName(outpoint); |
|||
point.setDescriptor(pointInfoList.get(i).getDescription() + "_时间值"); |
|||
point.setEngUnits(pointInfoList.get(i).getUnit()); |
|||
point.setItemType(5); |
|||
InstantPointList.add(point); |
|||
|
|||
//构建偏差值对象
|
|||
outpoint = HEAD + "M" + String.format("%04d", insertId) + String.format("%04d", i + 1) + "B"; |
|||
point = new Point(); |
|||
point.setGroupName("warn"); |
|||
biasPointInfoList.add(outpoint); |
|||
point.setItemName(outpoint); |
|||
point.setDescriptor(pointInfoList.get(i).getDescription() + "_偏差值"); |
|||
point.setEngUnits(pointInfoList.get(i).getUnit()); |
|||
point.setItemType(5); |
|||
InstantPointList.add(point); |
|||
|
|||
//构建状态值对象
|
|||
outpoint = HEAD + "M" + String.format("%04d", insertId) + String.format("%04d", i + 1) + "F"; |
|||
point = new Point(); |
|||
point.setGroupName("warn"); |
|||
faultVariablePointList.add(outpoint); |
|||
point.setItemName(outpoint); |
|||
point.setDescriptor(pointInfoList.get(i).getDescription() + "_状态值"); |
|||
point.setEngUnits(pointInfoList.get(i).getUnit()); |
|||
point.setItemType(5); |
|||
InstantPointList.add(point); |
|||
} else { |
|||
outpoint = ""; |
|||
outPointInfoList.add(outpoint); |
|||
timePointInfoList.add(outpoint); |
|||
biasPointInfoList.add(outpoint); |
|||
faultVariablePointList.add(outpoint); |
|||
} |
|||
} |
|||
|
|||
|
|||
createReqVO.setId(insertId); |
|||
createReqVO.setStatus(instant.getStatus()); |
|||
createReqVO.setVisible(instant.getVisible()); |
|||
createReqVO.setInputInfo(inputInfoList); |
|||
createReqVO.setInputName(inputNameList); |
|||
createReqVO.setUnit(unitList); |
|||
createReqVO.setOutPointInfo(outPointInfoList); |
|||
createReqVO.setTimePointInfo(timePointInfoList); |
|||
createReqVO.setBiasPointInfo(biasPointInfoList); |
|||
createReqVO.setFaultVariablePointInfo(faultVariablePointList); |
|||
|
|||
|
|||
//构建模型实例ste值-没有unit参数
|
|||
outpoint = HEAD + "M" + String.format("%04d", insertId) + "_ste"; |
|||
//赋值-createReqVO
|
|||
createReqVO.setModel_state(outpoint); |
|||
point = new Point(); |
|||
point.setGroupName("warn"); |
|||
point.setItemName(outpoint); |
|||
point.setDescriptor(instant.getMpName() + "_残差值"); |
|||
point.setItemType(5); |
|||
InstantPointList.add(point); |
|||
|
|||
//构建模型实例状态值-没有unit参数
|
|||
outpoint = HEAD + "M" + String.format("%04d", insertId) + "_status"; |
|||
//赋值-createReqVO
|
|||
createReqVO.setModel_status(outpoint); |
|||
point = new Point(); |
|||
point.setGroupName("warn"); |
|||
point.setItemName(outpoint); |
|||
point.setDescriptor(instant.getMpName() + "_状态值"); |
|||
point.setItemType(5); |
|||
InstantPointList.add(point); |
|||
|
|||
|
|||
//更新instantInfo字段
|
|||
InstantSaveReqVO updateReqVO = new InstantSaveReqVO(); |
|||
updateReqVO.setId(instant.getId()); |
|||
updateReqVO.setInstantInfo(JsonUtils.toJsonString(createReqVO)); |
|||
|
|||
updateInstant(updateReqVO); |
|||
List<String> resultList = new ArrayList<String>(); |
|||
|
|||
resultList.add(instant.getId().toString()); |
|||
|
|||
|
|||
for (Point item : InstantPointList) { |
|||
// 每次循环输出list中的元素
|
|||
System.out.println(item.toString()); |
|||
//循环加点
|
|||
String ss = exaUtils.setPoint(EXA_IP, item); |
|||
resultList.add(ss); |
|||
} |
|||
return resultList; |
|||
} |
|||
|
|||
|
|||
@Override |
|||
public List<InstantPointRespVO> getInstantPoint(Long id) { |
|||
List<InstantPointRespVO> instantPointList = new ArrayList<>(); |
|||
InstantDO instant = instantMapper.selectById(id); |
|||
InstantInfoVO instantInfo = JsonUtils.parseObject(instant.getInstantInfo(), InstantInfoVO.class); |
|||
for (int i = 0; i < instantInfo.getInputInfo().size(); i++) { |
|||
InstantPointRespVO instantPointRespVO = new InstantPointRespVO(); |
|||
instantPointRespVO.setId(Long.valueOf(i + 1)); |
|||
instantPointRespVO.setInputInfo(instantInfo.getInputInfo().get(i)); |
|||
instantPointRespVO.setInputName(instantInfo.getInputName().get(i)); |
|||
instantPointRespVO.setUnit(instantInfo.getUnit().get(i)); |
|||
instantPointRespVO.setOutPointInfo(instantInfo.getOutPointInfo().get(i)); |
|||
instantPointRespVO.setBiasPointInfo(instantInfo.getBiasPointInfo().get(i)); |
|||
instantPointRespVO.setFaultVariablePointInfo(instantInfo.getFaultVariablePointInfo().get(i)); |
|||
instantPointList.add(instantPointRespVO); |
|||
} |
|||
|
|||
return instantPointList; |
|||
|
|||
|
|||
} |
|||
|
|||
|
|||
@Override |
|||
public List<InstantChartRespVO> getInstantChart(InstantChartReqVO instantChartReqVO) { |
|||
|
|||
List<InstantChartRespVO> result = new ArrayList<>(); |
|||
InstantDO instant = getInstant(instantChartReqVO.getId()); |
|||
|
|||
//构造第一个图表数据
|
|||
//获取数据库modelInfo字段,从而获取Kesi_99值
|
|||
RunModelInfoVO runModelInfoVO = JsonUtils.parseObject(instant.getModelInfo(), RunModelInfoVO.class); |
|||
Double Kesi_99 = runModelInfoVO.getPara().getModel_info().getKesi_99(); |
|||
|
|||
//获取数据库instantInfo字段
|
|||
InstantInfoVO instantInfoVO = JsonUtils.parseObject(instant.getInstantInfo(), InstantInfoVO.class); |
|||
instantChartReqVO.setItemName(instantInfoVO.getModel_state()); |
|||
List<List<List<Double>>> modelStateHistory = exaUtils.getHistorys(EXA_IP, instantChartReqVO); |
|||
|
|||
//构造Kesi_99常量值
|
|||
List<List<Double>> Kesi_99List = new ArrayList<>(); |
|||
|
|||
InstantChartRespVO instantChartRespVO = new InstantChartRespVO(); |
|||
for (int i = 0; i < modelStateHistory.get(0).size(); i++) { |
|||
List<Double> ke = new ArrayList<>(); |
|||
ke.add(modelStateHistory.get(0).get(i).get(0)); |
|||
ke.add(Kesi_99); |
|||
Kesi_99List.add(ke); |
|||
} |
|||
modelStateHistory.add(Kesi_99List); |
|||
instantChartRespVO.setSeriesData(modelStateHistory); |
|||
List<String> legendList = Arrays.asList("SPE", "残差阈值"); |
|||
instantChartRespVO.setName(legendList); |
|||
instantChartRespVO.setTitle("模型残差"); |
|||
result.add(instantChartRespVO); |
|||
|
|||
//构造后面的图表数据
|
|||
for (int i = 0; i < instantInfoVO.getInputInfo().size(); i++) { |
|||
instantChartRespVO = new InstantChartRespVO(); |
|||
List<String> pointList = new ArrayList<>(); |
|||
legendList = Arrays.asList("测量值", "重构值", "偏差值"); |
|||
pointList.add(instantInfoVO.getInputInfo().get(i)); |
|||
pointList.add(instantInfoVO.getOutPointInfo().get(i)); |
|||
pointList.add(instantInfoVO.getBiasPointInfo().get(i)); |
|||
|
|||
//读历史
|
|||
instantChartReqVO.setItemName(String.join(",", pointList)); |
|||
// exaHistoryReqVo.setItemName(",10HAG10CL101_3S,10HAG04CT609");
|
|||
List<List<List<Double>>> ss = exaUtils.getHistorys(EXA_IP, instantChartReqVO); |
|||
instantChartRespVO.setSeriesData(ss); |
|||
instantChartRespVO.setName(legendList); |
|||
instantChartRespVO.setTitle(instantInfoVO.getInputName().get(i)); |
|||
|
|||
result.add(instantChartRespVO); |
|||
} |
|||
return result; |
|||
} |
|||
|
|||
@Override |
|||
public PageResult<InstantDO> getInstantPage(InstantPageReqVO reqVO) { |
|||
return instantMapper.selectPage(reqVO); |
|||
} |
|||
|
|||
|
|||
@Override |
|||
public InstantDO getInstant(Long id) { |
|||
return instantMapper.selectById(id); |
|||
} |
|||
|
|||
@Override |
|||
@CacheEvict(value = RedisKeyConstants.INSTANT, key = "#updateReqVO.id") |
|||
@LogRecord(type = SYSTEM_INSTANT_TYPE, subType = SYSTEM_INSTANT_UPDATE_SUB_TYPE, bizNo = "{{#updateReqVO.id}}", |
|||
success = SYSTEM_INSTANT_UPDATE_SUCCESS) |
|||
public void updateInstant(InstantSaveReqVO updateReqVO) { |
|||
//为简单--省去检验步骤,之后根据情况增加
|
|||
// 1.1 校验是否可以更新
|
|||
InstantDO instant = validateRoleForUpdate(updateReqVO.getId()); |
|||
// 1.2 校验角色的唯一字段是否重复
|
|||
// validateRoleDuplicate(updateReqVO.getName(), updateReqVO.getCode(), updateReqVO.getId());
|
|||
|
|||
// 2. 更新到数据库
|
|||
InstantTableDO updateObj = BeanUtils.toBean(updateReqVO, InstantTableDO.class); |
|||
instantTableMapper.updateById(updateObj); |
|||
|
|||
// 3. 记录操作日志上下文
|
|||
LogRecordContext.putVariable(DiffParseFunction.OLD_OBJECT, BeanUtils.toBean(instant, InstantSaveReqVO.class)); |
|||
LogRecordContext.putVariable("instant", instant); |
|||
} |
|||
|
|||
/** |
|||
* 校验模型实例是否可以被更新 |
|||
* |
|||
* @param id 角色编号 |
|||
*/ |
|||
@VisibleForTesting |
|||
InstantDO validateRoleForUpdate(Long id) { |
|||
InstantDO instant = instantMapper.selectById(id); |
|||
if (instant == null) { |
|||
throw exception(INSTANT_NOT_EXISTS); |
|||
} |
|||
|
|||
return instant; |
|||
} |
|||
|
|||
@Override |
|||
public InstantCountRespVO getInstantCount() { |
|||
InstantCountRespVO instantCountRespVO = new InstantCountRespVO(); |
|||
instantCountRespVO.setOutside(instantMapper.selectCountByRunningLog("模式外运行")); |
|||
instantCountRespVO.setStop(instantMapper.selectCountByRunningLog("模型已停运")); |
|||
instantCountRespVO.setNormal(instantMapper.selectCountByRunningLog("运行正常")); |
|||
instantCountRespVO.setFailure(instantMapper.selectCountByRunning(0L)); |
|||
instantCountRespVO.setUpdate(instantMapper.selectCountByIsUpdate(1L)); |
|||
|
|||
|
|||
return instantCountRespVO; |
|||
} |
|||
|
|||
|
|||
// /**
|
|||
// * 校验角色的唯一字段是否重复
|
|||
// *
|
|||
// * 1. 是否存在相同名字的角色
|
|||
// * 2. 是否存在相同编码的角色
|
|||
// *
|
|||
// * @param name 角色名字
|
|||
// * @param code 角色额编码
|
|||
// * @param id 角色编号
|
|||
// */
|
|||
// @VisibleForTesting
|
|||
// void validateRoleDuplicate(String name, String code, Long id) {
|
|||
// // 0. 超级管理员,不允许创建
|
|||
// if (RoleCodeEnum.isSuperAdmin(code)) {
|
|||
// throw exception(ROLE_ADMIN_CODE_ERROR, code);
|
|||
// }
|
|||
// // 1. 该 name 名字被其它角色所使用
|
|||
// RoleDO role = roleMapper.selectByName(name);
|
|||
// if (role != null && !role.getId().equals(id)) {
|
|||
// throw exception(ROLE_NAME_DUPLICATE, name);
|
|||
// }
|
|||
// // 2. 是否存在相同编码的角色
|
|||
// if (!StringUtils.hasText(code)) {
|
|||
// return;
|
|||
// }
|
|||
// // 该 code 编码被其它角色所使用
|
|||
// role = roleMapper.selectByCode(code);
|
|||
// if (role != null && !role.getId().equals(id)) {
|
|||
// throw exception(ROLE_CODE_DUPLICATE, code);
|
|||
// }
|
|||
// }
|
|||
|
|||
} |
|||
@ -0,0 +1,27 @@ |
|||
package cn.iocoder.yudao.module.alert.service.model; |
|||
|
|||
import cn.iocoder.yudao.framework.common.pojo.PageResult; |
|||
import cn.iocoder.yudao.module.alert.controller.admin.model.vo.ModelPageReqVO; |
|||
import cn.iocoder.yudao.module.alert.controller.admin.model.vo.ModelVersionPageReqVO; |
|||
import cn.iocoder.yudao.module.alert.dal.dataobject.model.ModelDO; |
|||
import cn.iocoder.yudao.module.alert.dal.dataobject.model.ModelVersionDO; |
|||
|
|||
public interface RunModelService { |
|||
/** |
|||
* 获得模型分页 |
|||
* |
|||
* @param reqVO 模型分页查询 |
|||
* @return 模型分页结果 |
|||
*/ |
|||
PageResult<ModelDO> getModelPage(ModelPageReqVO reqVO); |
|||
|
|||
|
|||
/** |
|||
* 获得模型版本不分页-主要用于下拉框 |
|||
* |
|||
* @param versionReqVO 模型版本查询 |
|||
* @return 模型版本结果 |
|||
*/ |
|||
PageResult<ModelVersionDO> getModelVersionPage(ModelVersionPageReqVO versionReqVO); |
|||
} |
|||
|
|||
@ -0,0 +1,34 @@ |
|||
package cn.iocoder.yudao.module.alert.service.model; |
|||
|
|||
import cn.iocoder.yudao.framework.common.pojo.PageResult; |
|||
import cn.iocoder.yudao.module.alert.controller.admin.model.vo.ModelPageReqVO; |
|||
import cn.iocoder.yudao.module.alert.controller.admin.model.vo.ModelVersionPageReqVO; |
|||
import cn.iocoder.yudao.module.alert.dal.dataobject.model.ModelDO; |
|||
import cn.iocoder.yudao.module.alert.dal.dataobject.model.ModelVersionDO; |
|||
import cn.iocoder.yudao.module.alert.dal.mysql.model.ModelMapper; |
|||
import cn.iocoder.yudao.module.alert.dal.mysql.model.ModelVersionMapper; |
|||
import jakarta.annotation.Resource; |
|||
import lombok.extern.slf4j.Slf4j; |
|||
import org.springframework.stereotype.Service; |
|||
|
|||
@Service |
|||
@Slf4j |
|||
public class RunModelServiceImpl implements RunModelService { |
|||
@Resource |
|||
private ModelMapper modelMapper; |
|||
@Resource |
|||
private ModelVersionMapper modelVersionMapper; |
|||
@Override |
|||
public PageResult<ModelDO> getModelPage(ModelPageReqVO reqVO) { |
|||
return modelMapper.selectPage(reqVO); |
|||
} |
|||
|
|||
@Override |
|||
public PageResult<ModelVersionDO> getModelVersionPage (ModelVersionPageReqVO reqVO) { |
|||
return modelVersionMapper.selectPage(reqVO); |
|||
} |
|||
|
|||
|
|||
|
|||
|
|||
} |
|||
@ -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<WarnDO> getWarnPage(WarnPageReqVO reqVO); |
|||
|
|||
|
|||
WarnDO getWarn(Long id); |
|||
|
|||
/** |
|||
* 更新预警 |
|||
* |
|||
* @param updateReqVO 更新预警 |
|||
*/ |
|||
void updateWarn(@Valid WarnSaveReqVO updateReqVO); |
|||
|
|||
} |
|||
@ -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<WarnDO> 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; |
|||
} |
|||
|
|||
} |
|||
Loading…
Reference in new issue