Commit 84e5b6db authored by 赵啸非's avatar 赵啸非

添加设备告警

parent ad4aa300
......@@ -127,3 +127,25 @@ INSERT INTO `mortals_xhx_param` VALUES (null, '设备来源,为其它时候上
INSERT INTO `mortals_xhx_param` VALUES (null, '设备类型', 'Device', 'deviceType', '13', '无感一码通', 1, 4, 0, 'deviceType', NULL, NULL, NULL);
-- ----------------------------
-- 设备告警日志表
-- ----------------------------
DROP TABLE IF EXISTS `mortals_xhx_device_alarm`;
CREATE TABLE mortals_xhx_device_alarm(
`id` bigint(20) AUTO_INCREMENT COMMENT '主键ID,主键,自增长',
`deviceId` bigint(20) NOT NULL COMMENT '告警设备Id',
`deviceCode` varchar(64) NOT NULL COMMENT '告警设备编码',
`alarmType` tinyint(2) NOT NULL COMMENT '告警类型,(0.离线)',
`alarmLevel` tinyint(2) NOT NULL COMMENT '告警级别(0.危险,1.次要,2.一般)',
`alarmContent` varchar(512) NOT NULL COMMENT '告警详细内容',
`alarmTime` datetime NOT NULL COMMENT '告警时间',
`createTime` datetime NOT NULL COMMENT '创建时间',
`updateUserId` bigint(20) COMMENT '更新用户',
`updateTime` datetime COMMENT '更新时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='设备告警日志';
......@@ -31,6 +31,7 @@ const router = new Router({
builder('site/list', 'system/site/index'),//站点
...restBuilder('device', 'device'),//
...restBuilder('device/alarm', 'device/alarm'),//
...restBuilder('device/log', 'device/log'),//
...restBuilder('firm', 'firm'),//
......
<template>
<!-- 弹出框表单 -->
<el-dialog :title="title" :visible.sync="open" width="90%" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="120px">
<el-row>
<Field label="告警设备Id" prop="deviceId" v-model="form.deviceId" placeholder="请输入告警设备Id"/>
<Field label="告警设备编码" prop="deviceCode" v-model="form.deviceCode" placeholder="请输入告警设备编码"/>
<Field label="告警类型," prop="alarmType" v-model="form.alarmType" type="select" :enumData="dict.alarmType" placeholder="请选择告警类型,"/>
<Field label="告警级别" prop="alarmLevel" v-model="form.alarmLevel" type="select" :enumData="dict.alarmLevel" placeholder="请选择告警级别"/>
<Field label="告警详细内容" prop="alarmContent" v-model="form.alarmContent" type="textarea" placeholder="请输入告警详细内容"/>
<Field label="告警时间" prop="alarmTime" v-model="form.alarmTime" type="date" />
</el-row>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" v-if="pageInfo.type !== 'view'" @click="submitForm">确 定</el-button>
<el-button @click="cancel">取 消</el-button>
</div>
</el-dialog>
</template>
<script>
import form from "@/assets/mixins/formdialog";
import dialogShow from "./dialogshow";
export default {
mixins: [form],
components: {
dialogShow ,
},
data() {
return {
// 遮罩层
loading: true,
// 弹出层标题
title: "设备告警日志",
// 是否显示弹出层
open: false,
toString:[
"alarmType",
"alarmLevel",
],
// 表单校验
rules: {
deviceCode: [
{required: true,message: "请输入告警设备编码", trigger: "blur" },
{max: 64,message: "最多只能录入64个字符",trigger: "blur",},
],
alarmType: [
{required: true,message: "请输入告警类型,", trigger: "blur" },
],
alarmLevel: [
{required: true,message: "请输入告警级别", trigger: "blur" },
],
alarmContent: [
{required: true,message: "请输入告警详细内容", trigger: "blur" },
{max: 512,message: "最多只能录入512个字符",trigger: "blur",},
],
alarmTime: [
{required: true,message: "请选择告警时间" },
],
createTime: [
{required: true,message: "请选择创建时间" },
],
}
};
},
methods: {
/** 编辑 */
edit(row) {
this.reset()
this.query = { id: row.id };
this.urls.currUrl ="device/alarm/edit";
this.getData();
this.pageInfo.type="edit"
this.title = "修改设备告警日志";
},
/** 新增 */
add(row) {
this.reset()
this.urls.currUrl = "device/alarm/add";
this.getData();
this.pageInfo.type="add"
this.title = "新增设备告警日志";
},
/** 查看*/
view(row) {
this.reset()
this.query = { id: row.id };
this.urls.currUrl ="device/alarm/view";
this.getData();
this.pageInfo.type="view"
this.title = "设备告警日志详细";
},
/**取消按钮 */
cancel() {
this.open = false;
},
/**获取数据后弹框 */
afterRender(data) {
this.open = true;
},
afterSubmit(data) {
this.open = false;
this.$emit("ok");
},
// 表单重置
reset() {
this.form = {
deviceId : null,
deviceCode : "",
alarmType : null,
alarmLevel : null,
alarmContent : "",
alarmTime : null,
};
this.resetForm("form");
},
resetForm(refName) {
if (this.$refs[refName]) {
this.$refs[refName].resetFields();
}
},
},
};
</script>
<template>
<div class="page">
<LayoutTable :data="tableData" :config="tableConfig"> </LayoutTable>
<dialog-show ref="dialogform" @ok="getData" />
</div>
</template>
<script>
/** 表单弹出框模式需引入 */
import dialogShow from "./dialogshow";
import table from "@/assets/mixins/table";
export default {
name: "DeviceAlarmList",
components: {
dialogShow,
},
mixins: [table],
created() {},
methods: {
/** 重写新增方法 */
toAdd(row) {
this.$refs.dialogform.add(row);
},
/** 重写编辑方法 */
toEdit(row) {
this.$refs.dialogform.edit(row);
},
/** 重写查看方法 */
toView(row) {
this.$refs.dialogform.view(row);
},
},
data() {
return {
config: {
search: [],
columns: [
{ type: "selection", width: 60 },
{ type: "index", label: "序号", width: 50 },
{ label: "站点名称", prop: "siteName" },
{ label: "站点编码", prop: "siteNum" },
{ label: "设备编码", prop: "deviceCode" },
{ label: "设备类型", prop: "deviceType" },
{ label: "告警类型", prop: "alarmType", },
{ label: "告警级别", prop: "alarmLevel", },
{ label: "告警详细内容", prop: "alarmContent" },
{
label: "告警时间",
prop: "alarmTime",
formatter: this.formatterDate,
},
],
},
};
},
};
</script>
\ No newline at end of file
<template>
<layout-view>
<el-descriptions :title="title" :column="column" :size="size" :colon="false" border>
<template slot="title">
<i class="el-icon-tickets"></i>
基本详细信息
</template>
<template slot="extra">
<el-button type="primary" @click="$router.go(-1)" size="small">返回</el-button>
</template>
<el-descriptions-item label="告警设备Id" label-class-name="labelClass" content-class-name="contentClass">
{{form.deviceId}}
</el-descriptions-item>
<el-descriptions-item label="告警设备编码" label-class-name="labelClass" content-class-name="contentClass">
{{form.deviceCode}}
</el-descriptions-item>
<el-descriptions-item label="告警类型," label-class-name="labelClass" content-class-name="contentClass">
{{ util_formatters("alarmType", form.alarmType) }}
</el-descriptions-item>
<el-descriptions-item label="告警级别" label-class-name="labelClass" content-class-name="contentClass">
{{ util_formatters("alarmLevel", form.alarmLevel) }}
</el-descriptions-item>
<el-descriptions-item label="告警详细内容" label-class-name="labelClass" content-class-name="contentClass">
{{form.alarmContent}}
</el-descriptions-item>
<el-descriptions-item label="告警时间" label-class-name="labelClass" content-class-name="contentClass">
{{ util_formatterDate(form.alarmTime)}}
</el-descriptions-item>
</el-descriptions>
</layout-view>
</template>
<script>
import view from "@/assets/mixins/view";
export default {
mixins: [view],
components: {
},
methods: {
},
data() {
return {
size:"small",
column:2,
toString:[
"alarmType",
"alarmLevel",
],
toArrays: [
],
toDate: [
]
}
}
}
</script>
<style lang="less">
.labelClass{
width: 200px;
}
.el-descriptions__body{
margin-left: 5px;
margin-right: 5px;
color: #606266;
background-color: #FFF;
}
.contentClass{
width: 600px;
}
</style>
\ No newline at end of file
<template>
<div class="page">
<LayoutTable :data="tableData" :config="tableConfig">
<el-tag slot="table-body-head" style="margin:5px" type="success">当前在线设备:{{tableData.onlineCount}}</el-tag>
<el-tag slot="table-body-head" style="margin: 5px" type="success"
>当前在线设备:{{ tableData.onlineCount }}</el-tag
>
<el-tag slot="table-body-head" style="margin:5px" type="danger">当前离线设备:{{tableData.offlineCount}}</el-tag>
<el-tag slot="table-body-head" style="margin: 5px" type="danger"
>当前离线设备:{{ tableData.offlineCount }}</el-tag
>
</LayoutTable>
<dialog-show ref="dialogform" @ok="getData" />
......@@ -31,10 +33,18 @@ export default {
let msg = "";
let content = JSON.parse(obj.body.content);
if (content.deviceOnlineStatus == 1) {
console.log(_this.tableData.dict)
msg = _this.tableData.dict.deviceType[content.deviceType]+ "设备:" + content.deviceCode + " 上线!";
console.log(_this.tableData.dict);
msg =
_this.tableData.dict.deviceType[content.deviceType] +
"设备:" +
content.deviceCode +
" 上线!";
} else {
msg = _this.tableData.dict.deviceType[content.deviceType]+"设备:" + content.deviceCode + " 离线!";
msg =
_this.tableData.dict.deviceType[content.deviceType] +
"设备:" +
content.deviceCode +
" 离线!";
}
_this.$notify({
......@@ -52,7 +62,7 @@ export default {
this.getsocketData = getsocketData;
// 注册监听事件
window.addEventListener("onmessageWS", getsocketData,false);
window.addEventListener("onmessageWS", getsocketData, false);
},
methods: {
/** 重写新增方法 */
......@@ -65,7 +75,39 @@ export default {
},
/** 重写查看方法 */
toView(row) {
this.$refs.dialogform.view(row);
this.$refs.dialogform.view(row);
},
rebootDevice(row) {
this.$post("/device/execmd", {
id: row.id,
type: 1,
})
.then((res) => {
if (res.code == 1) {
this.$message.success("重启设备命令下发成功!");
//this.getData();
}
})
.catch((error) => {
this.$message.error(error.message);
});
},
closeDevice(row) {
this.$post("/device/execmd", {
id: row.id,
type: 2,
})
.then((res) => {
if (res.code == 1) {
this.$message.success("关闭设备命令下发成功!");
//this.getData();
}
})
.catch((error) => {
this.$message.error(error.message);
});
},
},
data() {
......@@ -73,42 +115,41 @@ export default {
config: {
getsocketData: null,
search: [
{
name: 'deviceCode',
type: 'text',
label: '设备编码',
fuzzy:true
{
name: "deviceCode",
type: "text",
label: "设备编码",
fuzzy: true,
},
{
name: 'siteName',
type: 'text',
label: '站点名称',
fuzzy:true
},
{
name: "siteName",
type: "text",
label: "站点名称",
fuzzy: true,
},
{
name: 'deviceType',
type: 'select',
label: '设备类型',
{
name: "deviceType",
type: "select",
label: "设备类型",
},
{
name: 'deviceOnlineStatus',
type: 'select',
label: '在线状态',
name: "deviceOnlineStatus",
type: "select",
label: "在线状态",
},
],
columns: [
{ type: "selection", width: 60 },
// { label: "设备名称", prop: "deviceName" },
{ label: "所属站点", prop: "siteName" },
// { label: "设备名称", prop: "deviceName" },
{ label: "所属站点", prop: "siteName" },
{ label: "设备编码", prop: "deviceCode" },
{ label: "设备类型", prop: "deviceType", formatter: this.formatter },
{
label: "在线状态 ",
prop: "deviceOnlineStatus",
......@@ -122,16 +163,50 @@ export default {
},
{
label: "操作",
width: 240,
width: 280,
formatter: (row) => {
return (
<table-buttons
noAdd
row={row}
onEdit={this.toEdit}
onView={this.toView}
onDel={this.toDel}
/>
<div>
<table-buttons
noAdd
row={row}
onEdit={this.toEdit}
onView={this.toView}
onDel={this.toDel}
/>
{row.deviceType === 15 ? (
<el-button
size="mini"
type="text"
icon="el-icon-refresh-right"
onClick={() => {
this.rebootDevice(row);
}}
>
重启
</el-button>
) : (
""
)}
<span> </span>
{row.deviceType === 15 ? (
<el-button
size="mini"
type="text"
icon="el-icon-switch-button"
onClick={() => {
this.closeDevice(row);
}}
>
关机
</el-button>
) : (
""
)}
<span> </span>
</div>
);
},
},
......
......@@ -12,6 +12,10 @@ public class DeviceResp implements Serializable {
* 在线状态(0在线 1离线)
*/
private String isOnLine;
/**
* 0.正常,1.重启,2.关机
*/
private Integer type;
}
......@@ -3,10 +3,12 @@ package com.mortals.xhx.busiz.web;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.mortals.framework.exception.AppException;
import com.mortals.framework.service.ICacheService;
import com.mortals.xhx.base.framework.ws.message.SendToAllRequest;
import com.mortals.xhx.base.framework.ws.util.WebSocketUtil;
import com.mortals.xhx.busiz.req.DeviceReq;
import com.mortals.xhx.busiz.rsp.ApiResp;
import com.mortals.xhx.busiz.rsp.DeviceResp;
import com.mortals.xhx.common.code.ApiRespCodeEnum;
import com.mortals.xhx.common.code.DeviceOnlineStatusEnum;
import com.mortals.xhx.common.utils.SendTaskThreadPool;
......@@ -25,6 +27,8 @@ import org.springframework.web.bind.annotation.RestController;
import java.util.Date;
import static com.mortals.xhx.common.key.RedisKey.KEY_DEVICE_TYPE_CACHE;
/**
* 设备
*
......@@ -41,6 +45,8 @@ public class DeviceApiController {
private DeviceService deviceService;
@Autowired
private SendTaskThreadPool sendTaskThreadPool;
@Autowired
private ICacheService cacheService;
/**
* 设备数据上报
......@@ -51,13 +57,23 @@ public class DeviceApiController {
@PostMapping("upload")
public String upload(DeviceReq req) {
log.debug("【设备数据上报】【请求体】--> " + JSONObject.toJSONString(req));
ApiResp rsp = new ApiResp<>();
ApiResp<DeviceResp> rsp = new ApiResp<>();
rsp.setMsg(ApiRespCodeEnum.SUCCESS.getLabel());
rsp.setCode(ApiRespCodeEnum.SUCCESS.getValue());
UploadTask uploadTask = new UploadTask(req, deviceLogService, deviceService);
if(!ObjectUtils.isEmpty(sendTaskThreadPool)){
if (!ObjectUtils.isEmpty(sendTaskThreadPool)) {
sendTaskThreadPool.execute(uploadTask);
}
//判断当前设备是否设置了标志类型,如果设置了 则访问
Integer type = cacheService.get(KEY_DEVICE_TYPE_CACHE + req.getDevicenum(), Integer.class);
if (!ObjectUtils.isEmpty(type)) {
DeviceResp deviceResp = new DeviceResp();
deviceResp.setType(type);
rsp.setData(deviceResp);
}
cacheService.del(KEY_DEVICE_TYPE_CACHE + req.getDevicenum());
//if(!ObjectUtils.isEmpty(type))
log.debug("响应【设备数据上报】【响应体】--> " + JSONObject.toJSONString(rsp));
return JSON.toJSONString(rsp);
}
......
package com.mortals.xhx.common.code;
import java.util.LinkedHashMap;
import java.util.Map;
/**
* 告警级别(0.危险,1.次要,2.一般)枚举类
*
* @author zxfei
*/
public enum AlarmLevelEnum {
危险(0, "危险"),
次要(1, "次要"),
一般(2, "一般");
private Integer value;
private String desc;
AlarmLevelEnum(Integer value, String desc) {
this.value = value;
this.desc = desc;
}
public Integer getValue() {
return this.value;
}
public String getDesc() {
return this.desc;
}
public static AlarmLevelEnum getByValue(Integer value) {
for (AlarmLevelEnum alarmLevelEnum : AlarmLevelEnum.values()) {
if (alarmLevelEnum.getValue() == value) {
return alarmLevelEnum;
}
}
return null;
}
/**
* 获取Map集合
*
* @param eItem 不包含项
* @return
*/
public static Map<String, String> getEnumMap(Integer... eItem) {
Map<String, String> resultMap = new LinkedHashMap<>();
for (AlarmLevelEnum item : AlarmLevelEnum.values()) {
try {
boolean hasE = false;
for (Integer e : eItem) {
if (item.getValue() == e) {
hasE = true;
break;
}
}
if (!hasE) {
resultMap.put(item.getValue() + "", item.getDesc());
}
} catch (Exception ex) {
}
}
return resultMap;
}
}
\ No newline at end of file
package com.mortals.xhx.common.code;
import java.util.LinkedHashMap;
import java.util.Map;
/**
* 告警类型,(0.离线)枚举类
*
* @author zxfei
*/
public enum AlarmTypeEnum {
离线(0, "离线");
private Integer value;
private String desc;
AlarmTypeEnum(Integer value, String desc) {
this.value = value;
this.desc = desc;
}
public Integer getValue() {
return this.value;
}
public String getDesc() {
return this.desc;
}
public static AlarmTypeEnum getByValue(Integer value) {
for (AlarmTypeEnum alarmTypeEnum : AlarmTypeEnum.values()) {
if (alarmTypeEnum.getValue() == value) {
return alarmTypeEnum;
}
}
return null;
}
/**
* 获取Map集合
*
* @param eItem 不包含项
* @return
*/
public static Map<String, String> getEnumMap(Integer... eItem) {
Map<String, String> resultMap = new LinkedHashMap<>();
for (AlarmTypeEnum item : AlarmTypeEnum.values()) {
try {
boolean hasE = false;
for (Integer e : eItem) {
if (item.getValue() == e) {
hasE = true;
break;
}
}
if (!hasE) {
resultMap.put(item.getValue() + "", item.getDesc());
}
} catch (Exception ex) {
}
}
return resultMap;
}
}
\ No newline at end of file
package com.mortals.xhx.common.code;
import java.util.LinkedHashMap;
import java.util.Map;
public enum DeviceActionEnum {
正常(0, "正常"),
重启(1, "重启"),
关机(2, "关机");
private Integer value;
private String desc;
DeviceActionEnum(Integer value, String desc) {
this.value = value;
this.desc = desc;
}
public Integer getValue() {
return this.value;
}
public String getDesc() {
return this.desc;
}
public static DeviceActionEnum getByValue(Integer value) {
for (DeviceActionEnum alarmLevelEnum : DeviceActionEnum.values()) {
if (alarmLevelEnum.getValue() == value) {
return alarmLevelEnum;
}
}
return null;
}
/**
* 获取Map集合
*
* @param eItem 不包含项
* @return
*/
public static Map<String, String> getEnumMap(Integer... eItem) {
Map<String, String> resultMap = new LinkedHashMap<>();
for (DeviceActionEnum item : DeviceActionEnum.values()) {
try {
boolean hasE = false;
for (Integer e : eItem) {
if (item.getValue() == e) {
hasE = true;
break;
}
}
if (!hasE) {
resultMap.put(item.getValue() + "", item.getDesc());
}
} catch (Exception ex) {
}
}
return resultMap;
}
}
\ No newline at end of file
......@@ -20,7 +20,12 @@ public enum DeviceTypeEnum {
信息发布(9, "信息发布"),
导视机(10, "导视机"),
开标室设备(11, "开标室设备"),
背靠背(12, "背靠背");
背靠背(12, "背靠背"),
无感一码通(13, "无感一码通"),
桌面式自助终端(14, "桌面式自助终端"),
可视化触控大屏(15, "可视化触控大屏"),
人脸识别考勤机(16, "人脸识别考勤机"),
;
private Integer value;
private String desc;
......
......@@ -10,4 +10,7 @@ public class RedisKey {
*/
public static final String KEY_MENU_CACHE = "iot:base:MenuCacheKey:";
public static final String KEY_DEVICE_TYPE_CACHE = "device:TypeCacheKey:";
}
......@@ -10,14 +10,18 @@ import com.mortals.framework.util.DateUtils;
import com.mortals.xhx.base.framework.ws.message.SendToAllRequest;
import com.mortals.xhx.base.framework.ws.message.UserJoinNoticeRequest;
import com.mortals.xhx.base.framework.ws.util.WebSocketUtil;
import com.mortals.xhx.common.code.AlarmLevelEnum;
import com.mortals.xhx.common.code.AlarmTypeEnum;
import com.mortals.xhx.common.code.DeviceOnlineStatusEnum;
import com.mortals.xhx.common.code.DeviceSourceEnum;
import com.mortals.xhx.common.key.ParamKey;
import com.mortals.xhx.common.utils.SendTask;
import com.mortals.xhx.common.utils.SendTaskThreadPool;
import com.mortals.xhx.module.device.model.DeviceAlarmEntity;
import com.mortals.xhx.module.device.model.DeviceEntity;
import com.mortals.xhx.module.device.model.DeviceLogEntity;
import com.mortals.xhx.module.device.model.DeviceLogQuery;
import com.mortals.xhx.module.device.service.DeviceAlarmService;
import com.mortals.xhx.module.device.service.DeviceLogService;
import com.mortals.xhx.module.device.service.DeviceService;
import lombok.extern.apachecommons.CommonsLog;
......@@ -46,6 +50,9 @@ public class DeviceStatTaskImpl implements ITaskExcuteService {
@Autowired
private SendTaskThreadPool sendTaskThreadPool;
@Autowired
private DeviceAlarmService deviceAlarmService;
@Override
public void excuteTask(ITask task) throws AppException {
......@@ -76,14 +83,27 @@ public class DeviceStatTaskImpl implements ITaskExcuteService {
//更新设备下线
device.setOfflineTime(new Date());
device.setDeviceOnlineStatus(DeviceOnlineStatusEnum.离线.getValue());
// deviceService.update(device);
WebSocketUtil.broadcast(SendToAllRequest.TYPE, new SendToAllRequest().setContent(JSON.toJSONString(device)));
return device;
}
return null;
}).filter(f->f!=null).collect(Collectors.toList());
deviceService.update(collect,null);
List<DeviceAlarmEntity> alarmEntityList = collect.stream().map(device -> {
//新增告警信息
DeviceAlarmEntity deviceAlarmEntity = new DeviceAlarmEntity();
deviceAlarmEntity.initAttrValue();
deviceAlarmEntity.setDeviceId(device.getId());
deviceAlarmEntity.setDeviceCode(device.getDeviceCode());
deviceAlarmEntity.setAlarmType(AlarmTypeEnum.离线.getValue());
deviceAlarmEntity.setAlarmLevel(AlarmLevelEnum.一般.getValue());
deviceAlarmEntity.setAlarmTime(new Date());
deviceAlarmEntity.setAlarmContent("当前设备已离线,请注意!");
deviceAlarmEntity.setCreateTime(new Date());
deviceAlarmEntity.setCreateUserId(1L);
return deviceAlarmEntity;
}).collect(Collectors.toList());
deviceAlarmService.save(alarmEntityList);
} catch (Exception e) {
log.error("更新设备状态任务异常,结束执行", e);
}
......
package com.mortals.xhx.module.device.dao;
import com.mortals.framework.dao.ICRUDDao;
import com.mortals.xhx.module.device.model.DeviceAlarmEntity;
import java.util.List;
/**
* 设备告警日志Dao
* 设备告警日志 DAO接口
*
* @author zxfei
* @date 2022-08-04
*/
public interface DeviceAlarmDao extends ICRUDDao<DeviceAlarmEntity,Long>{
}
package com.mortals.xhx.module.device.dao.ibatis;
import org.springframework.stereotype.Repository;
import com.mortals.xhx.module.device.dao.DeviceAlarmDao;
import com.mortals.xhx.module.device.model.DeviceAlarmEntity;
import java.util.Date;
import com.mortals.framework.dao.ibatis.BaseCRUDDaoMybatis;
import java.util.List;
/**
* 设备告警日志DaoImpl DAO接口
*
* @author zxfei
* @date 2022-08-04
*/
@Repository("deviceAlarmDao")
public class DeviceAlarmDaoImpl extends BaseCRUDDaoMybatis<DeviceAlarmEntity,Long> implements DeviceAlarmDao {
}
package com.mortals.xhx.module.device.model;
import java.util.Date;
import java.util.List;
import java.util.ArrayList;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.mortals.framework.annotation.Excel;
import com.mortals.framework.model.BaseEntityLong;
import com.mortals.xhx.module.device.model.vo.DeviceAlarmVo;
/**
* 设备告警日志实体对象
*
* @author zxfei
* @date 2022-08-04
*/
public class DeviceAlarmEntity extends DeviceAlarmVo {
private static final long serialVersionUID = 1L;
/**
* 告警设备Id
*/
private Long deviceId;
/**
* 告警设备编码
*/
private String deviceCode;
/**
* 告警类型,(0.离线)
*/
private Integer alarmType;
/**
* 告警级别(0.危险,1.次要,2.一般)
*/
private Integer alarmLevel;
/**
* 告警详细内容
*/
private String alarmContent;
/**
* 告警时间
*/
@Excel(name = "告警时间", width = 30, dateFormat = "yyyy-MM-dd")
private Date alarmTime;
public DeviceAlarmEntity(){}
/**
* 获取 告警设备Id
* @return Long
*/
public Long getDeviceId(){
return deviceId;
}
/**
* 设置 告警设备Id
* @param deviceId
*/
public void setDeviceId(Long deviceId){
this.deviceId = deviceId;
}
/**
* 获取 告警设备编码
* @return String
*/
public String getDeviceCode(){
return deviceCode;
}
/**
* 设置 告警设备编码
* @param deviceCode
*/
public void setDeviceCode(String deviceCode){
this.deviceCode = deviceCode;
}
/**
* 获取 告警类型,(0.离线)
* @return Integer
*/
public Integer getAlarmType(){
return alarmType;
}
/**
* 设置 告警类型,(0.离线)
* @param alarmType
*/
public void setAlarmType(Integer alarmType){
this.alarmType = alarmType;
}
/**
* 获取 告警级别(0.危险,1.次要,2.一般)
* @return Integer
*/
public Integer getAlarmLevel(){
return alarmLevel;
}
/**
* 设置 告警级别(0.危险,1.次要,2.一般)
* @param alarmLevel
*/
public void setAlarmLevel(Integer alarmLevel){
this.alarmLevel = alarmLevel;
}
/**
* 获取 告警详细内容
* @return String
*/
public String getAlarmContent(){
return alarmContent;
}
/**
* 设置 告警详细内容
* @param alarmContent
*/
public void setAlarmContent(String alarmContent){
this.alarmContent = alarmContent;
}
/**
* 获取 告警时间
* @return Date
*/
public Date getAlarmTime(){
return alarmTime;
}
/**
* 设置 告警时间
* @param alarmTime
*/
public void setAlarmTime(Date alarmTime){
this.alarmTime = alarmTime;
}
@Override
public int hashCode() {
return this.getId().hashCode();
}
@Override
public boolean equals(Object obj) {
if (obj == null) return false;
if (obj instanceof DeviceAlarmEntity) {
DeviceAlarmEntity tmp = (DeviceAlarmEntity) obj;
if (this.getId() == tmp.getId()) {
return true;
}
}
return false;
}
public String toString(){
StringBuilder sb = new StringBuilder("");
sb.append(",deviceId:").append(getDeviceId());
sb.append(",deviceCode:").append(getDeviceCode());
sb.append(",alarmType:").append(getAlarmType());
sb.append(",alarmLevel:").append(getAlarmLevel());
sb.append(",alarmContent:").append(getAlarmContent());
sb.append(",alarmTime:").append(getAlarmTime());
return sb.toString();
}
public void initAttrValue(){
this.deviceId = null;
this.deviceCode = "";
this.alarmType = null;
this.alarmLevel = null;
this.alarmContent = "";
this.alarmTime = null;
}
}
\ No newline at end of file
package com.mortals.xhx.module.device.model;
import java.util.Date;
import java.util.List;
import com.mortals.xhx.module.device.model.DeviceAlarmEntity;
/**
* 设备告警日志查询对象
*
* @author zxfei
* @date 2022-08-04
*/
public class DeviceAlarmQuery extends DeviceAlarmEntity {
/** 开始 主键ID,主键,自增长 */
private Long idStart;
/** 结束 主键ID,主键,自增长 */
private Long idEnd;
/** 增加 主键ID,主键,自增长 */
private Long idIncrement;
/** 主键ID,主键,自增长列表 */
private List <Long> idList;
/** 开始 告警设备Id */
private Long deviceIdStart;
/** 结束 告警设备Id */
private Long deviceIdEnd;
/** 增加 告警设备Id */
private Long deviceIdIncrement;
/** 告警设备Id列表 */
private List <Long> deviceIdList;
/** 告警设备编码 */
private List<String> deviceCodeList;
/** 开始 告警类型,(0.离线) */
private Integer alarmTypeStart;
/** 结束 告警类型,(0.离线) */
private Integer alarmTypeEnd;
/** 增加 告警类型,(0.离线) */
private Integer alarmTypeIncrement;
/** 告警类型,(0.离线)列表 */
private List <Integer> alarmTypeList;
/** 开始 告警级别(0.危险,1.次要,2.一般) */
private Integer alarmLevelStart;
/** 结束 告警级别(0.危险,1.次要,2.一般) */
private Integer alarmLevelEnd;
/** 增加 告警级别(0.危险,1.次要,2.一般) */
private Integer alarmLevelIncrement;
/** 告警级别(0.危险,1.次要,2.一般)列表 */
private List <Integer> alarmLevelList;
/** 告警详细内容 */
private List<String> alarmContentList;
/** 开始 告警时间 */
private String alarmTimeStart;
/** 结束 告警时间 */
private String alarmTimeEnd;
/** 开始 创建时间 */
private String createTimeStart;
/** 结束 创建时间 */
private String createTimeEnd;
/** 开始 更新用户 */
private Long updateUserIdStart;
/** 结束 更新用户 */
private Long updateUserIdEnd;
/** 增加 更新用户 */
private Long updateUserIdIncrement;
/** 更新用户列表 */
private List <Long> updateUserIdList;
/** 开始 更新时间 */
private String updateTimeStart;
/** 结束 更新时间 */
private String updateTimeEnd;
/** OR条件集合,列表项之间是OR,项内容之间是AND,如:(list[0].1 and list[0].2) or (list[1].3 and list[1].4) */
private List<DeviceAlarmQuery> orConditionList;
/** AND条件集合,列表项之间是AND,项内容之间是OR,如:(list[0].1 or list[0].2) and (list[1].3 or list[1].4) */
private List<DeviceAlarmQuery> andConditionList;
public DeviceAlarmQuery(){}
/**
* 获取 开始 主键ID,主键,自增长
* @return idStart
*/
public Long getIdStart(){
return this.idStart;
}
/**
* 设置 开始 主键ID,主键,自增长
* @param idStart
*/
public void setIdStart(Long idStart){
this.idStart = idStart;
}
/**
* 获取 结束 主键ID,主键,自增长
* @return $idEnd
*/
public Long getIdEnd(){
return this.idEnd;
}
/**
* 设置 结束 主键ID,主键,自增长
* @param idEnd
*/
public void setIdEnd(Long idEnd){
this.idEnd = idEnd;
}
/**
* 获取 增加 主键ID,主键,自增长
* @return idIncrement
*/
public Long getIdIncrement(){
return this.idIncrement;
}
/**
* 设置 增加 主键ID,主键,自增长
* @param idIncrement
*/
public void setIdIncrement(Long idIncrement){
this.idIncrement = idIncrement;
}
/**
* 获取 主键ID,主键,自增长
* @return idList
*/
public List<Long> getIdList(){
return this.idList;
}
/**
* 设置 主键ID,主键,自增长
* @param idList
*/
public void setIdList(List<Long> idList){
this.idList = idList;
}
/**
* 获取 开始 告警设备Id
* @return deviceIdStart
*/
public Long getDeviceIdStart(){
return this.deviceIdStart;
}
/**
* 设置 开始 告警设备Id
* @param deviceIdStart
*/
public void setDeviceIdStart(Long deviceIdStart){
this.deviceIdStart = deviceIdStart;
}
/**
* 获取 结束 告警设备Id
* @return $deviceIdEnd
*/
public Long getDeviceIdEnd(){
return this.deviceIdEnd;
}
/**
* 设置 结束 告警设备Id
* @param deviceIdEnd
*/
public void setDeviceIdEnd(Long deviceIdEnd){
this.deviceIdEnd = deviceIdEnd;
}
/**
* 获取 增加 告警设备Id
* @return deviceIdIncrement
*/
public Long getDeviceIdIncrement(){
return this.deviceIdIncrement;
}
/**
* 设置 增加 告警设备Id
* @param deviceIdIncrement
*/
public void setDeviceIdIncrement(Long deviceIdIncrement){
this.deviceIdIncrement = deviceIdIncrement;
}
/**
* 获取 告警设备Id
* @return deviceIdList
*/
public List<Long> getDeviceIdList(){
return this.deviceIdList;
}
/**
* 设置 告警设备Id
* @param deviceIdList
*/
public void setDeviceIdList(List<Long> deviceIdList){
this.deviceIdList = deviceIdList;
}
/**
* 获取 告警设备编码
* @return deviceCodeList
*/
public List<String> getDeviceCodeList(){
return this.deviceCodeList;
}
/**
* 设置 告警设备编码
* @param deviceCodeList
*/
public void setDeviceCodeList(List<String> deviceCodeList){
this.deviceCodeList = deviceCodeList;
}
/**
* 获取 开始 告警类型,(0.离线)
* @return alarmTypeStart
*/
public Integer getAlarmTypeStart(){
return this.alarmTypeStart;
}
/**
* 设置 开始 告警类型,(0.离线)
* @param alarmTypeStart
*/
public void setAlarmTypeStart(Integer alarmTypeStart){
this.alarmTypeStart = alarmTypeStart;
}
/**
* 获取 结束 告警类型,(0.离线)
* @return $alarmTypeEnd
*/
public Integer getAlarmTypeEnd(){
return this.alarmTypeEnd;
}
/**
* 设置 结束 告警类型,(0.离线)
* @param alarmTypeEnd
*/
public void setAlarmTypeEnd(Integer alarmTypeEnd){
this.alarmTypeEnd = alarmTypeEnd;
}
/**
* 获取 增加 告警类型,(0.离线)
* @return alarmTypeIncrement
*/
public Integer getAlarmTypeIncrement(){
return this.alarmTypeIncrement;
}
/**
* 设置 增加 告警类型,(0.离线)
* @param alarmTypeIncrement
*/
public void setAlarmTypeIncrement(Integer alarmTypeIncrement){
this.alarmTypeIncrement = alarmTypeIncrement;
}
/**
* 获取 告警类型,(0.离线)
* @return alarmTypeList
*/
public List<Integer> getAlarmTypeList(){
return this.alarmTypeList;
}
/**
* 设置 告警类型,(0.离线)
* @param alarmTypeList
*/
public void setAlarmTypeList(List<Integer> alarmTypeList){
this.alarmTypeList = alarmTypeList;
}
/**
* 获取 开始 告警级别(0.危险,1.次要,2.一般)
* @return alarmLevelStart
*/
public Integer getAlarmLevelStart(){
return this.alarmLevelStart;
}
/**
* 设置 开始 告警级别(0.危险,1.次要,2.一般)
* @param alarmLevelStart
*/
public void setAlarmLevelStart(Integer alarmLevelStart){
this.alarmLevelStart = alarmLevelStart;
}
/**
* 获取 结束 告警级别(0.危险,1.次要,2.一般)
* @return $alarmLevelEnd
*/
public Integer getAlarmLevelEnd(){
return this.alarmLevelEnd;
}
/**
* 设置 结束 告警级别(0.危险,1.次要,2.一般)
* @param alarmLevelEnd
*/
public void setAlarmLevelEnd(Integer alarmLevelEnd){
this.alarmLevelEnd = alarmLevelEnd;
}
/**
* 获取 增加 告警级别(0.危险,1.次要,2.一般)
* @return alarmLevelIncrement
*/
public Integer getAlarmLevelIncrement(){
return this.alarmLevelIncrement;
}
/**
* 设置 增加 告警级别(0.危险,1.次要,2.一般)
* @param alarmLevelIncrement
*/
public void setAlarmLevelIncrement(Integer alarmLevelIncrement){
this.alarmLevelIncrement = alarmLevelIncrement;
}
/**
* 获取 告警级别(0.危险,1.次要,2.一般)
* @return alarmLevelList
*/
public List<Integer> getAlarmLevelList(){
return this.alarmLevelList;
}
/**
* 设置 告警级别(0.危险,1.次要,2.一般)
* @param alarmLevelList
*/
public void setAlarmLevelList(List<Integer> alarmLevelList){
this.alarmLevelList = alarmLevelList;
}
/**
* 获取 告警详细内容
* @return alarmContentList
*/
public List<String> getAlarmContentList(){
return this.alarmContentList;
}
/**
* 设置 告警详细内容
* @param alarmContentList
*/
public void setAlarmContentList(List<String> alarmContentList){
this.alarmContentList = alarmContentList;
}
/**
* 获取 开始 告警时间
* @return alarmTimeStart
*/
public String getAlarmTimeStart(){
return this.alarmTimeStart;
}
/**
* 设置 开始 告警时间
* @param alarmTimeStart
*/
public void setAlarmTimeStart(String alarmTimeStart){
this.alarmTimeStart = alarmTimeStart;
}
/**
* 获取 结束 告警时间
* @return alarmTimeEnd
*/
public String getAlarmTimeEnd(){
return this.alarmTimeEnd;
}
/**
* 设置 结束 告警时间
* @param alarmTimeEnd
*/
public void setAlarmTimeEnd(String alarmTimeEnd){
this.alarmTimeEnd = alarmTimeEnd;
}
/**
* 获取 开始 创建时间
* @return createTimeStart
*/
public String getCreateTimeStart(){
return this.createTimeStart;
}
/**
* 设置 开始 创建时间
* @param createTimeStart
*/
public void setCreateTimeStart(String createTimeStart){
this.createTimeStart = createTimeStart;
}
/**
* 获取 结束 创建时间
* @return createTimeEnd
*/
public String getCreateTimeEnd(){
return this.createTimeEnd;
}
/**
* 设置 结束 创建时间
* @param createTimeEnd
*/
public void setCreateTimeEnd(String createTimeEnd){
this.createTimeEnd = createTimeEnd;
}
/**
* 获取 开始 更新用户
* @return updateUserIdStart
*/
public Long getUpdateUserIdStart(){
return this.updateUserIdStart;
}
/**
* 设置 开始 更新用户
* @param updateUserIdStart
*/
public void setUpdateUserIdStart(Long updateUserIdStart){
this.updateUserIdStart = updateUserIdStart;
}
/**
* 获取 结束 更新用户
* @return $updateUserIdEnd
*/
public Long getUpdateUserIdEnd(){
return this.updateUserIdEnd;
}
/**
* 设置 结束 更新用户
* @param updateUserIdEnd
*/
public void setUpdateUserIdEnd(Long updateUserIdEnd){
this.updateUserIdEnd = updateUserIdEnd;
}
/**
* 获取 增加 更新用户
* @return updateUserIdIncrement
*/
public Long getUpdateUserIdIncrement(){
return this.updateUserIdIncrement;
}
/**
* 设置 增加 更新用户
* @param updateUserIdIncrement
*/
public void setUpdateUserIdIncrement(Long updateUserIdIncrement){
this.updateUserIdIncrement = updateUserIdIncrement;
}
/**
* 获取 更新用户
* @return updateUserIdList
*/
public List<Long> getUpdateUserIdList(){
return this.updateUserIdList;
}
/**
* 设置 更新用户
* @param updateUserIdList
*/
public void setUpdateUserIdList(List<Long> updateUserIdList){
this.updateUserIdList = updateUserIdList;
}
/**
* 获取 开始 更新时间
* @return updateTimeStart
*/
public String getUpdateTimeStart(){
return this.updateTimeStart;
}
/**
* 设置 开始 更新时间
* @param updateTimeStart
*/
public void setUpdateTimeStart(String updateTimeStart){
this.updateTimeStart = updateTimeStart;
}
/**
* 获取 结束 更新时间
* @return updateTimeEnd
*/
public String getUpdateTimeEnd(){
return this.updateTimeEnd;
}
/**
* 设置 结束 更新时间
* @param updateTimeEnd
*/
public void setUpdateTimeEnd(String updateTimeEnd){
this.updateTimeEnd = updateTimeEnd;
}
/**
* 设置 主键ID,主键,自增长
* @param id
*/
public DeviceAlarmQuery id(Long id){
setId(id);
return this;
}
/**
* 设置 开始 主键ID,主键,自增长
* @param idStart
*/
public DeviceAlarmQuery idStart(Long idStart){
this.idStart = idStart;
return this;
}
/**
* 设置 结束 主键ID,主键,自增长
* @param idEnd
*/
public DeviceAlarmQuery idEnd(Long idEnd){
this.idEnd = idEnd;
return this;
}
/**
* 设置 增加 主键ID,主键,自增长
* @param idIncrement
*/
public DeviceAlarmQuery idIncrement(Long idIncrement){
this.idIncrement = idIncrement;
return this;
}
/**
* 设置 主键ID,主键,自增长
* @param idList
*/
public DeviceAlarmQuery idList(List<Long> idList){
this.idList = idList;
return this;
}
/**
* 设置 告警设备Id
* @param deviceId
*/
public DeviceAlarmQuery deviceId(Long deviceId){
setDeviceId(deviceId);
return this;
}
/**
* 设置 开始 告警设备Id
* @param deviceIdStart
*/
public DeviceAlarmQuery deviceIdStart(Long deviceIdStart){
this.deviceIdStart = deviceIdStart;
return this;
}
/**
* 设置 结束 告警设备Id
* @param deviceIdEnd
*/
public DeviceAlarmQuery deviceIdEnd(Long deviceIdEnd){
this.deviceIdEnd = deviceIdEnd;
return this;
}
/**
* 设置 增加 告警设备Id
* @param deviceIdIncrement
*/
public DeviceAlarmQuery deviceIdIncrement(Long deviceIdIncrement){
this.deviceIdIncrement = deviceIdIncrement;
return this;
}
/**
* 设置 告警设备Id
* @param deviceIdList
*/
public DeviceAlarmQuery deviceIdList(List<Long> deviceIdList){
this.deviceIdList = deviceIdList;
return this;
}
/**
* 设置 告警设备编码
* @param deviceCode
*/
public DeviceAlarmQuery deviceCode(String deviceCode){
setDeviceCode(deviceCode);
return this;
}
/**
* 设置 告警设备编码
* @param deviceCodeList
*/
public DeviceAlarmQuery deviceCodeList(List<String> deviceCodeList){
this.deviceCodeList = deviceCodeList;
return this;
}
/**
* 设置 告警类型,(0.离线)
* @param alarmType
*/
public DeviceAlarmQuery alarmType(Integer alarmType){
setAlarmType(alarmType);
return this;
}
/**
* 设置 开始 告警类型,(0.离线)
* @param alarmTypeStart
*/
public DeviceAlarmQuery alarmTypeStart(Integer alarmTypeStart){
this.alarmTypeStart = alarmTypeStart;
return this;
}
/**
* 设置 结束 告警类型,(0.离线)
* @param alarmTypeEnd
*/
public DeviceAlarmQuery alarmTypeEnd(Integer alarmTypeEnd){
this.alarmTypeEnd = alarmTypeEnd;
return this;
}
/**
* 设置 增加 告警类型,(0.离线)
* @param alarmTypeIncrement
*/
public DeviceAlarmQuery alarmTypeIncrement(Integer alarmTypeIncrement){
this.alarmTypeIncrement = alarmTypeIncrement;
return this;
}
/**
* 设置 告警类型,(0.离线)
* @param alarmTypeList
*/
public DeviceAlarmQuery alarmTypeList(List<Integer> alarmTypeList){
this.alarmTypeList = alarmTypeList;
return this;
}
/**
* 设置 告警级别(0.危险,1.次要,2.一般)
* @param alarmLevel
*/
public DeviceAlarmQuery alarmLevel(Integer alarmLevel){
setAlarmLevel(alarmLevel);
return this;
}
/**
* 设置 开始 告警级别(0.危险,1.次要,2.一般)
* @param alarmLevelStart
*/
public DeviceAlarmQuery alarmLevelStart(Integer alarmLevelStart){
this.alarmLevelStart = alarmLevelStart;
return this;
}
/**
* 设置 结束 告警级别(0.危险,1.次要,2.一般)
* @param alarmLevelEnd
*/
public DeviceAlarmQuery alarmLevelEnd(Integer alarmLevelEnd){
this.alarmLevelEnd = alarmLevelEnd;
return this;
}
/**
* 设置 增加 告警级别(0.危险,1.次要,2.一般)
* @param alarmLevelIncrement
*/
public DeviceAlarmQuery alarmLevelIncrement(Integer alarmLevelIncrement){
this.alarmLevelIncrement = alarmLevelIncrement;
return this;
}
/**
* 设置 告警级别(0.危险,1.次要,2.一般)
* @param alarmLevelList
*/
public DeviceAlarmQuery alarmLevelList(List<Integer> alarmLevelList){
this.alarmLevelList = alarmLevelList;
return this;
}
/**
* 设置 告警详细内容
* @param alarmContent
*/
public DeviceAlarmQuery alarmContent(String alarmContent){
setAlarmContent(alarmContent);
return this;
}
/**
* 设置 告警详细内容
* @param alarmContentList
*/
public DeviceAlarmQuery alarmContentList(List<String> alarmContentList){
this.alarmContentList = alarmContentList;
return this;
}
/**
* 设置 更新用户
* @param updateUserId
*/
public DeviceAlarmQuery updateUserId(Long updateUserId){
setUpdateUserId(updateUserId);
return this;
}
/**
* 设置 开始 更新用户
* @param updateUserIdStart
*/
public DeviceAlarmQuery updateUserIdStart(Long updateUserIdStart){
this.updateUserIdStart = updateUserIdStart;
return this;
}
/**
* 设置 结束 更新用户
* @param updateUserIdEnd
*/
public DeviceAlarmQuery updateUserIdEnd(Long updateUserIdEnd){
this.updateUserIdEnd = updateUserIdEnd;
return this;
}
/**
* 设置 增加 更新用户
* @param updateUserIdIncrement
*/
public DeviceAlarmQuery updateUserIdIncrement(Long updateUserIdIncrement){
this.updateUserIdIncrement = updateUserIdIncrement;
return this;
}
/**
* 设置 更新用户
* @param updateUserIdList
*/
public DeviceAlarmQuery updateUserIdList(List<Long> updateUserIdList){
this.updateUserIdList = updateUserIdList;
return this;
}
/**
* 获取 OR条件集合,列表项之间是OR,项内容之间是AND,如:(list[0].1 and list[0].2) or (list[1].3 and list[1].4)
* @return orConditionList
*/
public List<DeviceAlarmQuery> getOrConditionList(){
return this.orConditionList;
}
/**
* 设置 OR条件集合,列表项之间是OR,项内容之间是AND,如:(list[0].1 and list[0].2) or (list[1].3 and list[1].4)
* @param orConditionList
*/
public void setOrConditionList(List<DeviceAlarmQuery> orConditionList){
this.orConditionList = orConditionList;
}
/**
* 获取 AND条件集合,列表项之间是AND,项内容之间是OR,如:(list[0].1 or list[0].2) and (list[1].3 or list[1].4)
* @return andConditionList
*/
public List<DeviceAlarmQuery> getAndConditionList(){
return this.andConditionList;
}
/**
* 设置 AND条件集合,列表项之间是AND,项内容之间是OR,如:(list[0].1 or list[0].2) and (list[1].3 or list[1].4)
* @param andConditionList
*/
public void setAndConditionList(List<DeviceAlarmQuery> andConditionList){
this.andConditionList = andConditionList;
}
}
\ No newline at end of file
package com.mortals.xhx.module.device.model.vo;
import com.mortals.framework.model.BaseEntityLong;
import com.mortals.xhx.module.device.model.DeviceAlarmEntity;
import lombok.Data;
import java.util.ArrayList;
import java.util.List;
/**
* 设备告警日志视图对象
*
* @author zxfei
* @date 2022-08-04
*/
@Data
public class DeviceAlarmVo extends BaseEntityLong {
/**
* 站点编号
*/
private String siteNum;
/**
* 站点名称
*/
private String siteName;
private String deviceCode;
private String deviceType;
}
\ No newline at end of file
......@@ -14,4 +14,5 @@ import java.util.List;
@Data
public class DeviceVo extends BaseEntityLong {
}
\ No newline at end of file
package com.mortals.xhx.module.device.service;
import com.mortals.framework.service.ICRUDService;
import com.mortals.xhx.module.device.model.DeviceAlarmEntity;
/**
* DeviceAlarmService
*
* 设备告警日志 service接口
*
* @author zxfei
* @date 2022-08-04
*/
public interface DeviceAlarmService extends ICRUDService<DeviceAlarmEntity,Long>{
}
\ No newline at end of file
package com.mortals.xhx.module.device.service;
import com.mortals.framework.model.Context;
import com.mortals.framework.service.ICRUDCacheService;
import com.mortals.xhx.module.device.model.DeviceEntity;
/**
* DeviceService
*
......@@ -11,4 +13,7 @@ import com.mortals.xhx.module.device.model.DeviceEntity;
*/
public interface DeviceService extends ICRUDCacheService<DeviceEntity,Long>{
void action(Long id, Integer type, Context context);
}
\ No newline at end of file
package com.mortals.xhx.module.device.service.impl;
import com.mortals.framework.model.PageInfo;
import com.mortals.xhx.common.code.DeviceTypeEnum;
import com.mortals.xhx.module.device.model.DeviceEntity;
import com.mortals.xhx.module.device.service.DeviceService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.mortals.framework.service.impl.AbstractCRUDServiceImpl;
import com.mortals.framework.exception.AppException;
import com.mortals.framework.model.Context;
import com.mortals.xhx.module.device.dao.DeviceAlarmDao;
import com.mortals.xhx.module.device.model.DeviceAlarmEntity;
import com.mortals.xhx.module.device.service.DeviceAlarmService;
import java.util.List;
/**
* DeviceAlarmService
* 设备告警日志 service实现
*
* @author zxfei
* @date 2022-08-04
*/
@Service("deviceAlarmService")
public class DeviceAlarmServiceImpl extends AbstractCRUDServiceImpl<DeviceAlarmDao, DeviceAlarmEntity, Long> implements DeviceAlarmService {
@Autowired
private DeviceService deviceService;
@Override
protected void findAfter(DeviceAlarmEntity params, PageInfo pageInfo, Context context, List<DeviceAlarmEntity> list) throws AppException {
list.forEach(item -> {
DeviceEntity deviceEntity = deviceService.get(item.getDeviceId());
item.setSiteName(deviceEntity.getSiteName());
item.setSiteNum(deviceEntity.getSiteNum());
item.setDeviceType(DeviceTypeEnum.getByValue(deviceEntity.getDeviceType()).getDesc());
});
super.findAfter(params, pageInfo, context, list);
}
}
\ No newline at end of file
package com.mortals.xhx.module.device.service.impl;
import com.mortals.framework.exception.AppException;
import com.mortals.framework.model.Context;
import com.mortals.framework.service.ICacheService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.mortals.framework.service.impl.AbstractCRUDCacheServiceImpl;
import com.mortals.xhx.module.device.dao.DeviceDao;
......@@ -8,16 +11,20 @@ import com.mortals.xhx.module.device.model.DeviceEntity;
import com.mortals.xhx.module.device.service.DeviceService;
import org.springframework.util.ObjectUtils;
import static com.mortals.xhx.common.key.RedisKey.KEY_DEVICE_TYPE_CACHE;
/**
* DeviceService
* 设备 service实现
*
* @author zxfei
* @date 2022-03-09
*/
* DeviceService
* 设备 service实现
*
* @author zxfei
* @date 2022-03-09
*/
@Service("deviceService")
public class DeviceServiceImpl extends AbstractCRUDCacheServiceImpl<DeviceDao, DeviceEntity, Long> implements DeviceService {
@Autowired
private ICacheService cacheService;
@Override
protected String getExtKey(DeviceEntity data) {
......@@ -27,9 +34,17 @@ public class DeviceServiceImpl extends AbstractCRUDCacheServiceImpl<DeviceDao, D
@Override
protected void saveBefore(DeviceEntity entity, Context context) throws AppException {
if(ObjectUtils.isEmpty(entity.getDeviceCode())){
if (ObjectUtils.isEmpty(entity.getDeviceCode())) {
entity.setDeviceCode(entity.getDeviceMac());
}
super.saveBefore(entity, context);
}
@Override
public void action(Long id, Integer type, Context context) {
DeviceEntity deviceEntity = this.get(id, context);
if (!ObjectUtils.isEmpty(deviceEntity)) {
cacheService.set(KEY_DEVICE_TYPE_CACHE + deviceEntity.getDeviceCode(), type);
}
}
}
\ No newline at end of file
package com.mortals.xhx.module.device.web;
import com.mortals.framework.web.BaseCRUDJsonBodyMappingController;
import com.mortals.xhx.base.system.param.service.ParamService;
import com.mortals.xhx.common.code.AlarmLevelEnum;
import com.mortals.xhx.common.code.AlarmTypeEnum;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import com.mortals.framework.model.Context;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.mortals.framework.web.BaseCRUDJsonBodyMappingController;
import com.mortals.xhx.module.device.model.DeviceAlarmEntity;
import com.mortals.xhx.module.device.service.DeviceAlarmService;
import org.apache.commons.lang3.ArrayUtils;
import com.mortals.framework.util.StringUtils;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import com.alibaba.fastjson.JSONObject;
import java.util.Arrays;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import static com.mortals.framework.ap.SysConstains.*;
/**
*
* 设备告警日志
*
* @author zxfei
* @date 2022-08-04
*/
@RestController
@RequestMapping("device/alarm")
public class DeviceAlarmController extends BaseCRUDJsonBodyMappingController<DeviceAlarmService,DeviceAlarmEntity,Long> {
@Autowired
private ParamService paramService;
public DeviceAlarmController(){
super.setModuleDesc( "设备告警日志");
}
@Override
protected void init(Map<String, Object> model, Context context) {
this.addDict(model, "alarmType", AlarmTypeEnum.getEnumMap());
this.addDict(model, "alarmLevel", AlarmLevelEnum.getEnumMap());
super.init(model, context);
}
}
\ No newline at end of file
package com.mortals.xhx.module.device.web;
import com.mortals.framework.annotation.UnAuth;
import com.mortals.framework.common.Rest;
import com.mortals.framework.exception.AppException;
import com.mortals.framework.model.OrderCol;
import com.mortals.framework.model.Result;
import com.mortals.framework.web.BaseCRUDJsonBodyMappingController;
import com.mortals.xhx.base.system.param.service.ParamService;
import com.mortals.xhx.common.code.DeviceActionEnum;
import com.mortals.xhx.common.code.DeviceOnlineStatusEnum;
import com.mortals.xhx.common.code.DeviceTypeEnum;
import com.mortals.xhx.module.firm.model.FirmQuery;
......@@ -77,6 +79,27 @@ public class DeviceController extends BaseCRUDJsonMappingController<DeviceServic
return ret.toJSONString();
}
/**
* 设备执行功能
*/
@PostMapping(value = "execmd")
public Rest<Void> deviceExecCmd(@RequestParam(value = "id") Long id,
@RequestParam(value = "type") Integer type) {
String busiDesc = this.getModuleDesc() + "设备执行"+ DeviceActionEnum.getByValue(type).getDesc();
Rest<Void> rest = Rest.ok(busiDesc + " 【成功】");
try {
this.service.action(id,type,getContext());
recordSysLog(request, busiDesc + " 【成功】");
} catch (Exception e) {
log.error("设备执行命令异常", e);
rest = Rest.fail(super.convertException(e));
}
return rest;
}
@Override
protected void doListBefore(HttpServletRequest request, HttpServletResponse response, DeviceForm form, Map<String, Object> model, Context context) throws AppException {
form.getQuery().setOrderColList(new ArrayList<OrderCol>() {
......
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"mybatis-3-mapper.dtd">
<mapper namespace="com.mortals.xhx.module.device.dao.ibatis.DeviceAlarmDaoImpl">
<!-- 字段和属性映射 -->
<resultMap type="DeviceAlarmEntity" id="DeviceAlarmEntity-Map">
<id property="id" column="id" />
<result property="deviceId" column="deviceId" />
<result property="deviceCode" column="deviceCode" />
<result property="alarmType" column="alarmType" />
<result property="alarmLevel" column="alarmLevel" />
<result property="alarmContent" column="alarmContent" />
<result property="alarmTime" column="alarmTime" />
<result property="createTime" column="createTime" />
<result property="updateUserId" column="updateUserId" />
<result property="updateTime" column="updateTime" />
</resultMap>
<!-- 表所有列 -->
<sql id="_columns">
<trim suffixOverrides="," suffix="">
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('id') or colPickMode == 1 and data.containsKey('id')))">
a.id,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('deviceId') or colPickMode == 1 and data.containsKey('deviceId')))">
a.deviceId,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('deviceCode') or colPickMode == 1 and data.containsKey('deviceCode')))">
a.deviceCode,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('alarmType') or colPickMode == 1 and data.containsKey('alarmType')))">
a.alarmType,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('alarmLevel') or colPickMode == 1 and data.containsKey('alarmLevel')))">
a.alarmLevel,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('alarmContent') or colPickMode == 1 and data.containsKey('alarmContent')))">
a.alarmContent,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('alarmTime') or colPickMode == 1 and data.containsKey('alarmTime')))">
a.alarmTime,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('createTime') or colPickMode == 1 and data.containsKey('createTime')))">
a.createTime,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('updateUserId') or colPickMode == 1 and data.containsKey('updateUserId')))">
a.updateUserId,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('updateTime') or colPickMode == 1 and data.containsKey('updateTime')))">
a.updateTime,
</if>
</trim>
</sql>
<!-- 新增 区分主键自增加还是业务插入 -->
<insert id="insert" parameterType="DeviceAlarmEntity" useGeneratedKeys="true" keyProperty="id">
insert into mortals_xhx_device_alarm
(deviceId,deviceCode,alarmType,alarmLevel,alarmContent,alarmTime,createTime,updateUserId,updateTime)
VALUES
(#{deviceId},#{deviceCode},#{alarmType},#{alarmLevel},#{alarmContent},#{alarmTime},#{createTime},#{updateUserId},#{updateTime})
</insert>
<!-- 批量新增 -->
<insert id="insertBatch" parameterType="paramDto">
insert into mortals_xhx_device_alarm
(deviceId,deviceCode,alarmType,alarmLevel,alarmContent,alarmTime,createTime,updateUserId,updateTime)
VALUES
<foreach collection="data.dataList" item="item" index="index" separator="," >
(#{item.deviceId},#{item.deviceCode},#{item.alarmType},#{item.alarmLevel},#{item.alarmContent},#{item.alarmTime},#{item.createTime},#{item.updateUserId},#{item.updateTime})
</foreach>
</insert>
<!-- 根据ParamDto更新 -->
<update id="update" parameterType="paramDto">
update mortals_xhx_device_alarm as a
set
<trim suffixOverrides="," suffix="">
<if test="(colPickMode==0 and data.containsKey('deviceId')) or (colPickMode==1 and !data.containsKey('deviceId'))">
a.deviceId=#{data.deviceId},
</if>
<if test="(colPickMode==0 and data.containsKey('deviceIdIncrement')) or (colPickMode==1 and !data.containsKey('deviceIdIncrement'))">
a.deviceId=ifnull(a.deviceId,0) + #{data.deviceIdIncrement},
</if>
<if test="(colPickMode==0 and data.containsKey('deviceCode')) or (colPickMode==1 and !data.containsKey('deviceCode'))">
a.deviceCode=#{data.deviceCode},
</if>
<if test="(colPickMode==0 and data.containsKey('alarmType')) or (colPickMode==1 and !data.containsKey('alarmType'))">
a.alarmType=#{data.alarmType},
</if>
<if test="(colPickMode==0 and data.containsKey('alarmTypeIncrement')) or (colPickMode==1 and !data.containsKey('alarmTypeIncrement'))">
a.alarmType=ifnull(a.alarmType,0) + #{data.alarmTypeIncrement},
</if>
<if test="(colPickMode==0 and data.containsKey('alarmLevel')) or (colPickMode==1 and !data.containsKey('alarmLevel'))">
a.alarmLevel=#{data.alarmLevel},
</if>
<if test="(colPickMode==0 and data.containsKey('alarmLevelIncrement')) or (colPickMode==1 and !data.containsKey('alarmLevelIncrement'))">
a.alarmLevel=ifnull(a.alarmLevel,0) + #{data.alarmLevelIncrement},
</if>
<if test="(colPickMode==0 and data.containsKey('alarmContent')) or (colPickMode==1 and !data.containsKey('alarmContent'))">
a.alarmContent=#{data.alarmContent},
</if>
<if test="(colPickMode==0 and data.containsKey('alarmTime')) or (colPickMode==1 and !data.containsKey('alarmTime'))">
a.alarmTime=#{data.alarmTime},
</if>
<if test="(colPickMode==0 and data.containsKey('createTime')) or (colPickMode==1 and !data.containsKey('createTime'))">
a.createTime=#{data.createTime},
</if>
<if test="(colPickMode==0 and data.containsKey('updateUserId')) or (colPickMode==1 and !data.containsKey('updateUserId'))">
a.updateUserId=#{data.updateUserId},
</if>
<if test="(colPickMode==0 and data.containsKey('updateUserIdIncrement')) or (colPickMode==1 and !data.containsKey('updateUserIdIncrement'))">
a.updateUserId=ifnull(a.updateUserId,0) + #{data.updateUserIdIncrement},
</if>
<if test="(colPickMode==0 and data.containsKey('updateTime')) or (colPickMode==1 and !data.containsKey('updateTime'))">
a.updateTime=#{data.updateTime},
</if>
</trim>
<trim suffixOverrides="where" suffix="">
where
<trim prefixOverrides="and" prefix="">
<include refid="_condition_"/>
</trim>
</trim>
</update>
<!-- 批量更新 -->
<update id="updateBatch" parameterType="paramDto">
update mortals_xhx_device_alarm as a
<trim prefix="set" suffixOverrides=",">
<trim prefix="deviceId=(case" suffix="ELSE deviceId end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<choose>
<when test="(colPickMode==0 and item.containsKey('deviceId')) or (colPickMode==1 and !item.containsKey('deviceId'))">
when a.id=#{item.id} then #{item.deviceId}
</when>
<when test="(colPickMode==0 and item.containsKey('deviceIdIncrement')) or (colPickMode==1 and !item.containsKey('deviceIdIncrement'))">
when a.id=#{item.id} then ifnull(a.deviceId,0) + #{item.deviceIdIncrement}
</when>
</choose>
</foreach>
</trim>
<trim prefix="deviceCode=(case" suffix="ELSE deviceCode end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<if test="(colPickMode==0 and item.containsKey('deviceCode')) or (colPickMode==1 and !item.containsKey('deviceCode'))">
when a.id=#{item.id} then #{item.deviceCode}
</if>
</foreach>
</trim>
<trim prefix="alarmType=(case" suffix="ELSE alarmType end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<choose>
<when test="(colPickMode==0 and item.containsKey('alarmType')) or (colPickMode==1 and !item.containsKey('alarmType'))">
when a.id=#{item.id} then #{item.alarmType}
</when>
<when test="(colPickMode==0 and item.containsKey('alarmTypeIncrement')) or (colPickMode==1 and !item.containsKey('alarmTypeIncrement'))">
when a.id=#{item.id} then ifnull(a.alarmType,0) + #{item.alarmTypeIncrement}
</when>
</choose>
</foreach>
</trim>
<trim prefix="alarmLevel=(case" suffix="ELSE alarmLevel end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<choose>
<when test="(colPickMode==0 and item.containsKey('alarmLevel')) or (colPickMode==1 and !item.containsKey('alarmLevel'))">
when a.id=#{item.id} then #{item.alarmLevel}
</when>
<when test="(colPickMode==0 and item.containsKey('alarmLevelIncrement')) or (colPickMode==1 and !item.containsKey('alarmLevelIncrement'))">
when a.id=#{item.id} then ifnull(a.alarmLevel,0) + #{item.alarmLevelIncrement}
</when>
</choose>
</foreach>
</trim>
<trim prefix="alarmContent=(case" suffix="ELSE alarmContent end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<if test="(colPickMode==0 and item.containsKey('alarmContent')) or (colPickMode==1 and !item.containsKey('alarmContent'))">
when a.id=#{item.id} then #{item.alarmContent}
</if>
</foreach>
</trim>
<trim prefix="alarmTime=(case" suffix="ELSE alarmTime end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<if test="(colPickMode==0 and item.containsKey('alarmTime')) or (colPickMode==1 and !item.containsKey('alarmTime'))">
when a.id=#{item.id} then #{item.alarmTime}
</if>
</foreach>
</trim>
<trim prefix="createTime=(case" suffix="ELSE createTime end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<if test="(colPickMode==0 and item.containsKey('createTime')) or (colPickMode==1 and !item.containsKey('createTime'))">
when a.id=#{item.id} then #{item.createTime}
</if>
</foreach>
</trim>
<trim prefix="updateUserId=(case" suffix="ELSE updateUserId end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<choose>
<when test="(colPickMode==0 and item.containsKey('updateUserId')) or (colPickMode==1 and !item.containsKey('updateUserId'))">
when a.id=#{item.id} then #{item.updateUserId}
</when>
<when test="(colPickMode==0 and item.containsKey('updateUserIdIncrement')) or (colPickMode==1 and !item.containsKey('updateUserIdIncrement'))">
when a.id=#{item.id} then ifnull(a.updateUserId,0) + #{item.updateUserIdIncrement}
</when>
</choose>
</foreach>
</trim>
<trim prefix="updateTime=(case" suffix="ELSE updateTime end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<if test="(colPickMode==0 and item.containsKey('updateTime')) or (colPickMode==1 and !item.containsKey('updateTime'))">
when a.id=#{item.id} then #{item.updateTime}
</if>
</foreach>
</trim>
</trim>
where id in
<foreach collection="data.dataList" item="item" index="index" open="(" separator="," close=")">
#{item.id}
</foreach>
</update>
<!-- 根据主健查询 -->
<select id="getByKey" parameterType="paramDto" resultMap="DeviceAlarmEntity-Map">
select <include refid="_columns"/>
from mortals_xhx_device_alarm as a
where a.id=#{condition.id}
</select>
<!-- 根据主健删除 -->
<delete id="deleteByKey" parameterType="paramDto">
delete a.* from mortals_xhx_device_alarm as a where a.id=#{condition.id}
</delete>
<!-- 根据主健删除一批,针对单一主健有效 -->
<delete id="deleteByKeys">
delete from mortals_xhx_device_alarm where id in
<foreach collection="array" item="item" index="index" open="(" separator="," close=")">
#{item}
</foreach>
</delete>
<!-- 根据paramDto删除一批 -->
<delete id="deleteByMap" parameterType="paramDto">
delete a.* from mortals_xhx_device_alarm as a
<trim suffixOverrides="where" suffix="">
where
<trim prefixOverrides="and" prefix="">
<include refid="_condition_"/>
</trim>
</trim>
</delete>
<!-- 获取列表 -->
<select id="getList" parameterType="paramDto" resultMap="DeviceAlarmEntity-Map">
select <include refid="_columns"/>
from mortals_xhx_device_alarm as a
<trim suffixOverrides="where" suffix="">
where
<trim prefixOverrides="and" prefix="">
<include refid="_condition_"/>
</trim>
</trim>
<include refid="_orderCols_"/>
</select>
<!-- 获取 -->
<select id="getListCount" parameterType="paramDto" resultType="int">
select count(1)
from mortals_xhx_device_alarm as a
<trim suffixOverrides="where" suffix="">
where
<trim prefixOverrides="and" prefix="">
<include refid="_condition_"/>
</trim>
</trim>
</select>
<!-- 条件映射 -->
<sql id="_condition_">
<if test="condition != null and !condition.isEmpty()">
<!-- 条件映射-普通条件 -->
<include refid="_condition_param_">
<property name="_conditionParam_" value="condition"/>
<property name="_conditionType_" value="and"/>
</include>
<!-- 条件映射-集合之间使用AND,集合中元素使用OR-(list[0].1 or list[0].2) and (list[1].3 or list[1].4) -->
<if test="condition.containsKey('andConditionList') and !condition.andConditionList.isEmpty()">
and
<foreach collection="condition.andConditionList" open="(" close=")" index="index" item="andCondition" separator=" and ">
<trim prefixOverrides="or" prefix="(" suffix=")">
<include refid="_condition_param_">
<property name="_conditionParam_" value="andCondition"/>
<property name="_conditionType_" value="or"/>
</include>
</trim>
</foreach>
</if>
<!-- 条件映射-集合之间使用OR,集合中元素使用AND-(list[0].1 and list[0].2) or (list[1].3 and list[1].4) -->
<if test="condition.containsKey('orConditionList') and !condition.orConditionList.isEmpty()">
and
<foreach collection="condition.orConditionList" open="(" close=")" index="index" item="orCondition" separator=" or ">
<trim prefixOverrides="and" prefix="(" suffix=")">
<include refid="_condition_param_">
<property name="_conditionParam_" value="orCondition"/>
<property name="_conditionType_" value="and"/>
</include>
</trim>
</foreach>
</if>
</if>
</sql>
<!-- 条件映射-代参数 -->
<sql id="_condition_param_">
<bind name="conditionParamRef" value="${_conditionParam_}"/>
<if test="conditionParamRef.containsKey('id')">
<if test="conditionParamRef.id != null">
${_conditionType_} a.id=#{${_conditionParam_}.id}
</if>
</if>
<if test="conditionParamRef.containsKey('id')">
<if test="conditionParamRef.id != null ">
${_conditionType_} a.id = #{${_conditionParam_}.id}
</if>
<if test="conditionParamRef.id == null">
${_conditionType_} a.id is null
</if>
</if>
<if test="conditionParamRef.containsKey('idList')">
${_conditionType_} a.id in
<foreach collection="conditionParamRef.idList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('idStart') and conditionParamRef.idStart != null">
${_conditionType_} a.id <![CDATA[ >= ]]> #{${_conditionParam_}.idStart}
</if>
<if test="conditionParamRef.containsKey('idEnd') and conditionParamRef.idEnd != null">
${_conditionType_} a.id <![CDATA[ <= ]]> #{${_conditionParam_}.idEnd}
</if>
<if test="conditionParamRef.containsKey('deviceId')">
<if test="conditionParamRef.deviceId != null ">
${_conditionType_} a.deviceId = #{${_conditionParam_}.deviceId}
</if>
<if test="conditionParamRef.deviceId == null">
${_conditionType_} a.deviceId is null
</if>
</if>
<if test="conditionParamRef.containsKey('deviceIdList')">
${_conditionType_} a.deviceId in
<foreach collection="conditionParamRef.deviceIdList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('deviceIdStart') and conditionParamRef.deviceIdStart != null">
${_conditionType_} a.deviceId <![CDATA[ >= ]]> #{${_conditionParam_}.deviceIdStart}
</if>
<if test="conditionParamRef.containsKey('deviceIdEnd') and conditionParamRef.deviceIdEnd != null">
${_conditionType_} a.deviceId <![CDATA[ <= ]]> #{${_conditionParam_}.deviceIdEnd}
</if>
<if test="conditionParamRef.containsKey('deviceCode')">
<if test="conditionParamRef.deviceCode != null and conditionParamRef.deviceCode != ''">
${_conditionType_} a.deviceCode like #{${_conditionParam_}.deviceCode}
</if>
<if test="conditionParamRef.deviceCode == null">
${_conditionType_} a.deviceCode is null
</if>
</if>
<if test="conditionParamRef.containsKey('deviceCodeList')">
${_conditionType_} a.deviceCode in
<foreach collection="conditionParamRef.deviceCodeList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('alarmType')">
<if test="conditionParamRef.alarmType != null ">
${_conditionType_} a.alarmType = #{${_conditionParam_}.alarmType}
</if>
<if test="conditionParamRef.alarmType == null">
${_conditionType_} a.alarmType is null
</if>
</if>
<if test="conditionParamRef.containsKey('alarmTypeList')">
${_conditionType_} a.alarmType in
<foreach collection="conditionParamRef.alarmTypeList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('alarmTypeStart') and conditionParamRef.alarmTypeStart != null">
${_conditionType_} a.alarmType <![CDATA[ >= ]]> #{${_conditionParam_}.alarmTypeStart}
</if>
<if test="conditionParamRef.containsKey('alarmTypeEnd') and conditionParamRef.alarmTypeEnd != null">
${_conditionType_} a.alarmType <![CDATA[ <= ]]> #{${_conditionParam_}.alarmTypeEnd}
</if>
<if test="conditionParamRef.containsKey('alarmLevel')">
<if test="conditionParamRef.alarmLevel != null ">
${_conditionType_} a.alarmLevel = #{${_conditionParam_}.alarmLevel}
</if>
<if test="conditionParamRef.alarmLevel == null">
${_conditionType_} a.alarmLevel is null
</if>
</if>
<if test="conditionParamRef.containsKey('alarmLevelList')">
${_conditionType_} a.alarmLevel in
<foreach collection="conditionParamRef.alarmLevelList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('alarmLevelStart') and conditionParamRef.alarmLevelStart != null">
${_conditionType_} a.alarmLevel <![CDATA[ >= ]]> #{${_conditionParam_}.alarmLevelStart}
</if>
<if test="conditionParamRef.containsKey('alarmLevelEnd') and conditionParamRef.alarmLevelEnd != null">
${_conditionType_} a.alarmLevel <![CDATA[ <= ]]> #{${_conditionParam_}.alarmLevelEnd}
</if>
<if test="conditionParamRef.containsKey('alarmContent')">
<if test="conditionParamRef.alarmContent != null and conditionParamRef.alarmContent != ''">
${_conditionType_} a.alarmContent like #{${_conditionParam_}.alarmContent}
</if>
<if test="conditionParamRef.alarmContent == null">
${_conditionType_} a.alarmContent is null
</if>
</if>
<if test="conditionParamRef.containsKey('alarmContentList')">
${_conditionType_} a.alarmContent in
<foreach collection="conditionParamRef.alarmContentList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('alarmTime')">
<if test="conditionParamRef.alarmTime != null ">
${_conditionType_} a.alarmTime = #{${_conditionParam_}.alarmTime}
</if>
<if test="conditionParamRef.alarmTime == null">
${_conditionType_} a.alarmTime is null
</if>
</if>
<if test="conditionParamRef.containsKey('alarmTimeStart') and conditionParamRef.alarmTimeStart != null and conditionParamRef.alarmTimeStart!=''">
${_conditionType_} a.alarmTime <![CDATA[ >= ]]> STR_TO_DATE(left(concat(#{${_conditionParam_}.alarmTimeStart},' 00:00:00'),19),'%Y-%m-%d %k:%i:%s')
</if>
<if test="conditionParamRef.containsKey('alarmTimeEnd') and conditionParamRef.alarmTimeEnd != null and conditionParamRef.alarmTimeEnd!=''">
${_conditionType_} a.alarmTime <![CDATA[ <= ]]> STR_TO_DATE(left(concat(#{${_conditionParam_}.alarmTimeEnd},' 23:59:59'),19),'%Y-%m-%d %k:%i:%s')
</if>
<if test="conditionParamRef.containsKey('createTime')">
<if test="conditionParamRef.createTime != null ">
${_conditionType_} a.createTime = #{${_conditionParam_}.createTime}
</if>
<if test="conditionParamRef.createTime == null">
${_conditionType_} a.createTime is null
</if>
</if>
<if test="conditionParamRef.containsKey('createTimeStart') and conditionParamRef.createTimeStart != null and conditionParamRef.createTimeStart!=''">
${_conditionType_} a.createTime <![CDATA[ >= ]]> STR_TO_DATE(left(concat(#{${_conditionParam_}.createTimeStart},' 00:00:00'),19),'%Y-%m-%d %k:%i:%s')
</if>
<if test="conditionParamRef.containsKey('createTimeEnd') and conditionParamRef.createTimeEnd != null and conditionParamRef.createTimeEnd!=''">
${_conditionType_} a.createTime <![CDATA[ <= ]]> STR_TO_DATE(left(concat(#{${_conditionParam_}.createTimeEnd},' 23:59:59'),19),'%Y-%m-%d %k:%i:%s')
</if>
<if test="conditionParamRef.containsKey('updateUserId')">
<if test="conditionParamRef.updateUserId != null ">
${_conditionType_} a.updateUserId = #{${_conditionParam_}.updateUserId}
</if>
<if test="conditionParamRef.updateUserId == null">
${_conditionType_} a.updateUserId is null
</if>
</if>
<if test="conditionParamRef.containsKey('updateUserIdList')">
${_conditionType_} a.updateUserId in
<foreach collection="conditionParamRef.updateUserIdList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('updateUserIdStart') and conditionParamRef.updateUserIdStart != null">
${_conditionType_} a.updateUserId <![CDATA[ >= ]]> #{${_conditionParam_}.updateUserIdStart}
</if>
<if test="conditionParamRef.containsKey('updateUserIdEnd') and conditionParamRef.updateUserIdEnd != null">
${_conditionType_} a.updateUserId <![CDATA[ <= ]]> #{${_conditionParam_}.updateUserIdEnd}
</if>
<if test="conditionParamRef.containsKey('updateTime')">
<if test="conditionParamRef.updateTime != null ">
${_conditionType_} a.updateTime = #{${_conditionParam_}.updateTime}
</if>
<if test="conditionParamRef.updateTime == null">
${_conditionType_} a.updateTime is null
</if>
</if>
<if test="conditionParamRef.containsKey('updateTimeStart') and conditionParamRef.updateTimeStart != null and conditionParamRef.updateTimeStart!=''">
${_conditionType_} a.updateTime <![CDATA[ >= ]]> STR_TO_DATE(left(concat(#{${_conditionParam_}.updateTimeStart},' 00:00:00'),19),'%Y-%m-%d %k:%i:%s')
</if>
<if test="conditionParamRef.containsKey('updateTimeEnd') and conditionParamRef.updateTimeEnd != null and conditionParamRef.updateTimeEnd!=''">
${_conditionType_} a.updateTime <![CDATA[ <= ]]> STR_TO_DATE(left(concat(#{${_conditionParam_}.updateTimeEnd},' 23:59:59'),19),'%Y-%m-%d %k:%i:%s')
</if>
</sql>
<sql id="_orderCols_">
<if test="orderColList != null and !orderColList.isEmpty()">
order by
<trim suffixOverrides="," suffix="">
<foreach collection="orderColList" open="" close="" index="index" item="item" separator=",">
${item.colName} ${item.sortKind}
</foreach>
</trim>
</if>
<if test="(orderColList == null or orderColList.isEmpty()) and orderCol != null and !orderCol.isEmpty()">
order by
<trim suffixOverrides="," suffix="">
<if test="orderCol.containsKey('id')">
a.id
<if test='orderCol.id != null and "DESC".equalsIgnoreCase(orderCol.id)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('deviceId')">
a.deviceId
<if test='orderCol.deviceId != null and "DESC".equalsIgnoreCase(orderCol.deviceId)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('deviceCode')">
a.deviceCode
<if test='orderCol.deviceCode != null and "DESC".equalsIgnoreCase(orderCol.deviceCode)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('alarmType')">
a.alarmType
<if test='orderCol.alarmType != null and "DESC".equalsIgnoreCase(orderCol.alarmType)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('alarmLevel')">
a.alarmLevel
<if test='orderCol.alarmLevel != null and "DESC".equalsIgnoreCase(orderCol.alarmLevel)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('alarmContent')">
a.alarmContent
<if test='orderCol.alarmContent != null and "DESC".equalsIgnoreCase(orderCol.alarmContent)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('alarmTime')">
a.alarmTime
<if test='orderCol.alarmTime != null and "DESC".equalsIgnoreCase(orderCol.alarmTime)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('createTime')">
a.createTime
<if test='orderCol.createTime != null and "DESC".equalsIgnoreCase(orderCol.createTime)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('updateUserId')">
a.updateUserId
<if test='orderCol.updateUserId != null and "DESC".equalsIgnoreCase(orderCol.updateUserId)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('updateTime')">
a.updateTime
<if test='orderCol.updateTime != null and "DESC".equalsIgnoreCase(orderCol.updateTime)'>DESC</if>
,
</if>
</trim>
</if>
</sql>
<sql id="_group_by_">
<if test="groupList != null and !groupList.isEmpty()">
GROUP BY
<trim suffixOverrides="," suffix="">
<foreach collection="groupList" open="" close="" index="index" item="item" separator=",">
${item}
</foreach>
</trim>
</if>
</sql>
</mapper>
\ No newline at end of file
......@@ -16,6 +16,30 @@ Content-Type: application/json
}
###设备更新与保存
POST {{baseUrl}}/device/save
Content-Type: application/json
{
"id":60,
"deviceCode":"ksdmo7",
"deviceType":1,
"deviceMac":"a3ku15",
"ip":"5ffz2e",
"centernum":"pcou8p",
"port":"0ujj4h",
"siteNum":"8aw47p",
"deviceFirmId":922,
"deviceFirmname":"cwzu1n",
"deviceOnlineStatus":0,
"status":0,
"deviceRemark":"plxklr",
"onlineTime":"1646755200000",
"offlineTime":"1646755200000"
}
###设备更新与保存
POST {{baseUrl}}/device/save
Content-Type: application/json
......@@ -62,7 +86,7 @@ POST {{baseUrl}}/api/device/upload
Content-Type: application/json
{
"devicenum":"AB:DD:DF:FD:AD:FA:DA:SS",
"devicenum":"94-DE-80-D5-3D-63",
"action":"upload"
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment