/// <summary> /// 显示预警信息 /// </summary> private void ShowAlertMessage(MachineFeeder machineFeeder, object alertObj) { DBDateTime dbDateTime = FormatHelper.GetNowDBDateTime(this.DataProvider); string strMsg = ">> $MachineCode = " + machineFeeder.MachineCode + " $MachineStationCode = " + machineFeeder.MachineStationCode; if (alertObj is Feeder) { Feeder feeder = (Feeder)alertObj; DateTime dateNow = FormatHelper.ToDateTime(dbDateTime.DBDate, dbDateTime.DBTime); DateTime mDate = FormatHelper.ToDateTime(Convert.ToInt32(feeder.TheMaintainDate), 000001); int alterDate = dateNow.Subtract(mDate).Days; //算法是now减去保养日期 strMsg += " $FeederCode = " + feeder.FeederCode + " $FeederMaxCount = " + feeder.MaxCount.ToString() + " $FeederAlertCount = " + feeder.AlertCount.ToString() + " $FeederUsedCount = " + feeder.UsedCount.ToString() + " $MaxMaintainDate = " + feeder.MaxMDay + " $AlterDate = " + feeder.AlterMDay + " $UsedDate = " + alterDate; } else { ReelQty reel = (ReelQty)alertObj; strMsg += " $ReelNo = " + reel.ReelNo + " $ReelQty = " + reel.Qty.ToString() + " $ReelUsedQty = " + (reel.UsedQty + reel.UpdatedQty).ToString(); } this.ucMessage.Add(new UserControl.Message(MessageType.Error, strMsg)); }
/// <summary> /// 添加停线信息 /// </summary> private void AddLineError(ReelQty reel, string reelLeftQty) { DataRow[] rows = tableLineError.Select("LineCode='" + reel.StepSequenceCode + "' AND MachineCode='" + reel.MachineCode + "' AND MachineStationCode='" + reel.MachineStationCode + "'"); DataRow row = tableLineError.NewRow(); if (rows != null && rows.Length > 0) { row = rows[0]; } row["LineCode"] = reel.StepSequenceCode; row["MOCode"] = reel.MOCode; row["ErrorType"] = UserControl.MutiLanguages.ParserString("$SMT_LineError_Reel_Exhaust"); row["MachineCode"] = reel.MachineCode; row["MachineStationCode"] = reel.MachineStationCode; row["ReelNo"] = reel.ReelNo; row["ReelLeftQty"] = reelLeftQty; if (rows == null || rows.Length == 0) { tableLineError.Rows.Add(row); // Removed by Icye r2006/12/30 由于Loading比较大,暂时不记录Log //smtFacade.AddStopLineLog(reel, SMTLoadFeederOperationType.ReelExhaust, Service.ApplicationService.Current().UserCode); } }
private void RefreshData() { if (bInRefresh == true) { return; } bInRefresh = true; //Icyer,2007/01/15 修改 减少Open/Close的次数 ((BenQGuru.eMES.Common.DomainDataProvider.SQLDomainDataProvider)DataProvider).PersistBroker.AutoCloseConnection = false; ((BenQGuru.eMES.Common.DomainDataProvider.SQLDomainDataProvider)DataProvider).PersistBroker.OpenConnection(); try { tableLineError.Rows.Clear(); // 查询上料记录 object[] machineFeederListTmp = smtFacade.LoadMachineFeederByLineMachine(this.txtLineCode.Value, string.Empty); if (machineFeederListTmp == null || machineFeederListTmp.Length == 0) { //ApplicationRun.GetInfoForm().Add(new UserControl.Message(MessageType.Error, "$Cannot_Find_MachineFeeder_In_Watch")); tableSource.Rows.Clear(); // 更新产线状态 RefreshLineStatusForMO(); // 控制产线 ControlLine(); return; } machineFeederList = new MachineFeeder[machineFeederListTmp.Length]; machineFeederListTmp.CopyTo(machineFeederList, 0); // 是否需要更新上料记录 bool bNeedUpdateSource = false; if (machineFeederList.Length != tableSource.Rows.Count) // 有单独上料或下料时 { bNeedUpdateSource = true; } else { if (htMachineFeederList == null || htMachineFeederList.Count != machineFeederList.Length) { bNeedUpdateSource = true; } else { for (int i = 0; i < machineFeederList.Length; i++) { string strKey = machineFeederList[i].MachineCode + "'" + machineFeederList[i].MachineStationCode + "'" + machineFeederList[i].FeederCode + "'" + machineFeederList[i].ReelNo + "'" + machineFeederList[i].NextReelNo; if (htMachineFeederList.Contains(strKey) == false) { bNeedUpdateSource = true; } } } } if (bNeedUpdateSource == true) { htMachineFeederList = new ArrayList(); for (int i = 0; i < machineFeederList.Length; i++) { string strKey = machineFeederList[i].MachineCode + "'" + machineFeederList[i].MachineStationCode + "'" + machineFeederList[i].FeederCode + "'" + machineFeederList[i].ReelNo + "'" + machineFeederList[i].NextReelNo; if (htMachineFeederList.Contains(strKey) == false) { htMachineFeederList.Add(strKey); } } } // 更新上料记录 if (bNeedUpdateSource == true) { tableSource.Rows.Clear(); for (int i = 0; i < machineFeederList.Length; i++) { DataRow row = tableSource.NewRow(); row["LineCode"] = machineFeederList[i].StepSequenceCode; row["MachineCode"] = machineFeederList[i].MachineCode; row["MachineStationCode"] = machineFeederList[i].MachineStationCode; row["FeederCode"] = machineFeederList[i].FeederCode; row["ReelNo"] = machineFeederList[i].ReelNo; row["IsAlert"] = false; row["NextReelNo"] = machineFeederList[i].NextReelNo; row["MoCode"] = machineFeederList[i].MOCode; tableSource.Rows.Add(row); } } ArrayList listAlertFeeder = new ArrayList(); ArrayList listAlertReel = new ArrayList(); // 更新Feeder次数和预警日期 object[] objsFeeder = smtFacade.LoadFeederByLineMachine(this.txtLineCode.Value, string.Empty); DBDateTime dbDateTime = FormatHelper.GetNowDBDateTime(this.DataProvider); if (objsFeeder != null) { for (int i = 0; i < objsFeeder.Length; i++) { Feeder feeder = (Feeder)objsFeeder[i]; DataRow[] rows = tableSource.Select("FeederCode='" + feeder.FeederCode + "'"); if (rows != null && rows.Length > 0) { DateTime dateNow = FormatHelper.ToDateTime(dbDateTime.DBDate, dbDateTime.DBTime); DateTime mDate = FormatHelper.ToDateTime(Convert.ToInt32(feeder.TheMaintainDate), 000001); int alterDate = dateNow.Subtract(mDate).Days; //算法是now减去保养日期 rows[0]["FeederLeftCount"] = feeder.MaxCount - feeder.UsedCount; rows[0]["FeederAlterDay"] = alterDate == 0 ? feeder.MaxMDay : feeder.MaxMDay - alterDate; if (feeder.UsedCount >= feeder.AlertCount || alterDate > feeder.AlterMDay) { listAlertFeeder.Add(feeder); rows[0]["IsAlert"] = true; } } } } // 更新料卷用量 object[] objsReel = smtFacade.LoadReelQtyByLineMachine(this.txtLineCode.Value, string.Empty); if (objsReel != null) { for (int i = 0; i < objsReel.Length; i++) { ReelQty reel = (ReelQty)objsReel[i]; DataRow[] rows = tableSource.Select("ReelNo='" + reel.ReelNo + "'"); if (rows != null && rows.Length > 0) { rows[0]["ReelLeftQty"] = reel.Qty - reel.UpdatedQty - reel.UsedQty; if (reel.UpdatedQty + reel.UsedQty >= reel.Qty * this.ReelAlert && rows[0]["NextReelNo"].ToString() == string.Empty) { listAlertReel.Add(reel); rows[0]["IsAlert"] = true; } if (reel.UpdatedQty + reel.UsedQty >= reel.Qty * this.ReelStopLine && rows[0]["NextReelNo"].ToString() == string.Empty) { this.AddLineError(reel, rows[0]["ReelLeftQty"].ToString()); } ReelQty nextReelQty = (ReelQty)smtFacade.GetReelQty(rows[0]["NextReelNo"].ToString(), rows[0]["MoCode"].ToString()); if (nextReelQty != null) { rows[0]["NextReelLeftQty"] = nextReelQty.Qty - nextReelQty.UpdatedQty - nextReelQty.UsedQty; } } } } // 更新预警消息 //Application.DoEvents(); for (int i = 0; i < this.gridList.Rows.Count; i++) { if (Convert.ToBoolean(this.gridList.Rows[i].Cells["IsAlert"].Value) == true) { this.gridList.Rows[i].Appearance.ForeColor = Color.Red; } } UpdateAlert(listAlertFeeder, listAlertReel); // 更新产线状态 RefreshLineStatusForMO(); // 控制产线 ControlLine(); } catch (Exception ex) { string strErrorInfo = System.DateTime.Now.ToString("yyyy/MM/dd hh:mm:ss") + "\t" + ex.Message + "\t" + ex.Source; strErrorInfo += "\r\n" + ex.StackTrace; UserControl.FileLog.FileLogOut("Client.log", strErrorInfo); } finally { bInRefresh = false; ((BenQGuru.eMES.Common.DomainDataProvider.SQLDomainDataProvider)DataProvider).PersistBroker.CloseConnection(); ((BenQGuru.eMES.Common.DomainDataProvider.SQLDomainDataProvider)DataProvider).PersistBroker.AutoCloseConnection = true; } }