Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
P
property-management
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
chenjunxiong
property-management
Commits
b0bb8e07
You need to sign in or sign up before continuing.
Commit
b0bb8e07
authored
Apr 07, 2022
by
chenjunxiong
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/master'
parents
28bd039d
96d7b661
Hide whitespace changes
Inline
Side-by-side
Showing
23 changed files
with
1405 additions
and
49 deletions
+1405
-49
ant-design-vue-jeecg/src/views/pm/event-center/PmEventInfoList.vue
+310
-0
ant-design-vue-jeecg/src/views/pm/event-center/modules/PmEventInfoForm.vue
+211
-0
ant-design-vue-jeecg/src/views/pm/event-center/modules/PmEventInfoModal.Style#Drawer.vue
+85
-0
ant-design-vue-jeecg/src/views/pm/event-center/modules/PmEventInfoModal.vue
+61
-0
jeecg-boot-parent/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/config/mybatis/MybatisPlusSaasConfig.java
+6
-6
jeecg-boot-parent/jeecg-boot-module-demo/pom.xml
+11
-12
jeecg-boot-parent/jeecg-boot-module-demo/src/main/java/org/jeecg/modules/pm/config/HikvisionMQ.java
+0
-29
jeecg-boot-parent/jeecg-boot-module-property/.gitignore
+33
-0
jeecg-boot-parent/jeecg-boot-module-property/pom.xml
+87
-0
jeecg-boot-parent/jeecg-boot-module-property/src/main/java/org/jeecg/pm/controller/event/PmEventInfoController.java
+154
-0
jeecg-boot-parent/jeecg-boot-module-property/src/main/java/org/jeecg/pm/entity/eps/Comm.java
+1
-1
jeecg-boot-parent/jeecg-boot-module-property/src/main/java/org/jeecg/pm/entity/eps/EventDis.java
+1
-1
jeecg-boot-parent/jeecg-boot-module-property/src/main/java/org/jeecg/pm/entity/event/PmEventInfo.java
+178
-0
jeecg-boot-parent/jeecg-boot-module-property/src/main/java/org/jeecg/pm/entity/event/enums/EventLevel.java
+47
-0
jeecg-boot-parent/jeecg-boot-module-property/src/main/java/org/jeecg/pm/entity/event/enums/EventState.java
+36
-0
jeecg-boot-parent/jeecg-boot-module-property/src/main/java/org/jeecg/pm/mapper/event/PmEventInfoMapper.java
+14
-0
jeecg-boot-parent/jeecg-boot-module-property/src/main/java/org/jeecg/pm/mapper/xml/event/PmEventInfoMapper.xml
+6
-0
jeecg-boot-parent/jeecg-boot-module-property/src/main/java/org/jeecg/pm/mq/EventMessageListener.java
+85
-0
jeecg-boot-parent/jeecg-boot-module-property/src/main/java/org/jeecg/pm/service/event/IPmEventInfoService.java
+22
-0
jeecg-boot-parent/jeecg-boot-module-property/src/main/java/org/jeecg/pm/service/impl/event/PmEventInfoServiceImpl.java
+36
-0
jeecg-boot-parent/jeecg-boot-module-property/src/test/java/org/jeecg/pm/jeecgbootmoduleproperty/JeecgBootModulePropertyApplicationTests.java
+13
-0
jeecg-boot-parent/jeecg-boot-module-system/pom.xml
+7
-0
jeecg-boot-parent/pom.xml
+1
-0
No files found.
ant-design-vue-jeecg/src/views/pm/event-center/PmEventInfoList.vue
0 → 100644
View file @
b0bb8e07
<
template
>
<a-card
:bordered=
"false"
>
<!-- 查询区域 -->
<div
class=
"table-page-search-wrapper"
>
<a-form
layout=
"inline"
@
keyup
.
enter
.
native=
"searchQuery"
>
<a-row
:gutter=
"24"
>
<a-col
:md=
"8"
:sm=
"24"
>
<a-form-item
label=
"事件类别"
>
<a-select
v-model=
"queryParam.eventCategory"
placeholder=
"请选择"
default-value=
"VSS"
>
<a-select-option
value=
"VSS"
>
VSS
</a-select-option>
<a-select-option
value=
"EPS"
>
EPS
</a-select-option>
</a-select>
</a-form-item>
</a-col>
</a-row>
</a-form>
</div>
<!-- 查询区域-END -->
<!-- 操作按钮区域 -->
<span
style=
"float: left;overflow: hidden;"
class=
"table-page-search-submitButtons"
>
<a-col
:md=
"6"
:sm=
"24"
>
<a-button
type=
"primary"
@
click=
"searchQuery"
>
查询
</a-button>
</a-col>
</span>
<!--
<div
class=
"table-operator"
>
-->
<!--<!–
<a-button
@
click=
"handleAdd"
type=
"primary"
icon=
"plus"
>
新增
</a-button>
–>
-->
<!--<!–
<a-button
type=
"primary"
icon=
"download"
@
click=
"handleExportXls('pm_event_info')"
>
导出
</a-button>
–>
-->
<!--<!–
<a-upload
name=
"file"
:showUploadList=
"false"
:multiple=
"false"
:headers=
"tokenHeader"
:action=
"importExcelUrl"
@
change=
"handleImportExcel"
>
–>
-->
<!--<!–<!–
<a-button
type=
"primary"
icon=
"import"
>
导入
</a-button>
–>–>
-->
<!--<!–
</a-upload>
–>
-->
<!-- <!– 高级查询区域 –>-->
<!--<!–
<j-super-query
:fieldList=
"superFieldList"
ref=
"superQueryModal"
@
handleSuperQuery=
"handleSuperQuery"
></j-super-query>
–>
-->
<!--<!–
<a-button
style=
"margin-left: 8px"
>
批量操作
<a-icon
type=
"down"
/></a-button>
–>
-->
<!--
<a-button
@
click=
"handleAdd"
type=
"primary"
icon=
"plus"
>
新增
</a-button>
-->
<!-- <!–
<a-dropdown
v-if=
"selectedRowKeys.length > 0"
>
–>
-->
<!--<!–
<a-menu
slot=
"overlay"
>
–>
-->
<!--
<a-menu-item
key=
"1"
@
click=
"batchDel"
><a-icon
type=
"delete"
/>
删除
</a-menu-item>
-->
<!--<!–
</a-menu>
–>
-->
<!--<!–
<a-button
style=
"margin-left: 8px"
>
批量操作
<a-icon
type=
"down"
/></a-button>
–>
-->
<!--<!–
</a-dropdown>
–>
-->
<!--
</div>
-->
<!-- table区域-begin -->
<!--
<div>
-->
<!--
<div
class=
"ant-alert ant-alert-info"
style=
"margin-bottom: 16px;"
>
-->
<!--
<i
class=
"anticon anticon-info-circle ant-alert-icon"
></i>
已选择
<a
style=
"font-weight: 600"
>
{{
selectedRowKeys
.
length
}}
</a>
项-->
<!--
<a
style=
"margin-left: 24px"
@
click=
"onClearSelected"
>
清空
</a>
-->
<!--
</div>
-->
<a-table
ref=
"table"
size=
"middle"
:scroll=
"
{x:true}"
bordered
rowKey="id"
:columns="columns"
:dataSource="dataSource"
:pagination="ipagination"
:loading="loading"
:rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}"
class="j-table-force-nowrap"
@change="handleTableChange">
<template
slot=
"htmlSlot"
slot-scope=
"text"
>
<div
v-html=
"text"
></div>
</
template
>
<
template
slot=
"imgSlot"
slot-scope=
"text"
>
<span
v-if=
"!text"
style=
"font-size: 12px;font-style: italic;"
>
无图片
</span>
<img
v-else
:src=
"getImgView(text)"
height=
"25px"
alt=
""
style=
"max-width:80px;font-size: 12px;font-style: italic;"
/>
</
template
>
<
template
slot=
"fileSlot"
slot-scope=
"text"
>
<span
v-if=
"!text"
style=
"font-size: 12px;font-style: italic;"
>
无文件
</span>
<a-button
v-else
:ghost=
"true"
type=
"primary"
icon=
"download"
size=
"small"
@
click=
"downloadFile(text)"
>
下载
</a-button>
</
template
>
<!-- <span slot="action" slot-scope="text, record">-->
<!-- <a @click="handleEdit(record)">编辑</a>-->
<!-- <a-divider type="vertical" />-->
<!-- <a-dropdown>-->
<!-- <a class="ant-dropdown-link">更多 <a-icon type="down" /></a>-->
<!-- <a-menu slot="overlay">-->
<!-- <a-menu-item>-->
<!-- <a @click="handleDetail(record)">详情</a>-->
<!-- </a-menu-item>-->
<!-- <a-menu-item>-->
<!-- <a-popconfirm title="确定删除吗?" @confirm="() => handleDelete(record.id)">-->
<!-- <a>删除</a>-->
<!-- </a-popconfirm>-->
<!-- </a-menu-item>-->
<!-- </a-menu>-->
<!-- </a-dropdown>-->
<!-- </span>-->
</a-table>
<!-- </div>-->
<pm-event-info-modal
ref=
"modalForm"
@
ok=
"modalFormOk"
></pm-event-info-modal>
</a-card>
</template>
<
script
>
import
'@/assets/less/TableExpand.less'
import
{
mixinDevice
}
from
'@/utils/mixin'
import
{
JeecgListMixin
}
from
'@/mixins/JeecgListMixin'
import
PmEventInfoModal
from
'./modules/PmEventInfoModal'
export
default
{
name
:
'PmEventInfoList'
,
mixins
:
[
JeecgListMixin
,
mixinDevice
],
components
:
{
PmEventInfoModal
},
data
()
{
return
{
description
:
'pm_event_info管理页面'
,
// 表头
columns
:
[
// {
// title: '#',
// dataIndex: '',
// key:'rowIndex',
// width:60,
// align:"center",
// customRender:function (t,r,index) {
// return parseInt(index)+1;
// }
// },
{
title
:
'类别'
,
align
:
"center"
,
dataIndex
:
'eventCategory'
},
{
title
:
'源名称'
,
align
:
"center"
,
dataIndex
:
'sourceName'
},
{
title
:
'日志ID'
,
align
:
"center"
,
dataIndex
:
'logId'
},
{
title
:
'状态'
,
align
:
"center"
,
dataIndex
:
'eventState'
},
{
title
:
'等级'
,
align
:
"center"
,
dataIndex
:
'eventLevel'
},
{
title
:
'控制中心编号'
,
align
:
"center"
,
dataIndex
:
'unitIdx'
},
{
title
:
'类型'
,
align
:
"center"
,
dataIndex
:
'eventType'
},
{
title
:
'类型名称'
,
align
:
"center"
,
dataIndex
:
'eventTypeName'
},
// {
// title:'事件所属子系统类型."废弃,事件整改,没有子系统属性"',
// align:"center",
// dataIndex: 'subSysType'
// },
{
title
:
'名称'
,
align
:
"center"
,
dataIndex
:
'eventName'
},
{
title
:
'开始时间'
,
align
:
"center"
,
dataIndex
:
'startTime'
,
customRender
:
function
(
text
)
{
return
!
text
?
""
:
(
text
.
length
>
10
?
text
.
substr
(
0
,
20
)
:
text
)
}
},
{
title
:
'结束时间'
,
align
:
"center"
,
dataIndex
:
'stopTime'
,
customRender
:
function
(
text
)
{
return
!
text
?
""
:
(
text
.
length
>
10
?
text
.
substr
(
0
,
20
)
:
text
)
}
},
{
title
:
'源编号'
,
align
:
"center"
,
dataIndex
:
'sourceIdx'
},
{
title
:
'源类型'
,
align
:
"center"
,
dataIndex
:
'sourceType'
},
{
title
:
'描述信息'
,
align
:
"center"
,
dataIndex
:
'logTxt'
},
{
title
:
'区域编号'
,
align
:
"center"
,
dataIndex
:
'regionIdx'
},
// {
// title:'事件拓展信息:各个子系统根据子系统的消息结构体定义解析,下文主要介绍事件中此字段含义',
// align:"center",
// dataIndex: 'extInfo'
// },
// {
// title:'事件处理结果:当 event_state 为更新时使用',
// align:"center",
// dataIndex: 'rsltMsg'
// },
// {
// title:'联动信息:目前包含客户端联动、预案',
// align:"center",
// dataIndex: 'trigInfo'
// },
// {
// title: '操作',
// dataIndex: 'action',
// align:"center",
// fixed:"right",
// width:147,
// scopedSlots: { customRender: 'action' }
// }
],
url
:
{
list
:
"/pm/pmEventInfo/list"
,
delete
:
"/pm/pmEventInfo/delete"
,
deleteBatch
:
"/pm/pmEventInfo/deleteBatch"
,
exportXlsUrl
:
"/pm/pmEventInfo/exportXls"
,
importExcelUrl
:
"pm/pmEventInfo/importExcel"
,
},
dictOptions
:
{},
superFieldList
:
[],
}
},
created
()
{
this
.
getSuperFieldList
();
},
computed
:
{
importExcelUrl
:
function
()
{
return
`
${
window
.
_CONFIG
[
'domianURL'
]}
/
${
this
.
url
.
importExcelUrl
}
`
;
},
},
methods
:
{
initDictConfig
()
{
},
getSuperFieldList
()
{
let
fieldList
=
[];
fieldList
.
push
({
type
:
'string'
,
value
:
'logId'
,
text
:
'唯一标识一次发生的事件'
})
fieldList
.
push
({
type
:
'string'
,
value
:
'eventCategory'
,
text
:
'事件类别'
})
fieldList
.
push
({
type
:
'int'
,
value
:
'eventState'
,
text
:
'0:瞬时事件,保存;1:事件开始,保存;2:事件结束,更新结束时间; 3:事件脉冲,客户端和服务器使用,CMS 不用;4:事件更新,联动结果更新'
})
fieldList
.
push
({
type
:
'int'
,
value
:
'eventLevel'
,
text
:
'0:普通事件;1:低级报警;2:中级报警;3:高级报警'
})
fieldList
.
push
({
type
:
'string'
,
value
:
'unitIdx'
,
text
:
'控制中心编号'
})
fieldList
.
push
({
type
:
'int'
,
value
:
'eventType'
,
text
:
'事件类型'
})
fieldList
.
push
({
type
:
'string'
,
value
:
'eventTypeName'
,
text
:
'事件类型名称'
})
fieldList
.
push
({
type
:
'int'
,
value
:
'subSysType'
,
text
:
'事件所属子系统类型."废弃,事件整改,没有子系统属性"'
})
fieldList
.
push
({
type
:
'string'
,
value
:
'eventName'
,
text
:
'事件名称'
})
fieldList
.
push
({
type
:
'string'
,
value
:
'startTime'
,
text
:
'事件开始时间'
})
fieldList
.
push
({
type
:
'string'
,
value
:
'stopTime'
,
text
:
'事件结束时间'
})
fieldList
.
push
({
type
:
'string'
,
value
:
'sourceIdx'
,
text
:
'事件源编号'
})
fieldList
.
push
({
type
:
'int'
,
value
:
'sourceType'
,
text
:
'事件源类型'
})
fieldList
.
push
({
type
:
'string'
,
value
:
'sourceName'
,
text
:
'事件源名称'
})
fieldList
.
push
({
type
:
'string'
,
value
:
'logTxt'
,
text
:
'事件描述信息'
})
fieldList
.
push
({
type
:
'string'
,
value
:
'regionIdx'
,
text
:
'事件源区域编号'
})
fieldList
.
push
({
type
:
'string'
,
value
:
'extInfo'
,
text
:
'事件拓展信息:各个子系统根据子系统的消息结构体定义解析,下文主要介绍事件中此字段含义'
})
fieldList
.
push
({
type
:
'string'
,
value
:
'rsltMsg'
,
text
:
'事件处理结果:当 event_state 为更新时使用'
})
fieldList
.
push
({
type
:
'string'
,
value
:
'trigInfo'
,
text
:
'联动信息:目前包含客户端联动、预案'
})
this
.
superFieldList
=
fieldList
}
}
}
</
script
>
<
style
scoped
>
@import
'~@assets/less/common.less'
;
</
style
>
\ No newline at end of file
ant-design-vue-jeecg/src/views/pm/event-center/modules/PmEventInfoForm.vue
0 → 100644
View file @
b0bb8e07
<
template
>
<a-spin
:spinning=
"confirmLoading"
>
<j-form-container
:disabled=
"formDisabled"
>
<a-form-model
ref=
"form"
:model=
"model"
:rules=
"validatorRules"
slot=
"detail"
>
<a-row>
<a-col
:span=
"24"
>
<a-form-model-item
label=
"事件类别"
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
prop=
"eventCategory"
>
<a-input
v-model=
"model.eventCategory"
placeholder=
"事件类别"
></a-input>
</a-form-model-item>
</a-col>
<a-col
:span=
"24"
>
<a-form-model-item
label=
"唯一标识一次发生的事件"
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
prop=
"logId"
>
<a-input
v-model=
"model.logId"
placeholder=
"请输入唯一标识一次发生的事件"
></a-input>
</a-form-model-item>
</a-col>
<a-col
:span=
"24"
>
<a-form-model-item
label=
"0:瞬时事件,保存;1:事件开始,
保存;2:事件结束,更新结束时间; 3:事件脉冲,客户端和服务器使用,
CMS 不用;4:事件更新,联动结果更
新"
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
prop=
"eventState"
>
<a-input-number
v-model=
"model.eventState"
placeholder=
"请输入0:瞬时事件,保存;1:事件开始,
保存;2:事件结束,更新结束时间; 3:事件脉冲,客户端和服务器使用,
CMS 不用;4:事件更新,联动结果更
新"
style=
"width: 100%"
/>
</a-form-model-item>
</a-col>
<a-col
:span=
"24"
>
<a-form-model-item
label=
"0:普通事件;1:低级报警;2:中级
报警;3:高级报警"
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
prop=
"eventLevel"
>
<a-input-number
v-model=
"model.eventLevel"
placeholder=
"请输入0:普通事件;1:低级报警;2:中级
报警;3:高级报警"
style=
"width: 100%"
/>
</a-form-model-item>
</a-col>
<a-col
:span=
"24"
>
<a-form-model-item
label=
"控制中心编号"
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
prop=
"unitIdx"
>
<a-input
v-model=
"model.unitIdx"
placeholder=
"请输入控制中心编号"
></a-input>
</a-form-model-item>
</a-col>
<a-col
:span=
"24"
>
<a-form-model-item
label=
"事件类型"
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
prop=
"eventType"
>
<a-input-number
v-model=
"model.eventType"
placeholder=
"请输入事件类型"
style=
"width: 100%"
/>
</a-form-model-item>
</a-col>
<a-col
:span=
"24"
>
<a-form-model-item
label=
"事件类型名称"
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
prop=
"eventTypeName"
>
<a-input
v-model=
"model.eventTypeName"
placeholder=
"请输入事件类型名称"
></a-input>
</a-form-model-item>
</a-col>
<a-col
:span=
"24"
>
<a-form-model-item
label=
"事件所属子系统类型.废弃,事件整改,没有子系统属性"
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
prop=
"subSysType"
>
<a-input-number
v-model=
"model.subSysType"
placeholder=
"请输入事件所属子系统类型.废弃,事件整改,没有子系统属性"
style=
"width: 100%"
/>
</a-form-model-item>
</a-col>
<a-col
:span=
"24"
>
<a-form-model-item
label=
"事件名称"
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
prop=
"eventName"
>
<a-input
v-model=
"model.eventName"
placeholder=
"请输入事件名称"
></a-input>
</a-form-model-item>
</a-col>
<a-col
:span=
"24"
>
<a-form-model-item
label=
"事件开始时间"
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
prop=
"startTime"
>
<j-date
placeholder=
"请选择事件开始时间"
v-model=
"model.startTime"
style=
"width: 100%"
/>
</a-form-model-item>
</a-col>
<a-col
:span=
"24"
>
<a-form-model-item
label=
"事件结束时间"
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
prop=
"stopTime"
>
<j-date
placeholder=
"请选择事件结束时间"
v-model=
"model.stopTime"
style=
"width: 100%"
/>
</a-form-model-item>
</a-col>
<a-col
:span=
"24"
>
<a-form-model-item
label=
"事件源编号"
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
prop=
"sourceIdx"
>
<a-input
v-model=
"model.sourceIdx"
placeholder=
"请输入事件源编号"
></a-input>
</a-form-model-item>
</a-col>
<a-col
:span=
"24"
>
<a-form-model-item
label=
"事件源类型"
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
prop=
"sourceType"
>
<a-input-number
v-model=
"model.sourceType"
placeholder=
"请输入事件源类型"
style=
"width: 100%"
/>
</a-form-model-item>
</a-col>
<a-col
:span=
"24"
>
<a-form-model-item
label=
"事件源名称"
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
prop=
"sourceName"
>
<a-input
v-model=
"model.sourceName"
placeholder=
"请输入事件源名称"
></a-input>
</a-form-model-item>
</a-col>
<a-col
:span=
"24"
>
<a-form-model-item
label=
"事件描述信息"
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
prop=
"logTxt"
>
<a-textarea
v-model=
"model.logTxt"
rows=
"4"
placeholder=
"请输入事件描述信息"
/>
</a-form-model-item>
</a-col>
<a-col
:span=
"24"
>
<a-form-model-item
label=
"事件源区域编号"
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
prop=
"regionIdx"
>
<a-input
v-model=
"model.regionIdx"
placeholder=
"请输入事件源区域编号"
></a-input>
</a-form-model-item>
</a-col>
<a-col
:span=
"24"
>
<a-form-model-item
label=
"事件拓展信息:
各个子系统根据子系统的消息结构体
定义解析,下文主要介绍事件中此字
段含义"
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
prop=
"extInfo"
>
<a-textarea
v-model=
"model.extInfo"
rows=
"4"
placeholder=
"请输入事件拓展信息:
各个子系统根据子系统的消息结构体
定义解析,下文主要介绍事件中此字
段含义"
/>
</a-form-model-item>
</a-col>
<a-col
:span=
"24"
>
<a-form-model-item
label=
"事件处理结果:当 event_state 为更新时使用"
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
prop=
"rsltMsg"
>
<a-textarea
v-model=
"model.rsltMsg"
rows=
"4"
placeholder=
"请输入事件处理结果:当 event_state 为更新时使用"
/>
</a-form-model-item>
</a-col>
<a-col
:span=
"24"
>
<a-form-model-item
label=
"联动信息:目前包含客户端联动、预
案"
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
prop=
"trigInfo"
>
<a-textarea
v-model=
"model.trigInfo"
rows=
"4"
placeholder=
"请输入联动信息:目前包含客户端联动、预
案"
/>
</a-form-model-item>
</a-col>
</a-row>
</a-form-model>
</j-form-container>
</a-spin>
</
template
>
<
script
>
import
{
httpAction
,
getAction
}
from
'@/api/manage'
import
{
validateDuplicateValue
}
from
'@/utils/util'
export
default
{
name
:
'PmEventInfoForm'
,
components
:
{
},
props
:
{
//表单禁用
disabled
:
{
type
:
Boolean
,
default
:
false
,
required
:
false
}
},
data
()
{
return
{
model
:{
},
labelCol
:
{
xs
:
{
span
:
24
},
sm
:
{
span
:
5
},
},
wrapperCol
:
{
xs
:
{
span
:
24
},
sm
:
{
span
:
16
},
},
confirmLoading
:
false
,
validatorRules
:
{
},
url
:
{
add
:
"/pm/pmEventInfo/add"
,
edit
:
"/pm/pmEventInfo/edit"
,
queryById
:
"/pm/pmEventInfo/queryById"
}
}
},
computed
:
{
formDisabled
(){
return
this
.
disabled
},
},
created
()
{
//备份model原始值
this
.
modelDefault
=
JSON
.
parse
(
JSON
.
stringify
(
this
.
model
));
},
methods
:
{
add
()
{
this
.
edit
(
this
.
modelDefault
);
},
edit
(
record
)
{
this
.
model
=
Object
.
assign
({},
record
);
this
.
visible
=
true
;
},
submitForm
()
{
const
that
=
this
;
// 触发表单验证
this
.
$refs
.
form
.
validate
(
valid
=>
{
if
(
valid
)
{
that
.
confirmLoading
=
true
;
let
httpurl
=
''
;
let
method
=
''
;
if
(
!
this
.
model
.
id
){
httpurl
+=
this
.
url
.
add
;
method
=
'post'
;
}
else
{
httpurl
+=
this
.
url
.
edit
;
method
=
'put'
;
}
httpAction
(
httpurl
,
this
.
model
,
method
).
then
((
res
)
=>
{
if
(
res
.
success
){
that
.
$message
.
success
(
res
.
message
);
that
.
$emit
(
'ok'
);
}
else
{
that
.
$message
.
warning
(
res
.
message
);
}
}).
finally
(()
=>
{
that
.
confirmLoading
=
false
;
})
}
})
},
}
}
</
script
>
\ No newline at end of file
ant-design-vue-jeecg/src/views/pm/event-center/modules/PmEventInfoModal.Style#Drawer.vue
0 → 100644
View file @
b0bb8e07
<
template
>
<a-drawer
:title=
"title"
:width=
"width"
placement=
"right"
:closable=
"false"
@
close=
"close"
destroyOnClose
:visible=
"visible"
>
<pm-event-info-form
ref=
"realForm"
@
ok=
"submitCallback"
:disabled=
"disableSubmit"
normal
></pm-event-info-form>
<div
class=
"drawer-footer"
>
<a-button
@
click=
"handleCancel"
style=
"margin-bottom: 0;"
>
关闭
</a-button>
<a-button
v-if=
"!disableSubmit"
@
click=
"handleOk"
type=
"primary"
style=
"margin-bottom: 0;"
>
提交
</a-button>
</div>
</a-drawer>
</
template
>
<
script
>
import
PmEventInfoForm
from
'./PmEventInfoForm'
export
default
{
name
:
'PmEventInfoModal'
,
components
:
{
PmEventInfoForm
},
// data () {
// return {
// title:"操作",
// width:800,
// visible: false,
// disableSubmit: false
// }
// },
methods
:
{
add
()
{
this
.
visible
=
true
this
.
$nextTick
(()
=>
{
this
.
$refs
.
realForm
.
add
();
})
},
edit
(
record
)
{
this
.
visible
=
true
this
.
$nextTick
(()
=>
{
this
.
$refs
.
realForm
.
edit
(
record
);
});
},
close
()
{
this
.
$emit
(
'close'
);
this
.
visible
=
false
;
},
submitCallback
(){
this
.
$emit
(
'ok'
);
this
.
visible
=
false
;
},
handleOk
()
{
this
.
$refs
.
realForm
.
submitForm
();
},
handleCancel
()
{
this
.
close
()
}
}
}
</
script
>
<
style
lang=
"less"
scoped
>
/** Button按钮间距 */
.ant-btn
{
margin-left
:
30px
;
margin-bottom
:
30px
;
float
:
right
;
}
.drawer-footer
{
position
:
absolute
;
bottom
:
-8px
;
width
:
100%
;
border-top
:
1px
solid
#e8e8e8
;
padding
:
10px
16px
;
text-align
:
right
;
left
:
0
;
background
:
#fff
;
border-radius
:
0
0
2px
2px
;
}
</
style
>
\ No newline at end of file
ant-design-vue-jeecg/src/views/pm/event-center/modules/PmEventInfoModal.vue
0 → 100644
View file @
b0bb8e07
<
template
>
<j-modal
:title=
"title"
:width=
"width"
:visible=
"visible"
switchFullscreen
@
ok=
"handleOk"
:okButtonProps=
"
{ class:{'jee-hidden': disableSubmit} }"
@cancel="handleCancel"
cancelText="关闭">
<pm-event-info-form
ref=
"realForm"
@
ok=
"submitCallback"
:disabled=
"disableSubmit"
></pm-event-info-form>
</j-modal>
</
template
>
<
script
>
import
PmEventInfoForm
from
'./PmEventInfoForm'
export
default
{
name
:
'PmEventInfoModal'
,
components
:
{
PmEventInfoForm
},
data
()
{
return
{
title
:
''
,
width
:
800
,
visible
:
false
,
disableSubmit
:
false
}
},
methods
:
{
add
()
{
this
.
visible
=
true
this
.
$nextTick
(()
=>
{
this
.
$refs
.
realForm
.
add
();
})
},
edit
(
record
)
{
this
.
visible
=
true
this
.
$nextTick
(()
=>
{
this
.
$refs
.
realForm
.
edit
(
record
);
})
},
close
()
{
this
.
$emit
(
'close'
);
this
.
visible
=
false
;
},
handleOk
()
{
this
.
$refs
.
realForm
.
submitForm
();
},
submitCallback
(){
this
.
$emit
(
'ok'
);
this
.
visible
=
false
;
},
handleCancel
()
{
this
.
close
()
}
}
}
</
script
>
\ No newline at end of file
jeecg-boot-parent/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/config/mybatis/MybatisPlusSaasConfig.java
View file @
b0bb8e07
...
@@ -18,11 +18,11 @@ import net.sf.jsqlparser.expression.LongValue;
...
@@ -18,11 +18,11 @@ import net.sf.jsqlparser.expression.LongValue;
/**
/**
* 单数据源配置(jeecg.datasource.open = false时生效)
* 单数据源配置(jeecg.datasource.open = false时生效)
* @Author zhoujf
*
*
* @Author zhoujf
*/
*/
@Configuration
@Configuration
@MapperScan
(
value
={
"org.jeecg.modules.**.mapper*
"
})
@MapperScan
(
value
=
{
"org.jeecg.modules.**.mapper*"
,
"org.jeecg.pm.mapper
"
})
public
class
MybatisPlusSaasConfig
{
public
class
MybatisPlusSaasConfig
{
/**
/**
* tenant_id 字段名
* tenant_id 字段名
...
@@ -50,20 +50,20 @@ public class MybatisPlusSaasConfig {
...
@@ -50,20 +50,20 @@ public class MybatisPlusSaasConfig {
interceptor
.
addInnerInterceptor
(
new
TenantLineInnerInterceptor
(
new
TenantLineHandler
()
{
interceptor
.
addInnerInterceptor
(
new
TenantLineInnerInterceptor
(
new
TenantLineHandler
()
{
@Override
@Override
public
Expression
getTenantId
()
{
public
Expression
getTenantId
()
{
String
tenant_id
=
oConvertUtils
.
getString
(
TenantContext
.
getTenant
(),
"0"
);
String
tenant_id
=
oConvertUtils
.
getString
(
TenantContext
.
getTenant
(),
"0"
);
return
new
LongValue
(
tenant_id
);
return
new
LongValue
(
tenant_id
);
}
}
@Override
@Override
public
String
getTenantIdColumn
(){
public
String
getTenantIdColumn
()
{
return
TENANT_FIELD_NAME
;
return
TENANT_FIELD_NAME
;
}
}
// 返回 true 表示不走租户逻辑
// 返回 true 表示不走租户逻辑
@Override
@Override
public
boolean
ignoreTable
(
String
tableName
)
{
public
boolean
ignoreTable
(
String
tableName
)
{
for
(
String
temp:
tenantTable
)
{
for
(
String
temp
:
tenantTable
)
{
if
(
temp
.
equalsIgnoreCase
(
tableName
))
{
if
(
temp
.
equalsIgnoreCase
(
tableName
))
{
return
false
;
return
false
;
}
}
}
}
...
...
jeecg-boot-parent/jeecg-boot-module-demo/pom.xml
View file @
b0bb8e07
...
@@ -26,6 +26,16 @@
...
@@ -26,6 +26,16 @@
<artifactId>
jeecg-boot-module-hikvision
</artifactId>
<artifactId>
jeecg-boot-module-hikvision
</artifactId>
</dependency>
</dependency>
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-activemq
</artifactId>
</dependency>
<dependency>
<groupId>
com.google.protobuf
</groupId>
<artifactId>
protobuf-java
</artifactId>
</dependency>
<!--引入微服务启动依赖 starter
<!--引入微服务启动依赖 starter
<dependency>
<dependency>
<groupId>org.jeecgframework.boot</groupId>
<groupId>org.jeecgframework.boot</groupId>
...
@@ -35,18 +45,7 @@
...
@@ -35,18 +45,7 @@
<groupId>org.jeecgframework.boot</groupId>
<groupId>org.jeecgframework.boot</groupId>
<artifactId>jeecg-boot-starter-job</artifactId>
<artifactId>jeecg-boot-starter-job</artifactId>
</dependency>-->
</dependency>-->
<dependency>
<groupId>
org.apache.activemq
</groupId>
<artifactId>
activemq-core
</artifactId>
</dependency>
<dependency>
<groupId>
com.google.protobuf
</groupId>
<artifactId>
protobuf-java
</artifactId>
</dependency>
<dependency>
<groupId>
org.springframework
</groupId>
<artifactId>
spring-jms
</artifactId>
</dependency>
</dependencies>
</dependencies>
<build>
<build>
...
...
jeecg-boot-parent/jeecg-boot-module-demo/src/main/java/org/jeecg/modules/pm/config/HikvisionMQ.java
deleted
100644 → 0
View file @
28bd039d
package
org
.
jeecg
.
modules
.
pm
.
config
;
import
com.google.protobuf.InvalidProtocolBufferException
;
import
org.jeecg.modules.pm.entity.eps.EventDis
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.jms.annotation.JmsListener
;
import
javax.jms.BytesMessage
;
import
javax.jms.JMSException
;
/**
* <p>
*
* </p>
*
* @author 陈俊雄
* @since 2022/3/29
*/
@Configuration
public
class
HikvisionMQ
{
@JmsListener
(
destination
=
"openapi.vss.topic"
)
public
void
processMessage
(
BytesMessage
bytesMessage
)
throws
JMSException
,
InvalidProtocolBufferException
{
final
byte
[]
bytes
=
new
byte
[(
int
)
bytesMessage
.
getBodyLength
()];
bytesMessage
.
readBytes
(
bytes
);
final
EventDis
.
CommEventLog
commEventLog
=
EventDis
.
CommEventLog
.
parseFrom
(
bytes
);
System
.
out
.
println
(
commEventLog
);
}
}
jeecg-boot-parent/jeecg-boot-module-property/.gitignore
0 → 100644
View file @
b0bb8e07
HELP.md
target/
!.mvn/wrapper/maven-wrapper.jar
!**/src/main/**/target/
!**/src/test/**/target/
### STS ###
.apt_generated
.classpath
.factorypath
.project
.settings
.springBeans
.sts4-cache
### IntelliJ IDEA ###
.idea
*.iws
*.iml
*.ipr
### NetBeans ###
/nbproject/private/
/nbbuild/
/dist/
/nbdist/
/.nb-gradle/
build/
!**/src/main/**/build/
!**/src/test/**/build/
### VS Code ###
.vscode/
jeecg-boot-parent/jeecg-boot-module-property/pom.xml
0 → 100644
View file @
b0bb8e07
<?xml version="1.0" encoding="UTF-8"?>
<project
xmlns=
"http://maven.apache.org/POM/4.0.0"
xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation=
"http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"
>
<parent>
<artifactId>
jeecg-boot-parent
</artifactId>
<groupId>
org.jeecgframework.boot
</groupId>
<version>
3.1.0
</version>
</parent>
<modelVersion>
4.0.0
</modelVersion>
<artifactId>
jeecg-boot-module-property
</artifactId>
<properties>
<java.version>
1.8
</java.version>
</properties>
<dependencies>
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter
</artifactId>
</dependency>
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-test
</artifactId>
<scope>
test
</scope>
</dependency>
<dependency>
<groupId>
org.jeecgframework.boot
</groupId>
<artifactId>
jeecg-boot-base-core
</artifactId>
</dependency>
<dependency>
<groupId>
com.chanjx
</groupId>
<artifactId>
chanjx-utils
</artifactId>
</dependency>
<dependency>
<groupId>
org.jeecgframework.boot
</groupId>
<artifactId>
jeecg-boot-module-hikvision
</artifactId>
</dependency>
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-activemq
</artifactId>
</dependency>
<dependency>
<groupId>
com.google.protobuf
</groupId>
<artifactId>
protobuf-java
</artifactId>
</dependency>
</dependencies>
<!-- <build>-->
<!-- <extensions>-->
<!-- <extension>-->
<!-- <groupId>kr.motd.maven</groupId>-->
<!-- <artifactId>os-maven-plugin</artifactId>-->
<!-- <version>1.6.2</version>-->
<!-- </extension>-->
<!-- </extensions>-->
<!-- <plugins>-->
<!-- <plugin>-->
<!-- <groupId>org.xolstice.maven.plugins</groupId>-->
<!-- <artifactId>protobuf-maven-plugin</artifactId>-->
<!-- <version>0.6.1</version>-->
<!-- <configuration>-->
<!-- <protocArtifact>com.google.protobuf:protoc:3.12.0:exe:${os.detected.classifier}</protocArtifact>-->
<!-- <pluginId>grpc-java</pluginId>-->
<!-- <pluginArtifact>io.grpc:protoc-gen-grpc-java:1.32.1:exe:${os.detected.classifier}</pluginArtifact>-->
<!-- <protoSourceRoot>src/main/proto</protoSourceRoot>-->
<!-- <outputDirectory>src/main/java</outputDirectory>-->
<!-- <clearOutputDirectory>false</clearOutputDirectory>-->
<!-- </configuration>-->
<!-- <executions>-->
<!-- <execution>-->
<!-- <goals>-->
<!-- <goal>compile</goal>-->
<!-- <goal>compile-custom</goal>-->
<!-- </goals>-->
<!-- </execution>-->
<!-- </executions>-->
<!-- </plugin>-->
<!-- </plugins>-->
<!-- </build>-->
</project>
jeecg-boot-parent/jeecg-boot-module-property/src/main/java/org/jeecg/pm/controller/event/PmEventInfoController.java
0 → 100644
View file @
b0bb8e07
package
org
.
jeecg
.
pm
.
controller
.
event
;
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.baomidou.mybatisplus.core.toolkit.IdWorker
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
lombok.extern.slf4j.Slf4j
;
import
org.jeecg.common.api.vo.Result
;
import
org.jeecg.common.aspect.annotation.AutoLog
;
import
org.jeecg.common.system.base.controller.JeecgController
;
import
org.jeecg.pm.entity.event.PmEventInfo
;
import
org.jeecg.pm.service.event.IPmEventInfoService
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.*
;
import
org.springframework.web.servlet.ModelAndView
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpServletResponse
;
import
java.util.Arrays
;
/**
* @Description: pm_event_info
* @Author: jeecg-boot
* @Date: 2022-04-01
* @Version: V1.0
*/
@Api
(
tags
=
"pm_event_info"
)
@RestController
@RequestMapping
(
"/pm/pmEventInfo"
)
@Slf4j
public
class
PmEventInfoController
extends
JeecgController
<
PmEventInfo
,
IPmEventInfoService
>
{
@Autowired
private
IPmEventInfoService
pmEventInfoService
;
/**
* 分页列表查询
*
* @param pmEventInfo
* @param pageNo
* @param pageSize
* @param req
* @return
*/
//@AutoLog(value = "pm_event_info-分页列表查询")
@ApiOperation
(
value
=
"pm_event_info-分页列表查询"
,
notes
=
"pm_event_info-分页列表查询"
)
@GetMapping
(
value
=
"/list"
)
public
Result
<
IPage
<
PmEventInfo
>>
queryPageList
(
PmEventInfo
pmEventInfo
,
@RequestParam
(
name
=
"pageNo"
,
defaultValue
=
"1"
)
Integer
pageNo
,
@RequestParam
(
name
=
"pageSize"
,
defaultValue
=
"10"
)
Integer
pageSize
,
HttpServletRequest
req
)
{
IPage
<
PmEventInfo
>
pageList
=
pmEventInfoService
.
page
(
new
Page
<
PmEventInfo
>(
pageNo
,
pageSize
),
new
QueryWrapper
<
PmEventInfo
>().
lambda
().
orderByDesc
(
PmEventInfo:
:
getStartTime
));
return
Result
.
OK
(
pageList
);
}
/**
* 添加
*
* @param pmEventInfo
* @return
*/
@AutoLog
(
value
=
"pm_event_info-添加"
)
@ApiOperation
(
value
=
"pm_event_info-添加"
,
notes
=
"pm_event_info-添加"
)
@PostMapping
(
value
=
"/add"
)
public
Result
<
String
>
add
(
@RequestBody
PmEventInfo
pmEventInfo
)
{
pmEventInfo
.
setId
(
IdWorker
.
getId
());
pmEventInfoService
.
save
(
pmEventInfo
);
return
Result
.
OK
(
"添加成功!"
);
}
/**
* 编辑
*
* @param pmEventInfo
* @return
*/
@AutoLog
(
value
=
"pm_event_info-编辑"
)
@ApiOperation
(
value
=
"pm_event_info-编辑"
,
notes
=
"pm_event_info-编辑"
)
@RequestMapping
(
value
=
"/edit"
,
method
=
{
RequestMethod
.
PUT
,
RequestMethod
.
POST
})
public
Result
<
String
>
edit
(
@RequestBody
PmEventInfo
pmEventInfo
)
{
pmEventInfoService
.
updateById
(
pmEventInfo
);
return
Result
.
OK
(
"编辑成功!"
);
}
/**
* 通过id删除
*
* @param id
* @return
*/
@AutoLog
(
value
=
"pm_event_info-通过id删除"
)
@ApiOperation
(
value
=
"pm_event_info-通过id删除"
,
notes
=
"pm_event_info-通过id删除"
)
@DeleteMapping
(
value
=
"/delete"
)
public
Result
<
String
>
delete
(
@RequestParam
(
name
=
"id"
,
required
=
true
)
String
id
)
{
pmEventInfoService
.
removeById
(
id
);
return
Result
.
OK
(
"删除成功!"
);
}
/**
* 批量删除
*
* @param ids
* @return
*/
@AutoLog
(
value
=
"pm_event_info-批量删除"
)
@ApiOperation
(
value
=
"pm_event_info-批量删除"
,
notes
=
"pm_event_info-批量删除"
)
@DeleteMapping
(
value
=
"/deleteBatch"
)
public
Result
<
String
>
deleteBatch
(
@RequestParam
(
name
=
"ids"
,
required
=
true
)
String
ids
)
{
this
.
pmEventInfoService
.
removeByIds
(
Arrays
.
asList
(
ids
.
split
(
","
)));
return
Result
.
OK
(
"批量删除成功!"
);
}
/**
* 通过id查询
*
* @param id
* @return
*/
//@AutoLog(value = "pm_event_info-通过id查询")
@ApiOperation
(
value
=
"pm_event_info-通过id查询"
,
notes
=
"pm_event_info-通过id查询"
)
@GetMapping
(
value
=
"/queryById"
)
public
Result
<
PmEventInfo
>
queryById
(
@RequestParam
(
name
=
"id"
,
required
=
true
)
String
id
)
{
PmEventInfo
pmEventInfo
=
pmEventInfoService
.
getById
(
id
);
if
(
pmEventInfo
==
null
)
{
return
Result
.
error
(
"未找到对应数据"
,
null
);
}
return
Result
.
OK
(
pmEventInfo
);
}
/**
* 导出excel
*
* @param request
* @param pmEventInfo
*/
@RequestMapping
(
value
=
"/exportXls"
)
public
ModelAndView
exportXls
(
HttpServletRequest
request
,
PmEventInfo
pmEventInfo
)
{
return
super
.
exportXls
(
request
,
pmEventInfo
,
PmEventInfo
.
class
,
"pm_event_info"
);
}
/**
* 通过excel导入数据
*
* @param request
* @param response
* @return
*/
@RequestMapping
(
value
=
"/importExcel"
,
method
=
RequestMethod
.
POST
)
public
Result
<?>
importExcel
(
HttpServletRequest
request
,
HttpServletResponse
response
)
{
return
super
.
importExcel
(
request
,
response
,
PmEventInfo
.
class
);
}
}
jeecg-boot-parent/jeecg-boot-module-
demo/src/main/java/org/jeecg/modules
/pm/entity/eps/Comm.java
→
jeecg-boot-parent/jeecg-boot-module-
property/src/main/java/org/jeecg
/pm/entity/eps/Comm.java
View file @
b0bb8e07
// Generated by the protocol buffer compiler. DO NOT EDIT!
// Generated by the protocol buffer compiler. DO NOT EDIT!
// source: comm.proto
// source: comm.proto
package
org
.
jeecg
.
modules
.
pm
.
entity
.
eps
;
package
org
.
jeecg
.
pm
.
entity
.
eps
;
public
final
class
Comm
{
public
final
class
Comm
{
private
Comm
()
{}
private
Comm
()
{}
...
...
jeecg-boot-parent/jeecg-boot-module-
demo/src/main/java/org/jeecg/modules
/pm/entity/eps/EventDis.java
→
jeecg-boot-parent/jeecg-boot-module-
property/src/main/java/org/jeecg
/pm/entity/eps/EventDis.java
View file @
b0bb8e07
// Generated by the protocol buffer compiler. DO NOT EDIT!
// Generated by the protocol buffer compiler. DO NOT EDIT!
// source: event_dis.proto
// source: event_dis.proto
package
org
.
jeecg
.
modules
.
pm
.
entity
.
eps
;
package
org
.
jeecg
.
pm
.
entity
.
eps
;
public
final
class
EventDis
{
public
final
class
EventDis
{
private
EventDis
()
{}
private
EventDis
()
{}
...
...
jeecg-boot-parent/jeecg-boot-module-property/src/main/java/org/jeecg/pm/entity/event/PmEventInfo.java
0 → 100644
View file @
b0bb8e07
package
org
.
jeecg
.
pm
.
entity
.
event
;
import
com.baomidou.mybatisplus.annotation.IdType
;
import
com.baomidou.mybatisplus.annotation.TableId
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
import
lombok.experimental.Accessors
;
import
org.jeecgframework.poi.excel.annotation.Excel
;
import
java.io.Serializable
;
/**
* @Description: pm_event_info
* @Author: jeecg-boot
* @Date: 2022-04-01
* @Version: V1.0
*/
@Data
@TableName
(
"pm_event_info"
)
@Accessors
(
chain
=
true
)
@EqualsAndHashCode
(
callSuper
=
false
)
@ApiModel
(
value
=
"pm_event_info对象"
,
description
=
"pm_event_info"
)
public
class
PmEventInfo
implements
Serializable
{
/**
* 视频事件
*/
public
static
final
String
VSS
=
"VSS"
;
/**
* 入侵报警事件
*/
public
static
final
String
EPS
=
"EPS"
;
private
static
final
long
serialVersionUID
=
1L
;
/**
* id
*/
@TableId
(
type
=
IdType
.
ASSIGN_ID
)
@ApiModelProperty
(
value
=
"id"
)
private
Long
id
;
/**
* 唯一标识一次发生的事件
*/
@Excel
(
name
=
"唯一标识一次发生的事件"
,
width
=
15
)
@ApiModelProperty
(
value
=
"唯一标识一次发生的事件"
)
private
String
logId
;
/**
* 0:瞬时事件,保存;1:事件开始,
* 保存;2:事件结束,更新结束时间; 3:事件脉冲,客户端和服务器使用,
* CMS 不用;4:事件更新,联动结果更
* 新
*/
@Excel
(
name
=
"0:瞬时事件,保存;1:事件开始, 保存;2:事件结束,更新结束时间; 3:事件脉冲,客户端和服务器使用, CMS 不用;4:事件更新,联动结果更 新"
,
width
=
15
)
@ApiModelProperty
(
value
=
"0:瞬时事件,保存;1:事件开始, 保存;2:事件结束,更新结束时间; 3:事件脉冲,客户端和服务器使用, CMS 不用;4:事件更新,联动结果更 新"
)
private
String
eventState
;
/**
* 0:普通事件;1:低级报警;2:中级
* 报警;3:高级报警
*/
@Excel
(
name
=
"0:普通事件;1:低级报警;2:中级 报警;3:高级报警"
,
width
=
15
)
@ApiModelProperty
(
value
=
"0:普通事件;1:低级报警;2:中级 报警;3:高级报警"
)
private
String
eventLevel
;
/**
* 控制中心编号
*/
@Excel
(
name
=
"控制中心编号"
,
width
=
15
)
@ApiModelProperty
(
value
=
"控制中心编号"
)
private
String
unitIdx
;
/**
* 事件类型
*/
@Excel
(
name
=
"事件类型"
,
width
=
15
)
@ApiModelProperty
(
value
=
"事件类型"
)
private
Integer
eventType
;
/**
* 事件类型名称
*/
@Excel
(
name
=
"事件类型名称"
,
width
=
15
)
@ApiModelProperty
(
value
=
"事件类型名称"
)
private
String
eventTypeName
;
/**
* 事件所属子系统类型.
* "废弃,事件整改,没有子系统属性"
*/
@Excel
(
name
=
"事件所属子系统类型: 废弃,事件整改,没有子系统属性"
,
width
=
15
)
@ApiModelProperty
(
value
=
"事件所属子系统类型: 废弃,事件整改,没有子系统属性 "
)
private
Integer
subSysType
;
/**
* 事件名称
*/
@Excel
(
name
=
"事件名称"
,
width
=
15
)
@ApiModelProperty
(
value
=
"事件名称"
)
private
String
eventName
;
/**
* 事件开始时间
*/
@Excel
(
name
=
"事件开始时间"
,
width
=
15
,
format
=
"yyyy-MM-dd"
)
// @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
// @DateTimeFormat(pattern = "yyyy-MM-dd")
@ApiModelProperty
(
value
=
"事件开始时间"
)
private
String
startTime
;
/**
* 事件结束时间
*/
@Excel
(
name
=
"事件结束时间"
,
width
=
15
,
format
=
"yyyy-MM-dd"
)
// @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
// @DateTimeFormat(pattern = "yyyy-MM-dd")
@ApiModelProperty
(
value
=
"事件结束时间"
)
private
String
stopTime
;
/**
* 事件源编号
*/
@Excel
(
name
=
"事件源编号"
,
width
=
15
)
@ApiModelProperty
(
value
=
"事件源编号"
)
private
String
sourceIdx
;
/**
* 事件源类型
*/
@Excel
(
name
=
"事件源类型"
,
width
=
15
)
@ApiModelProperty
(
value
=
"事件源类型"
)
private
Integer
sourceType
;
/**
* 事件源名称
*/
@Excel
(
name
=
"事件源名称"
,
width
=
15
)
@ApiModelProperty
(
value
=
"事件源名称"
)
private
String
sourceName
;
/**
* 事件描述信息
*/
@Excel
(
name
=
"事件描述信息"
,
width
=
15
)
@ApiModelProperty
(
value
=
"事件描述信息"
)
private
String
logTxt
;
/**
* 事件源区域编号
*/
@Excel
(
name
=
"事件源区域编号"
,
width
=
15
)
@ApiModelProperty
(
value
=
"事件源区域编号"
)
private
String
regionIdx
;
/**
* 事件拓展信息:
* 各个子系统根据子系统的消息结构体
* 定义解析,下文主要介绍事件中此字
* 段含义
*/
@Excel
(
name
=
"事件拓展信息:各个子系统根据子系统的消息结构体 定义解析, 下文主要介绍事件中此字 段含义"
,
width
=
15
)
@ApiModelProperty
(
value
=
"事件拓展信息: 各个子系统根据子系统的消息结构体 定义解析, 下文主要介绍事件中此字 段含义"
)
private
String
extInfo
;
/**
* 事件处理结果:当 event_state 为更新时使用
*/
@Excel
(
name
=
"事件处理结果:当 event_state 为更新时使用"
,
width
=
15
)
@ApiModelProperty
(
value
=
"事件处理结果:当 event_state 为更新时使用"
)
private
String
rsltMsg
;
/**
* 联动信息:目前包含客户端联动、预
* 案
*/
@Excel
(
name
=
"联动信息:目前包含客户端联动、预 案"
,
width
=
15
)
@ApiModelProperty
(
value
=
"联动信息:目前包含客户端联动、预 案"
)
private
String
trigInfo
;
/**
* 上层事件类型
* VSS: 视频事件
* EPS: 入侵报警事件'
*/
@Excel
(
name
=
"VSS: 视频事件 EPS: 入侵报警事件"
,
width
=
15
)
@ApiModelProperty
(
value
=
"VSS: 视频事件 EPS: 入侵报警事件"
)
private
String
eventCategory
;
}
jeecg-boot-parent/jeecg-boot-module-property/src/main/java/org/jeecg/pm/entity/event/enums/EventLevel.java
0 → 100644
View file @
b0bb8e07
package
org
.
jeecg
.
pm
.
entity
.
event
.
enums
;
import
lombok.AllArgsConstructor
;
import
lombok.Getter
;
/**
* @author: JJww
* @Date:2022/4/6
*/
@Getter
@AllArgsConstructor
public
enum
EventLevel
{
/**
* 普通事件
*/
ORDINARY
(
0
,
"普通事件"
),
/**
* 低级报警
*/
LOW_LEVEL
(
1
,
"低级报警"
),
/**
* 中级报警
*/
INTERMEDIATE
(
2
,
"中级报警"
),
/**
* 高级报警
*/
SENIOR
(
3
,
"高级报警"
),
UNKNOWN
(
9
,
"未知类型"
);
/**
* 状态码
*/
private
final
Integer
level
;
/**
* 状态说明
*/
private
final
String
remark
;
}
jeecg-boot-parent/jeecg-boot-module-property/src/main/java/org/jeecg/pm/entity/event/enums/EventState.java
0 → 100644
View file @
b0bb8e07
package
org
.
jeecg
.
pm
.
entity
.
event
.
enums
;
import
lombok.AllArgsConstructor
;
import
lombok.Getter
;
/**
* @author: JJww
* @Date:2022/4/6
*/
@Getter
@AllArgsConstructor
public
enum
EventState
{
INSTANTANEOUS
(
0
,
"瞬时"
),
START
(
1
,
"开始"
),
STOP
(
2
,
"结束"
),
PULSE
(
3
,
"脉冲"
),
UPDATE
(
4
,
"更新"
),
UNKNOWN
(
9
,
"未知类型"
);
/**
* 状态码
*/
private
final
Integer
state
;
/**
* 状态说明
*/
private
final
String
remark
;
}
jeecg-boot-parent/jeecg-boot-module-property/src/main/java/org/jeecg/pm/mapper/event/PmEventInfoMapper.java
0 → 100644
View file @
b0bb8e07
package
org
.
jeecg
.
pm
.
mapper
.
event
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
org.jeecg.pm.entity.event.PmEventInfo
;
/**
* @Description: pm_event_info
* @Author: jeecg-boot
* @Date: 2022-04-01
* @Version: V1.0
*/
public
interface
PmEventInfoMapper
extends
BaseMapper
<
PmEventInfo
>
{
}
jeecg-boot-parent/jeecg-boot-module-property/src/main/java/org/jeecg/pm/mapper/xml/event/PmEventInfoMapper.xml
0 → 100644
View file @
b0bb8e07
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper
namespace=
"org.jeecg.pm.mapper.event.PmEventInfoMapper"
>
</mapper>
\ No newline at end of file
jeecg-boot-parent/jeecg-boot-module-property/src/main/java/org/jeecg/pm/mq/EventMessageListener.java
0 → 100644
View file @
b0bb8e07
package
org
.
jeecg
.
pm
.
mq
;
import
lombok.extern.slf4j.Slf4j
;
import
org.jeecg.pm.entity.eps.EventDis
;
import
org.jeecg.pm.entity.event.PmEventInfo
;
import
org.jeecg.pm.entity.event.enums.EventLevel
;
import
org.jeecg.pm.entity.event.enums.EventState
;
import
org.jeecg.pm.service.event.IPmEventInfoService
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.jms.annotation.JmsListener
;
import
org.springframework.stereotype.Component
;
import
javax.jms.BytesMessage
;
import
java.util.Arrays
;
/**
* @author: JJww
* @Date:2022/3/23
*/
@Slf4j
@Component
public
class
EventMessageListener
{
/**
* 视频事件
*/
private
final
static
String
VSS_TOPIC
=
"openapi.vss.topic"
;
/**
* 报警事件
*/
private
final
static
String
EPS_TOPIC
=
"openapi.eps.topic"
;
@Autowired
private
IPmEventInfoService
pmEventInfoService
;
@JmsListener
(
destination
=
VSS_TOPIC
)
public
void
vssProcessMessage
(
BytesMessage
bytesMessage
)
throws
Exception
{
final
byte
[]
bytes
=
new
byte
[(
int
)
bytesMessage
.
getBodyLength
()];
bytesMessage
.
readBytes
(
bytes
);
// 壳文件字段,EventDis类为event_dis.proto文件解析而来,CommEventLog类为事件壳文件类
final
EventDis
.
CommEventLog
commEventLog
=
EventDis
.
CommEventLog
.
parseFrom
(
bytes
);
final
PmEventInfo
pmEventInfo
=
this
.
recode
(
commEventLog
);
pmEventInfo
.
setEventCategory
(
PmEventInfo
.
VSS
);
pmEventInfoService
.
saveEvent
(
pmEventInfo
);
log
.
info
(
"VSS_TOPIC:{}"
,
pmEventInfo
);
}
@JmsListener
(
destination
=
EPS_TOPIC
)
public
void
epsProcessMessage
(
BytesMessage
bytesMessage
)
throws
Exception
{
final
byte
[]
bytes
=
new
byte
[(
int
)
bytesMessage
.
getBodyLength
()];
bytesMessage
.
readBytes
(
bytes
);
final
EventDis
.
CommEventLog
commEventLog
=
EventDis
.
CommEventLog
.
parseFrom
(
bytes
);
final
PmEventInfo
pmEventInfo
=
this
.
recode
(
commEventLog
);
pmEventInfo
.
setEventCategory
(
PmEventInfo
.
EPS
);
pmEventInfoService
.
saveEvent
(
pmEventInfo
);
log
.
info
(
"EPS_TOPIC:{}"
,
pmEventInfo
);
}
public
PmEventInfo
recode
(
EventDis
.
CommEventLog
commEventLog
)
{
final
EventLevel
eventLevel
=
Arrays
.
asList
(
EventLevel
.
values
()).
stream
().
filter
(
level
->
level
.
getLevel
().
equals
(
commEventLog
.
getEventLevel
())).
findFirst
().
orElse
(
EventLevel
.
UNKNOWN
);
final
EventState
eventState
=
Arrays
.
asList
(
EventState
.
values
()).
stream
().
filter
(
state
->
state
.
getState
().
equals
(
commEventLog
.
getEventState
())).
findFirst
().
orElse
(
EventState
.
UNKNOWN
);
return
new
PmEventInfo
()
.
setLogId
(
commEventLog
.
getLogId
())
.
setEventState
(
eventState
.
getRemark
())
.
setEventLevel
(
eventLevel
.
getRemark
())
.
setUnitIdx
(
commEventLog
.
getUnitIdx
())
.
setEventType
(
commEventLog
.
getEventType
())
.
setEventTypeName
(
commEventLog
.
getEventTypeName
())
.
setSubSysType
(
commEventLog
.
getSubSysType
())
.
setEventName
(
commEventLog
.
getEventName
())
.
setStartTime
(
commEventLog
.
getStartTime
())
.
setStopTime
(
commEventLog
.
getStopTime
())
.
setSourceIdx
(
commEventLog
.
getSourceIdx
())
.
setSourceType
(
commEventLog
.
getSourceType
())
.
setSourceName
(
commEventLog
.
getSourceName
())
.
setLogTxt
(
commEventLog
.
getLogTxt
())
.
setRegionIdx
(
commEventLog
.
getRegionIdx
())
.
setExtInfo
(
commEventLog
.
getExtInfo
().
toStringUtf8
());
}
}
jeecg-boot-parent/jeecg-boot-module-property/src/main/java/org/jeecg/pm/service/event/IPmEventInfoService.java
0 → 100644
View file @
b0bb8e07
package
org
.
jeecg
.
pm
.
service
.
event
;
import
com.baomidou.mybatisplus.extension.service.IService
;
import
org.jeecg.pm.entity.eps.EventDis
;
import
org.jeecg.pm.entity.event.PmEventInfo
;
/**
* @Description: pm_event_info
* @Author: jeecg-boot
* @Date: 2022-04-01
* @Version: V1.0
*/
public
interface
IPmEventInfoService
extends
IService
<
PmEventInfo
>
{
/**
* 保存事件
* @param pmEventInfo
*/
void
saveEvent
(
PmEventInfo
pmEventInfo
);
}
jeecg-boot-parent/jeecg-boot-module-property/src/main/java/org/jeecg/pm/service/impl/event/PmEventInfoServiceImpl.java
0 → 100644
View file @
b0bb8e07
package
org
.
jeecg
.
pm
.
service
.
impl
.
event
;
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
import
com.baomidou.mybatisplus.core.toolkit.IdWorker
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
lombok.extern.slf4j.Slf4j
;
import
org.jeecg.pm.entity.event.PmEventInfo
;
import
org.jeecg.pm.mapper.event.PmEventInfoMapper
;
import
org.jeecg.pm.service.event.IPmEventInfoService
;
import
org.springframework.stereotype.Service
;
/**
* @Description: pm_event_info
* @Author: jeecg-boot
* @Date: 2022-04-01
* @Version: V1.0
*/
@Slf4j
@Service
public
class
PmEventInfoServiceImpl
extends
ServiceImpl
<
PmEventInfoMapper
,
PmEventInfo
>
implements
IPmEventInfoService
{
@Override
public
void
saveEvent
(
PmEventInfo
pmEventInfo
)
{
final
PmEventInfo
eventInfo
=
baseMapper
.
selectOne
(
new
QueryWrapper
<
PmEventInfo
>().
lambda
().
eq
(
PmEventInfo:
:
getLogId
,
pmEventInfo
.
getLogId
()));
//事件唯一ID
if
(
eventInfo
==
null
)
{
pmEventInfo
.
setId
(
IdWorker
.
getId
());
baseMapper
.
insert
(
pmEventInfo
);
return
;
}
eventInfo
.
setEventLevel
(
pmEventInfo
.
getEventLevel
()).
setEventState
(
pmEventInfo
.
getEventState
()).
setStopTime
(
pmEventInfo
.
getStopTime
());
baseMapper
.
updateById
(
eventInfo
);
}
}
jeecg-boot-parent/jeecg-boot-module-property/src/test/java/org/jeecg/pm/jeecgbootmoduleproperty/JeecgBootModulePropertyApplicationTests.java
0 → 100644
View file @
b0bb8e07
package
org
.
jeecg
.
pm
.
jeecgbootmoduleproperty
;
import
org.junit.jupiter.api.Test
;
import
org.springframework.boot.test.context.SpringBootTest
;
@SpringBootTest
class
JeecgBootModulePropertyApplicationTests
{
@Test
void
contextLoads
()
{
}
}
jeecg-boot-parent/jeecg-boot-module-system/pom.xml
View file @
b0bb8e07
...
@@ -69,6 +69,13 @@
...
@@ -69,6 +69,13 @@
<version>
3.1.0
</version>
<version>
3.1.0
</version>
</dependency>
</dependency>
<dependency>
<groupId>
org.jeecgframework.boot
</groupId>
<artifactId>
jeecg-boot-module-property
</artifactId>
<version>
3.1.0
</version>
</dependency>
</dependencies>
</dependencies>
<build>
<build>
...
...
jeecg-boot-parent/pom.xml
View file @
b0bb8e07
...
@@ -57,6 +57,7 @@
...
@@ -57,6 +57,7 @@
<module>
jeecg-boot-module-demo
</module>
<module>
jeecg-boot-module-demo
</module>
<module>
jeecg-boot-module-system
</module>
<module>
jeecg-boot-module-system
</module>
<module>
jeecg-boot-module-hikvision
</module>
<module>
jeecg-boot-module-hikvision
</module>
<module>
jeecg-boot-module-property
</module>
<!--需要微服务,请打开
<!--需要微服务,请打开
<module>jeecg-boot-starter</module>
<module>jeecg-boot-starter</module>
<module>jeecg-cloud-module</module>-->
<module>jeecg-cloud-module</module>-->
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment