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.

796 lines
29 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;
using System.Data.SqlClient;
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("DataSource2");
if (dbHelper == null)
{
string constr = System.Configuration.ConfigurationManager.AppSettings["SqlString"];
DbSession dbsession = new DbSession(SqlClientFactory.Instance, constr);
dbHelper = new DbHelper(dbsession);
}
}
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);
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 GetNowProductionInfo()
{
if (dbHelper == null || Common.Instance.ReadLocalDB)
{
return null;
}
try
{
dbHelper.ClearParameter();
dbHelper.CommandType = CommandType.Text;
dbHelper.CommandText = "";
string sql = " SELECT top(1) ProductId FROM dbo.T_RP_ProductChangeInfo WHERE LineName='A'";
dbHelper.CommandText = sql;
return dbHelper.ToScalar().ToString();
}
catch (Exception ex)
{
ICSharpCode.Core.LoggingService.Error(string.Format(ex.ToString()));
return null;
}
}
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("GetLastSemiBarcode" + ex.ToString());
//ConnectShow();
return localDB.GetLastSemiBarcode(code);
}
}
public void InsertTrace(string barcode, string SemiACode, string ProductBarCode, string machineID)
{
if (dbHelper == null)
{
return;
}
try
{
dbHelper.ClearParameter();
dbHelper.CommandType = CommandType.Text;
dbHelper.CommandText = "";
string sql = "EXEC SP_Pro_ChongtouInsertTraceStation @semiBarcode,@mainBarcode,@ProductBarCode,@MachineID";
dbHelper.AddParameter("@semiBarcode", SemiACode);
dbHelper.AddParameter("@mainBarcode", barcode);
dbHelper.AddParameter("@ProductBarCode", ProductBarCode);
dbHelper.AddParameter("@MachineID", machineID);
dbHelper.CommandText = sql;
dbHelper.ExecuteNonQuery();
//localDB.InsertTrace(barcode, SemiACode, 1);
}
catch (Exception ex)
{
return;
}
}
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;
}
}
public string GetProductInfoByBarCode(string barcode)
{
if (dbHelper == null || Common.Instance.ReadLocalDB)
{
return null;
}
try
{
dbHelper.ClearParameter();
dbHelper.CommandType = CommandType.Text;
dbHelper.CommandText = "";
string sql = " SELECT top(1) ProductID FROM dbo.T_SY_TraceState WHERE ProductBarcode='" + barcode + "'";
dbHelper.CommandText = sql;
return dbHelper.ToScalar().ToString();
}
catch (Exception ex)
{
ICSharpCode.Core.LoggingService.Error(string.Format(ex.ToString()));
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)
{
string CurrentStation = "";
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 [RFIDNum],[barCode],[SemiBarcode],[CurrentStation],t2.StationName,[State],t1.[updateTime],[UsedFlag],[InsertTime],[DeleteTime] FROM T_RP_WorkTrayRealTimeInfo t1 LEFT JOIN dbo.T_BD_SubStation t2 ON t1.CurrentStation = t2.StationID 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();
if (dt.Rows[0]["State"] != null && dt.Rows[0]["State"] != DBNull.Value)
{
CurrentStation = dt.Rows[0]["CurrentStation"].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;
//ICSharpCode.Core.LoggingService.Debug("检测到产品在[" + CurrentStation + "]工位合格");
}
else
{
//质量转换错误默认为1
ICSharpCode.Core.LoggingService.Info("产品是否合格质量转换错误默认为1");
tray.OKNG = 1;
}
}
}
catch (Exception e)
{
ICSharpCode.Core.LoggingService.Error(string.Format(e.ToString()));
////ConnectShow();
}
return tray;
}
/// <summary>
/// 获取托盘信息
/// </summary>
/// <param name="Rfid"></param>
/// <returns></returns>
public WorkTray GetTrayInfoByBarcode(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 SemiBarcode='").Append(Rfid).Append("'");
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;
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;
}
#region 尹治丰 2023-3-2
public bool CurrentStationHaveWork(string stationID, string RFID)
{
ICSharpCode.Core.LoggingService.Debug("校验工位" + stationID + "校验托盘" + RFID);
if (dbHelper == null || Common.Instance.ReadLocalDB)
{
//return localDB.CurrentStationHaveWork(stationID, RFID);
return false;
}
try
{
dbHelper.ClearParameter();
dbHelper.CommandType = CommandType.Text;
dbHelper.CommandText = "";
string sql = "Exec SP_Pro_CurruntState @RFID,@stationID";
dbHelper.AddParameter("@RFID", RFID);
dbHelper.AddParameter("@stationID", stationID);
dbHelper.CommandText = sql;
var obj = dbHelper.ToScalar();
int result = Convert.ToInt32(obj);
if (result <= 1)
{
return false;
}
else
{
return true;
}
}
catch (Exception ex)
{
ICSharpCode.Core.LoggingService.Error(ex.ToString());
////ConnectShow();
//return localDB.CurrentStationHaveWork(stationID, RFID);
return false;
}
}
public bool Chongtou(string barcode, string RFID)
{
//ICSharpCode.Core.LoggingService.Debug("校验工位" + stationID + "校验托盘" + RFID);
//if (dbHelper == null || Common.Instance.ReadLocalDB)
//{
// //return localDB.CurrentStationHaveWork(stationID, RFID);
// return false;
//}
try
{
dbHelper.ClearParameter();
dbHelper.CommandType = CommandType.Text;
dbHelper.CommandText = "";
string sql = "Exec SP_Pro_ChongTou @RFID,@SemiBarcode";
dbHelper.AddParameter("@RFID", RFID);
dbHelper.AddParameter("@SemiBarcode", barcode);
dbHelper.CommandText = sql;
var obj = dbHelper.ToScalar();
int result = Convert.ToInt32(obj);
if (result < 1)
{
return false;
}
else
{
return true;
}
}
catch (Exception ex)
{
ICSharpCode.Core.LoggingService.Error("重投" + ex.ToString());
////ConnectShow();
//return localDB.CurrentStationHaveWork(stationID, RFID);
return false;
}
}
/// <summary>
/// 获取上一工位信息
/// </summary>
/// <param name="Rfid"></param>
/// <param name="stationid"></param>
/// <returns></returns>
public bool GetPreWorkInfo(string Rfid, string stationid)
{
//根据当前工位获取前一工位数据
//然后获取前一工位信息
if (dbHelper == null || Common.Instance.ReadLocalDB)
{
return false;
//return localDB.GetPreWorkInfo(Rfid, stationid);
}
try
{
dbHelper.ClearParameter();
dbHelper.CommandType = CommandType.Text;
dbHelper.CommandText = "";
StringBuilder sb = new StringBuilder();
sb.Append("SELECT StationID FROM dbo.T_BD_SubStation a LEFT JOIN dbo.T_RP_WorkTrayRealTimeInfo b ON a.PreStationID=b.CurrentStation WHERE b.RFIDNum='").Append(Rfid).Append("'");
dbHelper.CommandText = sb.ToString();
DataTable dt = dbHelper.ToDataTable();
if (dt.Rows.Count < 1)
{
ICSharpCode.Core.LoggingService.Warn("工位:" + stationid + " 信息:托盘 " + Rfid + ":上工位信息为空");
return false;
}
string currentStation = dt.Rows[0]["StationID"].ToString();
if (stationid == currentStation)
{
return true;
}
else
{
ICSharpCode.Core.LoggingService.Warn("工位:" + stationid + " 信息:托盘 " + Rfid + ":不等于"+ currentStation);
return false;
}
}
catch
{
return false;
}
}
#endregion
/// <summary>
/// 动静盘关系绑定插库
/// </summary>
public void InsertDJRelationShip(string DPBarCode,string JPBarCode)
{
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_DJP_BarCodeRelationShip(DPBarCode,JPBarCode )VALUES ('");
sb.Append(DPBarCode.ToString()).Append("','");
sb.Append(JPBarCode.ToString()).Append("')");
dbHelper.CommandText = sb.ToString();
dbHelper.ExecuteNonQuery();
}
catch (Exception ex)
{
ICSharpCode.Core.LoggingService.Error(string.Format(ex.ToString()));
return;
}
}
/// <summary>
/// 通过壳体条码查系统M码
/// </summary>
/// <param name="MachineID"></param>
/// <returns></returns>
public string GetMbarcode(string barcode)
{
if (dbHelper == null)
{
return null;
}
try
{
dbHelper.ClearParameter();
dbHelper.CommandType = CommandType.Text;
dbHelper.CommandText = "";
string sql = "select top(1)* from T_SY_TraceState where ProductBarcode='" + barcode + "' order by BeginTime desc ";
dbHelper.CommandText = sql;
DataTable dt = dbHelper.ToDataTable();
string Mbarcode = dt.Rows[0]["Barcode"].ToString();
return Mbarcode;
}
catch (Exception ex)
{
ICSharpCode.Core.LoggingService.Error(string.Format(ex.ToString()));
return null;
}
}
}
}