using System;
using System.Collections.Generic;
using System.Text;
using CRVM.Utility;
using System.Xml;
using System.IO;
using System.Data;
using CRVM.Entity;
using System.Linq;
namespace CRVM.CIDExcuter
{
public class DbHelper
{
private string _path;
private LogicConnect DBlogicConn;
private LogicConnect l2Connect;
private LogicConnect localConnect;
private EDBItem soudb;
private EDBItem desdb;
private int freq = 5;//频率(秒)
private static DbHelper _instance = null;
private string coldid_before = "";
public EDBItem SouDB
{
get { return soudb; }
set { soudb = value; }
}
public EDBItem DesDB
{
get { return desdb; }
set { desdb = value; }
}
public int Freq
{
get { return freq; }
set { freq = value; }
}
public DbHelper(string path)
{
_path = path;
}
public static DbHelper GetInstance(string path)
{
if (_instance == null)
{
_instance = new DbHelper(path);
_instance.DesDB = new EDBItem();
_instance.SouDB = new EDBItem();
}
return _instance;
}
public bool isStart { get; set; }
public bool LoadConfigData(DbHelper dbhelper)
{
XmlDocument xmldoc = new XmlDocument();
try
{
string ipath = _path + "\\dbaccess.conf";
if (File.Exists(ipath))
{
xmldoc.Load(ipath);
string systemName = "";
if (xmldoc.DocumentElement.Attributes.Count > 0)
systemName = xmldoc.DocumentElement.Attributes[0].InnerText;
XmlNodeList nodes = xmldoc.SelectNodes("Schm/DB");
int count = nodes.Count;
string DbName = nodes[0].Attributes[0].InnerText;
soudb.DataType = nodes[0].ChildNodes[0].Attributes[0].InnerText;
soudb.Database = nodes[0].ChildNodes[0].Attributes[1].InnerText;
soudb.Userid = nodes[0].ChildNodes[0].Attributes[2].InnerText;
soudb.Password = nodes[0].ChildNodes[0].Attributes[3].InnerText;
soudb.Ipaddress = nodes[0].ChildNodes[0].Attributes[4].InnerText;
string DestDbName = nodes[1].Attributes[0].InnerText;
desdb.DataType = nodes[1].ChildNodes[0].Attributes[0].InnerText;
desdb.Database = nodes[1].ChildNodes[0].Attributes[1].InnerText;
desdb.Userid = nodes[1].ChildNodes[0].Attributes[2].InnerText;
desdb.Password = nodes[1].ChildNodes[0].Attributes[3].InnerText;
desdb.Ipaddress = nodes[1].ChildNodes[0].Attributes[4].InnerText;
return true;
}
else
{
return false;
}
}
catch (XmlException)
{
return false;
}
}
///
/// 重设L2数据库操作对象
///
///
public bool SetL2Connect()
{
try
{
l2Connect = new LogicConnect(soudb, soudb.Userid);
return true;
}
catch (Exception)
{
return false;
}
}
///
/// 重设本地数据库操作对象
///
///
public bool SetLocalConnect()
{
try
{
localConnect = new LogicConnect(desdb, desdb.Userid);
return true;
}
catch (Exception)
{
return false;
}
}
///
/// 剪切时向t_coil_info_client表中插入一条新纪录
///
///
///
///
///
///
public void AddNewCoilInfo(int alarmFlag, int endFlag, string OrigPath, string EnergyPath, string disLength, int defectflag)
{
try
{
//将本次记录之前的当前卷标记全部置为0,保证当前卷标记唯一性
string update_sql = "update t_coil_info_client set nowflag = 0 where nowflag = 1";
localConnect.DataBase(update_sql);
//插入新纪录,并将当前卷标记置为1
string insert_sql = string.Format("insert into t_coil_info_client (createdate,endflag,origPath,energyPath,alarmflag,nowflag,defectflag,disLength) values('{0}',{1},'{2}','{3}',{4},1,{5},{6})",
DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), endFlag, OrigPath, EnergyPath, alarmFlag, defectflag, disLength);
localConnect.DataBase(insert_sql);
DevelopLog.DeBug.WriteLogFile("AddNewCoilInfo", insert_sql.ToString());
}
catch (Exception ex)
{
DevelopLog.DeBug.WriteLogFile("AddNewCoilInfo", ex.ToString());
DevelopLog.DeBug.WriteLogFile("AddNewCoilInfo", String.Format("|OrigPath:{0},EnergyPath:{1}|" + ex.ToString(), OrigPath, EnergyPath));
}
}
///
/// 从L2数据库获取钢卷信息,补充到本地t_coil_info_client表,并将冷卷号更新到t_alarm_info_client表中
/// 梅钢项目不使用
///
public void UpdateLocalCoilInfo()
{
try
{
//获取L2钢卷信息表中最新的一条记录
string sql_l2 = "select excoilid,entcoilid,length,innerdiam,outdiam,alloycode,extthick,extwidth,hentry from app.fv_vibration_proddata where rownum = 1";
DataTable l2data = l2Connect.DataBase(sql_l2);
if (l2data != null)
{
if (l2data.Rows.Count != 0)
{
//若本次从L2获取的最新第一条记录的卷号与上次记录的卷号一致,则表示L2新卷号还没有生成
if (l2data.Rows[0]["excoilid"].ToString().Trim() == coldid_before)
{
return;
}
//根据L2信息更新本地t_coil_info_client表中热卷号、冷卷号、钢种牌号、宽度、入口厚度、出口厚度、钢种等级信息
string coilinfo_update_sql = string.Format("update t_coil_info_client set hotcoilid='{0}',coldcoilid='{1}',alloycode='{2}',width={3},entrythick={4},exitthick={5} where nowflag = 1 and endflag = 1",
l2data.Rows[0]["entcoilid"], l2data.Rows[0]["excoilid"], l2data.Rows[0]["alloycode"], Convert.ToDouble(l2data.Rows[0]["extwidth"]), Convert.ToDouble(l2data.Rows[0]["hentry"]), Convert.ToDouble(l2data.Rows[0]["extthick"]));
localConnect.DataBase(coilinfo_update_sql);
//更新t_alarm_info_client中的冷卷号信息
string alarm_update_sql = string.Format("update t_alarm_info_client set coldcoilid= '{0}' where nowflag= 1", l2data.Rows[0]["excoilid"]);
localConnect.DataBase(alarm_update_sql);
coldid_before = l2data.Rows[0]["excoilid"].ToString().Trim();//记录上一卷的冷卷号
//更新缺陷表中的钢卷号
updateLocalDefectCoilNo(l2data.Rows[0]["excoilid"].ToString().Trim());
}
}
}
catch (Exception ex)
{
DevelopLog.DeBug.WriteLogFile("UpdateLocalCoilInfo", ex.ToString());
throw ex;
}
}
///
/// 保存数据库配置
///
///
public bool SaveConfigData()
{
StreamWriter write = new StreamWriter(_path + "\\dbaccess.conf", false, Encoding.GetEncoding("gb2312"));
StringBuilder str = new StringBuilder();
str = str.AppendLine(" ");
str = str.AppendLine("");
str = str.AppendLine(" ");
if (soudb != null)
{
str = str.AppendLine(" ");
}
str = str.AppendLine(" ");
str = str.AppendLine(" ");
if (desdb != null)
{
str = str.AppendLine(" ");
}
str = str.AppendLine(" ");
str = str.AppendLine("");
write.WriteLine(str.ToString());
write.Close();
return true;
}
///
/// 测试数据库是否连接成功
///
///
///
public bool IsConnected(EDBItem item)
{
DBlogicConn = new LogicConnect(item, item.Userid);
DataTable dt = new DataTable();
if (item.DataType == "oracle")
{
try
{
dt = DBlogicConn.DataBase("select * from all_tables");
return true;
}
catch (Exception)
{
return false;
}
}
else if (item.DataType == "postgres")
{
try
{
dt = DBlogicConn.DataBase("select * from pg_am");
return true;
}
catch (Exception)
{
return false;
}
}
else if (item.DataType == "db2")
{
try
{
dt = DBlogicConn.DataBase("select tabname from syscat.tables where tabschema = current schema");
return true;
}
catch (Exception)
{
return false;
}
}
return false;
}
///
/// 当前文件结束后在t_alarm_info_client表中插入本文件对应的报警信息
///
///
///
///
///
///
///
public void InsertAlarmInfo(int[] start, int[] end, int[] standNo, int[] alarmType, double[] energy)
{
try
{
//将t_alarm_info_client表中当前卷标志全部置为0
string update_sql = "update t_alarm_info_client set nowflag = 0 where nowflag = 1";
localConnect.DataBase(update_sql);
//插入新纪录,并将新纪录的当前卷标志置为1
DateTime nowtime = DateTime.Now;
for (int i = 0; i < start.Length; i++)
{
string time = nowtime.AddMilliseconds(-i).ToString("yyyy-MM-dd HH:mm:ss.fff");
string insert_sql = string.Format("insert into t_alarm_info_client (createdate,startpos,endpos,standno,alarmtype,energy,nowflag) values('{0}',{1},{2},{3},{4},{5},1)",
time, start[i], end[i], standNo[i] + 1, alarmType[i], energy[i]);
localConnect.DataBase(insert_sql);
}
}
catch (Exception ex)
{
DevelopLog.DeBug.WriteLogFile("InsertAlarmInfo", ex.ToString());
}
}
///
///
///
///
///
public void RollDataInfo(Machine mac, DataTable rolldata)
{
if (mac == null)
{
return;
}
for (int i = 0; i < SysParam.Instance.SpeedChannelCount; i++)
{
mac.Stand[i].rollDiameterBL = 10000.0;
mac.Stand[i].rollDiameterBU = 10000.0;
mac.Stand[i].rollDiameterML = 10000.0;
mac.Stand[i].rollDiameterMU = 10000.0;
mac.Stand[i].rollDiameterWL = 10000.0;
mac.Stand[i].rollDiameterWU = 10000.0;
}
try
{
if (rolldata != null)
{
if (rolldata.Rows.Count == 1)
{
for (int i = 0; i < SysParam.Instance.SpeedChannelCount; i++)
{
mac.Stand[i].rollDiameterWU = Convert.ToDouble(rolldata.Rows[0][i * 6 + 0]);
mac.Stand[i].rollDiameterWL = Convert.ToDouble(rolldata.Rows[0][i * 6 + 1]);
//中间辊 c102机组轧机无中间辊
mac.Stand[i].rollDiameterMU = Convert.ToDouble(rolldata.Rows[0][i * 6 + 2]);
mac.Stand[i].rollDiameterML = Convert.ToDouble(rolldata.Rows[0][i * 6 + 3]);
mac.Stand[i].rollDiameterBU = Convert.ToDouble(rolldata.Rows[0][i * 6 + 4]);
mac.Stand[i].rollDiameterBL = Convert.ToDouble(rolldata.Rows[0][i * 6 + 5]);
}
}
}
}
catch (Exception)
{
for (int i = 0; i < SysParam.Instance.SpeedChannelCount; i++)
{
mac.Stand[i].rollDiameterBL = 10000.0;
mac.Stand[i].rollDiameterBU = 10000.0;
mac.Stand[i].rollDiameterML = 10000.0;
mac.Stand[i].rollDiameterMU = 10000.0;
mac.Stand[i].rollDiameterWL = 10000.0;
mac.Stand[i].rollDiameterWU = 10000.0;
}
}
finally
{
}
}
///
/// 根据L2轧辊信息更新本地轧辊表
/// 梅钢项目不使用
///
///
public void UpdateLocalRollData(DataTable data)
{
try
{
string nowtime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
for (int i = 0; i < data.Rows.Count; i++)
{
string update_sql = string.Format("insert into T_ROLL_DATA (createdate,rollno,standno,rolltype,rollposition,DiameterMiddle) values('{0}','{1}',{2},'{3}','{4}',{5})", nowtime,
data.Rows[i]["rollno"], data.Rows[i]["standno"], data.Rows[i]["rolltype"].ToString(), data.Rows[i]["rollposition"], data.Rows[i]["diametermiddle"]);
localConnect.DataBase(update_sql);
}
}
catch (Exception ex)
{
DevelopLog.DeBug.WriteLogFile("UpdateLocalRollData", ex.ToString());
}
}
///
/// 获取t_roll_data表中所有的时刻点
/// /// 梅钢项目不使用
///
///
public DataTable SelCreateTimeRolData()
{
try
{
string select_sql = "select distinct createdate from t_roll_data";
return localConnect.DataBase(select_sql);
}
catch (Exception ex)
{
throw ex;
}
}
///
/// 获取t_roll_data表中某个时刻点的轧辊数据
/// 梅钢项目不使用
///
///
///
public DataTable SelRollDataByCreateDate(string createdate)
{
try
{
string select_sql = string.Format("select rollno,diametermiddle,standno,rollposition,rolltype from t_roll_data where createdate='{0}'", createdate);
return localConnect.DataBase(select_sql);
}
catch (Exception ex)
{
throw ex;
}
}
///
/// 获取L2在线轧辊信息
///
///
public DataTable GetL2OnlineRollInfo()
{
string std_sql = "select ";
for (int i = 0; i < SysParam.Instance.SpeedChannelCount - 1; i++)
{
std_sql += string.Format("wrdiaup{0},wrdialow{0},imrdiaup{0},imrdialow{0},burdiaup{0},burdialow{0},", (i + 1).ToString());
}
std_sql += string.Format("wrdiaup{0},wrdialow{0},imrdiaup{0},imrdialow{0},burdiaup{0},burdialow{0}", (SysParam.Instance.SpeedChannelCount).ToString());
std_sql += " from t_roll_online where seqno=1";
try
{
//string select_sql = "select standno,rollposition,to_char(diametermiddle/1000,'9999.99') as diametermiddle,rolltype,rollno from app.fv_vibration_rolldata where rollstatus='I'";
//string stand1_sql = string.Format("wrdiaup{0},wrdialow{0},imrdiaup{0},imrdialow{0},burdiaup{0},burdialow{0},", "1");
//string stand2_sql = string.Format("wrdiaup{0},wrdialow{0},imrdiaup{0},imrdialow{0},burdiaup{0},burdialow{0},", "2");
//string stand3_sql = string.Format("wrdiaup{0},wrdialow{0},imrdiaup{0},imrdialow{0},burdiaup{0},burdialow{0},", "3");
//string stand4_sql = string.Format("wrdiaup{0},wrdialow{0},imrdiaup{0},imrdialow{0},burdiaup{0},burdialow{0},", "4");
//string stand5_sql = string.Format("wrdiaup{0},wrdialow{0},imrdiaup{0},imrdialow{0},burdiaup{0},burdialow{0},", "5");
//string stand6_sql = string.Format("wrdiaup{0},wrdialow{0},imrdiaup{0},imrdialow{0},burdiaup{0},burdialow{0}", "6");
//string select_sql = "select " + stand1_sql + stand2_sql + stand3_sql + stand4_sql + stand5_sql + stand6_sql + " from t_roll_online where seqno=1";
//return localConnect.DataBase(select_sql);
return localConnect.DataBase(std_sql);
}
catch (Exception ex)
{
throw ex;
}
}
///
/// 验证用户输入的密码是否正确
///
///
///
public bool IsUser(string password)
{
try
{
string select_sql = string.Format("select * from t_users where pswd='{0}' and name = 'tcm'", password);
DataTable dt = localConnect.DataBase(select_sql);
if (dt.Rows.Count > 0)
{
return true;
}
return false;
}
catch (Exception ex)
{
throw ex;
}
}
///
/// 获取t_coil_info_client表中所有的冷卷号
///
///
public List SelAllCoilIDs()
{
List coillist = new List();
string select_sql = "select coldcoilno from t_coil_info_client";
try
{
DataTable data = localConnect.DataBase(select_sql);
if (data != null)
{
for (int i = 0; i < data.Rows.Count; i++)
{
coillist.Add(data.Rows[i]["coldcoilno"].ToString());
}
}
return coillist;
}
catch (Exception ex)
{
throw ex;
}
}
///
/// 修改用户密码
///
///
public void ChangePassWord(string newpswd)
{
try
{
string update_sql = string.Format("update t_users set pswd='{0}' where name='tcm'", newpswd);
localConnect.DataBase(update_sql);
}
catch (Exception ex)
{
throw ex;
}
}
///
/// 在t_alarm_info_client表中根据冷卷号搜索钢卷报警信息
///
///
///
public DataTable SelAlarmInfoByColdId(string coldcoilid)
{
try
{
string select_sql = string.Format("select startpos,endpos,standno,alarmtype,energy from t_alarm_info_client where coldcoilid='{0}'", coldcoilid);
return localConnect.DataBase(select_sql);
}
catch (Exception ex)
{
throw ex;
}
}
///
/// 在t_coil_info_client表中搜索时间范围内的钢卷信息
///
///
///
///
///
public DataTable GetCoilInfoByDate(bool isAlarm, DateTime startTime, DateTime endTime)
{
try
{
string select_sql = string.Format("select to_char(createdate,'YYYY-MM-DD HH24:MI:SS'),alarmflag,coldcoilno_hotcoild,coldcoilno,coldcoil_steegrade,coldcoil_alloycode, coldcoil_extwidth,coldcoil_entthick,coldcoil_extthick,dislength,coldcoil_len,endflag,origpath,energypath from t_coil_info_client where createdate<='{0}'and createdate>='{1}'", endTime, startTime);
if (isAlarm)
{
select_sql += " and alarmflag = 1";
}
select_sql += " order by createdate desc";
return localConnect.DataBase(select_sql);
}
catch (Exception ex)
{
throw ex;
}
}
///
/// 在t_coil_info_client表中根据冷卷号搜索钢卷信息
///
///
///
public DataTable GetCoilInfoByColdId(string coldcoilno)
{
try
{
string select_sql = "";
if (coldcoilno.Trim() == "")
{
select_sql = string.Format("select to_char(createdate,'YYYY-MM-DD HH24:MI:SS'),alarmflag,coldcoilno_hotcoild,coldcoilno,coldcoil_steegrade,coldcoil_alloycode, coldcoil_extwidth,coldcoil_entthick,coldcoil_extthick,dislength,coldcoil_len,endflag,origpath,energypath from t_coil_info_client where coldcoilno = 'xxxxxxxxxx'", coldcoilno);
}
else
{
select_sql = string.Format("select to_char(createdate,'YYYY-MM-DD HH24:MI:SS'),alarmflag,coldcoilno_hotcoild,coldcoilno,coldcoil_steegrade,coldcoil_alloycode, coldcoil_extwidth,coldcoil_entthick,coldcoil_extthick,dislength,coldcoil_len,endflag,origpath,energypath from t_coil_info_client where coldcoilno like '%{0}%' ", coldcoilno);
}
return localConnect.DataBase(select_sql);
}
catch (Exception ex)
{
throw ex;
}
}
///
/// 在t_coil_info_client表中根据原始数据路径搜索钢卷信息
///
///
///
public DataTable GetCoilInfoByOriginPath(string originPath, Machine macReview)
{
string select_sql = "select coldcoilno,coldcoil_steegrade,coldcoil_extwidth,coldcoil_extthick,coldcoil_alloycode,";
for (int i = 0; i < SysParam.Instance.SpeedChannelCount - 1; i++)
{
select_sql += string.Format("wrdiaup{0},wrdialow{0},imrdiaup{0},imrdialow{0},burdiaup{0},burdialow{0},", (i + 1).ToString());
}
select_sql += string.Format("wrdiaup{0},wrdialow{0},imrdiaup{0},imrdialow{0},burdiaup{0},burdialow{0}", SysParam.Instance.SpeedChannelCount.ToString());
select_sql += string.Format(" from t_coil_info_client where origpath='{0}'", originPath);
try
{
//string coil_sql = "select coldcoilno,coldcoil_steegrade,coldcoil_extwidth,coldcoil_extthick,coldcoil_alloycode,";
//string stand1_sql = string.Format("wrdiaup{0},wrdialow{0},imrdiaup{0},imrdialow{0},burdiaup{0},burdialow{0},", "1");
//string stand2_sql = string.Format("wrdiaup{0},wrdialow{0},imrdiaup{0},imrdialow{0},burdiaup{0},burdialow{0},", "2");
//string stand3_sql = string.Format("wrdiaup{0},wrdialow{0},imrdiaup{0},imrdialow{0},burdiaup{0},burdialow{0},", "3");
//string stand4_sql = string.Format("wrdiaup{0},wrdialow{0},imrdiaup{0},imrdialow{0},burdiaup{0},burdialow{0},", "4");
//string stand5_sql = string.Format("wrdiaup{0},wrdialow{0},imrdiaup{0},imrdialow{0},burdiaup{0},burdialow{0}", "5");
//string where_sql = string.Format(" from t_coil_info_client where origpath='{0}'", originPath);
//string sql = coil_sql + stand1_sql + stand2_sql + stand3_sql + stand4_sql + stand5_sql + where_sql;
//DataTable dt = localConnect.DataBase(sql);
DataTable dt = localConnect.DataBase(select_sql);
if (dt.Rows.Count == 1)
{
macReview.review_coldcoilno = dt.Rows[0]["coldcoilno"].ToString();
macReview.review_extThick = dt.Rows[0]["coldcoil_extthick"].ToString();
macReview.review_alloyCode = dt.Rows[0]["coldcoil_alloycode"].ToString();
macReview.review_steelGrade = dt.Rows[0]["coldcoil_steegrade"].ToString();
macReview.review_width = dt.Rows[0]["coldcoil_extwidth"].ToString();
for (int i = 0; i < SysParam.Instance.SpeedChannelCount; i++)
{
macReview.Stand[i].rollDiameterWU = Convert.ToDouble(dt.Rows[0]["wrdiaup" + (i + 1).ToString()]);
macReview.Stand[i].rollDiameterWL = Convert.ToDouble(dt.Rows[0]["wrdialow" + (i + 1).ToString()]);
macReview.Stand[i].rollDiameterMU = Convert.ToDouble(dt.Rows[0]["imrdiaup" + (i + 1).ToString()]);
macReview.Stand[i].rollDiameterML = Convert.ToDouble(dt.Rows[0]["imrdialow" + (i + 1).ToString()]);
macReview.Stand[i].rollDiameterBU = Convert.ToDouble(dt.Rows[0]["burdiaup" + (i + 1).ToString()]);
macReview.Stand[i].rollDiameterBL = Convert.ToDouble(dt.Rows[0]["burdialow" + (i + 1).ToString()]);
}
}
return dt;
}
catch (Exception ex)
{
DataTable errordt = new DataTable();
for (int i = 0; i < SysParam.Instance.SpeedChannelCount; i++)
{
macReview.Stand[i].rollDiameterWU = 0;
macReview.Stand[i].rollDiameterWL = 0;
macReview.Stand[i].rollDiameterMU = 0;
macReview.Stand[i].rollDiameterML = 0;
macReview.Stand[i].rollDiameterBU = 0;
macReview.Stand[i].rollDiameterBL = 0;
}
DevelopLog.DeBug.WriteLogFile("GetCoilInfoByOriginPath", ex.ToString());
return errordt;
}
}
///
/// 在t_coil_info_client表中根据能量数据路径搜索钢卷信息
///
///
///
public DataTable GetCoilInfoByEnergyPath(string energyPath, Machine macReview)
{
string select_sql = "select coldcoilno,coldcoil_steegrade,coldcoil_extwidth,coldcoil_extthick,coldcoil_alloycode,";
for (int i = 0; i < SysParam.Instance.SpeedChannelCount - 1; i++)
{
select_sql += string.Format("wrdiaup{0},wrdialow{0},imrdiaup{0},imrdialow{0},burdiaup{0},burdialow{0},", (i + 1).ToString());
}
select_sql += string.Format("wrdiaup{0},wrdialow{0},imrdiaup{0},imrdialow{0},burdiaup{0},burdialow{0}", SysParam.Instance.SpeedChannelCount.ToString());
select_sql += string.Format(" from t_coil_info_client where energypath='{0}'", energyPath);
try
{
//string coil_sql = "select coldcoilno,coldcoil_steegrade,coldcoil_extwidth,coldcoil_extthick,coldcoil_alloycode,";
//string stand1_sql = string.Format("wrdiaup{0},wrdialow{0},imrdiaup{0},imrdialow{0},burdiaup{0},burdialow{0},", "1");
//string stand2_sql = string.Format("wrdiaup{0},wrdialow{0},imrdiaup{0},imrdialow{0},burdiaup{0},burdialow{0},", "2");
//string stand3_sql = string.Format("wrdiaup{0},wrdialow{0},imrdiaup{0},imrdialow{0},burdiaup{0},burdialow{0},", "3");
//string stand4_sql = string.Format("wrdiaup{0},wrdialow{0},imrdiaup{0},imrdialow{0},burdiaup{0},burdialow{0},", "4");
//string stand5_sql = string.Format("wrdiaup{0},wrdialow{0},imrdiaup{0},imrdialow{0},burdiaup{0},burdialow{0}", "5");
//string where_sql = string.Format(" from t_coil_info_client where energypath='{0}'", energyPath);
//string sql = coil_sql + stand1_sql + stand2_sql + stand3_sql + stand4_sql + stand5_sql + where_sql;
//DataTable dt = localConnect.DataBase(sql);
DataTable dt = localConnect.DataBase(select_sql);
if (dt.Rows.Count == 1)
{
macReview.review_coldcoilno = dt.Rows[0]["coldcoilno"].ToString();
macReview.review_extThick = dt.Rows[0]["coldcoil_extthick"].ToString();
macReview.review_alloyCode = dt.Rows[0]["coldcoil_alloycode"].ToString();
macReview.review_steelGrade = dt.Rows[0]["coldcoil_steegrade"].ToString();
macReview.review_width = dt.Rows[0]["coldcoil_extwidth"].ToString();
for (int i = 0; i < SysParam.Instance.SpeedChannelCount; i++)
{
macReview.Stand[i].rollDiameterWU = Convert.ToDouble(dt.Rows[0]["wrdiaup" + (i + 1).ToString()]);
macReview.Stand[i].rollDiameterWL = Convert.ToDouble(dt.Rows[0]["wrdialow" + (i + 1).ToString()]);
macReview.Stand[i].rollDiameterMU = Convert.ToDouble(dt.Rows[0]["imrdiaup" + (i + 1).ToString()]);
macReview.Stand[i].rollDiameterML = Convert.ToDouble(dt.Rows[0]["imrdialow" + (i + 1).ToString()]);
macReview.Stand[i].rollDiameterBU = Convert.ToDouble(dt.Rows[0]["burdiaup" + (i + 1).ToString()]);
macReview.Stand[i].rollDiameterBL = Convert.ToDouble(dt.Rows[0]["burdialow" + (i + 1).ToString()]);
}
}
return dt;
}
catch (Exception ex)
{
DataTable errordt = new DataTable();
for (int i = 0; i < SysParam.Instance.SpeedChannelCount; i++)
{
macReview.Stand[i].rollDiameterWU = 0;
macReview.Stand[i].rollDiameterWL = 0;
macReview.Stand[i].rollDiameterMU = 0;
macReview.Stand[i].rollDiameterML = 0;
macReview.Stand[i].rollDiameterBU = 0;
macReview.Stand[i].rollDiameterBL = 0;
}
DevelopLog.DeBug.WriteLogFile("GetCoilInfoByEnergyPath", ex.ToString());
return errordt;
}
}
public bool recordLocalDefectData(Dictionary defectList, Dictionary defectMaxEnergyValue)//剪切时插入本地数据库缺陷表
{
return true;
if (defectList.Count >= 1)
{
string coil_sql = "select coldcoilno,coldcoil_muid from t_coil_online where seqno=1 ";
DataTable coil_dt = localConnect.DataBase(coil_sql);
if (coil_dt.Rows.Count == 1)
{
string coldcoilno = coil_dt.Rows[0]["coldcoilno"].ToString();
string coldcoil_muid = coil_dt.Rows[0]["coldcoil_muid"].ToString();
if (coldcoilno.Trim() != "")
{
string update_sql = "update t_defect_data set ";
int count = 0;
foreach (KeyValuePair item in defectList)
{
count++;
if (count == 21)
{
break;
}
string tmp = " defectstart" + count.ToString() + "=" + item.Key.ToString() + ",";
tmp += "defectend" + count.ToString() + "=" + item.Value.ToString() + ",";
if (defectMaxEnergyValue.ContainsKey(item.Key))
{
tmp += "maxenergy" + count.ToString() + "=" + defectMaxEnergyValue[item.Key] + ",";
}
else
{
tmp += "maxenergy" + count.ToString() + "=" + "0.0" + ",";
}
update_sql = update_sql + tmp;
}
for (int i = count; i <= 20; i++)
{
string tmp = " defectstart" + count.ToString() + "=0,";
tmp += "defectend" + count.ToString() + "=0,";
tmp += "maxenergy" + count.ToString() + "=0.0,";
update_sql = update_sql + tmp;
}
update_sql += "coldcoilid='" + coldcoilno + "', muid=" + coldcoil_muid + ",sndflag=0";
DevelopLog.DeBug.WriteLogFile("update t_defect_data:", update_sql);
localConnect.DataBase(update_sql);
return true;
}
return true;
}
else
{
DevelopLog.DeBug.WriteLogFile("read online table failed, info recordocalDefectData:", coil_sql);
return false;
}
}
else
{
return true;
}
//string sql = "update t_defect_data set ";//将表内当前所有的当前卷标记都置为0
//try
//{
// localConnect.DataBase(sql);
// sql = "";
// DateTime nowtime = DateTime.Now;
// int index = 1;
// foreach (KeyValuePair item in defectList)
// {
// string time = nowtime.AddMilliseconds(-index).ToString("yyyy/MM/dd HH:mm:ss.fff");
// string maxEnergyValue = "0.0";
// //if (defectMaxEnergyValue.ContainsKey(item.Key))
// //{
// // maxEnergyValue = defectMaxEnergyValue[item.Key].ToString();
// //}
// sql += string.Format("insert into t_defect_data (defectstart,defectend,nowFlag,inserttime,defectindex,maxenergy) values ('{0}','{1}','1','{2}','{3}','{4}');", item.Key, item.Value, time, index, maxEnergyValue);
// index++;
// }
// DevelopLog.DeBug.WriteLogFile("info recordocalDefectData:", sql);
// localConnect.DataBase(sql);
//}
//catch (Exception ex)
//{
// DevelopLog.DeBug.WriteLogFile("error recordocalDefectData:", sql);
// return false;
//}
//return true;
}
public bool updateLocalDefectCoilNo(string coldcoilId)//获取钢卷号时,更新缺陷表中的钢卷号
{
DevelopLog.DeBug.WriteLogFile("updateLocalDefectCoilNo:", coldcoilId);
string sql = string.Format("update t_defect_data set coldcoilid = '{0}' where nowFlag = '1';", coldcoilId);//将表内当前卷标记的钢卷号更新
try
{
localConnect.DataBase(sql);
//if (GetDefectSndStatus() == 1)
//{
// return updateL2DefectData(coldcoilId);
//}
}
catch (Exception ex)
{
DevelopLog.DeBug.WriteLogFile("updateLocalDefectCoilNo:", sql);
return false;
}
return true;
}
public bool updateL2DefectData(string coldcoilId)//根据卷号更新L2缺陷表
{
/*DataTable dt = new DataTable();
dt = getLoaclDefectData(coldcoilId);//获取本地缺陷数据包括卷号
if (dt == null || dt.Rows.Count == 0)
{
return false;
}
string updatesql = "";
string MECREATOR = "PC";
string MESID = "2";
string SOURCE = "1";
string ACTION = "1";
string DEFCREATOR = "C502";
string DEFSIDE = "2";
string DEFTYPE = "51B1";
string DEFECTTEXT = "zhendong";
string INTENSITY = "1";
string TURNFLAG = "1";
try
{
if (dt.Rows.Count > 0)
{
LogicConnect con = new LogicConnect(soudb, soudb.Userid);
for (int i = 0; i < dt.Rows.Count; i++)
{
string MEID = dt.Rows[i][3].ToString();
string SID = dt.Rows[i][2].ToString();
string DEFEND = dt.Rows[i][1].ToString();
string DEFSTART = dt.Rows[i][0].ToString();
string INTENSITYVAL = dt.Rows[i][4].ToString();
updatesql = string.Format("insert into DEFECT (MEID,MECREATOR,MESID,SID,SOURCE,ACTION,DEFCREATOR,DEFEND,DEFSIDE,DEFSTART,DEFTYPE,DEFECTTEXT,INTENSITY,INTENSITYVAL,TURNFLAG) values ({0},'{1}',{2},{3},'{4}',{5},'{6}',{7},'{8}',{9},'{10}','{11}','{12}',{13},{14})",
MEID, MECREATOR, MESID, SID, SOURCE, ACTION, DEFCREATOR, DEFEND, DEFSIDE, DEFSTART, DEFTYPE, DEFECTTEXT, INTENSITY, INTENSITYVAL, TURNFLAG);
con.DataBase(updatesql);
DevelopLog.DeBug.WriteLogFile("infoupdateL2DefectData:", updatesql);
}
}
}
catch (Exception ex)
{
DevelopLog.DeBug.WriteLogFile("error:updateL2DefectData:", updatesql);
return false;
}*/
return true;
}
public DataTable getLoaclDefectData(string coldcoilid)//根据卷号获取本地缺陷数据
{
/*DataTable dt = new DataTable();
string muidSql = "";
string maxSidSql = "";
string localDefectSql = "";
try
{
//查询muid
LogicConnect con = new LogicConnect(soudb, soudb.Userid);
muidSql = string.Format("select MEID2PH from SV_MEID where coldcoilid='{0}'", coldcoilid);
DevelopLog.DeBug.WriteLogFile("infomuidSql:", muidSql);
string muid = "";
dt = con.SelTableData("SV_MEID", muidSql);
if (dt.Rows.Count != 1)
{
return null;
}
else
{
muid = dt.Rows[0][0].ToString();
}
DevelopLog.DeBug.WriteLogFile("getLoaclDefectData muid:", muid);
//查询最大SID
maxSidSql = string.Format("select max(SID) from DEFECT where meid='{0}'", muid);
DevelopLog.DeBug.WriteLogFile("infomaxSidSql:", maxSidSql);
int maxSID = 0;
dt = con.SelTableData("DEFECT", maxSidSql);
if (dt.Rows.Count == 1)
{
if (dt.Rows[0][0].ToString().Trim() != "")
{
maxSID = Convert.ToInt32(dt.Rows[0][0]);
}
}
DevelopLog.DeBug.WriteLogFile("getLoaclDefectData muid:", maxSID.ToString());
con = new LogicConnect(desdb, desdb.Userid);
dt = new DataTable();
localDefectSql = string.Format("select defectstart,defectend,defectindex,muid,maxEnergy from t_defect_data where coldcoilid='{0}'", coldcoilid);
DevelopLog.DeBug.WriteLogFile("infolocalDefectSql:", localDefectSql);
dt = con.SelTableData("t_defect_data", localDefectSql);
if (dt.Rows.Count > 0)
{
for (int i = 0; i < dt.Rows.Count; i++)
{
dt.Rows[i][3] = muid;
dt.Rows[i][2] = Convert.ToInt32(dt.Rows[i][2]) + maxSID;
}
}
else
{
return null;
}
}
catch (Exception ex)
{
DevelopLog.DeBug.WriteLogFile("getLoaclDefectData:", localDefectSql);
DevelopLog.DeBug.WriteLogFile("muidSql:", muidSql);
DevelopLog.DeBug.WriteLogFile("maxSidSql:", maxSidSql);
return null;
}
return dt;*/
return null;
}
public void recordLogInfo(string userName, string logInfo)
{
try
{
string insert_sql = string.Format("insert into t_log_info (seqno,username,loginfo) values((select max(seqno) + 1 from t_log_info),'{0}','{1}')",
userName, logInfo);
localConnect.DataBase(insert_sql);
}
catch (Exception ex)
{
DevelopLog.DeBug.WriteLogFile("recordLogInfo", ex.ToString());
recordLogInfoFirst(userName, logInfo);
}
}
public void recordLogInfoFirst(string userName, string logInfo)
{
try
{
string insert_sql = string.Format("insert into t_log_info (seqno,username,loginfo) values(1,'{0}','{1}')",
userName, logInfo);
localConnect.DataBase(insert_sql);
}
catch (Exception ex)
{
DevelopLog.DeBug.WriteLogFile("recordLogInfoFirst", ex.ToString());
}
}
public DataTable GetLogInfoByDate(DateTime startTime, DateTime endTime)
{
try
{
string select_sql = string.Format("select seqno,to_char(toc,'YYYY-MM-DD HH24:MI:SS'),loginfo,username from t_log_info where toc<='{0}'and toc>='{1}' and seqno >0", endTime, startTime);
select_sql += " order by seqno desc";
return localConnect.DataBase(select_sql);
}
catch (Exception ex)
{
throw ex;
}
}
///
/// 获取基本配置参数,包括报警次数,采样点数等
///
///
public DataTable GetBaseConfig()
{
string sql_str = "select key,value from t_dict_data;";
try
{
DataTable dt = localConnect.DataBase(sql_str);
return dt;
}
catch (Exception ex)
{
DevelopLog.DeBug.WriteLogFile("GetBaseConfig()", ex.ToString());
DataTable errdt = new DataTable();
return errdt;
}
}
///
/// 获取报警参数
///
///
public DataTable GetAlarmParam()
{
string sql_str = "select standno,alarmspeed,lowpassl,lowpassu,lowalarmvalue,lowdefectvalue,midpassl," +
"midpassu,midalarmvalue,middefectvalue,highpassl,highpassu,highalarmvalue,highdefectvalue," +
"alarmtimes_l,alarmtimes_m,alarmtimes_h from t_alarm_param order by standno ,alarmspeed ;";
try
{
DataTable dt = localConnect.DataBase(sql_str);
return dt;
}
catch (Exception ex)
{
DevelopLog.DeBug.WriteLogFile("GetBaseConfig()", ex.ToString());
DataTable errdt = new DataTable();
return errdt;
}
}
///
/// 获取指定机架的报警参数
///
///
///
public DataTable GetAlarmParamByStanNo(int standNo)
{
string sql_str = "select alarmspeed,lowpassl,lowpassu,lowalarmvalue,lowdefectvalue,midpassl," +
"midpassu,midalarmvalue,middefectvalue,highpassl,highpassu,highalarmvalue,higdefectvalue from t_alarm_param" +
String.Format(" where standno={};", standNo);
try
{
DataTable dt = localConnect.DataBase(sql_str);
return dt;
}
catch (Exception ex)
{
DevelopLog.DeBug.WriteLogFile("GetBaseConfig()", ex.ToString());
DataTable errdt = new DataTable();
return errdt;
}
}
///
/// 新增报警参数记录
///
///
///
public void AddAlarmParamByStandNo(EntityAlarmSpeed data, int standNo)
{
try
{
string insert_sql = "insert into t_alarm_param (standno,alarmspeed,lowpassl," +
"lowpassu,lowalarmvalue,lowdefectvalue,midpassl,midpassu,midalarmvalue,middefectvalue,highpassl," + String.Format("highpassu,highalarmvalue,highdefectvalue) values({0},{1},{2},{3},{4},{5},{6},{7},{8},{9},{10},{11},{12},{13})", standNo,
data.alarmSpeed, data.lowPassL, data.lowPassU, data.lowAlarmValue, data.lowDefectValue, data.midPassL, data.midPassU,
data.midAlarmValue, data.midDefectValue, data.highPassL, data.highPassU, data.highAlarmValue, data.highDefectValue);
;
localConnect.DataBase(insert_sql);
}
catch (Exception ex)
{
DevelopLog.DeBug.WriteLogFile("AddAlarmParamByStandNo", ex.ToString());
}
}
///
/// 单个机架报警参数更新
///
///
///
public void UpdateAlarmParamByStandNo(IList data, int standNo)
{
if (data == null || data.Count == 0)
{
return;
}
if (standNo > 0 && standNo < SysParam.Instance.SpeedChannelCount + 1)
{
//报警参数
DeleteAlarmParamByStandNo(standNo);
try
{
foreach (EntityAlarmSpeed item in data)
{
AddAlarmParamByStandNo(item, standNo);
}
}
catch (Exception ex)
{
DevelopLog.DeBug.WriteLogFile("SaveAlarmParam", String.Format("standno:{0},Error:", standNo) + ex.ToString());
}
//报警次数
UpdateAlarmTimes(standNo, SysParam.Instance.channel[standNo - 1].alarmTimes_l,
SysParam.Instance.channel[standNo - 1].alarmTimes_m,
SysParam.Instance.channel[standNo - 1].alarmTimes_h);
}
}
///
/// 删除指定机架的报警参数
///
///
public void DeleteAlarmParamByStandNo(int standNo)
{
string delete_sql = String.Format("delete from t_alarm_param where standno = {0};", standNo);
try
{
localConnect.DataBase(delete_sql);
}
catch (Exception ex)
{
DevelopLog.DeBug.WriteLogFile("GetBaseConfig()", ex.ToString());
}
}
///
/// 保存有速度机架的整个报警参数
///
///
///
public bool SaveAlarmParam(Dictionary> datas)
{
//报警参数
foreach (KeyValuePair> items in datas)
{
if (items.Value != null && items.Value.Count > 0)
{
int standNoi = items.Key + 1;
if (standNoi > 0 && standNoi < SysParam.Instance.SpeedChannelCount + 1)
{
DeleteAlarmParamByStandNo(standNoi);
try
{
foreach (EntityAlarmSpeed item in items.Value)
{
AddAlarmParamByStandNo(item, standNoi);
}
}
catch (Exception ex)
{
DevelopLog.DeBug.WriteLogFile("SaveAlarmParam", String.Format("standno:{0},Error:", standNoi) + ex.ToString());
return false;
}
}
}
}
//报警次数
for (int i = 0; i < SysParam.Instance.SpeedChannelCount; i++)
{
UpdateAlarmTimes(i + 1, SysParam.Instance.channel[i].alarmTimes_l,
SysParam.Instance.channel[i].alarmTimes_m,
SysParam.Instance.channel[i].alarmTimes_h);
}
return true;
}
///
/// 将数据库报警参数更新到系统
///
public void autoUpdateAlarmParam()
{
//报警参数
DataTable eas = GetAlarmParam();
if (eas == null)
{
return;
}
try
{
Dictionary> config_base = new Dictionary>();
for (int i = 0; i < eas.Rows.Count; i++)
{
DataRow row = eas.Rows[i];
EntityAlarmSpeed itemdata = new EntityAlarmSpeed();
int standNo = Convert.ToInt32(row["standno"]);
itemdata.alarmSpeed = Convert.ToInt32(row["alarmspeed"]);
itemdata.lowPassL = Convert.ToInt32(row["lowpassl"]);
itemdata.lowPassU = Convert.ToInt32(row["lowpassu"]);
itemdata.lowAlarmValue = Convert.ToSingle(row["lowalarmvalue"]);
itemdata.lowDefectValue = Convert.ToSingle(row["lowdefectvalue"]);
itemdata.midPassL = Convert.ToInt32(row["midpassl"]);
itemdata.midPassU = Convert.ToInt32(row["midpassu"]);
itemdata.midAlarmValue = Convert.ToSingle(row["midalarmvalue"]);
itemdata.midDefectValue = Convert.ToSingle(row["middefectvalue"]);
itemdata.highPassL = Convert.ToInt32(row["highpassl"]);
itemdata.highPassU = Convert.ToInt32(row["highpassu"]);
itemdata.highAlarmValue = Convert.ToSingle(row["highalarmvalue"]);
itemdata.highDefectValue = Convert.ToSingle(row["highdefectvalue"]);
if (!config_base.ContainsKey(standNo - 1))
{
IList itemlist = new List();
config_base.Add(standNo - 1, itemlist);
}
config_base[standNo - 1].Add(itemdata);
}
for (int j = 0; j < config_base.Keys.Count; j++)
{
SysParam.Instance.channel[j].alarmConfig = config_base[j].ToArray();//报警参数
//eas.Select(String.Format("standno={0}", j + 1));
DataRow dr = eas.Select(String.Format("standno={0}", j + 1))[0];
SysParam.Instance.channel[j].alarmTimes_l = Convert.ToInt32(dr["alarmtimes_l"]);//报警次数
SysParam.Instance.channel[j].alarmTimes_m = Convert.ToInt32(dr["alarmtimes_m"]);//报警次数
SysParam.Instance.channel[j].alarmTimes_h = Convert.ToInt32(dr["alarmtimes_h"]);//报警次数
}
Console.WriteLine("test");
}
catch (Exception ex)
{
DevelopLog.DeBug.WriteLogFile("autoUpdateAlarmParam", ex.Message);
}
//报警次数
//DataTable kv = GetBaseConfig();
//if (kv == null)
//{
// return;
//}
//else
//{
// try
// {
// for (int i = 0; i < kv.Rows.Count; i++)
// {
// string keyi = Convert.ToString(kv.Rows[i]["key"]);
// if (keyi == "alarmTimes_l" || keyi == "alarmTimes_m" || keyi == "alarmTimes_h")
// {
// for (int j = 0; j < SysParam.Instance.SpeedChannelCount; j++)
// {
// if (keyi == "alarmTimes_l")
// {
// SysParam.Instance.channel[j].alarmTimes_l = Convert.ToInt32(kv.Rows[i]["value"]);
// }
// else if (keyi == "alarmTimes_m")
// {
// SysParam.Instance.channel[j].alarmTimes_m = Convert.ToInt32(kv.Rows[i]["value"]);
// }
// else
// {
// SysParam.Instance.channel[j].alarmTimes_h = Convert.ToInt32(kv.Rows[i]["value"]);
// }
// //else if(keyi == "vibSens")
// //{
// // SysParam.Instance.channel[j].vibSens = Convert.ToInt32(kv.Rows[i]["value"]);
// //}
// //else
// //{
// // SysParam.Instance.channel[j].speedSens = Convert.ToInt32(kv.Rows[i]["value"]);
// //}
// //else
// //{
// // DevelopLog.DeBug.WriteLogFile("autoUpdateAlarmParam-BaseConfig", "Error:参数异常,key="+keyi);
// //}
// }
// }
// //else if (keyi == "samplePoint")
// //{
// // SysParam.Instance.samplePoint = Convert.ToInt32(kv.Rows[i]["value"]);
// //}
// //else if (keyi == "sampleFre")
// //{
// // SysParam.Instance.sampleFre = Convert.ToInt32(kv.Rows[i]["value"]);
// //}
// }
// }
// catch (Exception ex)
// {
// DevelopLog.DeBug.WriteLogFile("autoUpdateAlarmParam-BaseConfig", ex.Message);
// }
//}
}
public void UpdateAlarmTimes(int standNo, int l, int m, int h)
{
if (l < 0 || m < 0 || h < 0 || standNo < 0 || standNo > SysParam.Instance.SpeedChannelCount)
{
DevelopLog.DeBug.WriteLogFile("UpdateAlarmTimes",
String.Format("参数异常:standNo={0},l={1},m={2},h={3}", standNo, l, m, h));
return;
}
try
{
string update_sql = String.Format("update t_alarm_param set alarmtimes_l={0},alarmtimes_m={1},alarmtimes_h={2} where standno={3};", l, m, h, standNo);
localConnect.DataBase(update_sql);
}
catch (Exception ex)
{
DevelopLog.DeBug.WriteLogFile("UpdateAlarmTimes", ex.ToString());
}
}
}
}