QcmJhyPhyResultCtrl.cs 46 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031
  1. using Core.Mes.Client.Comm.Control;
  2. using Core.Mes.Client.Comm.Tool;
  3. using Core.StlMes.Client.Judge.Commons;
  4. using Core.StlMes.Client.Judge.Models;
  5. using CoreFS.CA06;
  6. using Infragistics.Win;
  7. using Infragistics.Win.UltraWinGrid;
  8. using System;
  9. using System.Collections.Generic;
  10. using System.Data;
  11. using System.Drawing;
  12. using System.Linq;
  13. using System.Windows.Forms;
  14. namespace Core.StlMes.Client.Judge.Controls
  15. {
  16. public partial class QcmJhyPhyResultCtrl : UserControl
  17. {
  18. private Dal _d;
  19. private string _tipMsg = "";
  20. public string TipMsg
  21. {
  22. get { return _tipMsg; }
  23. set { _tipMsg = value; }
  24. }
  25. private bool _showProcess = false;
  26. private List<CraftOrdDesignStdPicEntity> _craftDesignStdPics = new List<CraftOrdDesignStdPicEntity>();
  27. public QcmJhyPhyResultCtrl(Control container, OpeBase ob, bool showProcess)
  28. {
  29. InitializeComponent();
  30. _d = new Dal(ob);
  31. _showProcess = showProcess;
  32. container.Controls.Add(this);
  33. this.Dock = DockStyle.Fill;
  34. this.BringToFront();
  35. if (!showProcess)
  36. {
  37. ultraGrid1.DisplayLayout.Bands[0].Columns["processDesc"].Hidden = true;
  38. }
  39. ValueList isGood = new ValueList();
  40. isGood.ValueListItems.Add("0", "符合");
  41. isGood.ValueListItems.Add("1", "不符合");
  42. ultraGrid1.DisplayLayout.Bands[0].Columns["isGood"].ValueList = isGood;
  43. ValueList isDefect = new ValueList();
  44. isDefect.ValueListItems.Add("0", "符合");
  45. isDefect.ValueListItems.Add("1", "不符合");
  46. ultraGrid1.DisplayLayout.Bands[0].Columns["isDefect"].ValueList = isDefect;
  47. ValueList ischeck = new ValueList();
  48. ischeck.ValueListItems.Add("0", " ");
  49. ischeck.ValueListItems.Add("1", "√");
  50. ultraGrid1.DisplayLayout.Bands[0].Columns["ischeck"].ValueList = ischeck;
  51. ValueList isquote = new ValueList();
  52. isquote.ValueListItems.Add("0", " ");
  53. isquote.ValueListItems.Add("1", "√");
  54. ultraGrid1.DisplayLayout.Bands[0].Columns["isquote"].ValueList = isquote;
  55. ValueList isjudge = new ValueList();
  56. isjudge.ValueListItems.Add("0", " ");
  57. isjudge.ValueListItems.Add("1", "√");
  58. ultraGrid1.DisplayLayout.Bands[0].Columns["isjudge"].ValueList = isjudge;
  59. }
  60. public void QueryByBatchNo(string lotNo, string judgeStoveNo, string batchNo, string ordLnPk, string ordLnDlyPk, string craftSeq, string mscPline,
  61. string processCode, string pic, string phyCodeMin, string sampleId, string sampleNo, string craftSource, string stoveNo)
  62. {
  63. _tipMsg = "";
  64. var jhyPhyResults = _d.GetTableByXmlId("QcmJhyPhyresultDAL.QueryByBatchNoPhyMin", judgeStoveNo, batchNo, sampleId, sampleNo, phyCodeMin,
  65. processCode);
  66. _craftDesignStdPics.Clear();
  67. _craftDesignStdPics = _d.GetEntitysByXmlId<CraftOrdDesignStdPicEntity>("CraftOrdDesignStdPic.getCraftJfPhyByOrdLnPk",
  68. ordLnPk, craftSeq, phyCodeMin);
  69. var craftDesignStdPicsTmp = _d.GetEntitysByXmlId<CraftOrdDesignStdPicEntity>("CraftOrdDesignStdPic.queryCraftPhyByOrdLnPk", ordLnPk, craftSeq,
  70. mscPline, processCode, pic, phyCodeMin, craftSource);
  71. foreach (var craftDesignStdPic in craftDesignStdPicsTmp)
  72. {
  73. _craftDesignStdPics.Add(craftDesignStdPic);
  74. }
  75. foreach (var craftStdPic in _craftDesignStdPics)
  76. {
  77. //处理冲击功
  78. if (sampleId.StartsWith("F") && craftStdPic.PhyName.StartsWith("冲击功K"))
  79. {
  80. craftStdPic.JudgeBasis = "D";
  81. craftStdPic.Addcondition = "";
  82. craftStdPic.Addpercent = null;
  83. craftStdPic.AddstdconCode = "";
  84. craftStdPic.AddstdMax = "";
  85. craftStdPic.AddstdMaxSign = "";
  86. craftStdPic.AddstdMin = "";
  87. craftStdPic.AddstdMinSign = "";
  88. }
  89. }
  90. ultraGrid1.BeginUpdate();
  91. GridHelper.CopyDataToDatatable(jhyPhyResults, dataTable1, !_showProcess);
  92. if (_craftDesignStdPics.Count == 0)
  93. {
  94. ultraGrid1.EndUpdate();
  95. return;
  96. }
  97. DataRow drG = _d.GetRowByXmlId("JdgSlmOrderLine.getSpecByDlyPk", ordLnDlyPk);
  98. DataRow chem601 = _d.GetRowByXmlId("QcmJhyElementsDAL.queryAllByStoveNo", stoveNo, "601");
  99. DataRow chem602 = _d.GetRowByXmlId("QcmJhyElementsDAL.queryAllByStoveNo", stoveNo, "602");
  100. Color red = Color.FromArgb(255, 106, 106);
  101. foreach (var row in ultraGrid1.Rows)
  102. {
  103. if (row.GetValue("pic") != "") continue;
  104. var queryCraftDesignStdPics = _craftDesignStdPics.Where(a => a.PhyCodeMin == row.GetValue("PhyCodeMin")
  105. && a.PhyCode == row.GetValue("PhyCode")
  106. && a.ItemCodeF == row.GetValue("ItemCodeF")
  107. && (a.ItemCodeW == row.GetValue("ItemCodeW") || a.PhyCodeMin == "C0007" || a.PhyCodeMin == "C0009" || a.PhyCodeMin == "C0038" || a.PhyCodeMin == "C0004" || a.PhyCodeMin == "C0100" || a.PhyCodeMin == "C0018")
  108. && a.ItemCodeS == row.GetValue("ItemCodeS")
  109. );
  110. var craftDesignStdPicA = _craftDesignStdPics.Where(a => a.SpeclFl == "1" && a.PhyCodeMin == row.GetValue("PhyCodeMin") && a.PhyCode == row.GetValue("PhyCode")
  111. && (a.ItemCodeF == "" || a.ItemCodeF == row.GetValue("ItemCodeF"))
  112. && (a.ItemCodeW == "" || a.ItemCodeW == row.GetValue("ItemCodeW"))
  113. && (a.ItemCodeS == "" || a.ItemCodeS == row.GetValue("ItemCodeS"))).FirstOrDefault();
  114. string str1 = row.GetValue("PhyCodeMin");
  115. string str2 = row.GetValue("PhyCode");
  116. if (craftDesignStdPicA != null)
  117. {
  118. row.SetValue("ischeck", craftDesignStdPicA.Ischeck);
  119. row.SetValue("isquote", craftDesignStdPicA.Isquote);
  120. row.SetValue("isjudge", craftDesignStdPicA.Isjudge);
  121. row.SetValue("pic", craftDesignStdPicA.Pic);
  122. CalculateExpress(craftDesignStdPicA, drG["HEIGHT"].ToString(), "", chem601, chem602, row.GetValue("sampleSize"));
  123. row.SetValue("alphaExpress", GetExpress(craftDesignStdPicA));
  124. bool compare = ComparePhy(row, "alphaExpress", craftDesignStdPicA, false);
  125. row.SetValue("alphaAttachExpress", GetAttachExpress(craftDesignStdPicA));
  126. ComparePhy(row, "alphaAttachExpress", craftDesignStdPicA, compare);
  127. ComparePhy(row, "checkTemp", craftDesignStdPicA, false);
  128. }
  129. foreach (var a in queryCraftDesignStdPics)
  130. {
  131. if(a.SpeclFl == "2"){
  132. continue;
  133. }
  134. }
  135. var craftDesignStdPicN = queryCraftDesignStdPics.Where(a => a.SpeclFl == "2").FirstOrDefault();
  136. if (craftDesignStdPicN != null)
  137. {
  138. row.SetValue("stdMatch", "YES");
  139. row.SetValue("ischeck", craftDesignStdPicN.Ischeck);
  140. row.SetValue("isquote", craftDesignStdPicN.Isquote);
  141. row.SetValue("isjudge", craftDesignStdPicN.Isjudge);
  142. row.SetValue("pic", craftDesignStdPicN.Pic);
  143. CalculateExpress(craftDesignStdPicN, drG["HEIGHT"].ToString(), "", chem601, chem602, row.GetValue("sampleSize"));
  144. row.SetValue("nkExpress", GetExpress(craftDesignStdPicN));
  145. bool compare = ComparePhy(row, "nkExpress", craftDesignStdPicN, false);
  146. row.SetValue("nkAttachExpress", GetAttachExpress(craftDesignStdPicN));
  147. ComparePhy(row, "nkAttachExpress", craftDesignStdPicN, compare);
  148. ComparePhy(row, "checkTemp", craftDesignStdPicN, false);
  149. }
  150. else
  151. {
  152. row.SetValue("stdMatch", "NO");
  153. row.Cells["stdMatch"].Appearance.BackColor = red;
  154. }
  155. }
  156. //隐藏没有值的列
  157. foreach (UltraGridColumn col in ultraGrid1.DisplayLayout.Bands[0].Columns)
  158. {
  159. if (!col.Key.StartsWith("value") && col.Key != "average"
  160. && col.Key != "isGood" && col.Key != "isDefect") continue;
  161. bool exist = false;
  162. foreach (UltraGridRow row in ultraGrid1.Rows)
  163. {
  164. if (row.Cells[col.Key].Value.ToString() != "")
  165. {
  166. exist = true;
  167. break;
  168. }
  169. }
  170. if (!exist)
  171. {
  172. col.Hidden = true;
  173. }
  174. else
  175. {
  176. col.Hidden = false;
  177. }
  178. if (col.Key == "average" && _craftDesignStdPics[0].PhyCodeMax == "R0007")
  179. {
  180. col.Hidden = true;
  181. }
  182. }
  183. ultraGrid1.EndUpdate();
  184. ultraGrid1.UpdateData();
  185. GridHelper.RefreshAndAutoSize(ultraGrid1);
  186. }
  187. private void CalculateExpress(CraftOrdDesignStdPicEntity craftDesingStdPic, String t, String axc,
  188. DataRow chem601, DataRow chem602, string sampleSize)
  189. {
  190. if (craftDesingStdPic.PhyType == "0") return;
  191. axc = CalculateAxc(sampleSize, t);
  192. //替换公式符号
  193. if (craftDesingStdPic.Stdmin != "" || !StringUtil.IsNumber(craftDesingStdPic.Stdmin))
  194. {
  195. string stdMin = craftDesingStdPic.Stdmin.Replace("t", t).Replace("Axc", axc);
  196. craftDesingStdPic.Stdmin = JudgeHelper.GetRoundValue(stdMin, 0);
  197. if (stdMin.Contains("C"))
  198. {
  199. if (chem601 == null)
  200. {
  201. craftDesingStdPic.Stdmin = stdMin;
  202. }
  203. else
  204. {
  205. if (chem601["C"].ToString() != "")
  206. {
  207. String tmpStd = stdMin.Replace("C%", chem601["C"].ToString()).Replace("C", chem601["C"].ToString());
  208. tmpStd = JudgeHelper.GetRoundValue(tmpStd, 1);
  209. if (chem602 == null)
  210. {
  211. craftDesingStdPic.Stdmin = tmpStd;
  212. }
  213. else
  214. {
  215. String tmpStd2 = stdMin.Replace("C%", chem602["C"].ToString()).Replace("C%", chem602["C"].ToString());
  216. tmpStd2 = JudgeHelper.GetRoundValue(tmpStd2, 1);
  217. if (Double.Parse(tmpStd) < Double.Parse(tmpStd2))
  218. {
  219. craftDesingStdPic.Stdmin = tmpStd;
  220. }
  221. else
  222. {
  223. craftDesingStdPic.Stdmin = tmpStd2;
  224. }
  225. }
  226. }
  227. }
  228. }
  229. }
  230. if (craftDesingStdPic.Stdmax != "" || !StringUtil.IsNumber(craftDesingStdPic.Stdmax))
  231. {
  232. string stdMax = craftDesingStdPic.Stdmax.Replace("t", t).Replace("Axc", axc);
  233. craftDesingStdPic.Stdmax = JudgeHelper.GetRoundValue(stdMax, 0);
  234. if (stdMax.Contains("C"))
  235. {
  236. if (chem601 == null)
  237. {
  238. craftDesingStdPic.Stdmax = stdMax;
  239. }
  240. else
  241. {
  242. if (chem601["C"].ToString() != "")
  243. {
  244. String tmpStd = stdMax.Replace("C%", chem601["C"].ToString()).Replace("C", chem601["C"].ToString());
  245. tmpStd = JudgeHelper.GetRoundValue(tmpStd, 1);
  246. if (chem602 != null)
  247. {
  248. craftDesingStdPic.Stdmax = tmpStd;
  249. }
  250. else
  251. {
  252. String tmpStd2 = stdMax.Replace("C%", chem602["C"].ToString()).Replace("C", chem602["C"].ToString());
  253. tmpStd2 = JudgeHelper.GetRoundValue(tmpStd2, 1);
  254. if (Double.Parse(tmpStd) < Double.Parse(tmpStd2))
  255. {
  256. craftDesingStdPic.Stdmax = tmpStd2;
  257. }
  258. else
  259. {
  260. craftDesingStdPic.Stdmax = tmpStd;
  261. }
  262. }
  263. }
  264. }
  265. }
  266. }
  267. if (craftDesingStdPic.Stdmin2 != "" || !StringUtil.IsNumber(craftDesingStdPic.Stdmin2))
  268. {
  269. string stdMin2 = craftDesingStdPic.Stdmin2.Replace("t", t);
  270. craftDesingStdPic.Stdmin2 = JudgeHelper.GetRoundValue(stdMin2, 0);
  271. if (stdMin2.Contains("C"))
  272. {
  273. if (chem601 == null)
  274. {
  275. craftDesingStdPic.Stdmin2 = stdMin2;
  276. }
  277. else
  278. {
  279. if (chem601["C"].ToString() != "")
  280. {
  281. String tmpStd = stdMin2.Replace("C%", chem601["C"].ToString()).Replace("C", chem601["C"].ToString());
  282. tmpStd = JudgeHelper.GetRoundValue(tmpStd, 1);
  283. if (chem602 == null)
  284. {
  285. craftDesingStdPic.Stdmin2 = tmpStd;
  286. }
  287. else
  288. {
  289. String tmpStd2 = stdMin2.Replace("C%", chem602["C"].ToString()).Replace("C", chem602["C"].ToString());
  290. tmpStd2 = JudgeHelper.GetRoundValue(tmpStd2, 1);
  291. if (Double.Parse(tmpStd) < Double.Parse(tmpStd2))
  292. {
  293. craftDesingStdPic.Stdmin2 = tmpStd;
  294. }
  295. else
  296. {
  297. craftDesingStdPic.Stdmin2 = tmpStd2;
  298. }
  299. }
  300. }
  301. }
  302. }
  303. }
  304. if (craftDesingStdPic.Stdmax2 != "" || !StringUtil.IsNumber(craftDesingStdPic.Stdmax2))
  305. {
  306. string stdMax2 = craftDesingStdPic.Stdmax2.Replace("t", t);
  307. craftDesingStdPic.Stdmax2 = JudgeHelper.GetRoundValue(stdMax2, 0);
  308. if (stdMax2.Contains("C"))
  309. {
  310. if (chem601 == null)
  311. {
  312. craftDesingStdPic.Stdmax2 = stdMax2;
  313. }
  314. else
  315. {
  316. if (chem601["C"].ToString() != "")
  317. {
  318. String tmpStd = stdMax2.Replace("C%", chem601["C"].ToString()).Replace("C", chem601["C"].ToString());
  319. tmpStd = JudgeHelper.GetRoundValue(tmpStd, 1);
  320. if (chem602 == null)
  321. {
  322. craftDesingStdPic.Stdmax2 = tmpStd;
  323. }
  324. else
  325. {
  326. String tmpStd2 = stdMax2.Replace("C%", chem602["C"].ToString()).Replace("C", chem602["C"].ToString());
  327. tmpStd2 = JudgeHelper.GetRoundValue(tmpStd2, 1);
  328. if (Double.Parse(tmpStd) < Double.Parse(tmpStd2))
  329. {
  330. craftDesingStdPic.Stdmax2 = tmpStd2;
  331. }
  332. else
  333. {
  334. craftDesingStdPic.Stdmax2 = tmpStd;
  335. }
  336. }
  337. }
  338. }
  339. }
  340. }
  341. }
  342. private string CalculateAxc(string sampleSize, string t)
  343. {
  344. string axc = "Axc";
  345. // do为棒
  346. sampleSize = sampleSize.Replace("d0", "do").Replace("b0", "bo").Replace("L0", "Lo");
  347. if (sampleSize.Contains("do"))
  348. {
  349. if (sampleSize.Contains("do=12.7") || sampleSize.Contains("do=8.9")
  350. || (sampleSize.Contains("do=12.5") && sampleSize.Contains("Lo=50")))
  351. {
  352. axc = "130";
  353. }
  354. else if (sampleSize.Contains("do=6.4"))
  355. {
  356. axc = "65";
  357. }
  358. }
  359. else if (sampleSize.Contains("bo"))
  360. {
  361. int index = sampleSize.IndexOf("bo=");
  362. String tmpStr = sampleSize.Substring(index + 3);
  363. int index2 = tmpStr.IndexOf("mm");
  364. String width = tmpStr.Substring(0, index2);
  365. double dWidth = 0;
  366. if (double.TryParse(width, out dWidth))
  367. {
  368. double area = dWidth * double.Parse(t);
  369. area = Math.Round(area / 10, 0);
  370. area = area * 10;
  371. if (area < 490)
  372. {
  373. axc = area.ToString();
  374. }
  375. else
  376. {
  377. axc = "490";
  378. }
  379. }
  380. }
  381. return axc;
  382. }
  383. private bool ComparePhy(UltraGridRow row, string columnKey, CraftOrdDesignStdPicEntity craftDesignStdPic, bool compare)
  384. {
  385. if ("checkTemp".Equals(columnKey))
  386. {
  387. // 夏比摆锤冲击试验-V型
  388. if (craftDesignStdPic.PhyCodeMin == "C0002"
  389. && !String.IsNullOrEmpty(craftDesignStdPic.ItemNameW)
  390. && ((!craftDesignStdPic.ItemNameW.Contains(row.GetValue("CHECKTEMP").ToString2()) && !"室温".Equals(craftDesignStdPic.ItemNameW))
  391. || ("室温".Equals(craftDesignStdPic.ItemNameW) && !(Int16.Parse(row.GetValue("CHECKTEMP")) > 18 && Int16.Parse(row.GetValue("CHECKTEMP")) < 28))
  392. )
  393. )
  394. {
  395. var dtRow = ((DataRowView)row.ListObject).Row;
  396. var dtcolumn = dtRow.Table.Columns[columnKey];
  397. dtRow.SetColumnError(dtcolumn, "实际温度与工艺不符合");
  398. return true;
  399. }
  400. // 室温拉伸试验
  401. if (craftDesignStdPic.PhyCodeMin == "C0001" && !String.IsNullOrEmpty(craftDesignStdPic.ItemNameW) && !(Int16.Parse(row.GetValue("CHECKTEMP")) > 10 && Int16.Parse(row.GetValue("CHECKTEMP")) < 35))
  402. {
  403. var dtRow = ((DataRowView)row.ListObject).Row;
  404. var dtcolumn = dtRow.Table.Columns[columnKey];
  405. dtRow.SetColumnError(dtcolumn, "实际温度与工艺不符合");
  406. return true;
  407. }
  408. return false;
  409. }
  410. if (craftDesignStdPic.PhyCodeMax == "R0007")
  411. {
  412. dataColumn27.Caption = "平均值1";
  413. dataColumn31.Caption = "平均值2";
  414. dataColumn35.Caption = "平均值3";
  415. }
  416. else
  417. {
  418. dataColumn27.Caption = "值4";
  419. dataColumn31.Caption = "值8";
  420. dataColumn35.Caption = "值12";
  421. }
  422. if (craftDesignStdPic.PhyCodeMax == "R0012" && row.GetValue("remark").Trim() != "")
  423. {
  424. var dtRow = ((DataRowView)row.ListObject).Row;
  425. var dtcolumn = dtRow.Table.Columns["remark"];
  426. dtRow.SetColumnError(dtcolumn, "夹杂物存在试验备注");
  427. }
  428. if (craftDesignStdPic.PhyCodeMin == "C0022")
  429. {
  430. if (row.Cells["Value1"].Value.ToString() == "无")
  431. {
  432. return true;
  433. }
  434. else
  435. {
  436. _tipMsg = "检验编号:{0}的检验结果不符合标准!";
  437. var dtRow = ((DataRowView)row.ListObject).Row;
  438. var dtcolumn = dtRow.Table.Columns[columnKey];
  439. dtRow.SetColumnError(dtcolumn, "不符合");
  440. return false;
  441. }
  442. }
  443. if (row.GetValue(columnKey).Contains("Axc") || row.GetValue(columnKey).Contains("Rm"))
  444. {
  445. _tipMsg = "检验编号:{0}的检验结果不符合标准!";
  446. var dtRow = ((DataRowView)row.ListObject).Row;
  447. var dtcolumn = dtRow.Table.Columns[columnKey];
  448. dtRow.SetColumnError(dtcolumn, "不符合");
  449. return false;
  450. }
  451. List<decimal> values = new List<decimal>();
  452. int chineseValueCnt = 0;
  453. int accordChineseValueCnt = 0;
  454. foreach (var cell in row.Cells)
  455. {
  456. if (cell.Column.Key.Contains("value"))
  457. {
  458. string val = cell.Value.ToString().Trim();
  459. if (val != "")
  460. {
  461. if (val.TryParseDecimal())
  462. {
  463. if (craftDesignStdPic.PhyCodeMax == "R0007")
  464. {
  465. if (craftDesignStdPic.JudgeBasis == "C")
  466. {
  467. if (cell.Column.Key.Contains("4") || cell.Column.Key.Contains("8")||cell.Column.Key.Contains("12"))
  468. {
  469. values.Add(decimal.Parse(val.Trim()));
  470. }
  471. }
  472. else if (craftDesignStdPic.JudgeBasis == "D")
  473. {
  474. if (!cell.Column.Key.Contains("4") && !cell.Column.Key.Contains("8") && !cell.Column.Key.Contains("12"))
  475. {
  476. values.Add(decimal.Parse(val.Trim()));
  477. }
  478. }
  479. else
  480. {
  481. values.Add(decimal.Parse(val.Trim()));
  482. }
  483. }
  484. else
  485. {
  486. values.Add(decimal.Parse(val.Trim()));
  487. }
  488. }
  489. else
  490. {
  491. chineseValueCnt++;
  492. if (val.StartsWith("符合") || val.StartsWith("不符合"))
  493. {
  494. if (val.StartsWith("符合"))
  495. {
  496. accordChineseValueCnt++;
  497. }
  498. }
  499. else
  500. {
  501. if (craftDesignStdPic.StdminSign == "=" && craftDesignStdPic.Stdmin.Trim() == val)
  502. {
  503. return true;
  504. }
  505. }
  506. }
  507. }
  508. }
  509. }
  510. if (chineseValueCnt > 0)
  511. {
  512. if (chineseValueCnt == accordChineseValueCnt)
  513. {
  514. return true;
  515. }
  516. else
  517. {
  518. var dtRow = ((DataRowView)row.ListObject).Row;
  519. var dtcolumn = dtRow.Table.Columns[columnKey];
  520. dtRow.SetColumnError(dtcolumn, "检验结果不符合标准!");
  521. return false;
  522. }
  523. }
  524. if (row.GetValue("isGood") != "" || row.GetValue("isDefect") != "")
  525. {
  526. bool ybResult = true;
  527. if (row.GetValue("isGood") == "1")
  528. {
  529. ybResult = false;
  530. }
  531. if (row.GetValue("isDefect") == "1")
  532. {
  533. ybResult = false;
  534. }
  535. if (ybResult)
  536. {
  537. return true;
  538. }
  539. else
  540. {
  541. var dtRow = ((DataRowView)row.ListObject).Row;
  542. var dtcolumn = dtRow.Table.Columns[columnKey];
  543. dtRow.SetColumnError(dtcolumn, "检验结果不符合标准!");
  544. return false;
  545. }
  546. }
  547. if (values.Count == 0)
  548. {
  549. var dtRow = ((DataRowView)row.ListObject).Row;
  550. var dtcolumn = dtRow.Table.Columns[columnKey];
  551. dtRow.SetColumnError(dtcolumn, "没有找到该项的检验值!");
  552. return false;
  553. }
  554. if (columnKey.Contains("Attach"))
  555. {
  556. bool showErrow = false;
  557. if ((compare && craftDesignStdPic.Addcondition == "1") || (!compare && craftDesignStdPic.Addcondition == "0")
  558. || craftDesignStdPic.Addcondition == "" && (craftDesignStdPic.AddstdMin != "" || craftDesignStdPic.AddstdMax != ""))
  559. {
  560. showErrow = true;
  561. }
  562. string str1 = craftDesignStdPic.Addcondition == "0" ? "不符合标准时" : "符合标准时";
  563. if (craftDesignStdPic.Addcondition == "")
  564. {
  565. str1 = "";
  566. }
  567. if (craftDesignStdPic.AddstdconCode == "407001" )//允许一个值
  568. {
  569. string str2 = "允许一个值";
  570. row.Cells[columnKey].ToolTipText = str1 + str2 + row.GetValue(columnKey);
  571. string stdMinExpress = craftDesignStdPic.StdminSign + craftDesignStdPic.Stdmin;
  572. string stdMaxExpress = craftDesignStdPic.StdmaxSign + craftDesignStdPic.Stdmax;
  573. string addExpress = "";
  574. if (craftDesignStdPic.AddstdMin != "")
  575. {
  576. addExpress = craftDesignStdPic.AddstdMinSign + craftDesignStdPic.AddstdMin;
  577. }
  578. if (craftDesignStdPic.AddstdMax != "")
  579. {
  580. if (addExpress != "")
  581. {
  582. addExpress += ";" + craftDesignStdPic.AddstdMaxSign + craftDesignStdPic.AddstdMax;
  583. }
  584. else
  585. {
  586. addExpress = craftDesignStdPic.AddstdMaxSign + craftDesignStdPic.AddstdMax;
  587. }
  588. }
  589. int cnt = 0;
  590. foreach (decimal value in values)
  591. {
  592. if (stdMinExpress != "" && stdMaxExpress == "")
  593. {
  594. if (JudgeHelper.JudgeExpress(value.ToString(), stdMinExpress))
  595. {
  596. continue;
  597. }
  598. }
  599. else if (stdMinExpress == "" && stdMaxExpress != "")
  600. {
  601. if (JudgeHelper.JudgeExpress(value.ToString(), stdMaxExpress))
  602. {
  603. continue;
  604. }
  605. }
  606. else
  607. {
  608. if (JudgeHelper.JudgeExpress(value.ToString(), stdMinExpress)
  609. && JudgeHelper.JudgeExpress(value.ToString(), stdMaxExpress))
  610. {
  611. continue;
  612. }
  613. }
  614. if (JudgeHelper.JudgeExpress(value.ToString(), addExpress))
  615. {
  616. if (cnt == 0)
  617. {
  618. cnt++;
  619. }
  620. else
  621. {
  622. if (columnKey.Contains("nk"))
  623. {
  624. _tipMsg = "检验编号:{0}的检验结果不符合内控标准!";
  625. }
  626. var dtRow = ((DataRowView)row.ListObject).Row;
  627. var dtcolumn = dtRow.Table.Columns[columnKey];
  628. if (showErrow)
  629. {
  630. dtRow.SetColumnError(dtcolumn, "不符合");
  631. }
  632. return false;
  633. }
  634. }
  635. else
  636. {
  637. if (columnKey.Contains("nk"))
  638. {
  639. _tipMsg = "检验编号:{0}的检验结果不符合内控标准!";
  640. }
  641. var dtRow = ((DataRowView)row.ListObject).Row;
  642. var dtcolumn = dtRow.Table.Columns[columnKey];
  643. if (showErrow)
  644. {
  645. dtRow.SetColumnError(dtcolumn, "不符合");
  646. }
  647. return false;
  648. }
  649. }
  650. if (values.Count == 0)
  651. {
  652. var dtRow = ((DataRowView)row.ListObject).Row;
  653. var dtcolumn = dtRow.Table.Columns[columnKey];
  654. dtRow.SetColumnError(dtcolumn, "没有找到该项的检验值!");
  655. return false;
  656. }
  657. }
  658. if (craftDesignStdPic.AddstdconCode == "407002")
  659. {
  660. string str2 = "最大最小差值";
  661. row.Cells[columnKey].ToolTipText = str1 + str2 + row.GetValue(columnKey);
  662. if (!JudgeHelper.JudgeExpress((values.Max() - values.Min()).ToString(), row.GetValue(columnKey)))
  663. {
  664. //row.Cells[columnKey].Appearance.BackColor = Color.FromArgb(255, 106, 106);
  665. if (columnKey.Contains("nk"))
  666. {
  667. _tipMsg = "检验编号:{0}的检验结果不符合内控标准!";
  668. }
  669. var dtRow = ((DataRowView)row.ListObject).Row;
  670. var dtcolumn = dtRow.Table.Columns[columnKey];
  671. if (showErrow)
  672. {
  673. dtRow.SetColumnError(dtcolumn, "不符合");
  674. }
  675. return false;
  676. }
  677. }
  678. if (craftDesignStdPic.AddstdconCode == "407003")
  679. {
  680. string str2 = "平均值必须";
  681. row.Cells[columnKey].ToolTipText = str1 + str2 + row.GetValue(columnKey);
  682. string average = row.GetValue("average");
  683. if (values.Count == 1)
  684. {
  685. average = values[0].ToString();
  686. }
  687. if (!JudgeHelper.JudgeExpress(average, row.GetValue(columnKey)))
  688. {
  689. //row.Cells[columnKey].Appearance.BackColor = Color.FromArgb(255, 106, 106);
  690. if (columnKey.Contains("nk"))
  691. {
  692. _tipMsg = "检验编号:{0}的检验结果不符合内控标准!";
  693. }
  694. var dtRow = ((DataRowView)row.ListObject).Row;
  695. var dtcolumn = dtRow.Table.Columns[columnKey];
  696. if (showErrow)
  697. {
  698. dtRow.SetColumnError(dtcolumn, "不符合");
  699. }
  700. return false;
  701. }
  702. }
  703. if (craftDesignStdPic.AddstdconCode == "407004")
  704. {
  705. string str2 = "最小值必须";
  706. row.Cells[columnKey].ToolTipText = str1 + str2 + row.GetValue(columnKey);
  707. if (!JudgeHelper.JudgeExpress(values.Min().ToString(), row.GetValue(columnKey)))
  708. {
  709. //row.Cells[columnKey].Appearance.BackColor = Color.FromArgb(255, 106, 106);
  710. if (columnKey.Contains("nk"))
  711. {
  712. _tipMsg = "检验编号:{0}的检验结果不符合内控标准!";
  713. }
  714. var dtRow = ((DataRowView)row.ListObject).Row;
  715. var dtcolumn = dtRow.Table.Columns[columnKey];
  716. if (showErrow)
  717. {
  718. dtRow.SetColumnError(dtcolumn, "不符合");
  719. }
  720. return false;
  721. }
  722. }
  723. if (craftDesignStdPic.AddstdconCode == "407005")
  724. {
  725. string str2 = "最大值必须";
  726. row.Cells[columnKey].ToolTipText = str1 + str2 + row.GetValue(columnKey);
  727. if (!JudgeHelper.JudgeExpress(values.Max().ToString(), row.GetValue(columnKey)))
  728. {
  729. //row.Cells[columnKey].Appearance.BackColor = Color.FromArgb(255, 106, 106);
  730. if (columnKey.Contains("nk"))
  731. {
  732. _tipMsg = "检验编号:{0}的检验结果不符合内控标准!";
  733. }
  734. var dtRow = ((DataRowView)row.ListObject).Row;
  735. var dtcolumn = dtRow.Table.Columns[columnKey];
  736. if (showErrow)
  737. {
  738. dtRow.SetColumnError(dtcolumn, "不符合");
  739. }
  740. return false;
  741. }
  742. }
  743. }
  744. else
  745. {
  746. string tips = "";
  747. switch (craftDesignStdPic.JudgeBasis)
  748. {
  749. case "A":
  750. tips = "最小值";
  751. break;
  752. case "B":
  753. tips = "最大值";
  754. break;
  755. case "C":
  756. tips = "平均值";
  757. break;
  758. case "D":
  759. tips = "逐项值";
  760. break;
  761. }
  762. tips += row.GetValue(columnKey);
  763. if (craftDesignStdPic.JudgeBasis == "A")
  764. {
  765. decimal value = values.Min();
  766. row.Cells[columnKey].ToolTipText = tips;
  767. if (!JudgeHelper.JudgeExpress(value.ToString(), row.GetValue(columnKey)))
  768. {
  769. //row.Cells[columnKey].Appearance.BackColor = Color.FromArgb(255, 106, 106);
  770. if (columnKey.Contains("nk"))
  771. {
  772. _tipMsg = "检验编号:{0}的检验结果不符合内控标准!";
  773. }
  774. var dtRow = ((DataRowView)row.ListObject).Row;
  775. var dtcolumn = dtRow.Table.Columns[columnKey];
  776. dtRow.SetColumnError(dtcolumn, "不符合");
  777. return false;
  778. }
  779. }
  780. else if (craftDesignStdPic.JudgeBasis == "B")
  781. {
  782. decimal value = values.Max();
  783. row.Cells[columnKey].ToolTipText = tips;
  784. if (!JudgeHelper.JudgeExpress(value.ToString(), row.GetValue(columnKey)))
  785. {
  786. //row.Cells[columnKey].Appearance.BackColor = Color.FromArgb(255, 106, 106);
  787. if (columnKey.Contains("nk"))
  788. {
  789. _tipMsg = "检验编号:{0}的检验结果不符合内控标准!";
  790. }
  791. var dtRow = ((DataRowView)row.ListObject).Row;
  792. var dtcolumn = dtRow.Table.Columns[columnKey];
  793. dtRow.SetColumnError(dtcolumn, "不符合");
  794. return false;
  795. }
  796. }
  797. else if (craftDesignStdPic.JudgeBasis == "C" && craftDesignStdPic.PhyCodeMax != "R0007")
  798. {
  799. string average = row.GetValue("average");
  800. if (values.Count == 1)
  801. {
  802. average = values[0].ToString();
  803. }
  804. row.Cells[columnKey].ToolTipText = tips;
  805. if (!JudgeHelper.JudgeExpress(average, row.GetValue(columnKey)))
  806. {
  807. //row.Cells[columnKey].Appearance.BackColor = Color.FromArgb(255, 106, 106);
  808. if (columnKey.Contains("nk"))
  809. {
  810. _tipMsg = "检验编号:{0}的检验结果不符合内控标准!";
  811. }
  812. var dtRow = ((DataRowView)row.ListObject).Row;
  813. var dtcolumn = dtRow.Table.Columns[columnKey];
  814. dtRow.SetColumnError(dtcolumn, "不符合");
  815. return false;
  816. }
  817. }
  818. else if (craftDesignStdPic.JudgeBasis == "D" || craftDesignStdPic.PhyCodeMax == "R0007")
  819. {
  820. row.Cells[columnKey].ToolTipText = tips;
  821. foreach (decimal value in values)
  822. {
  823. if (!JudgeHelper.JudgeExpress(value.ToString(), row.GetValue(columnKey)))
  824. {
  825. //row.Cells[columnKey].Appearance.BackColor = Color.FromArgb(255, 106, 106);
  826. if (columnKey.Contains("nk"))
  827. {
  828. _tipMsg = "检验编号:{0}的检验结果不符合内控标准!";
  829. }
  830. var dtRow = ((DataRowView)row.ListObject).Row;
  831. var dtcolumn = dtRow.Table.Columns[columnKey];
  832. dtRow.SetColumnError(dtcolumn, "不符合");
  833. return false;
  834. }
  835. }
  836. if (values.Count == 0)
  837. {
  838. var dtRow = ((DataRowView)row.ListObject).Row;
  839. var dtcolumn = dtRow.Table.Columns[columnKey];
  840. dtRow.SetColumnError(dtcolumn, "没有找到该项的检验值!");
  841. return false;
  842. }
  843. }
  844. }
  845. return true;
  846. }
  847. private string GetExpress(CraftOrdDesignStdPicEntity craftDesignStdPic)
  848. {
  849. if (craftDesignStdPic.StdChoose == "")
  850. {
  851. return JudgeHelper.GetExpress(craftDesignStdPic.StdminSign, craftDesignStdPic.Stdmin,
  852. craftDesignStdPic.StdmaxSign, craftDesignStdPic.Stdmax);
  853. }
  854. else
  855. {
  856. string stdMin = "";
  857. string stdMax = "";
  858. if (craftDesignStdPic.StdChoose == "407101")//取大值
  859. {
  860. if (craftDesignStdPic.Stdmin != "" && craftDesignStdPic.Stdmin2 != "")
  861. {
  862. if (decimal.Parse(craftDesignStdPic.Stdmin) >= decimal.Parse(craftDesignStdPic.Stdmin2))
  863. {
  864. stdMin = craftDesignStdPic.Stdmin;
  865. }
  866. else
  867. {
  868. stdMin = craftDesignStdPic.Stdmin2;
  869. }
  870. }
  871. else
  872. {
  873. if (craftDesignStdPic.Stdmin != "")
  874. {
  875. stdMin = craftDesignStdPic.Stdmin;
  876. }
  877. if (craftDesignStdPic.Stdmin2 != "")
  878. {
  879. stdMin = craftDesignStdPic.Stdmin2;
  880. }
  881. }
  882. if (craftDesignStdPic.Stdmax != "" && craftDesignStdPic.Stdmax2 != "")
  883. {
  884. if (decimal.Parse(craftDesignStdPic.Stdmax) >= decimal.Parse(craftDesignStdPic.Stdmax2))
  885. {
  886. stdMax = craftDesignStdPic.Stdmax;
  887. }
  888. else
  889. {
  890. stdMax = craftDesignStdPic.Stdmax2;
  891. }
  892. }
  893. else
  894. {
  895. if (craftDesignStdPic.Stdmax != "")
  896. {
  897. stdMax = craftDesignStdPic.Stdmax;
  898. }
  899. if (craftDesignStdPic.Stdmax2 != "")
  900. {
  901. stdMax = craftDesignStdPic.Stdmax2;
  902. }
  903. }
  904. }
  905. else if (craftDesignStdPic.StdChoose == "407101")
  906. {
  907. if (craftDesignStdPic.Stdmin != "" && craftDesignStdPic.Stdmin2 != "")
  908. {
  909. if (decimal.Parse(craftDesignStdPic.Stdmin) <= decimal.Parse(craftDesignStdPic.Stdmin2))
  910. {
  911. stdMin = craftDesignStdPic.Stdmin;
  912. }
  913. else
  914. {
  915. stdMin = craftDesignStdPic.Stdmin2;
  916. }
  917. }
  918. else
  919. {
  920. if (craftDesignStdPic.Stdmin != "")
  921. {
  922. stdMin = craftDesignStdPic.Stdmin;
  923. }
  924. if (craftDesignStdPic.Stdmin2 != "")
  925. {
  926. stdMin = craftDesignStdPic.Stdmin2;
  927. }
  928. }
  929. if (craftDesignStdPic.Stdmax != "" && craftDesignStdPic.Stdmax2 != "")
  930. {
  931. if (decimal.Parse(craftDesignStdPic.Stdmax) <= decimal.Parse(craftDesignStdPic.Stdmax2))
  932. {
  933. stdMax = craftDesignStdPic.Stdmax;
  934. }
  935. else
  936. {
  937. stdMax = craftDesignStdPic.Stdmax2;
  938. }
  939. }
  940. else
  941. {
  942. if (craftDesignStdPic.Stdmax != "")
  943. {
  944. stdMax = craftDesignStdPic.Stdmax;
  945. }
  946. if (craftDesignStdPic.Stdmax2 != "")
  947. {
  948. stdMax = craftDesignStdPic.Stdmax2;
  949. }
  950. }
  951. }
  952. //附加标准公式替换
  953. string addStdMin = craftDesignStdPic.AddstdMin.Replace("Value", stdMin);
  954. string addStdMax = craftDesignStdPic.AddstdMax.Replace("Value", stdMax);
  955. craftDesignStdPic.AddstdMin = JudgeHelper.GetRoundValue(addStdMin, 0);
  956. craftDesignStdPic.AddstdMax = JudgeHelper.GetRoundValue(addStdMax, 0);
  957. return JudgeHelper.GetExpress(craftDesignStdPic.StdminSign, stdMin, craftDesignStdPic.StdmaxSign, stdMax);
  958. }
  959. }
  960. private string GetAttachExpress(CraftOrdDesignStdPicEntity craftDesignStdPic)
  961. {
  962. return JudgeHelper.GetExpress(craftDesignStdPic.AddstdMinSign, craftDesignStdPic.AddstdMin,
  963. craftDesignStdPic.AddstdMaxSign, craftDesignStdPic.AddstdMax);
  964. }
  965. public void ClearData()
  966. {
  967. dataTable1.Clear();
  968. }
  969. private void ultraGrid1_CellChange(object sender, CellEventArgs e)
  970. {
  971. ultraGrid1.UpdateData();
  972. }
  973. private void ultraGrid1_BeforeCellUpdate(object sender, BeforeCellUpdateEventArgs e)
  974. {
  975. }
  976. private void ultraGrid1_AfterSortChange(object sender, BandEventArgs e)
  977. {
  978. GridHelper.RefreshAndAutoSize(ultraGrid1);
  979. }
  980. private void ultraGrid1_AfterRowActivate(object sender, EventArgs e)
  981. {
  982. }
  983. }
  984. }