irds组件资源同步1.pom依赖com.hikvision.starfishstarfish-starter-sync-resource1.8.1.RELEASE2.资源同步示例(区域资源)@ServicepublicclassRegionIrdsSyncServiceimplementsIResourceIrdsSync{privatestaticLoggerlogger=LoggerFactory.getLogger(RegionIrdsSyncService.class);/***获取资源类型:*1.用于接收变化通知,获取irds数据,比如region*@return*/@OverridepublicStringgetResourceType(){//设置获取到的资源类型为REGIONreturnResourceTypeEnum.REGION.getResourceType();}/***全量同步*1.从数据源获取指定资源类型的所有数据*@paramresList全量数据,即从irds组件获取的原始区域信息*/@OverridepublicvoidsyncAll(ListresList){logger.info(HikLog.toLog(HikLog.message(getResourceType()+"irds同步所有","结果")),JsonUtil.toJson(resList));//此处TODO自定义区域信息存储操作//全同步自定义实现示例//(1)typeConvertListregionIrdsInfoList=this.map2Object(list);//保存到数据库if(!CollectionUtils.isEmpty(regionIrdsInfoList)){saveTbResource(regionIrdsInfoList);}}/***实时添加*1.接收变更通知,从数据源获取指定资源类型的变更数据*@paramresList变更数据,即irds组件添加的原始区域信息*/@Overridepublicvoidadd(ListresList){logger.info(HikLog.toLog(HikLog.message(getResourceType()+"===========irdssyncadd","result")),JsonUtil.toJson(resList));//TODO在这里自定义区域信息添加操作}/***实时更新*1.接收变更通知,从数据源获取指定资源类型的变更数据*@paramresList变更数据,即irds组件修改的原始区域信息*/@Overridepublicvoidupdate(ListresList){logger.info(HikLog.toLog(HikLog.message(getResourceType()+"===========irds同步更新“,”结果“)),JsonUtil.toJson(resList));//TODO在这里自定义区域信息的修改操作}/***实时删除*1.接收变化通知*@paramresIdList变化数据标识,删除原有区域信息标识*/@Overridepublicvoiddelete(ListresIdList){logger.info(HikLog.toLog(HikLog.message(getResourceType()+"============irdssyncdelete","result")),JsonUtil.toJson(resIdList));//这里TODO自定义删除地区信息的操作}/***类型转换*将从irds获取的地区信息转换为RegionIrdsInfo类对象*@paramresList*@return*/publicListmap2Object(ListresList){ListregionIrdsInfos=newArrayList<>();如果(!CollectionUtils.isEmpty(resList)){resList.forEach(res->{RegionIrdsInforegionIrdsInfo=JSONObject.parseObject(JSONObject.toJSONString(res),RegionIrdsInfo.class);regionIrdsInfos.add(regionIrdsInfo);});}返回regionIrdsInfos;}/***存储在数据库中*@paramlist*/privatevoidsaveTbResource(Listlist){ListindexCodeList=tbResourceMapper.getAllIndexCode();list.forEach(l->{if(indexCodeList.contains(l.getIndexCode())){//如果已经存在,则更新区域名、区域路径、更新时间和更新器名称QueryWrapperwrapper=newQueryWrapper();wrapper.eq("index_code",l.getIndexCode());TbResourcetbResource=tbResourceMapper.selectOne(wrapper);tbResource.setExternalIndexCode(l.getExternalIndexCode());tbResource.setRegionName(l.getName());tbResource.setRegionPath(l.getRegionPath());tbResource.setUpdateTime(tbResource.getUpdateTime());tbResource.setUpdateUser(ComponentConstant.USER_ID);tbResourceMapper.updateById(tbResource);}else{//如果不存在,直接添加TbResourcetbResource=TbResource.builder().indexCode(l.getIndexCode()).externalIndexCode(l.getExternalIndexCode()).regionName(l.getName()).regionPath(l.getRegionPath()).pointConfig(0).pointType(-1).pointName("").pointIconUrl("").pointIconName("").aggreIconUrl("").aggreIconName("").createTime(getNowTime()).createUser(ComponentConstant.USER_ID)。updateTime(getNowTime()).updateUser(ComponentConstant.USER_ID).build();tbResourceMapper.insert(tbResource);}});}}3。定时任务触发全同步的触发时间默认为凌晨1点。在配置文件中自定义默认出发时间:starfish.resource.sync.cron-t时间=001**?4。测试并运行项目,这部分会自动运行: