add(dms): 生成报警信息和报警详情页面

- 添加报警信息和报警详情的 API 接口
- 实现报警信息和报警详情的列表、新增、修改、删除等功能
master
zch 7 days ago
parent ba3c9605e5
commit 0fd8197d49

@ -0,0 +1,117 @@
package org.dromara.dms.controller;
import java.util.List;
import lombok.RequiredArgsConstructor;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.*;
import cn.dev33.satoken.annotation.SaCheckPermission;
import org.springframework.web.bind.annotation.*;
import org.springframework.validation.annotation.Validated;
import org.dromara.common.idempotent.annotation.RepeatSubmit;
import org.dromara.common.log.annotation.Log;
import org.dromara.common.web.core.BaseController;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.core.domain.R;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import org.dromara.common.log.enums.BusinessType;
import org.dromara.common.excel.utils.ExcelUtil;
import org.dromara.dms.domain.vo.BaseAlarmDetailVo;
import org.dromara.dms.domain.bo.BaseAlarmDetailBo;
import org.dromara.dms.service.IBaseAlarmDetailService;
import org.dromara.common.mybatis.core.page.TableDataInfo;
/**
* ;
* 访:/dms/baseAlarmDetail
*
* @author zch
* @date 2025-03-19
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/baseAlarmDetail")
public class BaseAlarmDetailController extends BaseController {
private final IBaseAlarmDetailService baseAlarmDetailService;
/**
* ;
*/
@SaCheckPermission("dms:baseAlarmDetail:list")
@GetMapping("/list")
public TableDataInfo<BaseAlarmDetailVo> list(BaseAlarmDetailBo bo, PageQuery pageQuery) {
return baseAlarmDetailService.queryPageList(bo, pageQuery);
}
/**
* ;
*/
@SaCheckPermission("dms:baseAlarmDetail:export")
@Log(title = "报警详情信息;", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(BaseAlarmDetailBo bo, HttpServletResponse response) {
List<BaseAlarmDetailVo> list = baseAlarmDetailService.queryList(bo);
ExcelUtil.exportExcel(list, "报警详情信息;", BaseAlarmDetailVo.class, response);
}
/**
* ;
*
* @param alarmDetailId
*/
@SaCheckPermission("dms:baseAlarmDetail:query")
@GetMapping("/{alarmDetailId}")
public R<BaseAlarmDetailVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable Long alarmDetailId) {
return R.ok(baseAlarmDetailService.queryById(alarmDetailId));
}
/**
* ;
*/
@SaCheckPermission("dms:baseAlarmDetail:add")
@Log(title = "报警详情信息;", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody BaseAlarmDetailBo bo) {
return toAjax(baseAlarmDetailService.insertByBo(bo));
}
/**
* ;
*/
@SaCheckPermission("dms:baseAlarmDetail:edit")
@Log(title = "报警详情信息;", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody BaseAlarmDetailBo bo) {
return toAjax(baseAlarmDetailService.updateByBo(bo));
}
/**
* ;
*
* @param alarmDetailIds
*/
@SaCheckPermission("dms:baseAlarmDetail:remove")
@Log(title = "报警详情信息;", businessType = BusinessType.DELETE)
@DeleteMapping("/{alarmDetailIds}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable Long[] alarmDetailIds) {
return toAjax(baseAlarmDetailService.deleteWithValidByIds(List.of(alarmDetailIds), true));
}
/**
* ;
*/
@GetMapping("/getBaseAlarmDetailList")
public R<List<BaseAlarmDetailVo>> getBaseAlarmDetailList(BaseAlarmDetailBo bo) {
List<BaseAlarmDetailVo> list = baseAlarmDetailService.queryList(bo);
return R.ok(list);
}
}

