From 1af31e38c6a2cd072ed310149c656780610fe57b Mon Sep 17 00:00:00 2001
From: DELL <1525436766@qq.com>
Date: 星期一, 21 四月 2025 08:42:54 +0800
Subject: [PATCH] 2.修复锁具开启之后记录bug

---
 ElectLock_Monitor/src/com/dev/lock/comm/Lock_SocketClient_Thread.java |  340 ++++++++++++++++++++++++++++++++++----------------------
 1 files changed, 204 insertions(+), 136 deletions(-)

diff --git a/ElectLock_Monitor/src/com/dev/lock/comm/Lock_SocketClient_Thread.java b/ElectLock_Monitor/src/com/dev/lock/comm/Lock_SocketClient_Thread.java
index 5cf1850..4e6daa4 100644
--- a/ElectLock_Monitor/src/com/dev/lock/comm/Lock_SocketClient_Thread.java
+++ b/ElectLock_Monitor/src/com/dev/lock/comm/Lock_SocketClient_Thread.java
@@ -31,8 +31,7 @@
 	private Logger logger;
 	private AppConfig config;
 	
-	private ElectLock_State mLock_State;
-	
+	private ElectLock_State[] mLock_State = new ElectLock_State[ElectLock_ComBase.Lock_MaxLineCount];
 	private ElectLock_State mLock_param;
 	
 	private String client_ip;			//瀹㈡埛绔疘P鍦板潃
@@ -41,7 +40,7 @@
 	private MyModBusRtu mRtu_Tx;		//鍙戦�佹暟鎹�
 	private MyModBusRtu mRtu_Rx;		//杩斿洖鏁版嵁
 	
-	private ElectLock_Inf ele_lock = null;
+	private ElectLock_Inf[] ele_lock = new ElectLock_Inf[ElectLock_ComBase.Lock_MaxLineCount];
 	
 	private ElectLock_Array GB_Lock_Array;
 	
@@ -50,6 +49,11 @@
 	private boolean S_thread_run_flag = true;
 	
 	private int plat_model;
+	
+	private int MaxLockCount;
+	private int NowLockIdx = 0;		//褰撳墠璇诲彇鐘舵�佺殑閿佸叿绱㈠紩
+	
+	private int ErrorCount = 0;		//杩炵画閿欒璁℃暟,杩炴帴閿欒璁℃暟
 	
 	public Lock_SocketClient_Thread(MysqlConnPool pool,ElectLock_Array GB_Lock_Array ,AppConfig config,Socket tmp_socket) {
 		this.pool = pool;
@@ -61,8 +65,9 @@
 		this.logger = LogManager.getLogger(this);
 		this.mRtu_Tx = new MyModBusRtu();
 		this.mRtu_Rx = new MyModBusRtu(); 
-		this.mLock_State = new ElectLock_State();
-		this.mLock_param = new ElectLock_State();
+		
+		mLock_param = new ElectLock_State();
+		
 	}
 	
 	@Override
