diff --git a/pom.xml b/pom.xml index 15d8560..6b3f9f8 100644 --- a/pom.xml +++ b/pom.xml @@ -213,6 +213,12 @@ org.eclipse.paho.client.mqttv3 1.2.2 + + + com.kingbase8 + kingbase8 + 8.6.0 + diff --git a/src/main/java/com/xmgl/recognition/modules/admin/controller/VideoOpController.java b/src/main/java/com/xmgl/recognition/modules/admin/controller/VideoOpController.java new file mode 100644 index 0000000..86d91f9 --- /dev/null +++ b/src/main/java/com/xmgl/recognition/modules/admin/controller/VideoOpController.java @@ -0,0 +1,51 @@ +package com.xmgl.recognition.modules.admin.controller; + +import cn.xuyanwu.spring.file.storage.FileInfo; +import cn.xuyanwu.spring.file.storage.FileStorageService; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.xmgl.recognition.annotation.OperLog; +import com.xmgl.recognition.jeecg.common.api.vo.Result; +import com.xmgl.recognition.modules.admin.entity.VideoConfig; +import com.xmgl.recognition.modules.admin.service.IVideoConfigService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections.MapUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import springfox.documentation.annotations.ApiIgnore; + +import java.io.File; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * @author pengj + * @date 2023/4/15 10:13 + */ +@RestController +@RequestMapping("/xmgl/video") +@Slf4j +@Api(tags = "视频操作公共接口") +public class VideoOpController { + + @Autowired + private IVideoConfigService videoConfigService; + + /** + * 获取监控点预览取流 + * + * @return + */ + @OperLog(operModul = "视频操作管理", operType = "查询", operDesc = "获取配置信息") + @ApiOperation(value = " 获取配置信息", notes = "获取配置信息", httpMethod = "GET") + @GetMapping(value = "/getConfig") + public Result getConfig() { + return Result.success(videoConfigService.getOne(null)); + } +} diff --git a/src/main/java/com/xmgl/recognition/modules/admin/entity/VideoConfig.java b/src/main/java/com/xmgl/recognition/modules/admin/entity/VideoConfig.java new file mode 100644 index 0000000..1bab1d1 --- /dev/null +++ b/src/main/java/com/xmgl/recognition/modules/admin/entity/VideoConfig.java @@ -0,0 +1,61 @@ +package com.xmgl.recognition.modules.admin.entity; + +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 org.jeecgframework.poi.excel.annotation.Excel; + +import java.io.Serializable; + +/** + * @Description: 视频配置 + * @author: pengj + * @date: 2023-06-01 + * @version: V1.0 + */ +@Data +@TableName("video_config") +@ApiModel(value = "VideoConfig实体类", description = "VideoConfig") +public class VideoConfig implements Serializable { + private static final long serialVersionUID = 1L; + + /** + * id + */ + @TableId(type = IdType.AUTO) + @ApiModelProperty(value = "id") + private Integer id; + /** + * ip地址 + */ + @Excel(name = "ip地址", width = 15) + @ApiModelProperty(value = "ip地址") + private String ip; + /** + * 端口号 + */ + @Excel(name = "端口号", width = 15) + @ApiModelProperty(value = "端口号") + private String port; + /** + * app_key + */ + @Excel(name = "app_key", width = 15) + @ApiModelProperty(value = "app_key") + private String appKey; + /** + * app_secret + */ + @Excel(name = "app_secret", width = 15) + @ApiModelProperty(value = "app_secret") + private String appSecret; + /** + * sn + */ + @Excel(name = "sn", width = 15) + @ApiModelProperty(value = "sn") + private String sn; +} diff --git a/src/main/java/com/xmgl/recognition/modules/admin/mapper/VideoConfigMapper.java b/src/main/java/com/xmgl/recognition/modules/admin/mapper/VideoConfigMapper.java new file mode 100644 index 0000000..a88616c --- /dev/null +++ b/src/main/java/com/xmgl/recognition/modules/admin/mapper/VideoConfigMapper.java @@ -0,0 +1,18 @@ +package com.xmgl.recognition.modules.admin.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.xmgl.recognition.annotation.DataScope; +import com.xmgl.recognition.modules.admin.entity.VideoConfig; +import org.apache.ibatis.annotations.Mapper; + +/** + * @Description: 视频配置 + * @author: pengj + * @date: 2023-06-01 + * @version: V1.0 + */ +@Mapper +@DataScope +public interface VideoConfigMapper extends BaseMapper { + +} diff --git a/src/main/java/com/xmgl/recognition/modules/admin/mapper/xml/MonitorDevMapper.xml b/src/main/java/com/xmgl/recognition/modules/admin/mapper/xml/MonitorDevMapper.xml new file mode 100644 index 0000000..49112a0 --- /dev/null +++ b/src/main/java/com/xmgl/recognition/modules/admin/mapper/xml/MonitorDevMapper.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/main/java/com/xmgl/recognition/modules/admin/mapper/xml/VideoConfigMapper.xml b/src/main/java/com/xmgl/recognition/modules/admin/mapper/xml/VideoConfigMapper.xml new file mode 100644 index 0000000..03acbe2 --- /dev/null +++ b/src/main/java/com/xmgl/recognition/modules/admin/mapper/xml/VideoConfigMapper.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/main/java/com/xmgl/recognition/modules/admin/service/IVideoConfigService.java b/src/main/java/com/xmgl/recognition/modules/admin/service/IVideoConfigService.java new file mode 100644 index 0000000..4ef4076 --- /dev/null +++ b/src/main/java/com/xmgl/recognition/modules/admin/service/IVideoConfigService.java @@ -0,0 +1,14 @@ +package com.xmgl.recognition.modules.admin.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.xmgl.recognition.modules.admin.entity.VideoConfig; + +/** + * @Description: 视频配置 + * @author: pengj + * @date: 2023-06-01 + * @version: V1.0 + */ +public interface IVideoConfigService extends IService { + +} diff --git a/src/main/java/com/xmgl/recognition/modules/admin/service/impl/VideoConfigServiceImpl.java b/src/main/java/com/xmgl/recognition/modules/admin/service/impl/VideoConfigServiceImpl.java new file mode 100644 index 0000000..8dad67c --- /dev/null +++ b/src/main/java/com/xmgl/recognition/modules/admin/service/impl/VideoConfigServiceImpl.java @@ -0,0 +1,18 @@ +package com.xmgl.recognition.modules.admin.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.xmgl.recognition.modules.admin.entity.VideoConfig; +import com.xmgl.recognition.modules.admin.mapper.VideoConfigMapper; +import com.xmgl.recognition.modules.admin.service.IVideoConfigService; +import org.springframework.stereotype.Service; + +/** + * @Description: 视频配置 + * @author: pengj + * @date: 2023-06-01 + * @version: V1.0 + */ +@Service +public class VideoConfigServiceImpl extends ServiceImpl implements IVideoConfigService { + +} diff --git a/src/main/java/com/xmgl/recognition/modules/enterprise/controller/DeviceAlarmController.java b/src/main/java/com/xmgl/recognition/modules/enterprise/controller/DeviceAlarmController.java index ae05630..cf1d474 100644 --- a/src/main/java/com/xmgl/recognition/modules/enterprise/controller/DeviceAlarmController.java +++ b/src/main/java/com/xmgl/recognition/modules/enterprise/controller/DeviceAlarmController.java @@ -1,18 +1,26 @@ package com.xmgl.recognition.modules.enterprise.controller; +import cn.hutool.core.date.DateField; +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.xmgl.recognition.annotation.OperLog; import com.xmgl.recognition.jeecg.common.util.PageUtil; +import com.xmgl.recognition.modules.admin.entity.SystemDictData; +import com.xmgl.recognition.modules.admin.service.ISystemDictDataService; +import com.xmgl.recognition.util.CommonUtil; +import com.xmgl.recognition.util.ParamEnum; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; -import java.util.Arrays; -import java.util.List; -import java.util.Map; +import java.text.SimpleDateFormat; +import java.util.*; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.net.URLDecoder; +import java.util.stream.Collectors; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @@ -58,6 +66,9 @@ public class DeviceAlarmController { @Autowired private IDeviceAlarmService deviceAlarmService; + @Autowired + private ISystemDictDataService systemDictDataService; + /** * 分页列表查询 * @@ -100,4 +111,129 @@ public class DeviceAlarmController { } return result; } + + /** + * 设备报警统计 + * @return + */ + @OperLog(operModul = "设备报警管理", operType = "查询", operDesc = "设备报警统计") + @ApiOperation(value = "设备报警统计", notes = "设备报警统计", httpMethod = "GET") + @GetMapping(value = "/queryStat") + public Result> queryStat() { + Result> result = new Result>(); + Map resultMap = new HashMap<>(); + List deviceAlarmList = deviceAlarmService.getList(Wrappers.lambdaQuery() + .between(DeviceAlarm::getReportTime, DateUtil.beginOfDay(new Date()), DateUtil.endOfDay(new Date()))); + List systemDictData = systemDictDataService.getByType(ParamEnum.SysDictType.AI_ALARM_TYPE.getValue()); + deviceAlarmList.stream().forEach(d -> { + d.setTypeName(CommonUtil.getDictValue(systemDictData, d.getType())); + }); + resultMap.put("deviceAlarmList", deviceAlarmList); + resultMap.put("todayAlarm", deviceAlarmService.count(Wrappers.lambdaQuery() + .between(DeviceAlarm::getReportTime, DateUtil.beginOfDay(new Date()), DateUtil.endOfDay(new Date())))); + resultMap.put("weekAlarm", deviceAlarmService.count(Wrappers.lambdaQuery() + .between(DeviceAlarm::getReportTime, DateUtil.beginOfDay(DateUtil.offsetDay(new Date(), -7)), DateUtil.endOfDay(new Date())))); + resultMap.put("monthAlarm", deviceAlarmService.count(Wrappers.lambdaQuery() + .between(DeviceAlarm::getReportTime, DateUtil.beginOfDay(DateUtil.offsetDay(new Date(), -30)), DateUtil.endOfDay(new Date())))); + result.setResult(resultMap); + result.setSuccess(true); + return result; + } + + /** + * 设备报警统计 + * @return + */ + @OperLog(operModul = "设备报警管理", operType = "查询", operDesc = "设备报警类型统计") + @ApiOperation(value = "设备报警类型统计", notes = "设备报警类型统计", httpMethod = "POST") + @ApiImplicitParam(name = "day", value = "天数范围", paramType = "body", required = true, dataType = "Integer") + @PostMapping(value = "/queryByType") + public Result>> queryByType(@ApiIgnore @RequestBody Map map) { + Result>> result = new Result>>(); + Integer day = MapUtils.getInteger(map, "day"); + List list = deviceAlarmService.list(Wrappers.lambdaQuery() + .between(DeviceAlarm::getReportTime, DateUtil.offsetDay(new Date(), -day), DateUtil.endOfDay(new Date()))); + Map> collect = list.stream().collect(Collectors.groupingBy(l -> l.getType())); + Map resultMap = collect.entrySet().stream().collect(Collectors.toMap(Map.Entry::getKey, e -> e.getValue().size())); + List> resultList = new ArrayList<>(); + List systemDictData = systemDictDataService.getByType(ParamEnum.SysDictType.AI_ALARM_TYPE.getValue()); + systemDictData.stream().forEach(s -> { + Map map1 = new HashMap<>(); + map1.put("type", s.getDictValue()); + map1.put("num", resultMap.get(s.getDictLabel())); + resultList.add(map1); + }); + /*resultMap.entrySet().stream().forEach(r -> { + Map map1 = new HashMap<>(); + map1.put("type", CommonUtil.getDictValue(systemDictData, r.getKey())); + map1.put("num", r.getValue()); + resultList.add(map1); + });*/ + result.setSuccess(true); + result.setResult(resultList); + return result; + } + + /** + * 设备报警统计 + * @return + */ + @OperLog(operModul = "设备报警管理", operType = "查询", operDesc = "设备报警时间范围统计") + @ApiOperation(value = "设备报警时间范围统计", notes = "设备报警时间范围统计", httpMethod = "POST") + @ApiImplicitParam(name = "type", value = "查询类型(1:今日;2:24小时;3:7天;4:30天;)", paramType = "body", required = true, dataType = "Integer") + @PostMapping(value = "/queryByTime") + public Result>> queryByTime(@ApiIgnore @RequestBody Map map) { + Result>> result = new Result>>(); + Integer type = MapUtils.getInteger(map, "type"); + List list = new ArrayList<>(); + int day = 1; + Date beginTime = new Date(); + if (type == 1) { + beginTime = DateUtil.beginOfDay(new Date()); + list = deviceAlarmService.list(Wrappers.lambdaQuery() + .between(DeviceAlarm::getReportTime, beginTime, new Date())); + } else { + if (type == 2) { + day = 1; + } else if (type == 3) { + day = 7; + } else if (type == 4) { + day = 30; + } + beginTime = DateUtil.offsetDay(new Date(), -day); + list = deviceAlarmService.list(Wrappers.lambdaQuery() + .between(DeviceAlarm::getReportTime, beginTime, new Date())); + } + List> resultList = new ArrayList<>(); + if (type <= 2) { + for (int i = 0; i < 30; i++) { + Map resultMap = new HashMap<>(); + DateTime dateTime = DateUtil.offsetHour(beginTime, i); + if (type == 1 && DateUtil.compare(dateTime, DateUtil.endOfDay(new Date())) >= 0) { + break; + } + if (type == 2 && DateUtil.compare(dateTime, new Date()) >= 0) { + break; + } + DateTime dateTime1 = DateUtil.offsetHour(dateTime, 1); + resultMap.put("time", dateTime.toString("HH:mm")); + resultMap.put("num", list.stream().filter(l -> DateUtil.compare(l.getReportTime(), dateTime) >= 0 && DateUtil.compare(dateTime1, l.getReportTime()) > 0).count()); + resultList.add(resultMap); + } + } else { + for (int i = 0; i < 31; i++) { + Map resultMap = new HashMap<>(); + DateTime dateTime = DateUtil.offsetDay(beginTime, i); + if (DateUtil.compare(dateTime, new Date()) >= 0) { + break; + } + resultMap.put("time", dateTime.toDateStr()); + resultMap.put("num", list.stream().filter(l -> new SimpleDateFormat("yyyy-MM-dd").format(l.getReportTime()).equals(dateTime.toDateStr())).count()); + resultList.add(resultMap); + } + } + result.setSuccess(true); + result.setResult(resultList); + return result; + } } diff --git a/src/main/java/com/xmgl/recognition/modules/enterprise/controller/MonitorDevController.java b/src/main/java/com/xmgl/recognition/modules/enterprise/controller/MonitorDevController.java new file mode 100644 index 0000000..f5cb341 --- /dev/null +++ b/src/main/java/com/xmgl/recognition/modules/enterprise/controller/MonitorDevController.java @@ -0,0 +1,201 @@ +package com.xmgl.recognition.modules.enterprise.controller; + +import com.xmgl.recognition.annotation.OperLog; +import com.xmgl.recognition.jeecg.common.util.PageUtil; +import com.xmgl.recognition.security.SecurityUtil; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; + +import java.util.Arrays; +import java.util.List; +import java.util.Map; +import java.io.IOException; +import java.io.UnsupportedEncodingException; +import java.net.URLDecoder; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import com.xmgl.recognition.jeecg.common.api.vo.Result; +import com.xmgl.recognition.jeecg.common.system.query.QueryGenerator; +import com.xmgl.recognition.jeecg.common.util.oConvertUtils; +import com.xmgl.recognition.modules.enterprise.entity.MonitorDev; +import com.xmgl.recognition.modules.enterprise.service.IMonitorDevService; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import lombok.extern.slf4j.Slf4j; + +import org.apache.commons.collections.MapUtils; +import org.jeecgframework.poi.excel.ExcelImportUtil; +import org.jeecgframework.poi.excel.def.NormalExcelConstants; +import org.jeecgframework.poi.excel.entity.ExportParams; +import org.jeecgframework.poi.excel.entity.ImportParams; +import org.jeecgframework.poi.excel.view.JeecgEntityExcelView; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; +import org.springframework.web.multipart.MultipartHttpServletRequest; +import org.springframework.web.servlet.ModelAndView; +import com.alibaba.fastjson.JSON; +import springfox.documentation.annotations.ApiIgnore; + + +/** + * @Title: Controller + * @Description: 摄像机 + * @author: pengj + * @date: 2023-12-18 + * @version: V1.0 + */ +@RestController +@RequestMapping("/ent/monitorDev") +@Slf4j +@Api(tags = "摄像机管理") +public class MonitorDevController { + @Autowired + private IMonitorDevService monitorDevService; + + /** + * 分页列表查询 + * @return + */ + @OperLog(operModul = "摄像机管理", operType = "分页查询", operDesc = "分页列表查询摄像机信息") + @ApiOperation(value = " 分页列表查询摄像机信息", notes = "分页列表查询摄像机信息", httpMethod = "POST") + @ApiImplicitParams({ + @ApiImplicitParam(name = "pageNo", value = "页数", paramType = "query", required = true, defaultValue = "1", dataType = "Integer"), + @ApiImplicitParam(name = "pageSize", value = "每页条数", paramType = "query", required = true, defaultValue = "10", dataType = "Integer") + }) + @PostMapping(value = "/page") + public Result> queryPageList(@ApiIgnore @RequestBody Map map) { + QueryWrapper queryWrapper = QueryGenerator.initPageQueryWrapper(MonitorDev.class, map); + Page page = PageUtil.getPage(map); + IPage pageList = monitorDevService.page(page, queryWrapper); + return Result.success(pageList); + } + + /** + * 列表查询 + * + * @param monitorDev + * @return + */ + @OperLog(operModul = "摄像机管理", operType = "列表查询", operDesc = "列表查询摄像机信息") + @ApiOperation(value = " 列表查询摄像机信息", notes = "列表查询摄像机信息", httpMethod = "POST") + @PostMapping(value = "/list") + public Result> queryList(@RequestBody MonitorDev monitorDev) { + QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(monitorDev); + List list = monitorDevService.list(queryWrapper); + return Result.success(list); + } + + + /** + * 添加 + * + * @param monitorDev + * @return + */ + @OperLog(operModul = "摄像机管理", operType = "新增", operDesc = "添加摄像机信息") + @ApiOperation(value = " 添加摄像机信息", notes = "添加摄像机信息", httpMethod = "POST") + @PostMapping(value = "/add") + public Result add(@RequestBody MonitorDev monitorDev) { + monitorDev.setSn(SecurityUtil.getUser().getSn()); + monitorDevService.save(monitorDev); + return Result.success("添加成功!"); + } + + /** + * 编辑 + * + * @param monitorDev + * @return + */ + @OperLog(operModul = "摄像机管理", operType = "修改", operDesc = "编辑摄像机信息") + @ApiOperation(value = "编辑摄像机信息", notes = "编辑摄像机信息", httpMethod = "POST") + @PostMapping(value = "/edit") + public Result edit(@RequestBody MonitorDev monitorDev) { + Result result = new Result(); + MonitorDev monitorDevEntity = monitorDevService.getById(monitorDev.getMonitorId()); + if (monitorDevEntity == null) { + result.error500("未找到对应实体"); + } else { + boolean ok = monitorDevService.updateById(monitorDev); + if (ok) { + result.success("修改成功!"); + } else { + result.success("操作失败!"); + } + } + + return result; + } + + /** + * 通过id删除 + * + * @return + */ + @OperLog(operModul = "摄像机管理", operType = "删除", operDesc = "删除摄像机信息") + @ApiOperation(value = "删除摄像机信息", notes = "删除摄像机信息", httpMethod = "POST") + @ApiImplicitParam(name = "id", value = "摄像机ID", paramType = "query", required = true, dataType = "Integer") + @PostMapping(value = "/delete") + public Result delete(@RequestBody MonitorDev monitorDev) { + Result result = new Result(); + MonitorDev monitorDevEntity = monitorDevService.getById(monitorDev.getMonitorId()); + if (monitorDevEntity == null) { + result.error500("未找到对应实体"); + } else { + boolean ok = monitorDevService.removeById(monitorDev.getMonitorId()); + if (ok) { + result.success("删除成功!"); + } else { + result.success("操作失败!"); + } + } + return result; + } + + /** + * 批量删除 + * @return + */ + @OperLog(operModul = "摄像机管理", operType = "批量删除", operDesc = "批量删除摄像机信息") + @ApiOperation(value = "批量删除摄像机信息", notes = "批量删除摄像机信息", httpMethod = "POST") + @ApiImplicitParam(name = "ids", value = "摄像机ID字符串", paramType = "query", required = true, dataType = "String") + @PostMapping(value = "/deleteBatch") + public Result deleteBatch(@ApiIgnore @RequestBody Map map) { + Result result = new Result(); + String ids = MapUtils.getString(map, "ids"); + if (ids == null || "".equals(ids.trim())) { + result.error500("参数不识别!"); + } else { + this.monitorDevService.removeByIds(Arrays.asList(ids.split(","))); + result.success("删除成功!"); + } + return result; + } + + /** + * 通过id查询 + * @return + */ + @OperLog(operModul = "摄像机管理", operType = "查询", operDesc = "通过id查询摄像机信息") + @ApiOperation(value = "通过id查询摄像机信息", notes = "通过id查询摄像机信息", httpMethod = "POST") + @ApiImplicitParam(name = "id", value = "摄像机ID", paramType = "query", required = true, dataType = "Integer") + @PostMapping(value = "/queryById") + public Result queryById(@ApiIgnore @RequestBody Map map) { + Result result = new Result(); + MonitorDev monitorDev = monitorDevService.getById(MapUtils.getString(map, "id")); + if (monitorDev == null) { + result.error500("未找到对应实体"); + } else { + result.setResult(monitorDev); + result.setSuccess(true); + } + return result; + } +} diff --git a/src/main/java/com/xmgl/recognition/modules/enterprise/entity/DeviceAlarm.java b/src/main/java/com/xmgl/recognition/modules/enterprise/entity/DeviceAlarm.java index f5496fd..92827c1 100644 --- a/src/main/java/com/xmgl/recognition/modules/enterprise/entity/DeviceAlarm.java +++ b/src/main/java/com/xmgl/recognition/modules/enterprise/entity/DeviceAlarm.java @@ -99,4 +99,11 @@ public class DeviceAlarm implements Serializable { @TableField(exist = false) @ApiModelProperty(value = "设备名称") private String deviceName; + + /** + * 类型名称 + */ + @TableField(exist = false) + @ApiModelProperty(value = "类型名称") + private String typeName; } diff --git a/src/main/java/com/xmgl/recognition/modules/enterprise/entity/MonitorDev.java b/src/main/java/com/xmgl/recognition/modules/enterprise/entity/MonitorDev.java new file mode 100644 index 0000000..f0140aa --- /dev/null +++ b/src/main/java/com/xmgl/recognition/modules/enterprise/entity/MonitorDev.java @@ -0,0 +1,76 @@ +package com.xmgl.recognition.modules.enterprise.entity; + +import java.io.Serializable; +import java.util.Date; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import com.fasterxml.jackson.annotation.JsonFormat; +import org.springframework.format.annotation.DateTimeFormat; +import org.jeecgframework.poi.excel.annotation.Excel; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; + +/** + * @Description: 摄像机 + * @author: pengj + * @date: 2023-12-18 + * @version: V1.0 + */ +@Data +@TableName("monitor_dev") +@ApiModel(value = "MonitorDev实体类", description = "MonitorDev") +public class MonitorDev implements Serializable { + private static final long serialVersionUID = 1L; + + /** + * 监控ID + */ + @TableId(type = IdType.ASSIGN_ID) + @ApiModelProperty(value = "监控ID") + private Long monitorId; + /** + * 项目sn + */ + @Excel(name = "项目sn", width = 15) + @ApiModelProperty(value = "项目sn") + private String sn; + /** + * 视频名称 + */ + @Excel(name = "视频名称", width = 15) + @ApiModelProperty(value = "视频名称") + private String name; + /** + * 设备编码 + */ + @Excel(name = "设备编码", width = 15) + @ApiModelProperty(value = "设备编码") + private String code; + /** + * 设备状态(0:离线;1:在线;) + */ + @Excel(name = "设备状态(0:离线;1:在线;)", width = 15) + @ApiModelProperty(value = "设备状态(0:离线;1:在线;)") + private Integer state; + /** + * 绑定时间 + */ + @Excel(name = "绑定时间", width = 20, format = "yyyy-MM-dd HH:mm:ss") + @ApiModelProperty(value = "绑定时间") + private Date createTime; + /** + * 显示排序 越小越靠前(排序字段) + */ + @Excel(name = "显示排序 越小越靠前(排序字段)", width = 15) + @ApiModelProperty(value = "显示排序 越小越靠前(排序字段)") + private Integer priority; + /** + * AI盒子设备ID + */ + @Excel(name = "AI盒子设备ID", width = 15) + @ApiModelProperty(value = "AI盒子设备ID") + private Long deviceId; +} diff --git a/src/main/java/com/xmgl/recognition/modules/enterprise/mapper/DeviceAlarmMapper.java b/src/main/java/com/xmgl/recognition/modules/enterprise/mapper/DeviceAlarmMapper.java index 7f19c10..91e9fb8 100644 --- a/src/main/java/com/xmgl/recognition/modules/enterprise/mapper/DeviceAlarmMapper.java +++ b/src/main/java/com/xmgl/recognition/modules/enterprise/mapper/DeviceAlarmMapper.java @@ -24,4 +24,6 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; public interface DeviceAlarmMapper extends BaseMapper { Page pageList(Page page, @Param(Constants.WRAPPER) Wrapper wrapper); + + List pageList(@Param(Constants.WRAPPER) Wrapper wrapper); } diff --git a/src/main/java/com/xmgl/recognition/modules/enterprise/mapper/MonitorDevMapper.java b/src/main/java/com/xmgl/recognition/modules/enterprise/mapper/MonitorDevMapper.java new file mode 100644 index 0000000..81ca871 --- /dev/null +++ b/src/main/java/com/xmgl/recognition/modules/enterprise/mapper/MonitorDevMapper.java @@ -0,0 +1,21 @@ +package com.xmgl.recognition.modules.enterprise.mapper; + +import java.util.List; + +import com.xmgl.recognition.annotation.DataScope; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import com.xmgl.recognition.modules.enterprise.entity.MonitorDev; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + * @Description: 摄像机 + * @author: pengj + * @date: 2023-12-18 + * @version: V1.0 + */ +@Mapper +@DataScope +public interface MonitorDevMapper extends BaseMapper { + +} diff --git a/src/main/java/com/xmgl/recognition/modules/enterprise/mapper/xml/DeviceAlarmMapper.xml b/src/main/java/com/xmgl/recognition/modules/enterprise/mapper/xml/DeviceAlarmMapper.xml index f5f22e0..3dfb787 100644 --- a/src/main/java/com/xmgl/recognition/modules/enterprise/mapper/xml/DeviceAlarmMapper.xml +++ b/src/main/java/com/xmgl/recognition/modules/enterprise/mapper/xml/DeviceAlarmMapper.xml @@ -3,7 +3,7 @@ \ No newline at end of file diff --git a/src/main/java/com/xmgl/recognition/modules/enterprise/mapper/xml/MonitorDevMapper.xml b/src/main/java/com/xmgl/recognition/modules/enterprise/mapper/xml/MonitorDevMapper.xml new file mode 100644 index 0000000..49112a0 --- /dev/null +++ b/src/main/java/com/xmgl/recognition/modules/enterprise/mapper/xml/MonitorDevMapper.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/main/java/com/xmgl/recognition/modules/enterprise/service/IDeviceAlarmService.java b/src/main/java/com/xmgl/recognition/modules/enterprise/service/IDeviceAlarmService.java index b793ded..9bb4e40 100644 --- a/src/main/java/com/xmgl/recognition/modules/enterprise/service/IDeviceAlarmService.java +++ b/src/main/java/com/xmgl/recognition/modules/enterprise/service/IDeviceAlarmService.java @@ -1,9 +1,13 @@ package com.xmgl.recognition.modules.enterprise.service; +import com.baomidou.mybatisplus.core.conditions.Wrapper; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.xmgl.recognition.modules.enterprise.entity.DeviceAlarm; import com.baomidou.mybatisplus.extension.service.IService; +import java.util.List; import java.util.Map; /** @@ -15,4 +19,6 @@ import java.util.Map; public interface IDeviceAlarmService extends IService { Page pageList(Map map); + + List getList(Wrapper wrapper); } diff --git a/src/main/java/com/xmgl/recognition/modules/enterprise/service/IMonitorDevService.java b/src/main/java/com/xmgl/recognition/modules/enterprise/service/IMonitorDevService.java new file mode 100644 index 0000000..6675590 --- /dev/null +++ b/src/main/java/com/xmgl/recognition/modules/enterprise/service/IMonitorDevService.java @@ -0,0 +1,14 @@ +package com.xmgl.recognition.modules.enterprise.service; + +import com.xmgl.recognition.modules.enterprise.entity.MonitorDev; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + * @Description: 摄像机 + * @author: pengj + * @date: 2023-12-18 + * @version: V1.0 + */ +public interface IMonitorDevService extends IService { + +} diff --git a/src/main/java/com/xmgl/recognition/modules/enterprise/service/impl/DeviceAlarmServiceImpl.java b/src/main/java/com/xmgl/recognition/modules/enterprise/service/impl/DeviceAlarmServiceImpl.java index bbbf88a..132bf22 100644 --- a/src/main/java/com/xmgl/recognition/modules/enterprise/service/impl/DeviceAlarmServiceImpl.java +++ b/src/main/java/com/xmgl/recognition/modules/enterprise/service/impl/DeviceAlarmServiceImpl.java @@ -1,5 +1,6 @@ package com.xmgl.recognition.modules.enterprise.service.impl; +import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.toolkit.StringUtils; import com.baomidou.mybatisplus.core.toolkit.Wrappers; @@ -13,6 +14,7 @@ import org.springframework.stereotype.Service; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import java.util.List; import java.util.Map; /** @@ -50,4 +52,9 @@ public class DeviceAlarmServiceImpl extends ServiceImpl getList(Wrapper wrapper) { + return baseMapper.pageList(wrapper); + } } diff --git a/src/main/java/com/xmgl/recognition/modules/enterprise/service/impl/MonitorDevServiceImpl.java b/src/main/java/com/xmgl/recognition/modules/enterprise/service/impl/MonitorDevServiceImpl.java new file mode 100644 index 0000000..4473943 --- /dev/null +++ b/src/main/java/com/xmgl/recognition/modules/enterprise/service/impl/MonitorDevServiceImpl.java @@ -0,0 +1,19 @@ +package com.xmgl.recognition.modules.enterprise.service.impl; + +import com.xmgl.recognition.modules.enterprise.entity.MonitorDev; +import com.xmgl.recognition.modules.enterprise.mapper.MonitorDevMapper; +import com.xmgl.recognition.modules.enterprise.service.IMonitorDevService; +import org.springframework.stereotype.Service; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; + +/** + * @Description: 摄像机 + * @author: pengj + * @date: 2023-12-18 + * @version: V1.0 + */ +@Service +public class MonitorDevServiceImpl extends ServiceImpl implements IMonitorDevService { + +} diff --git a/src/main/java/com/xmgl/recognition/util/ParamEnum.java b/src/main/java/com/xmgl/recognition/util/ParamEnum.java index 2d13b43..fdab8aa 100644 --- a/src/main/java/com/xmgl/recognition/util/ParamEnum.java +++ b/src/main/java/com/xmgl/recognition/util/ParamEnum.java @@ -38,4 +38,26 @@ public class ParamEnum { this.topic = topic; } } + /** + * 字典类型 + */ + public enum SysDictType { + AI_ALARM_TYPE("ai_alarm_type", "AI预警类型"); + private String value; + private String desc; + + public String getValue() { + return value; + } + + public String getDesc() { + return desc; + } + + SysDictType(String value, String desc) { + this.value = value; + this.desc = desc; + } + } + } diff --git a/src/main/resources/application-dev.properties b/src/main/resources/application-dev.properties new file mode 100644 index 0000000..7395a8f --- /dev/null +++ b/src/main/resources/application-dev.properties @@ -0,0 +1,18 @@ +# 数据库配置 +spring.datasource.url=jdbc:mysql://localhost:3306/airecognition?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&autoReconnect=true&useSSL=false +spring.datasource.username=root +spring.datasource.password=root +# 数据库驱动类 +spring.datasource.driver-class-name=com.mysql.jdbc.Driver +# 数据库连接池配置 +spring.datasource.type=com.zaxxer.hikari.HikariDataSource +spring.datasource.hikari.minimum-idle=20 +spring.datasource.hikari.maximum-pool-size=500 +spring.datasource.hikari.auto-commit=true +spring.datasource.hikari.idle-timeout=40000 +spring.datasource.hikari.pool-name=DatebookHikariCP +spring.datasource.hikari.max-lifetime=1800000 +spring.datasource.hikari.validation-timeout=3000 +#(wait_timeout-30)*1000 +spring.datasource.hikari.connection-timeout=50000 +spring.datasource.hikari.connection-test-query=SELECT 1 \ No newline at end of file diff --git a/src/main/resources/application-king.properties b/src/main/resources/application-king.properties new file mode 100644 index 0000000..373a216 --- /dev/null +++ b/src/main/resources/application-king.properties @@ -0,0 +1,4 @@ +spring.datasource.url=jdbc:kingbase8://127.0.0.1:54321/airecognition +spring.datasource.username=airecognition +spring.datasource.password=123456 +spring.datasource.driver-class-name=com.kingbase8.Driver diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 4c3a004..0a816ef 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -1,24 +1,6 @@ server.port=5566 - -# 数据库配置 -spring.datasource.url=jdbc:mysql://localhost:3306/airecognition?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&autoReconnect=true&useSSL=false -spring.datasource.username=root -spring.datasource.password=root -# 数据库驱动类 -spring.datasource.driver-class-name=com.mysql.jdbc.Driver -# 数据库连接池配置 -spring.datasource.type=com.zaxxer.hikari.HikariDataSource -spring.datasource.hikari.minimum-idle=20 -spring.datasource.hikari.maximum-pool-size=500 -spring.datasource.hikari.auto-commit=true -spring.datasource.hikari.idle-timeout=40000 -spring.datasource.hikari.pool-name=DatebookHikariCP -spring.datasource.hikari.max-lifetime=1800000 -spring.datasource.hikari.validation-timeout=3000 -#(wait_timeout-30)*1000 -spring.datasource.hikari.connection-timeout=50000 -spring.datasource.hikari.connection-test-query=SELECT 1 - +#环境选择 +spring.profiles.active=dev # 如果查询结果中包含空值的列,则 MyBatis 在映射的时候,会不会映射这个字段 mybatis-plus.configuration.call-setters-on-nulls=true # 序列化配置 @@ -52,7 +34,7 @@ spring.file-storage.minio[0].domain=http://182.90.224.147:9000/airecognition/ spring.file-storage.minio[0].base-path= # mqtt服务器配置 -mqtt.host=tcp://182.90.224.147:1883 +mqtt.host=tcp://jxjzw.zhgdyun.com:1883 mqtt.clientId=mqttx_recognition1 mqtt.username=admin mqtt.password=JXJ@admin