package com.socket; import android.database.Cursor; import android.database.SQLException; import android.database.sqlite.SQLiteDatabase; import android.util.Log; import android.webkit.JavascriptInterface; import android.webkit.WebView; import com.alarms.BattAlarmCheckThread; import com.concentrator.Concentrator_State; import com.fgkj.action.ServiceModel; import com.fgkj.dao.ActionUtil; import com.fgkj.dao.DBHelper; import com.fgkj.dto.Battinf; import com.google.gson.Gson; import com.util.Com; import java.lang.reflect.Array; import java.util.ArrayList; import java.util.Date; import java.util.HashMap; import java.util.List; public class FBS9600S_DeviceService { public final static String TAG = "FBS9600S_DeviceService"; public static final int MAXCONCENTRATORCOUNT = 16; //最多连接的汇集器数量 public static final String JS_INTERFACE_NAME = "DeviceService"; //JS调用类名 public static List allBattDatt; public DBHelper dbHelper; public WebView webView; public FBS9600S_DeviceService(WebView webView,DBHelper dbHelper){ this.dbHelper = dbHelper; this.webView = webView; allBattDatt = new ArrayList<>(); for(int i=0;i list = queryAllBattInf(dbHelper); //查询数据库中的所有电池组信息 List temps = initBattInfo(allBattDatt,list); insertBattinf(dbHelper,temps); //电池告警线程 BattAlarmCheckThread battAlarmCheckThread = new BattAlarmCheckThread(dbHelper,allBattDatt); battAlarmCheckThread.start(); } //读取系统状态 @JavascriptInterface public void readSystemState(String index){ int battindex = Integer.parseInt(index); if(battindex > 0 && battindex <= MAXCONCENTRATORCOUNT){ allBattDatt.get(battindex - 1).readSystemState("readSystemState"); } } //读取系统参数 @JavascriptInterface public void readSystemParam(String index){ int battindex = Integer.parseInt(index); if(battindex>0 && battindex <= MAXCONCENTRATORCOUNT){ allBattDatt.get(battindex-1).readSystemParam("readSystemParam"); } } //设置系统参数 @JavascriptInterface public void writeSystemParam(String index,String json){ int battindex = Integer.parseInt(index); if(battindex>0 && battindex <= MAXCONCENTRATORCOUNT){ allBattDatt.get(battindex-1).writeSystemParam("writeSystemParam",json); } } //读取电池信息 @JavascriptInterface public void readBattMonInfo(String index){ int battindex = Integer.parseInt(index); ServiceModel model = new ServiceModel(); if(battindex>0 && battindex <= MAXCONCENTRATORCOUNT){ Concentrator_State state = allBattDatt.get(battindex-1).state; if(allBattDatt.get(battindex-1).isOutTime){ state.isOutTime = 1; }else{ state.isOutTime = 0; } model.code = 1; model.data = state; } //Log.e(TAG, "readBattMonInfo: "+ActionUtil.getGson().toJson(model) ); ActionUtil.SendCallDataToJS(JS_INTERFACE_NAME,"readBattMonInfo",model,webView, ActionUtil.getGson()); } //启动内阻测试 @JavascriptInterface public void startBattResTest(String index){ int battindex = Integer.parseInt(index); if(battindex>0 && battindex <= MAXCONCENTRATORCOUNT){ allBattDatt.get(battindex-1).startBattResTest(JS_INTERFACE_NAME+"startBattResTest"); } } //停止内阻测试 @JavascriptInterface public void stopBattResTest(String index){ int battindex = Integer.parseInt(index); if(battindex>0 && battindex <= MAXCONCENTRATORCOUNT){ allBattDatt.get(battindex-1).stopBattResTest(JS_INTERFACE_NAME+"stopBattResTest"); } } //重启系统 @JavascriptInterface public void reStartSystem(String index){ int battindex = Integer.parseInt(index); if(battindex>0 && battindex <= MAXCONCENTRATORCOUNT){ allBattDatt.get(battindex-1).reStartSystem(JS_INTERFACE_NAME+"reStartSystem"); } } //读取电池组充电个数 @JavascriptInterface public void readBattCharCount(){ int count = 0; for(int i=0;i list = new ArrayList(); for(int i=0;i list = new ArrayList(); for(int i=0;i initBattInfo(List battDatas,List list){ List battinfs = new ArrayList<>(); for(int i = 0;i queryAllBattInf(DBHelper dbHelper){ List battinfs = new ArrayList<>(); String sql_str = "SELECT * FROM tb_battinf ORDER BY BattGroupId ASC"; SQLiteDatabase db = dbHelper.getWritableDatabase(); Cursor rs = null; try { rs = db.rawQuery(sql_str,null); while(rs.moveToNext()){ Battinf battinf = new Battinf(); battinf.setNum(rs.getInt(rs.getColumnIndex("num"))); battinf.setMonVolStd(rs.getDouble(rs.getColumnIndex("MonVolStd"))); battinf.setStation_install(rs.getInt(rs.getColumnIndex("station_install"))); battinf.setMonTmpStd(rs.getDouble(rs.getColumnIndex("MonTmpStd"))); battinf.setMonSerStd(rs.getDouble(rs.getColumnIndex("MonSerStd"))); battinf.setMonResStd(rs.getDouble(rs.getColumnIndex("MonResStd"))); battinf.setMonCount(rs.getInt(rs.getColumnIndex("MonCount"))); battinf.setMonCapStd(rs.getDouble(rs.getColumnIndex("MonCapStd"))); battinf.setBattProducer(rs.getString(rs.getColumnIndex("BattProducer"))); Date date= ActionUtil.sdfwithOut.parse( rs.getString(rs.getColumnIndex("BattInUseDate"))); battinf.setBattInUseDate(date); battinf.setBattGroupName1(rs.getString(rs.getColumnIndex("BattGroupName1"))); battinf.setBattGroupName(rs.getString(rs.getColumnIndex("BattGroupName"))); battinf.setBattFloatCurrent(rs.getDouble(rs.getColumnIndex("BattFloatCurrent"))); battinf.setBattGroupId(rs.getInt(rs.getColumnIndex("BattGroupId"))); battinfs.add(battinf); } } catch (Exception e) { e.printStackTrace(); } finally { try { if(rs != null){ rs.close(); } if(db != null){ db.close(); } } catch (Exception e) { e.printStackTrace(); } } return battinfs; } /** * 插入电池组信息 * @param dbHelper * @param list */ public void insertBattinf(DBHelper dbHelper,List list){ boolean start = true; String sql_str_start = " INSERT INTO tb_battinf(BattGroupId,BattGroupName,BattGroupName1,BattFloatCurrent,MonCount,MonCapStd,MonVolStd,MonResStd,MonSerStd,MonTmpStd,BattProducer,BattInUseDate,station_install) VALUES "; for(int i = 0;i