|
|
@ -120,7 +120,8 @@ public class DcWarningServiceImpl implements IDcWarningService |
|
|
|
HashMap redisValueTwo = redisWarningStrategy.get(redisKye+"2");//查看传入的事件类型是否配置策略2(延迟策略)
|
|
|
|
if (redisValueTwo!=null){ //执行策略2,
|
|
|
|
String strategyTime = redisValueTwo.get("strategyTime").toString();//策略时长
|
|
|
|
if (dataId==null){//如果不存在直接加入数据库,加入缓存,配置对应的过期时间
|
|
|
|
dcWarning.setEndTime(DateUtils.getObtainDateAfter(Integer.parseInt(strategyTime)));//注入过期时间
|
|
|
|
if (dataId==null){//如果不存在直接加入数据库,加入缓存,配置对应的缓存过期时间以及数据库过期时间
|
|
|
|
int insertDcWarning = dcWarningMapper.insertDcWarning(dcWarning);//加入数据库
|
|
|
|
if (insertDcWarning==0){ |
|
|
|
return 0; |
|
|
@ -131,7 +132,7 @@ public class DcWarningServiceImpl implements IDcWarningService |
|
|
|
} |
|
|
|
//redis存在数据,取出redis的id找对对应事件的配置,合成事件配置,重新定义延迟时间
|
|
|
|
HashMap<String, Object> map = dcWarningMapper.selectDcWarningById(dataId); |
|
|
|
if (map==null||(map.get("warningState")!=null&&!map.get("warningState").toString().equals("1"))){//redis中有id但是数据库中没有这条数据,或则数据库中有数据但是状态不为上报,那就删除这条redis数据,新数据加入到数据库,并加入到redis
|
|
|
|
if (map==null||(map.get("warningState")!=null&&map.get("warningState").toString().equals("4"))){//redis中有id但是数据库中没有这条数据,或则数据库中有数据但是状态不为结束,那就删除这条redis数据,新数据加入到数据库,并加入到redis
|
|
|
|
redisCache.deleteObject(WARNINGDATA+key); |
|
|
|
String id = dcWarning.getId(); |
|
|
|
redisCache.setCacheObject(WARNINGDATA+key,id,Integer.parseInt(strategyTime),TimeUnit.MINUTES); |
|
|
@ -156,185 +157,185 @@ public class DcWarningServiceImpl implements IDcWarningService |
|
|
|
jsonObjectOne.put("videoList",videoList); |
|
|
|
} |
|
|
|
redisCache.setCacheObject(WARNINGDATA+key,dataId,Integer.parseInt(strategyTime),TimeUnit.MINUTES);//重新设置延迟时间
|
|
|
|
return dcWarningMapper.updateOtherConfig(dataId,jsonObjectOne.toString());//修改数据库配置
|
|
|
|
return dcWarningMapper.updateOtherConfig(dataId,jsonObjectOne.toString(),dcWarning.getEndTime());//修改数据库配置
|
|
|
|
} |
|
|
|
DcWarningServiceImpl dcWarningService = new DcWarningServiceImpl();//合成工具类
|
|
|
|
JSONObject jsonObject = dcWarningService.mergeJsonObjects(jsonObjectOne, jsonObjectTwo); |
|
|
|
redisCache.setCacheObject(WARNINGDATA+key,dataId,Integer.parseInt(strategyTime),TimeUnit.MINUTES);//重新设置延迟时间
|
|
|
|
return dcWarningMapper.updateOtherConfig(dataId, jsonObject.toString());//修改数据库配置
|
|
|
|
return dcWarningMapper.updateOtherConfig(dataId, jsonObject.toString(),dcWarning.getEndTime());//修改数据库配置
|
|
|
|
} |
|
|
|
return dcWarningMapper.insertDcWarning(dcWarning);//如果没有配置策略直接加入数据库;
|
|
|
|
} |
|
|
|
|
|
|
|
//优先级策略(还差优先级策略需要配置)
|
|
|
|
public int priority(DcWarning dcWarning){ |
|
|
|
dcWarning.setCreateTime(DateUtils.getNowDate()); |
|
|
|
//设置事件Id UUID无下划线格式32
|
|
|
|
String uuid = IdUtils.fastSimpleUUID(); |
|
|
|
dcWarning.setId(uuid); |
|
|
|
if (StringUtils.isBlank(dcWarning.getStakeMark())||dcWarning.getWarningSource()==null||dcWarning.getWarningType()==null|| |
|
|
|
StringUtils.isBlank(dcWarning.getWarningSubclass())||StringUtils.isBlank(dcWarning.getDirection())){ |
|
|
|
return 0; |
|
|
|
} |
|
|
|
String redisKye=dcWarning.getWarningSource().toString()+dcWarning.getWarningType().toString()+dcWarning.getWarningSubclass();//配置数据的key 事件源+事件类型+策略
|
|
|
|
Map<String, HashMap> redisWarningStrategy = redisCache.getCacheMap(WARNINGSTRATEGY);//获取缓存全部的配置数据
|
|
|
|
if (redisWarningStrategy==null||redisWarningStrategy.size()==0){//如果缓存为空,查询数据重新加入缓存
|
|
|
|
Map<String, JSONObject> redisMap = new HashMap<>(); |
|
|
|
List<DcWaringStrategy> dcWaringStrategies = dcWarningMapper.selectDcWaringStrategyList();//数据库全部配置数据
|
|
|
|
for (DcWaringStrategy waringStrategy : dcWaringStrategies) { |
|
|
|
String key = waringStrategy.getWarningSource().toString() + waringStrategy.getWarningType().toString() |
|
|
|
+ waringStrategy.getWarningSubclass()+waringStrategy.getStrategy().toString();//redis配置数据key
|
|
|
|
JSONObject jsonObject = new JSONObject(); |
|
|
|
jsonObject.put("strategy", waringStrategy.getStrategy());//策略模式
|
|
|
|
jsonObject.put("strategyTime", waringStrategy.getStrategyTime());//模式时长,单位为分钟
|
|
|
|
jsonObject.put("priority", waringStrategy.getPriority());//优先级
|
|
|
|
redisMap.put(key, jsonObject); |
|
|
|
} |
|
|
|
redisCache.setCacheMap(WARNINGSTRATEGY, redisMap);//数据库配置数据加入缓存中
|
|
|
|
redisWarningStrategy = redisCache.getCacheMap(WARNINGSTRATEGY);//缓存数据为空重新加入到缓存在取出缓存的配置
|
|
|
|
} |
|
|
|
String key=dcWarning.getStakeMark()+dcWarning.getDirection()+dcWarning.getWarningSource(). |
|
|
|
toString()+dcWarning.getWarningType().toString()+dcWarning.getWarningSubclass();//key,redis存储事件的key(桩号+方向+事件源+类型)
|
|
|
|
String dataId = redisCache.getCacheObject(WARNINGDATA + key);//查看redis是否存在数据(id的值)
|
|
|
|
HashMap redisValueOne = redisWarningStrategy.get(redisKye+"1");//查看传入的事件类型是否配置策略1(优先级策略)
|
|
|
|
if(redisValueOne!=null){//执行策略1(暂时未定义,定义后开发)
|
|
|
|
String priority = redisValueOne.get("priority").toString();//全部的优先等级
|
|
|
|
String[] split = priority.split(","); |
|
|
|
for (int i = 0; i < split.length; i++){ |
|
|
|
String priorityValue=split[i];//取出当前循环的优先级类型
|
|
|
|
String keys=dcWarning.getStakeMark()+dcWarning.getDirection()+dcWarning.getWarningSource(). |
|
|
|
toString()+dcWarning.getWarningType().toString()+priorityValue;//redis存储事件的key
|
|
|
|
String dataIds = redisCache.getCacheObject(WARNINGDATA + keys);//查看redis是否存在数据(id的值)
|
|
|
|
if (dataIds==null){ //没有对应的优先级类型的id值,结束当前循环
|
|
|
|
continue; |
|
|
|
} |
|
|
|
//redis存在数据,取出redis的id找对对应事件的配置,合成事件配置
|
|
|
|
HashMap<String, Object> map = dcWarningMapper.selectDcWarningById(dataId); |
|
|
|
if (map==null){//redis中有id但是数据库中没有这条数据,那就直接新增这个事件
|
|
|
|
return dcWarningMapper.insertDcWarning(dcWarning); |
|
|
|
} |
|
|
|
String warningState = map.get("warningState").toString();//事件上报状态
|
|
|
|
if ("1".equals(warningState)==false){ //状态不为上报,不用合成事件,删除之前的redis数据
|
|
|
|
redisCache.deleteObject(WARNINGDATA+keys); |
|
|
|
continue; |
|
|
|
} |
|
|
|
String otherConfig=""; |
|
|
|
if (map.get("otherConfig")!=null){ |
|
|
|
otherConfig = map.get("otherConfig").toString(); //取出原id的配置信息
|
|
|
|
} |
|
|
|
String otherConfigString = dcWarning.getOtherConfig();//新增的配置信息
|
|
|
|
JSONObject jsonObjectOne = new JSONObject(otherConfig); |
|
|
|
JSONObject jsonObjectTwo = new JSONObject(otherConfigString); |
|
|
|
DcWarningServiceImpl dcWarningService = new DcWarningServiceImpl();//合成新的json
|
|
|
|
JSONObject jsonObject = dcWarningService.mergeJsonObjects(jsonObjectOne, jsonObjectTwo); |
|
|
|
return dcWarningMapper.updateOtherConfig(dataId, jsonObject.toString());//修改数据库配置
|
|
|
|
} |
|
|
|
} |
|
|
|
HashMap redisValueTwo = redisWarningStrategy.get(redisKye+"2");//查看传入的事件类型是否配置策略2(延迟策略)
|
|
|
|
if (redisValueTwo!=null){ //执行策略2,执行到这里说明1不存在或者1未满足过滤条件
|
|
|
|
String strategyTime = redisValueTwo.get("strategyTime").toString();//策略时长
|
|
|
|
if (dataId==null){//如果不存在直接加入数据库,加入缓存,配置对应的过期时间
|
|
|
|
int insertDcWarning = dcWarningMapper.insertDcWarning(dcWarning);//加入数据库
|
|
|
|
if (insertDcWarning==0){ |
|
|
|
return 0; |
|
|
|
} |
|
|
|
String id = dcWarning.getId();//取出加入后的id作为value
|
|
|
|
redisCache.setCacheObject(WARNINGDATA+key,id,Integer.parseInt(strategyTime),TimeUnit.MINUTES);//加入缓存并设置延迟时间(单位分钟)
|
|
|
|
return 1;//结束
|
|
|
|
} |
|
|
|
//redis存在数据,取出redis的id找对对应事件的配置,合成事件配置,重新定义延迟时间
|
|
|
|
HashMap<String, Object> map = dcWarningMapper.selectDcWarningById(dataId); |
|
|
|
if (map==null){//redis中有id但是数据库中没有这条数据,那就删除这条redis数据,新数据加入到数据库,并加入到redis
|
|
|
|
redisCache.deleteObject(WARNINGDATA+key); |
|
|
|
dcWarningMapper.insertDcWarning(dcWarning); |
|
|
|
String id = dcWarning.getId(); |
|
|
|
redisCache.setCacheObject(WARNINGDATA+key,id,Integer.parseInt(strategyTime),TimeUnit.MINUTES); |
|
|
|
return 1; |
|
|
|
} |
|
|
|
String otherConfig=""; |
|
|
|
if (map.get("otherConfig")!=null){ |
|
|
|
otherConfig = map.get("otherConfig").toString(); //取出原id的配置信息
|
|
|
|
} |
|
|
|
String otherConfigString = dcWarning.getOtherConfig();//新增的配置信息
|
|
|
|
JSONObject jsonObjectOne = new JSONObject(otherConfig); |
|
|
|
JSONObject jsonObjectTwo = new JSONObject(otherConfigString); |
|
|
|
DcWarningServiceImpl dcWarningService = new DcWarningServiceImpl();//合成新的json
|
|
|
|
JSONObject jsonObject = dcWarningService.mergeJsonObjects(jsonObjectOne, jsonObjectTwo); |
|
|
|
Integer integer = dcWarningMapper.updateOtherConfig(dataId, jsonObject.toString());//修改数据库配置
|
|
|
|
redisCache.setCacheObject(WARNINGDATA+key,dataId,Integer.parseInt(strategyTime),TimeUnit.MINUTES);//重新设置延迟时间
|
|
|
|
if (integer==0){ |
|
|
|
return 0; |
|
|
|
} |
|
|
|
return 1; |
|
|
|
} |
|
|
|
HashMap redisValueThree = redisWarningStrategy.get(redisKye+"3");//查看传入的事件类型是否配置策略3(时间窗口策略)
|
|
|
|
if (redisValueTwo==null&&redisValueThree!=null){ //执行策略3,执行到这里说明1不存在或者2不存在或者1未满足过滤条件
|
|
|
|
String strategyTime = redisValueThree.get("strategyTime").toString();//策略时长
|
|
|
|
if (dataId==null){//如果不存在直接加入数据库,加入缓存,配置对应的过期时间
|
|
|
|
int insertDcWarning = dcWarningMapper.insertDcWarning(dcWarning);//加入数据库
|
|
|
|
if (insertDcWarning==0){ |
|
|
|
return 0; |
|
|
|
} |
|
|
|
String id = dcWarning.getId();//取出加入后的id作为value
|
|
|
|
redisCache.setCacheObject(WARNINGDATA+key,id,Integer.parseInt(strategyTime),TimeUnit.MINUTES);//加入缓存并设置延迟时间(单位分钟)
|
|
|
|
return 1;//结束
|
|
|
|
} |
|
|
|
//redis存在数据,取出redis的id找对对应事件的配置,合成事件配置
|
|
|
|
HashMap<String, Object> map = dcWarningMapper.selectDcWarningById(dataId); |
|
|
|
if (map==null){//redis中有id但是数据库中没有这条数据,那就删除这条redis数据,新数据加入到数据库,并加入到redis
|
|
|
|
redisCache.deleteObject(WARNINGDATA+key); |
|
|
|
dcWarningMapper.insertDcWarning(dcWarning); |
|
|
|
String id = dcWarning.getId(); |
|
|
|
redisCache.setCacheObject(WARNINGDATA+key,id,Integer.parseInt(strategyTime),TimeUnit.MINUTES); |
|
|
|
return 1; |
|
|
|
} |
|
|
|
String otherConfig=""; |
|
|
|
otherConfig = map.get("otherConfig").toString();//取出原id的配置信息
|
|
|
|
String otherConfigString = dcWarning.getOtherConfig();//新增的配置信息
|
|
|
|
JSONObject jsonObjectOne = new JSONObject(otherConfig); |
|
|
|
JSONObject jsonObjectTwo = new JSONObject(otherConfigString); |
|
|
|
JSONObject jsonObject = new DcWarningServiceImpl().mergeJsonObjects(jsonObjectOne, jsonObjectTwo);//合成新的json
|
|
|
|
Integer integer = dcWarningMapper.updateOtherConfig(dataId, jsonObject.toString());//修改数据库配置
|
|
|
|
if (integer==0){ |
|
|
|
return 0; |
|
|
|
} |
|
|
|
return 1; |
|
|
|
} |
|
|
|
HashMap redisValueFour = redisWarningStrategy.get(redisKye+"4");//查看传入的事件类型是否配置策略3(自动结束策略)
|
|
|
|
if (redisValueTwo==null&&redisValueThree==null&&redisValueFour!=null){ //执行策略4,执行到这里说明1不存在或者2、3不存在或者1未满足过滤条件
|
|
|
|
if (dataId==null){//如果不存在直接加入数据库,加入缓存
|
|
|
|
int insertDcWarning = dcWarningMapper.insertDcWarning(dcWarning);//加入数据库
|
|
|
|
if (insertDcWarning==0){ |
|
|
|
return 0; |
|
|
|
} |
|
|
|
String id = dcWarning.getId();//取出加入后的id作为value
|
|
|
|
redisCache.setCacheObject(WARNINGDATA+key,id,24,TimeUnit.HOURS);//加入缓存,防止redis数据累计,这里也要设置过期时间,设置为24小时
|
|
|
|
return 1;//结束
|
|
|
|
} |
|
|
|
//redis存在数据,取出redis的id找对对应事件的配置,合成事件配置
|
|
|
|
HashMap<String, Object> map = dcWarningMapper.selectDcWarningById(dataId); |
|
|
|
if (map==null){//redis中有id但是数据库中没有这条数据,那就删除这条redis数据,新数据加入到数据库,并加入到redis
|
|
|
|
redisCache.deleteObject(WARNINGDATA+key); |
|
|
|
dcWarningMapper.insertDcWarning(dcWarning); |
|
|
|
String id = dcWarning.getId(); |
|
|
|
redisCache.setCacheObject(WARNINGDATA+key,id); |
|
|
|
return 1; |
|
|
|
} |
|
|
|
String otherConfig=""; |
|
|
|
otherConfig = map.get("otherConfig").toString();//取出原id的配置信息
|
|
|
|
String otherConfigString = dcWarning.getOtherConfig();//新增的配置信息
|
|
|
|
JSONObject jsonObjectOne = new JSONObject(otherConfig); |
|
|
|
JSONObject jsonObjectTwo = new JSONObject(otherConfigString); |
|
|
|
JSONObject jsonObject = new DcWarningServiceImpl().mergeJsonObjects(jsonObjectOne, jsonObjectTwo);//合成新的json
|
|
|
|
Integer integer = dcWarningMapper.updateOtherConfig(dataId, jsonObject.toString());//修改数据库配置
|
|
|
|
redisCache.deleteObject(WARNINGDATA + key);//删除redis存储的数据
|
|
|
|
if (integer==0){ |
|
|
|
return 0; |
|
|
|
} |
|
|
|
return 1; |
|
|
|
} |
|
|
|
return dcWarningMapper.insertDcWarning(dcWarning);//如果没有配置策略直接加入数据库;
|
|
|
|
} |
|
|
|
// public int priority(DcWarning dcWarning){
|
|
|
|
// dcWarning.setCreateTime(DateUtils.getNowDate());
|
|
|
|
// //设置事件Id UUID无下划线格式32
|
|
|
|
// String uuid = IdUtils.fastSimpleUUID();
|
|
|
|
// dcWarning.setId(uuid);
|
|
|
|
// if (StringUtils.isBlank(dcWarning.getStakeMark())||dcWarning.getWarningSource()==null||dcWarning.getWarningType()==null||
|
|
|
|
// StringUtils.isBlank(dcWarning.getWarningSubclass())||StringUtils.isBlank(dcWarning.getDirection())){
|
|
|
|
// return 0;
|
|
|
|
// }
|
|
|
|
// String redisKye=dcWarning.getWarningSource().toString()+dcWarning.getWarningType().toString()+dcWarning.getWarningSubclass();//配置数据的key 事件源+事件类型+策略
|
|
|
|
// Map<String, HashMap> redisWarningStrategy = redisCache.getCacheMap(WARNINGSTRATEGY);//获取缓存全部的配置数据
|
|
|
|
// if (redisWarningStrategy==null||redisWarningStrategy.size()==0){//如果缓存为空,查询数据重新加入缓存
|
|
|
|
// Map<String, JSONObject> redisMap = new HashMap<>();
|
|
|
|
// List<DcWaringStrategy> dcWaringStrategies = dcWarningMapper.selectDcWaringStrategyList();//数据库全部配置数据
|
|
|
|
// for (DcWaringStrategy waringStrategy : dcWaringStrategies) {
|
|
|
|
// String key = waringStrategy.getWarningSource().toString() + waringStrategy.getWarningType().toString()
|
|
|
|
// + waringStrategy.getWarningSubclass()+waringStrategy.getStrategy().toString();//redis配置数据key
|
|
|
|
// JSONObject jsonObject = new JSONObject();
|
|
|
|
// jsonObject.put("strategy", waringStrategy.getStrategy());//策略模式
|
|
|
|
// jsonObject.put("strategyTime", waringStrategy.getStrategyTime());//模式时长,单位为分钟
|
|
|
|
// jsonObject.put("priority", waringStrategy.getPriority());//优先级
|
|
|
|
// redisMap.put(key, jsonObject);
|
|
|
|
// }
|
|
|
|
// redisCache.setCacheMap(WARNINGSTRATEGY, redisMap);//数据库配置数据加入缓存中
|
|
|
|
// redisWarningStrategy = redisCache.getCacheMap(WARNINGSTRATEGY);//缓存数据为空重新加入到缓存在取出缓存的配置
|
|
|
|
// }
|
|
|
|
// String key=dcWarning.getStakeMark()+dcWarning.getDirection()+dcWarning.getWarningSource().
|
|
|
|
// toString()+dcWarning.getWarningType().toString()+dcWarning.getWarningSubclass();//key,redis存储事件的key(桩号+方向+事件源+类型)
|
|
|
|
// String dataId = redisCache.getCacheObject(WARNINGDATA + key);//查看redis是否存在数据(id的值)
|
|
|
|
// HashMap redisValueOne = redisWarningStrategy.get(redisKye+"1");//查看传入的事件类型是否配置策略1(优先级策略)
|
|
|
|
// if(redisValueOne!=null){//执行策略1(暂时未定义,定义后开发)
|
|
|
|
// String priority = redisValueOne.get("priority").toString();//全部的优先等级
|
|
|
|
// String[] split = priority.split(",");
|
|
|
|
// for (int i = 0; i < split.length; i++){
|
|
|
|
// String priorityValue=split[i];//取出当前循环的优先级类型
|
|
|
|
// String keys=dcWarning.getStakeMark()+dcWarning.getDirection()+dcWarning.getWarningSource().
|
|
|
|
// toString()+dcWarning.getWarningType().toString()+priorityValue;//redis存储事件的key
|
|
|
|
// String dataIds = redisCache.getCacheObject(WARNINGDATA + keys);//查看redis是否存在数据(id的值)
|
|
|
|
// if (dataIds==null){ //没有对应的优先级类型的id值,结束当前循环
|
|
|
|
// continue;
|
|
|
|
// }
|
|
|
|
// //redis存在数据,取出redis的id找对对应事件的配置,合成事件配置
|
|
|
|
// HashMap<String, Object> map = dcWarningMapper.selectDcWarningById(dataId);
|
|
|
|
// if (map==null){//redis中有id但是数据库中没有这条数据,那就直接新增这个事件
|
|
|
|
// return dcWarningMapper.insertDcWarning(dcWarning);
|
|
|
|
// }
|
|
|
|
// String warningState = map.get("warningState").toString();//事件上报状态
|
|
|
|
// if ("1".equals(warningState)==false){ //状态不为上报,不用合成事件,删除之前的redis数据
|
|
|
|
// redisCache.deleteObject(WARNINGDATA+keys);
|
|
|
|
// continue;
|
|
|
|
// }
|
|
|
|
// String otherConfig="";
|
|
|
|
// if (map.get("otherConfig")!=null){
|
|
|
|
// otherConfig = map.get("otherConfig").toString(); //取出原id的配置信息
|
|
|
|
// }
|
|
|
|
// String otherConfigString = dcWarning.getOtherConfig();//新增的配置信息
|
|
|
|
// JSONObject jsonObjectOne = new JSONObject(otherConfig);
|
|
|
|
// JSONObject jsonObjectTwo = new JSONObject(otherConfigString);
|
|
|
|
// DcWarningServiceImpl dcWarningService = new DcWarningServiceImpl();//合成新的json
|
|
|
|
// JSONObject jsonObject = dcWarningService.mergeJsonObjects(jsonObjectOne, jsonObjectTwo);
|
|
|
|
// return dcWarningMapper.updateOtherConfig(dataId, jsonObject.toString());//修改数据库配置
|
|
|
|
// }
|
|
|
|
// }
|
|
|
|
// HashMap redisValueTwo = redisWarningStrategy.get(redisKye+"2");//查看传入的事件类型是否配置策略2(延迟策略)
|
|
|
|
// if (redisValueTwo!=null){ //执行策略2,执行到这里说明1不存在或者1未满足过滤条件
|
|
|
|
// String strategyTime = redisValueTwo.get("strategyTime").toString();//策略时长
|
|
|
|
// if (dataId==null){//如果不存在直接加入数据库,加入缓存,配置对应的过期时间
|
|
|
|
// int insertDcWarning = dcWarningMapper.insertDcWarning(dcWarning);//加入数据库
|
|
|
|
// if (insertDcWarning==0){
|
|
|
|
// return 0;
|
|
|
|
// }
|
|
|
|
// String id = dcWarning.getId();//取出加入后的id作为value
|
|
|
|
// redisCache.setCacheObject(WARNINGDATA+key,id,Integer.parseInt(strategyTime),TimeUnit.MINUTES);//加入缓存并设置延迟时间(单位分钟)
|
|
|
|
// return 1;//结束
|
|
|
|
// }
|
|
|
|
// //redis存在数据,取出redis的id找对对应事件的配置,合成事件配置,重新定义延迟时间
|
|
|
|
// HashMap<String, Object> map = dcWarningMapper.selectDcWarningById(dataId);
|
|
|
|
// if (map==null){//redis中有id但是数据库中没有这条数据,那就删除这条redis数据,新数据加入到数据库,并加入到redis
|
|
|
|
// redisCache.deleteObject(WARNINGDATA+key);
|
|
|
|
// dcWarningMapper.insertDcWarning(dcWarning);
|
|
|
|
// String id = dcWarning.getId();
|
|
|
|
// redisCache.setCacheObject(WARNINGDATA+key,id,Integer.parseInt(strategyTime),TimeUnit.MINUTES);
|
|
|
|
// return 1;
|
|
|
|
// }
|
|
|
|
// String otherConfig="";
|
|
|
|
// if (map.get("otherConfig")!=null){
|
|
|
|
// otherConfig = map.get("otherConfig").toString(); //取出原id的配置信息
|
|
|
|
// }
|
|
|
|
// String otherConfigString = dcWarning.getOtherConfig();//新增的配置信息
|
|
|
|
// JSONObject jsonObjectOne = new JSONObject(otherConfig);
|
|
|
|
// JSONObject jsonObjectTwo = new JSONObject(otherConfigString);
|
|
|
|
// DcWarningServiceImpl dcWarningService = new DcWarningServiceImpl();//合成新的json
|
|
|
|
// JSONObject jsonObject = dcWarningService.mergeJsonObjects(jsonObjectOne, jsonObjectTwo);
|
|
|
|
// Integer integer = dcWarningMapper.updateOtherConfig(dataId, jsonObject.toString());//修改数据库配置
|
|
|
|
// redisCache.setCacheObject(WARNINGDATA+key,dataId,Integer.parseInt(strategyTime),TimeUnit.MINUTES);//重新设置延迟时间
|
|
|
|
// if (integer==0){
|
|
|
|
// return 0;
|
|
|
|
// }
|
|
|
|
// return 1;
|
|
|
|
// }
|
|
|
|
// HashMap redisValueThree = redisWarningStrategy.get(redisKye+"3");//查看传入的事件类型是否配置策略3(时间窗口策略)
|
|
|
|
// if (redisValueTwo==null&&redisValueThree!=null){ //执行策略3,执行到这里说明1不存在或者2不存在或者1未满足过滤条件
|
|
|
|
// String strategyTime = redisValueThree.get("strategyTime").toString();//策略时长
|
|
|
|
// if (dataId==null){//如果不存在直接加入数据库,加入缓存,配置对应的过期时间
|
|
|
|
// int insertDcWarning = dcWarningMapper.insertDcWarning(dcWarning);//加入数据库
|
|
|
|
// if (insertDcWarning==0){
|
|
|
|
// return 0;
|
|
|
|
// }
|
|
|
|
// String id = dcWarning.getId();//取出加入后的id作为value
|
|
|
|
// redisCache.setCacheObject(WARNINGDATA+key,id,Integer.parseInt(strategyTime),TimeUnit.MINUTES);//加入缓存并设置延迟时间(单位分钟)
|
|
|
|
// return 1;//结束
|
|
|
|
// }
|
|
|
|
// //redis存在数据,取出redis的id找对对应事件的配置,合成事件配置
|
|
|
|
// HashMap<String, Object> map = dcWarningMapper.selectDcWarningById(dataId);
|
|
|
|
// if (map==null){//redis中有id但是数据库中没有这条数据,那就删除这条redis数据,新数据加入到数据库,并加入到redis
|
|
|
|
// redisCache.deleteObject(WARNINGDATA+key);
|
|
|
|
// dcWarningMapper.insertDcWarning(dcWarning);
|
|
|
|
// String id = dcWarning.getId();
|
|
|
|
// redisCache.setCacheObject(WARNINGDATA+key,id,Integer.parseInt(strategyTime),TimeUnit.MINUTES);
|
|
|
|
// return 1;
|
|
|
|
// }
|
|
|
|
// String otherConfig="";
|
|
|
|
// otherConfig = map.get("otherConfig").toString();//取出原id的配置信息
|
|
|
|
// String otherConfigString = dcWarning.getOtherConfig();//新增的配置信息
|
|
|
|
// JSONObject jsonObjectOne = new JSONObject(otherConfig);
|
|
|
|
// JSONObject jsonObjectTwo = new JSONObject(otherConfigString);
|
|
|
|
// JSONObject jsonObject = new DcWarningServiceImpl().mergeJsonObjects(jsonObjectOne, jsonObjectTwo);//合成新的json
|
|
|
|
// Integer integer = dcWarningMapper.updateOtherConfig(dataId, jsonObject.toString());//修改数据库配置
|
|
|
|
// if (integer==0){
|
|
|
|
// return 0;
|
|
|
|
// }
|
|
|
|
// return 1;
|
|
|
|
// }
|
|
|
|
// HashMap redisValueFour = redisWarningStrategy.get(redisKye+"4");//查看传入的事件类型是否配置策略3(自动结束策略)
|
|
|
|
// if (redisValueTwo==null&&redisValueThree==null&&redisValueFour!=null){ //执行策略4,执行到这里说明1不存在或者2、3不存在或者1未满足过滤条件
|
|
|
|
// if (dataId==null){//如果不存在直接加入数据库,加入缓存
|
|
|
|
// int insertDcWarning = dcWarningMapper.insertDcWarning(dcWarning);//加入数据库
|
|
|
|
// if (insertDcWarning==0){
|
|
|
|
// return 0;
|
|
|
|
// }
|
|
|
|
// String id = dcWarning.getId();//取出加入后的id作为value
|
|
|
|
// redisCache.setCacheObject(WARNINGDATA+key,id,24,TimeUnit.HOURS);//加入缓存,防止redis数据累计,这里也要设置过期时间,设置为24小时
|
|
|
|
// return 1;//结束
|
|
|
|
// }
|
|
|
|
// //redis存在数据,取出redis的id找对对应事件的配置,合成事件配置
|
|
|
|
// HashMap<String, Object> map = dcWarningMapper.selectDcWarningById(dataId);
|
|
|
|
// if (map==null){//redis中有id但是数据库中没有这条数据,那就删除这条redis数据,新数据加入到数据库,并加入到redis
|
|
|
|
// redisCache.deleteObject(WARNINGDATA+key);
|
|
|
|
// dcWarningMapper.insertDcWarning(dcWarning);
|
|
|
|
// String id = dcWarning.getId();
|
|
|
|
// redisCache.setCacheObject(WARNINGDATA+key,id);
|
|
|
|
// return 1;
|
|
|
|
// }
|
|
|
|
// String otherConfig="";
|
|
|
|
// otherConfig = map.get("otherConfig").toString();//取出原id的配置信息
|
|
|
|
// String otherConfigString = dcWarning.getOtherConfig();//新增的配置信息
|
|
|
|
// JSONObject jsonObjectOne = new JSONObject(otherConfig);
|
|
|
|
// JSONObject jsonObjectTwo = new JSONObject(otherConfigString);
|
|
|
|
// JSONObject jsonObject = new DcWarningServiceImpl().mergeJsonObjects(jsonObjectOne, jsonObjectTwo);//合成新的json
|
|
|
|
// Integer integer = dcWarningMapper.updateOtherConfig(dataId, jsonObject.toString());//修改数据库配置
|
|
|
|
// redisCache.deleteObject(WARNINGDATA + key);//删除redis存储的数据
|
|
|
|
// if (integer==0){
|
|
|
|
// return 0;
|
|
|
|
// }
|
|
|
|
// return 1;
|
|
|
|
// }
|
|
|
|
// return dcWarningMapper.insertDcWarning(dcWarning);//如果没有配置策略直接加入数据库;
|
|
|
|
// }
|
|
|
|
private JSONObject mergeJsonObjects(JSONObject jsonObjectOne, JSONObject jsonObjectTwo){ |
|
|
|
// 合并videoList
|
|
|
|
if (jsonObjectTwo.has("videoList")) { |
|
|
@ -532,4 +533,14 @@ public class DcWarningServiceImpl implements IDcWarningService |
|
|
|
return AjaxResult.success("批量操作成功"); |
|
|
|
} |
|
|
|
|
|
|
|
//定时结束部分事件
|
|
|
|
@Override |
|
|
|
public Integer updateEndSection() { |
|
|
|
List<DcWarning> dcWarnings = dcWarningMapper.selectEndSection();//全部应该结束事件的id
|
|
|
|
if (dcWarnings.size()==0){ |
|
|
|
return 1; |
|
|
|
} |
|
|
|
return dcWarningMapper.updateEndSection(dcWarnings); |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|