提交代码

dev_xds
姜玉琦 2023-09-29 01:08:16 +08:00
parent c281a11886
commit 910b277071
20 changed files with 354 additions and 465 deletions

View File

@ -1,417 +0,0 @@
<template>
<div class="app-container">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item label="项目主键" prop="projectId">
<el-input
v-model="queryParams.projectId"
placeholder="请输入项目主键"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="部门主键" prop="deptId">
<el-input
v-model="queryParams.deptId"
placeholder="请输入部门主键"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="设备名称" prop="deviceName">
<el-input
v-model="queryParams.deviceName"
placeholder="请输入设备名称"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="车牌号" prop="plateNo">
<el-input
v-model="queryParams.plateNo"
placeholder="请输入车牌号"
clearable
@keyup.enter.native="handleQuery"
/>
</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="['project:aiBoxProjectData: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="['project:aiBoxProjectData: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="['project:aiBoxProjectData: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="['project:aiBoxProjectData:export']"
>导出</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<el-table v-loading="loading" :data="aiBoxProjectDataList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="主键" align="center" prop="id" />
<el-table-column label="项目主键" align="center" prop="projectId" />
<el-table-column label="部门主键" align="center" prop="deptId" />
<el-table-column label="设备ID" align="center" prop="deviceId" />
<el-table-column label="设备名称" align="center" prop="deviceName" />
<el-table-column label="设备网口 0 IP 地址" align="center" prop="deviceAddr0" />
<el-table-column label="设备网口 1 IP 地址" align="center" prop="deviceAddr1" />
<el-table-column label="设备的序列号" align="center" prop="serialNumber" />
<el-table-column label="相机的序列号" align="center" prop="ipcSerialNum" />
<el-table-column label="相机的 IP 地址" align="center" prop="ipcAddr" />
<el-table-column label="行为分析图片地址" align="center" prop="imageUrl" />
<el-table-column label="通道号,用来唯一标识任务 ID" align="center" prop="channelId" />
<el-table-column label="通道名称" align="center" prop="channelName" />
<el-table-column label="报警类型" align="center" prop="alarmType" />
<el-table-column label="告警 ID" align="center" prop="alarmId" />
<el-table-column label="上报间隔" align="center" prop="reportRate" />
<el-table-column label="采集时间" align="center" prop="timestamp" width="180">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.timestamp, '{y}-{m}-{d}') }}</span>
</template>
</el-table-column>
<el-table-column label="左上角 X 坐标" align="center" prop="leftTopX" />
<el-table-column label="左上角 Y 坐标" align="center" prop="leftTopY" />
<el-table-column label="右下角 X 坐标" align="center" prop="rightBtmX" />
<el-table-column label="右下角 Y 坐标" align="center" prop="rightBtmY" />
<el-table-column label="当前告警区域人数" align="center" prop="personNum" />
<el-table-column label="绊线进入人数数量" align="center" prop="inNum" />
<el-table-column label="绊线离开人数数量" align="center" prop="outNum" />
<el-table-column label="车牌号" align="center" prop="plateNo" />
<el-table-column label="ValueType 为 1 时代表明火检测ValueType 为 2 时,代表烟雾检测;" align="center" prop="valueType" />
<el-table-column label="告警短视频的地址" align="center" prop="alarmVideourl" />
<el-table-column label="告警短视频的名称" align="center" prop="alarmVideoName" />
<el-table-column label="人脸比对结果" align="center" prop="compareResult" />
<el-table-column label="数据状态" align="center" prop="isDel" />
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button
size="mini"
type="text"
icon="el-icon-edit"
@click="handleUpdate(scope.row)"
v-hasPermi="['project:aiBoxProjectData:edit']"
>修改</el-button>
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
v-hasPermi="['project:aiBoxProjectData: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="80px">
<el-form-item label="项目主键" prop="projectId">
<el-input v-model="form.projectId" placeholder="请输入项目主键" />
</el-form-item>
<el-form-item label="部门主键" prop="deptId">
<el-input v-model="form.deptId" placeholder="请输入部门主键" />
</el-form-item>
<el-form-item label="设备ID" prop="deviceId">
<el-input v-model="form.deviceId" placeholder="请输入设备ID" />
</el-form-item>
<el-form-item label="设备名称" prop="deviceName">
<el-input v-model="form.deviceName" placeholder="请输入设备名称" />
</el-form-item>
<el-form-item label="设备网口 0 IP 地址" prop="deviceAddr0">
<el-input v-model="form.deviceAddr0" placeholder="请输入设备网口 0 IP 地址" />
</el-form-item>
<el-form-item label="设备网口 1 IP 地址" prop="deviceAddr1">
<el-input v-model="form.deviceAddr1" placeholder="请输入设备网口 1 IP 地址" />
</el-form-item>
<el-form-item label="设备的序列号" prop="serialNumber">
<el-input v-model="form.serialNumber" placeholder="请输入设备的序列号" />
</el-form-item>
<el-form-item label="相机的序列号" prop="ipcSerialNum">
<el-input v-model="form.ipcSerialNum" placeholder="请输入相机的序列号" />
</el-form-item>
<el-form-item label="相机的 IP 地址" prop="ipcAddr">
<el-input v-model="form.ipcAddr" placeholder="请输入相机的 IP 地址" />
</el-form-item>
<el-form-item label="行为分析图片地址" prop="imageUrl">
<el-input v-model="form.imageUrl" placeholder="请输入行为分析图片地址" />
</el-form-item>
<el-form-item label="通道号,用来唯一标识任务 ID" prop="channelId">
<el-input v-model="form.channelId" placeholder="请输入通道号,用来唯一标识任务 ID" />
</el-form-item>
<el-form-item label="通道名称" prop="channelName">
<el-input v-model="form.channelName" placeholder="请输入通道名称" />
</el-form-item>
<el-form-item label="告警 ID" prop="alarmId">
<el-input v-model="form.alarmId" placeholder="请输入告警 ID" />
</el-form-item>
<el-form-item label="上报间隔" prop="reportRate">
<el-input v-model="form.reportRate" placeholder="请输入上报间隔" />
</el-form-item>
<el-form-item label="采集时间" prop="timestamp">
<el-date-picker clearable
v-model="form.timestamp"
type="date"
value-format="yyyy-MM-dd"
placeholder="请选择采集时间">
</el-date-picker>
</el-form-item>
<el-form-item label="左上角 X 坐标" prop="leftTopX">
<el-input v-model="form.leftTopX" placeholder="请输入左上角 X 坐标" />
</el-form-item>
<el-form-item label="左上角 Y 坐标" prop="leftTopY">
<el-input v-model="form.leftTopY" placeholder="请输入左上角 Y 坐标" />
</el-form-item>
<el-form-item label="右下角 X 坐标" prop="rightBtmX">
<el-input v-model="form.rightBtmX" placeholder="请输入右下角 X 坐标" />
</el-form-item>
<el-form-item label="右下角 Y 坐标" prop="rightBtmY">
<el-input v-model="form.rightBtmY" placeholder="请输入右下角 Y 坐标" />
</el-form-item>
<el-form-item label="当前告警区域人数" prop="personNum">
<el-input v-model="form.personNum" placeholder="请输入当前告警区域人数" />
</el-form-item>
<el-form-item label="绊线进入人数数量" prop="inNum">
<el-input v-model="form.inNum" placeholder="请输入绊线进入人数数量" />
</el-form-item>
<el-form-item label="绊线离开人数数量" prop="outNum">
<el-input v-model="form.outNum" placeholder="请输入绊线离开人数数量" />
</el-form-item>
<el-form-item label="车牌号" prop="plateNo">
<el-input v-model="form.plateNo" placeholder="请输入车牌号" />
</el-form-item>
<el-form-item label="告警短视频的地址" prop="alarmVideourl">
<el-input v-model="form.alarmVideourl" placeholder="请输入告警短视频的地址" />
</el-form-item>
<el-form-item label="告警短视频的名称" prop="alarmVideoName">
<el-input v-model="form.alarmVideoName" placeholder="请输入告警短视频的名称" />
</el-form-item>
<el-form-item label="人脸比对结果" prop="compareResult">
<el-input v-model="form.compareResult" type="textarea" placeholder="请输入内容" />
</el-form-item>
<el-form-item label="数据状态" prop="isDel">
<el-input v-model="form.isDel" 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 { listAiBoxProjectData, getAiBoxProjectData, delAiBoxProjectData, addAiBoxProjectData, updateAiBoxProjectData } from "@/api/project/aiBoxProjectData";
export default {
name: "AiBoxProjectData",
data() {
return {
//
loading: true,
//
ids: [],
//
single: true,
//
multiple: true,
//
showSearch: true,
//
total: 0,
//
aiBoxProjectDataList: [],
//
title: "",
//
open: false,
//
queryParams: {
pageNum: 1,
pageSize: 10,
projectId: null,
deptId: null,
deviceName: null,
alarmType: null,
plateNo: null,
},
//
form: {},
//
rules: {
}
};
},
created() {
this.getList();
},
methods: {
/** 查询设备数据列表 */
getList() {
this.loading = true;
listAiBoxProjectData(this.queryParams).then(response => {
this.aiBoxProjectDataList = response.rows;
this.total = response.total;
this.loading = false;
});
},
//
cancel() {
this.open = false;
this.reset();
},
//
reset() {
this.form = {
id: null,
projectId: null,
deptId: null,
deviceId: null,
deviceName: null,
deviceAddr0: null,
deviceAddr1: null,
serialNumber: null,
ipcSerialNum: null,
ipcAddr: null,
imageUrl: null,
channelId: null,
channelName: null,
alarmType: null,
alarmId: null,
reportRate: null,
timestamp: null,
leftTopX: null,
leftTopY: null,
rightBtmX: null,
rightBtmY: null,
personNum: null,
inNum: null,
outNum: null,
plateNo: null,
valueType: null,
alarmVideourl: null,
alarmVideoName: null,
compareResult: null,
createTime: null,
isDel: 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.id)
this.single = selection.length!==1
this.multiple = !selection.length
},
/** 新增按钮操作 */
handleAdd() {
this.reset();
this.open = true;
this.title = "添加设备数据";
},
/** 修改按钮操作 */
handleUpdate(row) {
this.reset();
const id = row.id || this.ids
getAiBoxProjectData(id).then(response => {
this.form = response.data;
this.open = true;
this.title = "修改设备数据";
});
},
/** 提交按钮 */
submitForm() {
this.$refs["form"].validate(valid => {
if (valid) {
if (this.form.id != null) {
updateAiBoxProjectData(this.form).then(response => {
this.$modal.msgSuccess("修改成功");
this.open = false;
this.getList();
});
} else {
addAiBoxProjectData(this.form).then(response => {
this.$modal.msgSuccess("新增成功");
this.open = false;
this.getList();
});
}
}
});
},
/** 删除按钮操作 */
handleDelete(row) {
const ids = row.id || this.ids;
this.$modal.confirm('是否确认删除设备数据编号为"' + ids + '"的数据项?').then(function() {
return delAiBoxProjectData(ids);
}).then(() => {
this.getList();
this.$modal.msgSuccess("删除成功");
}).catch(() => {});
},
/** 导出按钮操作 */
handleExport() {
this.download('project/aiBoxProjectData/export', {
...this.queryParams
}, `aiBoxProjectData_${new Date().getTime()}.xlsx`)
}
}
};
</script>