@@ -71,10 +76,10 @@
 		
 		int runCount = 0;
 		try {
-			if(S_thread_run_flag) {
-				mLock_State.setLock_online(1);
-				Lock_Task_SQL.insertLock_Rt_Table(pool, client_id, mLock_State);
-			}
+//			if(S_thread_run_flag) {
+//				mLock_State.setLock_online(1);
+//				Lock_Task_SQL.insertLock_Rt_Table(pool, client_id, mLock_State);
+//			}
 			while(S_thread_run_flag) {
 				
 				Lock_Task_SQL.queryElectLockControlCmd(pool,client_id,mLock_param);
@@ -83,39 +88,39 @@
 					ElectLock_Ctl_Log tmp_log = null;
 					
 					if(mLock_param.getOp_cmd() == ElectLock_ComBase.CMD_ClearIdCard) {
-						mRtu_Tx.mkBusRtu(MyModBusRtu.CMD_TYPE_WRITE_YC, ElectLock_ComBase.LOCK_CLEAR_AUTH_ADDR, ElectLock_ComBase.RegCount_Sigle);
+						mRtu_Tx.mkBusRtu((mLock_param.getLockAddr()%255),MyModBusRtu.CMD_TYPE_WRITE_YC, ElectLock_ComBase.LOCK_CLEAR_AUTH_ADDR, ElectLock_ComBase.RegCount_Sigle);
 						if(SocketComm(mRtu_Tx, ComBase.mkUInt16Buffer(ElectLock_ComBase.Control_Value))) {
 							mLock_param.setOp_cmd(ElectLock_ComBase.CMD_ClearIdCard_Ack);
-							tmp_log = new ElectLock_Ctl_Log(client_id, ElectLock_ComBase.CtlType_ClearIdCard, true,0,mLock_param.getCtl_uname());
+							tmp_log = new ElectLock_Ctl_Log(mLock_param.getLock_id(), ElectLock_ComBase.CtlType_ClearIdCard, true,0,mLock_param.getCtl_uname());
 							Lock_Task_SQL.insertLock_Ctl_Log_Table(pool, tmp_log);
 						} else {
 							mLock_param.setOp_cmd(ElectLock_ComBase.CMD_Fail);
-							tmp_log = new ElectLock_Ctl_Log(client_id, ElectLock_ComBase.CtlType_ClearIdCard, false,0,mLock_param.getCtl_uname());
+							tmp_log = new ElectLock_Ctl_Log(mLock_param.getLock_id(), ElectLock_ComBase.CtlType_ClearIdCard, false,0,mLock_param.getCtl_uname());
 							Lock_Task_SQL.insertLock_Ctl_Log_Table(pool, tmp_log);
 						}
 					}else if(mLock_param.getOp_cmd() == ElectLock_ComBase.CMD_REMOTE_OPEN_Lock) {
-						mRtu_Tx.mkBusRtu(MyModBusRtu.CMD_TYPE_WRITE_YC, ElectLock_ComBase.LOCK_REMOTE_OPEN_ADDR, ElectLock_ComBase.RegCount_Sigle);
+						mRtu_Tx.mkBusRtu((mLock_param.getLockAddr()%255),MyModBusRtu.CMD_TYPE_WRITE_YC, ElectLock_ComBase.LOCK_REMOTE_OPEN_ADDR, ElectLock_ComBase.RegCount_Sigle);
 						if(SocketComm(mRtu_Tx, ComBase.mkUInt16Buffer(ElectLock_ComBase.Control_Value))) {
 							mLock_param.setOp_cmd(ElectLock_ComBase.CMD_REMOTE_OPEN_Lock_Ack);
-							tmp_log = new ElectLock_Ctl_Log(client_id, ElectLock_ComBase.CtlType_REMOTE_OPEN_Lock, true,0,mLock_param.getCtl_uname());
+							tmp_log = new ElectLock_Ctl_Log(mLock_param.getLock_id(), ElectLock_ComBase.CtlType_REMOTE_OPEN_Lock, true,0,mLock_param.getCtl_uname());
 							Lock_Task_SQL.insertLock_Ctl_Log_Table(pool, tmp_log);
 						} else {
 							mLock_param.setOp_cmd(ElectLock_ComBase.CMD_Fail);
-							tmp_log = new ElectLock_Ctl_Log(client_id, ElectLock_ComBase.CtlType_REMOTE_OPEN_Lock, false,0,mLock_param.getCtl_uname());
+							tmp_log = new ElectLock_Ctl_Log(mLock_param.getLock_id(), ElectLock_ComBase.CtlType_REMOTE_OPEN_Lock, false,0,mLock_param.getCtl_uname());
 							Lock_Task_SQL.insertLock_Ctl_Log_Table(pool, tmp_log);
 							
 							//杩滅▼寮�閿佸け璐ユ椂锛岃褰曚竴绗斿紑閿佸け璐ュ憡璀�
-							Lock_Task_SQL.insertRemoteOpenFailAlarm(pool, client_id);
+							Lock_Task_SQL.insertRemoteOpenFailAlarm(pool, mLock_param.getLock_id());
 						}
 					}else if(mLock_param.getOp_cmd() == ElectLock_ComBase.CMD_REMOTE_ReStart) {
-						mRtu_Tx.mkBusRtu(MyModBusRtu.CMD_TYPE_WRITE_YC, ElectLock_ComBase.LOCK_RESTART_ADDR, ElectLock_ComBase.RegCount_Sigle);
+						mRtu_Tx.mkBusRtu((mLock_param.getLockAddr()%255),MyModBusRtu.CMD_TYPE_WRITE_YC, ElectLock_ComBase.LOCK_RESTART_ADDR, ElectLock_ComBase.RegCount_Sigle);
 						if(SocketComm(mRtu_Tx, ComBase.mkUInt16Buffer(ElectLock_ComBase.Control_Value))) {
 							mLock_param.setOp_cmd(ElectLock_ComBase.CMD_REMOTE_ReStart_Ack);
-							tmp_log = new ElectLock_Ctl_Log(client_id, ElectLock_ComBase.CtlType_REMOTE_ReStart, true,0,mLock_param.getCtl_uname());
+							tmp_log = new ElectLock_Ctl_Log(mLock_param.getLock_id(), ElectLock_ComBase.CtlType_REMOTE_ReStart, true,0,mLock_param.getCtl_uname());
 							Lock_Task_SQL.insertLock_Ctl_Log_Table(pool, tmp_log);
 						} else {
 							mLock_param.setOp_cmd(ElectLock_ComBase.CMD_Fail);
-							tmp_log = new ElectLock_Ctl_Log(client_id, ElectLock_ComBase.CtlType_REMOTE_ReStart, false,0,mLock_param.getCtl_uname());
+							tmp_log = new ElectLock_Ctl_Log(mLock_param.getLock_id(), ElectLock_ComBase.CtlType_REMOTE_ReStart, false,0,mLock_param.getCtl_uname());
 							Lock_Task_SQL.insertLock_Ctl_Log_Table(pool, tmp_log);
 						}
 					}else if(mLock_param.getOp_cmd() == ElectLock_ComBase.CMD_SetLockAddr) {
@@ -132,28 +137,53 @@
 //						}
 					}else if(mLock_param.getOp_cmd() == ElectLock_ComBase.CMD_AddIdCard) {
 						//娣诲姞ID鍗℃巿鏉�
-						mRtu_Tx.mkBusRtu(MyModBusRtu.CMD_TYPE_WRITE_MULTY, ElectLock_ComBase.LOCK_Add_ID_AUTH_ADDR, ElectLock_ComBase.RegCount_Double);
+						mRtu_Tx.mkBusRtu((mLock_param.getLockAddr()%255),MyModBusRtu.CMD_TYPE_WRITE_MULTY, ElectLock_ComBase.LOCK_Add_ID_AUTH_ADDR, ElectLock_ComBase.RegCount_Double);
 						System.out.println("mLock_param.getId_card_set():"+mLock_param.getId_card_set());
 						if(SocketComm(mRtu_Tx, ComBase.mkInt32Buffer(mLock_param.getId_card_set()))) {
 							mLock_param.setOp_cmd(ElectLock_ComBase.CMD_AddIdCard_Ack);
-							tmp_log = new ElectLock_Ctl_Log(client_id, ElectLock_ComBase.CtlType_AddIdCard, true,mLock_param.getId_card_set(),mLock_param.getCtl_uname());
+							tmp_log = new ElectLock_Ctl_Log(mLock_param.getLock_id(), ElectLock_ComBase.CtlType_AddIdCard, true,mLock_param.getId_card_set(),mLock_param.getCtl_uname());
 							Lock_Task_SQL.insertLock_Ctl_Log_Table(pool, tmp_log);
 						} else {
 							mLock_param.setOp_cmd(ElectLock_ComBase.CMD_Fail);
-							tmp_log = new ElectLock_Ctl_Log(client_id, ElectLock_ComBase.CtlType_AddIdCard, false,mLock_param.getId_card_set(),mLock_param.getCtl_uname());
+							tmp_log = new ElectLock_Ctl_Log(mLock_param.getLock_id(), ElectLock_ComBase.CtlType_AddIdCard, false,mLock_param.getId_card_set(),mLock_param.getCtl_uname());
 							Lock_Task_SQL.insertLock_Ctl_Log_Table(pool, tmp_log);
 						}
 					}else if(mLock_param.getOp_cmd() == ElectLock_ComBase.CMD_RemoveIdCard) {
 						//鍙栨秷ID鍗℃巿鏉�
-						mRtu_Tx.mkBusRtu(MyModBusRtu.CMD_TYPE_WRITE_MULTY, ElectLock_ComBase.LOCK_Clear_ID_AUTH_ADDR, ElectLock_ComBase.RegCount_Double);
+						mRtu_Tx.mkBusRtu((mLock_param.getLockAddr()%255),MyModBusRtu.CMD_TYPE_WRITE_MULTY, ElectLock_ComBase.LOCK_Clear_ID_AUTH_ADDR, ElectLock_ComBase.RegCount_Double);
 						if(SocketComm(mRtu_Tx, ComBase.mkInt32Buffer(mLock_param.getId_card_set()))) {
 							mLock_param.setOp_cmd(ElectLock_ComBase.CMD_RemoveIdCard_Ack);
-							tmp_log = new ElectLock_Ctl_Log(client_id, ElectLock_ComBase.CtlType_RemoveIdCard, true,mLock_param.getId_card_set(),mLock_param.getCtl_uname());
+							tmp_log = new ElectLock_Ctl_Log(mLock_param.getLock_id(), ElectLock_ComBase.CtlType_RemoveIdCard, true,mLock_param.getId_card_set(),mLock_param.getCtl_uname());
 							Lock_Task_SQL.insertLock_Ctl_Log_Table(pool, tmp_log);
 						} else {
 							mLock_param.setOp_cmd(ElectLock_ComBase.CMD_Fail);
-							tmp_log = new ElectLock_Ctl_Log(client_id, ElectLock_ComBase.CtlType_RemoveIdCard, false,mLock_param.getId_card_set(),mLock_param.getCtl_uname());
+							tmp_log = new ElectLock_Ctl_Log(mLock_param.getLock_id(), ElectLock_ComBase.CtlType_RemoveIdCard, false,mLock_param.getId_card_set(),mLock_param.getCtl_uname());
 							Lock_Task_SQL.insertLock_Ctl_Log_Table(pool, tmp_log);
+						}
+					}else if(mLock_param.getOp_cmd() == ElectLock_ComBase.CMD_OpenBluetooth) {
+						//寮�鍚摑鐗�
+						mRtu_Tx.mkBusRtu((mLock_param.getLockAddr()%255),MyModBusRtu.CMD_TYPE_WRITE_STD, ElectLock_ComBase.LOCK_SET_Bluetooth_ADDR, ElectLock_ComBase.RegCount_Sigle);
+						System.out.println("mLock_param.getId_card_set():"+mLock_param.getId_card_set());
+						if(SocketComm(mRtu_Tx, ComBase.mkUInt16Buffer(ElectLock_ComBase.Lock_Bluetooth_Open))) {
+							mLock_param.setOp_cmd(ElectLock_ComBase.CMD_OpenBluetooth_Ack);
+							//tmp_log = new ElectLock_Ctl_Log(mLock_param.getLock_id(), ElectLock_ComBase.CtlType_BluetoothOpen, true,0,mLock_param.getCtl_uname());
+							//Lock_Task_SQL.insertLock_Ctl_Log_Table(pool, tmp_log);
+						} else {
+							mLock_param.setOp_cmd(ElectLock_ComBase.CMD_Fail);
+							//tmp_log = new ElectLock_Ctl_Log(mLock_param.getLock_id(), ElectLock_ComBase.CtlType_BluetoothOpen, false,0,mLock_param.getCtl_uname());
+							//Lock_Task_SQL.insertLock_Ctl_Log_Table(pool, tmp_log);
+						}
+					}else if(mLock_param.getOp_cmd() == ElectLock_ComBase.CMD_CloseBluetooth) {
+						//鍏抽棴钃濈墮
+						mRtu_Tx.mkBusRtu((mLock_param.getLockAddr()%255),MyModBusRtu.CMD_TYPE_WRITE_STD, ElectLock_ComBase.LOCK_SET_Bluetooth_ADDR, ElectLock_ComBase.RegCount_Sigle);
+						if(SocketComm(mRtu_Tx, ComBase.mkUInt16Buffer(ElectLock_ComBase.Lock_Bluetooth_Close))) {
+							mLock_param.setOp_cmd(ElectLock_ComBase.CMD_CloseBluetooth_Ack);
+							//tmp_log = new ElectLock_Ctl_Log(mLock_param.getLock_id(), ElectLock_ComBase.CtlType_BluetoothClose, true,0,mLock_param.getCtl_uname());
+							//Lock_Task_SQL.insertLock_Ctl_Log_Table(pool, tmp_log);
+						} else {
+							mLock_param.setOp_cmd(ElectLock_ComBase.CMD_Fail);
+							//tmp_log = new ElectLock_Ctl_Log(mLock_param.getLock_id(), ElectLock_ComBase.CtlType_BluetoothClose, false,0,mLock_param.getCtl_uname());
+							//Lock_Task_SQL.insertLock_Ctl_Log_Table(pool, tmp_log);
 						}
 					}
 					
@@ -162,31 +192,32 @@
 				}
 				
 				
-				if((runCount%16) == 0) {
+				if((runCount%(16/MaxLockCount)) == 0) {
 					//璇诲彇閿佸叿鐨勫疄鏃剁姸鎬�
-					mRtu_Tx.mkBusRtu(MyModBusRtu.CMD_TYPE_READ_INPUT, ElectLock_ComBase.LOCK_REAL_ADDR, ElectLock_State.Reg_Count_Real);
+					mRtu_Tx.mkBusRtu((mLock_State[NowLockIdx].getLockAddr()%255),MyModBusRtu.CMD_TYPE_READ_INPUT, ElectLock_ComBase.LOCK_REAL_ADDR, ElectLock_State.Reg_Count_Real);
 					if(SocketComm(mRtu_Tx, ByteBuffer.allocate(0))) {
-						Lock_Task_SQL.updateLock_Rt_Table(pool,client_id,mLock_State);
+						Lock_Task_SQL.updateLock_Rt_Table(pool,ele_lock[NowLockIdx].getLock_id(),mLock_State[NowLockIdx]);
 
-						Lock_Task_SQL.updateLock_Inf_Table(pool,ele_lock,mLock_State);
+						Lock_Task_SQL.updateLock_Inf_Table(pool,ele_lock[NowLockIdx],mLock_State[NowLockIdx]);
 						
 						//鏇存柊閿佸叿鐘舵��
-						ele_lock.lockRecordState.setLockState(mLock_State);
+						ele_lock[NowLockIdx].lockRecordState.setLockState(mLock_State[NowLockIdx]);
 						
-						if(mLock_State.isIDOpen()) {
-							String ctl_uname = Lock_Task_SQL.queryKeyInfByKeyNumberTable(pool,mLock_State.getLast_unlock_id());
-							ElectLock_Ctl_Log tmp_log = new ElectLock_Ctl_Log(client_id, ElectLock_ComBase.CtlType_IDCardOpen, true,mLock_State.getLast_unlock_id(),ctl_uname);
+						if(mLock_State[NowLockIdx].isIDOpen()) {
+//							String ctl_uname = Lock_Task_SQL.queryKeyInfByKeyNumberTable(pool,mLock_State[NowLockIdx].getLast_unlock_id());
+							String ctl_uname = "";
+							ElectLock_Ctl_Log tmp_log = new ElectLock_Ctl_Log(mLock_State[NowLockIdx].getLock_id(), ElectLock_ComBase.CtlType_IDCardOpen, true,mLock_State[NowLockIdx].getLast_unlock_id(),ctl_uname);
 							Lock_Task_SQL.insertLock_Ctl_Log_Table(pool, tmp_log);
-							mLock_State.setIDOpen(false);
+							mLock_State[NowLockIdx].setIDOpen(false);
 							tmp_log = null;
 						}
 						
 						plat_model =  Lock_Task_SQL.querySystemLockMode(pool);
 						if(plat_model != ElectLock_ComBase.CMD_Fail) {
-							if(plat_model != mLock_State.getWorkmodel()) {
-								logger.info("LockID:"+client_id + " Start change Model :");
+							if(plat_model != mLock_State[NowLockIdx].getWorkmodel()) {
+								logger.info("LockID:"+mLock_State[NowLockIdx].getLock_id() + " Start change Model :");
 								
-								mRtu_Tx.mkBusRtu(MyModBusRtu.CMD_TYPE_WRITE_STD, ElectLock_ComBase.LOCK_SET_Model_ADDR, ElectLock_ComBase.RegCount_Sigle);
+								mRtu_Tx.mkBusRtu((mLock_State[NowLockIdx].getLockAddr()%255),MyModBusRtu.CMD_TYPE_WRITE_STD, ElectLock_ComBase.LOCK_SET_Model_ADDR, ElectLock_ComBase.RegCount_Sigle);
 								if(SocketComm(mRtu_Tx, ComBase.mkUInt16Buffer(plat_model))) {
 									//杩滅▼璁剧疆閿佸叿鍦ㄧ绾挎ā寮忓悗鏈�澶氶噸鍚澶�3娆�
 									for(int k = 0 ;k < 3;k++) {
@@ -201,64 +232,69 @@
 							}
 						}
 					}
+					
+					NowLockIdx ++;
+					if(NowLockIdx >= MaxLockCount) {
+						NowLockIdx = 0;
+					}
 				}
 				
-				List<ElectLock_AuthIdcard> batch_auth = Lock_Task_SQL.queryAuth_Idcard_Table(pool,client_id);
-				if(batch_auth.size() > 0) {
-					logger.info("寮�濮嬫壒閲忔巿鏉僆D鍗�,ID鏁伴噺锛�" + batch_auth.size());
-					for(int k = 0; k < batch_auth.size() ; k++) {
-						ElectLock_AuthIdcard tmp_auth = batch_auth.get(k);
-						ElectLock_Ctl_Log tmp_log = null;
-						try {
-							int keyNumber = Integer.parseInt(tmp_auth.key_number.trim());
-							if(tmp_auth.state == ElectLock_AuthIdcard.AuthType_ReMove) {
-								//鍙栨秷ID鍗℃巿鏉�
-								mRtu_Tx.mkBusRtu(MyModBusRtu.CMD_TYPE_WRITE_MULTY, ElectLock_ComBase.LOCK_Clear_ID_AUTH_ADDR, ElectLock_ComBase.RegCount_Double);
-								if(SocketComm(mRtu_Tx, ComBase.mkInt32Buffer(keyNumber))) {
-									tmp_auth.auth_result = ElectLock_ComBase.Auth_Success;
-									tmp_log = new ElectLock_Ctl_Log(client_id, ElectLock_ComBase.CtlType_RemoveIdCard, true,keyNumber,tmp_auth.ctl_uname);
-									Lock_Task_SQL.insertLock_Ctl_Log_Table(pool, tmp_log);
-								} else {
-									tmp_log = new ElectLock_Ctl_Log(client_id, ElectLock_ComBase.CtlType_RemoveIdCard, false,keyNumber,tmp_auth.ctl_uname);
-									Lock_Task_SQL.insertLock_Ctl_Log_Table(pool, tmp_log);
-								}
-							}else if(tmp_auth.state == ElectLock_AuthIdcard.AuthType_Add) {
-								//娣诲姞鎺堟潈
-								mRtu_Tx.mkBusRtu(MyModBusRtu.CMD_TYPE_WRITE_MULTY, ElectLock_ComBase.LOCK_Add_ID_AUTH_ADDR, ElectLock_ComBase.RegCount_Double);
-								if(SocketComm(mRtu_Tx, ComBase.mkInt32Buffer(keyNumber))) {
-									tmp_auth.auth_result = ElectLock_ComBase.Auth_Success;
-									tmp_log = new ElectLock_Ctl_Log(client_id, ElectLock_ComBase.CtlType_AddIdCard, true,keyNumber,tmp_auth.ctl_uname);
-									Lock_Task_SQL.insertLock_Ctl_Log_Table(pool, tmp_log);
-								} else {
-									tmp_log = new ElectLock_Ctl_Log(client_id, ElectLock_ComBase.CtlType_AddIdCard, false,keyNumber,tmp_auth.ctl_uname);
-									Lock_Task_SQL.insertLock_Ctl_Log_Table(pool, tmp_log);
-								}
-							}
-						} catch (Exception e) {
-							tmp_auth.auth_result = ElectLock_ComBase.Auth_Fail;
-						} finally {
-							tmp_log = null;
-						}
-						Lock_Task_SQL.moveAuth_Idcard_Table(pool, tmp_auth);
-					}
-					
-				}
-				batch_auth = null;
+//				List<ElectLock_AuthIdcard> batch_auth = Lock_Task_SQL.queryAuth_Idcard_Table(pool,client_id);
+//				if(batch_auth.size() > 0) {
+//					logger.info("寮�濮嬫壒閲忔巿鏉僆D鍗�,ID鏁伴噺锛�" + batch_auth.size());
+//					for(int k = 0; k < batch_auth.size() ; k++) {
+//						ElectLock_AuthIdcard tmp_auth = batch_auth.get(k);
+//						ElectLock_Ctl_Log tmp_log = null;
+//						try {
+//							int keyNumber = Integer.parseInt(tmp_auth.key_number.trim());
+//							if(tmp_auth.state == ElectLock_AuthIdcard.AuthType_ReMove) {
+//								//鍙栨秷ID鍗℃巿鏉�
+//								mRtu_Tx.mkBusRtu(MyModBusRtu.CMD_TYPE_WRITE_MULTY, ElectLock_ComBase.LOCK_Clear_ID_AUTH_ADDR, ElectLock_ComBase.RegCount_Double);
+//								if(SocketComm(mRtu_Tx, ComBase.mkInt32Buffer(keyNumber))) {
+//									tmp_auth.auth_result = ElectLock_ComBase.Auth_Success;
+//									tmp_log = new ElectLock_Ctl_Log(client_id, ElectLock_ComBase.CtlType_RemoveIdCard, true,keyNumber,tmp_auth.ctl_uname);
+//									Lock_Task_SQL.insertLock_Ctl_Log_Table(pool, tmp_log);
+//								} else {
+//									tmp_log = new ElectLock_Ctl_Log(client_id, ElectLock_ComBase.CtlType_RemoveIdCard, false,keyNumber,tmp_auth.ctl_uname);
+//									Lock_Task_SQL.insertLock_Ctl_Log_Table(pool, tmp_log);
+//								}
+//							}else if(tmp_auth.state == ElectLock_AuthIdcard.AuthType_Add) {
+//								//娣诲姞鎺堟潈
+//								mRtu_Tx.mkBusRtu(MyModBusRtu.CMD_TYPE_WRITE_MULTY, ElectLock_ComBase.LOCK_Add_ID_AUTH_ADDR, ElectLock_ComBase.RegCount_Double);
+//								if(SocketComm(mRtu_Tx, ComBase.mkInt32Buffer(keyNumber))) {
+//									tmp_auth.auth_result = ElectLock_ComBase.Auth_Success;
+//									tmp_log = new ElectLock_Ctl_Log(client_id, ElectLock_ComBase.CtlType_AddIdCard, true,keyNumber,tmp_auth.ctl_uname);
+//									Lock_Task_SQL.insertLock_Ctl_Log_Table(pool, tmp_log);
+//								} else {
+//									tmp_log = new ElectLock_Ctl_Log(client_id, ElectLock_ComBase.CtlType_AddIdCard, false,keyNumber,tmp_auth.ctl_uname);
+//									Lock_Task_SQL.insertLock_Ctl_Log_Table(pool, tmp_log);
+//								}
+//							}
+//						} catch (Exception e) {
+//							tmp_auth.auth_result = ElectLock_ComBase.Auth_Fail;
+//						} finally {
+//							tmp_log = null;
+//						}
+//						Lock_Task_SQL.moveAuth_Idcard_Table(pool, tmp_auth);
+//					}
+//					
+//				}
+//				batch_auth = null;
+				
 				
 				runCount ++;
 				if(runCount > 99999900) {
 					runCount = 0;
 				}
-				Thread.sleep(200);
+				Thread.sleep(100);
 			}
 		} catch (Exception e) {
 			e.printStackTrace();
 		} finally {
-			logger.info("璁惧鏂紑杩炴帴锛欴evIp:" + client_ip + " DevId:" + mLock_State.getLockDevId());
-			mLock_State.setLock_online(0);
+			logger.info("璁惧鏂紑杩炴帴锛欴evIp:" + client_ip + " DevId:" + client_id/10000 + "XXXX");
 			//閲嶇疆mac鍦板潃浼氬奖鍝峚pp寮�濮嬶紝寰呭畾閫昏緫
 			//mLock_State.resetLockMacAddr();
-			Lock_Task_SQL.updateLock_Inf_Table(pool,ele_lock,mLock_State);
+			Lock_Task_SQL.updateLock_OffLineTable(pool,client_id);
 		}
 
 		if(null != tmp_socket) {
@@ -283,6 +319,8 @@
 			case ElectLock_ComBase.CMD_SetLockAddr:					//璁剧疆閿佸叿鍦板潃
 			case ElectLock_ComBase.CMD_AddIdCard:					//娣诲姞鎺堟潈鍗D
 			case ElectLock_ComBase.CMD_RemoveIdCard:				//绉婚櫎鎺堟潈鍗D
+			case ElectLock_ComBase.CMD_OpenBluetooth:				//寮�鍚摑鐗�
+			case ElectLock_ComBase.CMD_CloseBluetooth:				//鍏抽棴钃濈墮
 				isCheckOk = true;break;
 			default :
 				isCheckOk = false;break;
@@ -297,51 +335,35 @@
 	private boolean checkDevceType() {
 		boolean isCheckOk = false;
 		logger.info("DevIp: " + client_ip + " Check Lock Type:" + config.getCommType());
-		for(int k = 0 ;k < 3;k++) {
-			try {
-				if(config.getCommType().toUpperCase().equals("IP")) {
-					//閫氳繃IP鍦板潃璇嗗埆閿佸叿
-					for(int m = 0; m < GB_Lock_Array.getIteamCount();m++) {
-						ElectLock_Inf tmp_lock = GB_Lock_Array.getIteam(m);
-						if(tmp_lock.getLock_ip().equals(client_ip)) {
-							ele_lock = tmp_lock;
-							mLock_State = ele_lock.lockState;
-							client_id = ele_lock.getLock_id();
-							mLock_State.setClient_ip(client_ip);
-							isCheckOk = true;
+		MaxLockCount = 0 ;			//杩炴帴閿佸叿鏁伴噺
+		try {
+			//閫氳繃IP鍦板潃璇嗗埆閿佸叿
+			for(int m = 0; m < GB_Lock_Array.getIteamCount();m++) {
+				ElectLock_Inf tmp_lock = GB_Lock_Array.getIteam(m);
+				if(tmp_lock.getLock_ip().equals(client_ip)) {
+					if(client_id == 0) {
+						client_id = tmp_lock.getLock_id();
+						isCheckOk = true;
+					}else {
+						if((client_id/10000) != (tmp_lock.getLock_id()/10000)) {
+							continue;
 						}
-					}
-				}else {
-					//閫氳繃ID鍙疯瘑鍒攣鍏�
-					mRtu_Tx.mkBusRtu(MyModBusRtu.CMD_TYPE_READ_INPUT, ElectLock_ComBase.LOCK_REAL_ADDR, ElectLock_State.Reg_Count_Real);
-					if(SocketComm(mRtu_Tx, ByteBuffer.allocate(0))){
-						//System.err.println(mLock_State);
-						//System.out.println("mLock_State.getLockDevId():"+mLock_State.getLockDevId());
-						
-						for(int m = 0; m < GB_Lock_Array.getIteamCount();m++) {
-							ElectLock_Inf tmp_lock = GB_Lock_Array.getIteam(m);
-							if(tmp_lock.getLock_id() == mLock_State.getLockDevId()) {
-								
-								ele_lock = tmp_lock;
-								mLock_State = ele_lock.lockState;
-								client_id = ele_lock.getLock_id();
-								mLock_State.setClient_ip(client_ip);
-								isCheckOk = true;
-							}
-						}
-					}
+					}					
+					ele_lock[MaxLockCount] = tmp_lock;
+					mLock_State[MaxLockCount] = ele_lock[MaxLockCount].lockState;
+					mLock_State[MaxLockCount].setClient_ip(client_ip);
+					MaxLockCount ++;
 				}
-				if(isCheckOk) {
-					break;
-				}
-				
-				Thread.sleep(20);
-			} catch (InterruptedException e) {
-				logger.error(e.toString(),e);
 			}
+			
+		} catch (Exception e) {
+			logger.error(e.toString(),e);
 		}
 		if(isCheckOk) {
-			logger.info("DevIp: " + client_ip + "璇嗗埆鎴愬姛锛汱ockId:" + client_id);
+			logger.info("DevIp: " + client_ip + "璇嗗埆鎴愬姛锛汱ockId:" + client_id + "\t 閿佸叿鏁伴噺锛�" + MaxLockCount);
+			if(MaxLockCount == 0) {
+				isCheckOk = false;
+			}
 		}else {
 			logger.info("DevIp: " + client_ip + "璇嗗埆澶辫触 锛侊紒锛�");
 		}
@@ -408,11 +430,11 @@
                         //bytebuffer_for_socket_RX.put((byte)in.read());
                     } else {
                         rx_read_time_out++;
-                        if(/*(bytebuffer_for_socket_RX.position() >= 20) && */(rx_read_time_out>100)){
+                        if((bytebuffer_for_socket_RX.position() >= 8) && (rx_read_time_out>10)){
                             //	res = true;
                             break;
                         }
-                        if(rx_read_time_out > 800) {
+                        if(rx_read_time_out > 20) {
                             break;
                         }
                     }
@@ -445,24 +467,27 @@
                 if(cipher_buf.length > MyModBusRtu.BYTE_LEN && true == getDataFromCommBuf(cipher_buf,rtu)) {
                 	res_t = true; 
                 	
-                	mLock_State.addCommCount();
-                	mLock_State.clearErrorCount();
+                	mLock_State[NowLockIdx].addCommCount();
+                	mLock_State[NowLockIdx].clearErrorCount();
+                	clearErrorCount();
                 } else {
                 	//System.err.println("DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD");
                 	
                 	res_t = false;
                 	
-                	mLock_State.addErrorCount();
+                	mLock_State[NowLockIdx].addErrorCount();
+                	addErrorCount();
                 }
             } else {
                 //System.out.println(this.getName() + "-------socket  寮傚父鍏抽棴-------" + Com.getNowTimeWithAt());
             	S_thread_run_flag = false;
             }
         } catch (IOException | InterruptedException e) {
-        	this.mLock_State.addErrorCount();
+        	this.mLock_State[NowLockIdx].addErrorCount();
+        	addErrorCount();
         } finally {
-        	if(this.mLock_State.getErr_count() > 4) {
-        		logger.info("璁惧锛欴evIp:" + client_ip + " DevId:" + client_id + "閫氫俊瓒呮椂鍗冲皢鏂紑杩炴帴...");
+        	if(getErrorCount() > 6) {
+        		logger.info("璁惧锛欴evIp:" + client_ip + " DevId:" + client_id/10000 + "XXXX 閫氫俊瓒呮椂鍗冲皢鏂紑杩炴帴...");
         		S_thread_run_flag = false;
         	}
         }
@@ -481,7 +506,7 @@
 		if(MyModBusRtu.CMD_TYPE_READ_INPUT == mRtu_Rx.Cmd) {
 			if(ElectLock_ComBase.LOCK_REAL_ADDR == rtu.reg_addr) {
 				//璇诲彇瀹炴椂鏁版嵁
-				if(mLock_State.putByteBuffer(buff)) {
+				if(mLock_State[NowLockIdx].putByteBuffer(buff)) {
 					isSuccess = true;					
 				}
 			}
@@ -490,19 +515,19 @@
 				//娓呯┖鎵�鏈夋巿鏉冨崱
 				if(ElectLock_ComBase.Control_Value == mRtu_Rx.result) {
 					isSuccess = true;
-					logger.info("LockId:" + client_id + " LockIp:"+client_ip + "娓呯┖鎵�鏈夋巿鏉冨崱鎴愬姛");
+					logger.info("LockId:" + mLock_param.getLock_id() + " LockIp:"+client_ip + "娓呯┖鎵�鏈夋巿鏉冨崱鎴愬姛");
 				}
 			}else if(ElectLock_ComBase.LOCK_REMOTE_OPEN_ADDR == mRtu_Rx.reg_addr) {
 				//杩滅▼寮�閿�
 				if(ElectLock_ComBase.Control_Value == mRtu_Rx.result) {
 					isSuccess = true;
-					logger.info("LockId:" + client_id + " LockIp:"+client_ip + " 杩滅▼寮�閿佹垚鍔�");
+					logger.info("LockId:" + mLock_param.getLock_id() + " LockIp:"+client_ip + " 杩滅▼寮�閿佹垚鍔�");
 				}
 			}else if(ElectLock_ComBase.LOCK_RESTART_ADDR == mRtu_Rx.reg_addr) {
 				//杩滅▼閲嶅惎
 				if(ElectLock_ComBase.Control_Value == mRtu_Rx.result) {
 					isSuccess = true;
-					logger.info("LockId:" + client_id + " LockIp:"+client_ip + " 杩滅▼閲嶅惎閿佸叿鎴愬姛");
+					logger.info("LockId:" + mLock_param.getLock_id() + " LockIp:"+client_ip + " 杩滅▼閲嶅惎閿佸叿鎴愬姛");
 				}
 			}
 		}else if(MyModBusRtu.CMD_TYPE_WRITE_STD == mRtu_Rx.Cmd) {
@@ -510,14 +535,35 @@
 				//璁剧疆閿佸叿鍦板潃
 				if(mLock_param.getLock_addr_set() == mRtu_Rx.result) {
 					isSuccess = true;
-					logger.info("LockId:" + client_id + " LockIp:"+client_ip + " 璁剧疆閿佸叿鍦板潃锛�" + mLock_param.getLock_addr_set() + "鎴愬姛");
+					logger.info("LockId:" + mLock_param.getLock_id() + " LockIp:"+client_ip + " 璁剧疆閿佸叿鍦板潃锛�" + mLock_param.getLock_addr_set() + "鎴愬姛");
 				}
 			}else if(ElectLock_ComBase.LOCK_SET_Model_ADDR == mRtu_Rx.reg_addr) {
 				//璁剧疆閿佸叿宸ヤ綔妯″紡
 				if(plat_model == mRtu_Rx.result) {
 					isSuccess = true;
-					logger.info("LockId:" + client_id + " LockIp:"+client_ip + " 璁剧疆閿佸叿妯″紡锛�" + plat_model + "鎴愬姛");
+					logger.info("LockId:" + mLock_param.getLock_id() + " LockIp:"+client_ip + " 璁剧疆閿佸叿妯″紡锛�" + plat_model + "鎴愬姛");
 				}
+			}else if(ElectLock_ComBase.LOCK_SET_Model_ADDR == mRtu_Rx.reg_addr) {
+				//璁剧疆閿佸叿宸ヤ綔妯″紡
+				if(plat_model == mRtu_Rx.result) {
+					isSuccess = true;
+					logger.info("LockId:" + mLock_param.getLock_id() + " LockIp:"+client_ip + " 璁剧疆閿佸叿妯″紡锛�" + plat_model + "鎴愬姛");
+				}
+			}else if(ElectLock_ComBase.LOCK_SET_Bluetooth_ADDR == mRtu_Rx.reg_addr) {
+				//璁剧疆閿佸叿钃濈墮鐘舵��
+				if(mLock_param.getOp_cmd() == ElectLock_ComBase.CMD_OpenBluetooth) {
+					if(mRtu_Rx.result == ElectLock_ComBase.Lock_Bluetooth_Open) {
+						isSuccess = true;
+						logger.info("LockId:" + mLock_param.getLock_id() + " LockIp:"+client_ip + " 璁剧疆寮�鍚攣鍏疯摑鐗欐垚鍔�");
+					}
+				}else if(mLock_param.getOp_cmd() == ElectLock_ComBase.CMD_CloseBluetooth) {
+					if(mRtu_Rx.result == ElectLock_ComBase.Lock_Bluetooth_Close) {
+						isSuccess = true;
+						logger.info("LockId:" + mLock_param.getLock_id() + " LockIp:"+client_ip + " 璁剧疆閿佸叿鍏抽棴钃濈墮鎴愬姛");
+					}
+				}
+				
+				
 			}
 			
 			
@@ -552,4 +598,26 @@
 		buffer.flip();
 		return buffer.array();
 	}
+	
+	/**
+	 * 	绱姞閿欒璁℃暟
+	 */
+	public void addErrorCount() {
+		ErrorCount ++;
+	}
+	
+	public void clearErrorCount() {
+		ErrorCount = 0;
+	}
+	
+	public int getErrorCount() {
+		return ErrorCount;
+	}
+	
+	public static void main(String[] args) {
+		for(int k = 1;k<1000;k++) {
+			System.out.println(k%(16/k));
+		}
+	}
+	
 }

--
Gitblit v1.9.1