OrderSpecialInfoTool.cs 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using Infragistics.Win.UltraWinEditors;
  6. using Infragistics.Win.UltraWinGrid;
  7. using CoreFS.CA06;
  8. using System.Data;
  9. using Core.Mes.Client.Comm.Server;
  10. namespace Core.StlMes.Client.SaleOrder
  11. {
  12. class OrderSpecialInfoTool
  13. {
  14. /// <summary>
  15. /// 初始化上限符号
  16. /// </summary>
  17. /// <param name="uce">下拉框</param>
  18. public static void NitializeSignMax(UltraComboEditor uce)
  19. {
  20. DataTable dt = new DataTable();
  21. dt.Columns.Add("STDMAX_SIGN");
  22. DataRow dr1 = dt.NewRow();
  23. dr1["STDMAX_SIGN"] = "";
  24. DataRow dr2 = dt.NewRow();
  25. dr2["STDMAX_SIGN"] = "<";
  26. DataRow dr3 = dt.NewRow();
  27. dr3["STDMAX_SIGN"] = "<=";
  28. dt.Rows.Add(dr1);
  29. dt.Rows.Add(dr2);
  30. dt.Rows.Add(dr3);
  31. uce.DataSource = dt;
  32. uce.DisplayMember = "STDMAX_SIGN";
  33. }
  34. /// <summary>
  35. /// 初始化下限符号
  36. /// </summary>
  37. /// <param name="uce">下拉框</param>
  38. public static void NitializeSignMin(UltraComboEditor uce)
  39. {
  40. DataTable dt = new DataTable();
  41. dt.Columns.Add("STDMIN_SIGN");
  42. DataRow dr1 = dt.NewRow();
  43. dr1["STDMIN_SIGN"] = "";
  44. DataRow dr2 = dt.NewRow();
  45. dr2["STDMIN_SIGN"] = ">";
  46. DataRow dr3 = dt.NewRow();
  47. dr3["STDMIN_SIGN"] = ">=";
  48. DataRow dr4 = dt.NewRow();
  49. dr4["STDMIN_SIGN"] = "=";
  50. dt.Rows.Add(dr1);
  51. dt.Rows.Add(dr2);
  52. dt.Rows.Add(dr3);
  53. dt.Rows.Add(dr4);
  54. uce.DataSource = dt;
  55. uce.DisplayMember = "STDMIN_SIGN";
  56. }
  57. /// <summary>
  58. /// 列绑定下拉框
  59. /// </summary>
  60. /// <param name="uce">下拉框</param>
  61. /// <param name="column">列名</param>
  62. /// <param name="column">行</param>
  63. public static void BindColumn(UltraComboEditor uce, string column, UltraGridBand ugb)
  64. {
  65. ugb.Columns[column].EditorComponent = uce;
  66. ugb.Columns[column].Style = Infragistics.Win.UltraWinGrid.ColumnStyle.DropDownList;
  67. }
  68. /// <summary>
  69. ///化学元素
  70. /// </summary>
  71. /// <param name="uce">下拉框</param>
  72. /// <param name="isNull">空行</param>
  73. /// <param name="ob"></param>
  74. public static void NitializeChemicalElement(UltraComboEditor uce, Boolean isNull, OpeBase ob)
  75. {
  76. NitializeDropDownBox(uce, "com.steering.pss.qcm.ComBaseQuery.getCombaseChem", "CHEM_NAME", "CHEM_CODE", isNull, ob);
  77. }
  78. /// <summary>
  79. ///加工标准工序点
  80. /// </summary>
  81. /// <param name="uce">下拉框</param>
  82. /// <param name="isNull">空行</param>
  83. /// <param name="ob"></param>
  84. public static void NitializeStationCode(UltraComboEditor uce, Boolean isNull, OpeBase ob)
  85. {
  86. NitializeDropDownBox(uce, "com.steering.pss.sale.order.CoreOrderSpecialInfo.queryStationCode", "STATION_DESC", "STATION_CODE", isNull, ob);
  87. }
  88. /// <summary>
  89. ///公差项
  90. /// </summary>
  91. /// <param name="uce">下拉框</param>
  92. /// <param name="isNull">空行</param>
  93. /// <param name="ob"></param>
  94. public static void NitializeTolerance(UltraComboEditor uce, Boolean isNull, OpeBase ob)
  95. {
  96. NitializeDropDownBox(uce, "com.steering.pss.qcm.ComBaseQuery.geComBaseInfo4040", "BASENAME", "BASECODE", isNull, ob);
  97. }
  98. /// <summary>
  99. ///探伤检验项
  100. /// </summary>
  101. /// <param name="uce">下拉框</param>
  102. /// <param name="isNull">空行</param>
  103. /// <param name="ob"></param>
  104. public static void NitializeDetectionPhy(UltraComboEditor uce, Boolean isNull, OpeBase ob)
  105. {
  106. NitializeDropDownBox(uce, "com.steering.pss.qcm.ComBaseQuery.getComBasePhyD", "PHY_NAME", "PHY_CODE", isNull, ob);
  107. }
  108. /// <summary>
  109. ///探伤级别
  110. /// </summary>
  111. /// <param name="uce">下拉框</param>
  112. /// <param name="isNull">空行</param>
  113. /// <param name="ob"></param>
  114. public static void NitializeDetectionLV(UltraComboEditor uce, Boolean isNull, OpeBase ob)
  115. {
  116. NitializeDropDownBox(uce, "com.steering.pss.qcm.ComBaseQuery.geComBaseInfo4022", "BASENAME", "BASECODE", isNull, ob);
  117. }
  118. /// <summary>
  119. ///探伤标准
  120. /// </summary>
  121. /// <param name="uce">下拉框</param>
  122. /// <param name="isNull">空行</param>
  123. /// <param name="ob"></param>
  124. public static void NitializeDetectionStandard(UltraComboEditor uce, Boolean isNull, OpeBase ob)
  125. {
  126. NitializeDropDownBox(uce, "com.steering.pss.qcm.ComBaseQuery.geComBaseInfo4021", "BASENAME", "BASECODE", isNull, ob);
  127. }
  128. /// <summary>
  129. ///探伤位置
  130. /// </summary>
  131. /// <param name="uce">下拉框</param>
  132. /// <param name="isNull">空行</param>
  133. /// <param name="ob"></param>
  134. public static void NitializeDetectionPosition(UltraComboEditor uce, Boolean isNull, OpeBase ob)
  135. {
  136. NitializeDropDownBox(uce, "com.steering.pss.qcm.ComBaseQuery.geComBaseInfo4020", "BASENAME", "BASECODE", isNull, ob);
  137. }
  138. /// <summary>
  139. /// 附加要求项目
  140. /// </summary>
  141. /// <param name="uce">下拉框</param>
  142. /// <param name="isNull">空行</param>
  143. /// <param name="ob"></param>
  144. public static void NitializeAskIime(UltraComboEditor uce, Boolean isNull, OpeBase ob)
  145. {
  146. NitializeDropDownBox(uce, "com.steering.pss.qcm.ComBaseQuery.getAskItem", "ASK_ITEM_DESC", "ASK_ITEM_NO", isNull, ob);
  147. }
  148. /// <summary>
  149. /// 理化检验项大类
  150. /// </summary>
  151. /// <param name="uce">下拉框</param>
  152. /// <param name="isNull">空行</param>
  153. /// <param name="ob"></param>
  154. public static void NitializePhyMax(UltraComboEditor uce, Boolean isNull, OpeBase ob)
  155. {
  156. NitializeDropDownBox(uce, "com.steering.pss.qcm.ComBaseQuery.geComBasePhyRStd", "PHY_TYPE", "PHY_CODE", isNull, ob);
  157. }
  158. /// <summary>
  159. /// 初始化下拉框
  160. /// </summary>
  161. /// <param name="uce">下拉框</param>
  162. /// <param name="methodID">方法名</param>
  163. /// <param name="showValue">显示值</param>
  164. /// <param name="hiddenValue">隐藏值</param>
  165. /// <param name="isNull">是否增加空行</param>
  166. /// <param name="ob">OB对象</param>
  167. public static void NitializeDropDownBox(UltraComboEditor uce, string methodID, string showValue, string hiddenValue, Boolean isNull, OpeBase ob)
  168. {
  169. DataTable dt = ServerHelper.GetData(methodID, new Object[] { }, ob);
  170. if (dt != null && dt.Rows.Count > 0 && isNull)
  171. {
  172. DataRow dr = dt.NewRow();
  173. for (int i = 0; i < dt.Columns.Count; i++)
  174. {
  175. dr[i] = "";
  176. }
  177. dt.Rows.InsertAt(dr, 0);
  178. }
  179. uce.DataSource = dt;
  180. uce.DisplayMember = showValue;
  181. uce.ValueMember = hiddenValue;
  182. //ClsBaseInfo.SetComboItemHeight(uce);
  183. }
  184. /// <summary>
  185. /// 初始下拉框
  186. /// </summary>
  187. public static void InitDropList(UltraComboEditor uce, DataTable dt, string showValue, Boolean isNull)
  188. {
  189. if (dt != null && dt.Rows.Count > 0)
  190. {
  191. DataTable dtNext = new DataTable();
  192. dtNext.Columns.Add("ID");
  193. dtNext.Columns.Add("NAME");
  194. if (isNull)
  195. {
  196. DataRow dr = dtNext.NewRow();
  197. dr["ID"] = "";
  198. dr["NAME"] = "";
  199. dtNext.Rows.Add(dr);
  200. }
  201. for (int i = 0; i < dt.Rows.Count; i++)
  202. {
  203. DataRow dr = dtNext.NewRow();
  204. string str = "";
  205. for (int j = 0; j < dt.Columns.Count; j++)
  206. {
  207. if (dt.Columns[j].Caption.Equals(showValue))
  208. dr["NAME"] = dt.Rows[i][j].ToString();
  209. else
  210. {
  211. str = str + "@" + dt.Rows[i][j].ToString();
  212. }
  213. }
  214. dr["ID"] = str.Substring(1);
  215. dtNext.Rows.Add(dr);
  216. }
  217. uce.DataSource = dtNext;
  218. uce.DisplayMember = "NAME";
  219. uce.ValueMember = "ID";
  220. }
  221. }
  222. /// <summary>
  223. /// ultragrid不可编辑
  224. /// </summary>
  225. /// <param name="ug"></param>
  226. public static void SetUltraGridNoEdit(UltraGrid ug)
  227. {
  228. for (int i = 0; i < ug.Rows.Count; i++)
  229. {
  230. UltraGridRow ugr = ug.Rows[i];
  231. for (int j = 0; j < ugr.Cells.Count; j++)
  232. {
  233. if (!ugr.Cells[j].Column.Key.Equals("CHC"))
  234. {
  235. ugr.Cells[j].Activation = Activation.ActivateOnly;
  236. }
  237. }
  238. }
  239. }
  240. /// <summary>
  241. /// 选中行指定列可编辑
  242. /// </summary>
  243. /// <param name="sender"></param>
  244. /// <param name="e"></param>
  245. public static void setCanEdit(Infragistics.Win.UltraWinGrid.CellEventArgs e)
  246. {
  247. if (e.Cell.Column.Key.Equals("CHC"))
  248. {
  249. Activation activation = Activation.ActivateOnly;
  250. if (Convert.ToBoolean(e.Cell.Value))
  251. {
  252. activation = Activation.AllowEdit;
  253. }
  254. CellsCollection cells = e.Cell.Row.Cells;
  255. for (int i = 0; i < cells.Count; i++)
  256. {
  257. if (!cells[i].Column.Key.Equals("CHC"))
  258. {
  259. e.Cell.Row.Cells[i].Activation = activation;
  260. }
  261. }
  262. }
  263. }
  264. public static void SetInsertRowUnEdit(UltraGrid ug, RowEventArgs e)
  265. {
  266. ug.UpdateData();
  267. //增加行如果没有勾选则不可编辑
  268. if (!Convert.ToBoolean(e.Row.Cells["CHC"].Value))
  269. {
  270. for (int i = 0; i < e.Row.Cells.Count; i++)
  271. {
  272. if (!e.Row.Cells[i].Column.Key.Equals("CHC"))
  273. e.Row.Cells[i].Activation = Activation.ActivateOnly;
  274. }
  275. }
  276. }
  277. /// <summary>
  278. /// 比较两个相同列的Datable里的数据是否完全相同
  279. /// </summary>
  280. /// <param name="dtA"></param>
  281. /// <param name="dtB"></param>
  282. /// <returns></returns>
  283. public static bool CompareTablesCommon(DataTable dtA, DataTable dtB)
  284. {
  285. if (dtA.Rows.Count != dtB.Rows.Count)
  286. {
  287. return false;
  288. }
  289. for (int i = 0; i < dtA.Rows.Count; i++)
  290. {
  291. for (int j = 0; j < dtB.Rows.Count; j++)
  292. {
  293. if (!dtA.Rows[i][j].Equals(dtB.Rows[i][j]))
  294. {
  295. return false;
  296. }
  297. }
  298. }
  299. return true;
  300. }
  301. /// <summary>
  302. /// 获取UltraGrid所有字段组成的字符串
  303. /// </summary>
  304. /// <param name="ug"></param>
  305. /// <returns></returns>
  306. public static string GetUltraGridData(UltraGrid ug,string[] strArray)
  307. {
  308. string content = "";
  309. if (ug.Rows.Count == 0)
  310. {
  311. return content;
  312. }
  313. for (int i = 0; i < ug.Rows.Count; i++)
  314. {
  315. if (ug.Rows[i].GetValue("CHC") == "False" && ug.Rows[i].GetValue("VALIDFLAG") == "") continue;
  316. if (content != "")
  317. {
  318. content += "\r\n ";
  319. }
  320. for (int k = 0; k < strArray.Length; k++)
  321. {
  322. string columnKey = strArray[k];
  323. for (int j = 0; j < ug.Rows[i].Cells.Count; j++)
  324. {
  325. if (ug.Rows[i].Cells[j].Column.Key.Equals(columnKey))
  326. {
  327. if (ug.Rows[i].Cells[j].Text.Trim() == "") break;
  328. content += ug.Rows[i].Cells[j].Text + "; ";
  329. break;
  330. }
  331. }
  332. }
  333. }
  334. return content;
  335. }
  336. /// <summary>
  337. /// 验证数据是否完全相同
  338. /// </summary>
  339. /// <param name="checkValue"></param>
  340. /// <param name="dtA"></param>
  341. /// <param name="dtB"></param>
  342. /// <param name="ob"></param>
  343. /// <param name="standDt"></param>
  344. /// <param name="msc"></param>
  345. /// <returns></returns>
  346. private bool CheckIsCommon(string checkValue, DataTable dtA,DataTable dtB, OpeBase ob, DataTable[] standDt, string msc)
  347. {
  348. dtA.PrimaryKey = new DataColumn[] { dtA.Columns["USE_CODE"] };
  349. DataRow dr = dtA.Rows.Find(checkValue);
  350. if (dr != null)
  351. {
  352. return true;
  353. }
  354. dtB.PrimaryKey = new DataColumn[] { dtB.Columns["CUST_ALPHA_NO"] };
  355. dr = dtB.Rows.Find(checkValue);
  356. if (dr != null)
  357. {
  358. DataTable dt = ServerHelper.GetData("com.steering.pss.sale.order.CoreOrderSpecialInfo..checkAlphaNoPass", new Object[] { checkValue }, ob);
  359. if (dt != null && dt.Rows.Count > 0)
  360. {
  361. return true;
  362. }
  363. }
  364. DataTable dtChem = standDt[0];
  365. dtChem.Columns.Remove("CUST_ALPHA_NO");
  366. dtChem.Columns.Remove("INDEX_SEQ");
  367. DataTable dtPhy = standDt[1];
  368. dtPhy.Columns.Remove("INDEX_SEQ");
  369. DataTable dtSpec = standDt[2];
  370. DataTable dtDete = standDt[3];
  371. DataTable dtWater = standDt[4];
  372. dtWater.Columns.Remove("CUST_ALPHA_NO");
  373. dtWater.Columns.Remove("INDEX_SEQ");
  374. foreach (DataRow drs in dtA.Rows)
  375. {
  376. string compareValue = drs["USE_CODE"].ToString();
  377. DataTable dt1 = ServerHelper.GetData("com.steering.pss.sale.order.CoreOrderSpecialInfo.queryMscCic", new Object[] { msc, compareValue, "a" }, ob);
  378. if (!OrderSpecialInfoTool.CompareTablesCommon(dt1, dtChem))
  379. {
  380. continue;
  381. }
  382. DataTable dt2 = ServerHelper.GetData("com.steering.pss.sale.order.CoreOrderSpecialInfo.queryMscPic", new Object[] { msc, compareValue, "a" }, ob);
  383. if (!OrderSpecialInfoTool.CompareTablesCommon(dt2, dtPhy))
  384. {
  385. continue;
  386. }
  387. DataTable dt3 = ServerHelper.GetData("com.steering.pss.sale.order.CoreOrderSpecialInfo.queryMscSic", new Object[] { msc, compareValue, "a" }, ob);
  388. if (!OrderSpecialInfoTool.CompareTablesCommon(dt3, dtSpec))
  389. {
  390. continue;
  391. }
  392. DataTable dt4 = ServerHelper.GetData("com.steering.pss.sale.order.CoreOrderSpecialInfo.queryMscDic", new Object[] { msc, compareValue, "a" }, ob);
  393. if (!OrderSpecialInfoTool.CompareTablesCommon(dt4, dtDete))
  394. {
  395. continue;
  396. }
  397. DataTable dt5 = ServerHelper.GetData("com.steering.pss.sale.order.CoreOrderSpecialInfo.queryMscWic", new Object[] { msc, compareValue, "a" }, ob);
  398. if (!OrderSpecialInfoTool.CompareTablesCommon(dt5, dtWater))
  399. {
  400. continue;
  401. }
  402. else
  403. {
  404. return true;
  405. }
  406. }
  407. foreach (DataRow drs in dtB.Rows)
  408. {
  409. string compareValue = drs["CUST_ALPHA_NO"].ToString();
  410. DataTable dt = ServerHelper.GetData("com.steering.pss.sale.order.CoreOrderSpecialInfo..checkAlphaNoPass", new Object[] { compareValue }, ob);
  411. if (dt == null)
  412. {
  413. continue;
  414. }
  415. DataTable dt1 = ServerHelper.GetData("com.steering.pss.sale.order.CoreOrderSpecialInfo.queryMscCic", new Object[] { msc, compareValue, "b" }, ob);
  416. if (!OrderSpecialInfoTool.CompareTablesCommon(dt1, dtChem))
  417. {
  418. continue;
  419. }
  420. DataTable dt2 = ServerHelper.GetData("com.steering.pss.sale.order.CoreOrderSpecialInfo.queryMscPic", new Object[] { msc, compareValue, "b" }, ob);
  421. if (!OrderSpecialInfoTool.CompareTablesCommon(dt2, dtPhy))
  422. {
  423. continue;
  424. }
  425. DataTable dt3 = ServerHelper.GetData("com.steering.pss.sale.order.CoreOrderSpecialInfo.queryMscSic", new Object[] { msc, compareValue, "b" }, ob);
  426. if (!OrderSpecialInfoTool.CompareTablesCommon(dt3, dtSpec))
  427. {
  428. continue;
  429. }
  430. DataTable dt4 = ServerHelper.GetData("com.steering.pss.sale.order.CoreOrderSpecialInfo.queryMscDic", new Object[] { msc, compareValue, "b" }, ob);
  431. if (!OrderSpecialInfoTool.CompareTablesCommon(dt4, dtDete))
  432. {
  433. continue;
  434. }
  435. DataTable dt5 = ServerHelper.GetData("com.steering.pss.sale.order.CoreOrderSpecialInfo.queryMscWic", new Object[] { msc, compareValue, "b" }, ob);
  436. if (!OrderSpecialInfoTool.CompareTablesCommon(dt5, dtWater))
  437. {
  438. continue;
  439. }
  440. else
  441. {
  442. return true;
  443. }
  444. }
  445. return true;
  446. }
  447. }
  448. }