View File

@ -0,0 +1,256 @@
<template>
<div class="app-container">
<el-form
:model="queryParams"
ref="queryForm"
size="small"
:inline="true"
v-show="showSearch"
label-width="68px"
>
<el-form-item label="项目名称" prop="projectName">
<el-input
v-model="queryParams.projectName"
placeholder="请输入项目名称"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="单位名称" prop="deptName">
<el-input
v-model="queryParams.deptName"
placeholder="请输入单位名称"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="预警类型" prop="alarmType">
<el-select v-model="queryParams.alarmType" placeholder="预警类型" clearable>
<el-option
v-for="dict in dict.type.aibox_alarm_type"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
<el-form-item label="预警时间">
<el-date-picker
v-model="daterangeMarksTime"
style="width: 240px"
value-format="yyyy-MM-dd"
type="daterange"
range-separator="-"
start-placeholder="开始日期"
end-placeholder="结束日期"
></el-date-picker>
</el-form-item>
<el-form-item
label="责任主体"
prop="projectDeptId"
v-hasPermi="['project:project:zgs']"
>
<el-select
v-model="queryParams.projectDeptId"
placeholder="请选择责任主体"
clearable
>
<el-option
v-for="dict in depts"
:key="dict.deptId"
:label="dict.deptName"
:value="dict.deptId"
></el-option>
</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-table
v-loading="loading"
:data="dataList" stripe
>
<el-table-column
label="项目名称"
align="center"
prop="projectName"
width="260"
/>
<el-table-column
label="单位名称"
align="center"
prop="deptName"
width="220"
/>
<el-table-column label="预警图片" align="center" property="path" width="220">
<template slot-scope="scope">
<el-image
ref="preview"
style="width: 200px; height: 100px"
:src="getSrc(scope.row.imageUrl)"
@click="onPreview(scope.row.imageUrl)"
>
</el-image>
</template>
</el-table-column>
<el-table-column label="预警类型" align="center" prop="alarmType">
<template slot-scope="scope">
<dict-tag :options="dict.type.aibox_alarm_type" :value="scope.row.alarmType" />
</template>
</el-table-column>
<el-table-column
label="设备通道"
align="center"
prop="channelName"
width="180"
show-overflow-tooltip
/>
<el-table-column
label="设备名称"
align="center"
prop="deviceName"
width="220"
/>
<el-table-column
label="设备名称"
align="center"
prop="serialNumber"
width="220"
/>
<el-table-column
label="预警时间"
align="center"
prop="createTime"
width="180"
>
<template slot-scope="scope">
<span>{{ parseTime(scope.row.createTime, "{y}-{m}-{d} {h}:{i}:{s}") }}</span>
</template>
</el-table-column>
<el-table-column label="数据状态" align="center" prop="isDel">
<template slot-scope="scope">
<dict-tag :options="dict.type.sys_common_isdel" :value="scope.row.isDel" />
</template>
</el-table-column>
</el-table>
<pagination
v-show="total > 0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
<el-image-viewer v-if="showViewer" :on-close="closeViewer" :url-list="srcList" />
</div>
</template>
<script>
import { listAiBoxProjectData } from "@/api/project/aiBoxProjectData";
import ElImageViewer from "element-ui/packages/image/src/image-viewer";
export default {
name: "SspProblemmodify",
components: {
ElImageViewer,
},
dicts: ["aibox_alarm_type", "sys_common_isdel"],
data() {
return {
showViewer: false,
//
loading: true,
//
ids: [],
//
single: true,
//
multiple: true,
//
showSearch: true,
//
total: 0,
//
dataList: [],
//
title: "",
//
open: false,
openVideo: false,
videoSrc: null,
//
daterangeMarksTime: [],
//
queryParams: {
pageNum: 1,
pageSize: 10,
projectId: null,
projectName: null,
deptId: null,
deptName: null,
projectDeptId: null,
},
depts: null,
//
form: {},
//
rules: {},
srcList: [],
};
},
created() {
this.getList();
this.$api.publics.getZgsDeptList().then((d) => {
this.depts = d?.data || [];
});
},
methods: {
getSrc(url){
return url + '.min.jpg'
},
onPreview(urls) {
var arrayurls = urls.split(",");
this.srcList = [];
arrayurls.forEach((v, i) => {
this.srcList.push(v);
});
this.showViewer = true;
},
closeViewer() {
this.showViewer = false;
},
/** 查询安全整改列表 */
getList() {
this.loading = true;
this.queryParams.params = {};
if (null != this.daterangeMarksTime && "" != this.daterangeMarksTime) {
this.queryParams.params["beginMarksTime"] = this.daterangeMarksTime[0];
this.queryParams.params["endMarksTime"] = this.daterangeMarksTime[1];
}
listAiBoxProjectData(this.queryParams).then((response) => {
this.dataList = response.rows;
this.total = response.total;
this.loading = false;
});
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.queryParams.roleTypes=[];
this.daterangeMarksTime = [];
this.resetForm("queryForm");
this.handleQuery();
},
},
};
</script>

