StorageInfo.cs 41 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Data;
  4. using System.Drawing;
  5. using System.Linq;
  6. using System.Text;
  7. using System.Windows.Forms;
  8. using Core.Mes.Client.Comm.Format;
  9. using Core.Mes.Client.Comm.Server;
  10. using Core.Mes.Client.Comm.Tool;
  11. using Core.StlMes.Client.LgCommon;
  12. using Core.StlMes.Client.LgResMgt.库存位置;
  13. using CoreFS.CA06;
  14. using Infragistics.Win;
  15. using Infragistics.Win.UltraWinEditors;
  16. using Infragistics.Win.UltraWinGrid;
  17. using Resources = Core.StlMes.Client.LgResMgt.Properties.Resources;
  18. using NPOI.HSSF.UserModel;
  19. using NPOI.SS.UserModel;
  20. using NPOI.SS.Util;
  21. using BorderStyle = NPOI.SS.UserModel.BorderStyle;
  22. using HorizontalAlignment = NPOI.SS.UserModel.HorizontalAlignment;
  23. using System.IO;
  24. using System.Diagnostics;
  25. using MatInfo = Core.StlMes.Client.LgResMgt.库存位置.MatInfo;
  26. namespace Core.StlMes.Client.LgResMgt
  27. {
  28. public partial class StorageInfo : FrmBase
  29. {
  30. private int _height = 200;
  31. private string GridText;
  32. private YdmBsStorageSettingEntity ydmBsStorageSettingEntity;
  33. public StorageInfo()
  34. {
  35. InitializeComponent();
  36. }
  37. protected override void OnLoad(EventArgs e)
  38. {
  39. base.OnLoad(e);
  40. BindStorageDropDown();
  41. EntityHelper.ShowGridCaption<MatInfo>(ugLocationDetail.DisplayLayout.Bands[0]);
  42. EntityHelper.ShowGridCaption<MatInfo>(ugWaitMove.DisplayLayout.Bands[0]);
  43. egbLocationInfo.Expanded = false;
  44. ClsControlPack.RefreshAndAutoSize(ugWaitMove);
  45. }
  46. public void BindStorageDropDown()
  47. {
  48. var dic = new Dictionary<string, object>();
  49. var customInfo = CustomInfo.ToString2();
  50. if (!string.IsNullOrWhiteSpace(customInfo))
  51. dic.Add("storageTypeNo", customInfo.Split(','));
  52. dic.Add("managementNo", ValidDataPurviewIds);
  53. var dt = ServerHelper.GetData("Core.LgMes.Server.LgDeviceManager.StorageManage.GetStorageNoList",
  54. new object[] {dic}, ob);
  55. if ((dt != null) && (dt.Rows.Count > 0))
  56. {
  57. uceStorageNo.DataSource = dt;
  58. uceStorageNo.ValueMember = "STORAGE_NO";
  59. uceStorageNo.DisplayMember = "STORAGE_NAME";
  60. }
  61. if (uceStorageNo.Items.Count > 0)
  62. uceStorageNo.SelectedIndex = 0;
  63. }
  64. public void RefreshData()
  65. {
  66. matInfoBindingSource.Clear();
  67. if (uceStorageNo.SelectedIndex == -1)
  68. {
  69. ydmBsStorageSettingEntity = null;
  70. return;
  71. }
  72. ;
  73. GetStorageSetting();
  74. dtData.Rows.Clear();
  75. dtData.Columns.Clear();
  76. matGpMAndStorageEntityBindingSource.Clear();
  77. var locationInfos = EntityHelper.GetData<LocationInfo>(
  78. "Core.LgMes.Server.LgDeviceManager.StorageManage.GetStorageLocationInfoNew",
  79. new[] {uceStorageNo.SelectedItem.DataValue}, ob);
  80. GridText = string.Format(@"可用空料位(大): {0} 可用空料位(小): {1} 满料位(大):{2} 满料位(小):{3} 总炉数: {4} 总支数: {5} 总吨数 {6}",
  81. locationInfos.Where(a => ((a.RackType == null || a.RackType == "") || a.RackType.Equals("0"))).Count(p => (p.ActCount == null) || (p.ActCount <= 0)),
  82. locationInfos.Where(a => ((a.RackType == null || a.RackType == "") || a.RackType.Equals("1"))).Count(p => (p.ActCount == null) || (p.ActCount <= 0)),
  83. locationInfos.Where(a => ((a.RackType == null || a.RackType == "") || a.RackType.Equals("0"))).Count(p => (p.ActCount != null) && (p.ActCount > 0)),
  84. locationInfos.Where(a => ((a.RackType == null || a.RackType == "") || a.RackType.Equals("1"))).Count(p => (p.ActCount != null) && (p.ActCount > 0)),
  85. locationInfos.Sum(p => p.JudgeStoveNoCount),
  86. locationInfos.Sum(p => p.ActCount),
  87. locationInfos.Sum(p => p.ActWeight)
  88. );
  89. ugStorageInfo.Text = GridText;
  90. if (ydmBsStorageSettingEntity.ColumnRowNum == "0")
  91. {
  92. //老逻辑 列名 是按字母顺序分配
  93. OldLogic(locationInfos);
  94. }
  95. else
  96. {
  97. NewLogic(locationInfos);
  98. }
  99. foreach (var ultraGridRow in ugStorageInfo.Rows)
  100. foreach (var ultraGridCell in ultraGridRow.Cells)
  101. {
  102. var locationInfo = ultraGridCell.Tag as LocationInfo;
  103. if (locationInfo != null && locationInfo.IsProcess == "1")
  104. {
  105. ultraGridCell.Appearance.BackColor = Color.BurlyWood;
  106. }
  107. }
  108. }
  109. private void NewLogic(DataSourceList<LocationInfo> locationInfos)
  110. {
  111. var emptyRow = new List<int>();
  112. var emptyColums = new List<string>();
  113. var isSingleArea = locationInfos.Select(p => p.AreaNo).Distinct().Count() == 1;
  114. locationInfos.OrderBy(p => p.AreaNo).GroupBy(p => p.AreaNo).ToList().ForEach(
  115. areaData =>
  116. {
  117. var maxColums = 0;
  118. if (ydmBsStorageSettingEntity.ColumnReverse == "0")
  119. {
  120. var list = areaData
  121. .Where(p => StringUtil.IsInt(p.ColNo));
  122. if (list.Any())
  123. maxColums = list.Select(p => int.Parse(p.ColNo.ToString2())).Max();
  124. }
  125. else
  126. {
  127. var list = areaData
  128. .Where(p => StringUtil.IsInt(p.RowNo));
  129. if (list.Any())
  130. maxColums = list.Select(p => int.Parse(p.RowNo.ToString2())).Max();
  131. }
  132. for (var i = 1; i <= maxColums; i++)
  133. {
  134. var name = getColumsName(isSingleArea, areaData.Key, i + "");
  135. dtData.Columns.Add(
  136. new DataColumn(name));
  137. emptyColums.Add(name);
  138. }
  139. }
  140. );
  141. var maxRow = 0;
  142. if (ydmBsStorageSettingEntity.ColumnReverse == "0")
  143. {
  144. var list = locationInfos
  145. .Where(p => StringUtil.IsInt(p.RowNo));
  146. if (list.Any())
  147. maxRow = list.Select(p => int.Parse(p.RowNo.ToString2())).Max();
  148. }
  149. else
  150. {
  151. var list = locationInfos
  152. .Where(p => StringUtil.IsInt(p.ColNo));
  153. if (list.Any())
  154. maxRow = list.Select(p => int.Parse(p.ColNo.ToString2())).Max();
  155. }
  156. for (var i = 0; i < maxRow; i++)
  157. {
  158. dtData.Rows.Add(dtData.NewRow());
  159. emptyRow.Add(i);
  160. }
  161. locationInfos.ForEach(p =>
  162. {
  163. int rowindex;
  164. if (
  165. int.TryParse(ydmBsStorageSettingEntity.ColumnReverse == "0" ? p.RowNo : p.ColNo, out rowindex) &&
  166. (rowindex > 0))
  167. {
  168. int column;
  169. if (
  170. !int.TryParse(ydmBsStorageSettingEntity.ColumnReverse == "0" ? p.ColNo : p.RowNo, out column) &&
  171. (rowindex > 0)) return;
  172. var colum = getColumsName(isSingleArea, p.AreaNo, column + "");
  173. ugStorageInfo.Rows[rowindex - 1].Cells[colum].Tag = p;
  174. if (emptyRow.Contains(rowindex - 1)) emptyRow.Remove(rowindex - 1);
  175. if (emptyColums.Contains(colum)) emptyColums.Remove(colum);
  176. string data = ydmBsStorageSettingEntity.CellShow == "1" ? colum + "_" + rowindex : p.LocationName;
  177. int maxLen = 0;
  178. int.TryParse(ugStorageInfo.DisplayLayout.Bands[0].Columns[colum].Tag.ToString3(), out maxLen);
  179. int dataLen = System.Text.Encoding.Default.GetBytes(data).Length;
  180. if (dataLen > maxLen) ugStorageInfo.DisplayLayout.Bands[0].Columns[colum].Tag = dataLen;
  181. ugStorageInfo.Rows[rowindex - 1].Cells[colum].Value =
  182. ImageText(
  183. p.ActCount.ToString3(),
  184. data) ;
  185. }
  186. });
  187. if (ydmBsStorageSettingEntity.EmptyRowSort >= 0)
  188. for (var i = emptyRow.Count - 1; i >= 0; i--)
  189. {
  190. var currentlist = new List<int> {emptyRow[i]};
  191. while ((i > 0) && (emptyRow[i] - emptyRow[i - 1] == 1))
  192. currentlist.Add(emptyRow[--i]);
  193. for (var j = currentlist.Count - 1; j >= ydmBsStorageSettingEntity.EmptyRowSort; j--)
  194. ugStorageInfo.Rows[currentlist[j]].Delete(false);
  195. }
  196. if (ydmBsStorageSettingEntity.EmptyColumnSort >= 0)
  197. for (var i = emptyColums.Count - 1; i >= 0; i--)
  198. {
  199. var currentlist = new List<string> {emptyColums[i]};
  200. while ((i > 0) &&
  201. (ugStorageInfo.DisplayLayout.Bands[0].Columns[emptyColums[i]].Index -
  202. ugStorageInfo.DisplayLayout.Bands[0].Columns[emptyColums[i - 1]].Index == 1))
  203. currentlist.Add(emptyColums[--i]);
  204. for (var j = currentlist.Count - 1; j >= ydmBsStorageSettingEntity.EmptyColumnSort; j--)
  205. ugStorageInfo.DisplayLayout.Bands[0].Columns[currentlist[j]].Hidden = true;
  206. for (var j = int.Parse(ydmBsStorageSettingEntity.EmptyColumnSort.ToString2()) - 1; j >= 0; j--)
  207. ugStorageInfo.DisplayLayout.Bands[0].Columns[currentlist[j]].Header.Caption = "...";
  208. }
  209. SetGridFormat();
  210. }
  211. private string getColumsName(bool isSingleArea, string area, string col)
  212. {
  213. return (isSingleArea ? "" : area + "_") + col;
  214. }
  215. private void OldLogic(DataSourceList<LocationInfo> locationInfos)
  216. {
  217. locationInfos.OrderBy(p => p.AreaNo).GroupBy(p => p.AreaNo).ToList().ForEach(
  218. areaYdmBsLocationEntities =>
  219. {
  220. var maxRow = 0;
  221. foreach (
  222. IGrouping<string, YdmBsLocationEntity> rowYdmBsLocationEntities in
  223. areaYdmBsLocationEntities.OrderBy(p => p.RowNo).GroupBy(p => p.RowNo))
  224. {
  225. var columnName = NunberToChar(areaYdmBsLocationEntities.Key, 1) +
  226. NunberToChar(rowYdmBsLocationEntities.Key);
  227. if (!dtData.Columns.Contains(columnName))
  228. dtData.Columns.Add(
  229. new DataColumn(columnName));
  230. foreach (var ydmBsLocationEntity in rowYdmBsLocationEntities)
  231. {
  232. var rowindex = 0;
  233. if (!int.TryParse(ydmBsLocationEntity.ColNo, out rowindex)) continue;
  234. for (var i = dtData.Rows.Count; i < rowindex; i++)
  235. dtData.Rows.Add(dtData.NewRow());
  236. var locationMatGpMAndStorageEntitys =
  237. locationInfos.Where(p => p.LocationNo == ydmBsLocationEntity.LocationNo).ToList();
  238. if (locationMatGpMAndStorageEntitys.Any())
  239. ugStorageInfo.Rows[rowindex - 1].Cells[columnName].Tag =
  240. locationMatGpMAndStorageEntitys[0];
  241. else
  242. ugStorageInfo.Rows[rowindex - 1].Cells[columnName].Tag =
  243. ydmBsLocationEntity.LocationName.Replace("\n", "").Replace("\r", "");
  244. dtData.Rows[rowindex - 1][columnName] =
  245. ImageText(
  246. locationMatGpMAndStorageEntitys.Where(p => p.ActCount != null)
  247. .Select(p => p.ActCount)
  248. .Sum()
  249. .ToString(),
  250. ydmBsStorageSettingEntity.CellShow == "1" ? ugStorageInfo.DisplayLayout.Bands[0].Columns[columnName].Header.Caption +
  251. rowindex : ydmBsLocationEntity.LocationName);
  252. }
  253. }
  254. }
  255. );
  256. SetGridFormat();
  257. }
  258. private void SetGridFormat()
  259. {
  260. ugStorageInfo.DisplayLayout.Override.AllowRowFiltering = DefaultableBoolean.False;
  261. ugStorageInfo.DisplayLayout.Override.RowSelectorHeaderStyle = RowSelectorHeaderStyle.ExtendFirstColumn;
  262. ugStorageInfo.DisplayLayout.Override.RowSelectorWidth = 20;
  263. foreach (var ugc in ugStorageInfo.DisplayLayout.Bands[0].Columns)
  264. {
  265. int maxLen = 0;
  266. int.TryParse(ugc.Tag.ToString3(), out maxLen);
  267. ugc.SortIndicator = SortIndicator.Disabled;
  268. ugc.CellActivation = Activation.NoEdit;
  269. ugc.Width =maxLen>8? (int)(maxLen* 8.8d): 72;
  270. ugc.EditorComponent = ut1;
  271. }
  272. //ugStorageInfo.DisplayLayout.Override.RowSizing = RowSizing.AutoFree;
  273. ugStorageInfo.DisplayLayout.Override.DefaultRowHeight = 52 + (ydmBsStorageSettingEntity.CellShow == "3" ? 15 : 0);
  274. }
  275. private void GetStorageSetting()
  276. {
  277. List<YdmBsStorageSettingEntity> lists = EntityHelper.GetData<YdmBsStorageSettingEntity>(
  278. "Core.LgMes.Server.LgDeviceManager.StorageManage.GetStorageSetting",
  279. new object[] {uceStorageNo.SelectedItem.DataValue.ToString()},
  280. ob);
  281. if (lists.Any())
  282. ydmBsStorageSettingEntity = lists[0];
  283. else
  284. ydmBsStorageSettingEntity = new YdmBsStorageSettingEntity
  285. {
  286. StorageNo = uceStorageNo.SelectedItem.DataValue.ToString(),
  287. GroupArea = "1",
  288. ColumnReverse = "1",
  289. CellShow = "1",
  290. CellHight = 34,
  291. CellWight = 45,
  292. CellFullImage = ut1.EditInfo.EncodeImage(Resources.Full_Shelf),
  293. CellEmptyImage = ut1.EditInfo.EncodeImage(Resources.Empty_Shelf),
  294. EmptyColumnSort = 0,
  295. EmptyRowSort = 0,
  296. ColumnRowNum = "0"
  297. };
  298. }
  299. public string ImageText( string type, string title)
  300. {
  301. var encodedImage = type == "0"
  302. ? ydmBsStorageSettingEntity.CellEmptyImage
  303. : ydmBsStorageSettingEntity.CellFullImage;
  304. /*
  305. string ImageFormat = " <p style=\"text-align:Center;\"><img title=\"{2}\"" +
  306. " style=\"width:45px; height:34px;\" " +
  307. "data=\"{1}\"/><br/><span style=\"font-weight:bold;font-family:宋体; font-size:+0pt;\">{0}</span><br/></p>";*/
  308. var sb = new StringBuilder();
  309. sb.Append(" <p style=\"text-align:Center;\">");
  310. if (ydmBsStorageSettingEntity.CellShow == "3")
  311. {
  312. sb.Append("<span style=\"font-weight:bold;font-family:宋体; font-size:+0pt;\">");
  313. sb.Append("[" + type+"]");
  314. sb.Append("</span>");
  315. sb.Append("<br/>");
  316. }
  317. sb.Append(string.Format(" <img title=\"{0}\" style=\"width:45px; height:34px;\" data=\"{3}\"/> ", title,
  318. ydmBsStorageSettingEntity.CellWight, ydmBsStorageSettingEntity.CellHight,
  319. encodedImage));
  320. if (ydmBsStorageSettingEntity.CellShow != "0")
  321. {
  322. sb.Append("<br/>");
  323. sb.Append("<span style=\"font-weight:bold;font-family:宋体; font-size:+0pt;\">");
  324. sb.Append( title );
  325. sb.Append("</span>");
  326. sb.Append("<br/>");
  327. }
  328. sb.Append("</p>");
  329. return sb.ToString2();
  330. }
  331. private void ugStorageInfo_AfterCellActivate(object sender, EventArgs e)
  332. {
  333. var LocationText = "";
  334. // matGpMAndStorageEntityBindingSource.DataSource = new List<MatGpMAndStorageEntity>();
  335. if (ugStorageInfo.ActiveCell.Tag != null)
  336. {
  337. var locaiton =
  338. ugStorageInfo.ActiveCell.Tag as LocationInfo;
  339. if (locaiton != null)
  340. {
  341. var name = locaiton.LocationName +
  342. (string.IsNullOrWhiteSpace(locaiton.Memo) ? "" : "(" + locaiton.Memo + ")");
  343. if ((locaiton.ActCount == null) || (locaiton.ActCount <= 0))
  344. LocationText = string.Format(@" 当前料位: {0} 空料架", name);
  345. else
  346. LocationText = string.Format(@" 当前料位: {0} 料位炉数: {1} 料位支数: {2} 料位吨数 {3}",
  347. name,
  348. locaiton.JudgeStoveNoCount,
  349. locaiton.ActCount,
  350. locaiton.ActWeight
  351. );
  352. }
  353. }
  354. ugStorageInfo.Text = GridText + LocationText;
  355. // ClsControlPack.RefreshAndAutoSize(ugLocationDetail);
  356. // ugStorageInfo.ActiveCell.Tag
  357. }
  358. private void uceStorageNo_ValueChanged(object sender, EventArgs e)
  359. {
  360. RefreshData();
  361. }
  362. public override void ToolBar_Click(object sender, string toolbarKey)
  363. {
  364. switch (toolbarKey)
  365. {
  366. case "Query": //查询
  367. RefreshData();
  368. break;
  369. case "Print":
  370. Print();
  371. break;
  372. case "UpdateMemo":
  373. UpdateMemo();
  374. break;
  375. case "Close": //关闭
  376. Close();
  377. break;
  378. }
  379. }
  380. private void UpdateMemo()
  381. {
  382. ugLocationDetail.UpdateData();
  383. var listTotal = matInfoBindingSource.DataSource as List<库存位置.MatInfo>;
  384. var list = listTotal.Where(p => p.Chk).ToList();
  385. if (!list.Any())
  386. {
  387. MessageBox.Show("请选择需要修改备注的库存信息!");
  388. return;
  389. }
  390. using (var updateMemo = new UpdateMemo(ob, list))
  391. {
  392. if (updateMemo.ShowDialog() == DialogResult.OK)
  393. {
  394. ugStorageInfo_AfterSelectChange(null, null);
  395. }
  396. }
  397. }
  398. private void Print()
  399. {
  400. if (ugLocationDetail.ActiveRow == null)
  401. {
  402. MessageBox.Show("请选中需要打印的炉号");
  403. return;
  404. }
  405. var matInfo = ugLocationDetail.ActiveRow.ListObject as MatInfo;
  406. var strurl = "";
  407. strurl =
  408. @"http://172.54.10.42:8080/webroot/decision/view/report?viewlet=RepLabelTH.cpt&JUDGE_STOVE_NO="
  409. + matInfo.JudgeStoveNo + "&BATCH_NO="
  410. + matInfo.BatchNo + "&PRO_ORDER_NO="
  411. + matInfo.OrderNo + "&LOCATION_NO=" + matInfo.LocationNo + "&USER=" + UserInfo.GetUserID();
  412. var fBug = new FrmRepExcel(ob, strurl);
  413. fBug.AutoSize = true;
  414. fBug.MaximumSize = new Size(Screen.PrimaryScreen.WorkingArea.Width, Screen.PrimaryScreen.WorkingArea.Height);
  415. fBug.WindowState = FormWindowState.Maximized;
  416. fBug.Text = "打印标牌";
  417. fBug.Show();
  418. }
  419. private string NunberToChar(string numberstr, int dif = 0)
  420. {
  421. try
  422. {
  423. var number = int.Parse(numberstr) - dif;
  424. if ((1 <= number) && (36 >= number))
  425. {
  426. var num = number + 64;
  427. var asciiEncoding = new ASCIIEncoding();
  428. byte[] btNumber = {(byte) num};
  429. return asciiEncoding.GetString(btNumber);
  430. }
  431. if (number == 0) return "";
  432. return "#";
  433. }
  434. catch (Exception)
  435. {
  436. return "#";
  437. }
  438. }
  439. private void egbLocationInfo_ExpandedStateChanged(object sender, EventArgs e)
  440. {
  441. if (scMain.Panel2Collapsed) return;
  442. if (egbLocationInfo.Expanded)
  443. {
  444. scMain.SplitterDistance = scMain.Size.Height - _height;
  445. }
  446. else
  447. {
  448. _height = scMain.Panel2.Size.Height;
  449. scMain.SplitterDistance = scMain.Size.Height - 25;
  450. }
  451. }
  452. private void scMain_SizeChanged(object sender, EventArgs e)
  453. {
  454. if (scMain.Panel2Collapsed) return;
  455. if (egbLocationInfo.Expanded)
  456. scMain.SplitterDistance = scMain.Size.Height - _height;
  457. else
  458. scMain.SplitterDistance = scMain.Size.Height - 25;
  459. }
  460. private void etStoveNo_EditorButtonClick(object sender, EditorButtonEventArgs e)
  461. {
  462. try
  463. {
  464. var control = sender as UltraTextEditor;
  465. if (control == null) return;
  466. if (e.Button.Key.ToUpper().Equals("CLEAR".ToUpper()))
  467. {
  468. if (!string.IsNullOrEmpty(control.Text.Trim()))
  469. {
  470. control.Tag = control.Text.Trim();
  471. control.Clear();
  472. }
  473. else if (control.Tag != null) control.Text = Convert.ToString(control.Tag);
  474. }
  475. else if (e.Button.Key.ToUpper().Equals("FIND".ToUpper()))
  476. {
  477. FindStoveData(control);
  478. }
  479. }
  480. catch
  481. {
  482. // ignored
  483. }
  484. }
  485. private void FindStoveData(UltraTextEditor control)
  486. {
  487. if (uceStorageNo.SelectedIndex < 0) return;
  488. ugStorageInfo.Selected.Cells.Clear();
  489. if (ugStorageInfo.ActiveCell != null)
  490. {
  491. ugStorageInfo.ActiveCell.Activated = false;
  492. matGpMAndStorageEntityBindingSource.DataSource = new List<MatGpMAndStorageEntity>();
  493. }
  494. List<LocationInfo> list =
  495. EntityHelper.GetData<LocationInfo>(
  496. "Core.LgMes.Server.LgDeviceManager.StorageManage.getLocationByStoveNo",
  497. new[] {uceStorageNo.SelectedItem.DataValue, control.Text.Trim()}, ob);
  498. foreach (var ultraGridRow in ugStorageInfo.Rows)
  499. foreach (var ultraGridCell in ultraGridRow.Cells)
  500. {
  501. var locationInfo =
  502. ultraGridCell.Tag as LocationInfo;
  503. if (locationInfo != null)
  504. if (
  505. list.Any(
  506. p => p.LocationNo == locationInfo.LocationNo))
  507. {
  508. ultraGridCell.Activated = true;
  509. ultraGridCell.Selected = true;
  510. }
  511. }
  512. egbLocationInfo.Expanded = true;
  513. foreach (var ultraGridRow in ugLocationDetail.Rows)
  514. {
  515. var matInfo =
  516. ultraGridRow.ListObject as MatInfo;
  517. if (matInfo.JudgeStoveNo == control.Text.Trim() || matInfo.StoveNo == control.Text.Trim())
  518. ultraGridRow.Selected = true;
  519. }
  520. }
  521. private void txtStoveNo_KeyPress(object sender, KeyPressEventArgs e)
  522. {
  523. if (e.KeyChar == 13)
  524. FindStoveData(txtStoveNo);
  525. }
  526. private void ugStorageInfo_AfterSelectChange(object sender, AfterSelectChangeEventArgs e)
  527. {
  528. matInfoBindingSource.Clear();
  529. var locations = new List<string>();
  530. foreach (var ultraGridCell in ugStorageInfo.Selected.Cells)
  531. {
  532. var LocationInfo =
  533. ultraGridCell.Tag as LocationInfo;
  534. if (LocationInfo != null)
  535. locations.Add(LocationInfo.LocationNo);
  536. }
  537. if (!locations.Any()) return;
  538. foreach (var ultraGridColumn in ugLocationDetail.DisplayLayout.Bands[0].Columns)
  539. {
  540. //TZH 2024.8.15 add 判定字头(PdZt)是否送判(IfSp) 去向 (MatGowhereName)
  541. if (ultraGridColumn.Key == "Chk" || ultraGridColumn.Key == "MatState" || ultraGridColumn.Key == "Producname" || ultraGridColumn.Key == "PdZt" || ultraGridColumn.Key == "IfSp" || ultraGridColumn.Key == "MatGowhereName") continue;
  542. ultraGridColumn.Hidden = true;
  543. }
  544. matInfoBindingSource.DataSource = EntityHelper.GetData<MatInfo>(
  545. "Core.LgMes.Server.LgDeviceManager.StorageManage.StorageNoDataSumNew",
  546. new[] {uceStorageNo.SelectedItem.DataValue, locations.ToArray()}, ob);
  547. ClsControlPack.RefreshAndAutoSize(ugLocationDetail);
  548. }
  549. private void ugLocationDetail_InitializeRow(object sender, InitializeRowEventArgs e)
  550. {
  551. foreach (var ultraGridColumn in ugLocationDetail.DisplayLayout.Bands[0].Columns)
  552. {
  553. if (ultraGridColumn.Key == "Chk") continue;
  554. if (ultraGridColumn.Key == "LocationNo") continue;
  555. if (ultraGridColumn.Key == "MatType") continue;
  556. if (!ultraGridColumn.Hidden) continue;
  557. if (!string.IsNullOrWhiteSpace(e.Row.Cells[ultraGridColumn.Key].Value.ToString2()))
  558. ultraGridColumn.Hidden = false;
  559. }
  560. }
  561. private void StorageInfo_Shown(object sender, EventArgs e)
  562. {
  563. ugLocationDetail.DisplayLayout.Bands[0].Columns["Chk"].Hidden = true;
  564. if ((toolMenu != null) && (toolMenu.Toolbars != null) && (toolMenu.Toolbars.Count > 0))
  565. {
  566. if (toolMenu.Toolbars[0].Tools.Exists("move"))
  567. if (toolMenu.Toolbars[0].Tools["move"].InstanceProps.Visible != DefaultableBoolean.False)
  568. {
  569. ugLocationDetail.ContextMenuStrip = listViewMenuStrip;
  570. ugLocationDetail.DisplayLayout.Bands[0].Columns["Chk"].Hidden = false;
  571. toolMenu.Toolbars[0].Tools["move"].InstanceProps.Visible = DefaultableBoolean.False;
  572. }
  573. if (toolMenu.Toolbars[0].Tools.Exists("UpdateMemo"))
  574. {
  575. ugLocationDetail.DisplayLayout.Bands[0].Columns["Chk"].Hidden = false;
  576. }
  577. }
  578. }
  579. private void ugStorageInfo_DoubleClick(object sender, EventArgs e)
  580. {
  581. if (ugStorageInfo.ActiveCell == null) return;
  582. var locationInfo = ugStorageInfo.ActiveCell.Tag as LocationInfo;
  583. if (egpWaitMove.Visible && (locationInfo != null))
  584. {
  585. var locations = bindingSource1.DataSource as List<MatInfo>;
  586. if ((locations != null) && locations.Any())
  587. {
  588. if (MessageUtil.ShowYesNoAndQuestion("是否确认倒垛至料位[" + locationInfo.LocationName + "] ?") ==
  589. DialogResult.No) return;
  590. var ccp = new CoreClientParam
  591. {
  592. ServerName = "Core.LgMes.Server.LgDeviceManager.StorageManage",
  593. MethodName = "DoMove",
  594. ServerParams = new object[]
  595. {
  596. locations.Select(JSONFormat.Format).ToList(),
  597. locationInfo.LocationNo
  598. }
  599. };
  600. ccp = ExecuteNonQuery(ccp, CoreInvokeType.Internal);
  601. MessageUtil.ShowTips(ccp.ReturnInfo);
  602. if (ccp.ReturnInfo.ToString2().Contains("成功"))
  603. {
  604. var locationInfos = EntityHelper.GetData<LocationInfo>(
  605. "Core.LgMes.Server.LgDeviceManager.StorageManage.GetStorageLocationInfoNewByLocation",
  606. new[] {locationInfo.LocationNo}, ob);
  607. if ((locationInfos != null) && locationInfos.Any())
  608. {
  609. ugStorageInfo.ActiveCell.Tag = locationInfos[0];
  610. ugStorageInfo.ActiveCell.Value =
  611. ImageText(
  612. locationInfos[0].ActCount == null ? "0" : locationInfos[0].ActCount.ToString3(),
  613. ydmBsStorageSettingEntity.CellShow == "1" ? ugStorageInfo.ActiveCell.Column.Header.Caption +
  614. ugStorageInfo.ActiveCell.Row.Index : locationInfos[0].LocationName);
  615. }
  616. else
  617. ugStorageInfo.ActiveCell.Tag = null;
  618. locations.Select(p => p.UltraGridCell).Distinct().ToList().ForEach(p =>
  619. {
  620. var location = p.Tag as LocationInfo;
  621. if (location != null)
  622. {
  623. var locs = EntityHelper.GetData<LocationInfo>(
  624. "Core.LgMes.Server.LgDeviceManager.StorageManage.GetStorageLocationInfoNewByLocation",
  625. new[] {location.LocationNo}, ob);
  626. if ((locs != null) && locs.Any())
  627. {
  628. p.Tag = locs[0];
  629. p.Value =
  630. ImageText(
  631. locs[0].ActCount == null ? "0" : locs[0].ActCount.ToString3(),
  632. ydmBsStorageSettingEntity.CellShow == "1" ? p.Column.Header.Caption +
  633. p.Row.Index : locs[0].LocationName);
  634. }
  635. else
  636. p.Tag = null;
  637. }
  638. });
  639. bindingSource1.Clear();
  640. egpWaitMove.Visible = false;
  641. ugStorageInfo_AfterCellActivate(null, null);
  642. ugStorageInfo_AfterSelectChange(null, null);
  643. }
  644. else
  645. {
  646. return;
  647. }
  648. }
  649. }
  650. if ((locationInfo != null) && (locationInfo.ActCount != null) && (locationInfo.ActCount > 0)
  651. )
  652. {
  653. if (!egbLocationInfo.Expanded)
  654. egbLocationInfo.Expanded = true;
  655. }
  656. else
  657. {
  658. egbLocationInfo.Expanded = false;
  659. }
  660. }
  661. private void MoveItem_Click(object sender, EventArgs e)
  662. {
  663. ugLocationDetail.UpdateData();
  664. var listTotal = matInfoBindingSource.DataSource as List<MatInfo>;
  665. var list = listTotal.Where(p => p.Chk).ToList();
  666. if (!list.Any())
  667. {
  668. MessageBox.Show("请选择需要倒垛的物料");
  669. return;
  670. }
  671. var data = bindingSource1.DataSource as List<MatInfo>;
  672. if (data == null) data = new List<MatInfo>();
  673. var addData = EntityHelper.CopyEntitys(list);
  674. addData.ForEach(p =>
  675. {
  676. p.LaryNoTo = "1";
  677. p.UserName = UserInfo.GetUserName();
  678. p.Bc = UserInfo.GetUserOrder();
  679. p.Bz = UserInfo.GetUserGroup();
  680. p.Deptid = UserInfo.GetDeptid();
  681. p.DeptName = UserInfo.GetDepartment();
  682. p.UltraGridCell = ugStorageInfo.ActiveCell;
  683. });
  684. var dataNew = data.Concat(addData).ToList();
  685. bindingSource1.DataSource = dataNew;
  686. egpWaitMove.Visible = true;
  687. }
  688. private void clearItem_Click(object sender, EventArgs e)
  689. {
  690. bindingSource1.Clear();
  691. egpWaitMove.Visible = false;
  692. }
  693. #region//导出空料位
  694. private void unExcel_Click(object sender, EventArgs e)
  695. {
  696. var hssfworkbook = new HSSFWorkbook();
  697. var sheet = hssfworkbook.CreateSheet("空料位统计");
  698. var index = 0;
  699. SetHead(sheet, hssfworkbook, index++);
  700. SetHeadRow(sheet, hssfworkbook
  701. , new List<string> { "料位代码", "料位名称", "区号", "行号", "列号", "备注" },
  702. new List<int> { 29, 25, 15, 15, 15, 15 },
  703. index++
  704. );
  705. setData(sheet, hssfworkbook, ref index);
  706. // SetSumm(sheet, index, hssfworkbook);
  707. sheet.ForceFormulaRecalculation = true;
  708. hssfworkbook.GetCreationHelper().CreateFormulaEvaluator().EvaluateAll();
  709. using (var saveFileDialog1 = new SaveFileDialog())
  710. {
  711. saveFileDialog1.FileName = uceStorageNo.Text+"空料位统计" + DateTime.Now.ToString("yyMMddHHmmss");
  712. saveFileDialog1.Filter = "Excel文件(*.xls)|*.xls";
  713. if (saveFileDialog1.ShowDialog() == DialogResult.OK)
  714. {
  715. var sFullName = saveFileDialog1.FileName;
  716. var ms = new MemoryStream();
  717. hssfworkbook.Write(ms);
  718. using (var fs = new FileStream(saveFileDialog1.FileName, FileMode.Create, FileAccess.Write))
  719. {
  720. var bArr = ms.ToArray();
  721. fs.Write(bArr, 0, bArr.Length);
  722. fs.Flush();
  723. }
  724. var p = new ProcessStartInfo(sFullName);
  725. p.WorkingDirectory = Path.GetDirectoryName(sFullName);
  726. Process.Start(p);
  727. }
  728. }
  729. }
  730. private void SetHead(ISheet sheet, HSSFWorkbook hssfworkbook, int rowindex)
  731. {
  732. var IRow = sheet.CreateRow(rowindex);
  733. IRow.Height = 50 * 20;
  734. var Icell = IRow.CreateCell(1);
  735. Icell.SetCellValue("空料位统计");
  736. var style = CenterStyle(hssfworkbook);
  737. var font = TitleFont(hssfworkbook);
  738. //使用SetFont方法将字体样式添加到单元格样式中
  739. style.SetFont(font);
  740. //将新的样式赋给单元格
  741. Icell.CellStyle = style;
  742. //合并单元格
  743. sheet.AddMergedRegion(new CellRangeAddress(0, 0, 1, 6));
  744. }
  745. private ICellStyle CenterStyle(HSSFWorkbook hssfworkbook)
  746. {
  747. var style = hssfworkbook.CreateCellStyle();
  748. //设置单元格的样式:水平对齐居中
  749. style.Alignment = NPOI.SS.UserModel.HorizontalAlignment.Center;
  750. style.VerticalAlignment = VerticalAlignment.Center;
  751. return style;
  752. }
  753. private ICellStyle textStyle(HSSFWorkbook hssfworkbook)
  754. {
  755. var style = hssfworkbook.CreateCellStyle();
  756. //设置单元格的样式:水平对齐居中
  757. style.Alignment = NPOI.SS.UserModel.HorizontalAlignment.Left;
  758. style.VerticalAlignment = VerticalAlignment.Center;
  759. return style;
  760. }
  761. private ICellStyle numStyle(HSSFWorkbook hssfworkbook)
  762. {
  763. var style = hssfworkbook.CreateCellStyle();
  764. //设置单元格的样式:水平对齐居中
  765. style.Alignment = NPOI.SS.UserModel.HorizontalAlignment.Right;
  766. style.VerticalAlignment = VerticalAlignment.Center;
  767. return style;
  768. }
  769. private static IFont TitleFont(HSSFWorkbook hssfworkbook)
  770. {
  771. //新建一个字体样式对象
  772. var font = hssfworkbook.CreateFont();
  773. font.FontName = "宋体";
  774. font.FontHeightInPoints = 30;
  775. //设置字体加粗样式
  776. font.Boldweight = (short)FontBoldWeight.Bold;
  777. return font;
  778. }
  779. private void SetHeadRow(ISheet sheet, HSSFWorkbook hssfworkbook, List<string> name, List<int> columsWidth,
  780. int rowIndex)
  781. {
  782. var IRow = sheet.CreateRow(rowIndex);
  783. IRow.Height = 20 * 20;
  784. for (var i = 0; i < name.Count; i++)
  785. {
  786. sheet.SetColumnWidth(i + 1, columsWidth[i] * 256);
  787. var Icell = IRow.CreateCell(i + 1);
  788. Icell.SetCellValue(name[i]);
  789. var style = CenterStyle(hssfworkbook);
  790. style.BorderTop =BorderStyle.Medium;
  791. style.BorderBottom = BorderStyle.Medium;
  792. style.BorderLeft = BorderStyle.Medium;
  793. style.BorderRight =BorderStyle.Medium;
  794. var font = ContextFont(hssfworkbook);
  795. //使用SetFont方法将字体样式添加到单元格样式中
  796. style.SetFont(font);
  797. //将新的样式赋给单元格
  798. Icell.CellStyle = style;
  799. }
  800. }
  801. private void setData(ISheet sheet, HSSFWorkbook hssfworkbook, ref int index)
  802. {
  803. var index1 = index;
  804. var data = EntityHelper.GetData<LocationInfo>(
  805. "Core.LgMes.Server.LgDeviceManager.StorageManage.GetStorageLocationInfoNew",
  806. new[] { uceStorageNo.SelectedItem.DataValue }, ob) as List<LocationInfo> ;
  807. if ((data != null) && data.Any())
  808. {
  809. data.Where(p=>(p.ActCount == null) || (p.ActCount <= 0)).Distinct().ToList()
  810. .ForEach(
  811. p =>
  812. {
  813. var IRow = sheet.CreateRow(index1++);
  814. IRow.Height = 20 * 20;
  815. for (var i = 0; i < 6; i++)
  816. {
  817. var Icell = IRow.CreateCell(i + 1);
  818. Icell.SetCellType(CellType.String);
  819. if (i == 0)
  820. {
  821. Icell.SetCellValue(p.LocationNo);
  822. }
  823. if (i == 1)
  824. {
  825. Icell.SetCellValue(p.LocationName);
  826. }
  827. if (i == 2)
  828. {
  829. Icell.SetCellValue(p.AreaNo);
  830. }
  831. if (i == 3)
  832. {
  833. Icell.SetCellValue(p.ColNo);
  834. }
  835. if (i == 4)
  836. {
  837. Icell.SetCellValue(p.RowNo);
  838. }
  839. if (i == 5)
  840. {
  841. Icell.SetCellValue(p.IsProcess);
  842. }
  843. // var style = i <= 2 ? textStyle(hssfworkbook) : numStyle(hssfworkbook);
  844. // style.BorderTop = BorderStyle.Thin;
  845. // style.BorderBottom = BorderStyle.Thin;
  846. // style.BorderLeft = i == 0 ? BorderStyle.Medium : BorderStyle.Thin;
  847. // style.BorderRight = i == 5 ? BorderStyle.Medium : BorderStyle.Thin;
  848. // var font = ContextFont(hssfworkbook);
  849. // //使用SetFont方法将字体样式添加到单元格样式中
  850. //// style.SetFont(font);
  851. // //将新的样式赋给单元格
  852. // Icell.CellStyle = style;
  853. }
  854. }
  855. );
  856. index = index1;
  857. }
  858. }
  859. private static IFont ContextFont(HSSFWorkbook hssfworkbook)
  860. {
  861. //新建一个字体样式对象
  862. var font = hssfworkbook.CreateFont();
  863. font.FontName = "宋体";
  864. font.FontHeightInPoints = 12;
  865. //设置字体加粗样式
  866. font.Boldweight = (short)FontBoldWeight.Bold;
  867. return font;
  868. }
  869. #endregion
  870. }
  871. }