PlanHelper.cs 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Data;
  4. using System.Linq;
  5. using System.Text;
  6. using Core.Mes.Client.Comm.Server;
  7. using CoreFS.CA06;
  8. using Infragistics.Win;
  9. using Infragistics.Win.UltraWinEditors;
  10. using Infragistics.Win.UltraWinGrid;
  11. using System.Text.RegularExpressions;
  12. namespace Core.StlMes.Client.PlnSaleOrd.工序排产
  13. {
  14. public class PlanHelper
  15. {
  16. /// <summary>
  17. /// 初始化编辑区产线
  18. /// </summary>
  19. /// <param name="processCode">工序</param>
  20. /// <param name="ug">UltraGrid</param>
  21. /// <param name="from">窗体</param>
  22. public static void InitEditPline(string processCode, string plineCode, UltraGrid ug, FrmBase from)
  23. {
  24. DataTable dt1 = ServerHelper.GetData("com.steering.pss.plnsaleord.processOrder.base.BaseHelper.initPline", new object[] { processCode, "", plineCode }, from.ob);
  25. UltraComboEditor uce = new UltraComboEditor();
  26. from.Controls.Add(uce);
  27. uce.Visible = false;
  28. uce.DropDownListWidth = -1;
  29. uce.DropDownStyle = DropDownStyle.DropDownList;
  30. uce.DataSource = dt1;
  31. uce.DisplayMember = "PLINE_NAME";
  32. uce.ValueMember = "PLINE_CODE";
  33. ug.DisplayLayout.Bands[0].Columns["PlineCode"].EditorComponent = uce;
  34. ug.DisplayLayout.Bands[0].Columns["PlineCode"].Style = Infragistics.Win.UltraWinGrid.ColumnStyle.DropDownList;
  35. }
  36. public static Dictionary<string, UltraComboEditor> GetPlineUcb(string sortCode, string processCode, FrmBase frm)
  37. {
  38. Dictionary<string, UltraComboEditor> ucbDicton = new Dictionary<string, UltraComboEditor>();
  39. DataTable dtGroup = ServerHelper.GetData("com.steering.pss.plnsaleord.processOrder.base.BaseHelper.initGroup", new object[] { sortCode }, frm.ob);
  40. if (dtGroup != null && dtGroup.Rows.Count > 0)
  41. {
  42. foreach (DataRow dr in dtGroup.Rows)
  43. {
  44. string key = dr["BASECODE"].ToString();
  45. if (!ucbDicton.ContainsKey(key))
  46. {
  47. DataTable dt = ServerHelper.GetData("com.steering.pss.plnsaleord.processOrder.base.BaseHelper.initPline", new object[] { processCode, key, "" }, frm.ob);
  48. UltraComboEditor uce = new UltraComboEditor();
  49. frm.Controls.Add(uce);
  50. uce.Visible = false;
  51. uce.DropDownListWidth = -1;
  52. uce.DropDownStyle = DropDownStyle.DropDownList;
  53. uce.DataSource = dt;
  54. uce.DisplayMember = "PLINE_NAME";
  55. uce.ValueMember = "PLINE_CODE";
  56. ucbDicton.Add(key, uce);
  57. }
  58. }
  59. }
  60. return ucbDicton;
  61. }
  62. /// <summary>
  63. /// 初始化计划分组
  64. /// </summary>
  65. /// <param name="sortCode">检索码</param>
  66. /// <param name="ug">ultraGrid</param>
  67. /// <param name="from">窗体</param>
  68. /// <param name="code">字段名称</param>
  69. /// <param name="ob"></param>
  70. public static void InitEditGroup(string sortCode, UltraGrid ug, FrmBase from, string code)
  71. {
  72. DataTable dt1 = ServerHelper.GetData("com.steering.pss.plnsaleord.processOrder.base.BaseHelper.initGroup", new object[] { sortCode }, from.ob);
  73. UltraComboEditor uce = new UltraComboEditor();
  74. from.Controls.Add(uce);
  75. uce.Visible = false;
  76. uce.DropDownListWidth = -1;
  77. uce.DropDownStyle = DropDownStyle.DropDownList;
  78. uce.DataSource = dt1;
  79. uce.DisplayMember = "BASENAME";
  80. uce.ValueMember = "BASECODE";
  81. ug.DisplayLayout.Bands[0].Columns[code].EditorComponent = uce;
  82. ug.DisplayLayout.Bands[0].Columns[code].Style = Infragistics.Win.UltraWinGrid.ColumnStyle.DropDownList;
  83. }
  84. /// <summary>
  85. /// 初始化下拉框计划分组
  86. /// </summary>
  87. /// <param name="sortCode"></param>
  88. /// <param name="uce"></param>
  89. /// <param name="code"></param>
  90. public static void InitDropGroup(string sortCode, UltraComboEditor uce,OpeBase ob)
  91. {
  92. DataTable dt1 = ServerHelper.GetData("com.steering.pss.plnsaleord.processOrder.base.BaseHelper.initGroup", new object[] { sortCode }, ob);
  93. uce.DataSource = dt1;
  94. uce.DisplayMember = "BASENAME";
  95. uce.ValueMember = "BASECODE";
  96. }
  97. /// <summary>
  98. /// 设置UltraComboEditor中的中文和非中文统一高度。
  99. /// </summary>
  100. /// <param name="cmb"></param>
  101. public static void SetComboItemHeight(UltraComboEditor cmb)
  102. {
  103. foreach (ValueListItem item in cmb.Items)
  104. {
  105. if (Regex.IsMatch(item.DisplayText, @"[\u4e00-\u9fa5]+"))
  106. {
  107. item.Appearance.FontData.SizeInPoints = 9.0F;
  108. }
  109. else
  110. {
  111. item.Appearance.FontData.SizeInPoints = 10.5F;
  112. }
  113. }
  114. }
  115. /// <summary>
  116. /// 初始化检修类型(排产用)
  117. /// </summary>
  118. public static void InitRepairType(UltraGrid ug, FrmBase from)
  119. {
  120. UltraComboEditor uce = new UltraComboEditor();
  121. from.Controls.Add(uce);
  122. uce.Visible = false;
  123. uce.DropDownListWidth = -1;
  124. uce.DropDownStyle = DropDownStyle.DropDownList;
  125. DataTable dt = new DataTable();
  126. dt.Columns.Add("RepairType");
  127. DataRow dr1 = dt.NewRow();
  128. dr1["RepairType"] = "检修";
  129. dt.Rows.Add(dr1);
  130. DataRow dr2 = dt.NewRow();
  131. dr2["RepairType"] = "停机";
  132. dt.Rows.Add(dr2);
  133. uce.DataSource = dt;
  134. uce.DisplayMember = "RepairType";
  135. uce.ValueMember = "RepairType";
  136. ug.DisplayLayout.Bands[0].Columns["RepairType"].EditorComponent = uce;
  137. ug.DisplayLayout.Bands[0].Columns["RepairType"].Style = Infragistics.Win.UltraWinGrid.ColumnStyle.DropDownList;
  138. }
  139. /// <summary>
  140. /// 控制行是否可编辑(排产专用)
  141. /// </summary>
  142. /// <param name="row"></param>
  143. public static void ControlCellEdit(UltraGridRow row)
  144. {
  145. foreach (UltraGridCell cell in row.Cells)
  146. {
  147. //选择 允许操作
  148. if (cell.Column.Key.Equals("CHC"))
  149. {
  150. cell.Activation = Activation.AllowEdit;
  151. }
  152. else
  153. {
  154. //带颜色与特殊字段
  155. if (cell.Column.CellAppearance.BackColor == System.Drawing.Color.FromArgb(255, 255, 128) || cell.Column.Key.Equals("RepairType") || cell.Column.Key.Equals("PlanUsetime") || cell.Column.Key.Equals("PlanTimeB"))
  156. {
  157. //如果选中 
  158. if (row.Cells["CHC"].Value.ToString() == "True")
  159. {
  160. if ((row.Cells["ExeStatus"].Value.ToString().Equals("生产中") || row.Cells["ExeStatus"].Value.ToString().Equals("计划")) && cell.Column.Key.Equals("PlanTimeB") && row.Index == 0)
  161. {
  162. cell.Activation = Activation.AllowEdit;
  163. cell.Appearance.BackColor = System.Drawing.Color.FromArgb(255, 255, 128);
  164. }
  165. else
  166. {
  167. if (cell.Row.Cells["IsRepairPln"].Text.Equals("是"))
  168. {
  169. if (cell.Column.Key.Equals("PlanTimeB"))
  170. {
  171. cell.Activation = Activation.ActivateOnly;
  172. }
  173. else
  174. {
  175. if (cell.Column.Key.Equals("RepairType") && cell.Value.ToString().Equals("承揽"))
  176. {
  177. cell.Activation = Activation.ActivateOnly;
  178. }
  179. else
  180. {
  181. cell.Activation = Activation.AllowEdit;
  182. }
  183. }
  184. }
  185. else
  186. {
  187. if (cell.Column.Key.Equals("RepairType") || cell.Column.Key.Equals("PlanUsetime") || cell.Column.Key.Equals("PlanTimeB"))
  188. {
  189. cell.Activation = Activation.ActivateOnly;
  190. }
  191. else
  192. {
  193. cell.Activation = Activation.AllowEdit;
  194. }
  195. }
  196. }
  197. }
  198. else
  199. {
  200. //没选中
  201. cell.Activation = Activation.ActivateOnly;
  202. }
  203. }
  204. else
  205. {
  206. cell.Activation = Activation.ActivateOnly;
  207. }
  208. }
  209. }
  210. }
  211. public static string[] SetData(string methodId, object[] param, OpeBase ob)
  212. {
  213. CoreClientParam ccp = new CoreClientParam();
  214. ccp.ServerName = methodId.Substring(0, methodId.LastIndexOf("."));
  215. ccp.MethodName = methodId.Substring(methodId.LastIndexOf(".") + 1);
  216. ccp.ServerParams = param;
  217. ccp = ob.ExecuteNonQuery(ccp, CoreInvokeType.Internal);
  218. if (ccp.ReturnCode == -1)
  219. {
  220. return null;
  221. }
  222. else
  223. {
  224. string[] strArray = new string[2];
  225. strArray[0] = ccp.ReturnObject.ToString();
  226. strArray[1] = ccp.ReturnInfo;
  227. return strArray;
  228. }
  229. }
  230. /// <summary>
  231. /// 初始化产线
  232. /// </summary>
  233. /// <param name="processCode">工序</param>
  234. /// <param name="plineCode">同一分组的产线</param>
  235. /// <param name="ugc">下拉框</param>
  236. /// <param name="ob"></param>
  237. public static void InitDropPline(string processCode, string plineCode, UltraComboEditor ugc, OpeBase ob)
  238. {
  239. DataTable dt = ServerHelper.GetData("com.steering.pss.plnsaleord.processOrder.base.BaseHelper.initPline", new object[] { processCode, "", plineCode }, ob);
  240. if (dt != null && dt.Rows.Count > 0)
  241. {
  242. ugc.DataSource = dt;
  243. ugc.ValueMember = "PLINE_CODE";
  244. ugc.DisplayMember = "PLINE_NAME";
  245. }
  246. }
  247. /// <summary>
  248. /// 通过权限初始化产线
  249. /// </summary>
  250. /// <param name="processCode"></param>
  251. /// <param name="ugc"></param>
  252. /// <param name="validDataPurviewIds"></param>
  253. /// <param name="ob"></param>
  254. public static string[] InitDropPlinePower(string processCode, UltraComboEditor ugc,string[] validDataPurviewIds, OpeBase ob)
  255. {
  256. DataTable dt = ServerHelper.GetData("com.steering.pss.plnsaleord.processOrder.base.BaseHelper.initPlinePower", new object[] { processCode, validDataPurviewIds }, ob);
  257. if (dt != null && dt.Rows.Count > 0)
  258. {
  259. ugc.DataSource = dt;
  260. ugc.ValueMember = "PLINE_CODE";
  261. ugc.DisplayMember = "PLINE_NAME";
  262. string[] plineArr=new string[dt.Rows.Count];
  263. for(int i=0;i<dt.Rows.Count;i++){
  264. plineArr[i]=dt.Rows[i]["PLINE_CODE"].ToString();
  265. }
  266. ugc.SelectedIndex = 0;
  267. return plineArr;
  268. }
  269. else
  270. {
  271. return null;
  272. }
  273. }
  274. }
  275. }