yantian yue
2023-10-17 487b2f2a353b89ab46cd9b784226b600b7b915b8
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
package cn.stylefeng.guns.opcua.controller;
 
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;
 
import javax.servlet.http.HttpServletRequest;
 
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import cn.stylefeng.guns.opcua.client.ClientHandler;
import cn.stylefeng.guns.opcua.entity.NodeEntity;
 
//import com.google.common.collect.Lists;
 
/**
 * @ClassName: OpcUaController
 * @Description: OpcUa控制器
 * @author yyt
 * @date 2023年10月13日
 */
@Controller
public class CommonController {
 
    @Autowired
    private ClientHandler clientHandler;
 
    /**
     * @MethodName: connect
     * @Description: opcua连接并订阅变量
     * @param request
     * @param response
     * @return
     * @CreateTime 2023年10月13日
     */
    @RequestMapping("/connect")
    @ResponseBody
    public String connect() {
 
        try {
            return clientHandler.connect();
        } catch (Exception e) {
            e.printStackTrace();
            return "fail";
        }
    }
 
    /**
     * @MethodName: disconnect
     * @Description: disconnect
     * @return
     * @CreateTime 2023年10月13日
     */
    @RequestMapping("/disconnect")
    @ResponseBody
    public String disconnect() {
 
        try {
            return clientHandler.disconnect();
        } catch (Exception e) {
            e.printStackTrace();
            return "fail";
        }
    }
 
    /**
     * @MethodName: subscribe
     * @Description: subscribe
     * @return
     * @CreateTime 2023年10月13日
     */
    @RequestMapping("/subscribe")
    @ResponseBody
    public String subscribe(HttpServletRequest request) {
 
        try {
            List<NodeEntity> nodes = Stream.of(request.getParameter("id").split(","))
                    .map(id -> NodeEntity.builder().index(2).identifier(id).build()).collect(Collectors.toList());
 
            return clientHandler.subscribe(nodes);
        } catch (Exception e) {
            e.printStackTrace();
            return "fail";
        }
    }
 
    /**
     * @MethodName: write
     * @Description: 节点写入
     * @param request
     * @return
     * @CreateTime 2023年10月13日
     */
    @RequestMapping("/write")
    @ResponseBody
    public String write(HttpServletRequest request) {
 
        NodeEntity node = NodeEntity.builder().index(2).identifier(request.getParameter("id"))
                .value(request.getParameter("value")).type(request.getParameter("type")).build();
 
        try {
            return clientHandler.write(node);
        } catch (Exception e) {
            e.printStackTrace();
            return "fail";
        }
    }
 
    /**
     * @MethodName: read
     * @Description: read
     * @param request
     * @return
     * @CreateTime 2023年10月13日
     */
    @RequestMapping("/read")
    @ResponseBody
    public String read(HttpServletRequest request) {
 
        NodeEntity node = NodeEntity.builder().index(2).identifier(request.getParameter("id")).build();
 
        try {
            return clientHandler.read(node);
        } catch (Exception e) {
            e.printStackTrace();
            return "fail";
        }
    }
}