Commit 5c27a53c authored by 赵啸非's avatar 赵啸非

添加识别计划类

parent 8fc26cc4
...@@ -272,3 +272,49 @@ INSERT INTO `mortals_xhx_resource` VALUES (null, '监测预警记录详细记录 ...@@ -272,3 +272,49 @@ INSERT INTO `mortals_xhx_resource` VALUES (null, '监测预警记录详细记录
-- ---------------------------- -- ----------------------------
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', '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); INSERT INTO `mortals_xhx_param` VALUES (null, '签到方式', 'MonitorAlarmRecord', 'checkInMethod', '1', '手动签到', 1, 4, 0, 'checkInMethod', NULL, NULL, NULL);
-- ----------------------------
-- 人脸分组信息菜单 SQL
-- ----------------------------
INSERT INTO `mortals_xhx_menu` VALUES (null, '人脸分组信息', '/face/group/list', 0,'', 1, 1, 0, 0,'',NULL, NULL, NULL, 0, 0, 1, NULL, NULL, NULL);
-- ----------------------------
-- 人脸分组信息资源路径 SQL
-- ----------------------------
INSERT INTO `mortals_xhx_resource` VALUES (null, '人脸分组信息-菜单管理-查看', '/face/group/list,/face/group/view,/face/group/info,/face/group/export,/face/group/exportExcel,/face/group/downloadTemplate,/face/group/download', 3, 0, NULL, NULL, NULL, 0);
INSERT INTO `mortals_xhx_resource` VALUES (null, '人脸分组信息-菜单管理-维护', '/face/group/add,/face/group/edit,/face/group/delete,/face/group/logicDelete,/face/group/save,/face/group/importData', 3, 0, NULL, NULL, NULL, 0);
-- ----------------------------
-- 人脸分组信息参数 SQL
-- ----------------------------
-- ----------------------------
-- 分组人脸信息菜单 SQL
-- ----------------------------
INSERT INTO `mortals_xhx_menu` VALUES (null, '分组人脸信息', '/face/group/person/list', 0,'', 1, 1, 0, 0,'',NULL, NULL, NULL, 0, 0, 1, NULL, NULL, NULL);
-- ----------------------------
-- 分组人脸信息资源路径 SQL
-- ----------------------------
INSERT INTO `mortals_xhx_resource` VALUES (null, '分组人脸信息-菜单管理-查看', '/face/group/person/list,/face/group/person/view,/face/group/person/info,/face/group/person/export,/face/group/person/exportExcel,/face/group/person/downloadTemplate,/face/group/person/download', 3, 0, NULL, NULL, NULL, 0);
INSERT INTO `mortals_xhx_resource` VALUES (null, '分组人脸信息-菜单管理-维护', '/face/group/person/add,/face/group/person/edit,/face/group/person/delete,/face/group/person/logicDelete,/face/group/person/save,/face/group/person/importData', 3, 0, NULL, NULL, NULL, 0);
-- ----------------------------
-- 分组人脸信息参数 SQL
-- ----------------------------
-- ----------------------------
-- 人员识别计划信息菜单 SQL
-- ----------------------------
INSERT INTO `mortals_xhx_menu` VALUES (null, '人员识别计划信息', '/face/plan/list', 0,'', 1, 1, 0, 0,'',NULL, NULL, NULL, 0, 0, 1, NULL, NULL, NULL);
-- ----------------------------
-- 人员识别计划信息资源路径 SQL
-- ----------------------------
INSERT INTO `mortals_xhx_resource` VALUES (null, '人员识别计划信息-菜单管理-查看', '/face/plan/list,/face/plan/view,/face/plan/info,/face/plan/export,/face/plan/exportExcel,/face/plan/downloadTemplate,/face/plan/download', 3, 0, NULL, NULL, NULL, 0);
INSERT INTO `mortals_xhx_resource` VALUES (null, '人员识别计划信息-菜单管理-维护', '/face/plan/add,/face/plan/edit,/face/plan/delete,/face/plan/logicDelete,/face/plan/save,/face/plan/importData', 3, 0, NULL, NULL, NULL, 0);
-- ----------------------------
-- 人员识别计划信息参数 SQL
-- ----------------------------
INSERT INTO `mortals_xhx_param` VALUES (null, '识别计划的类型, BLACK_LIST-重点人员识别计划 WHITE_LIST-陌生人识别计划', 'FacePlan', 'recognitionPlanType', 'BLACK_LIST.重点人员识别计划', 'BLACK_LIST.重点人员识别计划', 1, 4, 0, 'recognitionPlanType', NULL, NULL, NULL);
INSERT INTO `mortals_xhx_param` VALUES (null, '识别计划的类型, BLACK_LIST-重点人员识别计划 WHITE_LIST-陌生人识别计划', 'FacePlan', 'recognitionPlanType', 'WHITE_LIST.陌生人识别计划', 'WHITE_LIST.陌生人识别计划', 1, 4, 0, 'recognitionPlanType', NULL, NULL, NULL);
...@@ -347,3 +347,61 @@ CREATE TABLE mortals_xhx_notice( ...@@ -347,3 +347,61 @@ CREATE TABLE mortals_xhx_notice(
`updateUserId` bigint(20) COMMENT '更新人ID', `updateUserId` bigint(20) COMMENT '更新人ID',
PRIMARY KEY (`id`) PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='用户消息'; ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='用户消息';
-- ----------------------------
-- 人脸分组信息表
-- ----------------------------
DROP TABLE IF EXISTS `mortals_xhx_face_group`;
CREATE TABLE mortals_xhx_face_group(
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`name` varchar(255) NOT NULL COMMENT '名称',
`description` varchar(1024) NOT NULL COMMENT '描述',
`indexCode` 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='人脸分组信息';
-- ----------------------------
-- 分组人脸信息表
-- ----------------------------
DROP TABLE IF EXISTS `mortals_xhx_face_group_person`;
CREATE TABLE mortals_xhx_face_group_person(
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`faceGroupId` bigint(20) COMMENT '人脸分组',
`name` varchar(255) NOT NULL COMMENT '名称',
`indexCode` 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='分组人脸信息';
-- ----------------------------
-- 人员识别计划信息表
-- ----------------------------
DROP TABLE IF EXISTS `mortals_xhx_face_plan`;
CREATE TABLE mortals_xhx_face_plan(
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`indexCode` varchar(255) COMMENT '重点人员计划',
`name` varchar(255) NOT NULL COMMENT '名称',
`faceGroupIndexCodes` varchar(512) NOT NULL COMMENT '人脸分组的唯一标识集合,逗号分割',
`cameraIndexCodes` varchar(512) NOT NULL COMMENT '人脸分组的唯一标识集合,逗号分割',
`recognitionResourceIndexCodes` varchar(2048) NOT NULL COMMENT '识别资源的唯一标识集合,逗号分割',
`recognitionResourceType` varchar(512) NOT NULL COMMENT '识别资源类型,SUPER_BRAIN 超脑,FACE_RECOGNITION_SERVER 脸谱,COMPARISON 深眸',
`recognitionPlanType` varchar(64) NOT NULL COMMENT '识别计划的类型, BLACK_LIST-重点人员识别计划 WHITE_LIST-陌生人识别计划(BLACK_LIST.重点人员识别计划, WHITE_LIST.陌生人识别计划)',
`status` varchar(255) NOT NULL COMMENT '状态',
`available` varchar(255) NOT NULL COMMENT '是否启用,true:启用,false:禁用',
`description` varchar(1024) NOT NULL COMMENT '描述',
`startTime` datetime COMMENT '启用时间',
`usingTime` bigint(20) COMMENT '启用时间',
`threshold` int(4) COMMENT '阈值 0-100',
`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='人员识别计划信息';
...@@ -57,6 +57,7 @@ const router = new Router({ ...@@ -57,6 +57,7 @@ const router = new Router({
...restBuilder('notice', 'notice'), //消息 ...restBuilder('notice', 'notice'), //消息
...restBuilder('monitor/alarm', 'monitor/alarm'), //监控预警 ...restBuilder('monitor/alarm', 'monitor/alarm'), //监控预警
...restBuilder('monitor/alarm/record', 'monitor/alarm/record'), //监控预警记录 ...restBuilder('monitor/alarm/record', 'monitor/alarm/record'), //监控预警记录
...restBuilder('face/plan', 'face/plan'), //人员识别计划
//以下为基础路由配置 //以下为基础路由配置
......
<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="name" v-model="form.name" type="textarea" placeholder="请输入名称"/>
<Field label="描述" prop="description" v-model="form.description" type="textarea" placeholder="请输入描述"/>
<Field label="分组唯一标识" prop="indexCode" v-model="form.indexCode" 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: {
name: [
{required: true,message: "请输入名称", trigger: "blur" },
{max: 255,message: "最多只能录入255个字符",trigger: "blur",},
],
description: [
{required: true,message: "请输入描述", trigger: "blur" },
{max: 1024,message: "最多只能录入1024个字符",trigger: "blur",},
],
indexCode: [
{required: true,message: "请输入分组唯一标识", trigger: "blur" },
{max: 64,message: "最多只能录入64个字符",trigger: "blur",},
],
}
};
},
methods: {
/** 编辑 */
edit(row) {
this.reset()
this.query = { id: row.id };
this.urls.currUrl ="face/group/edit";
this.getData();
this.pageInfo.type="edit"
this.title = "修改人脸分组信息";
},
/** 新增 */
add(row) {
this.reset()
this.urls.currUrl = "face/group/add";
this.getData();
this.pageInfo.type="add"
this.title = "新增人脸分组信息";
},
/** 查看*/
view(row) {
this.reset()
this.query = { id: row.id };
this.urls.currUrl ="face/group/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 = {
name : "",
description : "",
indexCode : "",
};
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: "FaceGroupList",
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: "name"},
{label: "描述", prop: "description"},
{label: "分组唯一标识", prop: "indexCode"},
{
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="人脸分组" prop="faceGroupId" v-model="form.faceGroupId" placeholder="请输入人脸分组"/>
<Field label="名称" prop="name" v-model="form.name" type="textarea" placeholder="请输入名称"/>
<Field label="人脸唯一标识" prop="indexCode" v-model="form.indexCode" 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: {
name: [
{required: true,message: "请输入名称", trigger: "blur" },
{max: 255,message: "最多只能录入255个字符",trigger: "blur",},
],
indexCode: [
{required: true,message: "请输入人脸唯一标识", trigger: "blur" },
{max: 64,message: "最多只能录入64个字符",trigger: "blur",},
],
}
};
},
methods: {
/** 编辑 */
edit(row) {
this.reset()
this.query = { id: row.id };
this.urls.currUrl ="face/group/person/edit";
this.getData();
this.pageInfo.type="edit"
this.title = "修改分组人脸信息";
},
/** 新增 */
add(row) {
this.reset()
this.urls.currUrl = "face/group/person/add";
this.getData();
this.pageInfo.type="add"
this.title = "新增分组人脸信息";
},
/** 查看*/
view(row) {
this.reset()
this.query = { id: row.id };
this.urls.currUrl ="face/group/person/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 = {
faceGroupId : null,
name : "",
indexCode : "",
};
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: "FaceGroupPersonList",
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: "faceGroupId", formatter: this.formatter},
{label: "名称", prop: "name"},
{label: "人脸唯一标识", prop: "indexCode"},
{
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.faceGroupId}}
</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.indexCode}}
</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>
<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.name}}
</el-descriptions-item>
<el-descriptions-item label="描述" label-class-name="labelClass" content-class-name="contentClass">
{{form.description}}
</el-descriptions-item>
<el-descriptions-item label="分组唯一标识" label-class-name="labelClass" content-class-name="contentClass">
{{form.indexCode}}
</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="indexCode" v-model="form.indexCode" type="textarea" placeholder="请输入重点人员计划"/>
<Field label="名称" prop="name" v-model="form.name" type="textarea" placeholder="请输入名称"/>
<Field label="人脸分组的唯一标识集合,逗号分割" prop="faceGroupIndexCodes" v-model="form.faceGroupIndexCodes" type="textarea" placeholder="请输入人脸分组的唯一标识集合,逗号分割"/>
<Field label="人脸分组的唯一标识集合,逗号分割" prop="cameraIndexCodes" v-model="form.cameraIndexCodes" type="textarea" placeholder="请输入人脸分组的唯一标识集合,逗号分割"/>
<Field label="识别资源的唯一标识集合,逗号分割" prop="recognitionResourceIndexCodes" v-model="form.recognitionResourceIndexCodes" type="textarea" placeholder="请输入识别资源的唯一标识集合,逗号分割"/>
<Field label="识别资源类型,SUPER_BRAIN 超脑,FACE_RECOGNITION_SERVER 脸谱,COMPARISON 深眸" prop="recognitionResourceType" v-model="form.recognitionResourceType" type="textarea" placeholder="请输入识别资源类型,SUPER_BRAIN 超脑,FACE_RECOGNITION_SERVER 脸谱,COMPARISON 深眸"/>
<Field label="识别计划的类型, BLACK_LIST-重点人员识别计划 WHITE_LIST-陌生人识别计划" prop="recognitionPlanType" v-model="form.recognitionPlanType" type="radio" :enumData="dict.recognitionPlanType" />
<Field label="状态" prop="status" v-model="form.status" type="textarea" placeholder="请输入状态"/>
<Field label="是否启用,true:启用,false:禁用" prop="available" v-model="form.available" type="textarea" placeholder="请输入是否启用,true:启用,false:禁用"/>
<Field label="描述" prop="description" v-model="form.description" type="textarea" placeholder="请输入描述"/>
<Field label="启用时间" prop="startTime" v-model="form.startTime" type="date" />
<Field label="启用时间" prop="usingTime" v-model="form.usingTime" placeholder="请输入启用时间"/>
<Field label="阈值 0-100" prop="threshold" v-model="form.threshold" placeholder="请输入阈值 0-100"/>
</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: {
name: [
{required: true,message: "请输入名称", trigger: "blur" },
{max: 255,message: "最多只能录入255个字符",trigger: "blur",},
],
faceGroupIndexCodes: [
{required: true,message: "请输入人脸分组的唯一标识集合,逗号分割", trigger: "blur" },
{max: 512,message: "最多只能录入512个字符",trigger: "blur",},
],
cameraIndexCodes: [
{required: true,message: "请输入人脸分组的唯一标识集合,逗号分割", trigger: "blur" },
{max: 512,message: "最多只能录入512个字符",trigger: "blur",},
],
recognitionResourceIndexCodes: [
{required: true,message: "请输入识别资源的唯一标识集合,逗号分割", trigger: "blur" },
{max: 2048,message: "最多只能录入2048个字符",trigger: "blur",},
],
recognitionResourceType: [
{required: true,message: "请输入识别资源类型,SUPER_BRAIN 超脑,FACE_RECOGNITION_SERVER 脸谱,COMPARISON 深眸", trigger: "blur" },
{max: 512,message: "最多只能录入512个字符",trigger: "blur",},
],
recognitionPlanType: [
{required: true,message: "请输入识别计划的类型, BLACK_LIST-重点人员识别计划 WHITE_LIST-陌生人识别计划", trigger: "blur" },
{max: 64,message: "最多只能录入64个字符",trigger: "blur",},
],
status: [
{required: true,message: "请输入状态", trigger: "blur" },
{max: 255,message: "最多只能录入255个字符",trigger: "blur",},
],
available: [
{required: true,message: "请输入是否启用,true:启用,false:禁用", trigger: "blur" },
{max: 255,message: "最多只能录入255个字符",trigger: "blur",},
],
description: [
{required: true,message: "请输入描述", trigger: "blur" },
{max: 1024,message: "最多只能录入1024个字符",trigger: "blur",},
],
}
};
},
methods: {
/** 编辑 */
edit(row) {
this.reset()
this.query = { id: row.id };
this.urls.currUrl ="face/plan/edit";
this.getData();
this.pageInfo.type="edit"
this.title = "修改人员识别计划信息";
},
/** 新增 */
add(row) {
this.reset()
this.urls.currUrl = "face/plan/add";
this.getData();
this.pageInfo.type="add"
this.title = "新增人员识别计划信息";
},
/** 查看*/
view(row) {
this.reset()
this.query = { id: row.id };
this.urls.currUrl ="face/plan/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 = {
indexCode : "",
name : "",
faceGroupIndexCodes : "",
cameraIndexCodes : "",
recognitionResourceIndexCodes : "",
recognitionResourceType : "",
recognitionPlanType : "",
status : "",
available : "",
description : "",
startTime : null,
usingTime : null,
threshold : 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: "FacePlanList",
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: "indexCode"},
{label: "名称", prop: "name"},
{label: "人脸分组的唯一标识集合,逗号分割", prop: "faceGroupIndexCodes"},
{label: "人脸分组的唯一标识集合,逗号分割", prop: "cameraIndexCodes"},
{label: "识别资源的唯一标识集合,逗号分割", prop: "recognitionResourceIndexCodes"},
{label: "识别资源类型,SUPER_BRAIN 超脑,FACE_RECOGNITION_SERVER 脸谱,COMPARISON 深眸", prop: "recognitionResourceType"},
{label: "识别计划的类型, BLACK_LIST-重点人员识别计划 WHITE_LIST-陌生人识别计划", prop: "recognitionPlanType"},
{label: "状态", prop: "status"},
{label: "是否启用,true:启用,false:禁用", prop: "available"},
{label: "描述", prop: "description"},
{label: "启用时间", prop: "startTime", formatter: this.formatterDate},
{
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.indexCode}}
</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.faceGroupIndexCodes}}
</el-descriptions-item>
<el-descriptions-item label="人脸分组的唯一标识集合,逗号分割" label-class-name="labelClass" content-class-name="contentClass">
{{form.cameraIndexCodes}}
</el-descriptions-item>
<el-descriptions-item label="识别资源的唯一标识集合,逗号分割" label-class-name="labelClass" content-class-name="contentClass">
{{form.recognitionResourceIndexCodes}}
</el-descriptions-item>
<el-descriptions-item label="识别资源类型,SUPER_BRAIN 超脑,FACE_RECOGNITION_SERVER 脸谱,COMPARISON 深眸" label-class-name="labelClass" content-class-name="contentClass">
{{form.recognitionResourceType}}
</el-descriptions-item>
<el-descriptions-item label="识别计划的类型, BLACK_LIST-重点人员识别计划 WHITE_LIST-陌生人识别计划" label-class-name="labelClass" content-class-name="contentClass">
{{ util_formatters("recognitionPlanType", form.recognitionPlanType) }}
</el-descriptions-item>
<el-descriptions-item label="状态" label-class-name="labelClass" content-class-name="contentClass">
{{form.status}}
</el-descriptions-item>
<el-descriptions-item label="是否启用,true:启用,false:禁用" label-class-name="labelClass" content-class-name="contentClass">
{{form.available}}
</el-descriptions-item>
<el-descriptions-item label="描述" label-class-name="labelClass" content-class-name="contentClass">
{{form.description}}
</el-descriptions-item>
<el-descriptions-item label="启用时间" label-class-name="labelClass" content-class-name="contentClass">
{{ util_formatterDate(form.startTime)}}
</el-descriptions-item>
<el-descriptions-item label="启用时间" label-class-name="labelClass" content-class-name="contentClass">
{{form.usingTime}}
</el-descriptions-item>
<el-descriptions-item label="阈值 0-100" label-class-name="labelClass" content-class-name="contentClass">
{{form.threshold}}
</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
package com.mortals.xhx.common.code;
import java.util.LinkedHashMap;
import java.util.Map;
/**
* 识别计划的类型, BLACK_LIST-重点人员识别计划 WHITE_LIST-陌生人识别计划(BLACK_LIST.重点人员识别计划, WHITE_LIST.陌生人识别计划)枚举类
*
* @author zxfei
*/
public enum RecognitionPlanTypeEnum {
BLACK_LIST.重点人员识别计划("BLACK_LIST.重点人员识别计划", "BLACK_LIST.重点人员识别计划"),
WHITE_LIST.陌生人识别计划("WHITE_LIST.陌生人识别计划", "WHITE_LIST.陌生人识别计划");
private String value;
private String desc;
RecognitionPlanTypeEnum(String value, String desc) {
this.value = value;
this.desc = desc;
}
public String getValue() {
return this.value;
}
public String getDesc() {
return this.desc;
}
public static RecognitionPlanTypeEnum getByValue(String value) {
for (RecognitionPlanTypeEnum recognitionPlanTypeEnum : RecognitionPlanTypeEnum.values()) {
if (recognitionPlanTypeEnum.getValue() == value) {
return recognitionPlanTypeEnum;
}
}
return null;
}
/**
* 获取Map集合
*
* @param eItem 不包含项
* @return
*/
public static Map<String, String> getEnumMap(String... eItem) {
Map<String, String> resultMap = new LinkedHashMap<>();
for (RecognitionPlanTypeEnum item : RecognitionPlanTypeEnum.values()) {
try {
boolean hasE = false;
for (String 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
...@@ -91,32 +91,6 @@ public final class Constant { ...@@ -91,32 +91,6 @@ public final class Constant {
*/ */
public static final String EXCHANGE_SPLIT = "."; public static final String EXCHANGE_SPLIT = ".";
/**
* 消息类型(激活)
*/
public static final String MESSAGETYPE_ACTIVE = "ACTIVE";
/**
* 消息类型(心跳)
*/
public static final String MESSAGETYPE_HEARTBEAT = "HEART_BEAT";
/**
* 消息类型(upgread)
*/
public static final String MESSAGETYPE_UPGREAD = "UPGREAD";
/**
* 登录path
*/
public static final String PATH_LOGIN = "login/login";
/**
* 树path
*/
public static final String PATH_SITETREE = "site/siteTree";
public static final String DISTRIBUTE_PATH = "eventTypes";
} }
package com.mortals.xhx.common.key; package com.mortals.xhx.common.key;
/**
* 参数表对应key定义对应
* @author linlc
*
*/
public class ParamKey { public class ParamKey {
/** 文件访问的地址 */ /** 文件访问的地址 */
...@@ -12,6 +8,9 @@ public class ParamKey { ...@@ -12,6 +8,9 @@ public class ParamKey {
/** 物料编码长度,默认6 */ /** 物料编码长度,默认6 */
public static final String MATERIA_CODE_LENGTH = "iot:base:param:materia:length"; public static final String MATERIA_CODE_LENGTH = "iot:base:param:materia:length";
public static final String PARAM_FACE_GROUP = "face_group";
/** /**
* 系统参数:设备心跳间隔时间(单位:秒,默认值:60秒) * 系统参数:设备心跳间隔时间(单位:秒,默认值:60秒)
*/ */
......
...@@ -6,7 +6,12 @@ import com.mortals.framework.ap.GlobalSysInfo; ...@@ -6,7 +6,12 @@ import com.mortals.framework.ap.GlobalSysInfo;
import com.mortals.framework.common.Rest; import com.mortals.framework.common.Rest;
import com.mortals.framework.springcloud.service.IApplicationStartedService; import com.mortals.framework.springcloud.service.IApplicationStartedService;
import com.mortals.framework.util.ThreadPool; import com.mortals.framework.util.ThreadPool;
import com.mortals.xhx.common.code.YesNoEnum;
import com.mortals.xhx.common.key.Constant; import com.mortals.xhx.common.key.Constant;
import com.mortals.xhx.common.key.ParamKey;
import com.mortals.xhx.module.face.model.FaceGroupEntity;
import com.mortals.xhx.module.face.model.FaceGroupQuery;
import com.mortals.xhx.module.face.service.FaceGroupService;
import com.mortals.xhx.module.hik.event.model.req.EventSubReq; import com.mortals.xhx.module.hik.event.model.req.EventSubReq;
import com.mortals.xhx.module.hik.event.model.rsp.EventInfo; import com.mortals.xhx.module.hik.event.model.rsp.EventInfo;
import com.mortals.xhx.module.hik.event.service.IHikEventService; import com.mortals.xhx.module.hik.event.service.IHikEventService;
...@@ -17,7 +22,9 @@ import lombok.extern.slf4j.Slf4j; ...@@ -17,7 +22,9 @@ import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.util.ObjectUtils;
import java.util.Date;
import java.util.List; import java.util.List;
...@@ -32,6 +39,9 @@ public class SubEventStartedService implements IApplicationStartedService { ...@@ -32,6 +39,9 @@ public class SubEventStartedService implements IApplicationStartedService {
private IHikEventService hikEventService; private IHikEventService hikEventService;
@Autowired @Autowired
private IHikFaceService hikFaceService; private IHikFaceService hikFaceService;
@Autowired
private FaceGroupService faceGroupService;
@Override @Override
public void start() { public void start() {
...@@ -48,12 +58,33 @@ public class SubEventStartedService implements IApplicationStartedService { ...@@ -48,12 +58,33 @@ public class SubEventStartedService implements IApplicationStartedService {
Rest<List<EventInfo>> events = hikEventService.getEvents(); Rest<List<EventInfo>> events = hikEventService.getEvents();
log.info("get events resp==>{}", JSON.toJSONString(events)); log.info("get events resp==>{}", JSON.toJSONString(events));
log.info("创建人脸分组...");
FaceGroupReq faceGroupReq = new FaceGroupReq();
// faceGroupReq.setName();
// faceGroupReq.setDescription();
Rest<FaceGroupDataInfo> faceGroupDataInfoRest = hikFaceService.faceGroupSingleAdd(faceGroupReq);
//查询本地指定人脸分组 如果没有则添加 并更新
String groupStr = GlobalSysInfo.getParamValue(ParamKey.PARAM_FACE_GROUP, "注册群众");
List<String> groupList = StrUtil.split(groupStr, ",".charAt(0));
for (String group : groupList) {
FaceGroupEntity faceGroupEntity = faceGroupService.selectOne(new FaceGroupQuery().name("注册群众"));
if (ObjectUtils.isEmpty(faceGroupEntity)) {
log.info("创建人脸分组...");
FaceGroupReq faceGroupReq = new FaceGroupReq();
faceGroupReq.setName(group);
faceGroupReq.setDescription(group);
Rest<FaceGroupDataInfo> faceGroupRest = hikFaceService.faceGroupSingleAdd(faceGroupReq);
if (faceGroupRest.getCode() == YesNoEnum.YES.getValue()) {
FaceGroupEntity groupEntity = new FaceGroupEntity();
groupEntity.initAttrValue();
groupEntity.setName(group);
groupEntity.setDescription(group);
groupEntity.setIndexCode(faceGroupRest.getData().getIndexCode());
groupEntity.setCreateTime(new Date());
groupEntity.setCreateUserId(1L);
groupEntity.setCreateUserName("admin");
faceGroupService.save(groupEntity);
}
}
}
} }
@Override @Override
......
...@@ -16,6 +16,11 @@ import com.mortals.xhx.common.code.YesNoEnum; ...@@ -16,6 +16,11 @@ import com.mortals.xhx.common.code.YesNoEnum;
import com.mortals.xhx.common.pdu.RespData; import com.mortals.xhx.common.pdu.RespData;
import com.mortals.xhx.common.pdu.user.UserPdu; import com.mortals.xhx.common.pdu.user.UserPdu;
import com.mortals.xhx.feign.user.IUserFeign; import com.mortals.xhx.feign.user.IUserFeign;
import com.mortals.xhx.module.face.model.FaceGroupEntity;
import com.mortals.xhx.module.face.model.FaceGroupPersonEntity;
import com.mortals.xhx.module.face.model.FaceGroupQuery;
import com.mortals.xhx.module.face.service.FaceGroupPersonService;
import com.mortals.xhx.module.face.service.FaceGroupService;
import com.mortals.xhx.module.hik.face.model.req.face.FaceInfo; import com.mortals.xhx.module.hik.face.model.req.face.FaceInfo;
import com.mortals.xhx.module.hik.face.model.req.face.FacePic; import com.mortals.xhx.module.hik.face.model.req.face.FacePic;
import com.mortals.xhx.module.hik.face.model.req.face.FaceReq; import com.mortals.xhx.module.hik.face.model.req.face.FaceReq;
...@@ -25,6 +30,7 @@ import com.mortals.xhx.module.person.model.PersonEntity; ...@@ -25,6 +30,7 @@ import com.mortals.xhx.module.person.model.PersonEntity;
import com.mortals.xhx.module.person.model.PersonQuery; import com.mortals.xhx.module.person.model.PersonQuery;
import com.mortals.xhx.module.person.service.PersonService; import com.mortals.xhx.module.person.service.PersonService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.checkerframework.checker.units.qual.A;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression; import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression;
...@@ -47,10 +53,15 @@ public class SyncUserToHikTaskImpl implements ITaskExcuteService { ...@@ -47,10 +53,15 @@ public class SyncUserToHikTaskImpl implements ITaskExcuteService {
private IHikFaceService hikFaceService; private IHikFaceService hikFaceService;
@Autowired @Autowired
private UploadService uploadService; private UploadService uploadService;
@Autowired
private FaceGroupService faceGroupService;
@Autowired
private FaceGroupPersonService faceGroupPersonService;
@Override @Override
public void excuteTask(ITask task) throws AppException { public void excuteTask(ITask task) throws AppException {
log.info("同步用户人脸到海康任务"); log.info("同步用户人脸到海康任务");
FaceGroupEntity faceGroup = faceGroupService.selectOne(new FaceGroupQuery().name("注册群众"));
List<PersonEntity> personUnHikList = personService.find(new PersonQuery().inFaceHk(YesNoEnum.NO.getValue())); List<PersonEntity> personUnHikList = personService.find(new PersonQuery().inFaceHk(YesNoEnum.NO.getValue()));
if (!ObjectUtils.isEmpty(personUnHikList)) { if (!ObjectUtils.isEmpty(personUnHikList)) {
for (PersonEntity personEntity : personUnHikList) { for (PersonEntity personEntity : personUnHikList) {
...@@ -70,11 +81,11 @@ public class SyncUserToHikTaskImpl implements ITaskExcuteService { ...@@ -70,11 +81,11 @@ public class SyncUserToHikTaskImpl implements ITaskExcuteService {
FacePic facePic = new FacePic(); FacePic facePic = new FacePic();
facePic.setFaceBinaryData(picBase64Data); facePic.setFaceBinaryData(picBase64Data);
faceReq.setFacePic(facePic); faceReq.setFacePic(facePic);
faceReq.setFaceGroupIndexCode(faceGroup.getIndexCode());
Rest<FaceDataInfo> faceDataInfoRest = hikFaceService.faceSingleAdd(faceReq); Rest<FaceDataInfo> faceDataInfoRest = hikFaceService.faceSingleAdd(faceReq);
if(faceDataInfoRest.getCode()==YesNoEnum.YES.getValue()){ if (faceDataInfoRest.getCode() == YesNoEnum.YES.getValue()) {
personEntity.setInFaceHk(YesNoEnum.YES.getValue());
personEntity.setIndexCode(faceDataInfoRest.getData().getIndexCode()); personEntity.setIndexCode(faceDataInfoRest.getData().getIndexCode());
personEntity.setIfaceGroupIndexCode(faceDataInfoRest.getData().getFaceGroupIndexCode()); personEntity.setIfaceGroupIndexCode(faceDataInfoRest.getData().getFaceGroupIndexCode());
personEntity.setUpdateTime(new Date()); personEntity.setUpdateTime(new Date());
...@@ -82,15 +93,17 @@ public class SyncUserToHikTaskImpl implements ITaskExcuteService { ...@@ -82,15 +93,17 @@ public class SyncUserToHikTaskImpl implements ITaskExcuteService {
personEntity.setUpdateUserId(1L); personEntity.setUpdateUserId(1L);
personService.update(personEntity); personService.update(personEntity);
FaceGroupPersonEntity faceGroupPersonEntity = new FaceGroupPersonEntity();
faceGroupPersonEntity.initAttrValue();
faceGroupPersonEntity.setFaceGroupId(faceGroup.getId());
faceGroupPersonEntity.setIndexCode(personEntity.getIndexCode());
faceGroupPersonEntity.setCreateTime(new Date());
faceGroupPersonEntity.setCreateUserId(1L);
faceGroupPersonService.save(faceGroupPersonEntity);
//faceGroupPersonService;
} }
//log.info("picBase64Data=>{}", picBase64Data); //log.info("picBase64Data=>{}", picBase64Data);
} }
} }
// FileUtil.read // FileUtil.read
......
package com.mortals.xhx.module.face.dao;
import com.mortals.framework.dao.ICRUDDao;
import com.mortals.xhx.module.face.model.FaceGroupEntity;
import java.util.List;
/**
* 人脸分组信息Dao
* 人脸分组信息 DAO接口
*
* @author zxfei
* @date 2023-04-15
*/
public interface FaceGroupDao extends ICRUDDao<FaceGroupEntity,Long>{
}
package com.mortals.xhx.module.face.dao;
import com.mortals.framework.dao.ICRUDDao;
import com.mortals.xhx.module.face.model.FaceGroupPersonEntity;
import java.util.List;
/**
* 分组人脸信息Dao
* 分组人脸信息 DAO接口
*
* @author zxfei
* @date 2023-04-15
*/
public interface FaceGroupPersonDao extends ICRUDDao<FaceGroupPersonEntity,Long>{
}
package com.mortals.xhx.module.face.dao;
import com.mortals.framework.dao.ICRUDDao;
import com.mortals.xhx.module.face.model.FacePlanEntity;
import java.util.List;
/**
* 人员识别计划信息Dao
* 人员识别计划信息 DAO接口
*
* @author zxfei
* @date 2023-04-15
*/
public interface FacePlanDao extends ICRUDDao<FacePlanEntity,Long>{
}
package com.mortals.xhx.module.face.dao.ibatis;
import org.springframework.stereotype.Repository;
import com.mortals.xhx.module.face.dao.FaceGroupDao;
import com.mortals.xhx.module.face.model.FaceGroupEntity;
import java.util.Date;
import com.mortals.framework.dao.ibatis.BaseCRUDDaoMybatis;
import java.util.List;
/**
* 人脸分组信息DaoImpl DAO接口
*
* @author zxfei
* @date 2023-04-15
*/
@Repository("faceGroupDao")
public class FaceGroupDaoImpl extends BaseCRUDDaoMybatis<FaceGroupEntity,Long> implements FaceGroupDao {
}
package com.mortals.xhx.module.face.dao.ibatis;
import org.springframework.stereotype.Repository;
import com.mortals.xhx.module.face.dao.FaceGroupPersonDao;
import com.mortals.xhx.module.face.model.FaceGroupPersonEntity;
import java.util.Date;
import com.mortals.framework.dao.ibatis.BaseCRUDDaoMybatis;
import java.util.List;
/**
* 分组人脸信息DaoImpl DAO接口
*
* @author zxfei
* @date 2023-04-15
*/
@Repository("faceGroupPersonDao")
public class FaceGroupPersonDaoImpl extends BaseCRUDDaoMybatis<FaceGroupPersonEntity,Long> implements FaceGroupPersonDao {
}
package com.mortals.xhx.module.face.dao.ibatis;
import org.springframework.stereotype.Repository;
import com.mortals.xhx.module.face.dao.FacePlanDao;
import com.mortals.xhx.module.face.model.FacePlanEntity;
import java.util.Date;
import com.mortals.framework.dao.ibatis.BaseCRUDDaoMybatis;
import java.util.List;
/**
* 人员识别计划信息DaoImpl DAO接口
*
* @author zxfei
* @date 2023-04-15
*/
@Repository("facePlanDao")
public class FacePlanDaoImpl extends BaseCRUDDaoMybatis<FacePlanEntity,Long> implements FacePlanDao {
}
package com.mortals.xhx.module.face.model;
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.face.model.vo.FaceGroupVo;
/**
* 人脸分组信息实体对象
*
* @author zxfei
* @date 2023-04-15
*/
public class FaceGroupEntity extends FaceGroupVo {
private static final long serialVersionUID = 1L;
/**
* 名称
*/
@Excel(name = "名称")
private String name;
/**
* 描述
*/
@Excel(name = "描述")
private String description;
/**
* 分组唯一标识
*/
@Excel(name = "分组唯一标识")
private String indexCode;
public FaceGroupEntity(){}
/**
* 获取 名称
* @return String
*/
public String getName(){
return name;
}
/**
* 设置 名称
* @param name
*/
public void setName(String name){
this.name = name;
}
/**
* 获取 描述
* @return String
*/
public String getDescription(){
return description;
}
/**
* 设置 描述
* @param description
*/
public void setDescription(String description){
this.description = description;
}
/**
* 获取 分组唯一标识
* @return String
*/
public String getIndexCode(){
return indexCode;
}
/**
* 设置 分组唯一标识
* @param indexCode
*/
public void setIndexCode(String indexCode){
this.indexCode = indexCode;
}
@Override
public int hashCode() {
return this.getId().hashCode();
}
@Override
public boolean equals(Object obj) {
if (obj == null) return false;
if (obj instanceof FaceGroupEntity) {
FaceGroupEntity tmp = (FaceGroupEntity) obj;
if (this.getId() == tmp.getId()) {
return true;
}
}
return false;
}
public String toString(){
StringBuilder sb = new StringBuilder("");
sb.append(",name:").append(getName());
sb.append(",description:").append(getDescription());
sb.append(",indexCode:").append(getIndexCode());
return sb.toString();
}
public void initAttrValue(){
this.name = "";
this.description = "";
this.indexCode = "";
}
}
\ No newline at end of file
package com.mortals.xhx.module.face.model;
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.face.model.vo.FaceGroupPersonVo;
/**
* 分组人脸信息实体对象
*
* @author zxfei
* @date 2023-04-15
*/
public class FaceGroupPersonEntity extends FaceGroupPersonVo {
private static final long serialVersionUID = 1L;
/**
* 人脸分组
*/
private Long faceGroupId;
/**
* 名称
*/
@Excel(name = "名称")
private String name;
/**
* 人脸唯一标识
*/
@Excel(name = "人脸唯一标识")
private String indexCode;
public FaceGroupPersonEntity(){}
/**
* 获取 人脸分组
* @return Long
*/
public Long getFaceGroupId(){
return faceGroupId;
}
/**
* 设置 人脸分组
* @param faceGroupId
*/
public void setFaceGroupId(Long faceGroupId){
this.faceGroupId = faceGroupId;
}
/**
* 获取 名称
* @return String
*/
public String getName(){
return name;
}
/**
* 设置 名称
* @param name
*/
public void setName(String name){
this.name = name;
}
/**
* 获取 人脸唯一标识
* @return String
*/
public String getIndexCode(){
return indexCode;
}
/**
* 设置 人脸唯一标识
* @param indexCode
*/
public void setIndexCode(String indexCode){
this.indexCode = indexCode;
}
@Override
public int hashCode() {
return this.getId().hashCode();
}
@Override
public boolean equals(Object obj) {
if (obj == null) return false;
if (obj instanceof FaceGroupPersonEntity) {
FaceGroupPersonEntity tmp = (FaceGroupPersonEntity) obj;
if (this.getId() == tmp.getId()) {
return true;
}
}
return false;
}
public String toString(){
StringBuilder sb = new StringBuilder("");
sb.append(",faceGroupId:").append(getFaceGroupId());
sb.append(",name:").append(getName());
sb.append(",indexCode:").append(getIndexCode());
return sb.toString();
}
public void initAttrValue(){
this.faceGroupId = null;
this.name = "";
this.indexCode = "";
}
}
\ No newline at end of file
package com.mortals.xhx.module.face.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.face.model.vo.FacePlanVo;
/**
* 人员识别计划信息实体对象
*
* @author zxfei
* @date 2023-04-15
*/
public class FacePlanEntity extends FacePlanVo {
private static final long serialVersionUID = 1L;
/**
* 重点人员计划
*/
private String indexCode;
/**
* 名称
*/
@Excel(name = "名称")
private String name;
/**
* 人脸分组的唯一标识集合,逗号分割
*/
@Excel(name = "人脸分组的唯一标识集合,逗号分割")
private String faceGroupIndexCodes;
/**
* 人脸分组的唯一标识集合,逗号分割
*/
@Excel(name = "人脸分组的唯一标识集合,逗号分割")
private String cameraIndexCodes;
/**
* 识别资源的唯一标识集合,逗号分割
*/
@Excel(name = "识别资源的唯一标识集合,逗号分割")
private String recognitionResourceIndexCodes;
/**
* 识别资源类型,SUPER_BRAIN 超脑,FACE_RECOGNITION_SERVER 脸谱,COMPARISON 深眸
*/
@Excel(name = "识别资源类型,SUPER_BRAIN 超脑,FACE_RECOGNITION_SERVER 脸谱,COMPARISON 深眸")
private String recognitionResourceType;
/**
* 识别计划的类型, BLACK_LIST-重点人员识别计划 WHITE_LIST-陌生人识别计划(BLACK_LIST.重点人员识别计划, WHITE_LIST.陌生人识别计划)
*/
@Excel(name = "识别计划的类型, BLACK_LIST-重点人员识别计划 WHITE_LIST-陌生人识别计划", readConverterExp = "BLACK_LIST=重点人员识别计划, WHITE_LIST.陌生人识别计划")
private String recognitionPlanType;
/**
* 状态
*/
@Excel(name = "状态")
private String status;
/**
* 是否启用,true:启用,false:禁用
*/
@Excel(name = "是否启用,true:启用,false:禁用")
private String available;
/**
* 描述
*/
@Excel(name = "描述")
private String description;
/**
* 启用时间
*/
@Excel(name = "启用时间", width = 30, dateFormat = "yyyy-MM-dd")
private Date startTime;
/**
* 启用时间
*/
private Long usingTime;
/**
* 阈值 0-100
*/
private Integer threshold;
public FacePlanEntity(){}
/**
* 获取 重点人员计划
* @return String
*/
public String getIndexCode(){
return indexCode;
}
/**
* 设置 重点人员计划
* @param indexCode
*/
public void setIndexCode(String indexCode){
this.indexCode = indexCode;
}
/**
* 获取 名称
* @return String
*/
public String getName(){
return name;
}
/**
* 设置 名称
* @param name
*/
public void setName(String name){
this.name = name;
}
/**
* 获取 人脸分组的唯一标识集合,逗号分割
* @return String
*/
public String getFaceGroupIndexCodes(){
return faceGroupIndexCodes;
}
/**
* 设置 人脸分组的唯一标识集合,逗号分割
* @param faceGroupIndexCodes
*/
public void setFaceGroupIndexCodes(String faceGroupIndexCodes){
this.faceGroupIndexCodes = faceGroupIndexCodes;
}
/**
* 获取 人脸分组的唯一标识集合,逗号分割
* @return String
*/
public String getCameraIndexCodes(){
return cameraIndexCodes;
}
/**
* 设置 人脸分组的唯一标识集合,逗号分割
* @param cameraIndexCodes
*/
public void setCameraIndexCodes(String cameraIndexCodes){
this.cameraIndexCodes = cameraIndexCodes;
}
/**
* 获取 识别资源的唯一标识集合,逗号分割
* @return String
*/
public String getRecognitionResourceIndexCodes(){
return recognitionResourceIndexCodes;
}
/**
* 设置 识别资源的唯一标识集合,逗号分割
* @param recognitionResourceIndexCodes
*/
public void setRecognitionResourceIndexCodes(String recognitionResourceIndexCodes){
this.recognitionResourceIndexCodes = recognitionResourceIndexCodes;
}
/**
* 获取 识别资源类型,SUPER_BRAIN 超脑,FACE_RECOGNITION_SERVER 脸谱,COMPARISON 深眸
* @return String
*/
public String getRecognitionResourceType(){
return recognitionResourceType;
}
/**
* 设置 识别资源类型,SUPER_BRAIN 超脑,FACE_RECOGNITION_SERVER 脸谱,COMPARISON 深眸
* @param recognitionResourceType
*/
public void setRecognitionResourceType(String recognitionResourceType){
this.recognitionResourceType = recognitionResourceType;
}
/**
* 获取 识别计划的类型, BLACK_LIST-重点人员识别计划 WHITE_LIST-陌生人识别计划(BLACK_LIST.重点人员识别计划, WHITE_LIST.陌生人识别计划)
* @return String
*/
public String getRecognitionPlanType(){
return recognitionPlanType;
}
/**
* 设置 识别计划的类型, BLACK_LIST-重点人员识别计划 WHITE_LIST-陌生人识别计划(BLACK_LIST.重点人员识别计划, WHITE_LIST.陌生人识别计划)
* @param recognitionPlanType
*/
public void setRecognitionPlanType(String recognitionPlanType){
this.recognitionPlanType = recognitionPlanType;
}
/**
* 获取 状态
* @return String
*/
public String getStatus(){
return status;
}
/**
* 设置 状态
* @param status
*/
public void setStatus(String status){
this.status = status;
}
/**
* 获取 是否启用,true:启用,false:禁用
* @return String
*/
public String getAvailable(){
return available;
}
/**
* 设置 是否启用,true:启用,false:禁用
* @param available
*/
public void setAvailable(String available){
this.available = available;
}
/**
* 获取 描述
* @return String
*/
public String getDescription(){
return description;
}
/**
* 设置 描述
* @param description
*/
public void setDescription(String description){
this.description = description;
}
/**
* 获取 启用时间
* @return Date
*/
public Date getStartTime(){
return startTime;
}
/**
* 设置 启用时间
* @param startTime
*/
public void setStartTime(Date startTime){
this.startTime = startTime;
}
/**
* 获取 启用时间
* @return Long
*/
public Long getUsingTime(){
return usingTime;
}
/**
* 设置 启用时间
* @param usingTime
*/
public void setUsingTime(Long usingTime){
this.usingTime = usingTime;
}
/**
* 获取 阈值 0-100
* @return Integer
*/
public Integer getThreshold(){
return threshold;
}
/**
* 设置 阈值 0-100
* @param threshold
*/
public void setThreshold(Integer threshold){
this.threshold = threshold;
}
@Override
public int hashCode() {
return this.getId().hashCode();
}
@Override
public boolean equals(Object obj) {
if (obj == null) return false;
if (obj instanceof FacePlanEntity) {
FacePlanEntity tmp = (FacePlanEntity) obj;
if (this.getId() == tmp.getId()) {
return true;
}
}
return false;
}
public String toString(){
StringBuilder sb = new StringBuilder("");
sb.append(",indexCode:").append(getIndexCode());
sb.append(",name:").append(getName());
sb.append(",faceGroupIndexCodes:").append(getFaceGroupIndexCodes());
sb.append(",cameraIndexCodes:").append(getCameraIndexCodes());
sb.append(",recognitionResourceIndexCodes:").append(getRecognitionResourceIndexCodes());
sb.append(",recognitionResourceType:").append(getRecognitionResourceType());
sb.append(",recognitionPlanType:").append(getRecognitionPlanType());
sb.append(",status:").append(getStatus());
sb.append(",available:").append(getAvailable());
sb.append(",description:").append(getDescription());
sb.append(",startTime:").append(getStartTime());
sb.append(",usingTime:").append(getUsingTime());
sb.append(",threshold:").append(getThreshold());
return sb.toString();
}
public void initAttrValue(){
this.indexCode = "";
this.name = "";
this.faceGroupIndexCodes = "";
this.cameraIndexCodes = "";
this.recognitionResourceIndexCodes = "";
this.recognitionResourceType = "";
this.recognitionPlanType = "";
this.status = "";
this.available = "";
this.description = "";
this.startTime = null;
this.usingTime = null;
this.threshold = null;
}
}
\ No newline at end of file
package com.mortals.xhx.module.face.model.vo;
import com.mortals.framework.model.BaseEntityLong;
import com.mortals.xhx.module.face.model.FaceGroupPersonEntity;
import java.util.ArrayList;
import java.util.List;
import lombok.Data;
/**
* 分组人脸信息视图对象
*
* @author zxfei
* @date 2023-04-15
*/
@Data
public class FaceGroupPersonVo extends BaseEntityLong {
}
\ No newline at end of file
package com.mortals.xhx.module.face.model.vo;
import com.mortals.framework.model.BaseEntityLong;
import com.mortals.xhx.module.face.model.FaceGroupEntity;
import java.util.ArrayList;
import java.util.List;
import lombok.Data;
/**
* 人脸分组信息视图对象
*
* @author zxfei
* @date 2023-04-15
*/
@Data
public class FaceGroupVo extends BaseEntityLong {
}
\ No newline at end of file
package com.mortals.xhx.module.face.model.vo;
import com.mortals.framework.model.BaseEntityLong;
import com.mortals.xhx.module.face.model.FacePlanEntity;
import java.util.ArrayList;
import java.util.List;
import lombok.Data;
/**
* 人员识别计划信息视图对象
*
* @author zxfei
* @date 2023-04-15
*/
@Data
public class FacePlanVo extends BaseEntityLong {
}
\ 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