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#

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
}
}