Commit 7913e3e2 authored by 赵啸非's avatar 赵啸非

添加预警类

parent bb46a816
......@@ -225,3 +225,50 @@ INSERT INTO `mortals_xhx_resource` VALUES (null, '设备业务-菜单管理-维
-- ----------------------------
INSERT INTO `mortals_xhx_param` VALUES (null, '设备状态 ', 'Device', 'deviceStatus', '1', '离线', 1, 4, 0, 'deviceStatus', NULL, NULL, NULL);
INSERT INTO `mortals_xhx_param` VALUES (null, '设备状态 ', 'Device', 'deviceStatus', '2', '在线', 1, 4, 0, 'deviceStatus', NULL, NULL, NULL);
-- ----------------------------
-- 监测预警记录菜单 SQL
-- ----------------------------
INSERT INTO `mortals_xhx_menu` VALUES (null, '监测预警记录', '/monitor/alarm/list', 0,'', 1, 1, 0, 0,'',NULL, NULL, NULL, 0, 0, 1, NULL, NULL, NULL);
-- ----------------------------
-- 监测预警记录资源路径 SQL
-- ----------------------------
INSERT INTO `mortals_xhx_resource` VALUES (null, '监测预警记录-菜单管理-查看', '/monitor/alarm/list,/monitor/alarm/view,/monitor/alarm/info,/monitor/alarm/export,/monitor/alarm/exportExcel,/monitor/alarm/downloadTemplate,/monitor/alarm/download', 3, 0, NULL, NULL, NULL, 0);
INSERT INTO `mortals_xhx_resource` VALUES (null, '监测预警记录-菜单管理-维护', '/monitor/alarm/add,/monitor/alarm/edit,/monitor/alarm/delete,/monitor/alarm/logicDelete,/monitor/alarm/save,/monitor/alarm/importData', 3, 0, NULL, NULL, NULL, 0);
-- ----------------------------
-- 监测预警记录参数 SQL
-- ----------------------------
-- ----------------------------
-- 用户消息菜单 SQL
-- ----------------------------
INSERT INTO `mortals_xhx_menu` VALUES (null, '用户消息', '/notice/list', 0,'', 1, 1, 0, 0,'',NULL, NULL, NULL, 0, 0, 1, NULL, NULL, NULL);
-- ----------------------------
-- 用户消息资源路径 SQL
-- ----------------------------
INSERT INTO `mortals_xhx_resource` VALUES (null, '用户消息-菜单管理-查看', '/notice/list,/notice/view,/notice/info,/notice/export,/notice/exportExcel,/notice/downloadTemplate,/notice/download', 3, 0, NULL, NULL, NULL, 0);
INSERT INTO `mortals_xhx_resource` VALUES (null, '用户消息-菜单管理-维护', '/notice/add,/notice/edit,/notice/delete,/notice/logicDelete,/notice/save,/notice/importData', 3, 0, NULL, NULL, NULL, 0);
-- ----------------------------
-- 用户消息参数 SQL
-- ----------------------------
INSERT INTO `mortals_xhx_param` VALUES (null, '是否已读 ', 'Notice', 'read', '0', '否', 1, 4, 0, 'read', NULL, NULL, NULL);
INSERT INTO `mortals_xhx_param` VALUES (null, '是否已读 ', 'Notice', 'read', '1', '是', 1, 4, 0, 'read', NULL, NULL, NULL);
-- ----------------------------
-- 监测预警记录详细记录菜单 SQL
-- ----------------------------
INSERT INTO `mortals_xhx_menu` VALUES (null, '监测预警记录详细记录', '/monitor/alarm/record/list', 0,'', 1, 1, 0, 0,'',NULL, NULL, NULL, 0, 0, 1, NULL, NULL, NULL);
-- ----------------------------
-- 监测预警记录详细记录资源路径 SQL
-- ----------------------------
INSERT INTO `mortals_xhx_resource` VALUES (null, '监测预警记录详细记录-菜单管理-查看', '/monitor/alarm/record/list,/monitor/alarm/record/view,/monitor/alarm/record/info,/monitor/alarm/record/export,/monitor/alarm/record/exportExcel,/monitor/alarm/record/downloadTemplate,/monitor/alarm/record/download', 3, 0, NULL, NULL, NULL, 0);
INSERT INTO `mortals_xhx_resource` VALUES (null, '监测预警记录详细记录-菜单管理-维护', '/monitor/alarm/record/add,/monitor/alarm/record/edit,/monitor/alarm/record/delete,/monitor/alarm/record/logicDelete,/monitor/alarm/record/save,/monitor/alarm/record/importData', 3, 0, NULL, NULL, NULL, 0);
-- ----------------------------
-- 监测预警记录详细记录参数 SQL
-- ----------------------------
INSERT INTO `mortals_xhx_param` VALUES (null, '签到方式', 'MonitorAlarmRecord', 'checkInMethod', '0', '自动签到', 1, 4, 0, 'checkInMethod', NULL, NULL, NULL);
INSERT INTO `mortals_xhx_param` VALUES (null, '签到方式', 'MonitorAlarmRecord', 'checkInMethod', '1', '手动签到', 1, 4, 0, 'checkInMethod', NULL, NULL, NULL);
......@@ -235,7 +235,7 @@ CREATE TABLE mortals_xhx_person(
`phone` varchar(20) COMMENT '手机号码',
`birthday` datetime NOT NULL COMMENT '出生日期',
`address` varchar(256) NOT NULL COMMENT '家庭住址',
`photo` varchar(100) NOT NULL COMMENT '照片路径',
`photo` varchar(256) NOT NULL COMMENT '照片路径',
`remark` varchar(256) COMMENT '备注',
`source` tinyint(2) COMMENT '注册人员来源(0.预约系统,1.排队叫号系统,2.自助服务系统,99.其它)',
`inFaceHk` tinyint(2) NOT NULL DEFAULT '0' COMMENT '是否添加到海康人脸库(0.否,1.是)',
......@@ -256,7 +256,7 @@ CREATE TABLE mortals_xhx_device(
`siteId` bigint(20) COMMENT '站点Id',
`siteName` varchar(256) COMMENT '站点名称',
`deviceId` varchar(64) COMMENT '设备ID,海康',
`deviceName` varchar(20) NOT NULL COMMENT '设备名称',
`deviceName` varchar(256) NOT NULL COMMENT '设备名称',
`deviceCode` varchar(256) COMMENT '设备编码',
`deviceMac` varchar(64) COMMENT '设备的MAC地址',
`deviceLocation` varchar(255) DEFAULT '2' COMMENT '设备位置',
......@@ -266,9 +266,15 @@ CREATE TABLE mortals_xhx_device(
`build` int(4) COMMENT '楼栋',
`leadingOfficial` varchar(20) COMMENT '负责人',
`leadingOfficialTelephone` varchar(32) COMMENT '联系电话',
`timeOutPeriod` int(4) COMMENT '超时时间,单位天',
`nearTime` int(4) COMMENT '临近时间,单位天',
`deviceStatus` tinyint(2) COMMENT '设备状态 (1.离线,2.在线)',
`timeOutPeriod` int(4) DEFAULT '0' COMMENT '超时时间,单位天',
`nearTime` int(4) DEFAULT '0' COMMENT '临近时间,单位天',
`deviceStatus` tinyint(2) DEFAULT '2' COMMENT '设备状态 (1.离线,2.在线)',
`regionIndexCode` varchar(128) COMMENT '区域编码',
`cameraTypeName` varchar(32) COMMENT '类型名称',
`cameraType` int(4) COMMENT '设备类型',
`encodeDevIndexCode` varchar(128) COMMENT '编码',
`capabilitySet` varchar(1024) COMMENT '设备能力',
`capabilitySetName` varchar(1024) COMMENT '设备能力名称',
`deviceRemark` varchar(256) COMMENT '备注',
`createUserId` bigint(20) NOT NULL COMMENT '创建用户',
`createTime` datetime NOT NULL COMMENT '创建时间',
......@@ -276,3 +282,68 @@ CREATE TABLE mortals_xhx_device(
`updateTime` datetime COMMENT '更新时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='设备业务';
-- ----------------------------
-- 监测预警记录表
-- ----------------------------
DROP TABLE IF EXISTS `mortals_xhx_monitor_alarm`;
CREATE TABLE mortals_xhx_monitor_alarm(
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID,主键,自增长',
`siteId` bigint(20) COMMENT '站点Id',
`siteName` varchar(256) COMMENT '站点名称',
`personId` bigint(20) NOT NULL COMMENT '人员id',
`name` varchar(255) COMMENT '姓名',
`contact` varchar(255) COMMENT '联系方式',
`idNumber` varchar(255) NOT NULL COMMENT '身份证号码',
`identifyNum` int(4) DEFAULT '0' COMMENT '识别频次',
`lastIdentifyTime` datetime COMMENT '最后识别时间',
`year` int(9) NOT NULL COMMENT '年',
`month` int(9) NOT NULL COMMENT '月',
`day` int(9) NOT NULL COMMENT '日',
`createTime` datetime COMMENT '创建时间',
`createUserId` bigint(20) COMMENT '创建人id',
`updateTime` datetime COMMENT '更新时间',
`updateUserId` bigint(20) COMMENT '更新人id',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='监测预警记录';
-- ----------------------------
-- 监测预警记录详细记录表
-- ----------------------------
DROP TABLE IF EXISTS `mortals_xhx_monitor_alarm_record`;
CREATE TABLE mortals_xhx_monitor_alarm_record(
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID,主键,自增长',
`alarmId` bigint(20) COMMENT '告警Id',
`reservationService` varchar(50) COMMENT '预约业务',
`reservationNumber` varchar(50) COMMENT '预约编号',
`monitorTime` datetime COMMENT '监测时间',
`monitorDeviceId` bigint(20) COMMENT '监测设备',
`monitorDevice` varchar(255) COMMENT '监测设备名称',
`checkInMethod` tinyint(1) DEFAULT '0' COMMENT '签到方式(0.自动签到,1.手动签到)',
`monitorCertificate` varchar(255) COMMENT '监测凭证',
`picUri` varchar(255) COMMENT '相对图片pic',
`serverIndexCode` varchar(255) COMMENT '图片资源唯一标识',
`createTime` datetime COMMENT '创建时间',
`createUserId` bigint(20) COMMENT '创建人id',
`updateTime` datetime COMMENT '更新时间',
`updateUserId` bigint(20) COMMENT '更新人id',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='监测预警记录详细记录';
-- ----------------------------
-- 用户消息表
-- ----------------------------
DROP TABLE IF EXISTS `mortals_xhx_notice`;
CREATE TABLE mortals_xhx_notice(
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`userId` bigint(20) COMMENT '接收消息的用户的唯一标识符',
`title` varchar(255) NOT NULL COMMENT '消息的标题',
`content` varchar(1024) NOT NULL COMMENT '消息的内容',
`read` tinyint(2) NOT NULL DEFAULT '0' COMMENT '是否已读 (0.否,1.是)',
`priority` int(4) NOT NULL DEFAULT '0' COMMENT '消息的优先级,越高表示越紧急,不为空',
`expireTime` datetime COMMENT '消息的过期时间,超过此时间则自动标记为已读',
`sourceType` varchar(64) NOT NULL COMMENT '消息的来源类型,例如“系统”、“好友”等,可以为空',
`createTime` datetime COMMENT '创建时间',
`createUserId` bigint(20) COMMENT '创建人ID',
`updateTime` datetime COMMENT '更新时间',
`updateUserId` bigint(20) COMMENT '更新人ID',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='用户消息';
This diff is collapsed.
......@@ -54,6 +54,9 @@ const router = new Router({
...restBuilder('care/constraint/track', 'care/constraint/track'), //主动关怀服务追踪
...restBuilder('person', 'person'), //注册人员
...restBuilder('device', 'device'), //设备业务
...restBuilder('notice', 'notice'), //消息
...restBuilder('monitor/alarm', 'monitor/alarm'), //监控预警
...restBuilder('monitor/alarm/record', 'monitor/alarm/record'), //监控预警记录
//以下为基础路由配置
......
<template>
<div class="page">
<LayoutTable :data="tableData" :config="tableConfig">
</LayoutTable>
<track-drawer-show ref="trackDrawerShow" />
<dialog-show ref="dialogform" @ok="getData" />
</div>
</template>
<script>
/** 表单弹出框模式需引入 */
import dialogShow from "./dialogshow";
import trackDrawerShow from "./trackDrawerShow";
import table from "@/assets/mixins/table";
export default {
name: "CareConstraintList",
components: {
dialogShow,trackDrawerShow
},
mixins: [table],
created() {
},
methods: {
renderTable(tableData) {
return (
<el-table stripe data={tableData} class="total-table">
{this.columnSet.map((item) => this.renderTableColumn(item))}
</el-table>
);
},
renderTableColumn(options) {
return (
<el-table-column
prop={options.prop}
label={options.label}
width={options.width}
>
</el-table-column>
);
},
/** 重写新增方法 */
toAdd(row) {
this.$refs.dialogform.add(row);
},
/** 重写编辑方法 */
toEdit(row) {
this.$refs.dialogform.edit(row);
},
/** 重写查看方法 */
toView(row) {
this.$refs.dialogform.view(row);
},
handleTrack(row) {
this.$refs.trackDrawerShow.view(row);
},
cancelTrack(row) {
let _this = this
this.$confirm('取消跟踪后,系统将从0开始计算服务频次,是否确认?', "系统服务", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
}).then(function () {
//todo
_this.$post("/care/constraint/save", {
id: row.id,
serviceFrequency: 0,
track: 0,
})
.then((res) => {
if (res.code == 1) {
_this.$message.success("取消追踪成功!");
_this.getData();
}
})
.catch((error) => {
_this.$message.error(error.message);
});
}).then(response => {
})
}
},
data() {
return {
/** 子表列元素 */
columnSet:[
{prop:"careId",label:"主动关怀约束Id",width:100},
{prop:"feedbackId",label:"反馈人ID",width:100},
{prop:"feedbackName",label:"反馈人姓名",width:100},
{prop:"feedback",label:"反馈内容",width:100},
{prop:"feedbackTime",label:"跟踪时间",width:100},
{prop:"createMethod",label:"创建方式",width:100},
],
config: {
search: [
],
columns: [
{type: "selection", width: 60},
{type: "index",label: "序号",width: 50},
{label: "姓名", prop: "name"},
{label: "联系方式", prop: "contact"},
{label: "身份证号码", prop: "idCard"},
{label: "服务频次", prop: "serviceFrequency", formatter: this.formatter},
{label: "跟踪时间", prop: "trackingTime", formatter: this.formatterDate},
{label: "创建方式", prop: "createWay",formatter: this.formatter},
{label: "操作人员", prop: "operator"},
{label: "是否追踪 ", prop: "track",formatter: this.formatter},
{
label: "操作",
width: 320,
formatter: row => {
return (
<div>
<table-buttons noAdd noView row={row} onEdit={this.toEdit} onView={this.toView} onDel={this.toDel} />
<span> </span>
<el-button
size="mini"
type="text"
icon="el-icon-open"
onClick={() => {
this.handleTrack(row);
}}
>
跟踪反馈
</el-button>
<span> </span>
<el-button
size="mini"
type="text"
icon="el-icon-open"
onClick={() => {
this.cancelTrack(row);
}}
>
取消跟踪
</el-button>
</div>);
}
}
]
}
};
}
};
</script>
<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="siteId" v-model="form.siteId" placeholder="请输入站点Id"/>
<Field label="站点名称" prop="siteName" v-model="form.siteName" type="textarea" placeholder="请输入站点名称"/>
<Field label="人员id" prop="personId" v-model="form.personId" placeholder="请输入人员id"/>
<Field label="姓名" prop="name" v-model="form.name" type="textarea" placeholder="请输入姓名"/>
<Field label="联系方式" prop="contact" v-model="form.contact" type="textarea" placeholder="请输入联系方式"/>
<Field label="身份证号码" prop="idNumber" v-model="form.idNumber" type="textarea" placeholder="请输入身份证号码"/>
<Field label="识别频次" prop="identifyNum" v-model="form.identifyNum" placeholder="请输入识别频次"/>
<Field label="最后识别时间" prop="lastIdentifyTime" v-model="form.lastIdentifyTime" type="date" />
<Field label="年" prop="year" v-model="form.year" placeholder="请输入年"/>
<Field label="月" prop="month" v-model="form.month" placeholder="请输入月"/>
<Field label="日" prop="day" v-model="form.day" placeholder="请输入日"/>
</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:[
],
// 表单校验
rules: {
idNumber: [
{required: true,message: "请输入身份证号码", trigger: "blur" },
{max: 255,message: "最多只能录入255个字符",trigger: "blur",},
],
year: [
{required: true,message: "请输入年", trigger: "blur" },
],
month: [
{required: true,message: "请输入月", trigger: "blur" },
],
day: [
{required: true,message: "请输入日", trigger: "blur" },
],
}
};
},
methods: {
/** 编辑 */
edit(row) {
this.reset()
this.query = { id: row.id };
this.urls.currUrl ="monitor/alarm/edit";
this.getData();
this.pageInfo.type="edit"
this.title = "修改监测预警记录";
},
/** 新增 */
add(row) {
this.reset()
this.urls.currUrl = "monitor/alarm/add";
this.getData();
this.pageInfo.type="add"
this.title = "新增监测预警记录";
},
/** 查看*/
view(row) {
this.reset()
this.query = { id: row.id };
this.urls.currUrl ="monitor/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 = {
siteId : null,
siteName : "",
personId : null,
name : "",
contact : "",
idNumber : "",
identifyNum : 0,
lastIdentifyTime : null,
year : null,
month : null,
day : 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: "MonitorAlarmList",
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: "站点Id", prop: "siteId", formatter: this.formatter},
{label: "站点名称", prop: "siteName"},
{label: "姓名", prop: "name"},
{label: "联系方式", prop: "contact"},
{label: "身份证号码", prop: "idNumber"},
{label: "识别频次", prop: "identifyNum",formatter: this.formatter},
{
label: "操作",
width: 240,
formatter: row => {
return (
<table-buttons noAdd row={row} onEdit={this.toEdit} onView={this.toView} onDel={this.toDel} />
);
}
}
]
}
};
}
};
</script>
\ No newline at end of file
<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="alarmId" v-model="form.alarmId" placeholder="请输入告警Id"/>
<Field label="预约业务" prop="reservationService" v-model="form.reservationService" placeholder="请输入预约业务"/>
<Field label="预约编号" prop="reservationNumber" v-model="form.reservationNumber" placeholder="请输入预约编号"/>
<Field label="监测时间" prop="monitorTime" v-model="form.monitorTime" type="date" />
<Field label="监测设备" prop="monitorDeviceId" v-model="form.monitorDeviceId" placeholder="请输入监测设备"/>
<Field label="监测设备名称" prop="monitorDevice" v-model="form.monitorDevice" type="textarea" placeholder="请输入监测设备名称"/>
<Field label="签到方式" prop="checkInMethod" v-model="form.checkInMethod" type="select" :enumData="dict.checkInMethod" placeholder="请选择签到方式"/>
<Field label="监测凭证" prop="monitorCertificate" v-model="form.monitorCertificate" type="textarea" placeholder="请输入监测凭证"/>
<Field label="相对图片pic" prop="picUri" v-model="form.picUri" type="textarea" placeholder="请输入相对图片pic"/>
<Field label="图片资源唯一标识" prop="serverIndexCode" v-model="form.serverIndexCode" type="textarea" placeholder="请输入图片资源唯一标识"/>
</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:[
"checkInMethod",
],
// 表单校验
rules: {
}
};
},
methods: {
/** 编辑 */
edit(row) {
this.reset()
this.query = { id: row.id };
this.urls.currUrl ="monitor/alarm/record/edit";
this.getData();
this.pageInfo.type="edit"
this.title = "修改监测预警记录详细记录";
},
/** 新增 */
add(row) {
this.reset()
this.urls.currUrl = "monitor/alarm/record/add";
this.getData();
this.pageInfo.type="add"
this.title = "新增监测预警记录详细记录";
},
/** 查看*/
view(row) {
this.reset()
this.query = { id: row.id };
this.urls.currUrl ="monitor/alarm/record/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 = {
alarmId : null,
reservationService : "",
reservationNumber : "",
monitorTime : null,
monitorDeviceId : null,
monitorDevice : "",
checkInMethod : 0,
monitorCertificate : "",
picUri : "",
serverIndexCode : "",
};
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: "MonitorAlarmRecordList",
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: "告警Id", prop: "alarmId", formatter: this.formatter},
{label: "预约业务", prop: "reservationService"},
{label: "预约编号", prop: "reservationNumber"},
{label: "监测时间", prop: "monitorTime", formatter: this.formatterDate},
{label: "监测设备名称", prop: "monitorDevice"},
{label: "签到方式", prop: "checkInMethod",formatter: this.formatter},
{label: "监测凭证", prop: "monitorCertificate"},
{
label: "操作",
width: 240,
formatter: row => {
return (
<table-buttons noAdd row={row} onEdit={this.toEdit} onView={this.toView} onDel={this.toDel} />
);
}
}
]
}
};
}
};
</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.alarmId}}
</el-descriptions-item>
<el-descriptions-item label="预约业务" label-class-name="labelClass" content-class-name="contentClass">
{{form.reservationService}}
</el-descriptions-item>
<el-descriptions-item label="预约编号" label-class-name="labelClass" content-class-name="contentClass">
{{form.reservationNumber}}
</el-descriptions-item>
<el-descriptions-item label="监测时间" label-class-name="labelClass" content-class-name="contentClass">
{{ util_formatterDate(form.monitorTime)}}
</el-descriptions-item>
<el-descriptions-item label="监测设备" label-class-name="labelClass" content-class-name="contentClass">
{{form.monitorDeviceId}}
</el-descriptions-item>
<el-descriptions-item label="监测设备名称" label-class-name="labelClass" content-class-name="contentClass">
{{form.monitorDevice}}
</el-descriptions-item>
<el-descriptions-item label="签到方式" label-class-name="labelClass" content-class-name="contentClass">
{{ util_formatters("checkInMethod", form.checkInMethod) }}
</el-descriptions-item>
<el-descriptions-item label="监测凭证" label-class-name="labelClass" content-class-name="contentClass">
{{form.monitorCertificate}}
</el-descriptions-item>
<el-descriptions-item label="相对图片pic" label-class-name="labelClass" content-class-name="contentClass">
{{form.picUri}}
</el-descriptions-item>
<el-descriptions-item label="图片资源唯一标识" label-class-name="labelClass" content-class-name="contentClass">
{{form.serverIndexCode}}
</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:[
"checkInMethod",
],
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>
<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.siteId}}
</el-descriptions-item>
<el-descriptions-item label="站点名称" label-class-name="labelClass" content-class-name="contentClass">
{{form.siteName}}
</el-descriptions-item>
<el-descriptions-item label="人员id" label-class-name="labelClass" content-class-name="contentClass">
{{form.personId}}
</el-descriptions-item>
<el-descriptions-item label="姓名" label-class-name="labelClass" content-class-name="contentClass">
{{form.name}}
</el-descriptions-item>
<el-descriptions-item label="联系方式" label-class-name="labelClass" content-class-name="contentClass">
{{form.contact}}
</el-descriptions-item>
<el-descriptions-item label="身份证号码" label-class-name="labelClass" content-class-name="contentClass">
{{form.idNumber}}
</el-descriptions-item>
<el-descriptions-item label="识别频次" label-class-name="labelClass" content-class-name="contentClass">
{{form.identifyNum}}
</el-descriptions-item>
<el-descriptions-item label="最后识别时间" label-class-name="labelClass" content-class-name="contentClass">
{{ util_formatterDate(form.lastIdentifyTime)}}
</el-descriptions-item>
<el-descriptions-item label="年" label-class-name="labelClass" content-class-name="contentClass">
{{form.year}}
</el-descriptions-item>
<el-descriptions-item label="月" label-class-name="labelClass" content-class-name="contentClass">
{{form.month}}
</el-descriptions-item>
<el-descriptions-item label="日" label-class-name="labelClass" content-class-name="contentClass">
{{form.day}}
</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:[
],
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>
<!-- 弹出框表单 -->
<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="接收消息的用户的唯一标识符" prop="userId" v-model="form.userId" placeholder="请输入接收消息的用户的唯一标识符"/>
<Field label="消息的标题" prop="title" v-model="form.title" type="textarea" placeholder="请输入消息的标题"/>
<Field label="消息的内容"><editor v-model="form.content" :min-height="256"/></Field>
<Field label="是否已读 " prop="read" v-model="form.read" type="radio" :enumData="dict.read" />
<Field label="消息的优先级,越高表示越紧急,不为空" prop="priority" v-model="form.priority" placeholder="请输入消息的优先级,越高表示越紧急,不为空"/>
<Field label="消息的过期时间,超过此时间则自动标记为已读" prop="expireTime" v-model="form.expireTime" type="date" />
<Field label="消息的来源类型,例如“系统”、“好友”等,可以为空" prop="sourceType" v-model="form.sourceType" placeholder="请输入消息的来源类型,例如“系统”、“好友”等,可以为空"/>
</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";
import Editor from '@/components/Editor';
export default {
mixins: [form],
components: {
dialogShow ,
Editor,
},
data() {
return {
// 遮罩层
loading: true,
// 弹出层标题
title: "用户消息",
// 是否显示弹出层
open: false,
toString:[
],
// 表单校验
rules: {
title: [
{required: true,message: "请输入消息的标题", trigger: "blur" },
{max: 255,message: "最多只能录入255个字符",trigger: "blur",},
],
content: [
{required: true,message: "请输入消息的内容", trigger: "blur" },
{max: 1024,message: "最多只能录入1024个字符",trigger: "blur",},
],
priority: [
{required: true,message: "请输入消息的优先级,越高表示越紧急,不为空", trigger: "blur" },
],
sourceType: [
{required: true,message: "请输入消息的来源类型,例如“系统”、“好友”等,可以为空", trigger: "blur" },
{max: 64,message: "最多只能录入64个字符",trigger: "blur",},
],
}
};
},
methods: {
/** 编辑 */
edit(row) {
this.reset()
this.query = { id: row.id };
this.urls.currUrl ="notice/edit";
this.getData();
this.pageInfo.type="edit"
this.title = "修改用户消息";
},
/** 新增 */
add(row) {
this.reset()
this.urls.currUrl = "notice/add";
this.getData();
this.pageInfo.type="add"
this.title = "新增用户消息";
},
/** 查看*/
view(row) {
this.reset()
this.query = { id: row.id };
this.urls.currUrl ="notice/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 = {
userId : null,
title : "",
content : "",
read : null,
priority : 0,
expireTime : null,
sourceType : "",
};
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: "NoticeList",
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: "userId", formatter: this.formatter},
{label: "消息的标题", prop: "title"},
{label: "消息的内容", prop: "content"},
{label: "是否已读 ", prop: "read", formatter: this.formatterDate},
{label: "消息的优先级,越高表示越紧急,不为空", prop: "priority",formatter: this.formatter},
{label: "消息的来源类型,例如“系统”、“好友”等,可以为空", prop: "sourceType"},
{
label: "操作",
width: 240,
formatter: row => {
return (
<table-buttons noAdd row={row} onEdit={this.toEdit} onView={this.toView} onDel={this.toDel} />
);
}
}
]
}
};
}
};
</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="接收消息的用户的唯一标识符" label-class-name="labelClass" content-class-name="contentClass">
{{form.userId}}
</el-descriptions-item>
<el-descriptions-item label="消息的标题" label-class-name="labelClass" content-class-name="contentClass">
{{form.title}}
</el-descriptions-item>
<el-descriptions-item label="消息的内容" label-class-name="labelClass" content-class-name="contentClass">
<editor v-model="form.content" :min-height="256"/>
</el-descriptions-item>
<el-descriptions-item label="是否已读 " label-class-name="labelClass" content-class-name="contentClass">
{{ util_formatters("read", form.read) }}
</el-descriptions-item>
<el-descriptions-item label="消息的优先级,越高表示越紧急,不为空" label-class-name="labelClass" content-class-name="contentClass">
{{form.priority}}
</el-descriptions-item>
<el-descriptions-item label="消息的过期时间,超过此时间则自动标记为已读" label-class-name="labelClass" content-class-name="contentClass">
{{ util_formatterDate(form.expireTime)}}
</el-descriptions-item>
<el-descriptions-item label="消息的来源类型,例如“系统”、“好友”等,可以为空" label-class-name="labelClass" content-class-name="contentClass">
{{form.sourceType}}
</el-descriptions-item>
</el-descriptions>
</layout-view>
</template>
<script>
import view from "@/assets/mixins/view";
import Editor from '@/components/Editor';
export default {
mixins: [view],
components: {
Editor,
},
methods: {
},
data() {
return {
size:"small",
column:2,
toString:[
],
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
......@@ -34,7 +34,6 @@
<profiles.sms.smsSendUrl>http://127.0.0.1:8089/api/index/index</profiles.sms.smsSendUrl>
<profiles.sms.apiId>k6BVS1PEbyzcJAE4</profiles.sms.apiId>
<profiles.sms.type>3</profiles.sms.type>
<profiles.hik.host>8.136.255.30:8001</profiles.hik.host>
<profiles.hik.appKey>25128371</profiles.hik.appKey>
<profiles.hik.appSecret>2m9RcPJOKq5j2QPQM4v5</profiles.hik.appSecret>
......
package com.mortals.xhx.common.code;
import java.util.LinkedHashMap;
import java.util.Map;
/**
* 是否已读 (0.否,1.是)枚举类
*
* @author zxfei
*/
public enum ReadEnum {
;
private Date value;
private String desc;
ReadEnum(Date value, String desc) {
this.value = value;
this.desc = desc;
}
public Date getValue() {
return this.value;
}
public String getDesc() {
return this.desc;
}
public static ReadEnum getByValue(Date value) {
for (ReadEnum readEnum : ReadEnum.values()) {
if (readEnum.getValue() == value) {
return readEnum;
}
}
return null;
}
/**
* 获取Map集合
*
* @param eItem 不包含项
* @return
*/
public static Map<String, String> getEnumMap(Date... eItem) {
Map<String, String> resultMap = new LinkedHashMap<>();
for (ReadEnum item : ReadEnum.values()) {
try {
boolean hasE = false;
for (Date 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.daemon.task;
import com.alibaba.fastjson.JSON;
import com.mortals.framework.common.Rest;
import com.mortals.framework.exception.AppException;
import com.mortals.framework.service.ITask;
import com.mortals.framework.service.ITaskExcuteService;
import com.mortals.xhx.common.code.YesNoEnum;
import com.mortals.xhx.module.device.model.DeviceEntity;
import com.mortals.xhx.module.device.model.DeviceQuery;
import com.mortals.xhx.module.device.service.DeviceService;
import com.mortals.xhx.module.hik.camera.model.req.CameraListReq;
import com.mortals.xhx.module.hik.camera.model.rsp.CameraDataInfo;
import com.mortals.xhx.module.hik.camera.model.rsp.CameraInfo;
import com.mortals.xhx.module.hik.camera.service.IHikCameraService;
import com.mortals.xhx.module.hik.face.model.req.plan.PlanRecognBlackListReq;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.ObjectUtils;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* 同步监控视频点
......@@ -31,10 +43,119 @@ public class SyncSiteDeviceTaskImpl implements ITaskExcuteService {
}
/**
* "altitude": null,
* "cameraIndexCode": "d271545ad77c4fb28728101d765d76bb",
* "cameraName": "Camera 02",
* "cameraType": 0,
* "cameraTypeName": "枪机",
* "capabilitySet": "event_audio,io,MixMixedRoot,MixRoot,event_veh_recognition,face,event_vss,record,vss,ptz,event_io,net,maintenance,event_device,status,event_body,event_face,event_rule,event_veh",
* "capabilitySetName": "音频事件能力,IO能力,,,车辆识别事件能力,人脸识别能力,视频事件能力,录像能力,视频能力,云台能力,IO事件能力,网络参数配置能力,设备维护能力,设备事件能力,状态能力,人体事件能力,人脸事件能力,行为分析事件能力,车辆事件能力",
* "intelligentSet": null,
* "intelligentSetName": null,
* "channelNo": "2",
* "channelType": "analog",
* "channelTypeName": "模拟通道",
* "createTime": "2023-04-10T13:59:08.194+08:00",
* "encodeDevIndexCode": "f01277c1d6f842b581e6931fa7cc34b4",
* "encodeDevResourceType": null,
* "encodeDevResourceTypeName": null,
* "gbIndexCode": null,
* "installLocation": null,
* "keyBoardCode": null,
* "latitude": null,
* "longitude": null,
* "pixel": null,
* "ptz": null,
* "ptzName": null,
* "ptzController": null,
* "ptzControllerName": null,
* "recordLocation": null,
* "recordLocationName": null,
* "regionIndexCode": "root000000",
* "status": null,
* "statusName": null,
* "transType": 1,
* "transTypeName": "TCP",
* "treatyType": null,
* "treatyTypeName": null,
* "viewshed": null,
* "updateTime": "2023-04-10T15:11:56.446+08:00"
*/
private void syncDevice() {
PlanRecognBlackListReq planRecognBlackListReq = new PlanRecognBlackListReq();
// planRecognBlackListReq.set
CameraListReq cameraListReq = new CameraListReq();
cameraListReq.setPageNo(1);
cameraListReq.setPageSize(200);
Rest<CameraDataInfo> rest = hikCameraService.findCameraList(cameraListReq);
if (rest.getCode() == YesNoEnum.YES.getValue()) {
List<CameraInfo> cameraDataInfoList = rest.getData().getList();
log.info("视频设备总数量:{}", cameraDataInfoList.size());
if (!ObjectUtils.isEmpty(cameraDataInfoList)) {
List<DeviceEntity> newDeviceList = cameraDataInfoList.stream().map(camera -> {
DeviceEntity deviceEntity = new DeviceEntity();
deviceEntity.initAttrValue();
deviceEntity.setDeviceName(camera.getCameraName());
deviceEntity.setDeviceId(camera.getCameraIndexCode());
deviceEntity.setDeviceCode(camera.getCameraIndexCode());
deviceEntity.setCameraType(camera.getCameraType());
deviceEntity.setCameraTypeName(camera.getCameraTypeName());
deviceEntity.setCapabilitySet(camera.getCapabilitySet());
deviceEntity.setCapabilitySetName(camera.getCapabilitySetName());
deviceEntity.setRegionIndexCode(camera.getRegionIndexCode());
deviceEntity.setEncodeDevIndexCode(camera.getEncodeDevIndexCode());
deviceEntity.setCreateTime(camera.getCreateTime());
deviceEntity.setUpdateTime(camera.getUpdateTime());
return deviceEntity;
}).collect(Collectors.toList());
List<DeviceEntity> oldDeviceList = deviceService.find(new DeviceQuery());
Map<String, DeviceEntity> oldDeviceMap = oldDeviceList.stream().collect(Collectors.toMap(x -> x.getDeviceCode(), y -> y, (o, n) -> n));
Map<String, DeviceEntity> newDeviceMap = newDeviceList.stream().collect(Collectors.toMap(x -> x.getDeviceCode(), y -> y, (o, n) -> n));
List<DeviceEntity> saveDeviceList = newDeviceList.stream().map(item -> {
if (!oldDeviceMap.containsKey(item.getDeviceCode())) {
item.setCreateUserId(1L);
item.setCreateUserName("系统管理员");
return item;
}
return null;
}).filter(f -> f != null).collect(Collectors.toList());
//做差集
List<Long> delDeviceList = oldDeviceList.stream().map(item -> {
if (!newDeviceMap.containsKey(item.getDeviceCode())) {
return item.getId();
}
return null;
}).filter(f -> f != null).collect(Collectors.toList());
if (!ObjectUtils.isEmpty(saveDeviceList)) {
log.info("设备新增,size:{}", saveDeviceList.size());
deviceService.save(saveDeviceList);
}
if (!ObjectUtils.isEmpty(delDeviceList)) {
log.info("设备删除,size:{}", delDeviceList.size());
deviceService.remove(delDeviceList,null);
}
}
}else{
log.info("同步设备异常=>{}", JSON.toJSONString(rest));
}
// planRecognBlackListReq.set
//hikCameraService.findPlanRecognBlackList()
......
package com.mortals.xhx.daemon.task;
import com.alibaba.fastjson.JSON;
import com.mortals.framework.common.Rest;
import com.mortals.framework.exception.AppException;
import com.mortals.framework.service.ITask;
import com.mortals.framework.service.ITaskExcuteService;
import com.mortals.xhx.base.system.user.model.UserEntity;
import com.mortals.xhx.base.system.user.model.UserQuery;
import com.mortals.xhx.base.system.user.service.UserService;
import com.mortals.xhx.common.code.YesNoEnum;
import com.mortals.xhx.common.pdu.RespData;
import com.mortals.xhx.common.pdu.user.UserPdu;
import com.mortals.xhx.feign.user.IUserFeign;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression;
import org.springframework.stereotype.Service;
import org.springframework.util.ObjectUtils;
import java.util.List;
/**
* 同步用户,唯一标识为用户名。
*/
@Slf4j
@Service("SyncUserTask")
@ConditionalOnExpression("'${platform.type:null}'=='cloud'")
public class SyncUserTaskImpl implements ITaskExcuteService {
@Autowired
private IUserFeign userFeign;
@Autowired
private UserService userService;
@Override
public void excuteTask(ITask task) throws AppException {
log.info("同步用户任务");
UserPdu userPdu = new UserPdu();
userPdu.setPage(1);
userPdu.setSize(-1);
Rest<RespData<List<UserPdu>>> resp = userFeign.list(userPdu);
if (resp.getCode() == YesNoEnum.YES.getValue()) {
//同步更新用户,以loginname为唯一标识,密码默认与用户相同
resp.getData().getData().forEach(user -> {
log.info("loginName:{}", user.getLoginName());
UserEntity tempEntity = userService.selectOne(new UserQuery().loginName(user.getLoginName()));
if (ObjectUtils.isEmpty(tempEntity)) {
UserEntity userEntity = new UserEntity();
BeanUtils.copyProperties(user, userEntity, new String[]{"id","lastLoginTime", "lastLoginAddress"});
log.info("新增:{}", JSON.toJSONString(userEntity));
userService.getUserDao().insert(userEntity);
}else {
//更新基本信息
UserEntity userEntity = new UserEntity();
BeanUtils.copyProperties(user, userEntity, new String[]{"loginPwd","userType","status","lastLoginTime", "lastLoginAddress"});
log.info("更新:{}", JSON.toJSONString(userEntity));
userService.getUserDao().update(userEntity);
}
});
}
}
@Override
public void stopTask(ITask task) throws AppException {
}
}
package com.mortals.xhx.daemon.task;
import cn.hutool.core.codec.Base64;
import cn.hutool.core.io.FileUtil;
import com.alibaba.fastjson.JSON;
import com.mortals.framework.common.Rest;
import com.mortals.framework.exception.AppException;
import com.mortals.framework.service.ITask;
import com.mortals.framework.service.ITaskExcuteService;
import com.mortals.xhx.base.system.upload.service.UploadService;
import com.mortals.xhx.base.system.user.model.UserEntity;
import com.mortals.xhx.base.system.user.model.UserQuery;
import com.mortals.xhx.base.system.user.service.UserService;
import com.mortals.xhx.common.code.YesNoEnum;
import com.mortals.xhx.common.pdu.RespData;
import com.mortals.xhx.common.pdu.user.UserPdu;
import com.mortals.xhx.feign.user.IUserFeign;
import com.mortals.xhx.module.hik.face.service.IHikFaceService;
import com.mortals.xhx.module.person.model.PersonEntity;
import com.mortals.xhx.module.person.model.PersonQuery;
import com.mortals.xhx.module.person.service.PersonService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression;
import org.springframework.stereotype.Service;
import org.springframework.util.ObjectUtils;
import java.util.List;
/**
* 同步用户到海康指定库。
*/
@Slf4j
@Service("SyncUserToHikTask")
public class SyncUserToHikTaskImpl implements ITaskExcuteService {
@Autowired
private PersonService personService;
@Autowired
private IHikFaceService hikFaceService;
@Autowired
private UploadService uploadService;
@Override
public void excuteTask(ITask task) throws AppException {
log.info("同步用户人脸到海康任务");
List<PersonEntity> personUnHikList = personService.find(new PersonQuery().inFaceHk(YesNoEnum.NO.getValue()));
if (!ObjectUtils.isEmpty(personUnHikList)) {
for (PersonEntity personEntity : personUnHikList) {
//查询图片并转成base64
if (!ObjectUtils.isEmpty(personEntity.getPhoto())) {
String filePath = uploadService.getFilePath(personEntity.getPhoto());
byte[] bytes = FileUtil.readBytes(filePath);
if (bytes.length > 0) {
String picBase64Data = Base64.encode(bytes);
//log.info("picBase64Data=>{}", picBase64Data);
}
}
// FileUtil.read
}
}
}
@Override
public void stopTask(ITask task) throws AppException {
}
}
package com.mortals.xhx.module.hik.camera.model.rsp;
import com.alibaba.fastjson.annotation.JSONField;
import lombok.Data;
import java.util.List;
@Data
public class CameraDataInfo{
private String regionIndexCode;
private String altitude;
private String capabilitySetName;
private String channelNo;
private String latitude;
private String channelType;
private String keyBoardCode;
private String ptzControllerName;
private String viewshed;
private String cameraIndexCode;
private String recordLocation;
private String cameraTypeName;
private String intelligentSet;
private String encodeDevResourceType;
private String statusName;
private String encodeDevResourceTypeName;
private String recordLocationName;
private String treatyTypeName;
private String channelTypeName;
private String transTypeName;
private int pixel;
private String cameraName;
private String longitude;
private String installLocation;
private String ptzName;
@JSONField(format = "yyyy-MM-dd'T'HH:mm:ssXXX")
private Data updateTime;
private String gbIndexCode;
private int ptzController;
private int cameraType;
private String treatyType;
private String intelligentSetName;
private int transType;
@JSONField(format = "yyyy-MM-dd'T'HH:mm:ssXXX")
private Data createTime;
private int ptz;
private String capabilitySet;
private String encodeDevIndexCode;
private int status;
}
\ No newline at end of file
public class CameraDataInfo {
private List<CameraInfo> list;
private Integer total;
private Integer totalPage;
private Integer pageNo;
}
package com.mortals.xhx.module.hik.camera.model.rsp;
import com.alibaba.fastjson.annotation.JSONField;
import lombok.Data;
import java.util.Date;
@Data
public class CameraInfo {
private String regionIndexCode;
private String altitude;
private String capabilitySetName;
private String channelNo;
private String latitude;
private String channelType;
private String keyBoardCode;
private String ptzControllerName;
private String viewshed;
private String cameraIndexCode;
private String recordLocation;
private String cameraTypeName;
private String intelligentSet;
private String encodeDevResourceType;
private String statusName;
private String encodeDevResourceTypeName;
private String recordLocationName;
private String treatyTypeName;
private String channelTypeName;
private String transTypeName;
private int pixel;
private String cameraName;
private String longitude;
private String installLocation;
private String ptzName;
@JSONField(format = "yyyy-MM-dd'T'HH:mm:ssXXX")
private Date updateTime;
private String gbIndexCode;
private int ptzController;
private int cameraType;
private String treatyType;
private String intelligentSetName;
private int transType;
@JSONField(format = "yyyy-MM-dd'T'HH:mm:ssXXX")
private Date createTime;
private int ptz;
private String capabilitySet;
private String encodeDevIndexCode;
private int status;
}
\ No newline at end of file
......@@ -4,10 +4,6 @@ package com.mortals.xhx.module.hik.camera.service;
import com.mortals.framework.common.Rest;
import com.mortals.xhx.module.hik.camera.model.req.CameraListReq;
import com.mortals.xhx.module.hik.camera.model.rsp.CameraDataInfo;
import com.mortals.xhx.module.hik.face.model.req.plan.PlanRecognBlackListReq;
import com.mortals.xhx.module.hik.face.model.rsp.plan.PlanRecognBlackInfo;
import java.util.List;
/**
* 海康人员接口对接类
......@@ -20,6 +16,6 @@ public interface IHikCameraService {
* @param cameraListReq
* @return
*/
Rest<List<CameraDataInfo>> findCameraList(CameraListReq cameraListReq);
Rest<CameraDataInfo> findCameraList(CameraListReq cameraListReq);
}
......@@ -8,8 +8,8 @@ import com.mortals.framework.common.Rest;
import com.mortals.xhx.module.hik.AbstractHikService;
import com.mortals.xhx.module.hik.camera.model.req.CameraListReq;
import com.mortals.xhx.module.hik.camera.model.rsp.CameraDataInfo;
import com.mortals.xhx.module.hik.camera.model.rsp.CameraInfo;
import com.mortals.xhx.module.hik.camera.service.IHikCameraService;
import com.mortals.xhx.module.hik.face.model.rsp.plan.PlanRecognBlackInfo;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
......@@ -27,7 +27,7 @@ public class HikCameraServiceImpl extends AbstractHikService implements IHikCame
@Override
public Rest<List<CameraDataInfo>> findCameraList(CameraListReq cameraListReq) {
public Rest<CameraDataInfo> findCameraList(CameraListReq cameraListReq) {
ArtemisConfig config = getArtemisConfig();
String getCamsApi = ARTEMIS_PATH + "/api/resource/v1/cameras";
path.put(protocol, getCamsApi);
......@@ -35,7 +35,7 @@ public class HikCameraServiceImpl extends AbstractHikService implements IHikCame
log.info("camera list req=>{}", JSON.toJSONString(cameraListReq));
String respJson = ArtemisHttpUtil.doPostStringArtemis(config, path, JSON.toJSONString(cameraListReq), null, null, "application/json");
log.info("camera list resp=>{}", respJson);
Rest<List<CameraDataInfo>> rest = JSON.parseObject(respJson, new TypeReference<Rest<List<CameraDataInfo>>>() {
Rest<CameraDataInfo> rest = JSON.parseObject(respJson, new TypeReference<Rest<CameraDataInfo>>() {
});
if (rest.getCode() == 0) {
return Rest.ok(rest.getData());
......
package com.mortals.xhx.module.monitor.dao;
import com.mortals.framework.dao.ICRUDDao;
import com.mortals.xhx.module.monitor.model.MonitorAlarmEntity;
import java.util.List;
/**
* 监测预警记录Dao
* 监测预警记录 DAO接口
*
* @author zxfei
* @date 2023-04-15
*/
public interface MonitorAlarmDao extends ICRUDDao<MonitorAlarmEntity,Long>{
}
package com.mortals.xhx.module.monitor.dao;
import com.mortals.framework.dao.ICRUDDao;
import com.mortals.xhx.module.monitor.model.MonitorAlarmRecordEntity;
import java.util.List;
/**
* 监测预警记录详细记录Dao
* 监测预警记录详细记录 DAO接口
*
* @author zxfei
* @date 2023-04-15
*/
public interface MonitorAlarmRecordDao extends ICRUDDao<MonitorAlarmRecordEntity,Long>{
}
package com.mortals.xhx.module.monitor.dao.ibatis;
import org.springframework.stereotype.Repository;
import com.mortals.xhx.module.monitor.dao.MonitorAlarmDao;
import com.mortals.xhx.module.monitor.model.MonitorAlarmEntity;
import java.util.Date;
import com.mortals.framework.dao.ibatis.BaseCRUDDaoMybatis;
import java.util.List;
/**
* 监测预警记录DaoImpl DAO接口
*
* @author zxfei
* @date 2023-04-15
*/
@Repository("monitorAlarmDao")
public class MonitorAlarmDaoImpl extends BaseCRUDDaoMybatis<MonitorAlarmEntity,Long> implements MonitorAlarmDao {
}
package com.mortals.xhx.module.monitor.dao.ibatis;
import org.springframework.stereotype.Repository;
import com.mortals.xhx.module.monitor.dao.MonitorAlarmRecordDao;
import com.mortals.xhx.module.monitor.model.MonitorAlarmRecordEntity;
import java.util.Date;
import com.mortals.framework.dao.ibatis.BaseCRUDDaoMybatis;
import java.util.List;
/**
* 监测预警记录详细记录DaoImpl DAO接口
*
* @author zxfei
* @date 2023-04-15
*/
@Repository("monitorAlarmRecordDao")
public class MonitorAlarmRecordDaoImpl extends BaseCRUDDaoMybatis<MonitorAlarmRecordEntity,Long> implements MonitorAlarmRecordDao {
}
package com.mortals.xhx.module.monitor.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.monitor.model.vo.MonitorAlarmVo;
/**
* 监测预警记录实体对象
*
* @author zxfei
* @date 2023-04-15
*/
public class MonitorAlarmEntity extends MonitorAlarmVo {
private static final long serialVersionUID = 1L;
/**
* 站点Id
*/
private Long siteId;
/**
* 站点名称
*/
private String siteName;
/**
* 人员id
*/
@Excel(name = "人员id")
private Long personId;
/**
* 姓名
*/
@Excel(name = "姓名")
private String name;
/**
* 联系方式
*/
@Excel(name = "联系方式")
private String contact;
/**
* 身份证号码
*/
@Excel(name = "身份证号码")
private String idNumber;
/**
* 识别频次
*/
private Integer identifyNum;
/**
* 最后识别时间
*/
@Excel(name = "最后识别时间", width = 30, dateFormat = "yyyy-MM-dd")
private Date lastIdentifyTime;
/**
* 年
*/
private Integer year;
/**
* 月
*/
private Integer month;
/**
* 日
*/
private Integer day;
public MonitorAlarmEntity(){}
/**
* 获取 站点Id
* @return Long
*/
public Long getSiteId(){
return siteId;
}
/**
* 设置 站点Id
* @param siteId
*/
public void setSiteId(Long siteId){
this.siteId = siteId;
}
/**
* 获取 站点名称
* @return String
*/
public String getSiteName(){
return siteName;
}
/**
* 设置 站点名称
* @param siteName
*/
public void setSiteName(String siteName){
this.siteName = siteName;
}
/**
* 获取 人员id
* @return Long
*/
public Long getPersonId(){
return personId;
}
/**
* 设置 人员id
* @param personId
*/
public void setPersonId(Long personId){
this.personId = personId;
}
/**
* 获取 姓名
* @return String
*/
public String getName(){
return name;
}
/**
* 设置 姓名
* @param name
*/
public void setName(String name){
this.name = name;
}
/**
* 获取 联系方式
* @return String
*/
public String getContact(){
return contact;
}
/**
* 设置 联系方式
* @param contact
*/
public void setContact(String contact){
this.contact = contact;
}
/**
* 获取 身份证号码
* @return String
*/
public String getIdNumber(){
return idNumber;
}
/**
* 设置 身份证号码
* @param idNumber
*/
public void setIdNumber(String idNumber){
this.idNumber = idNumber;
}
/**
* 获取 识别频次
* @return Integer
*/
public Integer getIdentifyNum(){
return identifyNum;
}
/**
* 设置 识别频次
* @param identifyNum
*/
public void setIdentifyNum(Integer identifyNum){
this.identifyNum = identifyNum;
}
/**
* 获取 最后识别时间
* @return Date
*/
public Date getLastIdentifyTime(){
return lastIdentifyTime;
}
/**
* 设置 最后识别时间
* @param lastIdentifyTime
*/
public void setLastIdentifyTime(Date lastIdentifyTime){
this.lastIdentifyTime = lastIdentifyTime;
}
/**
* 获取 年
* @return Integer
*/
public Integer getYear(){
return year;
}
/**
* 设置 年
* @param year
*/
public void setYear(Integer year){
this.year = year;
}
/**
* 获取 月
* @return Integer
*/
public Integer getMonth(){
return month;
}
/**
* 设置 月
* @param month
*/
public void setMonth(Integer month){
this.month = month;
}
/**
* 获取 日
* @return Integer
*/
public Integer getDay(){
return day;
}
/**
* 设置 日
* @param day
*/
public void setDay(Integer day){
this.day = day;
}
@Override
public int hashCode() {
return this.getId().hashCode();
}
@Override
public boolean equals(Object obj) {
if (obj == null) return false;
if (obj instanceof MonitorAlarmEntity) {
MonitorAlarmEntity tmp = (MonitorAlarmEntity) obj;
if (this.getId() == tmp.getId()) {
return true;
}
}
return false;
}
public String toString(){
StringBuilder sb = new StringBuilder("");
sb.append(",siteId:").append(getSiteId());
sb.append(",siteName:").append(getSiteName());
sb.append(",personId:").append(getPersonId());
sb.append(",name:").append(getName());
sb.append(",contact:").append(getContact());
sb.append(",idNumber:").append(getIdNumber());
sb.append(",identifyNum:").append(getIdentifyNum());
sb.append(",lastIdentifyTime:").append(getLastIdentifyTime());
sb.append(",year:").append(getYear());
sb.append(",month:").append(getMonth());
sb.append(",day:").append(getDay());
return sb.toString();
}
public void initAttrValue(){
this.siteId = null;
this.siteName = "";
this.personId = null;
this.name = "";
this.contact = "";
this.idNumber = "";
this.identifyNum = 0;
this.lastIdentifyTime = null;
this.year = null;
this.month = null;
this.day = null;
}
}
\ No newline at end of file
package com.mortals.xhx.module.monitor.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.monitor.model.vo.MonitorAlarmRecordVo;
/**
* 监测预警记录详细记录实体对象
*
* @author zxfei
* @date 2023-04-15
*/
public class MonitorAlarmRecordEntity extends MonitorAlarmRecordVo {
private static final long serialVersionUID = 1L;
/**
* 告警Id
*/
private Long alarmId;
/**
* 预约业务
*/
@Excel(name = "预约业务")
private String reservationService;
/**
* 预约编号
*/
@Excel(name = "预约编号")
private String reservationNumber;
/**
* 监测时间
*/
@Excel(name = "监测时间", width = 30, dateFormat = "yyyy-MM-dd")
private Date monitorTime;
/**
* 监测设备
*/
@Excel(name = "监测设备")
private Long monitorDeviceId;
/**
* 监测设备名称
*/
@Excel(name = "监测设备名称")
private String monitorDevice;
/**
* 签到方式(0.自动签到,1.手动签到)
*/
@Excel(name = "签到方式", readConverterExp = "0=自动签到,1=手动签到")
private Integer checkInMethod;
/**
* 监测凭证
*/
@Excel(name = "监测凭证")
private String monitorCertificate;
/**
* 相对图片pic
*/
private String picUri;
/**
* 图片资源唯一标识
*/
private String serverIndexCode;
public MonitorAlarmRecordEntity(){}
/**
* 获取 告警Id
* @return Long
*/
public Long getAlarmId(){
return alarmId;
}
/**
* 设置 告警Id
* @param alarmId
*/
public void setAlarmId(Long alarmId){
this.alarmId = alarmId;
}
/**
* 获取 预约业务
* @return String
*/
public String getReservationService(){
return reservationService;
}
/**
* 设置 预约业务
* @param reservationService
*/
public void setReservationService(String reservationService){
this.reservationService = reservationService;
}
/**
* 获取 预约编号
* @return String
*/
public String getReservationNumber(){
return reservationNumber;
}
/**
* 设置 预约编号
* @param reservationNumber
*/
public void setReservationNumber(String reservationNumber){
this.reservationNumber = reservationNumber;
}
/**
* 获取 监测时间
* @return Date
*/
public Date getMonitorTime(){
return monitorTime;
}
/**
* 设置 监测时间
* @param monitorTime
*/
public void setMonitorTime(Date monitorTime){
this.monitorTime = monitorTime;
}
/**
* 获取 监测设备
* @return Long
*/
public Long getMonitorDeviceId(){
return monitorDeviceId;
}
/**
* 设置 监测设备
* @param monitorDeviceId
*/
public void setMonitorDeviceId(Long monitorDeviceId){
this.monitorDeviceId = monitorDeviceId;
}
/**
* 获取 监测设备名称
* @return String
*/
public String getMonitorDevice(){
return monitorDevice;
}
/**
* 设置 监测设备名称
* @param monitorDevice
*/
public void setMonitorDevice(String monitorDevice){
this.monitorDevice = monitorDevice;
}
/**
* 获取 签到方式(0.自动签到,1.手动签到)
* @return Integer
*/
public Integer getCheckInMethod(){
return checkInMethod;
}
/**
* 设置 签到方式(0.自动签到,1.手动签到)
* @param checkInMethod
*/
public void setCheckInMethod(Integer checkInMethod){
this.checkInMethod = checkInMethod;
}
/**
* 获取 监测凭证
* @return String
*/
public String getMonitorCertificate(){
return monitorCertificate;
}
/**
* 设置 监测凭证
* @param monitorCertificate
*/
public void setMonitorCertificate(String monitorCertificate){
this.monitorCertificate = monitorCertificate;
}
/**
* 获取 相对图片pic
* @return String
*/
public String getPicUri(){
return picUri;
}
/**
* 设置 相对图片pic
* @param picUri
*/
public void setPicUri(String picUri){
this.picUri = picUri;
}
/**
* 获取 图片资源唯一标识
* @return String
*/
public String getServerIndexCode(){
return serverIndexCode;
}
/**
* 设置 图片资源唯一标识
* @param serverIndexCode
*/
public void setServerIndexCode(String serverIndexCode){
this.serverIndexCode = serverIndexCode;
}
@Override
public int hashCode() {
return this.getId().hashCode();
}
@Override
public boolean equals(Object obj) {
if (obj == null) return false;
if (obj instanceof MonitorAlarmRecordEntity) {
MonitorAlarmRecordEntity tmp = (MonitorAlarmRecordEntity) obj;
if (this.getId() == tmp.getId()) {
return true;
}
}
return false;
}
public String toString(){
StringBuilder sb = new StringBuilder("");
sb.append(",alarmId:").append(getAlarmId());
sb.append(",reservationService:").append(getReservationService());
sb.append(",reservationNumber:").append(getReservationNumber());
sb.append(",monitorTime:").append(getMonitorTime());
sb.append(",monitorDeviceId:").append(getMonitorDeviceId());
sb.append(",monitorDevice:").append(getMonitorDevice());
sb.append(",checkInMethod:").append(getCheckInMethod());
sb.append(",monitorCertificate:").append(getMonitorCertificate());
sb.append(",picUri:").append(getPicUri());
sb.append(",serverIndexCode:").append(getServerIndexCode());
return sb.toString();
}
public void initAttrValue(){
this.alarmId = null;
this.reservationService = "";
this.reservationNumber = "";
this.monitorTime = null;
this.monitorDeviceId = null;
this.monitorDevice = "";
this.checkInMethod = 0;
this.monitorCertificate = "";
this.picUri = "";
this.serverIndexCode = "";
}
}
\ No newline at end of file
package com.mortals.xhx.module.monitor.model.vo;
import com.mortals.framework.model.BaseEntityLong;
import com.mortals.xhx.module.monitor.model.MonitorAlarmRecordEntity;
import java.util.ArrayList;
import java.util.List;
import lombok.Data;
/**
* 监测预警记录详细记录视图对象
*
* @author zxfei
* @date 2023-04-15
*/
@Data
public class MonitorAlarmRecordVo extends BaseEntityLong {
}
\ No newline at end of file
package com.mortals.xhx.module.monitor.model.vo;
import com.mortals.framework.model.BaseEntityLong;
import com.mortals.xhx.module.monitor.model.MonitorAlarmEntity;
import java.util.ArrayList;
import java.util.List;
import lombok.Data;
/**
* 监测预警记录视图对象
*
* @author zxfei
* @date 2023-04-15
*/
@Data
public class MonitorAlarmVo extends BaseEntityLong {
}
\ No newline at end of file
package com.mortals.xhx.module.monitor.service;
import com.mortals.framework.service.ICRUDService;
import com.mortals.xhx.module.monitor.model.MonitorAlarmRecordEntity;
/**
* MonitorAlarmRecordService
*
* 监测预警记录详细记录 service接口
*
* @author zxfei
* @date 2023-04-15
*/
public interface MonitorAlarmRecordService extends ICRUDService<MonitorAlarmRecordEntity,Long>{
}
\ No newline at end of file
package com.mortals.xhx.module.monitor.service;
import com.mortals.framework.service.ICRUDService;
import com.mortals.xhx.module.monitor.model.MonitorAlarmEntity;
/**
* MonitorAlarmService
*
* 监测预警记录 service接口
*
* @author zxfei
* @date 2023-04-15
*/
public interface MonitorAlarmService extends ICRUDService<MonitorAlarmEntity,Long>{
}
\ No newline at end of file
package com.mortals.xhx.module.monitor.service.impl;
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.monitor.dao.MonitorAlarmRecordDao;
import com.mortals.xhx.module.monitor.model.MonitorAlarmRecordEntity;
import com.mortals.xhx.module.monitor.service.MonitorAlarmRecordService;
/**
* MonitorAlarmRecordService
* 监测预警记录详细记录 service实现
*
* @author zxfei
* @date 2023-04-15
*/
@Service("monitorAlarmRecordService")
public class MonitorAlarmRecordServiceImpl extends AbstractCRUDServiceImpl<MonitorAlarmRecordDao, MonitorAlarmRecordEntity, Long> implements MonitorAlarmRecordService {
}
\ No newline at end of file
package com.mortals.xhx.module.monitor.service.impl;
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.monitor.dao.MonitorAlarmDao;
import com.mortals.xhx.module.monitor.model.MonitorAlarmEntity;
import com.mortals.xhx.module.monitor.service.MonitorAlarmService;
/**
* MonitorAlarmService
* 监测预警记录 service实现
*
* @author zxfei
* @date 2023-04-15
*/
@Service("monitorAlarmService")
public class MonitorAlarmServiceImpl extends AbstractCRUDServiceImpl<MonitorAlarmDao, MonitorAlarmEntity, Long> implements MonitorAlarmService {
}
\ No newline at end of file
package com.mortals.xhx.module.monitor.web;
import com.mortals.framework.web.BaseCRUDJsonBodyMappingController;
import com.mortals.xhx.base.system.param.service.ParamService;
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.monitor.model.MonitorAlarmEntity;
import com.mortals.xhx.module.monitor.service.MonitorAlarmService;
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 2023-04-15
*/
@RestController
@RequestMapping("monitor/alarm")
public class MonitorAlarmController extends BaseCRUDJsonBodyMappingController<MonitorAlarmService,MonitorAlarmEntity,Long> {
@Autowired
private ParamService paramService;
public MonitorAlarmController(){
super.setModuleDesc( "监测预警记录");
}
@Override
protected void init(Map<String, Object> model, Context context) {
super.init(model, context);
}
}
\ No newline at end of file
package com.mortals.xhx.module.monitor.web;
import com.mortals.framework.web.BaseCRUDJsonBodyMappingController;
import com.mortals.xhx.base.system.param.service.ParamService;
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.monitor.model.MonitorAlarmRecordEntity;
import com.mortals.xhx.module.monitor.service.MonitorAlarmRecordService;
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 2023-04-15
*/
@RestController
@RequestMapping("monitor/alarm/record")
public class MonitorAlarmRecordController extends BaseCRUDJsonBodyMappingController<MonitorAlarmRecordService,MonitorAlarmRecordEntity,Long> {
@Autowired
private ParamService paramService;
public MonitorAlarmRecordController(){
super.setModuleDesc( "监测预警记录详细记录");
}
@Override
protected void init(Map<String, Object> model, Context context) {
this.addDict(model, "checkInMethod", paramService.getParamBySecondOrganize("MonitorAlarmRecord","checkInMethod"));
super.init(model, context);
}
}
\ No newline at end of file
package com.mortals.xhx.module.notice.dao;
import com.mortals.framework.dao.ICRUDDao;
import com.mortals.xhx.module.notice.model.NoticeEntity;
import java.util.List;
/**
* 用户消息Dao
* 用户消息 DAO接口
*
* @author zxfei
* @date 2023-04-15
*/
public interface NoticeDao extends ICRUDDao<NoticeEntity,Long>{
}
package com.mortals.xhx.module.notice.dao.ibatis;
import org.springframework.stereotype.Repository;
import com.mortals.xhx.module.notice.dao.NoticeDao;
import com.mortals.xhx.module.notice.model.NoticeEntity;
import java.util.Date;
import com.mortals.framework.dao.ibatis.BaseCRUDDaoMybatis;
import java.util.List;
/**
* 用户消息DaoImpl DAO接口
*
* @author zxfei
* @date 2023-04-15
*/
@Repository("noticeDao")
public class NoticeDaoImpl extends BaseCRUDDaoMybatis<NoticeEntity,Long> implements NoticeDao {
}
package com.mortals.xhx.module.notice.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.notice.model.vo.NoticeVo;
/**
* 用户消息实体对象
*
* @author zxfei
* @date 2023-04-15
*/
public class NoticeEntity extends NoticeVo {
private static final long serialVersionUID = 1L;
/**
* 接收消息的用户的唯一标识符
*/
private Long userId;
/**
* 消息的标题
*/
@Excel(name = "消息的标题")
private String title;
/**
* 消息的内容
*/
@Excel(name = "消息的内容")
private String content;
/**
* 是否已读 (0.否,1.是)
*/
@Excel(name = "是否已读 ", readConverterExp = "0=否,1.是")
private Date read;
/**
* 消息的优先级,越高表示越紧急,不为空
*/
@Excel(name = "消息的优先级,越高表示越紧急,不为空")
private Integer priority;
/**
* 消息的过期时间,超过此时间则自动标记为已读
*/
private Date expireTime;
/**
* 消息的来源类型,例如“系统”、“好友”等,可以为空
*/
@Excel(name = "消息的来源类型,例如“系统”、“好友”等,可以为空")
private String sourceType;
public NoticeEntity(){}
/**
* 获取 接收消息的用户的唯一标识符
* @return Long
*/
public Long getUserId(){
return userId;
}
/**
* 设置 接收消息的用户的唯一标识符
* @param userId
*/
public void setUserId(Long userId){
this.userId = userId;
}
/**
* 获取 消息的标题
* @return String
*/
public String getTitle(){
return title;
}
/**
* 设置 消息的标题
* @param title
*/
public void setTitle(String title){
this.title = title;
}
/**
* 获取 消息的内容
* @return String
*/
public String getContent(){
return content;
}
/**
* 设置 消息的内容
* @param content
*/
public void setContent(String content){
this.content = content;
}
/**
* 获取 是否已读 (0.否,1.是)
* @return Date
*/
public Date getRead(){
return read;
}
/**
* 设置 是否已读 (0.否,1.是)
* @param read
*/
public void setRead(Date read){
this.read = read;
}
/**
* 获取 消息的优先级,越高表示越紧急,不为空
* @return Integer
*/
public Integer getPriority(){
return priority;
}
/**
* 设置 消息的优先级,越高表示越紧急,不为空
* @param priority
*/
public void setPriority(Integer priority){
this.priority = priority;
}
/**
* 获取 消息的过期时间,超过此时间则自动标记为已读
* @return Date
*/
public Date getExpireTime(){
return expireTime;
}
/**
* 设置 消息的过期时间,超过此时间则自动标记为已读
* @param expireTime
*/
public void setExpireTime(Date expireTime){
this.expireTime = expireTime;
}
/**
* 获取 消息的来源类型,例如“系统”、“好友”等,可以为空
* @return String
*/
public String getSourceType(){
return sourceType;
}
/**
* 设置 消息的来源类型,例如“系统”、“好友”等,可以为空
* @param sourceType
*/
public void setSourceType(String sourceType){
this.sourceType = sourceType;
}
@Override
public int hashCode() {
return this.getId().hashCode();
}
@Override
public boolean equals(Object obj) {
if (obj == null) return false;
if (obj instanceof NoticeEntity) {
NoticeEntity tmp = (NoticeEntity) obj;
if (this.getId() == tmp.getId()) {
return true;
}
}
return false;
}
public String toString(){
StringBuilder sb = new StringBuilder("");
sb.append(",userId:").append(getUserId());
sb.append(",title:").append(getTitle());
sb.append(",content:").append(getContent());
sb.append(",read:").append(getRead());
sb.append(",priority:").append(getPriority());
sb.append(",expireTime:").append(getExpireTime());
sb.append(",sourceType:").append(getSourceType());
return sb.toString();
}
public void initAttrValue(){
this.userId = null;
this.title = "";
this.content = "";
this.read = null;
this.priority = 0;
this.expireTime = null;
this.sourceType = "";
}
}
\ No newline at end of file
package com.mortals.xhx.module.notice.model.vo;
import com.mortals.framework.model.BaseEntityLong;
import com.mortals.xhx.module.notice.model.NoticeEntity;
import java.util.ArrayList;
import java.util.List;
import lombok.Data;
/**
* 用户消息视图对象
*
* @author zxfei
* @date 2023-04-15
*/
@Data
public class NoticeVo extends BaseEntityLong {
}
\ No newline at end of file
package com.mortals.xhx.module.notice.service;
import com.mortals.framework.service.ICRUDService;
import com.mortals.xhx.module.notice.model.NoticeEntity;
/**
* NoticeService
*
* 用户消息 service接口
*
* @author zxfei
* @date 2023-04-15
*/
public interface NoticeService extends ICRUDService<NoticeEntity,Long>{
}
\ No newline at end of file
package com.mortals.xhx.module.notice.service.impl;
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.notice.dao.NoticeDao;
import com.mortals.xhx.module.notice.model.NoticeEntity;
import com.mortals.xhx.module.notice.service.NoticeService;
/**
* NoticeService
* 用户消息 service实现
*
* @author zxfei
* @date 2023-04-15
*/
@Service("noticeService")
public class NoticeServiceImpl extends AbstractCRUDServiceImpl<NoticeDao, NoticeEntity, Long> implements NoticeService {
}
\ No newline at end of file
package com.mortals.xhx.module.notice.web;
import com.mortals.framework.web.BaseCRUDJsonBodyMappingController;
import com.mortals.xhx.base.system.param.service.ParamService;
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.notice.model.NoticeEntity;
import com.mortals.xhx.module.notice.service.NoticeService;
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 2023-04-15
*/
@RestController
@RequestMapping("notice")
public class NoticeController extends BaseCRUDJsonBodyMappingController<NoticeService,NoticeEntity,Long> {
@Autowired
private ParamService paramService;
public NoticeController(){
super.setModuleDesc( "用户消息");
}
@Override
protected void init(Map<String, Object> model, Context context) {
this.addDict(model, "read", paramService.getParamBySecondOrganize("Notice","read"));
super.init(model, context);
}
}
\ No newline at end of file
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