@ -0,0 +1,117 @@
package org.dromara.dms.controller;
import java.util.List;
import lombok.RequiredArgsConstructor;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.*;
import cn.dev33.satoken.annotation.SaCheckPermission;
import org.springframework.web.bind.annotation.*;
import org.springframework.validation.annotation.Validated;
import org.dromara.common.idempotent.annotation.RepeatSubmit;
import org.dromara.common.log.annotation.Log;
import org.dromara.common.web.core.BaseController;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.core.domain.R;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import org.dromara.common.log.enums.BusinessType;
import org.dromara.common.excel.utils.ExcelUtil;
import org.dromara.dms.domain.vo.BaseAlarmInfoVo;
import org.dromara.dms.domain.bo.BaseAlarmInfoBo;
import org.dromara.dms.service.IBaseAlarmInfoService;
import org.dromara.common.mybatis.core.page.TableDataInfo;
/**
*
* 访:/dms/baseAlarmInfo
*
* @author zch
* @date 2025-03-19
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/baseAlarmInfo")
public class BaseAlarmInfoController extends BaseController {
private final IBaseAlarmInfoService baseAlarmInfoService;
/**
*
*/
@SaCheckPermission("dms:baseAlarmInfo:list")
@GetMapping("/list")
public TableDataInfo<BaseAlarmInfoVo> list(BaseAlarmInfoBo bo, PageQuery pageQuery) {
return baseAlarmInfoService.queryPageList(bo, pageQuery);
}
/**
*
*/
@SaCheckPermission("dms:baseAlarmInfo:export")
@Log(title = "报警信息", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(BaseAlarmInfoBo bo, HttpServletResponse response) {
List<BaseAlarmInfoVo> list = baseAlarmInfoService.queryList(bo);
ExcelUtil.exportExcel(list, "报警信息", BaseAlarmInfoVo.class, response);
}
/**
*
*
* @param alarmInfoId
*/
@SaCheckPermission("dms:baseAlarmInfo:query")
@GetMapping("/{alarmInfoId}")
public R<BaseAlarmInfoVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable Long alarmInfoId) {
return R.ok(baseAlarmInfoService.queryById(alarmInfoId));
}
/**
*
*/
@SaCheckPermission("dms:baseAlarmInfo:add")
@Log(title = "报警信息", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody BaseAlarmInfoBo bo) {
return toAjax(baseAlarmInfoService.insertByBo(bo));
}
/**
*
*/
@SaCheckPermission("dms:baseAlarmInfo:edit")
@Log(title = "报警信息", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody BaseAlarmInfoBo bo) {
return toAjax(baseAlarmInfoService.updateByBo(bo));
}
/**
*
*
* @param alarmInfoIds
*/
@SaCheckPermission("dms:baseAlarmInfo:remove")
@Log(title = "报警信息", businessType = BusinessType.DELETE)
@DeleteMapping("/{alarmInfoIds}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable Long[] alarmInfoIds) {
return toAjax(baseAlarmInfoService.deleteWithValidByIds(List.of(alarmInfoIds), true));
}
/**
*
*/
@GetMapping("/getBaseAlarmInfoList")
public R<List<BaseAlarmInfoVo>> getBaseAlarmInfoList(BaseAlarmInfoBo bo) {
List<BaseAlarmInfoVo> list = baseAlarmInfoService.queryList(bo);
return R.ok(list);
}
}

@ -0,0 +1,75 @@
package org.dromara.dms.domain;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import java.io.Serial;
/**
* ; base_alarm_detail
*
* @author zch
* @date 2025-03-19
*/
@Data
@EqualsAndHashCode
@TableName("base_alarm_detail")
public class BaseAlarmDetail {
@Serial
private static final long serialVersionUID = 1L;
/**
* ID
*/
@TableId(value = "alarm_detail_id",type = IdType.AUTO )
private Long alarmDetailId;
/**
* hw_alarm_infoalarm_info_id
*/
private Long alarmInfoId;
/**
* ID
*/
private Long modeFunctionId;
/**
*
*/
private String functionName;
/**
*
*/
private String functionIdentifier;
/**
*
*/
private String functionValue;
/**
*
*/
private Date monitorTime;
/**
*
*/
@TableField(exist = false)
private String alarmContent;//join映射字段
/**
*
*/
@TableField(exist = false)
private String modeFunctionName;//join映射字段
}