View File

@ -3,11 +3,7 @@ package com.yanzhu.jh.project.controller;
import java.util.List; import java.util.List;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import com.ruoyi.common.core.text.Convert;
import com.ruoyi.common.enums.SysRoleEnum;
import com.ruoyi.system.service.ISysDeptService; import com.ruoyi.system.service.ISysDeptService;
import com.yanzhu.jh.project.domain.SurProjectUnitInfo;
import com.yanzhu.jh.project.service.ISurProjectUnitInfoService;
import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;

View File

@ -6,7 +6,6 @@ import java.util.List;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import com.yanzhu.jh.project.domain.vo.MajorPlanExport; import com.yanzhu.jh.project.domain.vo.MajorPlanExport;
import com.yanzhu.jh.project.domain.vo.SurProjectBuildNodeDataExport;
import com.yanzhu.jh.project.domain.vo.UrbanPlanExport; import com.yanzhu.jh.project.domain.vo.UrbanPlanExport;
import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;

View File

@ -6,7 +6,6 @@ import javax.servlet.http.HttpServletResponse;
import com.ruoyi.common.core.text.Convert; import com.ruoyi.common.core.text.Convert;
import com.ruoyi.common.enums.SysRoleEnum; import com.ruoyi.common.enums.SysRoleEnum;
import com.ruoyi.common.utils.file.ImageUtils;
import com.ruoyi.system.service.ISysDeptService; import com.ruoyi.system.service.ISysDeptService;
import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;

