//private ArrayList Resources = new ArrayList(); #region 创建控件 private void CreateFormControl() { //获得时段 ArrayList tpHeaders = GetTPHeaders(); Resource resource = ApplicationService.Current().LoginInfo.Resource; //获得资源 ArrayList reses = ConfigReader.Read(); //this.pnlCenter.Visible = false; //this.pnlCenter.SuspendLayout(); //this.SuspendLayout(); //this.pnlCenter.b //创建控件 for (int i = reses.Count - 1; i >= 0; i--) { ResourceConfig res = reses[i] as ResourceConfig; UCWatchPanelContent content = new UCWatchPanelContent(); //content.Visible = false; //UCWatchPanelContent.re content.CreateWatchPanelCenters(tpHeaders); content.ResCode = res.ResCode; content.SetFPYGoal(res.FPYGoal); content.Dock = System.Windows.Forms.DockStyle.Top; //反的 if (i != reses.Count - 1) { content.HideBottom(); } if (i != 0) { content.HideHeader(); } this.WatchPanelContents.Add(content); } foreach (UCWatchPanelContent content in this.WatchPanelContents) { this.pnlCenter.Controls.Add(content); //content.Visible = true; } //this.pnlCenter.Visible = true; //this.pnlCenter.ResumeLayout(false); //this.ResumeLayout(false); }
private void RefreshData() { //Resource resource = ApplicationService.Current().LoginInfo.Resource; if (this.ucHeader.Line == "") { return; } object[] items = this.facade.GetItemCodes(this.ucHeader.Line, this.ShiftCode); this.ucHeader.ItemCode = ""; if (items == null || items.Length == 0) { return; } foreach (Item item in items) { this.ucHeader.ItemCode += item.ItemCode + ","; } if (this.ucHeader.ItemCode == "") { return; } this.ucHeader.ItemCode = this.ucHeader.ItemCode.Substring(0, this.ucHeader.ItemCode.Length - 1); string ResCodes = ""; foreach (UCWatchPanelContent content in this.WatchPanelContents) { ResCodes += content.ResCode + ","; } if (ResCodes == "") { return; } ResCodes = ResCodes.Substring(0, ResCodes.Length - 1); DataSet ds = this.facade.GetWatchingData(this.ucHeader.Line, this.ucHeader.ItemCode, this.ShiftCode, ResCodes); // if(ds == null || ds.Tables.Count == 0 || ds.Tables[0].Rows.Count == 0) // return; ICalculateStrategy strategy = new CalculateStategy(); for (int i = this.WatchPanelContents.Count - 1; i >= 0; i--) { UCWatchPanelContent content = this.WatchPanelContents[i] as UCWatchPanelContent; content.ResetUCWatchPanelCenterValue(); if (ds == null || ds.Tables.Count == 0 || ds.Tables[0].Rows.Count == 0) { continue; } DataRow[] rows = ds.Tables[0].Select(string.Format("RESCODE='{0}'", content.ResCode)); if (rows == null || rows.Length == 0) { continue; } for (int k = 0; k < rows.Length; k++) { UCWatchPanelCenter UCCenter = content.FindUCWatchPanelCenter(rows[k]["TPCODE"].ToString()); if (UCCenter == null) { continue; } UCCenter.Input = decimal.Parse(rows[k]["input"].ToString()); UCCenter.Defects = decimal.Parse(rows[k]["defects"].ToString()); //UCCenter.CalculateActual(); } content.SetCalculateStrategy(strategy); content.CalculateActual(); //content = content; //content.CalculateActual(); } #region 计算TotalActual //int g = 0; for (int i = this.WatchPanelContents.Count - 1; i >= 0; i--) { UCWatchPanelContent content = this.WatchPanelContents[i] as UCWatchPanelContent; if (i == this.WatchPanelContents.Count - 1) { for (int j = 0; j < content.WatchPanelCenters.Count; j++) { UCWatchPanelCenter c = (UCWatchPanelCenter)content.WatchPanelCenters[j]; c.TotalActual = c.Actual; // * Convert.ToDecimal(Math.Pow(0.01,g)); } //g++; } else { for (int j = 0; j < content.WatchPanelCenters.Count; j++) { UCWatchPanelCenter c = (UCWatchPanelCenter)content.WatchPanelCenters[j]; UCWatchPanelCenter c2 = (UCWatchPanelCenter)((UCWatchPanelContent)WatchPanelContents[i + 1]).WatchPanelCenters[j]; if (c2.TotalActual != 0) { if (c.Actual != 0) { c.TotalActual = c.Actual * c2.TotalActual; // * Convert.ToDecimal(Math.Pow(0.01,g)); //g++; } else { c.TotalActual = c2.TotalActual; } } else { c.TotalActual = c.Actual; } } } } if (this.WatchPanelContents.Count == 0) { return; } UCWatchPanelContent content1 = this.WatchPanelContents[0] as UCWatchPanelContent; for (int i = 0; i < content1.WatchPanelCenters.Count; i++) { UCWatchPanelCenter c = (UCWatchPanelCenter)content1.WatchPanelCenters[i]; DataRow[] rows = ds.Tables[0].Select(string.Format("TPCODE='{0}'", c.TPCode)); int g = 0; for (int k = 0; k < rows.Length; k++) { if (decimal.Parse(rows[k]["input"].ToString()) == decimal.Parse(rows[k]["defects"].ToString())) { continue; } g++; } if (g > 0) { c.TotalActual = c.TotalActual / Convert.ToDecimal(Math.Pow(100, g - 1)); } } #endregion }