@ -0,0 +1,141 @@
package org.dromara.dms.domain;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonInclude;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import java.io.Serial;
import java.util.HashMap;
import java.util.Map;
/**
* base_alarm_info
*
* @author zch
* @date 2025-03-19
*/
@Data
@EqualsAndHashCode
@TableName("base_alarm_info")
public class BaseAlarmInfo {
@Serial
private static final long serialVersionUID = 1L;
/**
* ID
*/
@TableId(value = "alarm_info_id" , type = IdType.AUTO)
private Long alarmInfoId;
/**
* 13线
*/
private String alarmInfoType;
/**
* 1alarm_rulealarm_rule_id3hw_offline_ruleoffline_rule_id
*/
private Long alarmReleatedId;
/**
* IDhw_devicedevice_id
*/
private Long deviceId;
/**
*
*/
private String alarmContent;
/**
* hw_alarm_levelalarm_level_id123
*/
private Long alarmLevelId;
/**
* hw_alarm_typealarm_type_id12
*/
private Long alarmTypeId;
/**
* 12
*/
private String alarmMode;
/**
* 0 1 2
*/
private String alarmStatus;
/**
*
*/
private Date alarmBeginTime;
/**
*
*/
private Date alarmEndTime;
/**
*
*/
private Date handleTime;
/**
*
*/
@JsonIgnore
@TableField(exist = false)
private String searchValue;
/**
*
*/
@TableField(fill = FieldFill.INSERT)
private Date createTime;
/**
*
*/
@TableField(fill = FieldFill.INSERT_UPDATE)
private Long updateBy;
/**
*
*/
@TableField(fill = FieldFill.INSERT_UPDATE)
private Date updateTime;
/**
*
*/
@JsonInclude(JsonInclude.Include.NON_EMPTY)
@TableField(exist = false)
private Map<String, Object> params = new HashMap<>();
/**
*
*/
@TableField(exist = false)
private String alarmTypeName;//join映射字段
/**
*
*/
@TableField(exist = false)
private String alarmLevelName;//join映射字段
@TableField(exist = false)
private String releateadContent;//join映射字段,预留字段
}

@ -0,0 +1,72 @@
package org.dromara.dms.domain.bo;
import org.dromara.dms.domain.BaseAlarmDetail;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
/**
* ; base_alarm_detail
*
* @author zch
* @date 2025-03-19
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = BaseAlarmDetail.class, reverseConvertGenerate = false)
public class BaseAlarmDetailBo extends BaseEntity {
/**
* ID
*/
// @NotNull(message = "报警详细信息ID不能为空", groups = { AddGroup.class, EditGroup.class })
private Long alarmDetailId;
/**
* hw_alarm_infoalarm_info_id
*/
// @NotNull(message = "关联hw_alarm_info的alarm_info_id不能为空", groups = { AddGroup.class, EditGroup.class })
private Long alarmInfoId;
/**
* ID
*/
// @NotNull(message = "设备模型功能ID不能为空", groups = { AddGroup.class, EditGroup.class })
private Long modeFunctionId;
/**
*
*/
// @NotBlank(message = "功能名称不能为空", groups = { AddGroup.class, EditGroup.class })
private String functionName;
/**
*
*/
// @NotBlank(message = "标识符不能为空", groups = { AddGroup.class, EditGroup.class })
private String functionIdentifier;
/**
*
*/
// @NotBlank(message = "值不能为空", groups = { AddGroup.class, EditGroup.class })
private String functionValue;
/**
*
*/
// @NotNull(message = "监测时间不能为空", groups = { AddGroup.class, EditGroup.class })
private Date monitorTime;
/**
*
*/
private String alarmContent;//join映射字段
}

