From f26157e748d7ed28ee1149c6e9bc1672b9146f2b Mon Sep 17 00:00:00 2001
From: Administrator <1525436766@qq.com>
Date: 星期三, 25 八月 2021 09:37:12 +0800
Subject: [PATCH] V1.104 2021-08-24 lijun 	1.新增远程下载充放电一体机历史数据文件以及转储到数据库

---
 BattMonitor_FGCD-A059NT/src/com/dev/fgcd/comm/FGCD_SocketClient_Thread.java |   87 +++++++++++++++++++++++++++----------------
 1 files changed, 55 insertions(+), 32 deletions(-)

diff --git a/BattMonitor_FGCD-A059NT/src/com/dev/fgcd/comm/FGCD_SocketClient_Thread.java b/BattMonitor_FGCD-A059NT/src/com/dev/fgcd/comm/FGCD_SocketClient_Thread.java
index 0bf16c5..cb89c4a 100644
--- a/BattMonitor_FGCD-A059NT/src/com/dev/fgcd/comm/FGCD_SocketClient_Thread.java
+++ b/BattMonitor_FGCD-A059NT/src/com/dev/fgcd/comm/FGCD_SocketClient_Thread.java
@@ -49,6 +49,7 @@
     private FGCD_SysState sysState;             	//系统状态
     private FGCD_Cmd m_FBS_Cmd = new FGCD_Cmd();
     public FGCD_TestFBOFile fboFile;				//历史数据文件
+
     
 
     private ByteBuffer bytebuffer_for_socket_RX = ByteBuffer.allocate(1500);
@@ -64,6 +65,10 @@
     private int errcount = 0;
     private int DevReadCount = 0;
     private int m_BattMonCount;
