Commit b13041f8 authored by 李成龙's avatar 李成龙

修改:接入骏景视频平台视频数据。

parent 284cee44
...@@ -6,6 +6,7 @@ import java.text.ParseException; ...@@ -6,6 +6,7 @@ import java.text.ParseException;
import java.text.ParsePosition; import java.text.ParsePosition;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.OffsetDateTime;
import java.util.*; import java.util.*;
/** /**
...@@ -660,10 +661,25 @@ public class DateUtils { ...@@ -660,10 +661,25 @@ public class DateUtils {
return now; return now;
} }
public static Date getDateByStr(String dateStr) {
//String dateStr = "2025-08-20T10:41:02.584+08:00";
OffsetDateTime offsetDateTime = OffsetDateTime.parse(dateStr);
// 转换为Date对象
Date date = Date.from(offsetDateTime.toInstant());
return date;
}
public static void main(String[] args) throws Exception { public static void main(String[] args) throws Exception {
System.out.println(DateUtils.convertDateToString(new Date(), DateUtils.CHN_DATE_PATTERN)); String dateStr = "2025-08-20T10:41:02.584+08:00";
// 解析为OffsetDateTime(包含时区信息)
OffsetDateTime offsetDateTime = OffsetDateTime.parse(dateStr);
// 转换为Date对象
Date date = Date.from(offsetDateTime.toInstant());
System.out.println(date); // 输出对应的Date对象
// System.out.println(DateUtils.convertDateToString(new Date(), DateUtils.CHN_DATE_PATTERN));
/*System.out.println(dateTimeToDate(new Date())); /*System.out.println(dateTimeToDate(new Date()));
System.out.println(dateParse("2017-02-04 14:58:20", null)); System.out.println(dateParse("2017-02-04 14:58:20", null));
...@@ -690,10 +706,10 @@ public class DateUtils { ...@@ -690,10 +706,10 @@ public class DateUtils {
// System.out.println(secondsToTimeStr(3600)); // System.out.println(secondsToTimeStr(3600));
// System.out.println(getTimeString(dateParse("2023-09-07 16:15:15", DATE_TIME_PATTERN), dateParse("2023-09-06 " + // System.out.println(getTimeString(dateParse("2023-09-07 16:15:15", DATE_TIME_PATTERN), dateParse("2023-09-06 " +
// "16:15:15", DATE_TIME_PATTERN))); // "16:15:15", DATE_TIME_PATTERN)));
long diff = dateParse("2022-09-07 16:16:16", DATE_TIME_PATTERN).getTime() - dateParse("2023-09-06 10:15:15", // long diff = dateParse("2022-09-07 16:16:16", DATE_TIME_PATTERN).getTime() - dateParse("2023-09-06 10:15:15",
DATE_TIME_PATTERN).getTime(); // DATE_TIME_PATTERN).getTime();
System.out.println(diff/1000); // System.out.println(diff/1000);
System.out.println(secondsToTimeStr((int) diff/1000)); // System.out.println(secondsToTimeStr((int) diff/1000));
} }
/** /**
......
...@@ -8,14 +8,14 @@ import lombok.EqualsAndHashCode; ...@@ -8,14 +8,14 @@ import lombok.EqualsAndHashCode;
import java.util.Date; import java.util.Date;
/** /**
* 单位下摄像头表 * 单位下摄像头配置
* *
* @author system_generator * @author system_generator
* @date 2024-10-09 * @date 2024-10-09
*/ */
@Data @Data
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
@ApiModel(value="BaseEnterpriseVideoDto", description="单位下摄像头表") @ApiModel(value="BaseEnterpriseVideoDto", description="单位下摄像头配置表")
public class BaseEnterpriseVideoDto extends BaseDto { public class BaseEnterpriseVideoDto extends BaseDto {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
......
package com.yeejoin.amos.boot.module.common.api.dto;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.yeejoin.amos.boot.biz.common.dto.BaseDto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.Date;
/**
* 单位下摄像头表
*
* @author system_generator
* @date 2024-10-09
*/
@Data
@EqualsAndHashCode(callSuper = true)
@ApiModel(value="BaseEnterpriseVideoNodeDto", description="单位下摄像头表")
public class BaseEnterpriseVideoNodeDto extends BaseDto {
private static final long serialVersionUID = 1L;
/**
* 使用单位名称
*/
@ApiModelProperty(value = "使用单位名称")
private String useUnitName;
/**
* 使用单位统一信用代码
*/
@ApiModelProperty(value = "使用单位统一信用代码")
private String useUnitCode;
/**
* 区域名称
*/
@ApiModelProperty(value = "区域名称")
private String regionName;
/**
* 区域代码
*/
@ApiModelProperty(value = "区域代码")
private String regionCode;
/**
* 视频名称
*/
@ApiModelProperty(value = "视频名称")
private String videoName;
/**
* 设备使用登记代码
*/
@ApiModelProperty(value = "设备使用登记代码")
private String devUseCode;
/**
* 是否删除
*/
@ApiModelProperty(value = "是否删除")
private Boolean isDelete;
/**
* 组织代码
*/
@ApiModelProperty(value = "组织代码")
private String orgCode;
/**
* 视频ID
*/
@ApiModelProperty(value = "视频ID")
private String cameraIndexCode;
/**
* 更新时间
*/
@ApiModelProperty(value = "更新时间")
private Date updatesTime;
@ApiModelProperty(value = "标识什么设种类使用的摄像头")
private String equListCode;
/**
* 视频配置表主键
*/
@ApiModelProperty(value = "视频配置表主键")
private Long videoSeq;
}
...@@ -8,7 +8,7 @@ import lombok.EqualsAndHashCode; ...@@ -8,7 +8,7 @@ import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors; import lombok.experimental.Accessors;
/** /**
* 单位下摄像头表 * 单位下摄像头配置
* *
* @author system_generator * @author system_generator
* @date 2024-10-09 * @date 2024-10-09
......
package com.yeejoin.amos.boot.module.common.api.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.yeejoin.amos.boot.biz.common.entity.BaseRelationEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.util.Date;
/**
* 单位下摄像头表
*
* @author system_generator
* @date 2024-10-09
*/
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@TableName("tz_base_enterprise_video_node")
public class BaseEnterpriseVideoNode extends BaseRelationEntity {
private static final long serialVersionUID = 1L;
/**
* 使用单位名称
*/
@TableField("use_unit_name")
private String useUnitName;
/**
* 使用单位统一信用代码
*/
@TableField("use_unit_code")
private String useUnitCode;
/**
* 区域名称
*/
@TableField("region_name")
private String regionName;
/**
* 区域代码
*/
@TableField("region_code")
private String regionCode;
/**
* 视频名称
*/
@TableField("video_name")
private String videoName;
/**
* 设备使用登记代码
*/
@TableField("dev_use_code")
private String devUseCode;
/**
* 是否删除
*/
@TableField("is_delete")
private Boolean isDelete;
/**
* 组织代码
*/
@TableField("org_code")
private String orgCode;
/**
* 视频ID
*/
@TableField("camera_index_code")
private String cameraIndexCode;
/**
* 更新时间
*/
@TableField("updates_time")
private Date updatesTime;
/**
* 标识什么设种类使用的摄像头
*/
@TableField("equ_list_code")
private String equListCode;
/**
* 视频配置表主键
*/
@TableField(value = "video_seq")
private Long videoSeq;
}
package com.yeejoin.amos.boot.module.common.api.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yeejoin.amos.boot.module.common.api.entity.BaseEnterpriseVideo;
import com.yeejoin.amos.boot.module.common.api.entity.BaseEnterpriseVideoNode;
/**
* 单位下摄像头表 Mapper 接口
*
* @author system_generator
* @date 2024-10-09
*/
public interface BaseEnterpriseVideoNodeMapper extends BaseMapper<BaseEnterpriseVideoNode> {
}
package com.yeejoin.amos.boot.module.common.api.service;
/**
* 单位下摄像头表接口类
*
* @author system_generator
* @date 2024-10-09
*/
public interface IBaseEnterpriseVideoNodeService {
}
...@@ -6,6 +6,8 @@ import java.text.ParseException; ...@@ -6,6 +6,8 @@ import java.text.ParseException;
import java.text.ParsePosition; import java.text.ParsePosition;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;
import java.util.*; import java.util.*;
/** /**
* @description: 时间工具类 * @description: 时间工具类
...@@ -285,6 +287,14 @@ public class DateUtils { ...@@ -285,6 +287,14 @@ public class DateUtils {
return null; return null;
} }
public static Date dateParseWithZonedDateTime(String dateTimeString) throws ParseException {
// 1. 解析原始字符串为ZonedDateTime(含时区信息)
ZonedDateTime zonedDateTime = ZonedDateTime.parse(dateTimeString);
// 2. 定义目标格式:yyyy-MM-dd HH:mm:ss
DateTimeFormatter targetFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
String formattedDateTime = zonedDateTime.format(targetFormatter);
return dateParseWithPattern(formattedDateTime);
}
/** /**
* 将日期时间格式成只有日期的字符串(可以直接使用dateFormat,Pattern为Null进行格式化) * 将日期时间格式成只有日期的字符串(可以直接使用dateFormat,Pattern为Null进行格式化)
* *
......
<?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.yeejoin.amos.boot.module.common.api.mapper.BaseEnterpriseVideoNodeMapper">
</mapper>
package com.yeejoin.amos.boot.module.common.biz.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.yeejoin.amos.boot.module.common.api.dto.BaseEnterpriseVideoNodeDto;
import com.yeejoin.amos.boot.module.common.api.entity.BaseEnterpriseVideoNode;
import com.yeejoin.amos.boot.module.common.api.mapper.BaseEnterpriseVideoNodeMapper;
import com.yeejoin.amos.boot.module.common.api.service.IBaseEnterpriseVideoNodeService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.typroject.tyboot.core.rdbms.service.BaseService;
/**
* 单位下摄像头表服务实现类
*
* @author system_generator
* @date 2024-10-09
*/
@Service
@Slf4j
public class BaseEnterpriseVideoNodeServiceImpl extends BaseService<BaseEnterpriseVideoNodeDto, BaseEnterpriseVideoNode, BaseEnterpriseVideoNodeMapper> implements IBaseEnterpriseVideoNodeService {
public Boolean saveOrUpdates(BaseEnterpriseVideoNode enterpriseVideoNode, String cameraIndexCode){
return this.saveOrUpdate(enterpriseVideoNode, new QueryWrapper<BaseEnterpriseVideoNode>().lambda().eq(BaseEnterpriseVideoNode::getCameraIndexCode, cameraIndexCode));
}
}
\ No newline at end of file
...@@ -5,6 +5,7 @@ import com.alibaba.fastjson.JSON; ...@@ -5,6 +5,7 @@ import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import com.hikvision.artemis.sdk.ArtemisHttpUtil; import com.hikvision.artemis.sdk.ArtemisHttpUtil;
import com.hikvision.artemis.sdk.config.ArtemisConfig; import com.hikvision.artemis.sdk.config.ArtemisConfig;
...@@ -13,12 +14,15 @@ import com.yeejoin.amos.boot.biz.common.dto.CommonVideoDto; ...@@ -13,12 +14,15 @@ import com.yeejoin.amos.boot.biz.common.dto.CommonVideoDto;
import com.yeejoin.amos.boot.biz.common.enums.CommonVideoEnum; import com.yeejoin.amos.boot.biz.common.enums.CommonVideoEnum;
import com.yeejoin.amos.boot.module.common.api.dto.BaseEnterpriseVideoDto; import com.yeejoin.amos.boot.module.common.api.dto.BaseEnterpriseVideoDto;
import com.yeejoin.amos.boot.module.common.api.entity.BaseEnterpriseVideo; import com.yeejoin.amos.boot.module.common.api.entity.BaseEnterpriseVideo;
import com.yeejoin.amos.boot.module.common.api.entity.BaseEnterpriseVideoNode;
import com.yeejoin.amos.boot.module.common.api.enums.VideoIntegrationPlatformEnum; import com.yeejoin.amos.boot.module.common.api.enums.VideoIntegrationPlatformEnum;
import com.yeejoin.amos.boot.module.common.api.mapper.BaseEnterpriseVideoMapper; import com.yeejoin.amos.boot.module.common.api.mapper.BaseEnterpriseVideoMapper;
import com.yeejoin.amos.boot.module.common.api.service.IBaseEnterpriseVideoService; import com.yeejoin.amos.boot.module.common.api.service.IBaseEnterpriseVideoService;
import com.yeejoin.amos.boot.module.common.api.utils.DateUtils;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.apache.http.conn.ConnectTimeoutException; import org.apache.http.conn.ConnectTimeoutException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
...@@ -27,6 +31,7 @@ import org.typroject.tyboot.core.rdbms.service.BaseService; ...@@ -27,6 +31,7 @@ import org.typroject.tyboot.core.rdbms.service.BaseService;
import java.net.URI; import java.net.URI;
import java.net.URISyntaxException; import java.net.URISyntaxException;
import java.text.ParseException;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
...@@ -46,13 +51,14 @@ public class BaseEnterpriseVideoServiceImpl extends BaseService<BaseEnterpriseVi ...@@ -46,13 +51,14 @@ public class BaseEnterpriseVideoServiceImpl extends BaseService<BaseEnterpriseVi
private String defaultVideoUrl; private String defaultVideoUrl;
private String rootIndexCode = "root00000000"; private String rootIndexCode = "root00000000";
@Autowired
private BaseEnterpriseVideoNodeServiceImpl baseEnterpriseVideoNodeService;
public List<CommonVideoDto> getUnitVideoUrl(String useUnitCode, String regionCode) { public List<CommonVideoDto> getUnitVideoUrl(String useUnitCode, String regionCode) {
List<CommonVideoDto> result = new ArrayList<>(); List<CommonVideoDto> result = new ArrayList<>();
LambdaQueryWrapper<BaseEnterpriseVideo> wrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<BaseEnterpriseVideo> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(BaseEnterpriseVideo::getUseUnitCode, useUnitCode); //wrapper.eq(BaseEnterpriseVideo::getUseUnitCode, useUnitCode);
wrapper.eq(BaseEnterpriseVideo::getIsEnabled, true); wrapper.eq(BaseEnterpriseVideo::getIsEnabled, true);
wrapper.like(StringUtils.isNotEmpty(regionCode), BaseEnterpriseVideo::getRegionCode, regionCode); //wrapper.like(StringUtils.isNotEmpty(regionCode), BaseEnterpriseVideo::getRegionCode, regionCode);
List<BaseEnterpriseVideo> videos = this.getBaseMapper().selectList(wrapper); List<BaseEnterpriseVideo> videos = this.getBaseMapper().selectList(wrapper);
if (ValidationUtil.isEmpty(videos)) { if (ValidationUtil.isEmpty(videos)) {
return result; return result;
...@@ -64,19 +70,26 @@ public class BaseEnterpriseVideoServiceImpl extends BaseService<BaseEnterpriseVi ...@@ -64,19 +70,26 @@ public class BaseEnterpriseVideoServiceImpl extends BaseService<BaseEnterpriseVi
getYsVideoUrl(value, result); getYsVideoUrl(value, result);
} }
if (VideoIntegrationPlatformEnum.ISECURECENTER.getCode().equals(key)) { if (VideoIntegrationPlatformEnum.ISECURECENTER.getCode().equals(key)) {
getISecureCenterVideoUrl(value, result); value.stream().forEach(baseEnterpriseVideo -> {
LambdaQueryWrapper<BaseEnterpriseVideoNode> wrappers = new LambdaQueryWrapper<>();
wrappers.eq(BaseEnterpriseVideoNode::getVideoSeq, baseEnterpriseVideo.getSequenceNbr());
wrappers.eq(BaseEnterpriseVideoNode::getUseUnitCode, useUnitCode);
wrappers.like(StringUtils.isNotEmpty(regionCode), BaseEnterpriseVideoNode::getRegionCode, regionCode);
List<BaseEnterpriseVideoNode> videoNodes = baseEnterpriseVideoNodeService.list(wrappers);
getISecureCenterVideoUrl(videoNodes,baseEnterpriseVideo, result);
});
} }
}); });
return result; return result;
} }
private void getISecureCenterVideoUrl(List<BaseEnterpriseVideo> videos, List<CommonVideoDto> videoUrlResult) { private void getISecureCenterVideoUrl(List<BaseEnterpriseVideoNode> videoNodes,BaseEnterpriseVideo baseEnterpriseVideo,List<CommonVideoDto> videoUrlResult) {
List<CommonVideoDto> videoList = getISecureCenterCameras(videos); List<CommonVideoDto> videoList = getISecureCenterCameras(videoNodes);
if (ValidationUtil.isEmpty(videoList)) { if (ValidationUtil.isEmpty(videoList)) {
return; return;
} }
BaseEnterpriseVideo baseEnterpriseVideo = videos.get(0); // BaseEnterpriseVideo baseEnterpriseVideo = videos.get(0);
videoList.forEach(video -> { videoList.forEach(video -> {
List<CommonVideoDto> commonVideoDtos = new ArrayList<>(); List<CommonVideoDto> commonVideoDtos = new ArrayList<>();
try { try {
...@@ -246,18 +259,29 @@ public class BaseEnterpriseVideoServiceImpl extends BaseService<BaseEnterpriseVi ...@@ -246,18 +259,29 @@ public class BaseEnterpriseVideoServiceImpl extends BaseService<BaseEnterpriseVi
commonVideoDtos.forEach(channelNo -> this.setDefaultChannelData(result, channelNo)); commonVideoDtos.forEach(channelNo -> this.setDefaultChannelData(result, channelNo));
} }
public List<CommonVideoDto> getISecureCenterCameras(List<BaseEnterpriseVideo> videoEquipList) { public List<CommonVideoDto> getISecureCenterCameras(List<BaseEnterpriseVideoNode> videoNodesList) {
List<BaseEnterpriseVideo> iSecureCenterVideoList = videoEquipList.stream().filter(v -> VideoIntegrationPlatformEnum.ISECURECENTER.getCode().equals(v.getPlatform())).collect(Collectors.toList()); // List<BaseEnterpriseVideo> iSecureCenterVideoList = videoEquipList.stream().filter(v -> VideoIntegrationPlatformEnum.ISECURECENTER.getCode().equals(v.getPlatform())).collect(Collectors.toList());
if (!ValidationUtil.isEmpty(iSecureCenterVideoList)) { // if (!ValidationUtil.isEmpty(iSecureCenterVideoList)) {
// 根据iSecureCenter视频对接平台,直接获取摄像头列表 // // 根据iSecureCenter视频对接平台,直接获取摄像头列表
return getRegionCameras(iSecureCenterVideoList); // return getRegionCameras(iSecureCenterVideoList);
} // }
return null; List<CommonVideoDto> commonVideoDtos = new ArrayList<>();
videoNodesList.stream().forEach(baseEnterpriseVideoNode -> {
CommonVideoDto commonVideoDto = new CommonVideoDto();
commonVideoDto.setKey(baseEnterpriseVideoNode.getCameraIndexCode());
commonVideoDto.setLabel(baseEnterpriseVideoNode.getVideoName());
commonVideoDto.setTitle(baseEnterpriseVideoNode.getVideoName());
commonVideoDto.setParent(baseEnterpriseVideoNode.getUseUnitCode());
commonVideoDto.setUseRegistrationCode(baseEnterpriseVideoNode.getDevUseCode());
commonVideoDtos.add(commonVideoDto);
});
return commonVideoDtos;
} }
/** /**
* iSecureCenter视频对接平台,根据区域ID(企业统一信用代码唯一对应)获取摄像头列表。 * iSecureCenter视频对接平台,根据区域ID(企业统一信用代码唯一对应)获取摄像头列表。
* 现有对接一个企业只有一条数据,取第一条数据作为企业信息。 * 现有对接一个企业只有一条数据,取第一条数据作为企业信息。
*
* @param iSecureCenterVideoList 企业列表 * @param iSecureCenterVideoList 企业列表
* @return List<CommonVideoDto> * @return List<CommonVideoDto>
*/ */
...@@ -391,4 +415,176 @@ public class BaseEnterpriseVideoServiceImpl extends BaseService<BaseEnterpriseVi ...@@ -391,4 +415,176 @@ public class BaseEnterpriseVideoServiceImpl extends BaseService<BaseEnterpriseVi
} }
return commonRegionList; return commonRegionList;
} }
public boolean saveOrUpdateVideos(String sequenceNbr) throws Exception {
BaseEnterpriseVideo baseEnterpriseVideo = this.getBaseMapper().selectById(sequenceNbr);
String appKey = baseEnterpriseVideo.getAppKey();
String appSecret = baseEnterpriseVideo.getAppSecret();
String deviceSerial = baseEnterpriseVideo.getDeviceSerial();
String url = "https://113.140.67.204:55443/artemis/api/resource/v1/regions/subRegions";
String videoUrl = "https://113.140.67.204:55443/artemis/api/resource/v1/regions/regionIndexCode/cameras";
//根据跟节点673f784dc4ae4cf681957386accd445c获取区域列表子节点 开始
String regionsStr = getsubRegions(appKey, appSecret, url, deviceSerial);
if (ValidationUtil.isEmpty(regionsStr)) {
log.error("获取iSecureCenter视频对接平台区域列表失败,deviceSerial:{}", deviceSerial);
return false;
}
JSONObject regionsResult = JSONObject.parseObject(regionsStr);
if (regionsResult.get("data") == null) {
log.error("获取iSecureCenter视频对接平台区域列表失败,data:{}", regionsStr);
return false;
}
JSONArray regionsDataList = regionsResult.getJSONArray("data");
if (ValidationUtil.isEmpty(regionsDataList)) {
log.error("获取iSecureCenter视频对接平台区域列表失败,regionsDataList:{}", regionsDataList);
return false;
} else {
regionsDataList.forEach(regionsData -> {
JSONObject regionDataJson = (JSONObject) regionsData;
String regionName = regionDataJson.getString("name");
String regionIndexCode = regionDataJson.getString("indexCode");
//根据区域regionIndexCode获取企业列表 开始
String unitsStr = getsubRegions(appKey, appSecret, url, regionIndexCode);
if (ValidationUtil.isEmpty(unitsStr)) {
log.error("获取iSecureCenter视频对接平台区域列表失败,deviceSerial:{}", regionIndexCode);
}
JSONObject unitsResult = JSONObject.parseObject(unitsStr);
if (unitsResult.get("data") == null) {
log.error("获取iSecureCenter视频对接平台区域列表失败,data:{}", unitsStr);
}
JSONArray unitsDataList = unitsResult.getJSONArray("data");
if (ValidationUtil.isEmpty(unitsDataList)) {
log.error("获取iSecureCenter视频对接平台区域列表失败,regionsDataList:{}", unitsDataList);
} else {
unitsDataList.forEach(unitsData -> {
JSONObject unitDataJson = (JSONObject) unitsData;
String unitNameAndCode = unitDataJson.getString("name");
String unitName = unitNameAndCode==null?"":unitNameAndCode.split("#")[0];
String unitCode = unitNameAndCode==null?"":(unitNameAndCode.contains("#")?unitNameAndCode.split("#")[1]:"");
String unitIndexCode = unitDataJson.getString("indexCode");
//根据单位unitIndexCode获取设备列表 开始
String devsStr = getsubRegions(appKey, appSecret, url, unitIndexCode);
if (ValidationUtil.isEmpty(devsStr)) {
log.error("获取iSecureCenter视频对接平台设备列表失败,deviceSerial:{}", unitIndexCode);
}
JSONObject devsResult = JSONObject.parseObject(devsStr);
if (devsResult.get("data") == null) {
log.error("获取iSecureCenter视频对接平台设备列表失败,data:{}", devsStr);
}
JSONArray devsDataList = devsResult.getJSONArray("data");
if (ValidationUtil.isEmpty(devsDataList)) {
log.error("获取iSecureCenter视频对接平台设备列表失败,regionsDataList:{}", devsDataList);
} else {
devsDataList.forEach(devsData -> {
JSONObject devDataJson = (JSONObject) devsData;
String devName = devDataJson.getString("name");
String devIndexCode = devDataJson.getString("indexCode");
String camerasStr = getCameras(appKey, appSecret, videoUrl, devIndexCode);
if (ValidationUtil.isEmpty(camerasStr)) {
log.error("获取iSecureCenter视频对接平台区域列表失败,deviceSerial:{}", deviceSerial);
}
JSONObject camerasResult = JSONObject.parseObject(camerasStr);
if (camerasResult.get("data") == null) {
log.error("获取iSecureCenter视频对接平台区域列表失败,data:{}", camerasStr);
}
JSONObject camerasDataList = (JSONObject) camerasResult.get("data");
// JSONObject dataObj = (JSONObject) result.get("data");
JSONArray cameraDataList = camerasDataList.getJSONArray("list");
if (ValidationUtil.isEmpty(camerasDataList)) {
log.error("获取iSecureCenter视频对接平台区域列表失败,regionsDataList:{}", camerasDataList);
} else {
cameraDataList.forEach(cameraData -> {
JSONObject cameraDataJson = (JSONObject) cameraData;
String cameraName = cameraDataJson.getString("cameraName");
String useInstallCode = cameraDataJson.getString("installLocation");
String reIndexCode = cameraDataJson.getString("regionIndexCode");
String cameraIndexCode = cameraDataJson.getString("cameraIndexCode");
String updateTime = cameraDataJson.getString("updateTime");
String createTime = cameraDataJson.getString("createTime");
BaseEnterpriseVideoNode enterpriseVideoNode = new BaseEnterpriseVideoNode();
enterpriseVideoNode.setUseUnitName(unitName);
enterpriseVideoNode.setUseUnitCode(unitCode);
enterpriseVideoNode.setRegionCode(reIndexCode);
enterpriseVideoNode.setVideoName(cameraName);
enterpriseVideoNode.setDevUseCode(useInstallCode);
enterpriseVideoNode.setIsDelete(true);
enterpriseVideoNode.setCameraIndexCode(cameraIndexCode);
try {
enterpriseVideoNode.setRecDate(DateUtils.dateParseWithPattern(createTime));
enterpriseVideoNode.setUpdatesTime(DateUtils.dateParseWithPattern(updateTime));
} catch (ParseException e) {
throw new RuntimeException(e);
}
baseEnterpriseVideoNodeService.saveOrUpdate(enterpriseVideoNode, new QueryWrapper<BaseEnterpriseVideoNode>().lambda().eq(BaseEnterpriseVideoNode::getCameraIndexCode, cameraIndexCode));
});
}
});
}
});
}
});
}
return true;
}
public String getsubRegions(String appKey, String appSecret, String apiUrl, String indexCode) {
Map<String, String> uriInfo = null;
try {
uriInfo = parseUri(apiUrl);
} catch (URISyntaxException e) {
throw new RuntimeException(e);
}
String protocol = uriInfo.get("protocol");
String hostPort = uriInfo.get("hostPort");
String urlPath = uriInfo.get("urlPath");
Map<String, String> path = new HashMap<>();
path.put(protocol, urlPath);
ArtemisConfig config = new ArtemisConfig();
config.setAppKey(appKey);
config.setAppSecret(appSecret);
config.setHost(hostPort);
Map<String, String> paramMap = new HashMap<>();// post请求Form表单参数
paramMap.put("parentIndexCode", indexCode);
String body = JSON.toJSON(paramMap).toString();
try {
return ArtemisHttpUtil.doPostStringArtemis(config, path, body, null, null, "application/json", null);
} catch (Exception e) {
log.error("获取iSecureCenter视频对接平台区域列表失败,deviceSerial:{}", indexCode);
throw new RuntimeException(e);
}
}
public String getCameras(String appKey, String appSecret, String apiUrl, String indexCode) {
Map<String, String> uriInfo = null;
try {
uriInfo = parseUri(apiUrl);
} catch (URISyntaxException e) {
throw new RuntimeException(e);
}
String protocol = uriInfo.get("protocol");
String hostPort = uriInfo.get("hostPort");
String urlPath = uriInfo.get("urlPath");
Map<String, String> path = new HashMap<>();
path.put(protocol, urlPath);
ArtemisConfig config = new ArtemisConfig();
config.setAppKey(appKey);
config.setAppSecret(appSecret);
config.setHost(hostPort);
Map<String, String> paramMap = new HashMap<>();// post请求Form表单参数
paramMap.put("regionIndexCode", indexCode);
paramMap.put("pageNo", "1");
paramMap.put("pageSize", "1000");
String body = JSON.toJSON(paramMap).toString();
try {
return ArtemisHttpUtil.doPostStringArtemis(config, path, body, null, null, "application/json", null);
} catch (Exception e) {
log.error("获取iSecureCenter视频对接平台区域列表失败,deviceSerial:{}", indexCode);
throw new RuntimeException(e);
}
}
} }
\ No newline at end of file
...@@ -466,7 +466,7 @@ ...@@ -466,7 +466,7 @@
v.use_unit_code useUnitCode, v.use_unit_code useUnitCode,
(SELECT use_unit FROM tz_base_enterprise_info WHERE use_code = v.use_unit_code) useUnit (SELECT use_unit FROM tz_base_enterprise_info WHERE use_code = v.use_unit_code) useUnit
FROM FROM
tz_base_enterprise_video v tz_base_enterprise_video_node v
WHERE WHERE
region_code LIKE CONCAT('%', #{cityCode}, '%') region_code LIKE CONCAT('%', #{cityCode}, '%')
GROUP BY GROUP BY
......
...@@ -60,4 +60,11 @@ public class VideoController { ...@@ -60,4 +60,11 @@ public class VideoController {
List<CommonVideoDto> re = videoService.getVideoList(useUnitCode, regionCode); List<CommonVideoDto> re = videoService.getVideoList(useUnitCode, regionCode);
return ResponseHelper.buildResponse(re); return ResponseHelper.buildResponse(re);
} }
@TycloudOperation(ApiLevel = UserType.AGENCY)
@ApiOperation(value = "查询骏景视频平台的视频数据并写入数据库", httpMethod = "GET")
@GetMapping(value = "/junjing/hk")
public ResponseModel<Boolean> saveOrUpdateVideos(@RequestParam(value = "sequenceNbr") String sequenceNbr) {
boolean re = videoService.saveOrUpdateVideos(sequenceNbr);
return ResponseHelper.buildResponse(re);
}
} }
package com.yeejoin.amos.boot.module.statistcs.biz.service.impl; package com.yeejoin.amos.boot.module.statistcs.biz.service.impl;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.yeejoin.amos.boot.biz.common.dto.CommonVideoDto; import com.yeejoin.amos.boot.biz.common.dto.CommonVideoDto;
import com.yeejoin.amos.boot.biz.common.entity.BaseEntity; import com.yeejoin.amos.boot.biz.common.entity.BaseEntity;
import com.yeejoin.amos.boot.module.common.api.dto.DPFilterParamDto; import com.yeejoin.amos.boot.module.common.api.dto.DPFilterParamDto;
import com.yeejoin.amos.boot.module.common.api.entity.BaseEnterpriseVideo; import com.yeejoin.amos.boot.module.common.api.entity.BaseEnterpriseVideo;
import com.yeejoin.amos.boot.module.common.api.entity.BaseEnterpriseVideoNode;
import com.yeejoin.amos.boot.module.common.api.enums.VideoIntegrationPlatformEnum; import com.yeejoin.amos.boot.module.common.api.enums.VideoIntegrationPlatformEnum;
import com.yeejoin.amos.boot.module.common.api.utils.DateUtils;
import com.yeejoin.amos.boot.module.common.biz.service.impl.BaseEnterpriseVideoNodeServiceImpl;
import com.yeejoin.amos.boot.module.common.biz.service.impl.BaseEnterpriseVideoServiceImpl; import com.yeejoin.amos.boot.module.common.biz.service.impl.BaseEnterpriseVideoServiceImpl;
import com.yeejoin.amos.boot.module.statistcs.biz.utils.JsonUtils;
import com.yeejoin.amos.boot.module.statistics.api.dto.UnitVideoDto; import com.yeejoin.amos.boot.module.statistics.api.dto.UnitVideoDto;
import com.yeejoin.amos.boot.module.statistics.api.vo.TreeNodeVo; import com.yeejoin.amos.boot.module.statistics.api.vo.TreeNodeVo;
import com.yeejoin.amos.boot.module.ymt.api.dto.TzBaseEnterpriseInfoDto;
import com.yeejoin.amos.boot.module.ymt.api.entity.TzBaseEnterpriseInfo; import com.yeejoin.amos.boot.module.ymt.api.entity.TzBaseEnterpriseInfo;
import com.yeejoin.amos.boot.module.ymt.api.enums.EquipmentClassifityEnum; import com.yeejoin.amos.boot.module.ymt.api.enums.EquipmentClassifityEnum;
import com.yeejoin.amos.boot.module.ymt.api.mapper.TzBaseEnterpriseInfoMapper; import com.yeejoin.amos.boot.module.ymt.api.mapper.TzBaseEnterpriseInfoMapper;
import com.yeejoin.amos.feign.systemctl.model.RegionModel; import com.yeejoin.amos.feign.systemctl.model.RegionModel;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.io.Resource;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.typroject.tyboot.core.foundation.utils.ValidationUtil; import org.typroject.tyboot.core.foundation.utils.ValidationUtil;
import java.util.ArrayList; import java.text.ParseException;
import java.util.List; import java.util.*;
import java.util.Set;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
...@@ -38,8 +47,12 @@ public class VideoServiceImpl { ...@@ -38,8 +47,12 @@ public class VideoServiceImpl {
private static String NODE_TYPE_VIDEO = "video"; private static String NODE_TYPE_VIDEO = "video";
private TzBaseEnterpriseInfoMapper tzBaseEnterpriseInfoMapper; @Value("classpath:/json/region.json")
private Resource regionJson;
private TzBaseEnterpriseInfoMapper tzBaseEnterpriseInfoMapper;
@Autowired
private BaseEnterpriseVideoNodeServiceImpl baseEnterpriseVideoNodeService;
private StCommonServiceImpl stCommonService; private StCommonServiceImpl stCommonService;
private BaseEnterpriseVideoServiceImpl enterpriseVideoService; private BaseEnterpriseVideoServiceImpl enterpriseVideoService;
...@@ -58,19 +71,29 @@ public class VideoServiceImpl { ...@@ -58,19 +71,29 @@ public class VideoServiceImpl {
* @return List<TreeNodeVo> * @return List<TreeNodeVo>
*/ */
public List<TreeNodeVo> getVideoTree(DPFilterParamDto dpFilterParamDto) { public List<TreeNodeVo> getVideoTree(DPFilterParamDto dpFilterParamDto) {
// 摄像头设备 // 摄像头设备参数配置
List<BaseEnterpriseVideo> videoEquipList = getVideos(dpFilterParamDto.getCityCode()); List<BaseEnterpriseVideo> videoEquipList = getVideos(dpFilterParamDto.getCityCode());
List<BaseEnterpriseVideoNode> videoNodesList = getVideoNodes(dpFilterParamDto.getCityCode());
// 摄像头对应的单位列表 // 摄像头对应的单位列表
List<TzBaseEnterpriseInfo> baseEnterpriseInfos = this.getUnitListForTree(videoEquipList.stream().map(BaseEnterpriseVideo::getUseUnitCode).collect(Collectors.toSet())); List<TzBaseEnterpriseInfo> baseEnterpriseInfos = this.getUnitListForTree(videoNodesList.stream().map(BaseEnterpriseVideoNode::getUseUnitCode).collect(Collectors.toSet()));
// 摄像头对应的行政区域列表 // 摄像头对应的行政区域列表
List<RegionModel> regionModels = this.getRegionListOfVideo(videoEquipList); List<RegionModel> regionModels = this.getRegionListOfVideo(videoNodesList);
// 摄像头通道 // 摄像头通道
List<CommonVideoDto> channelNoList = this.getVideoChannel(videoEquipList); List<CommonVideoDto> channelNoList = this.getVideoChannel(videoEquipList,videoNodesList);
// 树组装 // 树组装
return castList2Tree(baseEnterpriseInfos, regionModels, channelNoList, videoEquipList); return castList2Tree(baseEnterpriseInfos, regionModels, channelNoList, videoNodesList);
} }
private List<TreeNodeVo> castList2Tree(List<TzBaseEnterpriseInfo> baseEnterpriseInfos, List<RegionModel> regionModels, List<CommonVideoDto> channelNoList, List<BaseEnterpriseVideo> videoEquipList) { private List<BaseEnterpriseVideoNode> getVideoNodes(String regionCode) {
LambdaQueryWrapper<BaseEnterpriseVideoNode> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(BaseEnterpriseVideoNode::getEquListCode, EquipmentClassifityEnum.KYSD.getCode());
queryWrapper.like(BaseEnterpriseVideoNode::getRegionCode, regionCode);
queryWrapper.eq(BaseEnterpriseVideoNode::getIsDelete, true);
return baseEnterpriseVideoNodeService.list(queryWrapper);
}
private List<TreeNodeVo> castList2Tree(List<TzBaseEnterpriseInfo> baseEnterpriseInfos, List<RegionModel> regionModels, List<CommonVideoDto> channelNoList, List<BaseEnterpriseVideoNode> videoNodesList) {
// 数据处理,把行政区域、单位、摄像头 数据格式化为有parent的标准树结构列表 // 数据处理,把行政区域、单位、摄像头 数据格式化为有parent的标准树结构列表
List<TreeNodeVo> regionNodes = regionModels.stream().map(r -> { List<TreeNodeVo> regionNodes = regionModels.stream().map(r -> {
TreeNodeVo treeNodeVo = new TreeNodeVo(); TreeNodeVo treeNodeVo = new TreeNodeVo();
...@@ -90,17 +113,17 @@ public class VideoServiceImpl { ...@@ -90,17 +113,17 @@ public class VideoServiceImpl {
}).collect(Collectors.toList()); }).collect(Collectors.toList());
// 给区域的最下级增加直接下级->单位,id不是其他的parent_id则为树的叶子节点 // 给区域的最下级增加直接下级->单位,id不是其他的parent_id则为树的叶子节点
treeNodeVos.forEach(t -> { treeNodeVos.forEach(t -> {
this.setChildrenUnitTypeNode(regionNodes, t, baseEnterpriseInfos, videoEquipList, channelNoList); this.setChildrenUnitTypeNode(regionNodes, t, baseEnterpriseInfos, videoNodesList, channelNoList);
}); });
return treeNodeVos; return treeNodeVos;
} }
private void setChildrenUnitTypeNode(List<TreeNodeVo> regionNodes, TreeNodeVo parentNode, List<TzBaseEnterpriseInfo> baseEnterpriseInfos, List<BaseEnterpriseVideo> videoEquipList, List<CommonVideoDto> channelNoList) { private void setChildrenUnitTypeNode(List<TreeNodeVo> regionNodes, TreeNodeVo parentNode, List<TzBaseEnterpriseInfo> baseEnterpriseInfos, List<BaseEnterpriseVideoNode> videoNodesList, List<CommonVideoDto> channelNoList) {
if (regionNodes.stream().noneMatch(e -> parentNode.getId().equals(e.getParentId()))) { if (regionNodes.stream().noneMatch(e -> parentNode.getId().equals(e.getParentId()))) {
parentNode.setChildren(this.buildUnitTypeNode(baseEnterpriseInfos, videoEquipList, channelNoList, parentNode)); parentNode.setChildren(this.buildUnitTypeNode(baseEnterpriseInfos, videoNodesList, channelNoList, parentNode));
} else { } else {
parentNode.getChildren().forEach(p -> { parentNode.getChildren().forEach(p -> {
setChildrenUnitTypeNode(regionNodes, p, baseEnterpriseInfos, videoEquipList, channelNoList); setChildrenUnitTypeNode(regionNodes, p, baseEnterpriseInfos, videoNodesList, channelNoList);
}); });
} }
} }
...@@ -115,8 +138,8 @@ public class VideoServiceImpl { ...@@ -115,8 +138,8 @@ public class VideoServiceImpl {
} }
private List<TreeNodeVo> buildUnitTypeNode(List<TzBaseEnterpriseInfo> baseEnterpriseInfos, List<BaseEnterpriseVideo> videoEquipList, List<CommonVideoDto> channelNoList, TreeNodeVo parentNode) { private List<TreeNodeVo> buildUnitTypeNode(List<TzBaseEnterpriseInfo> baseEnterpriseInfos, List<BaseEnterpriseVideoNode> videoNodesList, List<CommonVideoDto> channelNoList, TreeNodeVo parentNode) {
Set<String> useUnitCodes = videoEquipList.stream().filter(v -> v.getRegionCode().contains(parentNode.getCode())).map(BaseEnterpriseVideo::getUseUnitCode).collect(Collectors.toSet()); Set<String> useUnitCodes = videoNodesList.stream().filter(v -> v.getRegionCode().contains(parentNode.getCode())).map(BaseEnterpriseVideoNode::getUseUnitCode).collect(Collectors.toSet());
return baseEnterpriseInfos.stream().filter(v -> useUnitCodes.contains(v.getUseUnitCode())).map(u -> { return baseEnterpriseInfos.stream().filter(v -> useUnitCodes.contains(v.getUseUnitCode())).map(u -> {
TreeNodeVo treeNodeVo = new TreeNodeVo(); TreeNodeVo treeNodeVo = new TreeNodeVo();
treeNodeVo.setNodeType(NODE_TYPE_UNIT); treeNodeVo.setNodeType(NODE_TYPE_UNIT);
...@@ -144,7 +167,7 @@ public class VideoServiceImpl { ...@@ -144,7 +167,7 @@ public class VideoServiceImpl {
}).collect(Collectors.toList()); }).collect(Collectors.toList());
} }
private List<CommonVideoDto> getVideoChannel(List<BaseEnterpriseVideo> videoEquipList) { private List<CommonVideoDto> getVideoChannel(List<BaseEnterpriseVideo> videoEquipList,List<BaseEnterpriseVideoNode> videoNodesList) {
List<CommonVideoDto> commonVideoDtos = new ArrayList<>(); List<CommonVideoDto> commonVideoDtos = new ArrayList<>();
// 根据对接平台不同,摄像头通道信息不同,需要解析成CommonVideoDto // 根据对接平台不同,摄像头通道信息不同,需要解析成CommonVideoDto
List<BaseEnterpriseVideo> ysVideoList = videoEquipList.stream().filter(v -> VideoIntegrationPlatformEnum.YS.getCode().equals(v.getPlatform())).collect(Collectors.toList()); List<BaseEnterpriseVideo> ysVideoList = videoEquipList.stream().filter(v -> VideoIntegrationPlatformEnum.YS.getCode().equals(v.getPlatform())).collect(Collectors.toList());
...@@ -155,21 +178,21 @@ public class VideoServiceImpl { ...@@ -155,21 +178,21 @@ public class VideoServiceImpl {
commonVideoDtos.addAll(channelNoList.stream().peek(e -> e.setParent(v.getUseUnitCode())).collect(Collectors.toList())); commonVideoDtos.addAll(channelNoList.stream().peek(e -> e.setParent(v.getUseUnitCode())).collect(Collectors.toList()));
}); });
} }
List<CommonVideoDto> iSecureCenterCameras = enterpriseVideoService.getISecureCenterCameras(videoEquipList); List<CommonVideoDto> iSecureCenterCameras = enterpriseVideoService.getISecureCenterCameras(videoNodesList);
if (!ValidationUtil.isEmpty(iSecureCenterCameras)) { if (!ValidationUtil.isEmpty(iSecureCenterCameras)) {
commonVideoDtos.addAll(iSecureCenterCameras); commonVideoDtos.addAll(iSecureCenterCameras);
} }
return commonVideoDtos; return commonVideoDtos;
} }
private List<RegionModel> getRegionListOfVideo(List<BaseEnterpriseVideo> videoEquipList) { private List<RegionModel> getRegionListOfVideo(List<BaseEnterpriseVideoNode> videoNodesList) {
return stCommonService.getRegionModels().parallelStream().filter(r -> videoEquipList.stream().anyMatch(v -> v.getRegionCode().contains(r.getRegionCode().toString()))).collect(Collectors.toList()); return stCommonService.getRegionModels().parallelStream().filter(r -> videoNodesList.stream().anyMatch(v -> v.getRegionCode().contains(r.getRegionCode().toString()))).collect(Collectors.toList());
} }
private List<TzBaseEnterpriseInfo> getUnitListForTree(Set<String> useUnitCodes) { private List<TzBaseEnterpriseInfo> getUnitListForTree(Set<String> useUnitCodes) {
LambdaQueryWrapper<TzBaseEnterpriseInfo> queryWrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<TzBaseEnterpriseInfo> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.in(TzBaseEnterpriseInfo::getUseUnitCode, useUnitCodes); queryWrapper.in(TzBaseEnterpriseInfo::getUseUnitCode, useUnitCodes);
queryWrapper.select(TzBaseEnterpriseInfo::getUseUnitCode, TzBaseEnterpriseInfo::getUseUnit, TzBaseEnterpriseInfo::getAddress, BaseEntity::getSequenceNbr); queryWrapper.select(TzBaseEnterpriseInfo::getUseUnitCode, TzBaseEnterpriseInfo::getUseUnit, TzBaseEnterpriseInfo::getAddress, BaseEntity::getSequenceNbr,TzBaseEnterpriseInfo::getOrgCode);
return tzBaseEnterpriseInfoMapper.selectList(queryWrapper); return tzBaseEnterpriseInfoMapper.selectList(queryWrapper);
} }
...@@ -184,15 +207,18 @@ public class VideoServiceImpl { ...@@ -184,15 +207,18 @@ public class VideoServiceImpl {
public List<UnitVideoDto> getUnitList(String regionCode) { public List<UnitVideoDto> getUnitList(String regionCode) {
// 摄像头设备 // 摄像头设备
List<BaseEnterpriseVideo> videoEquipList = getVideos(regionCode); List<BaseEnterpriseVideo> videoEquipList = getVideos(regionCode);
List<BaseEnterpriseVideoNode> entersList = baseEnterpriseVideoNodeService.list(new LambdaQueryWrapper<BaseEnterpriseVideoNode>().like(BaseEnterpriseVideoNode::getRegionCode, regionCode).groupBy(BaseEnterpriseVideoNode::getUseUnitCode));
// 摄像头对应的单位列表 // 摄像头对应的单位列表
List<TzBaseEnterpriseInfo> baseEnterpriseInfos = this.getUnitListForTree(videoEquipList.stream().map(BaseEnterpriseVideo::getUseUnitCode).collect(Collectors.toSet())); List<TzBaseEnterpriseInfo> baseEnterpriseInfos = this.getUnitListForTree(entersList.stream().map(BaseEnterpriseVideoNode::getUseUnitCode).collect(Collectors.toSet()));
return baseEnterpriseInfos.parallelStream().map(e -> { return baseEnterpriseInfos.parallelStream().map(e -> {
UnitVideoDto unitVideoDto = new UnitVideoDto(); UnitVideoDto unitVideoDto = new UnitVideoDto();
unitVideoDto.setId(e.getSequenceNbr() + ""); unitVideoDto.setId(e.getSequenceNbr() + "");
unitVideoDto.setName(e.getUseUnit()); unitVideoDto.setName(e.getUseUnit());
unitVideoDto.setCode(e.getUseUnitCode()); unitVideoDto.setCode(e.getUseUnitCode());
// 摄像头节点
List<BaseEnterpriseVideoNode> videoNodesList = baseEnterpriseVideoNodeService.list(new LambdaQueryWrapper<BaseEnterpriseVideoNode>().eq(BaseEnterpriseVideoNode::getUseUnitCode, e.getUseUnitCode()));
// 摄像头通道 // 摄像头通道
List<CommonVideoDto> channelNoList = this.getVideoChannel(videoEquipList); List<CommonVideoDto> channelNoList = this.getVideoChannel(videoEquipList,videoNodesList);
unitVideoDto.setCountNum(channelNoList.stream().filter(c -> c.getParent().equals(e.getUseUnitCode())).count()); unitVideoDto.setCountNum(channelNoList.stream().filter(c -> c.getParent().equals(e.getUseUnitCode())).count());
return unitVideoDto; return unitVideoDto;
}).collect(Collectors.toList()); }).collect(Collectors.toList());
...@@ -202,4 +228,140 @@ public class VideoServiceImpl { ...@@ -202,4 +228,140 @@ public class VideoServiceImpl {
return enterpriseVideoService.getUnitVideoUrl(useUnitCode, regionCode); return enterpriseVideoService.getUnitVideoUrl(useUnitCode, regionCode);
} }
public boolean saveOrUpdateVideos(String sequenceNbr) {
boolean result = true;
try {
result = saveOrUpdateVideo(sequenceNbr);
} catch (Exception e) {
throw new RuntimeException(e);
}
return result;
}
public boolean saveOrUpdateVideo(String sequenceNbr) throws Exception {
BaseEnterpriseVideo baseEnterpriseVideo = enterpriseVideoService.getBaseMapper().selectById(sequenceNbr);
String appKey = baseEnterpriseVideo.getAppKey();
String appSecret = baseEnterpriseVideo.getAppSecret();
String deviceSerial = baseEnterpriseVideo.getDeviceSerial();
String url = "https://113.140.67.204:55443/artemis/api/resource/v1/regions/subRegions";
String videoUrl = "https://113.140.67.204:55443/artemis/api/resource/v1/regions/regionIndexCode/cameras";
//根据跟节点673f784dc4ae4cf681957386accd445c获取区域列表子节点 开始
String regionsStr = enterpriseVideoService.getsubRegions(appKey, appSecret, url, deviceSerial);
if (ValidationUtil.isEmpty(regionsStr)) {
log.error("获取iSecureCenter视频对接平台区域列表失败,deviceSerial:{}", deviceSerial);
return false;
}
JSONObject regionsResult = JSONObject.parseObject(regionsStr);
if (regionsResult.get("data") == null) {
log.error("获取iSecureCenter视频对接平台区域列表失败,data:{}", regionsStr);
return false;
}
JSONArray regionsDataList = regionsResult.getJSONArray("data");
if (ValidationUtil.isEmpty(regionsDataList)) {
log.error("获取iSecureCenter视频对接平台区域列表失败,regionsDataList:{}", regionsDataList);
return false;
} else {
Map<String, String> regionMaps=JsonUtils.getResourceJson(regionJson);
regionsDataList.forEach(regionsData -> {
JSONObject regionDataJson = (JSONObject) regionsData;
String regionName = regionDataJson.getString("name");
String regionIndexCode = regionDataJson.getString("indexCode");
//根据区域regionIndexCode获取企业列表 开始
String unitsStr = enterpriseVideoService.getsubRegions(appKey, appSecret, url, regionIndexCode);
if (ValidationUtil.isEmpty(unitsStr)) {
log.error("获取iSecureCenter视频对接平台区域列表失败,deviceSerial:{}", regionIndexCode);
}
JSONObject unitsResult = JSONObject.parseObject(unitsStr);
if (unitsResult.get("data") == null) {
log.error("获取iSecureCenter视频对接平台区域列表失败,data:{}", unitsStr);
}
JSONArray unitsDataList = unitsResult.getJSONArray("data");
if (ValidationUtil.isEmpty(unitsDataList)) {
log.error("获取iSecureCenter视频对接平台区域列表失败,regionsDataList:{}", unitsDataList);
} else {
unitsDataList.forEach(unitsData -> {
JSONObject unitDataJson = (JSONObject) unitsData;
String unitNameAndCode = unitDataJson.getString("name");
String unitName = unitNameAndCode==null?"":unitNameAndCode.split("#")[0];
String unitCode = unitNameAndCode==null?"":(unitNameAndCode.contains("#")?unitNameAndCode.split("#")[1]:"");
final String unitOrgCode;
if (null!=unitCode || !ValidationUtil.isEmpty(unitCode)) {
Set<String> setStr = new HashSet<String>();
setStr.add(unitCode);
List<TzBaseEnterpriseInfo> tzBaseEnterpriseInfos = getUnitListForTree(setStr);
unitOrgCode = tzBaseEnterpriseInfos.size() > 0? tzBaseEnterpriseInfos.get(0).getOrgCode() : null;
}else {
// 不满足条件时,赋值为空字符串(与原逻辑一致)
unitOrgCode = null;
}
String unitIndexCode = unitDataJson.getString("indexCode");
//根据单位unitIndexCode获取设备列表 开始
String devsStr = enterpriseVideoService.getsubRegions(appKey, appSecret, url, unitIndexCode);
if (ValidationUtil.isEmpty(devsStr)) {
log.error("获取iSecureCenter视频对接平台设备列表失败,deviceSerial:{}", unitIndexCode);
}
JSONObject devsResult = JSONObject.parseObject(devsStr);
if (devsResult.get("data") == null) {
log.error("获取iSecureCenter视频对接平台设备列表失败,data:{}", devsStr);
}
JSONArray devsDataList = devsResult.getJSONArray("data");
if (ValidationUtil.isEmpty(devsDataList)) {
log.error("获取iSecureCenter视频对接平台设备列表失败,regionsDataList:{}", devsDataList);
} else {
devsDataList.forEach(devsData -> {
JSONObject devDataJson = (JSONObject) devsData;
String devName = devDataJson.getString("name");
String devIndexCode = devDataJson.getString("indexCode");
String camerasStr = enterpriseVideoService.getCameras(appKey, appSecret, videoUrl, devIndexCode);
if (ValidationUtil.isEmpty(camerasStr)) {
log.error("获取iSecureCenter视频对接平台区域列表失败,deviceSerial:{}", deviceSerial);
}
JSONObject camerasResult = JSONObject.parseObject(camerasStr);
if (camerasResult.get("data") == null) {
log.error("获取iSecureCenter视频对接平台区域列表失败,data:{}", camerasStr);
}
JSONObject camerasDataList = (JSONObject) camerasResult.get("data");
JSONArray cameraDataList = camerasDataList.getJSONArray("list");
if (ValidationUtil.isEmpty(camerasDataList)) {
log.error("获取iSecureCenter视频对接平台区域列表失败,regionsDataList:{}", camerasDataList);
} else {
cameraDataList.forEach(cameraData -> {
JSONObject cameraDataJson = (JSONObject) cameraData;
String cameraName = cameraDataJson.getString("cameraName");
String useInstallCode = cameraDataJson.getString("installLocation");
String reIndexCode = cameraDataJson.getString("regionIndexCode");
String cameraIndexCode = cameraDataJson.getString("cameraIndexCode");
String updateTime = cameraDataJson.getString("updateTime");
String createTime = cameraDataJson.getString("createTime");
String regionCode = regionMaps.get(regionName);
BaseEnterpriseVideoNode enterpriseVideoNode = new BaseEnterpriseVideoNode();
enterpriseVideoNode.setUseUnitName(unitName);
enterpriseVideoNode.setUseUnitCode(unitCode);
enterpriseVideoNode.setRegionName(regionName);
enterpriseVideoNode.setRegionCode(regionCode);
enterpriseVideoNode.setOrgCode(unitOrgCode);
enterpriseVideoNode.setVideoName(cameraName);
enterpriseVideoNode.setDevUseCode(useInstallCode);
enterpriseVideoNode.setIsDelete(true);
enterpriseVideoNode.setCameraIndexCode(cameraIndexCode);
enterpriseVideoNode.setVideoSeq(Long.parseLong(sequenceNbr));
enterpriseVideoNode.setEquListCode(EquipmentClassifityEnum.KYSD.getCode());
try {
// enterpriseVideoNode.setRecDate(DateUtils.dateParseWithPattern(createTime));
enterpriseVideoNode.setUpdatesTime(DateUtils.dateParseWithZonedDateTime(updateTime));
} catch (ParseException e) {
throw new RuntimeException(e);
}
baseEnterpriseVideoNodeService.saveOrUpdates(enterpriseVideoNode,cameraIndexCode);
});
}
});
}
});
}
});
}
return true;
}
} }
{
"西安":"610000#610100",
"铜川":"610000#610200",
"宝鸡":"610000#610300",
"咸阳":"610000#610400",
"渭南":"610000#610500",
"延安":"610000#610600",
"汉中":"610000#610700",
"榆林":"610000#610800",
"安康":"610000#610900",
"商洛":"610000#611000"
}
\ No newline at end of file
...@@ -208,4 +208,9 @@ public class TzBaseEnterpriseInfo extends BaseEntity { ...@@ -208,4 +208,9 @@ public class TzBaseEnterpriseInfo extends BaseEntity {
*/ */
@TableField(value = "create_date") @TableField(value = "create_date")
private Date createDate; private Date createDate;
/**
* 组织机构
*/
@TableField(value = "org_code")
private String orgCode;
} }
...@@ -81,8 +81,7 @@ public class TzBaseEnterpriseInfoServiceImpl ...@@ -81,8 +81,7 @@ public class TzBaseEnterpriseInfoServiceImpl
@Autowired @Autowired
DataDictionaryServiceImpl iDataDictionaryService; DataDictionaryServiceImpl iDataDictionaryService;
@Autowired
RegUnitInfoMapper regUnitInfoMapper;
@Autowired @Autowired
StartPlatformTokenService platformTokenService; StartPlatformTokenService platformTokenService;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment