From 802dca6731294c970e8adb81646ea7ecebf91fbd Mon Sep 17 00:00:00 2001
From: whyclj <1525436766@qq.com>
Date: 星期五, 22 十一月 2019 09:56:06 +0800
Subject: [PATCH] 编辑电池组信息时改变当前电池组线程状态,并且添加电池组充放电线程记录

---
 platforms/android/app/src/main/java/com/socket/BattTestDataRecordThread.java |  116 +++++++++++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 111 insertions(+), 5 deletions(-)

diff --git a/platforms/android/app/src/main/java/com/socket/BattTestDataRecordThread.java b/platforms/android/app/src/main/java/com/socket/BattTestDataRecordThread.java
index 749049b..698c88f 100644
--- a/platforms/android/app/src/main/java/com/socket/BattTestDataRecordThread.java
+++ b/platforms/android/app/src/main/java/com/socket/BattTestDataRecordThread.java
@@ -7,6 +7,7 @@
 
 import com.concentrator.Concentrator_State;
 import com.fgkj.dao.DBHelper;
+import com.sqlite_DaoHelper.SqliteHelper;
 import com.util.Com;
 
 import java.util.Date;
@@ -39,24 +40,67 @@
         Log.e(TAG,"run:BattTestDataRecordThread start at " + Com.getDateTimeFormat(new Date(),Com.DTF_YMDhms));
 
 
-        int nowTestType = Concentrator_State.WORKSTATE_FLOAT;           //褰撳墠璁板綍鐨勬祴璇曠被鍨�(褰撳墠鐢垫睜鐘舵��)
+        int nowTestType = BattDataThread.TESTTYPE_NULL;                 //褰撳墠璁板綍鐨勬祴璇曠被鍨�
+        int nowworkState = Concentrator_State.WORKSTATE_FLOAT;          //褰撳墠鐢垫睜缁勭殑鐘舵��
         Date lastRecordTime = new Date();                               //涓婁竴娆¤褰曠殑鏃堕棿
         boolean isStartRecord = false;                                  //鏄惁鏄柊鐨勬斁鐢佃褰�
-        int record_num = 0;                                             //璁板綍绗旀暟
+
 
         while(true){
             try {
                 if(isRecording){
                     //姝e湪璁板綍鍘嗗彶鍏呮斁鐢垫暟鎹�
+                    battData.state.record_time = new Date();
                     if(isStartRecord){
+                        battData.state.testStartTime = new Date();                                                  //娴嬭瘯寮�濮嬫椂闂�
+                        battData.state.test_type = nowTestType;                                                     //璁剧疆褰撳墠鐨勬祴璇曠被鍨�
+                        battData.state.testTimelong = 0;
+                        battData.state.test_record_count = queryMaxTestRecordCount(battData.battIndex,dbHelper);
+                        battData.state.record_num = 1;
 
+                        //鍒氬紑濮嬭褰曠殑绾跨▼
+                        insertBattTestDatainf(dbHelper,battData);
+
+                        lastRecordTime = new Date();
+                        isStartRecord = false;
                     }
+                    int testTimelong = (int)((battData.state.record_time.getTime() - battData.state.testStartTime.getTime())/1000);             //娴嬭瘯鏃堕暱
+                    battData.state.testTimelong = testTimelong;
+                    if(battData.state.battstate != nowworkState || !battData.isInstall || battData.loseTimeLong > 60*60){
+                        //褰撳墠鐢垫睜缁勭殑鐘舵�佸彉鍖�//褰撳墠鐢垫睜缁勫彉鎴愭湭瀹夎//閫氳瓒呮椂(1灏忔椂)
+                        isRecording = false;
+                    }
+                    int recordInterver = (int)Math.abs(new Date().getTime()-lastRecordTime.getTime())/1000;                     //璺濈涓婃璁板綍鏁版嵁鐨勬椂闀�
+                    if(recordInterver >= saveDataIntever || !isStartRecord){
+                        lastRecordTime = new Date();
+                        //鏀剧數缁撴潫鎴栬�呰褰曟椂闂村埌
+                        //璁板綍褰撳墠鐨勫厖鏀剧數璁板綍
+                        insertBattTestData(dbHelper,battData);
+                    }
+                    battData.state.record_num++;
 
                 }else{
                     //鏆傛棤璁板綍鍏呮斁鐢垫暟鎹�
+                    if(battData.state.battstate == Concentrator_State.WORKSTATE_DISCH && battData.isInstall && battData.loseTimeLong <= 60*60){
+                        //姝e湪鏀剧數
+                        isRecording = true;
+                        isStartRecord = true;
+                        nowTestType = BattDataThread.TESTTYPE_DISTEST;
+                        nowworkState = Concentrator_State.WORKSTATE_DISCH;
+                    }else if(battData.state.battstate == Concentrator_State.WORKSTATE_CHARG && battData.isInstall && battData.loseTimeLong <= 60*60){
+                        //姝e湪鍏呯數
+                        isRecording = true;
+                        isStartRecord = true;
+                        nowTestType = BattDataThread.TESTTYPE_CHRTEST;
+                        nowworkState = Concentrator_State.WORKSTATE_CHARG;
+                    }else{
+                        nowTestType = BattDataThread.TESTTYPE_NULL;
+                        nowworkState = Concentrator_State.WORKSTATE_FLOAT;
+                        isRecording = false;
+                    }
 
                 }
-                sleep(2000);
+                sleep(1000);
             } catch (Exception e) {
                 e.printStackTrace();
             }
@@ -90,10 +134,72 @@
     }
 
     //鎻掑叆鍘嗗彶鏁版嵁
