| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035 |
- 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 CoreFS.CA06;
- using Core.Mes.Client.Comm.Tool;
- using System.Reflection;
- using Infragistics.Win.UltraWinGrid;
- using Core.Mes.Client.Comm.Control;
- namespace Core.StlMes.Client.YdmStuffManage
- {
- public partial class QcmJhyElementsCtrl : UserControl
- {
- private JudgeType _judgeType;
- private Dal _d;
- /// <summary>
- ///
- /// </summary>
- /// <param name="container"></param>
- /// <param name="ob"></param>
- /// <param name="judgeType">判定类型:0-炼钢 1-铸造 2-轧管 8-综合</param>
- public QcmJhyElementsCtrl(Control container, OpeBase ob, JudgeType judgeType)
- {
- InitializeComponent();
- _judgeType = judgeType;
- _d = new Dal(ob);
- container.Controls.Add(this);
- this.Dock = DockStyle.Fill;
- this.BringToFront();
- EntityHelper.ShowGridCaption<QcmJhyElementsEntity>(ultraGrid1.DisplayLayout.Bands[0]);
- }
- private List<CraftOrdDesignStdCicEntity> _craftDesignStdCicList = new List<CraftOrdDesignStdCicEntity>();
- private List<QcmJhyElementsEntity> _jhyElementsList = new List<QcmJhyElementsEntity>();
- public void QueryCraftResultByStoveNo(string stoveNo, string judgeStoveNo, DataTable dtCraftCic, string processCode,string cic)
- {
- _jhyElementsList = _d.GetEntitysByXmlId<QcmJhyElementsEntity>("QcmJhyElementsDAL.queryByStoveNo", processCode, stoveNo);
- _craftDesignStdCicList.Clear();
- if (dtCraftCic.Rows.Count == 0)
- {
- _craftDesignStdCicList = _d.GetEntitysByXmlId<CraftOrdDesignStdCicEntity>("QcmGpJugdeApplyDAL.queryApplyChemByJudgeStoveNo", judgeStoveNo);
- }
- else
- {
- foreach (DataRow drCraftCic in dtCraftCic.Rows)
- {
- var tmpCraftDesignStdCicList = _d.GetEntitysByXmlId<CraftOrdDesignStdCicEntity>("QcmJhyElementsDAL.queryCraftResultCic",
- drCraftCic["desginKey"].ToString(), drCraftCic["mscPline"].ToString(), processCode, cic,
- new string[] { "0", "1", "2" });
- foreach (CraftOrdDesignStdCicEntity craftCic in tmpCraftDesignStdCicList)
- {
- _craftDesignStdCicList.Add(craftCic);
- }
- }
- }
-
- _craftDesignStdCicList.Sort(new ChemSeqCompare());
- InitGrid();
- }
- public void SteelMakingColligateQuery(string judgeStoveNo, DataTable dtCraftCic, string processCode)
- {
- _jhyElementsList = _d.GetEntitysByXmlId<QcmJhyElementsEntity>("QcmJhyElementsDAL.steelMakingColligateQuery", judgeStoveNo);
- _craftDesignStdCicList.Clear();
- if (dtCraftCic.Rows.Count == 0)
- {
- _craftDesignStdCicList = _d.GetEntitysByXmlId<CraftOrdDesignStdCicEntity>("QcmGpJugdeApplyDAL.queryApplyChemByJudgeStoveNo", judgeStoveNo);
- }
- else
- {
- foreach (DataRow drCraftCic in dtCraftCic.Rows)
- {
- var tmpCraftDesignStdCicList = _d.GetEntitysByXmlId<CraftOrdDesignStdCicEntity>("QcmJhyElementsDAL.queryCraftResultCic",
- drCraftCic["desginKey"].ToString(), drCraftCic["mscPline"].ToString(), processCode, drCraftCic["cic"].ToString(),
- new string[] { "0", "1", "2" });
- foreach (CraftOrdDesignStdCicEntity craftCic in tmpCraftDesignStdCicList)
- {
- _craftDesignStdCicList.Add(craftCic);
- }
- }
- }
-
- _craftDesignStdCicList.Sort(new ChemSeqCompare());
- InitGrid();
- }
- public void QueryCraftResultByJudgeStoveNo(string judgeStoveNo, string designKey, string mscPline, string processCode, string cic)
- {
- _jhyElementsList = _d.GetEntitysByXmlId<QcmJhyElementsEntity>("QcmJhyElementsDAL.queryByJudgeStoveNo", processCode, judgeStoveNo);
- _craftDesignStdCicList = _d.GetEntitysByXmlId<CraftOrdDesignStdCicEntity>("QcmJhyElementsDAL.queryCraftResultCic", designKey,
- mscPline, processCode, cic, new string[] { "0", "1", "2" });
- InitGrid();
- }
- private DataTable _dtBaseChem = null;
- private Dictionary<string, string> rounds = new Dictionary<string, string>();
- private void InitGrid()
- {
- try
- {
- ultraGrid1.DisplayLayout.Rows.FixedRows.Clear();
- ultraGrid1.DataSource = null;
- //查询圆整位数
- _dtBaseChem = _d.GetTableByXmlId("JdgComBaseChem.queryRound");
- rounds.Clear();
- foreach (DataRow drBaseChem in _dtBaseChem.Rows)
- {
- rounds.Add(drBaseChem["chemName"].ToString(), drBaseChem["roundingDigits"].ToString());
- }
- // //先赋值
- // foreach (var craftCic in _craftDesignStdCicList)
- // {
- // //替代元素
- //string express = "";
- //string round = "2";
- //foreach(DataRow drBaseChem in _dtBaseChem.Rows){
- // if(drBaseChem["chemName"].ToString() == craftCic.ChemName){
- // round = drBaseChem["roundingDigits"].ToString();
- // break;
- // }
- //}
- //if(craftCic.RepName != "" && craftCic.RepVal != "" && !craftCic.RepVal.TryParseDecimal()){
- // express = FillJhyElemetValue(craftCic.RepVal, _jhyElementsEntity, craftDesingStdCicN, false);
- // craftDesingStdCicN.setRepVal(chemCaculat(express, round));
- //}
-
- //if (craftDesingStdCicN.getComplexType().equals("1")) {
- // //标准元素
- // if(!craftDesingStdCicN.getStdmin().equals("")){
- // express = FillJhyElemetValue(craftDesingStdCicN.getStdmin(), jhyElementsEntity, craftDesingStdCicN, false);
- // craftDesingStdCicN.setStdmin(chemCaculat(express, round));
- // }
- // if(!craftDesingStdCicN.getStdmax().equals("")){
- // express = FillJhyElemetValue(craftDesingStdCicN.getStdmax(), jhyElementsEntity, craftDesingStdCicN, false);
- // craftDesingStdCicN.setStdmax(chemCaculat(express, round));
- // }
- //}
- //if (craftDesingStdCicN.getChemType().equals("A")) {
- // String fieldName = craftDesingStdCicN.getChemName();
- // if(fieldName.equals("As")){
- // fieldName = "Asn";
- // }
- // String value = EntityTool.getValue(jhyElementsEntity, fieldName);
- // jhyResults.put(craftDesingStdCicN.getChemName(), value);
- //} else {
- // round = "2";
- // for(ComBaseChemEntity baseChem : baseChems){
- // if(baseChem.getChemName().equals(craftDesingStdCicN.getChemName())){
- // round = baseChem.getRoundingDigits();
- // break;
- // }
- // }
-
- // express = craftDesingStdCicN.getChemFormula();
- // express = FillJhyElemetValue(express, jhyElementsEntity, craftDesingStdCicN, true);
- // String value = chemCaculat(express, round);
- // jhyResults.put(craftDesingStdCicN.getChemName(), value);
- //}
- // }
- DataTable dt = CreateDataTable(_craftDesignStdCicList);
- //添加检化验数据
- foreach (QcmJhyElementsEntity jhyElement in _jhyElementsList)
- {
- //var row = ultraGrid1.DisplayLayout.Bands[0].AddNew();
- //foreach(var cell in row.Cells)
- //{
- // string key = cell.Column.Key;
- // string round = "2";
- // foreach (DataRow drBaseChem in _dtBaseChem.Rows)
- // {
- // if (drBaseChem["chemName"].ToString() == key)
- // {
- // round = drBaseChem["roundingDigits"].ToString();
- // break;
- // }
- // }
-
- // if(cell.Column.Key != cell.Column.Header.Caption)
- // {
- // cell.Value = EntityHelper.GetEntityPropertyValue(jhyElement, key);
- // }
- // else
- // {
- // var craftDesignStdCic = _craftDesignStdCicList.Where(
- // a => a.SpeclFl == "2" && a.ChemName == key).FirstOrDefault();
- // if (craftDesignStdCic == null) continue;
- // if (craftDesignStdCic.ChemType == "B")
- // {
- // cell.Value = FillJhyElemetValue(craftDesignStdCic.ChemFormula, jhyElement, craftDesignStdCic, true);
- // cell.Value = ChemCaculat(cell.Value.ToString(), round);
- // }
- // else
- // {
- // string columnName = key;
- // if (columnName == "As")
- // {
- // columnName = "Asn";
- // }
- // cell.Value = EntityHelper.GetEntityPropertyValue(jhyElement, columnName);
- // }
- // }
- //}
- DataRow dr = dt.NewRow();
- foreach (DataColumn column in dt.Columns)
- {
- if (column.ColumnName != column.Caption)
- {
- dr[column.ColumnName] = EntityHelper.GetEntityPropertyValue(jhyElement, column.ColumnName);
- }
- else
- {
- var craftDesignStdCic = _craftDesignStdCicList.Where(a => a.SpeclFl == "2" && a.ChemName == column.ColumnName).FirstOrDefault();
-
- if (craftDesignStdCic == null) //优先使用内控,没有则用MSC0->MSCn
- {
- craftDesignStdCic = _craftDesignStdCicList.Where(a => a.SpeclFl == "0" && a.ChemName == column.ColumnName).FirstOrDefault();
- if (craftDesignStdCic == null)
- {
- craftDesignStdCic = _craftDesignStdCicList.Where(a => a.SpeclFl == "1" && a.ChemName == column.ColumnName).FirstOrDefault();
- if (craftDesignStdCic == null)
- {
- continue;
- }
- }
- }
- ////处理替代元素
- //if (craftDesignStdCic.RepName != "" && craftDesignStdCic.RepVal != "" && !craftDesignStdCic.RepVal.TryParseDecimal())
- //{
- // string express = FillJhyElemetValue(craftDesignStdCic.RepVal, jhyElement, craftDesignStdCic, false);
- // craftDesingStdCicN.setRepVal(chemCaculat(express, round));
- //}
- if (craftDesignStdCic.ChemType == "B")
- {
- string express = FillJhyElemetValue(craftDesignStdCic.ChemFormula, jhyElement, craftDesignStdCic, true);
- dr[column.ColumnName] = ChemCaculat(express, rounds[column.ColumnName]);
- }
- else
- {
- string columnName = column.ColumnName;
- if (columnName == "As")
- {
- columnName = "Asn";
- }
- dr[column.ColumnName] = EntityHelper.GetEntityPropertyValue(jhyElement, columnName);
- }
- }
- }
- dt.Rows.Add(dr);
- }
- ultraGrid1.BeginUpdate();
- ultraGrid1.DataSource = dt;
- ultraGrid1.DataBind();
- ultraGrid1.DisplayLayout.Override.FixedRowSortOrder = FixedRowSortOrder.FixOrder;
- ultraGrid1.DisplayLayout.Override.FixedRowAppearance.BackColor = Color.FromArgb(255, 250, 240);
- ultraGrid1.DisplayLayout.Rows.FixedRows.Add(ultraGrid1.DisplayLayout.Rows[0]);
- ultraGrid1.DisplayLayout.Rows.FixedRows.Add(ultraGrid1.DisplayLayout.Rows[1]);
- ultraGrid1.DisplayLayout.Rows.FixedRows.Add(ultraGrid1.DisplayLayout.Rows[2]);
- ultraGrid1.DisplayLayout.Rows.FixedRows.Add(ultraGrid1.DisplayLayout.Rows[3]);
- ultraGrid1.DisplayLayout.Rows.FixedRows.Add(ultraGrid1.DisplayLayout.Rows[4]);
- ultraGrid1.DisplayLayout.Rows.FixedRows.Add(ultraGrid1.DisplayLayout.Rows[5]);
-
- //显示复合元素字段
- foreach (var column in ultraGrid1.DisplayLayout.Bands[0].Columns)
- {
- var craftDesignStdCic = _craftDesignStdCicList.Where(
- a => a.ChemName == column.Key).FirstOrDefault();
- if (craftDesignStdCic != null && craftDesignStdCic.ChemType == "B")
- {
- column.Header.Appearance.BackColor = Color.FromArgb(189, 183, 107);
- column.Header.ToolTipText = craftDesignStdCic.ChemFormula;
- }
- }
- //绑定工艺评审记录到标准中
- foreach (var row in ultraGrid1.Rows)
- {
- if (row.Fixed)
- {
- string speclFl = "";
- if (row.Index == 0 || row.Index == 1)
- {
- speclFl = "0";
- }
- else if (row.Index == 2 || row.Index == 3)
- {
- speclFl = "1";
- }
- else
- {
- speclFl = "2";
- }
- foreach (var cell in row.Cells)
- {
- var craftDesignStdCics = _craftDesignStdCicList.Where(
- a => a.SpeclFl == speclFl && a.ChemName == cell.Column.Key).ToArray();
- cell.Tag = craftDesignStdCics;
- }
- }
- else
- {
- int cnt601F = _jhyElementsList.Where(a => a.SampleNo.StartsWith("601F")).Count();
- int cnt602F = _jhyElementsList.Where(a => a.SampleNo.StartsWith("602F")).Count();
- int cnt603F = _jhyElementsList.Where(a => a.SampleNo.StartsWith("603F")).Count();
- if (row.GetValue("assayNo").Split('_')[1] == "601" && cnt601F > 0)
- {
- row.Appearance.BackColor = Color.Gray;
- }
- if (row.GetValue("assayNo").Split('_')[1] == "602" && cnt602F > 0)
- {
- row.Appearance.BackColor = Color.Gray;
- }
- if (row.GetValue("assayNo").Split('_')[1] == "603" && cnt603F > 0)
- {
- row.Appearance.BackColor = Color.Gray;
- }
- }
- }
- if (ultraGrid1.Rows.Count >= 7)
- {
- ultraGrid1.Rows[6].Activate();
- }
- GridHelper.RefreshAndAutoSize(ultraGrid1);
- }
- finally
- {
- ultraGrid1.EndUpdate();
- }
- }
- private DataTable CreateDataTable(List<CraftOrdDesignStdCicEntity> craftDesignStdCicList)
- {
- DataTable dt = new DataTable();
- //new DataColumn[] {new DataColumn("Chk"){Caption = "选择", DataType = typeof(bool)},
- dt.Columns.AddRange(new DataColumn[] {
- new DataColumn("Assayno"){Caption = "成分化验号"},
- new DataColumn("StoveNo"){Caption = "熔炼炉号"}});
- foreach (CraftOrdDesignStdCicEntity stdCicEntity in craftDesignStdCicList)
- {
- if (dt.Columns.Contains(stdCicEntity.ChemName)) continue;
- dt.Columns.Add(new DataColumn(stdCicEntity.ChemName));
- }
- //添加国家标准
- var craftDesingStdCicG = craftDesignStdCicList.Where(a => a.SpeclFl == "0");
- DataRow dr = GetJhyElementsByCraft(craftDesingStdCicG.ToList(), dt, "1");
- dr["Assayno"] = "MSC0上限";
- if (craftDesingStdCicG.Count() > 0)
- {
- foreach (var groupRow in craftDesingStdCicG.GroupBy(a => a.Cic))
- {
- if (dr["StoveNo"].ToString() == "")
- {
- dr["StoveNo"] = groupRow.Key;
- }
- else
- {
- dr["StoveNo"] += "," + groupRow.Key;
- }
- }
- }
-
- var craftDesingStdCicG2 = craftDesignStdCicList.Where(a => a.SpeclFl == "0");
- dr = GetJhyElementsByCraft(craftDesingStdCicG2.ToList(), dt, "2");
- dr["Assayno"] = "MSC0下限";
- if (craftDesingStdCicG2.Count() > 0)
- {
- foreach (var groupRow in craftDesingStdCicG2.GroupBy(a => a.Cic))
- {
- if (dr["StoveNo"].ToString() == "")
- {
- dr["StoveNo"] = groupRow.Key;
- }
- else
- {
- dr["StoveNo"] += "," + groupRow.Key;
- }
- }
- }
- //添加客户标准
- var craftDesingStdCicA = craftDesignStdCicList.Where(a => a.SpeclFl == "1");
- dr = GetJhyElementsByCraft(craftDesingStdCicA.ToList(), dt, "1");
- dr["Assayno"] = "MSC(n)上限";
- if (craftDesingStdCicA.Count() > 0)
- {
- foreach (var groupRow in craftDesingStdCicA.GroupBy(a => a.Cic))
- {
- if (dr["StoveNo"].ToString() == "")
- {
- dr["StoveNo"] = groupRow.Key;
- }
- else
- {
- dr["StoveNo"] += "," + groupRow.Key;
- }
- }
- }
- var craftDesingStdCicA2 = craftDesignStdCicList.Where(a => a.SpeclFl == "1");
- dr = GetJhyElementsByCraft(craftDesingStdCicA2.ToList(), dt, "2");
- dr["Assayno"] = "MSC(n)下限";
- if (craftDesingStdCicA2.Count() > 0)
- {
- foreach (var groupRow in craftDesingStdCicA2.GroupBy(a => a.Cic))
- {
- if (dr["StoveNo"].ToString() == "")
- {
- dr["StoveNo"] = groupRow.Key;
- }
- else
- {
- dr["StoveNo"] += "," + groupRow.Key;
- }
- }
- }
- //添加内控标准
- var craftDesingStdCicN = craftDesignStdCicList.Where(a => a.SpeclFl == "2");
- dr = GetJhyElementsByCraft(craftDesingStdCicN.ToList(), dt, "1");
- dr["Assayno"] = "内控标准上限";
- if (craftDesingStdCicN.Count() > 0)
- {
- foreach (var groupRow in craftDesingStdCicN.GroupBy(a => a.Cic))
- {
- if (dr["StoveNo"].ToString() == "")
- {
- dr["StoveNo"] = groupRow.Key;
- }
- else
- {
- dr["StoveNo"] += "," + groupRow.Key;
- }
- }
- }
- var craftDesingStdCicN2 = craftDesignStdCicList.Where(a => a.SpeclFl == "2");
- dr = GetJhyElementsByCraft(craftDesingStdCicN2.ToList(), dt, "2");
- dr["Assayno"] = "内控标准下限";
- if (craftDesingStdCicN2.Count() > 0)
- {
- foreach (var groupRow in craftDesingStdCicN2.GroupBy(a => a.Cic))
- {
- if (dr["StoveNo"].ToString() == "")
- {
- dr["StoveNo"] = groupRow.Key;
- }
- else
- {
- dr["StoveNo"] += "," + groupRow.Key;
- }
- }
- }
- return dt;
- }
- private DataRow GetJhyElementsByCraft(List<CraftOrdDesignStdCicEntity> craftDesingStdCics, DataTable dt, string flag)
- {
- try
- {
- DataRow dr = dt.NewRow();
- if (craftDesingStdCics.Count() == 0)
- {
- foreach (CraftOrdDesignStdCicEntity stdCicEntity in craftDesingStdCics)
- {
- foreach (DataColumn column in dt.Columns)
- {
- if (column.ColumnName == stdCicEntity.ChemName)
- {
- dr[column.ColumnName] = "";
- }
- }
- }
- }
- else
- {
- foreach (DataColumn column in dt.Columns)
- {
- var chems = craftDesingStdCics.Where(a => a.ChemName == column.ColumnName);
- if (chems.Count() == 0) continue;
- if (flag == "1")
- {
- //多个索引码 上限值取最小
- if (chems.Where(a => a.Stdmax != "").Count() == 0) continue;
- if (chems.Where(a => a.Stdmax != "" && a.Stdmax.TryParseDecimal()).Count() > 0)
- {
- string minStdMax = "";
- string stdMaxSign = "";
- foreach (var chem in chems.Where(a => a.Stdmax != "" && a.Stdmax.TryParseDecimal()))
- {
- if (minStdMax == "" || decimal.Parse(chem.Stdmax) < decimal.Parse(minStdMax))
- {
- minStdMax = chem.Stdmax;
- stdMaxSign = chem.StdmaxSign;
- }
- }
- dr[column.ColumnName] = JudgeHelper.GetExpress("", "", stdMaxSign, minStdMax);
- }
- else
- {
- dr[column.ColumnName] = chems.FirstOrDefault().Stdmax;
- }
- }
- else
- {
- //多个索引码下限值取最大
- if (chems.Where(a => a.Stdmin != "").Count() == 0) continue;
- if (chems.Where(a => a.Stdmin != "" && a.Stdmin.TryParseDecimal()).Count() > 0)
- {
- string maxStdmin = "";
- string stdminSign = "";
- foreach (var chem in chems.Where(a => a.Stdmin != "" && a.Stdmin.TryParseDecimal()))
- {
- if (maxStdmin == "" || decimal.Parse(chem.Stdmin) > decimal.Parse(maxStdmin))
- {
- maxStdmin = chem.Stdmin;
- stdminSign = chem.StdminSign;
- }
- }
- dr[column.ColumnName] = JudgeHelper.GetExpress(stdminSign, maxStdmin, "", "");
- }
- else
- {
- dr[column.ColumnName] = chems.FirstOrDefault().Stdmin;
- }
- }
- }
- }
- dt.Rows.Add(dr);
- return dr;
- }
- catch (Exception ex)
- {
- return null;
- }
-
- }
- private string _tipMsg = "";
- public string TipMsg
- {
- get { return _tipMsg; }
- set { _tipMsg = value; }
- }
- private void ultraGrid1_AfterRowActivate(object sender, EventArgs e)
- {
- try
- {
- this.Cursor = Cursors.WaitCursor;
- ultraGrid1.BeginUpdate();
- DataRowView dataRow = (DataRowView)ultraGrid1.ActiveRow.ListObject;
- if (dataRow["ASSAYNO"].ToString().Contains("限"))
- {
- return;
- }
- _tipMsg = "";
- GridActiveDele();
-
- }
- finally
- {
- ultraGrid1.EndUpdate();
- this.Cursor = Cursors.Default;
- }
- }
- private void GridActiveDele()
- {
- Color yellow = Color.FromArgb(238, 238, 0);
- Color red = Color.FromArgb(255, 106, 106);
- Color green = Color.FromArgb(60, 179, 113);
- Color gray = Color.FromArgb(205, 201, 201);
- foreach (UltraGridRow row in ultraGrid1.DisplayLayout.Rows.FixedRows)
- {
- //if (!row.GetValue("ASSAYNO").Contains("内控")) continue;
- foreach (UltraGridCell cell in row.Cells)
- {
- if (cell.Column.Key != cell.Column.Header.Caption) continue;
- CraftOrdDesignStdCicEntity[] stdCics = (CraftOrdDesignStdCicEntity[])cell.Tag;
- if (stdCics.Length == 0) continue;
- var actRow = ultraGrid1.ActiveRow;
- CraftOrdDesignStdCicEntity[] calStdCics = GetCalStdCics(stdCics, ultraGrid1.ActiveRow);
- //合并后的加严标准
- CraftOrdDesignStdCicEntity stdCic = EntityHelper.CopyEntity<CraftOrdDesignStdCicEntity>(calStdCics[0]);
- foreach (CraftOrdDesignStdCicEntity calStdCic in calStdCics)
- {
- //取检、判、报
- if (calStdCic.Ischeck != "")
- {
- stdCic.Ischeck = calStdCic.Ischeck;
- }
- if (calStdCic.Isjudge != "")
- {
- stdCic.Isjudge = calStdCic.Isjudge;
- }
- if (calStdCic.Isquote != "")
- {
- stdCic.Isquote = calStdCic.Isquote;
- }
- //取最严的标准上下限
- decimal min = stdCic.Stdmin == "" ? 0M : decimal.Parse(stdCic.Stdmin);
- decimal calMin = calStdCic.Stdmin == "" ? 0M : decimal.Parse(calStdCic.Stdmin);
- if (calMin > min)
- {
- stdCic.Stdmin = calStdCic.Stdmin;
- }
- decimal max = stdCic.Stdmax == "" ? 999999M : decimal.Parse(stdCic.Stdmax);
- decimal calMax = calStdCic.Stdmax == "" ? 999999M : decimal.Parse(calStdCic.Stdmax);
- if (calMax < max)
- {
- stdCic.Stdmax = calStdCic.Stdmax;
- }
- //取限制元素
- if (calStdCic.EleName != "")
- {
- stdCic.EleName = calStdCic.EleName;
- }
- }
- //foreach (var stdCic in stdCics)
- //{
- // if (row.Index % 2 == 0)
- // {
- // expresss = FillJhyElemetValue(stdCic.Stdmax, jhyElement, stdCic, false);
- // expresss = stdCic.StdmaxSign + ChemCaculat(expresss, round);
- // }
- // else
- // {
- // expresss = FillJhyElemetValue(stdCic.Stdmin, jhyElement, stdCic, false);
- // expresss = stdCic.StdminSign + ChemCaculat(expresss, round);
- // }
- //}
- string activeValue = ultraGrid1.GetActiveRowValue(cell.Column.Key);
- //activeValue = activeValue.TrimStart('-'); //负号表示小于某个值。
- if (stdCic.Isjudge == "0")
- {
- if (stdCic.Isquote == "0")
- {
- continue;
- }
- else
- {
- if (activeValue == "")
- {
- cell.Appearance.BackColor = yellow;
- }
- else
- {
- cell.Appearance.BackColor = gray;
- }
- continue;
- }
- }
- if (cell.Value.ToString() == "") continue;
- //限制元素处理(如果不符合限制元素则不判定)
- string expresss = "";
- string strEval = "";
- bool checkResult = false;
- if (row.Index == 4 || row.Index == 5)
- {
- if (stdCic.EleMinSign != "")
- {
- expresss = stdCic.EleMinSign + stdCic.EleMin;
- strEval = (ultraGrid1.GetActiveRowValue(stdCic.EleName) + expresss).Eval();
- if (bool.TryParse(strEval, out checkResult) && !checkResult)
- {
- cell.Column.Hidden = true;
- continue;
- }
- else
- {
- cell.Column.Hidden = false;
- }
- }
- if (stdCic.EleMaxSign != "")
- {
- expresss = stdCic.EleMaxSign + stdCic.EleMax;
- strEval = (ultraGrid1.GetActiveRowValue(stdCic.EleName) + expresss).Eval();
- if (bool.TryParse(strEval, out checkResult) && !checkResult)
- {
- cell.Column.Hidden = true;
- continue;
- }
- else
- {
- cell.Column.Hidden = false;
- }
- }
- }
- //if (stdCic.ComplexType == "0")
- //{
- // expresss = cell.Value.ToString();
- //}
- //else
- //{
- // var jhyElement = _jhyElementsList.Where(a => a.Assayno == ultraGrid1.GetActiveRowValue("Assayno")).FirstOrDefault();
- // string round = "2";
- // if (rounds.ContainsKey(cell.Column.Key))
- // {
- // round = rounds[cell.Column.Key];
- // }
- // if(row.Index % 2 == 0)
- // {
- // expresss = FillJhyElemetValue(stdCic.Stdmax, jhyElement, stdCic, false);
- // expresss = stdCic.StdmaxSign + ChemCaculat(expresss, round);
- // }
- // else
- // {
- // expresss = FillJhyElemetValue(stdCic.Stdmin, jhyElement, stdCic, false);
- // expresss = stdCic.StdminSign + ChemCaculat(expresss, round);
- // }
- // cell.Value = expresss;
- //}
- if (stdCic.ComplexType == "0")
- {
- expresss = cell.Value.ToString();
- }
- else
- {
- var jhyElement = _jhyElementsList.Where(a => a.Assayno == ultraGrid1.GetActiveRowValue("Assayno")).FirstOrDefault();
- if (row.Index % 2 == 0)
- {
- expresss = FillJhyElemetValue(stdCic.Stdmax, jhyElement, stdCic, false);
- expresss = stdCic.StdmaxSign + ChemCaculat(expresss, rounds[cell.Column.Key]);
- }
- else
- {
- expresss = FillJhyElemetValue(stdCic.Stdmin, jhyElement, stdCic, false);
- expresss = stdCic.StdminSign + ChemCaculat(expresss, rounds[cell.Column.Key]);
- }
- cell.Value = expresss;
- }
- strEval = (activeValue + expresss).Eval();
- if (activeValue == "" || !bool.TryParse(strEval, out checkResult) || !checkResult)
- {
- string tipMsg = string.Format("成分化验号:{0}中的{1}不符合内控标准!", ultraGrid1.GetActiveRowValue("ASSAYNO"), cell.Column.Key);
- if (_tipMsg == "")
- {
- _tipMsg = tipMsg;
- }
- cell.Appearance.BackColor = red;
- }
- else
- {
- cell.Appearance.BackColor = green;
- }
- }
- }
- if (_tipMsg == "")
- {
- _tipMsg = "无";
- }
- ultraGrid1.UpdateData();
- }
- /// <summary>
- /// 获取计算好的标准上下限
- /// </summary>
- /// <param name="stdCics"></param>
- /// <param name="row"></param>
- /// <param name="assayNo"></param>
- /// <returns></returns>
- private CraftOrdDesignStdCicEntity[] GetCalStdCics(CraftOrdDesignStdCicEntity[] stdCics, UltraGridRow row)
- {
- CraftOrdDesignStdCicEntity[] calStdCics = new CraftOrdDesignStdCicEntity[stdCics.Length];
- String express = "";
- var jhyElement = _jhyElementsList.Where(a => a.Assayno == row.GetValue("Assayno")).FirstOrDefault();
- for (int i = 0; i < stdCics.Length; i++)
- {
- calStdCics[i] = EntityHelper.CopyEntity<CraftOrdDesignStdCicEntity>(stdCics[i]);
- if (stdCics[i].RepName != "" && stdCics[i].RepVal != "" && stdCics[i].RepVal.TryParseDecimal())
- {
- express = FillJhyElemetValue(stdCics[i].RepVal, jhyElement, stdCics[i], false);
- calStdCics[i].RepVal = ChemCaculat(express, rounds[stdCics[i].RepName]);
- }
- if (stdCics[i].ComplexType == "1")
- {
- //标准元素
- if (stdCics[i].Stdmin != "")
- {
- express = FillJhyElemetValue(stdCics[i].Stdmin, jhyElement, stdCics[i], false);
- calStdCics[i].Stdmin = ChemCaculat(express, rounds[stdCics[i].ChemName]);
- }
- if (stdCics[i].Stdmax != "")
- {
- express = FillJhyElemetValue(stdCics[i].Stdmax, jhyElement, stdCics[i], false);
- calStdCics[i].Stdmax = ChemCaculat(express, rounds[stdCics[i].ChemName]);
- }
- }
- //暂时随便取一个复合元素值(不同CIC对应的替代元素可能不一样)
- if (stdCics[i].ChemType == "B")
- {
- express = stdCics[i].ChemFormula;
- express = FillJhyElemetValue(express, jhyElement, stdCics[i], true);
- string value = ChemCaculat(express, rounds[stdCics[i].ChemName]);
- row.Cells[stdCics[i].ChemName].Value = value;
- }
- }
- return calStdCics;
- }
- //private CraftOrdDesignStdCicEntity getMergeStdCic(CraftOrdDesignStdCicEntity[] stdCics, int rowIndex, string assayNo)
- //{
- // if (stdCics.Length == 0) return null;
- // CraftOrdDesignStdCicEntity mergeStdCic = new CraftOrdDesignStdCicEntity();
- // if (stdCics[0].ComplexType == "0")
- // {
- // foreach (var stdCic in stdCics)
- // {
- // mergeStdCic
- // }
- // }
- // _jhyElementsList.Where(a => a.Assayno == ultraGrid1.GetActiveRowValue("Assayno")).FirstOrDefault();
- // CraftOrdDesignStdCicEntity mergeStdCic = new CraftOrdDesignStdCicEntity();
- // foreach (var stdCic in stdCics)
- // {
- // string value = "";
- // string stdSign = "";
- // if (rowIndex % 2 == 0)
- // {
- // value = FillJhyElemetValue(stdCic.Stdmax, jhyElement, stdCic, false);
- // expresss = stdCic.StdmaxSign + ChemCaculat(expresss, round);
- // }
- // else
- // {
- // expresss = FillJhyElemetValue(stdCic.Stdmin, jhyElement, stdCic, false);
- // expresss = stdCic.StdminSign + ChemCaculat(expresss, round);
- // }
- // }
- //}
- //private List<string> GetExpressValue(CraftOrdDesignStdCicEntity stdCic, QcmJhyElementsEntity jhyElement)
- //{
- // List<string> expresss = new List<string>();
- // if (stdCic.Stdmin != "")
- // {
- // string express = "";
- // express = stdCic.Stdmin;
- // express = FillJhyElemetValue(express, jhyElement, stdCic.ChemName);
- // express = stdCic.StdminSign + express;
- // expresss.Add(express);
- // }
-
- // if(stdCic.Stdmax != "")
- // {
- // string express = "";
- // express = stdCic.Stdmax;
- // express = FillJhyElemetValue(express, jhyElement, stdCic.ChemName);
- // express = stdCic.StdmaxSign + express;
- // expresss.Add(express);
- // }
- // return expresss;
- //}
- //private string GetChemFormulaValue(CraftOrdDesignStdCicEntity stdCic,
- // List<CraftOrdDesignStdCicEntity> craftDesignStdCicList, UltraGrid jhyElementGrid)
- //{
- // string chemFormula = stdCic.ChemFormula;
- // chemFormula = FillJhyElemetValue(chemFormula, craftDesignStdCicList, jhyElementGrid);
- // return chemFormula.CompileFormula().ToString2();
- //}
- private static string ChemCaculat(string express, string round)
- {
- string strValue = JudgeHelper.Eval(express);
- if (!strValue.TryParseDecimal())
- {
- return strValue;
- }
- double value = Math.Abs(double.Parse(strValue));
- return Math.Round(value, int.Parse(round)).ToString("F" + round);
- }
- private string FillJhyElemetValue(string express, QcmJhyElementsEntity jhyElement, CraftOrdDesignStdCicEntity stdCic,
- bool isMultiChem)
- {
- var properties = jhyElement.GetType().GetProperties();
- Array.Sort(properties, new MyCompare());
- //复合元素处理
- foreach (var property in properties)
- {
- string replaceName = property.Name;
- if (property.Name == "Asn")
- {
- replaceName = "As";
- }
-
- if (express.Contains(replaceName))
- {
- string value = property.GetValue(jhyElement, null).ToString2();
- value = value.TrimStart('-');
- if (isMultiChem)
- {
- if (stdCic.RepName == replaceName && stdCic.RepVal != "")
- {
- String repExpress = "";
- bool repResult = true;
- bool evalResult = false;
- if (stdCic.RepMinSign != "")
- {
- repExpress = stdCic.RepMinSign + stdCic.RepMin;
- if (bool.TryParse(JudgeHelper.Eval(value + repExpress), out evalResult) && !evalResult)
- {
- repResult = false;
- }
- }
- if (stdCic.RepMaxSign != "")
- {
- repExpress = stdCic.RepMaxSign + stdCic.RepMax;
- if (bool.TryParse(JudgeHelper.Eval(value + repExpress), out evalResult) && !evalResult)
- {
- repResult = false;
- }
- }
- if (repResult)
- {
- string repVal = FillJhyElemetValue(stdCic.RepVal, jhyElement, stdCic, false).Eval();
- value = repVal;
- }
- }
- }
- if (value != "")
- {
- express = express.Replace(replaceName, value);
- }
- }
- }
- return express;
- }
- /// <summary>
- /// 从长到短排序, 这样就不会替换元素错误, 比如 S和Sn。
- /// </summary>
- private class MyCompare : IComparer<PropertyInfo>
- {
- public int Compare(PropertyInfo x, PropertyInfo y)
- {
- if (x.Name.Length < y.Name.Length)
- {
- return 1;
- }
- else if (x.Name.Length > y.Name.Length)
- {
- return -1;
- }
- else
- {
- return 0;
- }
- }
- }
- private class ChemSeqCompare : IComparer<CraftOrdDesignStdCicEntity>
- {
- public int Compare(CraftOrdDesignStdCicEntity x, CraftOrdDesignStdCicEntity y)
- {
- if (decimal.Parse(x.ChemSeq) < decimal.Parse(y.ChemSeq))
- {
- return -1;
- }
- else if (decimal.Parse(x.ChemSeq) > decimal.Parse(y.ChemSeq))
- {
- return 1;
- }
- else
- {
- return 0;
- }
- }
- }
- private void ultraGrid1_CellChange(object sender, CellEventArgs e)
- {
- ultraGrid1.UpdateData();
- }
- public void ClearData()
- {
- ultraGrid1.DataSource = null;
- }
- private void ultraGrid1_AfterSortChange(object sender, BandEventArgs e)
- {
- GridHelper.RefreshAndAutoSize(ultraGrid1);
- }
- private void ultraGrid1_BeforeRowDeactivate(object sender, CancelEventArgs e)
- {
- var a = Cursor.Position;
- var b = Control.MousePosition;
- var element = ultraGrid1.DisplayLayout.UIElement.ElementFromPoint(ultraGrid1.PointToClient(a));
- if (element == null) return;
- var row = (UltraGridRow)element.GetContext(typeof(UltraGridRow));
- if (row != null && row.Fixed)
- {
- e.Cancel = true;
- }
- }
- }
- }
|