using Highway.Assemble.common; using Mesnac.Codd.Session; using System; using System.Collections.Generic; using System.Data; using System.Data.SqlClient; namespace Highway.Assemble.Sql { public class DbHandler : ISql { public static readonly log4net.ILog LogInfo = log4net.LogManager.GetLogger("RollingLogFileAppender"); //Logging 名字要在 App.config 中能找到 public DbHelper dbHelper; public string constr;//= Common.Unity.Instance.sqlstring;//数据库访问字符串 public DbHandler(string str) { constr = str; initDB(); } /// /// 函数初始化 /// private void initDB() { DbSession dbsession = new DbSession(SqlClientFactory.Instance, constr); dbHelper = new DbHelper(dbsession); } /// /// 获取设备信息列表 /// 对应[dbo].[base_device_info]表 /// /// 设备信息 public List GetEquipList(string collectid) { if (dbHelper == null) { return null; } try { List equiplist = new List(); dbHelper.ClearParameter(); dbHelper.CommandType = CommandType.Text; dbHelper.CommandText = ""; //string sql = "select * from dbo.base_device_info where adapterid ='"+ adapterId + "'and deleteflag !='1'"; // string sql = "select dbo.base_device_info.* , dbo.base_device_connectmode.ConnectModeName from dbo.base_device_info left join dbo.base_device_connectmode on dbo.base_device_info.connectmode=dbo.base_device_connectmode.ConnectModeID where collectid ='" + collectid + "'and dbo.base_device_info.deleteflag !='1'";//"select dbo.base_device_info.* , dbo.base_device_connectmode.ConnectModeName from dbo.base_device_info left join dbo.base_device_connectmode on dbo.base_device_info.connectmode=dbo.base_device_connectmode.ConnectModeID where objid ='" + huijiID + "'and dbo.base_device_info.deleteflag !='1'"; dbHelper.CommandText = sql; DataTable dt = dbHelper.ToDataTable(); if (dt != null && dt.Rows.Count > 0) { foreach (DataRow row in dt.Rows) { Equip equipcode = new Equip(); equipcode.deviceId = row["deviceid"].ToString().Trim(); equipcode.deviceName = row["name"].ToString().Trim(); equipcode.connectstr = row["connectstr"].ToString().Trim(); equipcode.connectModeName = row["connectModeName"].ToString().Trim(); equipcode.connectmode = row["connectmode"].ToString().Trim(); equipcode.deviceType = row["devicetype"].ToString().Trim(); equipcode.collectid = row["collectid"].ToString().Trim(); equipcode.addr = row["addr"].ToString().Trim(); equiplist.Add(equipcode); } return equiplist; } else { return null; } } catch (Exception ex) { LogInfo.Fatal("获取设备信息失败" + ex.ToString()); return null; } finally { //dbHelper.CloseConnection(); } } /// /// 获取传感器信息 /// 对应[dbo].[base_sensor_info]表 /// /// 设备编号 /// 传感器信息 public List GetSensorList(string deviceId) { if (dbHelper == null) { return null; } try { List sensorlist = new List(); dbHelper.ClearParameter(); dbHelper.CommandType = CommandType.Text; dbHelper.CommandText = ""; string sql = "select dbo.base_sensor_info.* , dbo.base_sensortype_info.SensorTypeName from dbo.base_sensor_info left join dbo.base_sensortype_info on dbo.base_sensor_info.sensortypeid = dbo.base_sensortype_info.sensortypeid where deviceid = '" + deviceId + "'and dbo.base_sensor_info.deleteflag != '1'"; dbHelper.CommandText = sql; DataTable dt = dbHelper.ToDataTable(); if (dt != null && dt.Rows.Count > 0) { foreach (DataRow row in dt.Rows) { Sensor sensorcode = new Sensor(); sensorcode.sensorid = row["sensorid"].ToString().Trim(); sensorcode.combineid = row["combineid"].ToString().Trim(); sensorcode.sensortypeid = row["sensortypeid"].ToString().Trim(); sensorcode.sensorName = row["name"].ToString().Trim(); sensorcode.sensorser = row["sensorser"].ToString().Trim(); sensorcode.sensorTypeName = row["sensortypename"].ToString().Trim(); sensorcode.deviceId = row["deviceid"].ToString().Trim(); sensorcode.readInterval = row["readinterval"].ToString().Trim(); sensorcode.multData = row["multdata"].ToString().Trim(); sensorcode.timeout = row["timedout"].ToString().Trim(); sensorcode.returnImm = row["returnimm"].ToString().Trim(); //sensorcode.CallAdapter = Convert.ToInt16(row["calladapter"]); //sensorcode.CallAdapterid = row["calladapterid"].ToString().Trim(); //sensorcode.CallCombineID = row["callcombineid"].ToString().Trim(); // sensorcode.DelayTime = TryToInt(row["DelayTime"].ToString()); sensorcode.mesID = row["MesID"].ToString().Trim(); sensorcode.DelayTime = TryToInt(row["DelayTime"].ToString().Trim()); sensorcode.ReadCounts = TryToInt(row["ReadCounts"].ToString().Trim()); sensorlist.Add(sensorcode); } return sensorlist; } else { return null; } } catch (Exception ex) { LogInfo.Fatal("获取传感器信息失败" + ex.ToString()); return null; } finally { //dbHelper.CloseConnection(); } } /// /// 获取汇集软件信息 /// 对应[dbo].[base_collect_info]表 /// /// 汇集软件编号 /// 汇集软件信息 public Collect GetCollectInfo(string collectid) { Collect collect = new Collect(); if (dbHelper == null) { return collect; } try { dbHelper.ClearParameter(); dbHelper.CommandType = CommandType.Text; dbHelper.CommandText = ""; string sql = "select * from dbo.base_collect_info where collectId='" + collectid + "'"; dbHelper.CommandText = sql; DataTable dt = dbHelper.ToDataTable(); if (dt != null) { for (int i = 0; i < dt.Rows.Count; i++) { collect.collectID = dt.Rows[i]["collectId"].ToString(); collect.collectName = dt.Rows[i]["collectName"].ToString(); collect.Ip = dt.Rows[i]["ip"].ToString(); collect.Port = TryToInt(dt.Rows[0]["port"].ToString()); return collect; } return collect; } else { return collect; } } catch (Exception ex) { LogInfo.Fatal("获取服务器Ip错误" + ex.ToString()); return collect; } finally { //dbHelper.CloseConnection(); } } /// /// 获取mes设备信息 /// 对应[dbo].[base_mes_info]表 /// /// 汇集软件ID /// mes设备信息 public List GetMesEquipList(string collectid) { List mesList = new List(); if (dbHelper == null) { return mesList; } try { dbHelper.ClearParameter(); dbHelper.CommandType = CommandType.Text;//adapterid ="+mesID+" dbHelper.CommandText = ""; string sql = "select * from dbo.base_mes_info where deleteflag != '1' and collectid= '" + collectid + "'"; dbHelper.CommandText = sql; DataTable dt = dbHelper.ToDataTable(); if (dt != null) { for (int i = 0; i < dt.Rows.Count; i++) { mesSoft mes = new mesSoft(); mes.mesid = dt.Rows[i]["mesid"].ToString(); mes.adapterName = dt.Rows[i]["name"].ToString(); mes.AdatperIP = dt.Rows[i]["ip"].ToString(); mes.AdapterPort = dt.Rows[0]["port"].ToString(); mesList.Add(mes); } // return mesList; } else { return null; } } catch (Exception ex) { LogInfo.Fatal("获取服务器Ip错误" + ex.ToString()); return null; } finally { //dbHelper.CloseConnection(); } } /// /// 插入数据 /// 对应[dbo].[real_workdata]表 /// /// 合并编号 /// 数据 /// 上传数据类型 /// public bool InsertReadData(string CombID, string data, int type) { if (dbHelper == null) { return false; } try { var Time = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"); dbHelper.ClearParameter(); dbHelper.CommandType = CommandType.Text; dbHelper.CommandText = ""; string sql = "INSERT INTO [dbo].[real_workdata]([combineid], [data], [reportmode],[tm]) VALUES ('" + CombID + "','" + data + "','" + type + "','" + Time + "')"; dbHelper.CommandText = sql; dbHelper.ExecuteNonQuery(); return true; } catch (Exception ex) { LogInfo.Fatal("插入数据失败" + ex.ToString()); return false; } finally { //dbHelper.CloseConnection(); } } /// /// 设配软件状态 /// /// 对应[dbo].[base_soft_state]表 /// 设配软件ID /// 获取状态时间 /// 设配软件状态 public bool InsertSoftState(string ID, int state) { try { var Time = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"); dbHelper.ClearParameter(); dbHelper.CommandType = CommandType.Text; dbHelper.CommandText = ""; string sql = "INSERT INTO [dbo].[base_soft_state]([softId], [softState], [softTime]) VALUES ('" + ID + "','" + state + "','" + Time + "')"; dbHelper.CommandText = sql; dbHelper.ExecuteNonQuery(); return true; } catch (Exception ex) { LogInfo.Fatal("适配软件状态插入失败" + ex.ToString()); return false; } finally { //dbHelper.CloseConnection(); } } /// /// 设备软件状态 /// /// 对应[dbo].[base_device_state]表 /// 设备编号 /// 状态时间 /// 设备状态 public bool InsertEquipState(string ID, int state) { try { var Time = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"); dbHelper.ClearParameter(); dbHelper.CommandType = CommandType.Text; dbHelper.CommandText = ""; string sql = "INSERT INTO [dbo].[base_device_state]([deviceId], [deviceState], [deviceTime]) VALUES ('" + ID + "','" + state + "','" + Time + "')"; dbHelper.CommandText = sql; dbHelper.ExecuteNonQuery(); return true; } catch (Exception ex) { //LogInfo.Fatal("设备软件状态插入失败" + ex.ToString()); return false; } finally { //dbHelper.CloseConnection(); } } /// /// 汇集软件状态 /// 对应[dbo].[base_collect_state]表 /// /// 汇集编号 /// 设备状态 public bool InsertCollectState(string ID, int state) { if (string.IsNullOrEmpty(ID)) { return false; } try { var Time = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"); dbHelper.ClearParameter(); dbHelper.CommandType = CommandType.Text; dbHelper.CommandText = ""; string sql = "INSERT INTO [dbo].[base_collect_state]([collectId],[collectState],[collectTime]) VALUES ('" + ID + "','" + state + "','" + Time + "')"; dbHelper.CommandText = sql; dbHelper.ExecuteNonQuery(); return true; } catch (Exception ex) { LogInfo.Fatal("设备软件状态插入失败" + ex.ToString()); return false; } finally { //dbHelper.CloseConnection(); } } private int TryToInt(string str) { int returnInt = 0; if (str == null || str.Trim().Length < 1) { return returnInt; } if (int.TryParse(str, out returnInt)) { return returnInt; } else { return 0; } } } }