feat(ems): 添加采集设备信息管理和物联网实时数据监控功能

- 新增采集设备信息管理页面,包括设备列表、新增、修改、删除等功能
- 在 TreeSelects 类中添加 monitorType 字段,用于存储监控类型
- 在 TWTempertureData 类中添加 monitorType 字段,用于存储能源类型- 更新 TWTempertureDataMapper.xml,添加 monitor_type 字段的映射
IOT
zch 1 year ago
parent 1c1945fca6
commit 24caf73263

@ -25,6 +25,9 @@ public class TreeSelects implements Serializable
private String code;
private Long monitorType;
/** 子节点 */
@JsonInclude(JsonInclude.Include.NON_EMPTY)
private List<TreeSelects> children;
@ -46,6 +49,7 @@ public class TreeSelects implements Serializable
this.label = baseMonitorInfo.getMonitorName();
this.code = baseMonitorInfo.getMonitorCode();
this.children = baseMonitorInfo.getChildren().stream().map(TreeSelects::new).collect(Collectors.toList());
this.monitorType = baseMonitorInfo.getMonitorType();
}
public TreeSelects(EmsBaseWorkUnit baseWorkUnit){
@ -99,4 +103,12 @@ public class TreeSelects implements Serializable
{
this.children = children;
}
public Long getMonitorType() {
return monitorType;
}
public void setMonitorType(Long monitorType) {
this.monitorType = monitorType;
}
}

@ -10,7 +10,7 @@ import com.ruoyi.common.core.domain.BaseEntity;
/**
* T_W_TempertureData
*
*
* @author Caoql
* @date 2024-08-21
*/
@ -76,52 +76,57 @@ public class TWTempertureData extends BaseEntity
@Excel(name = " ")
private Long confirmFlag;
public void setObjid(Long objid)
/** 计量设备类型 */
@Excel(name = "能源类型")
private Long monitorType;
public void setObjid(Long objid)
{
this.objid = objid;
}
public Long getObjid()
public Long getObjid()
{
return objid;
}
public void setMonitorId(String monitorId)
public void setMonitorId(String monitorId)
{
this.monitorId = monitorId;
}
public String getMonitorId()
public String getMonitorId()
{
return monitorId;
}
public void setCollectTime(Date collectTime)
public void setCollectTime(Date collectTime)
{
this.collectTime = collectTime;
}
public Date getCollectTime()
public Date getCollectTime()
{
return collectTime;
}
public void setTempreture(BigDecimal tempreture)
public void setTempreture(BigDecimal tempreture)
{
this.tempreture = tempreture;
}
public BigDecimal getTempreture()
public BigDecimal getTempreture()
{
return tempreture;
}
public void setHumidity(BigDecimal humidity)
public void setHumidity(BigDecimal humidity)
{
this.humidity = humidity;
}
public BigDecimal getHumidity()
public BigDecimal getHumidity()
{
return humidity;
}
public void setIlluminance(BigDecimal illuminance)
public void setIlluminance(BigDecimal illuminance)
{
this.illuminance = illuminance;
}
@ -134,74 +139,83 @@ public class TWTempertureData extends BaseEntity
this.monitorName = monitorName;
}
public BigDecimal getIlluminance()
public BigDecimal getIlluminance()
{
return illuminance;
}
public void setNoise(BigDecimal noise)
public void setNoise(BigDecimal noise)
{
this.noise = noise;
}
public BigDecimal getNoise()
public BigDecimal getNoise()
{
return noise;
}
public void setConcentration(BigDecimal concentration)
public void setConcentration(BigDecimal concentration)
{
this.concentration = concentration;
}
public BigDecimal getConcentration()
public BigDecimal getConcentration()
{
return concentration;
}
public void setRecodeTime(Date recodeTime)
public void setRecodeTime(Date recodeTime)
{
this.recodeTime = recodeTime;
}
public Date getRecodeTime()
public Date getRecodeTime()
{
return recodeTime;
}
public void setAlarmType(Long alarmType)
public void setAlarmType(Long alarmType)
{
this.alarmType = alarmType;
}
public Long getAlarmType()
public Long getAlarmType()
{
return alarmType;
}
public void setConfirmPersonID(Long confirmPersonID)
public void setConfirmPersonID(Long confirmPersonID)
{
this.confirmPersonID = confirmPersonID;
}
public Long getConfirmPersonID()
public Long getConfirmPersonID()
{
return confirmPersonID;
}
public void setConfirmTime(Date confirmTime)
public void setConfirmTime(Date confirmTime)
{
this.confirmTime = confirmTime;
}
public Date getConfirmTime()
public Date getConfirmTime()
{
return confirmTime;
}
public void setConfirmFlag(Long confirmFlag)
public void setConfirmFlag(Long confirmFlag)
{
this.confirmFlag = confirmFlag;
}
public Long getConfirmFlag()
public Long getConfirmFlag()
{
return confirmFlag;
}
public Long getMonitorType() {
return monitorType;
}
public void setMonitorType(Long monitorType) {
this.monitorType = monitorType;
}
@Override
public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
@ -218,6 +232,7 @@ public class TWTempertureData extends BaseEntity
.append("confirmPersonID", getConfirmPersonID())
.append("confirmTime", getConfirmTime())
.append("confirmFlag", getConfirmFlag())
.append("monitorType", getMonitorType())
.toString();
}
}

