添加视频质量诊断结果

This commit is contained in:
guo 2024-04-02 18:26:22 +08:00
parent c90b7a8a48
commit d0bbecbf0e
23 changed files with 703 additions and 136 deletions

View File

@ -1,8 +1,18 @@
package com.zhgd.xmgl.async;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.zhgd.xmgl.call.HikvisionCall;
import com.zhgd.xmgl.modules.car.entity.CarInfo;
import com.zhgd.xmgl.modules.project.entity.Project;
import com.zhgd.xmgl.modules.project.entity.ProjectVideoConfig;
import com.zhgd.xmgl.modules.video.entity.ProjectVideoHkVqd;
import com.zhgd.xmgl.modules.video.entity.VideoItem;
import com.zhgd.xmgl.modules.video.mapper.ProjectVideoHkVqdMapper;
import com.zhgd.xmgl.modules.video.mapper.VideoItemMapper;
import com.zhgd.xmgl.modules.worker.entity.DepartmentInfo;
import com.zhgd.xmgl.modules.worker.entity.EnterpriseInfo;
import com.zhgd.xmgl.modules.worker.entity.TeamInfo;
@ -13,12 +23,19 @@ import org.springframework.context.annotation.Lazy;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.List;
@Slf4j
@Component
public class AsyncHikvision {
@Autowired
@Lazy
HikvisionCall hikvisionCall;
@Autowired
VideoItemMapper videoItemMapper;
@Autowired
ProjectVideoHkVqdMapper projectVideoHkVqdMapper;
/**
* 添加劳务人员-海康
@ -168,4 +185,48 @@ public class AsyncHikvision {
e.printStackTrace();
}
}
/**
* 添加视频质量诊断结果
*
* @param projectVideoConfig
*/
@Async
public void addVqdForHikvision(ProjectVideoConfig projectVideoConfig) {
try {
List<VideoItem> videoItems = videoItemMapper.selectList(new LambdaQueryWrapper<VideoItem>()
.eq(VideoItem::getVideoId, projectVideoConfig.getId()));
ArrayList<String> indexCodes = new ArrayList<>();
for (int i = 0; i < videoItems.size(); i++) {
VideoItem videoItem = videoItems.get(i);
indexCodes.add(videoItem.getSerialNumber());
if ((i + 1) % 20 == 0) {
//20一次发生http请求
JSONObject requestParam = new JSONObject();
requestParam.put("pageNo", 1);
requestParam.put("pageSize", 20);
requestParam.put("indexCodes", indexCodes);
JSONObject jo = hikvisionCall.getVqdForHikvision(projectVideoConfig, requestParam);
if (jo != null) {
//插入结果
JSONArray listJa = jo.getJSONArray("list");
if (CollUtil.isEmpty(listJa)) {
continue;
}
for (int j = 0; j < listJa.size(); j++) {
JSONObject lJo = listJa.getJSONObject(j);
ProjectVideoHkVqd vqd = new ProjectVideoHkVqd();
BeanUtil.copyProperties(lJo, vqd);
vqd.setProjectSn(projectVideoConfig.getProjectSn());
projectVideoHkVqdMapper.insert(vqd);
}
}
} else if (i == videoItems.size() - 1) {
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}

View File

@ -20,6 +20,7 @@ import com.zhgd.xmgl.modules.car.mapper.CarInfoMapper;
import com.zhgd.xmgl.modules.car.mapper.CarPassRecordMapper;
import com.zhgd.xmgl.modules.car.mapper.CarTypeMapper;
import com.zhgd.xmgl.modules.project.entity.Project;
import com.zhgd.xmgl.modules.project.entity.ProjectVideoConfig;
import com.zhgd.xmgl.modules.project.mapper.ProjectMapper;
import com.zhgd.xmgl.modules.worker.entity.DepartmentInfo;
import com.zhgd.xmgl.modules.worker.entity.EnterpriseInfo;
@ -301,44 +302,6 @@ public class HikvisionCall {
return null;
}
/**
* 测试获取人员详情
*
* @return
*/
@GetMapping("/getCameraOnline")
public Result getCameraOnline() {
Project project = projectMapper.selectOne(new LambdaQueryWrapper<Project>().eq(Project::getProjectSn, "B717CB992D054A878FDAFB4A5C169947"));
JSONArray cameraOnline = getCameraOnline(project).getJSONArray("list");
long online = cameraOnline.stream().filter(c -> JSONObject.parseObject(c.toString()).getString("online").equals("1")).count();
long online1 = cameraOnline.stream().filter(c -> JSONObject.parseObject(c.toString()).getString("online").equals("0")).count();
long online2 = cameraOnline.stream().filter(c -> JSONObject.parseObject(c.toString()).getString("online") == null).count();
Map<String, Object> resultMap = new HashMap<>();
resultMap.put("online", online);
resultMap.put("online1", online1);
resultMap.put("online2", online2);
return Result.success(resultMap);
}
/**
* 获取编码设备在线状态
*
* @return
*/
@GetMapping("/getEncodeDeviceOnline")
public Result getEncodeDeviceOnline() {
Project project = projectMapper.selectOne(new LambdaQueryWrapper<Project>().eq(Project::getProjectSn, "B717CB992D054A878FDAFB4A5C169947"));
JSONArray encodedDevice = getEncodeDeviceOnline(project).getJSONArray("list");
long online = encodedDevice.stream().filter(c -> JSONObject.parseObject(c.toString()).getString("online").equals("1")).count();
long online1 = encodedDevice.stream().filter(c -> JSONObject.parseObject(c.toString()).getString("online").equals("0")).count();
long online2 = encodedDevice.stream().filter(c -> JSONObject.parseObject(c.toString()).getString("online") == null).count();
Map<String, Object> resultMap = new HashMap<>();
resultMap.put("online", online);
resultMap.put("online1", online1);
resultMap.put("online2", online2);
return Result.success(resultMap);
}
/**
* 获取车辆颜色
*
@ -1232,46 +1195,6 @@ public class HikvisionCall {
return null;
}
/**
* 获取监控点在线状态
* @param project
*/
public JSONObject getCameraOnline(Project project) {
final String ARTEMIS_PATH = "/artemis";
final String path = ARTEMIS_PATH + "/api/nms/v1/online/camera/get";
String host = "https://" + project.getArtemisConfigHost();
JSONObject requestParam = new JSONObject();
String rs = HikvisionUtil.doPost(host, path, JSONArray.toJSONString(requestParam), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret());
if (rs == null) {
return null;
}
JSONObject jod = HikvisionUtil.getJSONObjectData(rs);
if (jod != null) {
return jod;
}
return null;
}
/**
* 获取编码设备在线状态
* @param project
*/
public JSONObject getEncodeDeviceOnline(Project project) {
final String ARTEMIS_PATH = "/artemis";
final String path = ARTEMIS_PATH + "/api/nms/v1/online/encode_device/get";
String host = "https://" + project.getArtemisConfigHost();
JSONObject requestParam = new JSONObject();
String rs = HikvisionUtil.doPost(host, path, JSONArray.toJSONString(requestParam), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret());
JSONObject jod = HikvisionUtil.getJSONObjectData(rs);
if (rs == null) {
return null;
}
if (jod != null) {
return jod;
}
return null;
}
private HikvisionOrganization getHikvisionOrganization(Project project) {
HikvisionOrganization hikvisionOrganization = new HikvisionOrganization();
hikvisionOrganization.setClientId(null);
@ -1422,4 +1345,67 @@ public class HikvisionCall {
}
/**
* 获取监控点在线状态
*
* @param project
*/
public JSONObject getCameraOnline(Project project) {
final String ARTEMIS_PATH = "/artemis";
final String path = ARTEMIS_PATH + "/api/nms/v1/online/camera/get";
String host = "https://" + project.getArtemisConfigHost();
JSONObject requestParam = new JSONObject();
String rs = HikvisionUtil.doPost(host, path, JSONArray.toJSONString(requestParam), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret());
if (rs == null) {
return null;
}
JSONObject jod = HikvisionUtil.getJSONObjectData(rs);
if (jod != null) {
return jod;
}
return null;
}
/**
* 获取编码设备在线状态
*
* @param project
*/
public JSONObject getEncodeDeviceOnline(Project project) {
final String ARTEMIS_PATH = "/artemis";
final String path = ARTEMIS_PATH + "/api/nms/v1/online/encode_device/get";
String host = "https://" + project.getArtemisConfigHost();
JSONObject requestParam = new JSONObject();
String rs = HikvisionUtil.doPost(host, path, JSONArray.toJSONString(requestParam), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret());
JSONObject jod = HikvisionUtil.getJSONObjectData(rs);
if (rs == null) {
return null;
}
if (jod != null) {
return jod;
}
return null;
}
/**
* 获取视频质量诊断结果
*
* @param config
*/
public JSONObject getVqdForHikvision(ProjectVideoConfig config, JSONObject requestParam) {
final String ARTEMIS_PATH = "/artemis";
final String path = ARTEMIS_PATH + "/api/nms/v1/vqd/list";
String host = "https://" + config.getAccount() + ":" + config.getPassword();
String rs = HikvisionUtil.doPost(host, path, JSONArray.toJSONString(requestParam), null, config.getAppId(), config.getAppSecret());
JSONObject jod = HikvisionUtil.getJSONObjectData(rs);
if (rs == null) {
return null;
}
if (jod != null) {
return jod;
}
return null;
}
}

View File

@ -0,0 +1,128 @@
package com.zhgd.xmgl.modules.video.controller;
import com.zhgd.xmgl.modules.video.entity.ProjectVideoHkVqd;
import com.zhgd.xmgl.modules.video.service.IProjectVideoHkVqdService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiImplicitParams;
import java.util.HashMap;
import springfox.documentation.annotations.ApiIgnore;
import java.util.List;
import com.zhgd.jeecg.common.api.vo.Result;
import org.apache.commons.collections.MapUtils;
import org.simpleframework.xml.core.Validate;
import com.baomidou.mybatisplus.core.metadata.IPage;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
/**
* @Title: Controller
* @Description: 海康视频质量诊断结果
* @author pds
* @date 2024-04-02
* @version V1.0
*/
@RestController
@RequestMapping("/xmgl/projectVideoHkVqd")
@Slf4j
@Api(tags = "海康视频质量诊断结果相关Api")
public class ProjectVideoHkVqdController {
@Autowired
private IProjectVideoHkVqdService projectVideoHkVqdService;
/**
* 分页列表查询
*
* @return
*/
@ApiOperation(value = "分页列表查询海康视频质量诊断结果信息", notes = "分页列表查询海康视频质量诊断结果信息", httpMethod = "GET")
@ApiImplicitParams({
@ApiImplicitParam(name = "pageNo", value = "第几页", paramType = "query", required = true, dataType = "Integer"),
@ApiImplicitParam(name = "pageSize", value = "每页显示条数", paramType = "query", required = true, dataType = "Integer"),
})
@GetMapping(value = "/page")
public Result<IPage<ProjectVideoHkVqd>> queryPageList(@ApiIgnore @RequestParam HashMap<String, Object> paramMap) {
return Result.success(projectVideoHkVqdService.queryPageList(paramMap));
}
/**
* 列表查询
*
* @return
*/
@ApiOperation(value = "列表查询海康视频质量诊断结果信息", notes = "列表查询海康视频质量诊断结果信息", httpMethod = "GET")
@GetMapping(value = "/list")
public Result<List<ProjectVideoHkVqd>> queryList(@ApiIgnore @RequestParam HashMap<String, Object> paramMap) {
return Result.success(projectVideoHkVqdService.queryList(paramMap));
}
/**
* 添加
*
* @param projectVideoHkVqd
* @return
*/
@ApiOperation(value = "添加海康视频质量诊断结果信息", notes = "添加海康视频质量诊断结果信息", httpMethod = "POST")
@PostMapping(value = "/add")
public Result<ProjectVideoHkVqd> add(@RequestBody @Validate ProjectVideoHkVqd projectVideoHkVqd) {
projectVideoHkVqdService.add(projectVideoHkVqd);
return Result.ok();
}
/**
* 编辑
*
* @param projectVideoHkVqd
* @return
*/
@ApiOperation(value = "编辑海康视频质量诊断结果信息", notes = "编辑海康视频质量诊断结果信息", httpMethod = "POST")
@PostMapping(value = "/edit")
public Result<ProjectVideoHkVqd> edit(@RequestBody ProjectVideoHkVqd projectVideoHkVqd) {
projectVideoHkVqdService.edit(projectVideoHkVqd);
return Result.ok();
}
/**
* 通过id删除
*
* @return
*/
@ApiOperation(value = "删除海康视频质量诊断结果信息", notes = "删除海康视频质量诊断结果信息", httpMethod = "POST")
@ApiImplicitParam(name = "id", value = "海康视频质量诊断结果ID", paramType = "body", required = true, dataType = "String", example = "{\"id\":\"1\"}")
@PostMapping(value = "/delete")
public Result<ProjectVideoHkVqd> delete(@ApiIgnore @RequestBody HashMap<String, Object> map) {
projectVideoHkVqdService.delete(MapUtils.getString(map, "id"));
return Result.ok();
}
/**
* 通过id查询
*
* @param id
* @return
*/
@ApiOperation(value = "通过id查询海康视频质量诊断结果信息", notes = "通过id查询海康视频质量诊断结果信息", httpMethod = "GET")
@ApiImplicitParam(name = "id", value = "海康视频质量诊断结果ID", paramType = "query", required = true, dataType = "Integer")
@GetMapping(value = "/queryById")
public Result<ProjectVideoHkVqd> queryById(@RequestParam(name = "id", required = true) String id) {
Result<ProjectVideoHkVqd> result = new Result<ProjectVideoHkVqd>();
ProjectVideoHkVqd projectVideoHkVqd = projectVideoHkVqdService.getById(id);
if (projectVideoHkVqd == null) {
result.error500("未找到对应实体");
} else {
result.setResult(projectVideoHkVqd);
result.setSuccess(true);
}
return result;
}
}

View File

@ -0,0 +1,176 @@
package com.zhgd.xmgl.modules.video.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 pds
* @date 2024-04-02
* @version V1.0
*/
@Data
@TableName("project_video_hk_vqd")
@ApiModel(value = "ProjectVideoHkVqd实体类", description = "ProjectVideoHkVqd")
public class ProjectVideoHkVqd implements Serializable {
private static final long serialVersionUID = 1L;
/**
* id
*/
@TableId(type = IdType.ASSIGN_ID)
@ApiModelProperty(value = "id")
private java.lang.Long id;
/**
* 偏色检测结果(2-诊断失败-1-未知1-正常0-异常)
*/
@Excel(name = "偏色检测结果(2-诊断失败,-1-未知1-正常0-异常)", width = 15)
@ApiModelProperty(value = "偏色检测结果(2-诊断失败,-1-未知1-正常0-异常)")
private java.lang.Integer scChromaResult;
/**
* 雪花点干扰结果(2-诊断失败-1-未知1-正常0-异常)
*/
@Excel(name = "雪花点干扰结果(2-诊断失败,-1-未知1-正常0-异常)", width = 15)
@ApiModelProperty(value = "雪花点干扰结果(2-诊断失败,-1-未知1-正常0-异常)")
private java.lang.Integer scSnowResult;
/**
* 图像过暗结果(2-诊断失败-1-未知1-正常0-异常)
*/
@Excel(name = "图像过暗结果(2-诊断失败,-1-未知1-正常0-异常)", width = 15)
@ApiModelProperty(value = "图像过暗结果(2-诊断失败,-1-未知1-正常0-异常)")
private java.lang.Integer scDarkResult;
/**
* 巡检日期格式yyyy-MM-dd
*/
@Excel(name = "巡检日期格式yyyy-MM-dd", width = 15)
@ApiModelProperty(value = "巡检日期格式yyyy-MM-dd")
private java.lang.String inspectDate;
/**
* 监控点编号通用唯一识别码UUID
*/
@Excel(name = "监控点编号通用唯一识别码UUID", width = 15)
@ApiModelProperty(value = "监控点编号通用唯一识别码UUID")
private java.lang.String indexCode;
/**
* 亮度异常结果2-诊断失败-1-未知1-正常0-异常
*/
@Excel(name = "亮度异常结果2-诊断失败,-1-未知1-正常0-异常)", width = 15)
@ApiModelProperty(value = "亮度异常结果2-诊断失败,-1-未知1-正常0-异常)")
private java.lang.Integer scLumaResult;
/**
* 画面冻结结果2-诊断失败-1-未知1-正常0-异常
*/
@Excel(name = "画面冻结结果2-诊断失败,-1-未知1-正常0-异常)", width = 15)
@ApiModelProperty(value = "画面冻结结果2-诊断失败,-1-未知1-正常0-异常)")
private java.lang.Integer scFreezeResult;
/**
* 视频抖动结果2-诊断失败-1-未知1-正常0-异常
*/
@Excel(name = "视频抖动结果2-诊断失败,-1-未知1-正常0-异常)", width = 15)
@ApiModelProperty(value = "视频抖动结果2-诊断失败,-1-未知1-正常0-异常)")
private java.lang.Integer scShakeResult;
/**
* 分辨率720为基准 1-高清0-标清-1-未知
*/
@Excel(name = "分辨率720为基准 1-高清0-标清,-1-未知)", width = 15)
@ApiModelProperty(value = "分辨率720为基准 1-高清0-标清,-1-未知)")
private java.lang.Integer resolution;
/**
* 对比度检测结果2-诊断失败-1-未知1-正常0-异常
*/
@Excel(name = "对比度检测结果2-诊断失败,-1-未知1-正常0-异常)", width = 15)
@ApiModelProperty(value = "对比度检测结果2-诊断失败,-1-未知1-正常0-异常)")
private java.lang.Integer scContrastResult;
/**
* 条纹干扰结果2-诊断失败-1-未知1-正常0-异常
*/
@Excel(name = "条纹干扰结果2-诊断失败,-1-未知1-正常0-异常)", width = 15)
@ApiModelProperty(value = "条纹干扰结果2-诊断失败,-1-未知1-正常0-异常)")
private java.lang.Integer scStreakResult;
/**
* 图片url地址
*/
@Excel(name = "图片url地址", width = 15)
@ApiModelProperty(value = "图片url地址")
private java.lang.String picUrl;
/**
* 视频丢帧结果2-诊断失败-1-未知1-正常0-异常
*/
@Excel(name = "视频丢帧结果2-诊断失败,-1-未知1-正常0-异常)", width = 15)
@ApiModelProperty(value = "视频丢帧结果2-诊断失败,-1-未知1-正常0-异常)")
private java.lang.Integer scFrameResult;
/**
* 视频遮挡结果2-诊断失败-1-未知1-正常0-异常
*/
@Excel(name = "视频遮挡结果2-诊断失败,-1-未知1-正常0-异常)", width = 15)
@ApiModelProperty(value = "视频遮挡结果2-诊断失败,-1-未知1-正常0-异常)")
private java.lang.Integer scCoverResult;
/**
* 视频丢失结果2-诊断失败-1-未知1-正常0-异常
*/
@Excel(name = "视频丢失结果2-诊断失败,-1-未知1-正常0-异常)", width = 15)
@ApiModelProperty(value = "视频丢失结果2-诊断失败,-1-未知1-正常0-异常)")
private java.lang.Integer scSignalResult;
/**
* 黑白图像结果2-诊断失败-1-未知1-正常0-异常
*/
@Excel(name = "黑白图像结果2-诊断失败,-1-未知1-正常0-异常)", width = 15)
@ApiModelProperty(value = "黑白图像结果2-诊断失败,-1-未知1-正常0-异常)")
private java.lang.Integer scMonoResult;
/**
* 视频巡检结果6-码流时延5-解码失败4-取流失败3-登录失败2-异常1-正常0或-1-未检测
*/
@Excel(name = "视频巡检结果6-码流时延5-解码失败4-取流失败3-登录失败2-异常1-正常0或-1-未检测)", width = 15)
@ApiModelProperty(value = "视频巡检结果6-码流时延5-解码失败4-取流失败3-登录失败2-异常1-正常0或-1-未检测)")
private java.lang.Integer inspectResult;
/**
* 图像模糊结果2-诊断失败-1-未知1-正常0-异常
*/
@Excel(name = "图像模糊结果2-诊断失败,-1-未知1-正常0-异常)", width = 15)
@ApiModelProperty(value = "图像模糊结果2-诊断失败,-1-未知1-正常0-异常)")
private java.lang.Integer scBlurResult;
/**
* 场景变更结果2-诊断失败-1-未知1-正常0-异常
*/
@Excel(name = "场景变更结果2-诊断失败,-1-未知1-正常0-异常)", width = 15)
@ApiModelProperty(value = "场景变更结果2-诊断失败,-1-未知1-正常0-异常)")
private java.lang.Integer scSceneResult;
/**
* 视频剧变结果2-诊断失败-1-未知1-正常0-异常
*/
@Excel(name = "视频剧变结果2-诊断失败,-1-未知1-正常0-异常)", width = 15)
@ApiModelProperty(value = "视频剧变结果2-诊断失败,-1-未知1-正常0-异常)")
private java.lang.Integer scFlashResult;
/**
* 创建时间 yyyy-MM-dd HH:mm:ss
*/
@Excel(name = "创建时间 yyyy-MM-dd HH:mm:ss", width = 20, format = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty(value = "创建时间 yyyy-MM-dd HH:mm:ss")
private java.util.Date createTime;
/**
* 更新时间 yyyy-MM-dd HH:mm:ss
*/
@Excel(name = "更新时间 yyyy-MM-dd HH:mm:ss", width = 20, format = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty(value = "更新时间 yyyy-MM-dd HH:mm:ss")
private java.util.Date updateTime;
/**
* 项目sn
*/
@Excel(name = "项目sn", width = 15)
@ApiModelProperty(value = "项目sn")
private java.lang.String projectSn;
}

View File

@ -0,0 +1,16 @@
package com.zhgd.xmgl.modules.video.mapper;
import com.zhgd.xmgl.modules.video.entity.ProjectVideoHkVqd;
import org.apache.ibatis.annotations.Mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* @Description: 海康视频质量诊断结果
* @author pds
* @date 2024-04-02
* @version V1.0
*/
@Mapper
public interface ProjectVideoHkVqdMapper extends BaseMapper<ProjectVideoHkVqd> {
}

View File

@ -0,0 +1,4 @@
<?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="com.zhgd.xmgl.modules.video.mapper.ProjectVideoHkVqdMapper">
</mapper>

View File

@ -307,7 +307,11 @@
resultType="com.zhgd.xmgl.modules.yunlianwanwu.middle.entity.VideoItemConfigBo">
SELECT t1.*, t2.project_sn
FROM video_item t1
INNER JOIN project_video_config t2 ON t2.id = t1.video_id
INNER JOIN project_video_config t2 ON t2.id = t1.video_id
where 1=1
<if test="videoType != null and videoType != ''">
and t2.video_type = #{videoType}
</if>
</select>
<select id="queryById" resultMap="videoItemRm">

View File

@ -0,0 +1,27 @@
package com.zhgd.xmgl.modules.video.service;
import com.zhgd.xmgl.modules.video.entity.ProjectVideoHkVqd;
import com.baomidou.mybatisplus.extension.service.IService;
import com.baomidou.mybatisplus.core.metadata.IPage;
import java.util.HashMap;
import java.util.List;
/**
* @Description: 海康视频质量诊断结果
* @author pds
* @date 2024-04-02
* @version V1.0
*/
public interface IProjectVideoHkVqdService extends IService<ProjectVideoHkVqd> {
IPage<ProjectVideoHkVqd> queryPageList(HashMap<String, Object> paramMap);
List<ProjectVideoHkVqd> queryList(HashMap<String, Object> paramMap);
void add(ProjectVideoHkVqd projectVideoHkVqd);
void edit(ProjectVideoHkVqd projectVideoHkVqd);
void delete(String id);
}

View File

@ -0,0 +1,81 @@
package com.zhgd.xmgl.modules.video.service.impl;
import com.zhgd.jeecg.common.execption.OpenAlertException;
import com.zhgd.xmgl.modules.video.entity.ProjectVideoHkVqd;
import com.zhgd.xmgl.modules.video.mapper.ProjectVideoHkVqdMapper;
import com.zhgd.xmgl.modules.video.service.IProjectVideoHkVqdService;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.zhgd.jeecg.common.system.query.QueryGenerator;
import com.zhgd.xmgl.util.PageUtil;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import java.util.HashMap;
import java.util.List;
import com.zhgd.xmgl.util.RefUtil;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.beans.factory.annotation.Autowired;
/**
* @Description: 海康视频质量诊断结果
* @author pds
* @date 2024-04-02
* @version V1.0
*/
@Service
@Transactional(rollbackFor = Exception.class)
public class ProjectVideoHkVqdServiceImpl extends ServiceImpl<ProjectVideoHkVqdMapper, ProjectVideoHkVqd> implements IProjectVideoHkVqdService {
@Autowired
private ProjectVideoHkVqdMapper projectVideoHkVqdMapper;
@Override
public IPage<ProjectVideoHkVqd> queryPageList(HashMap<String, Object> paramMap) {
QueryWrapper<ProjectVideoHkVqd> queryWrapper = getQueryWrapper(paramMap);
Page<ProjectVideoHkVqd> page = PageUtil.getPage(paramMap);
IPage<ProjectVideoHkVqd> pageList = this.page(page, queryWrapper);
pageList.setRecords(dealList(pageList.getRecords()));
return pageList;
}
@Override
public List<ProjectVideoHkVqd> queryList(HashMap<String, Object> paramMap) {
QueryWrapper<ProjectVideoHkVqd> queryWrapper = getQueryWrapper(paramMap);
return dealList(this.list(queryWrapper));
}
private QueryWrapper<ProjectVideoHkVqd> getQueryWrapper(HashMap<String, Object> paramMap) {
String alias = "";
QueryWrapper<ProjectVideoHkVqd> queryWrapper = QueryGenerator.initPageQueryWrapper(ProjectVideoHkVqd.class, paramMap, alias);
queryWrapper.orderByDesc(alias + RefUtil.fieldNameUlc(ProjectVideoHkVqd::getId));
return queryWrapper;
}
private List<ProjectVideoHkVqd> dealList(List<ProjectVideoHkVqd> list) {
return list;
}
@Override
public void add(ProjectVideoHkVqd projectVideoHkVqd) {
projectVideoHkVqd.setId(null);
baseMapper.insert(projectVideoHkVqd);
}
@Override
public void edit(ProjectVideoHkVqd projectVideoHkVqd) {
baseMapper.updateById(projectVideoHkVqd);
}
@Override
public void delete(String id) {
ProjectVideoHkVqd projectVideoHkVqd = baseMapper.selectById(id);
if (projectVideoHkVqd == null) {
throw new OpenAlertException("未找到对应实体");
}
baseMapper.deleteById(id);
}
}

View File

@ -89,6 +89,11 @@ public class WorkerCertificateServiceImpl extends ServiceImpl<WorkerCertificateM
return true;
}
/**
* 更新黑名单
*
* @param workerCertificate
*/
private void updateExpired(WorkerCertificate workerCertificate) {
List<WorkerCertificate> workerCertificates = workerCertificateMapper.selectList(new LambdaQueryWrapper<WorkerCertificate>()
.eq(WorkerCertificate::getWorkerId, workerCertificate.getWorkerId()));

View File

@ -42,12 +42,12 @@ public class XzSupplierQualificationController {
* @return
*/
@ApiOperation(value = "列表查询星纵-供应商-企业资质信息", notes = "列表查询星纵-供应商-企业资质信息", httpMethod = "POST")
@ApiImplicitParam(name = "xzSupplierId", value = "所属星纵-供应商id", paramType = "body", required = true, dataType = "String")
@PostMapping(value = "/list")
@ApiImplicitParam(name = "userId", value = "用户id", paramType = "body", required = true, dataType = "String")
@PostMapping(value = "/list")
public Result<List<XzSupplierQualification>> selectXzSupplierBadRecordList(@RequestBody Map<String, Object> map) {
Result<List<XzSupplierQualification>> result = new Result<List<XzSupplierQualification>>();
QueryWrapper<XzSupplierQualification> queryWrapper = new QueryWrapper<>();
queryWrapper.lambda().eq(XzSupplierQualification::getXzSupplierId, MapUtils.getString(map, "xzSupplierId"));
queryWrapper.lambda().eq(XzSupplierQualification::getUserId, MapUtils.getString(map, "userId"));
List<XzSupplierQualification> pageList = xzSupplierQualificationService.list(queryWrapper);
result.setSuccess(true);
result.setResult(pageList);

View File

@ -24,7 +24,7 @@ import java.util.Map;
/**
* @Title: Controller
* @Description: 星纵-用户和供应商关联
* @Description: 星纵-用户和供应商关联
* @author pds
* @date 2020-08-13
* @version V1.0
@ -32,7 +32,7 @@ import java.util.Map;
@RestController
@RequestMapping("/xmgl/xzUserToSupplier")
@Slf4j
@Api(tags = "星纵-用户和供应商关联")
@Api(tags = "星纵-用户和供应商关联")
public class XzUserToSupplierController {
@Autowired
private IXzUserToSupplierService xzUserToSupplierService;
@ -42,7 +42,7 @@ public class XzUserToSupplierController {
*
* @return
*/
@ApiOperation(value = "分页列表查询星纵-用户和供应商关联", notes = "分页列表查询星纵-用户和供应商关联", httpMethod = "POST")
@ApiOperation(value = "分页列表查询星纵-用户和供应商关联", notes = "分页列表查询星纵-用户和供应商关联", httpMethod = "POST")
@ApiImplicitParams({
@ApiImplicitParam(name = "xzSupplierTypeId", value = "企业类型ID", paramType = "body", required = false, dataType = "String"),
@ApiImplicitParam(name = "xzSupplierName", value = "星纵-供应商名称", paramType = "body", required = false, dataType = "String"),
@ -56,7 +56,7 @@ public class XzUserToSupplierController {
return Result.success(pageList);
}
@ApiOperation(value = "列表查询星纵-用户和供应商关联", notes = "列表查询星纵-用户和供应商关联", httpMethod = "POST")
@ApiOperation(value = "列表查询星纵-用户和供应商关联", notes = "列表查询星纵-用户和供应商关联", httpMethod = "POST")
@ApiImplicitParams({
@ApiImplicitParam(name = "xzSupplierName", value = "星纵-供应商名称", paramType = "body", required = false, dataType = "String"),
@ApiImplicitParam(name = "sn", value = "项目sn或企业sn", paramType = "body", required = true, dataType = "String"),
@ -73,8 +73,8 @@ public class XzUserToSupplierController {
* @param xzUserToSupplier
* @return
*/
@OperLog(operModul = "供应商管理", operType = "添加星纵-用户和供应商关联", operDesc = "添加星纵-用户和供应商关联")
@ApiOperation(value = "添加星纵-用户和供应商关联信息", notes = "添加星纵-用户和供应商关联信息", httpMethod = "POST")
@OperLog(operModul = "供应商管理", operType = "添加星纵-用户和供应商关联", operDesc = "添加星纵-用户和供应商关联")
@ApiOperation(value = "添加星纵-用户和供应商关联信息", notes = "添加星纵-用户和供应商关联信息", httpMethod = "POST")
@PostMapping(value = "/add")
public Result<XzUserToSupplier> add(@RequestBody XzUserToSupplier xzUserToSupplier) {
xzUserToSupplierService.saveXzUserToSupplier(xzUserToSupplier);
@ -87,8 +87,8 @@ public class XzUserToSupplierController {
* @param xzUserToSupplier
* @return
*/
@OperLog(operModul = "供应商管理", operType = "编辑星纵-用户和供应商关联", operDesc = "编辑星纵-用户和供应商关联")
@ApiOperation(value = "编辑星纵-用户和供应商关联信息", notes = "编辑星纵-用户和供应商关联信息", httpMethod = "POST")
@OperLog(operModul = "供应商管理", operType = "编辑星纵-用户和供应商关联", operDesc = "编辑星纵-用户和供应商关联")
@ApiOperation(value = "编辑星纵-用户和供应商关联信息", notes = "编辑星纵-用户和供应商关联信息", httpMethod = "POST")
@PostMapping(value = "/edit")
public Result<XzUserToSupplier> edit(@RequestBody XzUserToSupplier xzUserToSupplier) {
xzUserToSupplierService.editXzUserToSupplier(xzUserToSupplier);
@ -101,9 +101,9 @@ public class XzUserToSupplierController {
* @param
* @return
*/
@OperLog(operModul = "供应商管理", operType = "删除星纵-用户和供应商关联", operDesc = "删除星纵-用户和供应商关联")
@ApiOperation(value = "删除星纵-用户和供应商关联信息", notes = "删除星纵-用户和供应商关联信息", httpMethod = "POST")
@ApiImplicitParam(name = "id", value = "星纵-用户和供应商关联ID", paramType = "body", required = true, dataType = "Integer")
@OperLog(operModul = "供应商管理", operType = "删除星纵-用户和供应商关联", operDesc = "删除星纵-用户和供应商关联")
@ApiOperation(value = "删除星纵-用户和供应商关联信息", notes = "删除星纵-用户和供应商关联信息", httpMethod = "POST")
@ApiImplicitParam(name = "id", value = "星纵-用户和供应商关联ID", paramType = "body", required = true, dataType = "Integer")
@PostMapping(value = "/delete")
public Result<XzUserToSupplier> delete(@RequestBody Map<String, Object> map) {
Result<XzUserToSupplier> result = new Result<XzUserToSupplier>();
@ -125,9 +125,9 @@ public class XzUserToSupplierController {
* @param
* @return
*/
@OperLog(operModul = "供应商管理", operType = "批量删除星纵-用户和供应商关联", operDesc = "批量删除星纵-用户和供应商关联")
@ApiOperation(value = "批量删除星纵-用户和供应商关联信息", notes = "批量删除星纵-用户和供应商关联信息", httpMethod = "POST")
@ApiImplicitParam(name = "ids", value = "星纵-用户和供应商关联ID字符串", paramType = "body", required = true, dataType = "String")
@OperLog(operModul = "供应商管理", operType = "批量删除星纵-用户和供应商关联", operDesc = "批量删除星纵-用户和供应商关联")
@ApiOperation(value = "批量删除星纵-用户和供应商关联信息", notes = "批量删除星纵-用户和供应商关联信息", httpMethod = "POST")
@ApiImplicitParam(name = "ids", value = "星纵-用户和供应商关联ID字符串", paramType = "body", required = true, dataType = "String")
@PostMapping(value = "/deleteBatch")
public Result<XzUserToSupplier> deleteBatch(@RequestBody Map<String, Object> map) {
Result<XzUserToSupplier> result = new Result<XzUserToSupplier>();
@ -147,8 +147,8 @@ public class XzUserToSupplierController {
* @param
* @return
*/
@ApiOperation(value = "通过id查询星纵-用户和供应商关联信息", notes = "通过id查询星纵-用户和供应商关联信息", httpMethod = "POST")
@ApiImplicitParam(name = "id", value = "星纵-用户和供应商关联ID", paramType = "body", required = true, dataType = "Integer")
@ApiOperation(value = "通过id查询星纵-用户和供应商关联信息", notes = "通过id查询星纵-用户和供应商关联信息", httpMethod = "POST")
@ApiImplicitParam(name = "id", value = "星纵-用户和供应商关联ID", paramType = "body", required = true, dataType = "Integer")
@PostMapping(value = "/queryById")
public Result<XzUserToSupplier> queryById(@RequestBody Map<String, Object> map) {
Result<XzUserToSupplier> result = new Result<XzUserToSupplier>();
@ -165,7 +165,7 @@ public class XzUserToSupplierController {
@ApiOperation(value = "修改项目下星纵-供应商企业类型", notes = "修改项目下星纵-供应商企业类型", httpMethod = "POST")
@ApiImplicitParams({
@ApiImplicitParam(name = "xzSupplierTypeId", value = "企业类型ID", paramType = "body", required = true, dataType = "String"),
@ApiImplicitParam(name = "ids", value = "星纵-用户和供应商关联ID,多个逗号分隔", paramType = "body", required = true, dataType = "Integer")
@ApiImplicitParam(name = "ids", value = "星纵-用户和供应商关联ID,多个逗号分隔", paramType = "body", required = true, dataType = "Integer")
})
@PostMapping(value = "/updateXzSupplierType")
public Result<XzUserToSupplier> updateXzSupplierType(@RequestBody Map<String, Object> map) {

View File

@ -219,6 +219,7 @@ public class XzSupplier implements Serializable {
@TableField(exist = false)
@ApiModelProperty(value = "用户id")
private java.lang.Long userId;
}

View File

@ -3,8 +3,6 @@ package com.zhgd.xmgl.modules.xz.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@ -25,39 +23,42 @@ public class XzSupplierQualification implements Serializable {
private static final long serialVersionUID = 1L;
/**
* id
*/
@TableId(type = IdType.ASSIGN_ID)
@ApiModelProperty(value = "id")
private java.lang.Long id;
/**
* 所属星纵-供应商id
*/
@Excel(name = "所属星纵-供应商id", width = 15)
@ApiModelProperty(value = "所属星纵-供应商id")
private java.lang.Long xzSupplierId;
/**
* 资质文件名称
*/
@Excel(name = "资质文件名称", width = 15)
@ApiModelProperty(value = "资质文件名称")
private java.lang.String fileName;
* id
*/
@TableId(type = IdType.ASSIGN_ID)
@ApiModelProperty(value = "id")
private java.lang.Long id;
/**
* 用户id
*/
@Excel(name = "用户id", width = 15)
@ApiModelProperty(value = "用户id")
private java.lang.Long userId;
/**
* 资质文件名称
*/
@Excel(name = "资质文件名称", width = 15)
@ApiModelProperty(value = "资质文件名称")
private java.lang.String fileName;
/**
* 资质文件编号
*/
@Excel(name = "资质文件编号", width = 15)
@ApiModelProperty(value = "资质文件编号")
private java.lang.String fileNumber;
/**
* 文件路径
*/
@Excel(name = "文件路径", width = 15)
@ApiModelProperty(value = "文件路径")
private java.lang.String fileUrl;
/**
* 备注
*/
@Excel(name = "备注", width = 15)
@ApiModelProperty(value = "备注")
private java.lang.String remarks;
/**
* 文件路径
*/
@Excel(name = "文件路径", width = 15)
@ApiModelProperty(value = "文件路径")
private java.lang.String fileUrl;
/**
* 备注
*/
@Excel(name = "备注", width = 15)
@ApiModelProperty(value = "备注")
private java.lang.String remarks;
@ApiModelProperty(value = "源文件名称")
private java.lang.String originFileName;
}

View File

@ -11,7 +11,7 @@ import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
/**
* @Description: 星纵-用户和供应商关联
* @Description: 星纵-用户和供应商关联
* @author pds
* @date 2020-08-13
* @version V1.0

View File

@ -13,7 +13,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.springframework.stereotype.Repository;
/**
* @Description: 星纵-用户和供应商关联
* @Description: 星纵-用户和供应商关联
* @author pds
* @date 2020-08-13
* @version V1.0

View File

@ -10,7 +10,7 @@ import java.util.List;
import java.util.Map;
/**
* @Description: 星纵-用户和供应商关联
* @Description: 星纵-用户和供应商关联
* @author pds
* @date 2020-08-13
* @version V1.0

View File

@ -133,7 +133,6 @@ public class XzSupplierQualificationApplyServiceImpl extends ServiceImpl<XzSuppl
if (xzSupplier == null) {
throw new OpenAlertException("供应商不存在");
}
Long oldXzSupplierId = xzSupplier.getId();
xzSupplier.setId(null);
XzSupplierRecord supplierRecord = new XzSupplierRecord();
BeanUtil.copyProperties(xzSupplier, supplierRecord);
@ -143,7 +142,7 @@ public class XzSupplierQualificationApplyServiceImpl extends ServiceImpl<XzSuppl
xzSupplierQualificationApply.setApplyUserId(Long.valueOf(userId));
baseMapper.insert(xzSupplierQualificationApply);
List<XzSupplierQualification> xzSupplierQualifications = xzSupplierQualificationMapper.selectList(new LambdaQueryWrapper<XzSupplierQualification>()
.eq(XzSupplierQualification::getXzSupplierId, oldXzSupplierId));
.eq(XzSupplierQualification::getUserId, userId));
for (XzSupplierQualification xzSupplierQualification : xzSupplierQualifications) {
XzSupplierQualificationRecord qualificationRecord = new XzSupplierQualificationRecord();
qualificationRecord.setXzSupplierRecordId(supplierRecord.getId());

View File

@ -209,6 +209,7 @@ public class XzSupplierServiceImpl extends ServiceImpl<XzSupplierMapper, XzSuppl
map.put("userId", xzSupplier.getUserId());
XzSupplier supplier = getXzSupplierByUserId(map);
if (supplier != null) {
xzSupplier.setId(supplier.getId());
updateXzSupplier(xzSupplier);
} else {
saveXzSupplier(xzSupplier);

View File

@ -30,7 +30,7 @@ import java.util.stream.Collectors;
import java.util.stream.Stream;
/**
* @Description: 星纵-用户和供应商关联
* @Description: 星纵-用户和供应商关联
* @author pds
* @date 2020-08-13
* @version V1.0

View File

@ -18,6 +18,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

View File

@ -0,0 +1,70 @@
package com.zhgd.xmgl.task;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.zhgd.xmgl.async.AsyncHikvision;
import com.zhgd.xmgl.call.HikvisionCall;
import com.zhgd.xmgl.modules.project.entity.ProjectVideoConfig;
import com.zhgd.xmgl.modules.project.mapper.ProjectVideoConfigMapper;
import com.zhgd.xmgl.modules.project.service.ProgressTaskService;
import com.zhgd.xmgl.modules.video.mapper.VideoItemMapper;
import lombok.extern.slf4j.Slf4j;
import net.javacrumbs.shedlock.core.SchedulerLock;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.HashMap;
import java.util.List;
/**
* 视频设备监控点定时任务
*/
@Slf4j
@RestController
@RequestMapping("xmgl/task")
public class VideoItemTask {
@Autowired
HikvisionCall hikvisionCall;
@Autowired
AsyncHikvision asyncHikvision;
@Autowired
ProgressTaskService progressTaskService;
@Autowired
VideoItemMapper videoItemMapper;
@Autowired
ProjectVideoConfigMapper projectVideoConfigMapper;
/**
* 定时获取录像完整性结果
*/
@SchedulerLock(name = "manageAlarmData", lockAtMostFor = 1000 * 60 * 60, lockAtLeastFor = 1000 * 60 * 5)
@Scheduled(cron = "0 0 0/1 * * ?")
public void manageAlarmData() {
log.info("定时获取录像完整性结果任务开始");
HashMap<String, Object> map = new HashMap<>();
map.put("videoType", 3);
//List<VideoItemConfigBo> videoItemConfigBos = videoItemMapper.selectDeviceDetailAndProjectSnList(map);
//videoItemMapper.selectList(new LambdaQueryWrapper<VideoItem>()
// .eq(VideoItem::getProjectSn, ));
//hikvisionCall.getCameraOnline();
}
/**
* 定时获取视频质量诊断结果
*/
@SchedulerLock(name = "addVqdForHikvision", lockAtMostFor = 1000 * 60 * 60, lockAtLeastFor = 1000 * 60 * 5)
@Scheduled(cron = "0 0 0/1 * * ?")
public void addVqdForHikvision() {
log.info("定时获取视频质量诊断结果任务开始");
List<ProjectVideoConfig> projectVideoConfigs = projectVideoConfigMapper.selectList(new LambdaQueryWrapper<ProjectVideoConfig>()
.eq(ProjectVideoConfig::getVideoType, 3));
for (ProjectVideoConfig projectVideoConfig : projectVideoConfigs) {
asyncHikvision.addVqdForHikvision(projectVideoConfig);
}
}
}

View File

@ -92,6 +92,12 @@ public class HikvisionUtil {
return responseStr;
}
/**
* 获取data结果
*
* @param rs
* @return
*/
public static JSONObject getJSONObjectData(String rs) {
JSONObject rsJo = JSONObject.parseObject(rs);
Integer code = rsJo.getInteger("code");