Kaynağa Gözat

登录更新设备状态

zhangqian 1 yıl önce
ebeveyn
işleme
fb8e829a73

+ 31 - 4
src/main/java/com/greentech/gateservice/init/BatchLogin.java

@@ -25,8 +25,30 @@ public class BatchLogin implements CommandLineRunner {
         LoginModule.init(new NetSDKLib.fDisConnect() {
             @Override
             public void invoke(NetSDKLib.LLong lLong, String s, int i, Pointer pointer) {
-                //连接删除map配置 需考虑加锁 同步更新数据库状态
-                //LoginModule.m_stDeviceInfo.remove(lLong);
+                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 (lLong.longValue() == key.longValue()) {
+                            //先查询单条设备信息
+                            GateInfoImpl gateImpl = new GateInfoImpl();
+                            GateInfoImpl.Criteria c = gateImpl.createCriteria();
+                            c.andSerialNumEqualTo(deviceSn);
+                            List<GateInfo> list = crudMapper.selectByExample(gateImpl);
+                            if (list.isEmpty()) {
+                                System.err.println("未查询到设备信息");
+                            }
+                            GateInfo g = list.get(0);
+                            byte b = 0;
+                            g.setStatus(b);
+                            crudMapper.updateByPrimaryKey(g);
+                            break;
+                        }
+                    }
+                    LoginModule.m_stDeviceInfo.remove(lLong);
+                }
             }
         }, new NetSDKLib.fHaveReConnect() {
             @Override
@@ -38,8 +60,13 @@ public class BatchLogin implements CommandLineRunner {
         GateInfoImpl gateImpl = new GateInfoImpl();
         List<GateInfo> list = crudMapper.selectByExample(gateImpl);
         for (GateInfo row: list) {
-            System.out.println(row.getIp());
-            LoginModule.login(row.getIp(),row.getPort(),row.getUserName(),row.getPassword());
+            boolean flag = LoginModule.login(row.getIp(),row.getPort(),row.getUserName(),row.getPassword());
+            if (flag) {
+                System.out.println("--设备连接成功--");
+                byte b = 1;
+                row.setStatus(b);
+                crudMapper.updateByPrimaryKey(row);
+            }
         }
         System.out.println("--初始化设备连接结束--");
     }