@ -3,7 +3,7 @@
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.ems.record.mapper.TWTempertureDataMapper">
<resultMap type="TWTempertureData" id="TWTempertureDataResult">
<result property="objid" column="objid" />
<result property="monitorId" column="monitorId" />
@ -19,6 +19,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="confirmTime" column="confirmTime" />
<result property="confirmFlag" column="confirmFlag" />
<result property="monitorName" column="monitor_name" />
<result property="monitorType" column="monitor_type" />
</resultMap>
<sql id="selectTWTempertureDataVo">
@ -35,14 +36,17 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
twtd.confirmPersonID,
twtd.confirmTime,
twtd.confirmFlag,
ebmi.monitor_name
ebmi.monitor_name,
ebmi.monitor_type
from T_W_TempertureData twtd
left join ems_base_monitor_info ebmi on twtd.monitorId = ebmi.monitor_code
</sql>
<select id="selectTWTempertureDataList" parameterType="TWTempertureData" resultMap="TWTempertureDataResult">
<include refid="selectTWTempertureDataVo"/>
<where>
<where>
<if test="monitorId != null and monitorId != ''"> and twtd.monitorId = #{monitorId}</if>
<if test="params.beginCollectTime != null and params.beginCollectTime != '' and params.endCollectTime != null and params.endCollectTime != ''">
and twtd.collectTime between #{params.beginCollectTime} and #{params.endCollectTime}
@ -59,10 +63,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
and twtd.recodeTime between #{params.beginRecordTime} and #{params.endRecordTime}
</if>
<if test="confirmFlag != null "> and twtd.confirmFlag = #{confirmFlag}</if>
<if test="monitorType != null "> and ebmi.monitor_type = #{monitorType}</if>
</where>
order by twtd.recodeTime desc
</select>
<select id="selectTWTempertureDataByObjid" parameterType="Long" resultMap="TWTempertureDataResult">
<include refid="selectTWTempertureDataVo"/>
where objid = #{objid}
@ -143,7 +148,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</delete>
<delete id="deleteTWTempertureDataByObjids" parameterType="String">
delete from T_W_TempertureData where objid in
delete from T_W_TempertureData where objid in
<foreach item="objid" collection="array" open="(" separator="," close=")">
#{objid}
</foreach>
@ -161,4 +166,4 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
where twtd.rownum = 1;
</select>
</mapper>
</mapper>

