| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269 |
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Drawing;
- using System.Data;
- using System.Linq;
- using System.Text;
- using System.Windows.Forms;
- using Core.Mes.Client.Comm.Control;
- using Core.Mes.Client.Comm.Server;
- using CoreFS.CA06;
- using Infragistics.Win;
- using Infragistics.Win.UltraWinGrid;
- namespace Core.StlMes.Client.LgCommon.公共自定义控件.化学成分
- {
- public partial class ucNewChemelEment : UserControl
- {
- public ucNewChemelEment()
- {
- InitializeComponent();
- //ClsControlPack.SetUltraGridAppearance(this);
- }
- public void SetData(string StoveNo, string Pline, LG_PROCESS Process, string CraftNo, OpeBase ob)
- {
- RefreshData(StoveNo, Pline, Process, CraftNo, ob);
- ClsControlPack.RefreshAndAutoSize(ulgridElement);
- ClsControlPack.SetReadOnly(ulgridElement);
- ulgridElement.DisplayLayout.Bands[0].Columns[0].CellAppearance.FontData.Bold = DefaultableBoolean.True;
- }
- public void RefreshData(string StoveNo, string Pline, LG_PROCESS Process, string CraftNo, OpeBase ob)
- {
- DataTable dt = ServerHelper.GetData("Core.LgMes.Server.LgDeviceManager.StlChemical.GetStlChemicalStd",
- new object[] {CraftNo}, ob);
- dtChem.Rows.Clear();
- foreach (var colums in ulgridElement.DisplayLayout.Bands[0].Columns)
- {
- colums.Hidden = true;
- }
- ulgridElement.DisplayLayout.Bands[0].Columns["SAMPLE_NO"].Hidden = false;
- if (dt != null)
- {
- foreach (DataRow dataRow in dt.Rows)
- {
- string chemsKey = dataRow["CHEM_NAME"].ToString().Replace(" ", "").Replace("/", "");
- if (!dtChem.Columns.Contains(chemsKey.ToUpper()) && !string.IsNullOrEmpty(chemsKey))
- {
- DataColumn newDc = new DataColumn
- {
- ColumnName = chemsKey.ToUpper(),
- Caption = chemsKey
- };
- dtChem.Columns.Add(newDc);
- }
- ulgridElement.DisplayLayout.Bands[0].Columns[chemsKey.ToUpper()].Hidden = false;
- }
- }
- DataRow drMax = dtChem.NewRow();
- DataRow drMin = dtChem.NewRow();
- drMax["SAMPLE_NO"] = "上限";
- drMin["SAMPLE_NO"] = "下限";
- if (dt != null)
- {
- foreach (DataRow dataRow in dt.Rows)
- {
- string columnsName = dataRow["CHEM_NAME"].ToString().ToUpper().Replace(" ", "").Replace("/", "");
- drMax[columnsName] = dataRow["STDMAX_SIGN"] + dataRow["STDMAX"].ToString();
- drMin[columnsName] = dataRow["STDMIN_SIGN"] + dataRow["STDMIN"].ToString();
- ulgridElement.DisplayLayout.Bands[0].Columns[columnsName].Tag = dataRow["CHEM_FORMULA"];
- }
- }
- dtChem.Rows.Add(drMax);
- dtChem.Rows.Add(drMin);
- DataTable dtData = ServerHelper.GetData("Core.LgMes.Server.LgDeviceManager.StlChemical.GetStlChemicalData",
- new object[] {StoveNo, Pline, Process}, ob);
- if (dtData != null)
- {
- foreach (DataRow dataRow in dtData.Rows)
- {
- foreach (DataColumn dc in dtData.Columns)
- {
- string columnsName = dc.ColumnName;
- if (columnsName.Equals("SAMPLE_NO")) continue;
- if (!dtChem.Columns.Contains(columnsName.ToUpper().Replace("ASN", "AS")) &&
- dataRow[columnsName] != null &&
- string.IsNullOrEmpty((dataRow[columnsName].ToString())))
- {
- DataColumn newDc = new DataColumn();
- newDc.ColumnName = columnsName.ToUpper();
- newDc.Caption = columnsName;
- dtChem.Columns.Add(newDc);
- }
- }
- DataRow tempRow = dtChem.NewRow();
- tempRow["SAMPLE_NO"] = dataRow["SAMPLE_NO"];
- foreach (DataColumn DataColumn in dtData.Columns)
- {
- if (dtChem.Columns.Contains(DataColumn.ColumnName.Replace("ASN", "AS")))
- {
- tempRow[DataColumn.ColumnName.Replace("ASN", "AS")] = dataRow[DataColumn.ColumnName];
- if (dataRow[DataColumn.ColumnName] != null &&
- !string.IsNullOrEmpty(dataRow[DataColumn.ColumnName].ToString()))
- ulgridElement.DisplayLayout.Bands[0].Columns[DataColumn.ColumnName.Replace("ASN", "AS")]
- .Hidden = false;
- }
- }
- foreach (UltraGridColumn column in ulgridElement.DisplayLayout.Bands[0].Columns)
- {
- if (column.Hidden || column.Tag == null || string.IsNullOrEmpty(column.Tag.ToString())) continue;
-
- string ChemFormula = column.Tag.ToString().ToUpper();
- foreach (DataColumn DataColumn in dtData.Columns)
- {
- if (dataRow[DataColumn.ColumnName] == null) continue;
- ChemFormula = ChemFormula.Replace(DataColumn.ColumnName.Replace("ASN", "AS"),
- dataRow[DataColumn.ColumnName].ToString());
- }
- try
- {
- tempRow[column.Key] = Math.Round(double.Parse(new DataTable().Compute(ChemFormula, null).ToString()),4);
-
- }
- catch (Exception)
- {
- tempRow[column.Key] = null;
- }
- }
- dtChem.Rows.Add(tempRow);
- }
- }
- ClsControlPack.SaftRefreshUI(ulgridElement, () =>
- {
- // ulgridElement.DataSource = dsChem;
- ulgridElement.Refresh();
- ClsControlPack.RefreshAndAutoSize(ulgridElement);
- });
- }
- public void ResetData()
- {
- // if(targerTable!=null) targerTable.Rows.Clear();
- }
- private void ulgridElement_InitializeRow(object sender, InitializeRowEventArgs e)
- {
- if(e.Row.Index<2) return;
- foreach (var Cell in e.Row.Cells)
- {
- string ColumnsName = Cell.Column.Key;
- if (ColumnsName.Equals("SAMPLE_NO")) continue;
- int Result = CompareChem(Cell.Value, ulgridElement.Rows[0].Cells[ColumnsName].Value,
- ulgridElement.Rows[1].Cells[ColumnsName].Value);
- if (Result == 2) Cell.Appearance.ResetBackColor();
- else if (Result > 0) Cell.Appearance.BackColor = Color.Red;
- else if (Result < 0) Cell.Appearance.BackColor = Color.Yellow;
- else Cell.Appearance.BackColor = Color.LightGreen;
- }
- }
- private int CompareChem(object CurrentVaule, object Max, object Min)
- {
- if (CurrentVaule == null) return -1;
- double vaule;
- if (!double.TryParse(CurrentVaule.ToString(), out vaule)) return -1;
- if ((Max == null || Max.ToString() == "") && (Min == null || Min.ToString() == "")) return 2;
- if (Max != null && !CompareVaule(vaule, Max.ToString(), true))
- {
- return 1;
- }
- if (Min != null && !CompareVaule(vaule, Min.ToString(), false))
- {
- return -1;
- }
- return 0;
- }
- private bool CompareVaule(double value, string format,bool Max)
- {
- if (string.IsNullOrEmpty(format)) return true;
- double dFormat;
- if (format.StartsWith("<="))
- {
- if (!double.TryParse(format.Replace("<=", ""), out dFormat)) return false;
- return value <= dFormat;
- }
- if (format.StartsWith("<"))
- {
- if (!double.TryParse(format.Replace("<", ""), out dFormat)) return false;
- return value < dFormat;
- }
- if (format.StartsWith(">="))
- {
- if (!double.TryParse(format.Replace(">=", ""), out dFormat)) return false;
- return value >= dFormat;
- }
- if (format.StartsWith(">"))
- {
- if (!double.TryParse(format.Replace(">", ""), out dFormat)) return false;
- return value > dFormat;
- }
- if (!double.TryParse(format, out dFormat)) return false;
- if (Max) return value < dFormat;
- return value > dFormat;
- }
- }
- }
|