View File

@ -1,7 +1,7 @@
package com.yanzhu.jh.project.mapper; package com.yanzhu.jh.project.mapper;
import java.util.List; import java.util.List;
import com.yanzhu.jh.project.domain.DevAiProjectConfig; import com.yanzhu.jh.video.domain.DevAiProjectConfig;
/** /**
* Mapper * Mapper

View File

@ -1,7 +1,7 @@
package com.yanzhu.jh.project.mapper; package com.yanzhu.jh.project.mapper;
import java.util.List; import java.util.List;
import com.yanzhu.jh.project.domain.DevAiProjectData; import com.yanzhu.jh.video.domain.DevAiProjectData;
/** /**
* Mapper * Mapper

View File

@ -1,10 +1,13 @@
package com.yanzhu.jh.publics; package com.yanzhu.jh.publics;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.controller.BaseController;
import com.yanzhu.jh.project.domain.DevAiProjectData; import com.yanzhu.jh.video.domain.DevAiProjectDataVO;
import com.yanzhu.jh.project.domain.vo.DevAiProjectDataVO; import com.yanzhu.jh.video.service.IDevAiProjectDataService;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
@ -23,6 +26,9 @@ import java.util.Map;
@RequestMapping("/publics/aiBox") @RequestMapping("/publics/aiBox")
public class AIBoxController extends BaseController { public class AIBoxController extends BaseController {
@Autowired
private IDevAiProjectDataService devAiProjectDataService;
private static final Logger logger = LoggerFactory.getLogger("AIBoxController"); private static final Logger logger = LoggerFactory.getLogger("AIBoxController");
/** /**
@ -32,13 +38,12 @@ public class AIBoxController extends BaseController {
public void list(@RequestBody Map<String,Object> dataMap) public void list(@RequestBody Map<String,Object> dataMap)
{ {
try{ try{
List<DevAiProjectDataVO> devAiProjectDataVOs = (List<DevAiProjectDataVO>)dataMap.get("BehaviorResults"); List<Map<String,Object>> list = (List<Map<String,Object>>)dataMap.get("BehaviorResults");
if(devAiProjectDataVOs!=null && devAiProjectDataVOs.size()>0){ DevAiProjectDataVO devAiProjectDataVO = JSON.parseObject(JSONObject.toJSONString(list.get(0)), DevAiProjectDataVO.class);
DevAiProjectDataVO devAiProjectDataVO = devAiProjectDataVOs.get(0); devAiProjectDataService.insertHttpDevAiProjectData(devAiProjectDataVO);
}
}catch (Exception e){ }catch (Exception e){
logger.info("AiBox解析参数失败"); logger.info("AiBox解析参数失败");
logger.info(dataMap.toString());
e.printStackTrace(); e.printStackTrace();
} }

View File

@ -1,4 +1,4 @@
package com.yanzhu.jh.project.controller; package com.yanzhu.jh.video.controller;
import java.util.List; import java.util.List;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
@ -16,8 +16,8 @@ import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.enums.BusinessType; import com.ruoyi.common.enums.BusinessType;
import com.yanzhu.jh.project.domain.DevAiProjectConfig; import com.yanzhu.jh.video.domain.DevAiProjectConfig;
import com.yanzhu.jh.project.service.IDevAiProjectConfigService; import com.yanzhu.jh.video.service.IDevAiProjectConfigService;
import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.common.core.page.TableDataInfo;

View File

@ -1,7 +1,11 @@
package com.yanzhu.jh.project.controller; package com.yanzhu.jh.video.controller;
import java.util.List; import java.util.List;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import com.ruoyi.common.core.text.Convert;
import com.ruoyi.common.enums.SysRoleEnum;
import com.ruoyi.system.service.ISysDeptService;
import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
@ -16,8 +20,8 @@ import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.enums.BusinessType; import com.ruoyi.common.enums.BusinessType;
import com.yanzhu.jh.project.domain.DevAiProjectData; import com.yanzhu.jh.video.domain.DevAiProjectData;
import com.yanzhu.jh.project.service.IDevAiProjectDataService; import com.yanzhu.jh.video.service.IDevAiProjectDataService;
import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.common.core.page.TableDataInfo;
@ -31,6 +35,9 @@ import com.ruoyi.common.core.page.TableDataInfo;
@RequestMapping("/project/aiBoxProjectData") @RequestMapping("/project/aiBoxProjectData")
public class DevAiProjectDataController extends BaseController public class DevAiProjectDataController extends BaseController
{ {
@Autowired
private ISysDeptService sysDeptService;
@Autowired @Autowired
private IDevAiProjectDataService devAiProjectDataService; private IDevAiProjectDataService devAiProjectDataService;
@ -42,6 +49,14 @@ public class DevAiProjectDataController extends BaseController
public TableDataInfo list(DevAiProjectData devAiProjectData) public TableDataInfo list(DevAiProjectData devAiProjectData)
{ {
startPage(); startPage();
devAiProjectData.setNowRole(Convert.toStr(getUserFirstRole()));
if(SysRoleEnum.ZGS.getCode().equals(devAiProjectData.getNowRole())){
devAiProjectData.setNowDept(Convert.toStr(sysDeptService.getZGSDeptId(getDeptId())));
}else{
devAiProjectData.setNowDept(Convert.toStr(getDeptId()));
}
devAiProjectData.setNowUser(Convert.toStr(getUserId()));
devAiProjectData.setNowUserName(getUsername());
List<DevAiProjectData> list = devAiProjectDataService.selectDevAiProjectDataList(devAiProjectData); List<DevAiProjectData> list = devAiProjectDataService.selectDevAiProjectDataList(devAiProjectData);
return getDataTable(list); return getDataTable(list);
} }

View File

@ -1,4 +1,4 @@
package com.yanzhu.jh.project.domain; package com.yanzhu.jh.video.domain;
import org.apache.commons.lang3.builder.ToStringBuilder; import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle; import org.apache.commons.lang3.builder.ToStringStyle;

View File

@ -1,4 +1,4 @@
package com.yanzhu.jh.project.domain; package com.yanzhu.jh.video.domain;
import java.util.Date; import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
@ -24,10 +24,14 @@ public class DevAiProjectData extends BaseEntity
@Excel(name = "项目主键") @Excel(name = "项目主键")
private Long projectId; private Long projectId;
private String projectName;
/** 部门主键 */ /** 部门主键 */
@Excel(name = "部门主键") @Excel(name = "部门主键")
private Long deptId; private Long deptId;
private String deptName;
/** 设备ID */ /** 设备ID */
@Excel(name = "设备ID") @Excel(name = "设备ID")
private Long deviceId; private Long deviceId;
@ -137,7 +141,23 @@ public class DevAiProjectData extends BaseEntity
@Excel(name = "数据状态") @Excel(name = "数据状态")
private String isDel; private String isDel;
public void setId(Long id) public String getProjectName() {
return projectName;
}
public void setProjectName(String projectName) {
this.projectName = projectName;
}
public String getDeptName() {
return deptName;
}
public void setDeptName(String deptName) {
this.deptName = deptName;
}
public void setId(Long id)
{ {
this.id = id; this.id = id;
} }

