StoveHelper.cs 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424
  1. using Core.Mes.Client.Comm.Format;
  2. using Core.Mes.Client.Comm.Server;
  3. using Core.Mes.Client.Comm.Tool;
  4. using Core.StlMes.Client.PlnSaleOrd.炉计划.Entity;
  5. using CoreFS.CA06;
  6. using Infragistics.Win;
  7. using Infragistics.Win.UltraWinEditors;
  8. using Infragistics.Win.UltraWinGrid;
  9. using System;
  10. using System.Collections;
  11. using System.Collections.Generic;
  12. using System.Data;
  13. using System.Linq;
  14. using System.Text;
  15. using System.Text.RegularExpressions;
  16. using System.Windows.Forms;
  17. namespace Core.StlMes.Client.PlnSaleOrd.炉计划.Tool
  18. {
  19. public class StoveHelper
  20. {
  21. /// <summary>
  22. /// 初始化产线
  23. /// </summary>
  24. /// <param name="processCode">工序</param>
  25. /// <param name="plineCode">同一分组的产线</param>
  26. /// <param name="ugc">下拉框</param>
  27. /// <param name="ob"></param>
  28. public static void InitDropPline(string processCode, string plineCode, UltraComboEditor ugc, OpeBase ob)
  29. {
  30. DataTable dt = ServerHelper.GetData("com.steering.pss.plnsaleord.processOrder.base.BaseHelper.initPline", new object[] { processCode, "", plineCode }, ob);
  31. if (dt != null && dt.Rows.Count > 0)
  32. {
  33. ugc.DataSource = dt;
  34. ugc.ValueMember = "PLINE_CODE";
  35. ugc.DisplayMember = "PLINE_NAME";
  36. }
  37. }
  38. /// <summary>
  39. /// 初始化标准类别
  40. /// </summary>
  41. /// <param name="processCode">工序</param>
  42. /// <param name="plineCode">同一分组的产线</param>
  43. /// <param name="ugc">下拉框</param>
  44. /// <param name="ob"></param>
  45. public static void InitDropStdSty(UltraComboEditor ugc, OpeBase ob)
  46. {
  47. DataTable dt = ServerHelper.GetData("com.steering.pss.ydm.base.BaseOperations.getStdStyle", new object[] { }, ob);
  48. if (dt != null && dt.Rows.Count > 0)
  49. {
  50. ugc.DataSource = dt;
  51. ugc.ValueMember = "STD_STYLE";
  52. ugc.DisplayMember = "STD_STYLE_DESC";
  53. }
  54. }
  55. /// <summary>
  56. /// 初始化产线
  57. /// </summary>
  58. /// <param name="processCode">工序</param>
  59. /// <param name="ugc">下拉框</param>
  60. /// <param name="ob">OpeBase</param>
  61. public static string[] InitDropPline(string processCode,string[] validDataPurviewIds, UltraComboEditor ugc, OpeBase ob)
  62. {
  63. DataTable dt = ServerHelper.GetData("com.steering.pss.plnsaleord.planStove.StoveHelper.initPline", new object[] { processCode, validDataPurviewIds }, ob);
  64. if (dt != null && dt.Rows.Count > 0)
  65. {
  66. ugc.DataSource = dt;
  67. ugc.ValueMember = "PLINE_CODE";
  68. ugc.DisplayMember = "PLINE_NAME";
  69. string[] plineArr = new string[dt.Rows.Count];
  70. for (int i = 0; i < dt.Rows.Count;i++ )
  71. {
  72. plineArr[i] = dt.Rows[i]["PLINE_CODE"].ToString();
  73. }
  74. return plineArr;
  75. }
  76. return null;
  77. }
  78. /// <summary>
  79. /// 查询选择记录
  80. /// </summary>
  81. /// <returns>ArrayList</returns>
  82. public static ArrayList GetChcRows<T>(UltraGrid ug)
  83. {
  84. try { ug.UpdateData(); }
  85. catch (Exception) { return null; }
  86. IQueryable<UltraGridRow> chcRows = ug.Rows.AsQueryable().Where(a => a.GetValue("CHC") == "True");
  87. if (chcRows == null || chcRows.Count() == 0)
  88. {
  89. return null;
  90. }
  91. ArrayList list = new ArrayList();
  92. foreach (UltraGridRow ugr in chcRows)
  93. {
  94. T t = (T)ugr.ListObject;
  95. list.Add(t);
  96. }
  97. return list;
  98. }
  99. public static string[] SetData(string methodId, object[] param, OpeBase ob)
  100. {
  101. CoreClientParam ccp = new CoreClientParam();
  102. ccp.ServerName = methodId.Substring(0, methodId.LastIndexOf("."));
  103. ccp.MethodName = methodId.Substring(methodId.LastIndexOf(".") + 1);
  104. ccp.ServerParams = param;
  105. ccp = ob.ExecuteNonQuery(ccp, CoreInvokeType.Internal);
  106. if (ccp.ReturnCode == -1)
  107. {
  108. return null;
  109. }
  110. else
  111. {
  112. string[] strArray = new string[2];
  113. strArray[0] = ccp.ReturnObject.ToString();
  114. strArray[1] = ccp.ReturnInfo;
  115. return strArray;
  116. }
  117. }
  118. /// <summary>
  119. /// 排序
  120. /// </summary>
  121. /// <param name="entityList"></param>
  122. /// <param name="obj"></param>
  123. /// <param name="processCode"></param>
  124. /// <param name="ob"></param>
  125. /// <returns></returns>
  126. public static bool SortPlanOrder(ArrayList entityList, object obj, string processCode, string customInfo, OpeBase ob)
  127. { //定位行计划
  128. ProducEntityZyM entityD = StoveHelper.GenerationProEntity(obj, processCode);
  129. if (!entityD.ExeStatus.Equals("计划")) { return false; }
  130. //定位行序号
  131. string gxProSeqD = entityD.GxProSeq.ToString();
  132. //移动行序号集合
  133. ArrayList seqList = new ArrayList();
  134. ArrayList list = new ArrayList();
  135. ////获取数据库服务器当前时间
  136. //string time = DateTime.Now.ToString("yyyy-MM");
  137. //DataTable dt = ServerHelper.GetData("com.steering.pss.plnsaleord.processOrder.base.ProducHelper.selectSystemTime", null, ob);
  138. //if (dt.Rows.Count > 0)
  139. //{
  140. // time = dt.Rows[0]["DATIME"].ToString().Substring(0, 7);
  141. //}
  142. foreach (object entityM in entityList)
  143. {
  144. ProducEntityZyM entity = StoveHelper.GenerationProEntity(entityM, processCode);
  145. //调整行只能为计划中的
  146. if (!entity.ExeStatus.Equals("计划")) { return false; }
  147. //if (processCode.Equals("D"))
  148. //{
  149. // if (DateTime.Compare(Convert.ToDateTime(entity.ProMonth), Convert.ToDateTime(time)) <= 0)
  150. // {
  151. // if (DateTime.Compare(Convert.ToDateTime(time), Convert.ToDateTime(entityD.ProMonth)) < 0)
  152. // {
  153. // MessageUtil.ShowTips("所选合同:" + entity.OrderNo + ",生产年月小于等于当前日历年月,不能调整至当前日历年月之后 。");
  154. // return false;
  155. // }
  156. // }
  157. // else
  158. // {
  159. // if (DateTime.Compare(Convert.ToDateTime(entityD.ProMonth), Convert.ToDateTime(entity.ProMonth)) != 0)
  160. // {
  161. // MessageUtil.ShowTips("所选合同:" + entity.OrderNo + ",生产年月大于当前日历年月, 。");
  162. // return false;
  163. // }
  164. // }
  165. //}
  166. if (!entity.ZyBatchId.Equals(entityD.ZyBatchId))
  167. {
  168. MessageUtil.ShowTips("所选轧管炉计划ID:" + entity.HeatPlanNo + ",不在一个轧批号内,不能调整顺序。");
  169. return false;
  170. }
  171. seqList.Add(Convert.ToInt32(entity.GxProSeq));
  172. list.Add(entity.JsonStr);
  173. }
  174. seqList.Sort();
  175. //如果鼠标坐标行在调整行的中间,则不允许调整
  176. if (Convert.ToInt32(gxProSeqD) >= (int)seqList[0] && Convert.ToInt32(gxProSeqD) <= (int)seqList[seqList.Count - 1])
  177. {
  178. return false;
  179. }
  180. if (MessageUtil.ShowYesNoAndQuestion("是否调整生产顺序至:" + entityD.GxProSeq + "位?") == DialogResult.No)
  181. {
  182. return false;
  183. }
  184. string[] param = SetData("com.steering.pss.plnsaleord.planStove.StoveHelper.sortPlanOrder", new object[] { list, entityD.JsonStr, processCode, customInfo }, ob);
  185. if (param == null) { MessageUtil.ShowTips("服务端处理失败!"); return false; }
  186. else
  187. {
  188. if ((bool.Parse(param[0]))) { return true; } else { return false; }
  189. }
  190. }
  191. public static ProducEntityZyM GenerationProEntity(object obj, string processCode)
  192. {
  193. ProducEntityZyM proEntity = new ProducEntityZyM();
  194. if (processCode.Equals("C"))
  195. {
  196. //PlnOrderDzSEntity entity = (PlnOrderDzSEntity)obj;
  197. //entity.PlanTimeB = Convert.ToDateTime(entity.PlanTimeB).ToString("yyyy-MM-dd HH:mm:ss");
  198. //proEntity.ProPlanId = entity.ProPlanId;
  199. //proEntity.GxPlanNo = entity.GxPlanNo;
  200. //proEntity.IsPlanOk = entity.IsPlanOk;
  201. //proEntity.IsRepairPln = entity.IsRepairPln;
  202. //proEntity.PlanNum = Convert.ToString(entity.NumS);
  203. //proEntity.PlanWgt = Convert.ToString(entity.WeigthS);
  204. //proEntity.ExeStatus = entity.ExeStatus;
  205. //proEntity.GxProSeq = entity.GxProSeq;
  206. //proEntity.IfStoveIssued = "";
  207. //proEntity.ProMonth = entity.ProMonth;
  208. //proEntity.InWeightS = "0";
  209. //proEntity.InNums = "0";
  210. //proEntity.PlanUseTime = Convert.ToString(entity.PlanUsetime);
  211. //proEntity.JsonStr = JSONFormat.Format(entity);
  212. }
  213. else if (processCode.Equals("D"))
  214. {
  215. PlnZyZgMEntity entity = (PlnZyZgMEntity)obj;
  216. proEntity.HeatPlanNo = entity.HeatPlanNo;
  217. //proEntity.PlanNum = Convert.ToString(entity.NumS);
  218. //proEntity.PlanWgt = Convert.ToString(entity.WeigthS);
  219. proEntity.ExeStatus = entity.Planstatus;
  220. proEntity.GxProSeq = entity.GxProSeq;
  221. proEntity.ProMonth = entity.ProMonth;
  222. proEntity.OrderNo = entity.OrderNo.Substring(0, entity.OrderNo.Length-4);
  223. proEntity.PlineCode = entity.PlineCode;
  224. proEntity.PlineName = entity.PlineName;
  225. proEntity.ZyBatchId = entity.ZyBatchId;
  226. proEntity.JsonStr = JSONFormat.Format(entity);
  227. }
  228. //else if (processCode.Equals("E"))
  229. //{
  230. // PlnOrderDbkSEntity entity = (PlnOrderDbkSEntity)obj;
  231. // entity.PlanTimeB = Convert.ToDateTime(entity.PlanTimeB).ToString("yyyy-MM-dd HH:mm:ss");
  232. // proEntity.ProPlanId = entity.ProPlanId;
  233. // proEntity.GxPlanNo = entity.GxPlanNo;
  234. // proEntity.IsPlanOk = entity.IsPlanOk;
  235. // proEntity.IsRepairPln = entity.IsRepairPln;
  236. // proEntity.PlanNum = Convert.ToString(entity.NumS);
  237. // proEntity.PlanWgt = Convert.ToString(entity.WeigthS);
  238. // proEntity.ExeStatus = entity.ExeStatus;
  239. // proEntity.GxProSeq = entity.GxProSeq;
  240. // proEntity.IfStoveIssued = entity.IfStoveIssued;
  241. // proEntity.InWeightS = entity.InWeightS.ToString();
  242. // proEntity.InNums = entity.InNumS.ToString();
  243. // proEntity.ProMonth = entity.ProMonth;
  244. // //proEntity.WeigthSMin = entity.WeigthSMin.ToString();
  245. // proEntity.PlanUseTime = Convert.ToString(entity.PlanUsetime);
  246. // proEntity.JsonStr = JSONFormat.Format(entity);
  247. //}
  248. //else if (processCode.Equals("F"))
  249. //{
  250. // PlnOrderRclSEntity entity = (PlnOrderRclSEntity)obj;
  251. // entity.PlanTimeB = Convert.ToDateTime(entity.PlanTimeB).ToString("yyyy-MM-dd HH:mm:ss");
  252. // proEntity.ProPlanId = entity.ProPlanId;
  253. // proEntity.GxPlanNo = entity.GxPlanNo;
  254. // proEntity.IsPlanOk = entity.IsPlanOk;
  255. // proEntity.IsRepairPln = entity.IsRepairPln;
  256. // proEntity.PlanNum = Convert.ToString(entity.NumS);
  257. // proEntity.PlanWgt = Convert.ToString(entity.WeigthS);
  258. // proEntity.ExeStatus = entity.ExeStatus;
  259. // proEntity.GxProSeq = entity.GxProSeq;
  260. // proEntity.IfStoveIssued = "";
  261. // proEntity.ProMonth = entity.ProMonth;
  262. // proEntity.InWeightS = entity.InWeightS.ToString();
  263. // proEntity.InNums = entity.InNumS.ToString();
  264. // //proEntity.WeigthSMin = entity.WeigthSMin.ToString();
  265. // proEntity.PlanUseTime = Convert.ToString(entity.PlanUsetime);
  266. // proEntity.JsonStr = JSONFormat.Format(entity);
  267. //}
  268. //else if (processCode.Equals("G"))
  269. //{
  270. // PlnOrderJgxSEntity entity = (PlnOrderJgxSEntity)obj;
  271. // entity.PlanTimeB = Convert.ToDateTime(entity.PlanTimeB).ToString("yyyy-MM-dd HH:mm:ss");
  272. // proEntity.ProPlanId = entity.ProPlanId;
  273. // proEntity.GxPlanNo = entity.GxPlanNo;
  274. // proEntity.IsPlanOk = entity.IsPlanOk;
  275. // proEntity.IsRepairPln = entity.IsRepairPln;
  276. // proEntity.PlanNum = Convert.ToString(entity.NumS);
  277. // proEntity.PlanWgt = Convert.ToString(entity.WeigthS);
  278. // proEntity.ExeStatus = entity.ExeStatus;
  279. // proEntity.GxProSeq = entity.GxProSeq;
  280. // proEntity.IfStoveIssued = "";
  281. // proEntity.ProMonth = entity.ProMonth;
  282. // proEntity.InWeightS = entity.InWeightS.ToString();
  283. // proEntity.InNums = entity.InNumS.ToString();
  284. // proEntity.PlanUseTime = Convert.ToString(entity.PlanUsetime);
  285. // proEntity.JsonStr = JSONFormat.Format(entity);
  286. //}
  287. //else if (processCode.Equals("H"))
  288. //{
  289. // PlnGxJgPropSEntity entity = (PlnGxJgPropSEntity)obj;
  290. // entity.PlanTimeB = Convert.ToDateTime(entity.PlanTimeB).ToString("yyyy-MM-dd HH:mm:ss");
  291. // proEntity.ProPlanId = entity.ProPlanId;
  292. // proEntity.GxPlanNo = entity.GxPlanNo;
  293. // proEntity.IsPlanOk = entity.IsPlanOk;
  294. // proEntity.IsRepairPln = entity.IsRepairPln;
  295. // proEntity.PlanNum = Convert.ToString(entity.GroupNumS);
  296. // proEntity.PlanWgt = Convert.ToString(0);
  297. // proEntity.ExeStatus = entity.ExeStatus;
  298. // proEntity.GxProSeq = entity.GxProSeq;
  299. // proEntity.IfStoveIssued = "";
  300. // proEntity.ProMonth = entity.ProMonth;
  301. // proEntity.InWeightS = entity.GroupBlWtS.ToString();
  302. // proEntity.InNums = entity.GroupBlNumS.ToString();
  303. // proEntity.PlanUseTime = Convert.ToString(entity.PlanUsetime);
  304. // proEntity.JsonStr = JSONFormat.Format(entity);
  305. //}
  306. return proEntity;
  307. }
  308. /// <summary>
  309. /// 所属权限
  310. /// </summary>
  311. /// <param name="validDataPurviewIds">数据权限</param>
  312. /// <param name="ob"></param>
  313. /// <returns>字符串数组</returns>
  314. public static string[] InitPermissions(string[] validDataPurviewIds, OpeBase ob)
  315. {
  316. string[] arr = null;
  317. DataTable dt = ServerHelper.GetData("com.steering.pss.plnsaleord.planStove.StoveHelper.getSalgPermissions", new object[] { validDataPurviewIds }, ob);
  318. if (dt != null && dt.Rows.Count > 0)
  319. {
  320. arr = new string[dt.Rows.Count];
  321. for (int i = 0; i < dt.Rows.Count; i++)
  322. {
  323. arr[i] = dt.Rows[i][0].ToString();
  324. }
  325. }
  326. return arr;
  327. }
  328. /// <summary>
  329. /// 设置UltraComboEditor中的中文和非中文统一高度。
  330. /// </summary>
  331. /// <param name="cmb"></param>
  332. public static void SetComboItemHeight(UltraComboEditor cmb)
  333. {
  334. foreach (ValueListItem item in cmb.Items)
  335. {
  336. if (Regex.IsMatch(item.DisplayText, @"[\u4e00-\u9fa5]+"))
  337. {
  338. item.Appearance.FontData.SizeInPoints = 9.0F;
  339. }
  340. else
  341. {
  342. item.Appearance.FontData.SizeInPoints = 10.5F;
  343. }
  344. }
  345. }
  346. /// <summary>
  347. /// 禁止排序
  348. /// </summary>
  349. /// <param name="ugr"></param>
  350. public static void ForbidSort(UltraGrid ugr)
  351. {
  352. foreach (UltraGridColumn ugc in ugr.DisplayLayout.Bands[0].Columns)
  353. {
  354. ugc.SortIndicator = SortIndicator.Disabled;
  355. }
  356. }
  357. /// <summary>
  358. /// 表示自定义UltraWinGrid控件的列合并模式(以显示文本合并)
  359. /// </summary>
  360. public class CustomMergedCellEvaluator : Infragistics.Win.UltraWinGrid.IMergedCellEvaluator
  361. {
  362. private string primaryKey;
  363. /// <summary>
  364. /// 获取或设置合并列的主键列的绑定名称
  365. /// </summary>
  366. public string PrimaryKey
  367. {
  368. get { return primaryKey; }
  369. set { primaryKey = value; }
  370. }
  371. /// <summary>
  372. /// CustomMergedCellEvaluator 的构造函数
  373. /// </summary>
  374. /// <param name="primaryKey">主键列的绑定名称</param>
  375. public CustomMergedCellEvaluator(string primaryKey)
  376. {
  377. this.primaryKey = primaryKey;
  378. }
  379. #region IMergedCellEvaluator 成员
  380. public bool ShouldCellsBeMerged(Infragistics.Win.UltraWinGrid.UltraGridRow row1, Infragistics.Win.UltraWinGrid.UltraGridRow row2, Infragistics.Win.UltraWinGrid.UltraGridColumn column)
  381. {
  382. //确认逻辑:如果是主键列,自动合并,否则通过联合主键来合并
  383. if (column.MergedCellStyle == Infragistics.Win.UltraWinGrid.MergedCellStyle.Always)
  384. {
  385. if (string.IsNullOrEmpty(this.primaryKey))
  386. {
  387. return row1.GetCellText(column) == row2.GetCellText(column);
  388. }
  389. if ((row1.GetCellValue(row1.Cells[this.primaryKey].Column).ToString() == row2.GetCellValue(row1.Cells[this.primaryKey].Column).ToString()) && (row1.GetCellText(column) == row2.GetCellText(column)))
  390. {
  391. return true;
  392. }
  393. }
  394. return false;
  395. }
  396. #endregion
  397. }
  398. public static DataTable ToDataTable(DataRow[] rows)
  399. {
  400. if (rows == null || rows.Length == 0) return null;
  401. DataTable tmp = rows[0].Table.Clone(); // 复制DataRow的表结构
  402. foreach (DataRow row in rows)
  403. {
  404. tmp.ImportRow(row); // 将DataRow添加到DataTable中
  405. }
  406. return tmp;
  407. }
  408. }
  409. }