@ -0,0 +1,98 @@
package org.dromara.dms.domain.bo;
import org.dromara.dms.domain.BaseAlarmInfo;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
/**
* base_alarm_info
*
* @author zch
* @date 2025-03-19
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = BaseAlarmInfo.class, reverseConvertGenerate = false)
public class BaseAlarmInfoBo extends BaseEntity {
/**
* ID
*/
// @NotNull(message = "报警信息ID不能为空", groups = { AddGroup.class, EditGroup.class })
private Long alarmInfoId;
/**
* 13线
*/
// @NotBlank(message = "报警信息类型1、设备报警3、离线报警不能为空", groups = { AddGroup.class, EditGroup.class })
private String alarmInfoType;
/**
* 1alarm_rulealarm_rule_id3hw_offline_ruleoffline_rule_id
*/
// @NotNull(message = "报警信息类型是1关联表alarm_rule的字段alarm_rule_id报警信息类型是3关联表hw_offline_rule的字段offline_rule_id不能为空", groups = { AddGroup.class, EditGroup.class })
private Long alarmReleatedId;
/**
* IDhw_devicedevice_id
*/
// @NotNull(message = "报警设备ID关联hw_device表的device_id字段不能为空", groups = { AddGroup.class, EditGroup.class })
private Long deviceId;
/**
*
*/
// @NotBlank(message = "报警内容不能为空", groups = { AddGroup.class, EditGroup.class })
private String alarmContent;
/**
* hw_alarm_levelalarm_level_id123
*/
// @NotNull(message = "报警级别关联hw_alarm_level的字段alarm_level_id报警信息类型为1、2和3时保存不能为空", groups = { AddGroup.class, EditGroup.class })
private Long alarmLevelId;
/**
* hw_alarm_typealarm_type_id12
*/
// @NotNull(message = "报警类型关联hw_alarm_type的字段alarm_type_id报警信息类型为1和2时保存不能为空", groups = { AddGroup.class, EditGroup.class })
private Long alarmTypeId;
/**
* 12
*/
// @NotBlank(message = "报警方式1云端处理2终端上报不能为空", groups = { AddGroup.class, EditGroup.class })
private String alarmMode;
/**
* 0 1 2
*/
// @NotBlank(message = "报警状态0、未处理报警中 1、已处理 2已恢复不能为空", groups = { AddGroup.class, EditGroup.class })
private String alarmStatus;
/**
*
*/
// @NotNull(message = "实际报警开始时间不能为空", groups = { AddGroup.class, EditGroup.class })
private Date alarmBeginTime;
/**
*
*/
// @NotNull(message = "实际报警结束时间不能为空", groups = { AddGroup.class, EditGroup.class })
private Date alarmEndTime;
/**
*
*/
// @NotNull(message = "人工处理时间不能为空", groups = { AddGroup.class, EditGroup.class })
private Date handleTime;
}

@ -0,0 +1,91 @@
package org.dromara.dms.domain.vo;
import java.util.Date;
import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.dromara.dms.domain.BaseAlarmDetail;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
/**
* ; base_alarm_detail
*
* @author zch
* @date 2025-03-19
*/
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = BaseAlarmDetail.class)
public class BaseAlarmDetailVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* ID
*/
@ExcelProperty(value = "报警详细信息ID")
private Long alarmDetailId;
/**
* hw_alarm_infoalarm_info_id
*/
@ExcelProperty(value = "关联hw_alarm_info的alarm_info_id")
private Long alarmInfoId;
/**
* ID
*/
@ExcelProperty(value = "设备模型功能ID")
private Long modeFunctionId;
/**
*
*/
@ExcelProperty(value = "功能名称")
private String functionName;
/**
*
*/
@ExcelProperty(value = "标识符")
private String functionIdentifier;
/**
*
*/
@ExcelProperty(value = "值")
private String functionValue;
/**
*
*/
@ExcelProperty(value = "监测时间")
private Date monitorTime;
/**
*
*/
@ExcelProperty(value = "报警内容")
private String alarmContent;//join映射字段
/**
*
*/
@ExcelProperty(value = "设备模型功能")
private String modeFunctionName;//join映射字段
}

