using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Mesnac.Basic;
using Mesnac.Codd.Session;
using System.Data;
using Mesnac.Compressor.Entity;
using Mesnac.Compressor.Unity;
using System.Windows.Forms;
namespace Mesnac.Compressor.Data
{
public class DbHandler
{
public DbHelper dbHelper;
public DataBHandler localDB = new DataBHandler();
private DataSourceFactory dsFactory=DataSourceFactory.Instance;
public DbHandler()
{
if (Common.Instance.ReadLocalDB)
{
return;
}
try
{
//网络服务器
dbHelper = dsFactory.GetDbHelper("DataSource1");
}
catch
{
ConnectShow();
throw;
}
}
private void ConnectShow()
{
Common.Instance.ServerConnect = false;
FrmConnnectFlag frm = new FrmConnnectFlag();
frm.ShowDialog();
}
public void ExecSql(string sql)
{
if (dbHelper == null || Common.Instance.ReadLocalDB)
{
localDB.ExecSql(sql);
return;
}
try
{
dbHelper.CommandText = sql;
dbHelper.ExecuteNonQuery();
}
catch (Exception e)
{
ICSharpCode.Core.LoggingService.Error("Insert语句错误:" + e.ToString());
ICSharpCode.Core.LoggingService.Error("Insert语句错误:" + sql);
//ConnectShow();
localDB.ExecSql(sql);
}
}
public string GetLastMainBarcode(string code)
{
if (dbHelper == null || Common.Instance.ReadLocalDB)
{
return localDB.GetLastMainBarcode(code);
}
try
{
dbHelper.ClearParameter();
dbHelper.CommandType = CommandType.Text;
dbHelper.CommandText = "";
StringBuilder sb = new StringBuilder();
sb.Append("EXEC SP_Pro_GetNewMainBarcode '");
sb.Append(code).Append("'");
dbHelper.CommandText = sb.ToString();
return dbHelper.ToScalar().ToString();
}
catch (Exception ex)
{
ICSharpCode.Core.LoggingService.Error(string.Format(ex.ToString()));
ConnectShow();
return localDB.GetLastMainBarcode(code);
}
}
public string GetLastSemiBarcode(string code,string lineID)
{
if (dbHelper == null || Common.Instance.ReadLocalDB)
{
return localDB.GetLastSemiBarcode(code);
}
try
{
dbHelper.ClearParameter();
dbHelper.CommandType = CommandType.Text;
dbHelper.CommandText = "";
StringBuilder sb = new StringBuilder();
sb.Append("EXEC SP_Pro_GetNewSemiBarcode '");
sb.Append(code).Append("','").Append(lineID).Append("'");
dbHelper.CommandText = sb.ToString();
return dbHelper.ToScalar().ToString();
}
catch (Exception ex)
{
ICSharpCode.Core.LoggingService.Error("网络服务器连接错误");
ConnectShow();
return localDB.GetLastSemiBarcode(code);
}
}
public void InsertTrace(string barcode, string SemiACode, string machineID)
{
if (dbHelper == null || Common.Instance.ReadLocalDB)
{
localDB.InsertTrace(barcode, SemiACode,0);
return;
}
try
{
dbHelper.ClearParameter();
dbHelper.CommandType = CommandType.Text;
dbHelper.CommandText = "";
string sql = "EXEC SP_Pro_InsertTraceStation @semiBarcode,@mainBarcode,@MachineID";
dbHelper.AddParameter("@semiBarcode", SemiACode);
dbHelper.AddParameter("@mainBarcode", barcode);
dbHelper.AddParameter("@MachineID", machineID);
dbHelper.CommandText = sql;
dbHelper.ExecuteNonQuery();
//localDB.InsertTrace(barcode, SemiACode, 1);
}
catch (Exception ex)
{
ICSharpCode.Core.LoggingService.Error(string.Format(ex.ToString()));
localDB.InsertTrace(barcode, SemiACode, 0);
ConnectShow();
return;
}
}
///
/// 获取当前机种信息
///
///
public string GetCurrentMachineInfo()
{
//MachineInfo Minfo = new MachineInfo();
if (dbHelper == null || Common.Instance.ReadLocalDB)
{
return "";
//return Minfo;
}
try
{
dbHelper.ClearParameter();
dbHelper.CommandType = CommandType.Text;
dbHelper.CommandText = "";
string sql = "Exec SP_Pro_ChangeProduct";
dbHelper.CommandText = sql;
return dbHelper.ToScalar().ToString();
}
catch (Exception ex)
{
ICSharpCode.Core.LoggingService.Error(string.Format(ex.ToString()));
return "";
}
}
///
/// 插入报警信息
///
/// 电脑名字
///
public void InsertAlarmInfo(string WorkName,AlarmInfo info)
{
if (dbHelper == null || Common.Instance.ReadLocalDB)
{
return;
}
try
{
dbHelper.ClearParameter();
dbHelper.CommandType = CommandType.Text;
dbHelper.CommandText = "";
StringBuilder sb = new StringBuilder();
sb.Append("INSERT INTO dbo.T_BD_UniteAlarmInfo(ComputerName,UniteID,AlarmInfo,AlarmIndex,RecordTime )VALUES ('");
sb.Append(WorkName).Append("','");
sb.Append(info.AlarmUnit.ToString()).Append("','");
sb.Append(info.AlarmString).Append("','");
sb.Append(info.AlarmIndex.ToString()).Append("',");
sb.Append("GETDATE()").Append(")");
dbHelper.CommandText = sb.ToString();
dbHelper.ExecuteNonQuery();
}
catch (Exception ex)
{
ICSharpCode.Core.LoggingService.Error(string.Format(ex.ToString()));
return;
}
}
#region ActionDb
public DataTable SelectAlarmInfo(string ComputerName)
{
if (dbHelper == null)
{
return null;
}
try
{
dbHelper.ClearParameter();
dbHelper.CommandType = CommandType.Text;
dbHelper.CommandText = "";
StringBuilder sb = new StringBuilder();
sb.Append("select 序号 = row_number() over(order by RecordTime desc),AlarmIndex as '报警单元',AlarmInfo as '报警信息 (一小时)' ,RecordTime as '报警时间' from dbo.T_BD_UniteAlarmInfo where ComputerName= '");
sb.Append(ComputerName).Append("'");
sb.Append(" AND RecordTime>=DATEADD(HH,-1,GETDATE())");
dbHelper.CommandText = sb.ToString();
DataTable dt= dbHelper.ToDataTable();
return dt;
}
catch (Exception ex)
{
ICSharpCode.Core.LoggingService.Error(string.Format(ex.ToString()));
return null;
}
}
#endregion
//工作完成
public void WorkFinish(string RFID,string bigcode,string serialnum)
{
if (dbHelper == null || Common.Instance.ReadLocalDB)
{
localDB.WorkFinish(RFID, bigcode, serialnum,0);
return;
}
try
{
dbHelper.ClearParameter();
dbHelper.CommandType = CommandType.Text;
dbHelper.CommandText = "";
StringBuilder sb = new StringBuilder();
sb.Append("Exec SP_Pro_ProductionInfo '").Append(RFID).Append("','");
sb.Append(bigcode).Append("','");
sb.Append(serialnum).Append("'");
dbHelper.CommandText = sb.ToString();
ICSharpCode.Core.LoggingService.Info(string.Format(sb.ToString()));
dbHelper.ExecuteNonQuery();
}
catch (Exception ex)
{
ICSharpCode.Core.LoggingService.Error(string.Format(ex.ToString()));
ConnectShow();
localDB.WorkFinish(RFID, bigcode, serialnum, 0);
}
}
///
/// 获取最新交接班信息
///
///
///
public ShiftInfo GetShiftInfo()
{
if (dbHelper == null || Common.Instance.ReadLocalDB)
{
return localDB.GetShiftInfo();
//return null;
}
try
{
dbHelper.ClearParameter();
dbHelper.CommandType = CommandType.Text;
dbHelper.CommandText = "";
string sql = "SELECT TOP(1)ShiftNo,GroupID,a.ShiftID, b.ShiftName,a.CarryTime FROM dbo.T_RP_ShiftInfo a LEFT JOIN dbo.T_HR_Shift b ON a.ShiftID=b.ShiftID ORDER BY CarryTime DESC ";
dbHelper.CommandText = sql;
DataTable dt= dbHelper.ToDataTable();
ShiftInfo shift = new ShiftInfo();
shift.carryTime = dt.Rows[0]["CarryTime"].ToString();
shift.shiftNo = dt.Rows[0]["ShiftNo"].ToString();
shift.shiftID = dt.Rows[0]["ShiftID"].ToString();
shift.groupID = dt.Rows[0]["GroupID"].ToString();
shift.shiftName = dt.Rows[0]["ShiftName"].ToString();
return shift;
}
catch (Exception ex)
{
ICSharpCode.Core.LoggingService.Error(string.Format(ex.ToString()));
return localDB.GetShiftInfo();
//return null;
}
}
public int GetCurrentMachine()
{
if (dbHelper == null || Common.Instance.ReadLocalDB)
{
return localDB.GetCurrentMachine();
//return 0;
}
try
{
dbHelper.ClearParameter();
dbHelper.CommandType = CommandType.Text;
dbHelper.CommandText = "";
string sql = "SELECT TOP(1) ProductChangingID FROM dbo.T_RP_ProductChangeLog ORDER BY ChangeTime DESC ";
dbHelper.CommandText = sql;
return Convert.ToInt32(dbHelper.ToScalar());
}
catch (Exception ex)
{
ICSharpCode.Core.LoggingService.Error(string.Format(ex.ToString()));
ConnectShow();
return localDB.GetCurrentMachine();
//return 0;
}
}
///
/// 获取当前机种
///
///
///
public DataTable GetCurrentMachine(int MachineID)
{
if (dbHelper == null || Common.Instance.ReadLocalDB)
{
return localDB.GetCurrentMachine(MachineID);
//return null;
}
try
{
dbHelper.ClearParameter();
dbHelper.CommandType = CommandType.Text;
dbHelper.CommandText = "";
string sql = " SELECT * FROM dbo.T_BD_ProductInfo WHERE ProductID='" + MachineID.ToString()+"'";
dbHelper.CommandText = sql;
return dbHelper.ToDataTable();
}
catch (Exception ex)
{
ICSharpCode.Core.LoggingService.Error(string.Format(ex.ToString()));
ConnectShow();
return localDB.GetCurrentMachine(MachineID);
//return null;
}
}
///
/// 获取当前产品的投产时间
///
///
///
public string GetProductBeginTime(string mainbarcode)
{
if (dbHelper == null || Common.Instance.ReadLocalDB)
{
localDB.GetProductBeginTime(mainbarcode);
return null;
}
try
{
dbHelper.ClearParameter();
dbHelper.CommandType = CommandType.Text;
dbHelper.CommandText = "";
string sql = " SELECT top(1) BeginTime FROM dbo.T_SY_TraceState WHERE Barcode='" + mainbarcode + "'";
dbHelper.CommandText = sql;
return dbHelper.ToScalar().ToString();
}
catch (Exception ex)
{
ICSharpCode.Core.LoggingService.Error(string.Format(ex.ToString()));
ConnectShow();
localDB.GetProductBeginTime(mainbarcode);
return null;
}
}
public object GetStationData(string stationID)
{
if (dbHelper == null)
{
return null;
}
try
{
dbHelper.ClearParameter();
dbHelper.CommandType = CommandType.Text;
dbHelper.CommandText = "";
StringBuilder sb = new StringBuilder();
sb.Append("Exec SP_Pro_StationDataNew '").Append(stationID).Append("','");
sb.Append(DateTime.Now.ToString("yyyy-MM-dd")).Append("','");
sb.Append(DateTime.Now.AddDays(1).ToString("yyyy-MM-dd")).Append("'");
dbHelper.CommandText = sb.ToString();
//ICSharpCode.Core.LoggingService.Info(string.Format(sb.ToString()));
return dbHelper.ToDataSet();
}
catch (Exception ex)
{
ICSharpCode.Core.LoggingService.Error(string.Format(ex.ToString()));
return null;
}
}
///
/// 获取产品是否合格
///
///
///
public WorkTray GetProductQuality(string Rfid)
{
ICSharpCode.Core.LoggingService.Fatal("查询本地数据库");
WorkTray tray = new WorkTray();
try
{
if (dbHelper == null)
{
return null;
}
dbHelper.ClearParameter();
dbHelper.CommandType = CommandType.Text;
dbHelper.CommandText = "";
StringBuilder sb = new StringBuilder();
sb.Append("select * from T_RP_WorkTrayRealTimeInfo where RFIDNum='").Append(Rfid).Append("'");
//ICSharpCode.Core.LoggingService.Debug("sql语句:"+sb.ToString());
dbHelper.CommandText = sb.ToString();
DataTable dt = dbHelper.ToDataTable();
if (dt != null && dt.Rows.Count > 0)
{
tray.RfidNum = dt.Rows[0]["RFIDNum"].ToString();
tray.MainBarcode = dt.Rows[0]["barCode"].ToString();
tray.SemiBarcode = dt.Rows[0]["SemiBarcode"].ToString();
string Okng = dt.Rows[0]["State"].ToString();
tray.InsertTime = dt.Rows[0]["updateTime"].ToString();
int outvalue = 0;
//调试用
//ICSharpCode.Core.LoggingService.Debug(dt.Rows[0]["RFIDNum"].ToString() + " barcode:" + dt.Rows[0]["barcode"].ToString() + " SemiBarcode:" + dt.Rows[0]["SemiBarcode"].ToString() + " State:" + dt.Rows[0]["State"].ToString() + " CurrentStation:" + dt.Rows[0]["CurrentStation"].ToString());
//调试完成
if (int.TryParse(Okng.Trim(), out outvalue))
{
tray.OKNG = outvalue;
}
else
{
//质量转换错误,默认为1
ICSharpCode.Core.LoggingService.Info("质量转换错误,默认为1");
tray.OKNG = 1;
}
}
}
catch (Exception e)
{
ICSharpCode.Core.LoggingService.Error(string.Format(e.ToString()));
ConnectShow();
}
return tray;
}
}
}