|
@@ -0,0 +1,76 @@
|
|
|
+package com.greentech.gateservice.controller;
|
|
|
+
|
|
|
+import com.greentech.gateservice.util.LoginModule;
|
|
|
+import com.netsdk.common.Res;
|
|
|
+import com.netsdk.lib.NetSDKLib;
|
|
|
+import com.netsdk.lib.ToolKits;
|
|
|
+import com.sun.jna.Memory;
|
|
|
+import com.sun.jna.Pointer;
|
|
|
+import org.springframework.web.bind.annotation.RequestMapping;
|
|
|
+import org.springframework.web.bind.annotation.RequestParam;
|
|
|
+import org.springframework.web.bind.annotation.RestController;
|
|
|
+
|
|
|
+import javax.swing.*;
|
|
|
+
|
|
|
+@RestController
|
|
|
+public class GateController {
|
|
|
+ @RequestMapping("/open/door")
|
|
|
+ public String openDoor(@RequestParam String sn){
|
|
|
+ NetSDKLib.NET_CTRL_ACCESS_OPEN openInfo = new NetSDKLib.NET_CTRL_ACCESS_OPEN();
|
|
|
+ openInfo.nChannelID = 0;
|
|
|
+ openInfo.emOpenDoorType = NetSDKLib.EM_OPEN_DOOR_TYPE.EM_OPEN_DOOR_TYPE_REMOTE;
|
|
|
+ Pointer pointer = new Memory(openInfo.size());
|
|
|
+ ToolKits.SetStructDataToPointer(openInfo, pointer, 0);
|
|
|
+
|
|
|
+
|
|
|
+ //遍历寻找sn对应的句柄
|
|
|
+ synchronized(LoginModule.lock){
|
|
|
+ for (NetSDKLib.LLong key : LoginModule.m_stDeviceInfo.keySet()) {
|
|
|
+
|
|
|
+ //获取handle句柄和设备信息
|
|
|
+ NetSDKLib.NET_DEVICEINFO_Ex value = LoginModule.m_stDeviceInfo.get(key);
|
|
|
+ String deviceSn = new String(value.sSerialNumber);
|
|
|
+ if (deviceSn.equals(sn)) {
|
|
|
+ boolean ret = LoginModule.netsdk.CLIENT_ControlDeviceEx(key,
|
|
|
+ NetSDKLib.CtrlType.CTRLTYPE_CTRL_ACCESS_OPEN, pointer, null, 10000);
|
|
|
+ if (!ret) {
|
|
|
+ JOptionPane.showMessageDialog(null, ToolKits.getErrorCodeShow(), Res.string().getErrorMessage(),
|
|
|
+ JOptionPane.ERROR_MESSAGE);
|
|
|
+ return "开门失败";
|
|
|
+ }
|
|
|
+ return "开门成功";
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return "未发现设备";
|
|
|
+ }
|
|
|
+
|
|
|
+ @RequestMapping("/close/door")
|
|
|
+ public String closeDoor(@RequestParam String sn){
|
|
|
+ final NetSDKLib.NET_CTRL_ACCESS_CLOSE close = new NetSDKLib.NET_CTRL_ACCESS_CLOSE();
|
|
|
+ close.nChannelID = 0; // 对应的门编号 - 如何开全部的门
|
|
|
+ close.write();
|
|
|
+ Pointer pointer = new Memory(close.size());
|
|
|
+
|
|
|
+ synchronized(LoginModule.lock) {
|
|
|
+ for (NetSDKLib.LLong key : LoginModule.m_stDeviceInfo.keySet()) {
|
|
|
+ //获取handle句柄和设备信息
|
|
|
+ NetSDKLib.NET_DEVICEINFO_Ex value = LoginModule.m_stDeviceInfo.get(key);
|
|
|
+ String deviceSn = new String(value.sSerialNumber);
|
|
|
+ if (deviceSn.equals(sn)) {
|
|
|
+ boolean result = LoginModule.netsdk.CLIENT_ControlDeviceEx(key,
|
|
|
+ NetSDKLib.CtrlType.CTRLTYPE_CTRL_ACCESS_CLOSE, close.getPointer(), null, 5000);
|
|
|
+ close.read();
|
|
|
+ if (!result) {
|
|
|
+ JOptionPane.showMessageDialog(null, ToolKits.getErrorCodeShow(), Res.string().getErrorMessage(),
|
|
|
+ JOptionPane.ERROR_MESSAGE);
|
|
|
+ return "关门失败";
|
|
|
+ }
|
|
|
+ return "关门成功";
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return "未发现设备";
|
|
|
+ }
|
|
|
+}
|