ycl-common/src/main/java/constant/RedisConstant.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ycl-pojo/src/main/java/com/ycl/platform/domain/result/UY/OneMachineFileResult.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ycl-server/src/main/java/com/ycl/task/MonitorTask.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ycl-server/src/main/java/com/ycl/task/UYTask.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
ycl-common/src/main/java/constant/RedisConstant.java
New file @@ -0,0 +1,6 @@ package constant; public class RedisConstant { /** 一机一档目录一致率 多出来的设备 Set集合 */ public static final String New_Monitor_Set="New_Monitor_Set"; } ycl-pojo/src/main/java/com/ycl/platform/domain/result/UY/OneMachineFileResult.java
@@ -27,6 +27,54 @@ private String SBMC; /** * 摄像机采集区域(参考文档解析) */ private String SXJCJQY; /** * 监控点位类型,1-一类视频监控点;2-二类视频监控点;3-三类视频监控点;4-公安内部视频监控点;9-其他点位。 * 参照公安部《关于进一步加强公安机关视频图像信息应用工作的意见》(公通字﹝2015﹞4号)定义。 */ private String JKDWLX; /** * IPV4地址,摄像机IP地址。 */ private String IP; /** * IPV6地址,摄像机扩展IP地址。 */ // private String IPV6; /** * 经度。 */ private Double JD; /** * 纬度。 */ private Double WD; /** * 摄像机功能类型,取值范围(多选) : [1.视频监控;2.车辆识别;3.人员识别;] 数据格式[填入多个值并以/隔开。例如 1/2] */ private String SXJGNLX; /** * MAC地址,摄像机MAC地址。 */ private String MACDZ; /** * 设备状态,1-在用;2-维修;3-拆除。 */ private String SBZT; //--------------------------------------------------------------------- /** * 设备厂商,编码1-海康威视;2-大华;3-天地伟业;4-科达;5-安讯士;6-博世;7-亚安;8-英飞拓;9-宇视;10-海信;11-中星电子;12-明景;13-联想;14-中兴;99-其他。 */ private String SBCS; @@ -35,12 +83,6 @@ * 行政区域,行政区划、籍贯省市县代码。参照《GB/T 2260 中华人民共和国行政区划代码》。 */ private String XZQY; /** * 监控点位类型,1-一类视频监控点;2-二类视频监控点;3-三类视频监控点;4-公安内部视频监控点;9-其他点位。 * 参照公安部《关于进一步加强公安机关视频图像信息应用工作的意见》(公通字﹝2015﹞4号)定义。 */ private String JKDWLX; /** * 设备型号,描述设备的具体型号。 @@ -53,29 +95,9 @@ private String DWSC; /** * IPV4地址,摄像机IP地址。 */ private String IPV4; /** * IPV6地址,摄像机扩展IP地址。 */ private String IPV6; /** * MAC地址,摄像机MAC地址。 */ private String MACDZ; /** * 摄像机类型,1-球机;2-半球;3-固定枪机;4-遥控枪机;5-卡口枪机;99-未知。 */ private String SXJLX; /** * 摄像机功能类型,1-车辆卡口;2-人员卡口;3-微卡口;4-特征摄像机;5-普通监控;99-其他,多选各参数以“/”分隔。 */ private String SXJGNLX; /** * 补光属性,1-无补光、2-红外补光、3-白光补光、9-其他补光。 @@ -92,16 +114,6 @@ * 参考范式:街道+门牌号码+单位名称。高速公路、国道等点位可参照“公路名称+公里数”范式。 */ private String AZDZ; /** * 经度。 */ private Double JD; /** * 纬度。 */ private Double WD; /** * 摄像机位置类型,1-省际检查站、2-党政机关、3-车站码头、4-中心广场、5-体育场馆、6-商业中心、7-宗教场所、8-校园周边、9-治安复杂区域、10-交通干线、11-医院周边、12-金融机构周边、13-危险物品场所周边、14-博物馆展览馆、15-重点水域、航道、96-市际公安检查站;97-涉外场所;98-边境沿线;99-旅游景区,多选各参数以“/”分隔。 @@ -147,11 +159,6 @@ * 录像保存天数。 */ private Integer LXBCTS; /** * 设备状态,1-在用;2-维修;3-拆除。 */ private String SBZT; /** * 所属部门/行业,1-公安机关;2-环保部门;3-文博部门;4-医疗部门;5-旅游管理;6-新闻广电;7-食品医药监督管理部门;8-教育管理部门;9-检察院;10-法院;11-金融部门;12-交通部门;13-住房和城乡建设部门;14-水利部门;15-林业部门;16-安全生产监督部门;17-市政市容委;18-国土局,可扩展,多选各参数以“/”分隔。 ycl-server/src/main/java/com/ycl/task/MonitorTask.java
New file @@ -0,0 +1,88 @@ package com.ycl.task; import com.alibaba.druid.support.json.JSONUtils; import com.alibaba.fastjson2.JSONArray; import com.ycl.platform.domain.entity.TMonitor; import com.ycl.platform.domain.result.UY.OneMachineFileResult; import com.ycl.platform.domain.vo.TMonitorVO; import com.ycl.platform.service.ITMonitorService; import com.ycl.system.entity.SysDictData; import com.ycl.system.service.ISysDictDataService; import com.ycl.utils.DateUtils; import constant.RedisConstant; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.mongodb.core.MongoTemplate; import org.springframework.data.mongodb.core.query.Criteria; import org.springframework.data.mongodb.core.query.Query; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Component; import org.springframework.util.CollectionUtils; import java.util.*; import java.util.function.Function; import java.util.stream.Collectors; /** * 当天晚上 同步mongodb一机一档到数据库 */ @Slf4j @Component("monitorTask") public class MonitorTask { @Autowired private MongoTemplate mongoTemplate; @Autowired private ITMonitorService monitorService; @Autowired private ISysDictDataService dictDataService; @Autowired private RedisTemplate redisTemplate; //同步mongodb一机一档到数据库 public void synchronize() { Query query = new Query(Criteria.where("mongoCreateTime").gte(DateUtils.getDayStart(new Date())).lt(DateUtils.getDayEnd(new Date()))); List<OneMachineFileResult> oneMachineFileResults = mongoTemplate.find(query, OneMachineFileResult.class); List<String> serialNumberInBase = monitorService.selectTMonitorList(null).stream().map(TMonitorVO::getSerialNumber).collect(Collectors.toList()); //准备插入数据库的数据 List<TMonitor> monitorList = new ArrayList<>(); //新的数据,原数据库中不存在的数据 Set<TMonitor> newMonitorList = new HashSet<>(); for (OneMachineFileResult result : oneMachineFileResults) { TMonitor monitor = setMonitor(result); monitorList.add(monitor); //比对筛选出新的数据 if(!CollectionUtils.isEmpty(serialNumberInBase) && !serialNumberInBase.contains(result.getSBBM())){ newMonitorList.add(monitor); } } //新的数据放入Redis中等待考核指标任务使用 redisTemplate.opsForValue().set(RedisConstant.New_Monitor_Set, JSONArray.toJSONString(newMonitorList)); //TODO:解析区域 //TODO:解析重点点位 //重点点位集合字典 SysDictData sysDictData = new SysDictData(); sysDictData.setDictType("platform_important_site"); List<SysDictData> DictDataList = dictDataService.selectDictDataList(sysDictData); List<String> importantSite = DictDataList.stream().map(SysDictData::getDictValue).collect(Collectors.toList()); } private TMonitor setMonitor(OneMachineFileResult result) { TMonitor monitor = new TMonitor(); monitor.setSerialNumber(result.getSBBM()); monitor.setName(result.getSBMC()); monitor.setSiteType(Long.valueOf(result.getJKDWLX())); monitor.setMacAddr(result.getMACDZ()); monitor.setIp(result.getIP()); monitor.setCameraFunType(result.getSXJGNLX()); monitor.setLongitude(result.getJD() + ""); monitor.setLatitude(result.getWD() + ""); monitor.setCameraCaptureArea(result.getSXJCJQY()); monitor.setOnState(Long.valueOf(result.getSBZT())); //国标码前八位为行政编码 monitor.setCivilCode(result.getSBBM().substring(0, 8)); return monitor; } } ycl-server/src/main/java/com/ycl/task/UYTask.java
@@ -9,6 +9,7 @@ import com.ycl.platform.domain.result.UY.OneMachineFileResult; import com.ycl.platform.domain.result.UY.QueryVqdResult; import com.ycl.platform.domain.result.UY.RecordMetaDSumResult; import com.ycl.platform.service.ITMonitorService; import com.ycl.platform.service.IYwThresholdService; import com.ycl.utils.DateUtils; import constant.ApiConstants; @@ -23,6 +24,7 @@ import java.util.Date; import java.util.List; import java.util.stream.Collectors; //优云对接数据任务 @Slf4j @@ -35,7 +37,8 @@ private UYClient uyClient; @Autowired private IYwThresholdService ywThresholdService; @Autowired private ITMonitorService monitorService; @Value("${youYun.tenantId}") private String tenantId;