-    public static void insertBattTestDatainf(DBHelper dbHelper,Concentrator_State state){
-        String sql_str = "";
+    public static void insertBattTestDatainf(DBHelper dbHelper,BattDataThread battData){
+        Concentrator_State state = battData.state;
+        String batt_inf_sql_str = "INSERT INTO tb_batttestdata_inf" +
+                         "(BattGroupId,test_record_count,test_type,record_time_interval,record_num,test_starttime,record_time,test_timelong,group_vol,test_curr,test_cap,max_monnum,max_monvol,min_monnum,min_monvol) " +
+                         " VALUES("+battData.battIndex+","+state.test_record_count+","+state.test_type+","+saveDataIntever+","+state.record_num+",'"+Com.getDateTimeFormat(state.testStartTime,Com.DTF_YMDhms)+"','"+Com.getDateTimeFormat(state.record_time,Com.DTF_YMDhms)+"',"+state.testTimelong+","+state.getGroupvol()+","+state.getGroupcurr()+","+0+","+state.max_monnum+","+state.max_monvol+","+state.min_monnum+","+state.min_monvol+") ";
 
+        String batt_id_sql_str="INSERT INTO tb_batttestdata_"+battData.battIndex+"(BattGroupId,test_record_count,test_type,test_starttime,record_time,test_timelong,group_vol,test_curr,test_cap,mon_num,mon_vol,mon_tmp,mon_res) " +
+                "VALUES";
+        for(int i=0;i<state.monCount;i++){
+            if(i != 0){
+                batt_id_sql_str += ",";
+            }
+            batt_id_sql_str += "("+battData.battIndex+","+state.test_record_count+","+state.test_type+",'"+Com.getDateTimeFormat(state.testStartTime,Com.DTF_YMDhms)+"','"+Com.getDateTimeFormat(state.record_time,Com.DTF_YMDhms)+"',"+state.testTimelong+","+state.getGroupvol()+","+state.getGroupcurr()+","+0+","+(i+1)+","+state.mon_vols[i]+","+state.mon_tmps[i]+","+state.mon_ress[i]+")";
+        }
+        SQLiteDatabase db = null;
+        try {
+            db = dbHelper.getWritableDatabase();
+            db.beginTransaction();
+            db.execSQL(batt_inf_sql_str);
+            db.execSQL(batt_id_sql_str);
+            db.setTransactionSuccessful();
+            db.endTransaction();
+        } catch (SQLException e) {
+            e.printStackTrace();
+        } finally {
+            if(db != null){
+                try {
+                    db.close();
+                } catch (Exception e) {
+                    e.printStackTrace();
+                }
+            }
+        }
+    }
 
+    //鎻掑叆鍘嗗彶鏁版嵁
+    public static void insertBattTestData(DBHelper dbHelper,BattDataThread battData){
+        Concentrator_State state = battData.state;
+        String batt_inf_sql_str = " UPDATE tb_batttestdata_inf SET record_num ="+state.record_num+" ,record_time='"+Com.getDateTimeFormat(state.record_time,Com.DTF_YMDhms)+"',test_timelong="+state.testTimelong+",group_vol="+state.getGroupvol()+",test_curr="+state.getGroupcurr()+",test_cap=0,max_monnum="+state.max_monnum+",max_monvol="+state.max_monvol+",min_monnum="+state.min_monnum+",min_monvol="+state.min_monvol+" WHERE BattGroupId = "+battData.battIndex+" AND test_record_count = "+state.test_record_count;
 
+        String batt_id_sql_str="INSERT INTO tb_batttestdata_"+battData.battIndex+"(BattGroupId,test_record_count,test_type,test_starttime,record_time,test_timelong,group_vol,test_curr,test_cap,mon_num,mon_vol,mon_tmp,mon_res) " +
+                "VALUES";
+        for(int i=0;i<state.monCount;i++){
+            if(i != 0){
+                batt_id_sql_str += ",";
+            }
+            batt_id_sql_str += "("+battData.battIndex+","+state.test_record_count+","+state.test_type+",'"+Com.getDateTimeFormat(state.testStartTime,Com.DTF_YMDhms)+"','"+Com.getDateTimeFormat(state.record_time,Com.DTF_YMDhms)+"',"+state.testTimelong+","+state.getGroupvol()+","+state.getGroupcurr()+","+0+","+(i+1)+","+state.mon_vols[i]+","+state.mon_tmps[i]+","+state.mon_ress[i]+")";
+        }
+        SQLiteDatabase db = null;
+        try {
+            db = dbHelper.getWritableDatabase();
+            db.beginTransaction();
+            db.execSQL(batt_inf_sql_str);
+            db.execSQL(batt_id_sql_str);
+            db.setTransactionSuccessful();
+            db.endTransaction();
+        } catch (SQLException e) {
+            e.printStackTrace();
+        } finally {
+            if(db != null){
+                try {
+                    db.close();
+                } catch (Exception e) {
+                    e.printStackTrace();
+                }
+            }
+        }
     }
 }

--
Gitblit v1.9.1