+    
+    private boolean readMonData = false;		//是否立即读取单体数据  记录历史数据时立即读取单体数据
+    private boolean readCharData = false;		//是否立即读取放电数据  记录历史数据时立即读取放电数据
+    
     
     
     public FGCD_SocketClient_Thread(MysqlConnPool m_ConnPool,BattData_RT_Array m_Data,Socket socket){
@@ -113,15 +118,15 @@
 					}*/
 					
 					if(true == reg_in_st) {
-						logger.trace("devid:" + m_StatAndParam.check_dev_id
+						logger.info("devid:" + m_StatAndParam.check_dev_id
 								+ ", 数据库中匹配devid成功!!!!!, IP:" + socket.getInetAddress().getHostAddress());
 					} else {
-						logger.trace("devid:" + m_StatAndParam.check_dev_id
+						logger.info("devid:" + m_StatAndParam.check_dev_id
 								+ ", 数据库中未找到匹配的devid, IP:" + socket.getInetAddress().getHostAddress());
 						break;
 					}
 				} else {
-					logger.trace(this.getName() + " initFGCD_A059Comm() devid:" + m_StatAndParam.check_dev_id
+					logger.info(this.getName() + " initFGCD_A059Comm() devid:" + m_StatAndParam.check_dev_id
 								+ ", 识别FGCD_A059设备失败 ");
 					reg_in_st = false;
 				}
@@ -199,16 +204,20 @@
 					if(FGCD_ComBase.CMD_GetDischargeParm == m_StatAndParam.op_cmd) {
 						//读取放电参数
 						SocketComm(FGCD_ComBase.CMD_GETDISCHARGEPARAM, ByteBuffer.allocate(0));
-						logger.warn("DevId:" + m_StatAndParam.dev_id + " 读取放电参数");
+						//logger.info("DevId:" + m_StatAndParam.dev_id + " 读取放电参数");
 					}     
 					
 					if(FGCD_ComBase.CMD_SetDischargeParm == m_StatAndParam.op_cmd) {
 						//设置放电参数
 						FGCD_BattTestParam tmp_set_pm = testParam.clone();
 						FGCD_SocketClient_Thread_SQL.queryFbs9100SetParamBydev_id(m_ConnPool, m_StatAndParam, tmp_set_pm);
-						System.out.println(tmp_set_pm);
+						//System.out.println(tmp_set_pm);
 						logger.warn("DevId:" + m_StatAndParam.dev_id + " 设置放电参数"+tmp_set_pm);
-						SocketComm(FGCD_ComBase.CMD_SETDISCHARGEPARAM, tmp_set_pm.getByteBuffer());
+						if(SocketComm(FGCD_ComBase.CMD_SETDISCHARGEPARAM, tmp_set_pm.getByteBuffer())) {
+							//更新当前活化次数
+							sysState.hhCount = tmp_set_pm.cycleTimes;
+							testParam = tmp_set_pm.clone();
+						}
 						//tmp_set_pm = null;
 					}
 					
@@ -270,15 +279,17 @@
 						SocketComm(fboFile.createCmd(FGCD_ComBase.CMD_GETFILELIST), ByteBuffer.allocate(0));						
 					}else if(FGCD_ComBase.CMD_DownLoadFBDFile == fboFile.op_cmd) {
 						//开始下载文件
-						
-					}
-					
-					
+						FGCD_TestDataDownLoad download = new FGCD_TestDataDownLoad(fboFile, socket,m_ConnPool);
+						fboFile.initDownLoadState();
+						FGCD_SocketClient_Thread_SQL.updateFgcd_Filedownload_TableCmdByDevId(m_ConnPool, fboFile);
+						download.downLoadTestData();
+					}					
 				}
 				if(DevReadCount %10 == 0) {
 					//logger.info("获取单体数据");
-					SocketComm(FGCD_ComBase.CMD_GETBATTDATA, ByteBuffer.allocate(0));
-					
+					FGCD_Cmd tmp_cmd = new FGCD_Cmd(FGCD_ComBase.CMD_GETBATTDATA);
+					SocketComm(tmp_cmd, ByteBuffer.allocate(0));
+					tmp_cmd = null;
 				}
 				
 				if(DevReadCount %12 == 0) {
@@ -300,7 +311,6 @@
      *	 向指定的socket通道发送数据,以及接收数据
      * @return
      */
-
     public boolean SocketComm(int cmd,ByteBuffer byteBuffer)
     {
         boolean res_t = false;
@@ -651,7 +661,6 @@
         return byte_rest;
     }
     /*********************************************************************************************/
-
    
     /*********************************************************************************************/
     public Boolean getDataFromCommBuf(final byte[] bytes)
@@ -668,8 +677,6 @@
             if(errcode > 0) {
             	logger.error(this.getName(), "FGCD_Cmd.CMD:"+m_FBS_Cmd.CMD+"\t RTN:"+errcode);
             }
-            sysState.dev_captest_stop_type = m_FBS_Cmd.Alarm;
-            sysState.dev_workstate = m_FBS_Cmd.WorkState;
             //sysState.dev_workstate = 2;
             //---------------------  心跳包测试    ----------------------------------
             if(FGCD_ComBase.CMD_HEARTBEAT == m_FBS_Cmd.CMD) {
@@ -722,12 +729,13 @@
             }
             //---------------------  获取放电参数    ----------------------------------------------
             else if(FGCD_ComBase.CMD_GETDISCHARGEPARAM == m_FBS_Cmd.CMD) {
-                //logger.info(TAG, "getDataFromCommBuf: 获取放电参数成功" );
                 if(testParam.putByteBuffer(bf)) {
                 	m_StatAndParam.op_cmd_ack = FGCD_ComBase.CMD_GetDischargeParmAck;
                 	FGCD_SocketClient_Thread_SQL.updateFbs9100SetParamBydev_id(m_ConnPool, m_StatAndParam, testParam);
                     isSuccess = true;
+                    sysState.hhCount = testParam.cycleTimes;			//更新当前活化总次数
                     //System.out.println(testParam);
+                    logger.trace("getDataFromCommBuf: 获取放电参数成功" + testParam );
                 }
             }
             //---------------------- 设置放电参数 --------------------------------------------------
@@ -737,7 +745,7 @@
                 	m_StatAndParam.op_cmd_ack = FGCD_ComBase.CMD_SetDischargeParmAck;
                 	FGCD_SocketClient_Thread_SQL.updateFbs9100SetParamCmdAckBydev_id(m_ConnPool,m_StatAndParam);
                     isSuccess = true;
-                    //System.out.println("设置参数成功");
+                    logger.warn("getDataFromCommBuf: 设置放电参数成功" + testParam );
                 }
             }
             //---------------------  启动放电    ----------------------------------
@@ -748,7 +756,7 @@
                 	FGCD_SocketClient_Thread_SQL.updateFbs9100SetParamCmdAckBydev_id(m_ConnPool,m_StatAndParam);
                 	
                     isSuccess = true;
