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()); } } /// /// /// /// /// 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 ""; } } /// /// /// /// /// 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; } } /// /// 重投次数超过三次返回false 不能重投 /// /// 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; } } /// /// 获取当前工位质量 /// /// /// /// /// 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; } } /// /// 创建新的系统条码 /// /// /// 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 ""; } } /// /// 插入部件条码到部件表 /// /// 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; } } /// /// 更新主表,追踪 /// 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 } }