2023-10-20 | yantian yue | |
2023-10-20 | yantian yue |
guns-vip-main/src/main/java/cn/stylefeng/guns/opcua/client/ClientHandler.java
@@ -51,6 +51,8 @@ // 客æ·ç«¯å®ä¾ private OpcUaClient client = null; public List<OpcuaConfResult> b = null; @Autowired private ClientRunner clientRunner; @@ -113,8 +115,6 @@ return "æ¾ä¸å°å®¢æ·ç«¯ï¼æä½å¤±è´¥"; } // List<Node> ns = client.getAddressSpace().browse(new NodeId(2, "模æééä¸.模æ设å¤ä¸")).get(); // æ¥è¯¢è®¢é 对象ï¼æ²¡æåå建 UaSubscription subscription = null; ImmutableList<UaSubscription> subscriptionList = client.getSubscriptionManager().getSubscriptions(); @@ -148,7 +148,7 @@ // å建çæ§é¡¹ï¼å¹¶ä¸æ³¨ååéå¼æ¹åæ¶åçåè°å½æ° subscription.createMonitoredItems(TimestampsToReturn.Both, requests, (item, id) -> { item.setValueConsumer((i, v) -> { handle(i.getReadValueId().getNodeId(), v.getValue()); handle2(i.getReadValueId().getNodeId(), v.getValue()); }); }).get(); @@ -161,13 +161,13 @@ * @CreateTime 2023å¹´10æ13æ¥ */ public void handle(NodeId id, Variant value){ /*public void handle(NodeId id, Variant value){ long startTime = System.currentTimeMillis(); OpcuaConfParam opcuaConfParam=new OpcuaConfParam(); opcuaConfParam.setNode(id.getIdentifier().toString()); List<OpcuaConfResult> a=opcuaConfController.mylist(opcuaConfParam); log.info("æ°æ®åºè®¿é®ä»£ç æ§è¡æ¶é´ï¼" + (System.currentTimeMillis() - startTime) + "毫ç§"); String str1 = id.getIdentifier().toString()+":"+value.getValue().toString(); try { Class<?> clazz = Class.forName(a.get(0).getRModule()); @@ -179,8 +179,34 @@ e.printStackTrace(); } log.info("代ç æ§è¡æ¶é´ï¼" + (System.currentTimeMillis() - startTime) + "毫ç§"); }*/ public void handle2(NodeId id, Variant value){ long sTime = System.currentTimeMillis(); if (b == null || 0 > b.size()) { OpcuaConfParam opcuaConfParam=new OpcuaConfParam(); opcuaConfParam.setSubscribe(1); b=opcuaConfController.mylist(opcuaConfParam); } log.info("æ°æ®åºè®¿é®ä»£ç æ§è¡æ¶é´ï¼" + (System.currentTimeMillis() - sTime) + "毫ç§"); String str1 = id.getIdentifier().toString()+":"+value.getValue().toString(); OpcuaConfResult opcuaConfResult = b.stream() .filter(customer ->id.getIdentifier().toString().equals(customer.getNode())) .findAny() .orElse(null); try { Class<?> clazz = Class.forName(opcuaConfResult.getRModule()); Method method = clazz.getMethod(opcuaConfResult.getRFunction(), String.class); method.invoke(clazz.newInstance(), str1); } catch (ClassNotFoundException | NoSuchMethodException | IllegalAccessException | InstantiationException | InvocationTargetException e) { e.printStackTrace(); } log.info("代ç æ§è¡æ¶é´ï¼" + (System.currentTimeMillis() - sTime) + "毫ç§"); } /** * @MethodName: write * @Description: åèç¹éåå ¥ guns-vip-main/src/main/java/cn/stylefeng/guns/opcua/init/OpcusConfigInit.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,48 @@ package cn.stylefeng.guns.opcua.init; import cn.stylefeng.guns.opcua.client.ClientHandler; import cn.stylefeng.guns.opcua.controller.OpcuaConfController; import cn.stylefeng.guns.opcua.entity.NodeEntity; import cn.stylefeng.guns.opcua.model.params.OpcuaConfParam; import cn.stylefeng.guns.opcua.model.result.OpcuaConfResult; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.CommandLineRunner; import org.springframework.stereotype.Component; import java.util.List; import java.util.stream.Collectors; import java.util.stream.Stream; @Component @Slf4j public class OpcusConfigInit implements CommandLineRunner { @Autowired private ClientHandler clientHandler; @Autowired private OpcuaConfController opcuaConfController; @Override public void run(String... args) throws Exception { try { OpcuaConfParam opcuaConfParam=new OpcuaConfParam(); opcuaConfParam.setSubscribe(1); //设置æ¥è¯¢æ¡ä»¶ï¼æ¯å¦è®¢é ç¶æ为1çæææ°æ®. List<OpcuaConfResult> nodeslist=opcuaConfController.mylist(opcuaConfParam); clientHandler.connect(); if (nodeslist != null && nodeslist.size() > 0) { for (OpcuaConfResult opcuaConfResult : nodeslist) { List<NodeEntity> nodes = Stream.of(opcuaConfResult.getNode()) .map(id -> NodeEntity.builder().index(2).identifier(id).build()).collect(Collectors.toList()); clientHandler.subscribe(nodes); } log.info("åå§åOPC订é " + nodeslist.size() + "æ¡ï¼"); } } catch (Exception e) { e.printStackTrace(); log.info("éªè´§ï¼æå¯å¨å¤±è´¥äºï¼"); } log.info("éªè´§ï¼æå¯å¨æåäºï¼"); } } guns-vip-main/src/main/java/cn/stylefeng/guns/opcua/mapper/mapping/OpcuaConfMapper.xml
@@ -29,6 +29,9 @@ <if test="paramCondition.node != null and paramCondition.node != ''"> and node like CONCAT('%',#{paramCondition.node},'%') </if> <if test="paramCondition.subscribe != null and paramCondition.subscribe != ''"> and subscribe like CONCAT('%',#{paramCondition.subscribe},'%') </if> </select> <select id="customMapList" resultType="map" parameterType="cn.stylefeng.guns.opcua.model.params.OpcuaConfParam">