-                    System.err.println("启动放电成功");
+                    logger.warn("getDataFromCommBuf: 启动放电成功");
                 }
             }
             //---------------------  放电暂停    ----------------------------------
@@ -758,7 +766,7 @@
                 	FGCD_SocketClient_Thread_SQL.updateFbs9100SetParamCmdAckBydev_id(m_ConnPool,m_StatAndParam);
                 	
                     isSuccess = true;
-                    //System.out.println("暂停放电成功");
+                    logger.warn("dev_id:"+m_StatAndParam.dev_id+"\t getDataFromCommBuf: 暂停放电成功");
                 }
             }
             //---------------------  停止放电    ----------------------------------
@@ -767,16 +775,19 @@
                 	m_StatAndParam.op_cmd_ack = FGCD_ComBase.CMD_StopDischargeAck;
                 	FGCD_SocketClient_Thread_SQL.updateFbs9100SetParamCmdAckBydev_id(m_ConnPool,m_StatAndParam);
                     isSuccess = true;
-                    //System.out.println("停止放电成功");
+                    logger.warn("dev_id:"+m_StatAndParam.dev_id+"\t getDataFromCommBuf: 停止放电成功");
                 }
             }
             //---------------------  获取放电数据    ----------------------------------
             else if(FGCD_ComBase.CMD_GETDISCHARGEDATA == m_FBS_Cmd.CMD) {
                 if(sysState.putByteBuffer(bf)) {
+                	//读取当前设备的停止原因和当前工作状态
+                    sysState.dev_captest_stop_type = m_FBS_Cmd.Alarm;
+                    sysState.dev_workstate = m_FBS_Cmd.WorkState;
+                	sysState.hhstate = m_FBS_Cmd.Db2;		//活化状态
                 	for(int i=0;i<sysState.montmps.length;i++) {
                 		vc_data.tmp[i] = sysState.montmps[i];
-                	}
-                	
+                	}                	
                 	FGCD_SocketClient_Thread_SQL.updateFbs9100StateOnlyByDev_Id(m_ConnPool, m_StatAndParam);;
                     isSuccess = true;
                 }
@@ -789,7 +800,7 @@
                 	m_StatAndParam.op_cmd_ack = FGCD_ComBase.CMD_StartCharTestAck;
                 	FGCD_SocketClient_Thread_SQL.updateFbs9100SetParamCmdAckBydev_id(m_ConnPool,m_StatAndParam);
                     isSuccess = true;
-                    //System.out.println("启动充电成功");
+                    logger.warn("dev_id:"+m_StatAndParam.dev_id+"\t getDataFromCommBuf: 启动充电成功");
                 }
             }
             //---------------------  暂停充电    ----------------------------------
@@ -798,7 +809,7 @@
                 	m_StatAndParam.op_cmd_ack = FGCD_ComBase.CMD_PauseCharTestAck;
                 	FGCD_SocketClient_Thread_SQL.updateFbs9100SetParamCmdAckBydev_id(m_ConnPool,m_StatAndParam);
                     isSuccess = true;
-                    //System.out.println("暂停充电成功");
+                    logger.warn("dev_id:"+m_StatAndParam.dev_id+"\t getDataFromCommBuf: 暂停充电成功");
                 }
             }
             //---------------------  停止充电    ----------------------------------
@@ -807,7 +818,7 @@
                 	m_StatAndParam.op_cmd_ack = FGCD_ComBase.CMD_StopCharTestAck;
                 	FGCD_SocketClient_Thread_SQL.updateFbs9100SetParamCmdAckBydev_id(m_ConnPool,m_StatAndParam);
                     isSuccess = true;
-                    //System.out.println("停止充电成功");
+                    logger.warn("dev_id:"+m_StatAndParam.dev_id+"\t getDataFromCommBuf: 停止充电成功");
                 }
             }
 
@@ -826,7 +837,7 @@
                 	//FGCD_SocketClient_Thread_SQL.updateFbs9100SetParamCmdAckBydev_id(m_ConnPool,m_StatAndParam);
                 	FGCD_SocketClient_Thread_SQL.updateClearAlarmState(m_ConnPool, m_StatAndParam, FGCD_ComBase.CMD_ClearSysAlarm_ACK);
                 	isSuccess = true;
-                    System.out.println("清除告警成功");
+                	logger.warn("dev_id:"+m_StatAndParam.dev_id+"\t 清除告警成功");
                 }
             }
             //---------------------  进入 Android控制   ----------------------------------