View File

@ -1,4 +1,4 @@
package com.yanzhu.jh.project.domain.vo; package com.yanzhu.jh.video.domain;
import java.io.Serializable; import java.io.Serializable;
import java.util.Date; import java.util.Date;

View File

@ -1,7 +1,7 @@
package com.yanzhu.jh.project.service; package com.yanzhu.jh.video.service;
import java.util.List; import java.util.List;
import com.yanzhu.jh.project.domain.DevAiProjectConfig; import com.yanzhu.jh.video.domain.DevAiProjectConfig;
/** /**
* Service * Service

View File

@ -1,8 +1,8 @@
package com.yanzhu.jh.project.service; package com.yanzhu.jh.video.service;
import java.util.List; import java.util.List;
import com.yanzhu.jh.project.domain.DevAiProjectData; import com.yanzhu.jh.video.domain.DevAiProjectData;
import com.yanzhu.jh.project.domain.vo.DevAiProjectDataVO; import com.yanzhu.jh.video.domain.DevAiProjectDataVO;
/** /**
* Service * Service

View File

@ -1,12 +1,12 @@
package com.yanzhu.jh.project.service.impl; package com.yanzhu.jh.video.service.impl;
import java.util.List; import java.util.List;
import com.ruoyi.common.utils.DateUtils; import com.ruoyi.common.utils.DateUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import com.yanzhu.jh.project.mapper.DevAiProjectConfigMapper; import com.yanzhu.jh.project.mapper.DevAiProjectConfigMapper;
import com.yanzhu.jh.project.domain.DevAiProjectConfig; import com.yanzhu.jh.video.domain.DevAiProjectConfig;
import com.yanzhu.jh.project.service.IDevAiProjectConfigService; import com.yanzhu.jh.video.service.IDevAiProjectConfigService;
import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.common.utils.SecurityUtils;
/** /**
* Service * Service

View File

@ -1,4 +1,4 @@
package com.yanzhu.jh.project.service.impl; package com.yanzhu.jh.video.service.impl;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
@ -8,15 +8,14 @@ import com.ruoyi.common.enums.PublicStateEnum;
import com.ruoyi.common.utils.DateUtils; import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.file.FileUploadUtils; import com.ruoyi.common.utils.file.FileUploadUtils;
import com.ruoyi.common.utils.file.MultipartFileUtils; import com.ruoyi.common.utils.file.MultipartFileUtils;
import com.yanzhu.jh.project.domain.vo.DevAiProjectDataVO; import com.yanzhu.jh.video.domain.DevAiProjectDataVO;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import com.yanzhu.jh.project.mapper.DevAiProjectDataMapper; import com.yanzhu.jh.project.mapper.DevAiProjectDataMapper;
import com.yanzhu.jh.project.domain.DevAiProjectData; import com.yanzhu.jh.video.domain.DevAiProjectData;
import com.yanzhu.jh.project.service.IDevAiProjectDataService; import com.yanzhu.jh.video.service.IDevAiProjectDataService;
import com.ruoyi.common.utils.SecurityUtils;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
/** /**
@ -79,7 +78,7 @@ public class DevAiProjectDataServiceImpl implements IDevAiProjectDataService
@Override @Override
public void insertHttpDevAiProjectData(DevAiProjectDataVO devAiProjectDataVO) public void insertHttpDevAiProjectData(DevAiProjectDataVO devAiProjectDataVO)
{ {
logger.info("上报消息解析成功!!开始转换实体!!!"); logger.info("AiBox消息解析成功!!开始转换实体!!!");
DevAiProjectData devAiProjectData = new DevAiProjectData(); DevAiProjectData devAiProjectData = new DevAiProjectData();
devAiProjectData.setDeviceId(devAiProjectDataVO.getDeviceId()); devAiProjectData.setDeviceId(devAiProjectDataVO.getDeviceId());
/** 设备名称 */ /** 设备名称 */
@ -133,7 +132,7 @@ public class DevAiProjectDataServiceImpl implements IDevAiProjectDataService
logger.info("实体转换成功Base64开始转换图片"); logger.info("实体转换成功Base64开始转换图片");
String objImg64 = devAiProjectDataVO.getBigImage().get("Image").toString(); String objImg64 = devAiProjectDataVO.getBigImage().get("Image").toString();
try { try {
MultipartFile file = MultipartFileUtils.base64ToMultipartFile(objImg64); MultipartFile file = MultipartFileUtils.base64ToMultipartFile("data:image/png;base64,"+objImg64);
// 上传文件路径 // 上传文件路径
String filePath = RuoYiConfig.getUploadPath(); String filePath = RuoYiConfig.getUploadPath();
// 上传并返回新文件名称 // 上传并返回新文件名称

View File

@ -7,7 +7,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<resultMap type="DevAiProjectData" id="DevAiProjectDataResult"> <resultMap type="DevAiProjectData" id="DevAiProjectDataResult">
<result property="id" column="id" /> <result property="id" column="id" />
<result property="projectId" column="project_id" /> <result property="projectId" column="project_id" />
<result property="projectName" column="projectName" />
<result property="deptId" column="dept_id" /> <result property="deptId" column="dept_id" />
<result property="deptName" column="deptName" />
<result property="deviceId" column="device_id" /> <result property="deviceId" column="device_id" />
<result property="deviceName" column="device_name" /> <result property="deviceName" column="device_name" />
<result property="deviceAddr0" column="device_addr0" /> <result property="deviceAddr0" column="device_addr0" />
@ -39,23 +41,38 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</resultMap> </resultMap>
<sql id="selectDevAiProjectDataVo"> <sql id="selectDevAiProjectDataVo">
select id, project_id, dept_id, device_id, device_name, device_addr0, device_addr1, serial_number, ipc_serial_num, ipc_addr, image_url, channel_id, channel_name, alarm_type, alarm_id, report_rate, timestamp, left_top_x, left_top_y, right_btm_x, right_btm_y, person_num, in_num, out_num, plate_no, value_type, alarm_videoURL, alarm_video_name, compare_result, create_time, is_del from dev_ai_project_data select dapd.id, dapd.project_id, sp.projectName, dapd.dept_id, sd.dept_name as deptName, dapd.device_id, dapd.device_name, dapd.device_addr0, dapd.device_addr1, dapd.serial_number, dapd.ipc_serial_num, dapd.ipc_addr, dapd.image_url, dapd.channel_id, dapd.channel_name, dapd.alarm_type, dapd.alarm_id, dapd.report_rate, dapd.timestamp, dapd.left_top_x, dapd.left_top_y, dapd.right_btm_x, dapd.right_btm_y, dapd.person_num, dapd.in_num, dapd.out_num, dapd.plate_no, dapd.value_type, dapd.alarm_videoURL, dapd.alarm_video_name, dapd.compare_result, dapd.create_time, dapd.is_del from dev_ai_project_data dapd
left join sur_project sp on sp.id=dapd.project_id
left join sys_dept sd on sd.dept_id=dapd.dept_id
</sql> </sql>
<select id="selectDevAiProjectDataList" parameterType="DevAiProjectData" resultMap="DevAiProjectDataResult"> <select id="selectDevAiProjectDataList" parameterType="DevAiProjectData" resultMap="DevAiProjectDataResult">
<include refid="selectDevAiProjectDataVo"/> <include refid="selectDevAiProjectDataVo"/>
<where> <where>
<if test="projectId != null "> and project_id = #{projectId}</if> and dapd.is_del='0'
<if test="deptId != null "> and dept_id = #{deptId}</if> <if test="projectId != null "> and dapd.project_id = #{projectId}</if>
<if test="deviceName != null and deviceName != ''"> and device_name like concat('%', #{deviceName}, '%')</if> <if test="projectName != null and projectName != ''"> and sp.projectName like concat('%', #{projectName}, '%')</if>
<if test="alarmType != null "> and alarm_type = #{alarmType}</if> <if test="deptId != null "> and dapd.dept_id = #{deptId}</if>
<if test="plateNo != null "> and plate_no = #{plateNo}</if> <if test="deptName != null and deptName != ''"> and sd.dept_name like concat('%', #{deptName}, '%')</if>
<if test="deviceName != null and deviceName != ''"> and dapd.device_name like concat('%', #{deviceName}, '%')</if>
<if test="alarmType != null "> and dapd.alarm_type = #{alarmType}</if>
<if test="plateNo != null "> and dapd.plate_no = #{plateNo}</if>
<!-- 查询条件-项目部门 -->
<if test="projectDeptId != null "> and sp.deptId = #{projectDeptId}</if>
<!--子部门数据-->
<if test='nowRole == "4"'> and sp.deptId = #{nowDept}</if>
<!--监理单位/总包公司/分包单位查询当前关联数据-->
<if test='nowRole == "5" or nowRole == "6" or nowRole == "7"'> and sp.id in (select spui.projectId from sur_project_unit_info spui where spui.unitId = #{nowDept} and spui.del_flag=0 )</if>
<!--普通用户查询项目人员-->
<if test='nowRole == "15" or nowRole == "16" or nowRole == "17" or nowRole == "99"'>
and sp.id in (select spu.project_id from sur_project_userinfo spu where spu.user_id = #{nowUser} and spu.is_del=0)
</if>
</where> </where>
</select> </select>
<select id="selectDevAiProjectDataById" parameterType="Long" resultMap="DevAiProjectDataResult"> <select id="selectDevAiProjectDataById" parameterType="Long" resultMap="DevAiProjectDataResult">
<include refid="selectDevAiProjectDataVo"/> <include refid="selectDevAiProjectDataVo"/>
where id = #{id} where dapd.id = #{id}
</select> </select>
<insert id="insertDevAiProjectData" parameterType="DevAiProjectData" useGeneratedKeys="true" keyProperty="id"> <insert id="insertDevAiProjectData" parameterType="DevAiProjectData" useGeneratedKeys="true" keyProperty="id">