@ -0,0 +1,403 @@
<template>
<div class="app-container">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="100px">
<!-- <el-form-item label="采集设备编号" prop="collectDeviceId">-->
<!-- <el-input-->
<!-- v-model="queryParams.collectDeviceId"-->
<!-- placeholder="请输入采集设备编号"-->
<!-- clearable-->
<!-- @keyup.enter.native="handleQuery"-->
<!-- />-->
<!-- </el-form-item>-->
<el-form-item label="采集设备名称" prop="collectDeviceName">
<el-input
v-model="queryParams.collectDeviceName"
placeholder="请输入采集设备名称"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<!-- <el-form-item label="能源类型" prop="energyTypeId">
<el-select v-model="queryParams.energyTypeId" placeholder="请选择能源类型">
<el-option
v-for="item in energyTypeList"
:key="item.energyTypeId"
:label="item.energyName"
:value="item.energyTypeId"
></el-option>
</el-select>
</el-form-item>-->
<el-form-item label="启用标识" prop="isFlag">
<el-select v-model="queryParams.isFlag" placeholder="请选择启用标识" clearable>
<el-option
v-for="dict in dict.type.is_flag"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery"></el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery"></el-button>
</el-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button
type="primary"
plain
icon="el-icon-plus"
size="mini"
@click="handleAdd"
v-hasPermi="['ems/base:baseCollectDeviceInfo:add']"
>新增
</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="success"
plain
icon="el-icon-edit"
size="mini"
:disabled="single"
@click="handleUpdate"
v-hasPermi="['ems/base:baseCollectDeviceInfo:edit']"
>修改
</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="danger"
plain
icon="el-icon-delete"
size="mini"
:disabled="multiple"
@click="handleDelete"
v-hasPermi="['ems/base:baseCollectDeviceInfo:remove']"
>删除
</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="warning"
plain
icon="el-icon-download"
size="mini"
@click="handleExport"
v-hasPermi="['ems/base:baseCollectDeviceInfo:export']"
>导出
</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList" :columns="columns"></right-toolbar>
</el-row>
<el-table v-loading="loading" :data="baseCollectDeviceInfoList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center"/>
<el-table-column label="自增标识" align="center" prop="objId" v-if="columns[0].visible"/>
<el-table-column label="采集设备编号" align="center" prop="collectDeviceId" v-if="columns[1].visible"/>
<el-table-column label="采集设备名称" align="center" prop="collectDeviceName" v-if="columns[2].visible"/>
<el-table-column label="能源类型" align="center" prop="energyTypeName" v-if="columns[3].visible"/>
<el-table-column label="型号" align="center" prop="model" v-if="columns[4].visible"/>
<el-table-column label="生产厂家" align="center" prop="manufacturer" v-if="columns[5].visible"/>
<el-table-column label="通讯地址" align="center" prop="ipAddress" v-if="columns[6].visible"/>
<el-table-column label="生产日期" align="center" prop="produceDate" width="180" v-if="columns[7].visible">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.produceDate, '{y}-{m}-{d} {h}:{i}:{s}') }}</span>
</template>
</el-table-column>
<el-table-column label="安装地址" align="center" prop="settingAddress" v-if="columns[8].visible"/>
<el-table-column label="启用标识" align="center" prop="isFlag" v-if="columns[9].visible">
<template slot-scope="scope">
<dict-tag :options="dict.type.base_collect_device_info_is_flag" :value="scope.row.isFlag"/>
</template>
</el-table-column>
<el-table-column label="备注" align="center" prop="remark" v-if="columns[10].visible"/>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="100">
<template slot-scope="scope">
<el-button
size="mini"
type="text"
icon="el-icon-edit"
@click="handleUpdate(scope.row)"
v-hasPermi="['ems/base:baseCollectDeviceInfo:edit']"
>修改
</el-button>
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
v-hasPermi="['ems/base:baseCollectDeviceInfo:remove']"
>删除
</el-button>
</template>
</el-table-column>
</el-table>
<pagination
v-show="total>0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
<!-- 添加或修改采集设备信息对话框 -->
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="120px">
<el-form-item label="采集设备编号" prop="collectDeviceId">
<el-input v-model="form.collectDeviceId" placeholder="请输入采集设备编号"/>
</el-form-item>
<el-form-item label="采集设备名称" prop="collectDeviceName">
<el-input v-model="form.collectDeviceName" placeholder="请输入采集设备名称"/>
</el-form-item>
<!-- <el-form-item label="能源类型" prop="energyTypeId">
<el-select v-model="form.energyTypeId" placeholder="请选择能源类型编号">
<el-option
v-for="item in energyTypeList"
:key="item.energyTypeId"
:label="item.energyName"
:value="item.energyTypeId"
></el-option>
</el-select>
</el-form-item>-->
<el-form-item label="型号" prop="model">
<el-input v-model="form.model" placeholder="请输入型号"/>
</el-form-item>
<el-form-item label="生产厂家" prop="manufacturer">
<el-input v-model="form.manufacturer" placeholder="请输入生产厂家"/>
</el-form-item>
<el-form-item label="通讯地址" prop="ipAddress">
<el-input v-model="form.ipAddress" placeholder="请输入通讯地址"/>
</el-form-item>
<el-form-item label="生产日期" prop="produceDate">
<el-date-picker clearable
v-model="form.produceDate"
type="date"
value-format="yyyy-MM-dd"
placeholder="请选择生产日期"
>
</el-date-picker>
</el-form-item>
<el-form-item label="安装地址" prop="settingAddress">
<el-input v-model="form.settingAddress" placeholder="请输入安装地址"/>
</el-form-item>
<el-form-item label="启用标识" prop="isFlag">
<el-radio-group v-model="form.isFlag">
<el-radio
v-for="dict in dict.type.base_collect_device_info_is_flag"
:key="dict.value"
:label="dict.value"
>{{ dict.label }}
</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="备注" prop="remark">
<el-input v-model="form.remark" placeholder="请输入备注"/>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import {
listBaseCollectDeviceInfo,
getBaseCollectDeviceInfo,
delBaseCollectDeviceInfo,
addBaseCollectDeviceInfo,
updateBaseCollectDeviceInfo
} from '@/api/ems/base/baseCollectDeviceInfo'
import { getBaseEnergyTypeList } from '@/api/ems/base/baseEnergyType'
export default {
name: 'BaseCollectDeviceInfo',
dicts: ['base_collect_device_info_is_flag'],
data() {
return {
//
loading: true,
//
ids: [],
//
single: true,
//
multiple: true,
//
showSearch: true,
//
total: 0,
//
baseCollectDeviceInfoList: [],
//
title: '',
//
open: false,
//
queryParams: {
pageNum: 1,
pageSize: 10,
collectDeviceId: null,
collectDeviceName: null,
energyTypeId: 1,
model: null,
manufacturer: null,
ipAddress: null,
produceDate: null,
settingAddress: null,
isFlag: null
},
//
form: {},
//
rules: {
/* objId: [
{ required: true, message: '自增标识不能为空', trigger: 'blur' }
],*/
collectDeviceId: [
{ required: true, message: '采集设备编号不能为空', trigger: 'blur' }
],
collectDeviceName: [
{ required: true, message: '采集设备名称不能为空', trigger: 'blur' }
],
energyTypeId: [
{ required: true, message: '能源类型不能为空', trigger: 'blur' }
]
},
columns: [
{ key: 0, label: `自增标识`, visible: false },
{ key: 1, label: `采集设备编号`, visible: true },
{ key: 2, label: `采集设备名称`, visible: true },
{ key: 3, label: `能源类型`, visible: true },
{ key: 4, label: `型号`, visible: true },
{ key: 5, label: `生产厂家`, visible: true },
{ key: 6, label: `通讯地址`, visible: true },
{ key: 7, label: `生产日期`, visible: true },
{ key: 8, label: `安装地址`, visible: true },
{ key: 9, label: `启用标识`, visible: true },
{ key: 10, label: `备注`, visible: true }
],
//
energyTypeList: []
}
},
created() {
getBaseEnergyTypeList({}).then(response => {
this.energyTypeList = response.data
})
this.getList()
},
methods: {
/** 查询采集设备信息列表 */
getList() {
this.loading = true
listBaseCollectDeviceInfo(this.queryParams).then(response => {
this.baseCollectDeviceInfoList = response.rows
this.total = response.total
this.loading = false
})
},
//
cancel() {
this.open = false
this.reset()
},
//
reset() {
this.form = {
objId: null,
collectDeviceId: null,
collectDeviceName: null,
energyTypeId: 1,
model: null,
manufacturer: null,
ipAddress: null,
produceDate: null,
settingAddress: null,
isFlag: '0',
createBy: null,
createTime: null,
updateBy: null,
updateTime: null,
remark: null
}
this.resetForm('form')
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1
this.getList()
},
/** 重置按钮操作 */
resetQuery() {
this.resetForm('queryForm')
this.handleQuery()
},
//
handleSelectionChange(selection) {
this.ids = selection.map(item => item.objId)
this.single = selection.length !== 1
this.multiple = !selection.length
},
/** 新增按钮操作 */
handleAdd() {
this.reset()
this.open = true
this.title = '添加采集设备信息'
},
/** 修改按钮操作 */
handleUpdate(row) {
this.reset()
const objId = row.objId || this.ids
getBaseCollectDeviceInfo(objId).then(response => {
this.form = response.data
this.open = true
this.title = '修改采集设备信息'
})
},
/** 提交按钮 */
submitForm() {
this.$refs['form'].validate(valid => {
if (valid) {
if (this.form.objId != null) {
updateBaseCollectDeviceInfo(this.form).then(response => {
this.$modal.msgSuccess('修改成功')
this.open = false
this.getList()
})
} else {
addBaseCollectDeviceInfo(this.form).then(response => {
this.$modal.msgSuccess('新增成功')
this.open = false
this.getList()
})
}
}
})
},
/** 删除按钮操作 */
handleDelete(row) {
const objIds = row.objId || this.ids
this.$modal.confirm('是否确认删除采集设备信息编号为"' + objIds + '"的数据项?').then(function() {
return delBaseCollectDeviceInfo(objIds)
}).then(() => {
this.getList()
this.$modal.msgSuccess('删除成功')
}).catch(() => {
})
},
/** 导出按钮操作 */
handleExport() {
this.download('ems/base/baseCollectDeviceInfo/export', {
...this.queryParams
}, `baseCollectDeviceInfo_${new Date().getTime()}.xlsx`)
}
}
}
</script>
Loading…
Cancel
Save