@@ -863,7 +874,7 @@
                 	m_StatAndParam.op_cmd_ack = FGCD_ComBase.CMD_StartHUOHUATestACK;
                 	FGCD_SocketClient_Thread_SQL.updateFbs9100SetParamCmdAckBydev_id(m_ConnPool,m_StatAndParam);
                     isSuccess = true;
-                    //System.out.println("启动活化测试成功");
+                    logger.warn("dev_id:"+m_StatAndParam.dev_id+"\t 启动活化测试成功");
                 }
             }else if(FGCD_ComBase.CMD_PAUSEHHTEST == m_FBS_Cmd.CMD) {
             	//暂停活化测试
@@ -871,7 +882,7 @@
             		m_StatAndParam.op_cmd_ack = FGCD_ComBase.CMD_PauseHUOHUATestACK;
                 	FGCD_SocketClient_Thread_SQL.updateFbs9100SetParamCmdAckBydev_id(m_ConnPool,m_StatAndParam);
                     isSuccess = true;
-                    //System.out.println("暂停活化测试成功");
+                    logger.warn("dev_id:"+m_StatAndParam.dev_id+"\t 暂停活化测试成功");
                 }            	
             }else if(FGCD_ComBase.CMD_STOPHHTEST == m_FBS_Cmd.CMD) {
             	//停止活化测试
@@ -879,7 +890,7 @@
             		m_StatAndParam.op_cmd_ack = FGCD_ComBase.CMD_StopHUOHUATestACK;
                 	FGCD_SocketClient_Thread_SQL.updateFbs9100SetParamCmdAckBydev_id(m_ConnPool,m_StatAndParam);
                     isSuccess = true;
-                    //System.out.println("停止活化测试成功");
+                    logger.warn("dev_id:"+m_StatAndParam.dev_id+"\t 停止活化测试成功");
                 }
             }else if(FGCD_ComBase.CMD_GETFILELIST == m_FBS_Cmd.CMD) {
             	//获取文件列表
@@ -918,7 +929,13 @@
     				logger.error(e.toString(), e);
     			}
     			int now_test_type = FGCD_ComBase.TestType_NULL;
-    			m_RTData[n].mTestData.test_stoptype = sys_state.dev_captest_stop_type;		//更新当前的停止原因
+    			//记录停止原因时数据处理
+    			if(sys_state.dev_captest_stop_type > 0x80) {
+    				m_RTData[n].mTestData.test_stoptype = sys_state.dev_captest_stop_type - 0x80;		//更新当前的停止原因    				
+    			}else {
+    				m_RTData[n].mTestData.test_stoptype = sys_state.dev_captest_stop_type;
+    			}
+    			int now_dev_workstate = 0;
     			if(FGCD_ComBase.WORK_STATE_DISTEST == sys_state.dev_workstate ||
     				(FGCD_ComBase.WORK_STATE_STOPDIS == sys_state.dev_workstate)){
     				vc_data.battcurr[n] = (-1)*Math.abs(vc_data.battcurr[n]);
@@ -930,6 +947,12 @@
     				//System.out.println("vc_data.battcurr[n]:"+vc_data.battcurr[n]);
     				now_test_type = FGCD_ComBase.TestType_Charge;
     			}
+    			now_dev_workstate = sys_state.dev_workstate;
+    			if(sys_state.hhstate > 0) {
+    				//设备当前状态为活化状态
+    				now_dev_workstate = FGCD_ComBase.WORK_STATE_HUOHUA;
+    				now_test_type = FGCD_ComBase.TestType_HuoHua;
+    			}
     			//--------------------- 再读取系统状态 ---------------------------------------//
 //    			if(((FBS9100_ComBase.SYS_STATE_STOPPED!=sys_state.dev_workstate) && ((n+1)==sys_state.TestGroupNum))
 //    				|| (FGCD_ComBase.WORK_STATE_STOPPED == sys_state.dev_workstate)) {
@@ -939,7 +962,7 @@
         			//--------------------------------------------------------------------------//
     				m_RTData[n].mTestData.setDevFBS9100S_WorkState(sys_state.dev_captest_stop_type, 
     																now_test_type,
-											    					sys_state.dev_workstate);
+											    					now_dev_workstate);
 //    			}
     			
     			//--------------------- 再读取端电压 -----------------------------------------//

--
Gitblit v1.9.1