|
@@ -23,12 +23,12 @@ import java.util.List;
|
|
import java.util.Map;
|
|
import java.util.Map;
|
|
import java.util.stream.Collectors;
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
-@Service("opcInitService")
|
|
|
|
|
|
+@Service("opcInit")
|
|
@DependsOn({"beanUtils", "redisTemplate"})
|
|
@DependsOn({"beanUtils", "redisTemplate"})
|
|
@AllArgsConstructor
|
|
@AllArgsConstructor
|
|
@Slf4j
|
|
@Slf4j
|
|
@EnableScheduling // 1.开启定时任务
|
|
@EnableScheduling // 1.开启定时任务
|
|
-public class OpcInitService {
|
|
|
|
|
|
+public class OpcInit {
|
|
|
|
|
|
private final RemoteOpcMapper remoteOpcMapper;
|
|
private final RemoteOpcMapper remoteOpcMapper;
|
|
|
|
|
|
@@ -44,27 +44,11 @@ public class OpcInitService {
|
|
*/
|
|
*/
|
|
@PostConstruct
|
|
@PostConstruct
|
|
public void initAddAllItem() {
|
|
public void initAddAllItem() {
|
|
- RedisUtils.del(OpcDAClient.redis_opc_item_values);
|
|
|
|
|
|
+ RedisUtils.del(OpcDAClient.redis_ok);
|
|
log.info("开始初始化分组");
|
|
log.info("开始初始化分组");
|
|
addGroupAndItems(findAllItems(true, null));
|
|
addGroupAndItems(findAllItems(true, null));
|
|
}
|
|
}
|
|
|
|
|
|
- /**
|
|
|
|
- * 1: 新增的数据添加到分组里面
|
|
|
|
- * a: 之前已经新增,但是server里面没配置,现在server刚配置(修改createdFlag = 1)
|
|
|
|
- * b: 新增的点位,在server里面也配置了,createdFlag = 1
|
|
|
|
- * c: 新增的点位,设置了createdFlag = 1,但是加入到分组的时候,server里面就没配置,这个时候需要更新:createdFlag = 0
|
|
|
|
- * d: 之前点位配置到线路1,但是现在修改到了线路2,需要重新添加到分组,要从原有分组进行删除,不然2个组都获取到了数据*
|
|
|
|
- * <p>
|
|
|
|
- * 注意:获取的时候写入一个key,用于标识正在读,这个时候,不进行点位新增* * *
|
|
|
|
- */
|
|
|
|
- /*@Scheduled(fixedDelay = 300000) //间隔5分钟,300秒查询,需要同步新增的点位。
|
|
|
|
- public void addItems() {
|
|
|
|
- RedisUtils.setString(OpcDAClient.redis_opc_update_flag, "1");
|
|
|
|
- addGroupAndItems(findAllItems(true, null));
|
|
|
|
- RedisUtils.del(OpcDAClient.redis_opc_update_flag);
|
|
|
|
- }*/
|
|
|
|
-
|
|
|
|
/**
|
|
/**
|
|
* 立即新增点位:在新增点位后,点击立即生效按钮,这个时间不能再执行上面的addItems()方法
|
|
* 立即新增点位:在新增点位后,点击立即生效按钮,这个时间不能再执行上面的addItems()方法
|
|
* 立即取消点位:在点位,点击取消采集按钮
|
|
* 立即取消点位:在点位,点击取消采集按钮
|
|
@@ -72,14 +56,13 @@ public class OpcInitService {
|
|
*/
|
|
*/
|
|
@Scheduled(fixedDelay = 10000)
|
|
@Scheduled(fixedDelay = 10000)
|
|
public void addAndDelItems() {
|
|
public void addAndDelItems() {
|
|
- log.info("开始更新分组和点位数据:");
|
|
|
|
RedisUtils.setString(OpcDAClient.redis_opc_update_flag, "1");
|
|
RedisUtils.setString(OpcDAClient.redis_opc_update_flag, "1");
|
|
-
|
|
|
|
List<String> list = RedisUtils.getList(OpcDAClient.redis_opc_wait_add_list, 0, -1);
|
|
List<String> list = RedisUtils.getList(OpcDAClient.redis_opc_wait_add_list, 0, -1);
|
|
if (!CollectionUtils.isEmpty(list)) {
|
|
if (!CollectionUtils.isEmpty(list)) {
|
|
List<String> uniqueStr = list.stream().distinct().collect(Collectors.toList());
|
|
List<String> uniqueStr = list.stream().distinct().collect(Collectors.toList());
|
|
if (!CollectionUtils.isEmpty(uniqueStr)) {
|
|
if (!CollectionUtils.isEmpty(uniqueStr)) {
|
|
addGroupAndItems(findAllItems(false, uniqueStr));
|
|
addGroupAndItems(findAllItems(false, uniqueStr));
|
|
|
|
+ log.info("开始添加新点位:");
|
|
}
|
|
}
|
|
}
|
|
}
|
|
RedisUtils.del(OpcDAClient.redis_opc_wait_add_list);
|
|
RedisUtils.del(OpcDAClient.redis_opc_wait_add_list);
|
|
@@ -91,13 +74,12 @@ public class OpcInitService {
|
|
List<RemoteOpc> uniqueStr = remoteOpcList.stream().distinct().collect(Collectors.toList());
|
|
List<RemoteOpc> uniqueStr = remoteOpcList.stream().distinct().collect(Collectors.toList());
|
|
if (!CollectionUtils.isEmpty(uniqueStr)) {
|
|
if (!CollectionUtils.isEmpty(uniqueStr)) {
|
|
OpcDAClient.removeItems(remoteOpcList.stream().collect(Collectors.groupingBy(RemoteOpc::getLine)));
|
|
OpcDAClient.removeItems(remoteOpcList.stream().collect(Collectors.groupingBy(RemoteOpc::getLine)));
|
|
|
|
+ log.info("开始移除删除点位:");
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
RedisUtils.del(OpcDAClient.redis_opc_wait_remove_list);
|
|
RedisUtils.del(OpcDAClient.redis_opc_wait_remove_list);
|
|
-
|
|
|
|
RedisUtils.del(OpcDAClient.redis_opc_update_flag);
|
|
RedisUtils.del(OpcDAClient.redis_opc_update_flag);
|
|
- log.info("结束更新分组和点位数据:");
|
|
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -137,6 +119,7 @@ public class OpcInitService {
|
|
List<RemoteOpc> remoteOpcFailList = new ArrayList<>();
|
|
List<RemoteOpc> remoteOpcFailList = new ArrayList<>();
|
|
AddFailedException exception = OpcDAClient.addGroupList(listMap);
|
|
AddFailedException exception = OpcDAClient.addGroupList(listMap);
|
|
if (exception != null) {
|
|
if (exception != null) {
|
|
|
|
+ RedisUtils.setString(OpcDAClient.redis_ok, "0");
|
|
Map<String, Integer> failedItems = exception.getErrors();
|
|
Map<String, Integer> failedItems = exception.getErrors();
|
|
Map<String, Item> addItems = exception.getItems();
|
|
Map<String, Item> addItems = exception.getItems();
|
|
if (failedItems != null) {// 有不存在的item,需要更新对应的点位信息
|
|
if (failedItems != null) {// 有不存在的item,需要更新对应的点位信息
|
|
@@ -157,7 +140,7 @@ public class OpcInitService {
|
|
remoteOpc.setPositionNum(entry.getKey());
|
|
remoteOpc.setPositionNum(entry.getKey());
|
|
remoteOpc.setCreatedFlag(1);
|
|
remoteOpc.setCreatedFlag(1);
|
|
remoteOpc.setRemark("opc server已配置,AV/DV配置正确");
|
|
remoteOpc.setRemark("opc server已配置,AV/DV配置正确");
|
|
- log.error("opc server已配置。key: " + remoteOpc.getPositionNum() + ", value: " + entry.getValue());
|
|
|
|
|
|
+ // log.error("opc server已配置。key: " + remoteOpc.getPositionNum() + ", value: " + entry.getValue());
|
|
remoteOpcFailList.add(remoteOpc);
|
|
remoteOpcFailList.add(remoteOpc);
|
|
}
|
|
}
|
|
}
|
|
}
|