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.

696 lines
24 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.Codd.Session;
using System.Data;
using System.Data.SqlClient;
namespace Mesnac.Compressor.Data
{
public class DbHandler
{
public DbHelper dbHelper;
public string constr = System.Configuration.ConfigurationManager.AppSettings["SqlString"];
public DbHandler()
{
initDB();
}
public void initDB()
{
DbSession dbsession = new DbSession(SqlClientFactory.Instance, constr);
dbHelper = new DbHelper(dbsession);
if (dbHelper != null)
{
Console.WriteLine("数据库初始化成功");
}
}
#region 参考
public bool GetStationNGBySemiBarCode(string SemiBarCode)
{
bool iflag = false;
try
{
DbHandler db = new DbHandler();
if (db.dbHelper == null)
{
return iflag;
}
db.dbHelper.ClearParameter();
db.dbHelper.CommandType = CommandType.Text;
db.dbHelper.CommandText = "";
string sql = "Exec pro_AllProductionQualityInfo @BarCode";
db.dbHelper.AddParameter("@BarCode", SemiBarCode);
db.dbHelper.CommandText = sql;
DataSet ds = (DataSet)db.dbHelper.ToDataSet();
DataTable dt = ds.Tables[0];
if (dt != null && dt.Rows.Count > 0)
{
for (int i = 0; i < dt.Rows.Count; i++)
{
string s = dt.Rows[i]["State"].ToString();
if (dt.Rows[i]["State"].ToString() == "2")
{
iflag = true;
return iflag;
}
else if (dt.Rows[i]["State"].ToString() == null || dt.Rows[i]["State"].ToString() == "")
{
iflag = true;
return iflag;
}
}
}
return iflag;
}
catch (Exception ex)
{
return iflag;
}
}
public DataTable GetStationList(string station)
{
if (dbHelper == null)
{
return null;
}
dbHelper.ClearParameter();
dbHelper.CommandType = CommandType.Text;
dbHelper.CommandText = "";
StringBuilder sb = new StringBuilder();
sb.Append("SELECT StationID,StationCode,StationName FROM dbo.T_BD_SubStation where StationID>27 and StationID in ('28','32','37','39','41','43','44','46' ) and StationID<=").Append(station).Append(" ORDER BY StationID");
dbHelper.CommandText = sb.ToString();
Console.WriteLine(sb.ToString());
DataTable dt = dbHelper.ToDataTable();
return dt;
}
public string LastWorkProductionInfo(string barcode, string TableName)
{
string iflag = "";
try
{
StringBuilder sb = new StringBuilder();
DbHandler db = new DbHandler();
if (db.dbHelper == null)
{
return iflag;
}
sb.Append(" SELECT TOP(1) State FROM " + TableName + " WHERE ScanBarcode='").Append(barcode).Append("' order by InsertTime desc ");
db.dbHelper.ClearParameter();
db.dbHelper.CommandType = CommandType.Text;
db.dbHelper.CommandText = "";
db.dbHelper.CommandText = sb.ToString();
return db.dbHelper.ToScalar().ToString();
}
catch (Exception ex)
{
return iflag;
}
}
public DataTable GetReStartStationList()
{
if (dbHelper == null)
{
return null;
}
dbHelper.ClearParameter();
dbHelper.CommandType = CommandType.Text;
dbHelper.CommandText = "";
StringBuilder sb = new StringBuilder();
//sb.Append("SELECT StationID,StationCode,StationName FROM dbo.T_BD_SubStation where StationID in ('3','14','18','27' ) ORDER BY StationID");
sb.Append("SELECT StationID,StationCode,StationName FROM dbo.T_BD_SubStation where LineID < 5 ORDER BY StationID");
dbHelper.CommandText = sb.ToString();
Console.WriteLine(sb.ToString());
DataTable dt = dbHelper.ToDataTable();
return dt;
}
public bool UpdateTraceReStartStation(string ISDis,string RestartStation,string ProductBarcode)
{
StringBuilder sb = new StringBuilder();
try
{
sb.Append(" UPDATE dbo.T_SY_TraceState SET ISDis='").Append(ISDis);
sb.Append("' , RestartStation='").Append(RestartStation).Append("' WHERE ProductBarcode='").Append(ProductBarcode).Append("' ");
DbHandler db = new DbHandler();
db.dbHelper.ClearParameter();
db.dbHelper.CommandType = CommandType.Text;
db.dbHelper.CommandText = sb.ToString();
db.dbHelper.ExecuteNonQuery();
return true;
}
catch (Exception ex)
{
return false;
//ICSharpCode.Core.LoggingService.Error("Trace表NG工位更新错误:" + sb.ToString() + "/r/n" + e.ToString());
}
}
/// <summary>
///
/// </summary>
/// <param name="semiBarcode"></param>
/// <returns></returns>
public string GetMainBacodeBySemiBarcode(string semiBarcode)
{
if (dbHelper == null)
{
return "";
}
try
{
dbHelper.ClearParameter();
dbHelper.CommandType = CommandType.Text;
dbHelper.CommandText = "";
StringBuilder sb = new StringBuilder();
sb.Append("SELECT SemiBarcode FROM dbo.T_RP_WorkTrayRealTimeInfo WHERE RFIDNum='");
sb.Append(semiBarcode).Append("'");
dbHelper.CommandText = sb.ToString();
return dbHelper.ToScalar().ToString();
}
catch (Exception ex)
{
return "";
}
}
/// <summary>
///
/// </summary>
/// <param name="Rfid"></param>
/// <returns></returns>
public bool GetPreWorkInfo(string Rfid,string stationid)
{
//根据当前工位获取前一工位数据
//然后获取前一工位信息
if (dbHelper == null)
{
return false;
}
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)
{
return false;
}
string currentStation = dt.Rows[0]["StationID"].ToString();
if (stationid == currentStation)
{
return true;
}
else
{
return false;
}
}
public void Insert(string TableName,object[] objectArray)
{
if (dbHelper == null)
{
return;
}
try
{
dbHelper.ClearParameter();
dbHelper.CommandType = CommandType.Text;
dbHelper.CommandText = "";
StringBuilder sb = new StringBuilder();
sb.Append("insert into ").Append(TableName).Append(" values(");
//sb.Append("'',").Append();
foreach (object ob in objectArray)
{
sb.Append("'").Append(ob.ToString()).Append("'");
}
sb.Append(")");
dbHelper.CommandText = sb.ToString();
dbHelper.ExecuteNonQuery();
}
catch (Exception ex)
{
}
}
public void ExecSql(string sql)
{
if (dbHelper == null)
{
return;
}
try
{
dbHelper.CommandText = sql;
dbHelper.ExecuteNonQuery();
}
catch(Exception e)
{
// ICSharpCode.Core.LoggingService.Debug("Insert语句错误" + e.ToString());
}
}
public string GetLastMainBarcode(string code)
{
if (dbHelper == null)
{
return "NoConnect0001";
}
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.Info(string.Format(ex.ToString()));
return "Error0001";
}
}
public string GetLastSemiBarcode(string code)
{
if (dbHelper == null)
{
return "NoConnect0001";
}
try
{
dbHelper.ClearParameter();
dbHelper.CommandType = CommandType.Text;
dbHelper.CommandText = "";
StringBuilder sb = new StringBuilder();
sb.Append("EXEC SP_Pro_GetNewSemiBarcode '");
sb.Append(code).Append("'");
dbHelper.CommandText = sb.ToString();
return dbHelper.ToScalar().ToString();
}
catch (Exception ex)
{
//ICSharpCode.Core.LoggingService.Info(string.Format(ex.ToString()));
return "Error0001";
}
}
public bool CurrentStationHaveWork(string stationID,string RFID)
{
if (dbHelper == null)
{
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.Info(string.Format(ex.ToString()));
return false;
}
}
public bool Test(string Barcode, int state1, int state2, int state3, int state4, string restartStation,string checker)
{
if (dbHelper == null)
{
return false;
}
try
{
dbHelper.ClearParameter();
dbHelper.CommandType = CommandType.Text;
dbHelper.CommandText = "";
string sql = "Exec SP_Pro_chaijian @Barcode,@state1,@state2,@state3,@state4,@restartStation,@checker";
dbHelper.AddParameter("@Barcode", Barcode);
dbHelper.AddParameter("@state1", state1);
dbHelper.AddParameter("@state2", state2);
dbHelper.AddParameter("@state3", state3);
dbHelper.AddParameter("@state4", state4);
dbHelper.AddParameter("@restartStation", restartStation);
dbHelper.AddParameter("@checker", checker);
dbHelper.CommandText = sql;
Console.WriteLine(sql);
var obj = dbHelper.ToScalar();
int result = Convert.ToInt32(obj);
if (result < 1)
{
return false;
}
else
{
return true;
}
}
catch (Exception ex)
{
Console.WriteLine("存储过程异常错误");
//ICSharpCode.Core.LoggingService.Info(string.Format(ex.ToString()));
return false;
}
}
public DataSet Select(string Barcode)
{
if (dbHelper == null)
{
return null;
}
try
{
dbHelper.ClearParameter();
dbHelper.CommandType = CommandType.Text;
dbHelper.CommandText = "";
string sql = "Exec SP_Pro_SelectBarcode @Barcode";
dbHelper.AddParameter("@Barcode", Barcode);
dbHelper.CommandText = sql;
//var obj = dbHelper.ToDataTable();
//return null;
DataSet dt = (DataSet)dbHelper.ToDataSet();
return dt;
}
catch (Exception ex)
{
// ICSharpCode.Core.LoggingService.Info(string.Format(ex.ToString()));
return null;
}
}
/// <summary>
/// 重投次数超过三次返回false 不能重投
/// </summary>
/// <returns></returns>
public bool RestartCount(string Barcode)
{
if (dbHelper == null)
{
return false;
}
try
{
dbHelper.ClearParameter();
dbHelper.CommandType = CommandType.Text;
dbHelper.CommandText = "";
string sql = "Exec SP_Pro_RestartCount @Barcode";
dbHelper.AddParameter("@Barcode", Barcode);
dbHelper.CommandText = sql;
//var obj = dbHelper.ToDataTable();
//return null;
object count = dbHelper.ToScalar();
return Convert.ToInt32(count) > 0;
}
catch (Exception ex)
{
// ICSharpCode.Core.LoggingService.Info(string.Format(ex.ToString()));
return false;
}
}
/// <summary>
/// 获取当前工位质量
/// </summary>
/// <param name="MainBarcode"></param>
/// <param name="SemiBarcode"></param>
/// <param name="StationName"></param>
/// <returns></returns>
public bool GetCurrentStationState(string MainBarcode,string SemiBarcode,string StationName,string tableName)
{
if (dbHelper == null)
{
return false;
}
try
{
string TableName = tableName;
dbHelper.ClearParameter();
dbHelper.CommandType = CommandType.Text;
dbHelper.CommandText = "";
StringBuilder sb = new StringBuilder();
sb.Append(" SELECT Barcode FROM ").Append(TableName);
sb.Append(" WHERE Barcode='").Append(MainBarcode).Append("' AND SemiBarcode='").Append(SemiBarcode).Append("' AND State='1'");
dbHelper.CommandText = sb.ToString();
DataTable dt = dbHelper.ToDataTable();
return dt.Rows.Count > 0;
}
catch (Exception ex)
{
//ICSharpCode.Core.LoggingService.Info(string.Format(ex.ToString()));
return false;
}
}
/// <summary>
/// 创建新的系统条码
/// </summary>
/// <param name="MainBarcode"></param>
/// <param name="SemiBarcode"></param>
public void CreatNewProduct(string MainBarcode,string SemiBarcode)
{
if (dbHelper == null)
{
return;
}
try
{
dbHelper.ClearParameter();
dbHelper.CommandType = CommandType.Text;
dbHelper.CommandText = "";
StringBuilder sb = new StringBuilder();
sb.Append("INSERT INTO dbo.T_SY_TraceState(barcode,SemiBarcode_A1)VALUES('");
sb.Append(MainBarcode).Append("','").Append(SemiBarcode).Append("')");
dbHelper.CommandText = sb.ToString();
dbHelper.ExecuteNonQuery();//没有返回值
}
catch (Exception ex)
{
// ICSharpCode.Core.LoggingService.Info(string.Format(ex.ToString()));
}
}
public void UpdateTray(string EPC, int okng, string station, string semibarcode)
{
}
//互换托盘,不是换线。
public void ChangeTray(string RFID,int state,string SemiType, string stationID,string Semibarcode)
{
if (dbHelper == null)
{
return;
}
try
{
dbHelper.ClearParameter();
dbHelper.CommandType = CommandType.Text;
dbHelper.CommandText = "";
string sql = "Exec SP_Pro_changeTray @RFID,@State,@stationID,@semibarcode,@semiType";
dbHelper.AddParameter("@RFID", RFID);
dbHelper.AddParameter("@State", state);
dbHelper.AddParameter("@semibarcode", Semibarcode);
dbHelper.AddParameter("@semiType", SemiType);
dbHelper.AddParameter("@stationID", stationID);
dbHelper.CommandText = sql;
dbHelper.ExecuteNonQuery();
}
catch (Exception ex)
{
// ICSharpCode.Core.LoggingService.Info(string.Format(ex.ToString()));
}
}
public string GetSemiBarcode(string RFID)
{
if (dbHelper == null)
{
return "";
}
try
{
dbHelper.ClearParameter();
dbHelper.CommandType = CommandType.Text;
dbHelper.CommandText = "";
StringBuilder sb = new StringBuilder();
sb.Append("SELECT SemiBarcode FROM dbo.T_RP_WorkTrayRealTimeInfo WHERE RFIDNum='");
sb.Append(RFID).Append("'");
dbHelper.CommandText = sb.ToString();
return dbHelper.ToScalar().ToString();
}
catch (Exception ex)
{
//ICSharpCode.Core.LoggingService.Info(string.Format(ex.ToString()));
return "";
}
}
public string GetMainBarcode(string RFID)
{
if (dbHelper == null)
{
return "";
}
try
{
dbHelper.ClearParameter();
dbHelper.CommandType = CommandType.Text;
dbHelper.CommandText = "";
StringBuilder sb = new StringBuilder();
sb.Append("SELECT barCode FROM dbo.T_RP_WorkTrayRealTimeInfo WHERE RFIDNum='");
sb.Append(RFID).Append("'");
dbHelper.CommandText = sb.ToString();
return dbHelper.ToScalar().ToString();
}
catch (Exception ex)
{
// ICSharpCode.Core.LoggingService.Info(string.Format(ex.ToString()));
return "";
}
}
/// <summary>
/// 插入部件条码到部件表
/// </summary>
/// <param name="barcode"></param>
public void InsertSemiBarcode(string barcode)
{
if (dbHelper == null)
{
return ;
}
try
{
dbHelper.ClearParameter();
dbHelper.CommandType = CommandType.Text;
dbHelper.CommandText = "";
StringBuilder sb = new StringBuilder();
sb.Append("INSERT INTO [dbo].[T_RP_SemiProInfo](SemiBarcode)VALUES('");
sb.Append(barcode).Append("')");
dbHelper.CommandText = sb.ToString();
dbHelper.ExecuteNonQuery();
}
catch (Exception ex)
{
//ICSharpCode.Core.LoggingService.Info(string.Format(ex.ToString()));
return;
}
}
public void InsertMainBacode(string barcode,string SemiACode,string MachineID)
{
if (dbHelper == null)
{
return;
}
try
{
dbHelper.ClearParameter();
dbHelper.CommandType = CommandType.Text;
dbHelper.CommandText = "";
StringBuilder sb = new StringBuilder();
sb.Append("INSERT INTO [dbo].[T_SY_TraceState](Barcode,SemiBarcode_A,ProductID)VALUES('");
sb.Append(barcode).Append("','").Append(SemiACode).Append("','").Append(MachineID).Append("')");
dbHelper.CommandText = sb.ToString();
dbHelper.ExecuteNonQuery();
}
catch (Exception ex)
{
//ICSharpCode.Core.LoggingService.Info(string.Format(ex.ToString()));
return;
}
}
/// <summary>
/// 更新主表,追踪
/// </summary>
public void UpdateTrace(string Column,string MainCode,string SemiCode)
{
if (dbHelper == null)
{
return;
}
try
{
dbHelper.ClearParameter();
dbHelper.CommandType = CommandType.Text;
dbHelper.CommandText = "";
StringBuilder sb = new StringBuilder();
sb.Append("UPDATE [dbo].[T_SY_TraceState] SET ");
sb.Append(Column).Append("='").Append(SemiCode).Append("' where Barcode='").Append(MainCode).Append("'");
dbHelper.CommandText = sb.ToString();
dbHelper.ExecuteNonQuery();
}
catch (Exception ex)
{
// ICSharpCode.Core.LoggingService.Info(string.Format(ex.ToString()));
return;
}
}
public void ChangeLine(string RFID,string Semibarcode,string stationid)
{
if (dbHelper == null)
{
return;
}
try
{
dbHelper.ClearParameter();
dbHelper.CommandType = CommandType.Text;
dbHelper.CommandText = "";
string sql = "Exec SP_Pro_ChangeLine @RFID,@Semibarcode,@stationid";
dbHelper.AddParameter("@RFID", RFID);
dbHelper.AddParameter("@Semibarcode", Semibarcode);
dbHelper.AddParameter("@stationid", stationid);
dbHelper.CommandText = sql;
dbHelper.ExecuteNonQuery();
}
catch (Exception ex)
{
// ICSharpCode.Core.LoggingService.Info(string.Format(ex.ToString()));
}
}
#endregion
}
}