@ -0,0 +1,121 @@
package org.dromara.dms.domain.vo;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.dromara.dms.domain.BaseAlarmInfo;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
/**
* base_alarm_info
*
* @author zch
* @date 2025-03-19
*/
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = BaseAlarmInfo.class)
public class BaseAlarmInfoVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* ID
*/
@ExcelProperty(value = "报警信息ID")
private Long alarmInfoId;
/**
* 13线
*/
@ExcelProperty(value = "报警信息类型", converter = ExcelDictConvert.class)
@ExcelDictFormat(dictType = "alarm_info_type")
private String alarmInfoType;
/**
* 1alarm_rulealarm_rule_id3hw_offline_ruleoffline_rule_id
*/
@ExcelProperty(value = "报警信息类型是1关联表alarm_rule的字段alarm_rule_id报警信息类型是3关联表hw_offline_rule的字段offline_rule_id")
private Long alarmReleatedId;
/**
* IDhw_devicedevice_id
*/
@ExcelProperty(value = "报警设备ID关联hw_device表的device_id字段")
private Long deviceId;
/**
*
*/
@ExcelProperty(value = "报警内容")
private String alarmContent;
/**
* hw_alarm_levelalarm_level_id123
*/
@ExcelProperty(value = "报警级别关联hw_alarm_level的字段alarm_level_id报警信息类型为1、2和3时保存")
private Long alarmLevelId;
/**
* hw_alarm_typealarm_type_id12
*/
@ExcelProperty(value = "报警类型关联hw_alarm_type的字段alarm_type_id报警信息类型为1和2时保存")
private Long alarmTypeId;
/**
* 12
*/
@ExcelProperty(value = "报警方式", converter = ExcelDictConvert.class)
@ExcelDictFormat(dictType = "alarm_mode")
private String alarmMode;
/**
* 0 1 2
*/
@ExcelProperty(value = "报警状态", converter = ExcelDictConvert.class)
@ExcelDictFormat(dictType = "alarm_status")
private String alarmStatus;
/**
*
*/
@ExcelProperty(value = "实际报警开始时间")
private Date alarmBeginTime;
/**
*
*/
@ExcelProperty(value = "实际报警结束时间")
private Date alarmEndTime;
/**
*
*/
@ExcelProperty(value = "人工处理时间")
private Date handleTime;
/**
*
*/
@ExcelProperty(value = "报警类型名称")
private String alarmTypeName;//join映射字段
/**
*
*/
@ExcelProperty(value = "报警级别名称")
private String alarmLevelName;//join映射字段
}

@ -0,0 +1,15 @@
package org.dromara.dms.mapper;
import org.dromara.dms.domain.BaseAlarmDetail;
import org.dromara.dms.domain.vo.BaseAlarmDetailVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
/**
* ;Mapper
*
* @author zch
* @date 2025-03-19
*/
public interface BaseAlarmDetailMapper extends BaseMapperPlus<BaseAlarmDetail, BaseAlarmDetailVo> {
}

@ -0,0 +1,15 @@
package org.dromara.dms.mapper;
import org.dromara.dms.domain.BaseAlarmInfo;
import org.dromara.dms.domain.vo.BaseAlarmInfoVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
/**
* Mapper
*
* @author zch
* @date 2025-03-19
*/
public interface BaseAlarmInfoMapper extends BaseMapperPlus<BaseAlarmInfo, BaseAlarmInfoVo> {
}

