using Mesnac.Compressor.Data; using Mesnac.Compressor.Entity; using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Text; namespace Mesnac.Compressor.Station { public class Common { public bool UpdateTray(string RFID, string barcode, string semibarcode) { try { StringBuilder sb = new StringBuilder(); sb.Append("update T_RP_WorkTrayRealTimeInfo set barcode='"); sb.Append(barcode).Append("', semibarcode='"); sb.Append(semibarcode).Append("', updateTime='").Append(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")); sb.Append("' where RFIDNum='").Append(RFID).Append("'"); DbHandler db = new DbHandler(); db.ExecSql(sb.ToString()); return true; } catch { return false; } } public bool InsertHistoryTray(string RFID, string barcode, string stationid) { try { StringBuilder sb = new StringBuilder(); sb.Append("INSERT INTO dbo.T_RP_WorkTrayHistoryInfo(barCode,RFIDNum,CurrentStation) VALUES('"); sb.Append(barcode).Append("', '").Append(RFID).Append("', '").Append(stationid).Append("')"); DbHandler db = new DbHandler(); db.ExecSql(sb.ToString()); return true; } catch { return false; } } /// /// 通过壳体条码,查找内部主条码 /// /// /// public string GetMainBarcode(string semibarcode) { StringBuilder sb = new StringBuilder(); try { sb.Append("select top(1)barcode from T_SY_TraceState "); sb.Append(" where SemiBarcode_A='").Append(semibarcode).Append("' order by BeginTime desc"); DbHandler db = new DbHandler(); db.dbHelper.ClearParameter(); db.dbHelper.CommandType = CommandType.Text; db.dbHelper.CommandText = ""; db.dbHelper.CommandText = sb.ToString(); var obj = db.dbHelper.ToScalar(); if (obj != null) { return obj.ToString(); } else { return ""; } } catch (Exception e) { ICSharpCode.Core.LoggingService.Error("获取系统条码语句错误:" + sb.ToString() + "/r/n" + e.ToString()); return ""; } } /// /// /// /// /// public string GetTraySemiBarcode(string RFID) { StringBuilder sb = new StringBuilder(); try { sb.Append("select semibarcode from T_RP_WorkTrayRealTimeInfo "); sb.Append(" where RFIDNum='").Append(RFID).Append("'"); DbHandler db = new DbHandler(); db.dbHelper.ClearParameter(); db.dbHelper.CommandType = CommandType.Text; db.dbHelper.CommandText = ""; db.dbHelper.CommandText = sb.ToString(); return db.dbHelper.ToScalar().ToString(); } catch (Exception e) { ICSharpCode.Core.LoggingService.Error("获取条码语句错误:" + sb.ToString() + "/r/n" + e.ToString()); return ""; } } /// /// 判断数据是否数已经上传 /// /// /// public bool CheckNewData(StationInfo station, string barcode) { return true; if (string.IsNullOrEmpty(barcode)) { barcode = GetTraySemiBarcode(station.Data.RFIDNo); } if (string.IsNullOrEmpty(barcode)) { ICSharpCode.Core.LoggingService.Warn("CheckNewData-" + station.StationCode + " 通过RFID号:" + station.Data.RFIDNo + "未找到对应条码"); return false; } station.Data.semibacode = barcode; if (!JuadgeMaskID(barcode, station.Data.MaskID.ToString(), station.TableName)) { //ICSharpCode.Core.LoggingService.Debug("工位:" + station.StationCode + "的RFID:" + station.Data.RFIDNo + "数据已上传。条码号:" + barcode + " 任务号:" + station.Data.MaskID.ToString()); return false; } return true; } /// /// /// public void SaveStationData(StationInfo station) { //if (station.Data.NewFlag) //{ ICSharpCode.Core.LoggingService.Debug("工位:" + station.StationCode + "的RFID:" + station.Data.RFIDNo + "数据已上传。任务号:" + station.Data.MaskID.ToString()); SqlHelper sh = new SqlHelper(); DbHandler db = new DbHandler(); //获取条码 string barcode = GetTraySemiBarcode(station.Data.RFIDNo); string Mainbarcode = GetMainBarcode(barcode); if (string.IsNullOrEmpty(barcode)) { ICSharpCode.Core.LoggingService.Warn(station.StationCode + " 通过RFID号:" + station.Data.RFIDNo + "未找到对应条码"); return; } station.Data.semibacode = barcode; //station.Data.ProductBarcode = ""; station.Data.MainBarcode = Mainbarcode; //更新已有数据 if (!JuadgeMaskID(barcode, station.Data.MaskID.ToString(), station.TableName)) { ICSharpCode.Core.LoggingService.Debug("工位:" + station.StationCode + "的RFID:" + station.Data.RFIDNo + "数据已上传。条码号:" + barcode + " 任务号:" + station.Data.MaskID.ToString()); return; } if (station.Data.MaterialBarcodeUpdate) { UpdateMaterialCode(station); } //更新当前工位 UpdateTraceStation(station); if (station.Data.BarcodeUpdate) { updatebarcode(station); updateSubInfo(station); } //插入新数据 string InsertSql = sh.DataInsertSql2(station); db.ExecSql(InsertSql); //如果是重投品,跟新重投次数 if (station.Data.Restart && !string.IsNullOrEmpty(station.Data.ProductBarcode)) { UpdaterestartCount(station.Data.ProductBarcode); ICSharpCode.Core.LoggingService.Debug("更新重投次数成功"); } //不合格插入不合格工位 if (station.Data.ProductOkNg == 2) { UpdateTraceNgStation(station); //UnbandTray(station); } ICSharpCode.Core.LoggingService.Debug("工位:" + station.StationCode + " 保存数据成功。托盘号:" + station.Data.RFIDNo + "条码:"+ barcode); //} } ///上传支线信息 private void updateSubInfo(StationInfo station) { if (station.Data.subLineList.Count <= 0) { return; } foreach (var sub in station.Data.subLineList) { SubInfoUpdate(sub.barcode, sub.lineID, station.Data.semibacode); } } /// /// 上传支线信息 /// /// /// /// /// public bool SubInfoUpdate(string barcode, string lineid, string semibacode) { StringBuilder sb = new StringBuilder(); DbHandler db = new DbHandler(); try { db.dbHelper.ClearParameter(); db.dbHelper.CommandType = CommandType.Text; db.dbHelper.CommandText = ""; sb.Append("EXEC SP_Pro_SubLineInfo '"); sb.Append(barcode).Append("','"); sb.Append(lineid).Append("','"); sb.Append(semibacode).Append("'"); db.dbHelper.CommandText = sb.ToString(); return Convert.ToInt32(db.dbHelper.ToScalar()) == 0; } catch (Exception ex) { ICSharpCode.Core.LoggingService.Error(string.Format(ex.ToString())); return false; } } /// /// 更新trace表产品条码和T_RP_SemiProInfo表产品条码 /// /// private void updatebarcode(StationInfo station) { if (string.IsNullOrEmpty(station.Data.ProductBarcode)) { return; } UpdateSemiInfo(station); if (station.IfMainline) { UpdateTraceBarcodeStation(station); //这边是个坑啊 SubInfoUpdate(station.Data.ProductBarcode, "15", station.Data.semibacode); } } private void UpdateSemiInfo(StationInfo station) { StringBuilder sb = new StringBuilder(); try { //去掉换行符 string barcode = station.Data.semibacode.Replace("\r", "").Replace("\n", "").Replace("\t", ""); sb.Append(" UPDATE dbo.T_RP_SemiProInfo SET ProductBarcode='").Append(station.Data.ProductBarcode); sb.Append("' WHERE SemiBarcode='").Append(barcode).Append("' "); DbHandler db = new DbHandler(); db.dbHelper.ClearParameter(); db.dbHelper.CommandType = CommandType.Text; db.dbHelper.CommandText = ""; db.dbHelper.CommandText = sb.ToString(); db.dbHelper.ExecuteNonQuery(); } catch (Exception e) { ICSharpCode.Core.LoggingService.Error("Trace表NG工位更新错误:" + sb.ToString() + "/r/n" + e.ToString()); } } /// /// 更新物料信息 /// /// private void UpdateMaterialCode(StationInfo station) { StringBuilder sb = new StringBuilder(); try { sb.Append(" insert into dbo.T_RP_MaterialBarcode(barcode,productCode,stationID) values('"); sb.Append(station.Data.MainBarcode).Append("','"); sb.Append(station.Data.MaterialBarcode).Append("','"); sb.Append(station.stationID).Append("')"); DbHandler db = new DbHandler(); db.dbHelper.ClearParameter(); db.dbHelper.CommandType = CommandType.Text; db.dbHelper.CommandText = sb.ToString(); db.dbHelper.ExecuteNonQuery(); } catch (Exception e) { ICSharpCode.Core.LoggingService.Error("物料条码更新出错:" + sb.ToString() + "/r/n" + e.ToString()); } } public void UpdateTraceNgStation(StationInfo station) { StringBuilder sb = new StringBuilder(); try { sb.Append(" UPDATE dbo.T_SY_TraceState SET NGStationID='").Append(station.stationID); sb.Append("' WHERE barcode='").Append(station.Data.MainBarcode).Append("' "); DbHandler db = new DbHandler(); db.dbHelper.ClearParameter(); db.dbHelper.CommandType = CommandType.Text; db.dbHelper.CommandText = ""; db.dbHelper.CommandText = sb.ToString(); db.dbHelper.ExecuteNonQuery(); } catch (Exception e) { ICSharpCode.Core.LoggingService.Error("Trace表NG工位更新错误:" + sb.ToString() + "/r/n" + e.ToString()); } } /// /// 更新当前工位 /// /// public void UpdateTraceStation(StationInfo station) { StringBuilder sb = new StringBuilder(); try { sb.Append(" UPDATE dbo.T_SY_TraceState SET CurrentStationID='").Append(station.stationID); sb.Append("' WHERE barcode='").Append(station.Data.MainBarcode).Append("' "); DbHandler db = new DbHandler(); db.dbHelper.ClearParameter(); db.dbHelper.CommandType = CommandType.Text; db.dbHelper.CommandText = ""; db.dbHelper.CommandText = sb.ToString(); db.dbHelper.ExecuteNonQuery(); } catch (Exception e) { ICSharpCode.Core.LoggingService.Error("Trace工位更新错误:" + sb.ToString() + "/r/n" + e.ToString()); } } /// /// 更新当前工位 /// /// public void UpdateTraceBarcodeStation(StationInfo station) { StringBuilder sb = new StringBuilder(); try { sb.Append(" UPDATE dbo.T_SY_TraceState SET ProductBarcode='").Append(station.Data.ProductBarcode); sb.Append("' WHERE barcode='").Append(station.Data.MainBarcode).Append("' "); DbHandler db = new DbHandler(); db.dbHelper.ClearParameter(); db.dbHelper.CommandType = CommandType.Text; db.dbHelper.CommandText = ""; db.dbHelper.CommandText = sb.ToString(); db.dbHelper.ExecuteNonQuery(); } catch (Exception e) { ICSharpCode.Core.LoggingService.Error("Trace工位更新错误:" + sb.ToString() + "/r/n" + e.ToString()); } } /// /// 判断当前条码和任务号是否上传过 /// /// /// /// /// 上传过返回false public bool JuadgeMaskID(string barcode, string MaskID, string TableName) { StringBuilder sb = new StringBuilder(); DbHandler db = new DbHandler(); try { db.dbHelper.ClearParameter(); db.dbHelper.CommandType = CommandType.Text; db.dbHelper.CommandText = ""; sb.Append("EXEC SP_Pro_Changeflag '"); sb.Append(barcode).Append("','"); sb.Append(MaskID).Append("','"); sb.Append(TableName).Append("'"); db.dbHelper.CommandText = sb.ToString(); return Convert.ToInt32(db.dbHelper.ToScalar()) == 0; } catch (Exception ex) { ICSharpCode.Core.LoggingService.Error(string.Format(ex.ToString())); return false; } } /// /// 更新当前工位 /// /// public void UpdaterestartCount(string Barcode) { StringBuilder sb = new StringBuilder(); try { sb.Append(" exec SP_Pro_UpdateRestartCount '").Append(Barcode).Append("'"); DbHandler db = new DbHandler(); db.dbHelper.ClearParameter(); db.dbHelper.CommandType = CommandType.Text; db.dbHelper.CommandText = ""; db.dbHelper.CommandText = sb.ToString(); db.dbHelper.ExecuteNonQuery(); } catch (Exception e) { ICSharpCode.Core.LoggingService.Error("更新重投次数错误:" + sb.ToString() + "/r/n" + e.ToString()); } } /// /// 生成新的产品信息 /// /// public string CreatNewProduct(StationInfo station) { string MainBarcode = ""; try { DbHandler db = new DbHandler(); //StationInsertInfo sinsert = new StationInsertInfo(); //生成系统条码, MainBarcode = db.GetLastMainBarcode("M"); } catch (Exception e) { ICSharpCode.Core.LoggingService.Error(e.ToString()); } return MainBarcode; } /// /// 生成新的产品信息 /// /// public string CreatNewSemibarcode(string Head, string lineID) { string semibarcode = ""; try { DbHandler db = new DbHandler(); //生成系统条码, semibarcode = db.GetLastSemiBarcode(Head, lineID); } catch (Exception e) { ICSharpCode.Core.LoggingService.Error(e.ToString()); } return semibarcode; } /// /// 解除绑定 /// /// public void UnbandTray(StationInfo station) { StringBuilder sb = new StringBuilder(); try { sb.Append("Update T_RP_WorkTrayRealTimeInfo set barcode='',Semibarcode=''"); sb.Append(" where RFIDNum='").Append(station.Data.RFIDNo).Append("'"); DbHandler db = new DbHandler(); db.dbHelper.ClearParameter(); db.dbHelper.CommandType = CommandType.Text; db.dbHelper.CommandText = ""; db.dbHelper.CommandText = sb.ToString(); db.dbHelper.ExecuteNonQuery(); } catch (Exception e) { ICSharpCode.Core.LoggingService.Error("获取条码语句错误:" + sb.ToString() + "/r/n" + e.ToString()); } } public string getSemiBacode(string productbarcode) { StringBuilder sb = new StringBuilder(); try { sb.Append(" SELECT TOP(1) semibarcode_A FROM dbo.T_SY_TraceState WHERE productbarcode='").Append(productbarcode).Append("' "); DbHandler db = new DbHandler(); db.dbHelper.ClearParameter(); db.dbHelper.CommandType = CommandType.Text; db.dbHelper.CommandText = ""; db.dbHelper.CommandText = sb.ToString(); return db.dbHelper.ToScalar().ToString(); } catch (Exception e) { ICSharpCode.Core.LoggingService.Error("Trace工位更新错误:" + sb.ToString() + "/r/n" + e.ToString()); return ""; } } #region 判断是否工作代码,yinzf 2023-3-1 public bool PreStationState(StationInfo station) { return false; } /// /// 判断托盘是否为空 /// state=0则表示空,state=2表示不合格,state=1表示合格 /// /// /// public bool TrayIsNull(StationInfo stat) { try { DbHandler db = new DbHandler(); //判断产品当前状态 WorkTray tray = db.GetProductQuality(stat.Data.RFIDNo); if (tray.SemiBarcode.Equals(string.Empty)) { return false; } else { return true; } } catch (Exception e) { ICSharpCode.Core.LoggingService.Warn("TrayIsNull函数错误" + e.ToString()); return false; } } #endregion } }