You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

479 lines
17 KiB
C#

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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;
}
}
/// <summary>
/// 获取当前机种信息
/// </summary>
/// <returns></returns>
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 "";
}
}
/// <summary>
/// 插入报警信息
/// </summary>
/// <param name="WorkName">电脑名字</param>
/// <param name="info"></param>
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);
}
}
/// <summary>
/// 获取最新交接班信息
/// </summary>
/// <param name="key"></param>
/// <returns></returns>
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;
}
}
/// <summary>
/// 获取当前机种
/// </summary>
/// <param name="MachineID"></param>
/// <returns></returns>
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;
}
}
/// <summary>
/// 获取当前产品的投产时间
/// </summary>
/// <param name=""></param>
/// <returns></returns>
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;
}
}
/// <summary>
/// 获取产品是否合格
/// </summary>
/// <param name="Rfid"></param>
/// <returns></returns>
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;
}
}
}