@ -0,0 +1,69 @@
package org.dromara.dms.service;
import org.dromara.dms.domain.BaseAlarmDetail;
import org.dromara.dms.domain.vo.BaseAlarmDetailVo;
import org.dromara.dms.domain.bo.BaseAlarmDetailBo;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;
import java.util.Collection;
import java.util.List;
/**
* ;Service
*
* @author zch
* @date 2025-03-19
*/
public interface IBaseAlarmDetailService {
/**
* ;
*
* @param alarmDetailId
* @return ;
*/
BaseAlarmDetailVo queryById(Long alarmDetailId);
/**
* ;
*
* @param bo
* @param pageQuery
* @return ;
*/
TableDataInfo<BaseAlarmDetailVo> queryPageList(BaseAlarmDetailBo bo, PageQuery pageQuery);
/**
* ;
*
* @param bo
* @return ;
*/
List<BaseAlarmDetailVo> queryList(BaseAlarmDetailBo bo);
/**
* ;
*
* @param bo ;
* @return
*/
Boolean insertByBo(BaseAlarmDetailBo bo);
/**
* ;
*
* @param bo ;
* @return
*/
Boolean updateByBo(BaseAlarmDetailBo bo);
/**
* ;
*
* @param ids
* @param isValid
* @return
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
}

@ -0,0 +1,69 @@
package org.dromara.dms.service;
import org.dromara.dms.domain.BaseAlarmInfo;
import org.dromara.dms.domain.vo.BaseAlarmInfoVo;
import org.dromara.dms.domain.bo.BaseAlarmInfoBo;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;
import java.util.Collection;
import java.util.List;
/**
* Service
*
* @author zch
* @date 2025-03-19
*/
public interface IBaseAlarmInfoService {
/**
*
*
* @param alarmInfoId
* @return
*/
BaseAlarmInfoVo queryById(Long alarmInfoId);
/**
*
*
* @param bo
* @param pageQuery
* @return
*/
TableDataInfo<BaseAlarmInfoVo> queryPageList(BaseAlarmInfoBo bo, PageQuery pageQuery);
/**
*
*
* @param bo
* @return
*/
List<BaseAlarmInfoVo> queryList(BaseAlarmInfoBo bo);
/**
*
*
* @param bo
* @return
*/
Boolean insertByBo(BaseAlarmInfoBo bo);
/**
*
*
* @param bo
* @return
*/
Boolean updateByBo(BaseAlarmInfoBo bo);
/**
*
*
* @param ids
* @param isValid
* @return
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
}

@ -0,0 +1,149 @@
package org.dromara.dms.service.impl;
import ch.qos.logback.core.joran.action.BaseModelAction;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.github.yulichang.toolkit.JoinWrappers;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor;
import org.dromara.dms.domain.BaseAlarmInfo;
import org.dromara.dms.domain.DmsDeviceModeFunction;
import org.springframework.stereotype.Service;
import org.dromara.dms.domain.bo.BaseAlarmDetailBo;
import org.dromara.dms.domain.vo.BaseAlarmDetailVo;
import org.dromara.dms.domain.BaseAlarmDetail;
import org.dromara.dms.mapper.BaseAlarmDetailMapper;
import org.dromara.dms.service.IBaseAlarmDetailService;
import java.util.List;
import java.util.Map;
import java.util.Collection;
/**
* ;Service
*
* @author zch
* @date 2025-03-19
*/
@RequiredArgsConstructor
@Service
public class BaseAlarmDetailServiceImpl implements IBaseAlarmDetailService {
private final BaseAlarmDetailMapper baseMapper;
/**
* ;
*
* @param alarmDetailId
* @return ;
*/
@Override
public BaseAlarmDetailVo queryById(Long alarmDetailId){
return baseMapper.selectVoById(alarmDetailId);
}
/**
* ;
*
* @param bo
* @param pageQuery
* @return ;
*/
@Override
public TableDataInfo<BaseAlarmDetailVo> queryPageList(BaseAlarmDetailBo bo, PageQuery pageQuery) {
MPJLambdaWrapper<BaseAlarmDetail> lqw = buildQueryWrapper(bo);
Page<BaseAlarmDetailVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
return TableDataInfo.build(result);
}
/**
* ;
*
* @param bo
* @return ;
*/
@Override
public List<BaseAlarmDetailVo> queryList(BaseAlarmDetailBo bo) {
MPJLambdaWrapper<BaseAlarmDetail> lqw = buildQueryWrapper(bo);
return baseMapper.selectVoList(lqw);
}
private MPJLambdaWrapper<BaseAlarmDetail> buildQueryWrapper(BaseAlarmDetailBo bo) {
Map<String, Object> params = bo.getParams();
MPJLambdaWrapper<BaseAlarmDetail> lqw = JoinWrappers.lambda(BaseAlarmDetail.class)
.selectAll(BaseAlarmDetail.class)
//关联hw_alarm_info的alarm_info_id
.select(BaseAlarmInfo::getAlarmContent)
.leftJoin(BaseAlarmInfo.class, BaseAlarmInfo::getAlarmInfoId, BaseAlarmDetail::getAlarmInfoId)
//关联dms_device_mode_function的mode_function_id
.selectAs(DmsDeviceModeFunction::getFunctionName, BaseAlarmDetail::getModeFunctionName)
.leftJoin(DmsDeviceModeFunction.class, DmsDeviceModeFunction::getModeFunctionId, BaseAlarmDetail::getModeFunctionId)
.eq(bo.getAlarmDetailId() != null, BaseAlarmDetail::getAlarmDetailId, bo.getAlarmDetailId())
.eq(bo.getAlarmInfoId() != null, BaseAlarmDetail::getAlarmInfoId, bo.getAlarmInfoId())
.eq(bo.getModeFunctionId() != null, BaseAlarmDetail::getModeFunctionId, bo.getModeFunctionId())
.like(StringUtils.isNotBlank(bo.getFunctionName()), BaseAlarmDetail::getFunctionName, bo.getFunctionName())
.eq(StringUtils.isNotBlank(bo.getFunctionIdentifier()), BaseAlarmDetail::getFunctionIdentifier, bo.getFunctionIdentifier())
.eq(StringUtils.isNotBlank(bo.getFunctionValue()), BaseAlarmDetail::getFunctionValue, bo.getFunctionValue())
.eq(bo.getMonitorTime() != null, BaseAlarmDetail::getMonitorTime, bo.getMonitorTime());
return lqw;
}
/**
* ;
*
* @param bo ;
* @return
*/
@Override
public Boolean insertByBo(BaseAlarmDetailBo bo) {
BaseAlarmDetail add = MapstructUtils.convert(bo, BaseAlarmDetail.class);
validEntityBeforeSave(add);
boolean flag = baseMapper.insert(add) > 0;
if (flag) {
bo.setAlarmDetailId(add.getAlarmDetailId());
}
return flag;
}
/**
* ;
*
* @param bo ;
* @return
*/
@Override
public Boolean updateByBo(BaseAlarmDetailBo bo) {
BaseAlarmDetail update = MapstructUtils.convert(bo, BaseAlarmDetail.class);
validEntityBeforeSave(update);
return baseMapper.updateById(update) > 0;
}
/**
*
*/
private void validEntityBeforeSave(BaseAlarmDetail entity){
//TODO 做一些数据校验,如唯一约束
}
/**
* ;
*
* @param ids
* @param isValid
* @return
*/
@Override
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
if(isValid){
//TODO 做一些业务上的校验,判断是否需要校验
}
return baseMapper.deleteByIds(ids) > 0;
}
}

@ -0,0 +1,167 @@
package org.dromara.dms.service.impl;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.github.yulichang.toolkit.JoinWrappers;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor;
import org.dromara.dms.domain.BaseAlarmLevel;
import org.dromara.dms.domain.BaseAlarmType;
import org.dromara.dms.domain.DmsBaseMachineInfo;
import org.springframework.stereotype.Service;
import org.dromara.dms.domain.bo.BaseAlarmInfoBo;
import org.dromara.dms.domain.vo.BaseAlarmInfoVo;
import org.dromara.dms.domain.BaseAlarmInfo;
import org.dromara.dms.mapper.BaseAlarmInfoMapper;
import org.dromara.dms.service.IBaseAlarmInfoService;
import org.dromara.dms.domain.BaseAlarmRule;
import java.util.List;
import java.util.Map;
import java.util.Collection;
/**
* Service
*
* @author zch
* @date 2025-03-19
*/
@RequiredArgsConstructor
@Service
public class BaseAlarmInfoServiceImpl implements IBaseAlarmInfoService {
private final BaseAlarmInfoMapper baseMapper;
/**
*
*
* @param alarmInfoId
* @return
*/
@Override
public BaseAlarmInfoVo queryById(Long alarmInfoId){
return baseMapper.selectVoById(alarmInfoId);
}
/**
*
*
* @param bo
* @param pageQuery
* @return
*/
@Override
public TableDataInfo<BaseAlarmInfoVo> queryPageList(BaseAlarmInfoBo bo, PageQuery pageQuery) {
MPJLambdaWrapper<BaseAlarmInfo> lqw = buildQueryWrapper(bo);
Page<BaseAlarmInfoVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
return TableDataInfo.build(result);
}
/**
*
*
* @param bo
* @return
*/
@Override
public List<BaseAlarmInfoVo> queryList(BaseAlarmInfoBo bo) {
MPJLambdaWrapper<BaseAlarmInfo> lqw = buildQueryWrapper(bo);
return baseMapper.selectVoList(lqw);
}
private MPJLambdaWrapper<BaseAlarmInfo> buildQueryWrapper(BaseAlarmInfoBo bo) {
Map<String, Object> params = bo.getParams();
MPJLambdaWrapper<BaseAlarmInfo> lqw = JoinWrappers.lambda(BaseAlarmInfo.class)
.selectAll(BaseAlarmInfo.class)
// 报警级别关联hw_alarm_level的字段alarm_level_id报警信息类型为1、2和3时保存
.select(BaseAlarmLevel::getAlarmLevelName)
.leftJoin(BaseAlarmLevel.class,BaseAlarmLevel::getAlarmLevelId, BaseAlarmInfo::getAlarmLevelId)
//报警类型关联hw_alarm_type的字段alarm_type_id报警信息类型为1和2时保存
.select(BaseAlarmType::getAlarmTypeName)
.leftJoin(BaseAlarmType.class,BaseAlarmType::getAlarmTypeId, BaseAlarmInfo::getAlarmTypeId)
//报警设备ID关联hw_device表的device_id字段
.select(DmsBaseMachineInfo::getMachineName)
.leftJoin(DmsBaseMachineInfo.class,DmsBaseMachineInfo::getMachineId, BaseAlarmInfo::getDeviceId)
// 根据alarmInfoType动态关联相关规则表,使用CASE和子查询处理不同类型的规则关联
/* .select("CASE " +
"WHEN t.alarm_info_type = '1' THEN (SELECT alarm_rule_name FROM base_alarm_rule WHERE alarm_rule_id = t.alarm_releated_id) " +
//"WHEN t.alarm_info_type = '3' THEN (SELECT offline_rule_name FROM hw_offline_rule WHERE offline_rule_id = t.alarm_releated_id) " +
"END AS releatead_content")*/
.eq(bo.getAlarmInfoId() != null, BaseAlarmInfo::getAlarmInfoId, bo.getAlarmInfoId())
.eq(StringUtils.isNotBlank(bo.getAlarmInfoType()), BaseAlarmInfo::getAlarmInfoType, bo.getAlarmInfoType())
.eq(bo.getAlarmReleatedId() != null, BaseAlarmInfo::getAlarmReleatedId, bo.getAlarmReleatedId())
.eq(bo.getDeviceId() != null, BaseAlarmInfo::getDeviceId, bo.getDeviceId())
.eq(StringUtils.isNotBlank(bo.getAlarmContent()), BaseAlarmInfo::getAlarmContent, bo.getAlarmContent())
.eq(bo.getAlarmLevelId() != null, BaseAlarmInfo::getAlarmLevelId, bo.getAlarmLevelId())
.eq(bo.getAlarmTypeId() != null, BaseAlarmInfo::getAlarmTypeId, bo.getAlarmTypeId())
.eq(StringUtils.isNotBlank(bo.getAlarmMode()), BaseAlarmInfo::getAlarmMode, bo.getAlarmMode())
.eq(StringUtils.isNotBlank(bo.getAlarmStatus()), BaseAlarmInfo::getAlarmStatus, bo.getAlarmStatus())
.eq(bo.getAlarmBeginTime() != null, BaseAlarmInfo::getAlarmBeginTime, bo.getAlarmBeginTime())
.eq(bo.getAlarmEndTime() != null, BaseAlarmInfo::getAlarmEndTime, bo.getAlarmEndTime())
.eq(bo.getHandleTime() != null, BaseAlarmInfo::getHandleTime, bo.getHandleTime())
.orderByDesc(BaseAlarmInfo::getCreateTime);
return lqw;
}
/**
*
*
* @param bo
* @return
*/
@Override
public Boolean insertByBo(BaseAlarmInfoBo bo) {
BaseAlarmInfo add = MapstructUtils.convert(bo, BaseAlarmInfo.class);
validEntityBeforeSave(add);
boolean flag = baseMapper.insert(add) > 0;
if (flag) {
bo.setAlarmInfoId(add.getAlarmInfoId());
}
return flag;
}
/**
*
*
* @param bo
* @return
*/
@Override
public Boolean updateByBo(BaseAlarmInfoBo bo) {
BaseAlarmInfo update = MapstructUtils.convert(bo, BaseAlarmInfo.class);
validEntityBeforeSave(update);
return baseMapper.updateById(update) > 0;
}
/**
*
*/
private void validEntityBeforeSave(BaseAlarmInfo entity){
//TODO 做一些数据校验,如唯一约束
}
/**
*
*
* @param ids
* @param isValid
* @return
*/
@Override
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
if(isValid){
//TODO 做一些业务上的校验,判断是否需要校验
}
return baseMapper.deleteByIds(ids) > 0;
}
}

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.dromara.dms.mapper.BaseAlarmDetailMapper">
</mapper>

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.dromara.dms.mapper.BaseAlarmInfoMapper">
</mapper>
Loading…
Cancel
Save