EphListForm.cs 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  1. using DevExpress.Data.Filtering;
  2. using DevExpress.Xpo;
  3. using DevExpress.Xpo.DB;
  4. using DevExpress.XtraEditors;
  5. using Ips.Eph.ResolveUtil;
  6. using Ips.Library.Basic;
  7. using Ips.Library.DxpLib;
  8. using Ips.Library.Entity;
  9. using Ips.Sps.Sats;
  10. using System;
  11. using System.Collections.Generic;
  12. using System.ComponentModel;
  13. using System.Data;
  14. using System.Drawing;
  15. using System.IO;
  16. using System.Linq;
  17. using System.Text;
  18. using System.Threading.Tasks;
  19. using System.Windows.Forms;
  20. using static DevExpress.Utils.Drawing.Helpers.NativeMethods;
  21. namespace Ips.Sps.Ephs
  22. {
  23. public partial class EphListForm : DevExpress.XtraEditors.XtraForm
  24. {
  25. public EphListForm()
  26. {
  27. InitializeComponent();
  28. txtStartTime.UseTimeEdit();
  29. txtEndTime.UseTimeEdit();
  30. txtEphType.Properties.AddEnum<EphType>();
  31. _ephManager = EphManager.Default;
  32. }
  33. Session _session;
  34. XPServerCollectionSource _ephListSource;
  35. EphManager _ephManager;
  36. List<Sat> _satList;
  37. private void EphListForm_Load(object sender, EventArgs e)
  38. {
  39. Reload();
  40. BindSatList();
  41. }
  42. private void Reload()
  43. {
  44. _session = new Session();
  45. _ephListSource = new XPServerCollectionSource(_session, typeof(Eph));
  46. _ephListSource.DefaultSorting = $"{nameof(Eph.StartTime)} desc,{nameof(Eph.SatNum)} asc";
  47. _ephListSource.FixedFilterCriteria = CreateFilter();
  48. grdEphList.DataSource = _ephListSource;
  49. }
  50. private void BindSatList()
  51. {
  52. _satList = _session.Query<Sat>().Where(m => m.Enable).OrderBy(m => m.SatNum).ToList();
  53. txtSatNum.Properties.Items.AddRange(_satList);
  54. }
  55. private void _ephListSource_ResolveSession(object sender, ResolveSessionEventArgs e)
  56. {
  57. e.Session = _session;
  58. }
  59. private void _ephListSource_DismissSession(object sender, ResolveSessionEventArgs e)
  60. {
  61. IDisposable session = e.Session as IDisposable;
  62. if (session != null)
  63. {
  64. session.Dispose();
  65. }
  66. }
  67. private void btnImport_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
  68. {
  69. EphImportForm importForm = new EphImportForm();
  70. if (importForm.ShowDialog() == DialogResult.OK)
  71. {
  72. Reload();
  73. }
  74. }
  75. private void btnDelete_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
  76. {
  77. var ephIds = gvEphList.GetSelectRowCellValue<int>(colId);
  78. if (ephIds.Length == 0) return;
  79. if (MsgHelper.ShowConfirm("确定删除选中的记录吗?"))
  80. {
  81. _ephManager.DeleteEph(ephIds);
  82. Reload();
  83. }
  84. }
  85. private void btnCalc_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
  86. {
  87. EphCalcForm calcForm = new EphCalcForm();
  88. calcForm.ShowDialog();
  89. }
  90. private void gvEphList_MouseDown(object sender, MouseEventArgs e)
  91. {
  92. if (e.Button == MouseButtons.Right)
  93. {
  94. popMenu.ShowPopup(Cursor.Position);
  95. }
  96. }
  97. private void btnQuery_Click(object sender, EventArgs e)
  98. {
  99. Reload();
  100. }
  101. private CriteriaOperator CreateFilter()
  102. {
  103. List<CriteriaOperator> filterList = new List<CriteriaOperator>();
  104. int satNum = 0;
  105. if (txtSatNum.EditValue is Sat sat)
  106. {
  107. satNum = sat.SatNum;
  108. }
  109. else if (int.TryParse(txtSatNum.Text.Trim(), out int satNumVal))
  110. {
  111. satNum = satNumVal;
  112. }
  113. if (satNum > 0)
  114. {
  115. filterList.Add(CriteriaOperator.FromLambda<Eph>(m => m.SatNum == satNum));
  116. }
  117. if (txtEphType.EditValue != null)
  118. {
  119. var ephType = (EphType)txtEphType.EditValue;
  120. filterList.Add(CriteriaOperator.FromLambda<Eph>(m => m.EphType == ephType));
  121. }
  122. if (txtStartTime.DateTime != DateTime.MinValue)
  123. {
  124. filterList.Add(CriteriaOperator.FromLambda<Eph>(m => m.StartTime >= txtStartTime.DateTime));
  125. }
  126. if (txtEndTime.DateTime != DateTime.MinValue)
  127. {
  128. filterList.Add(CriteriaOperator.FromLambda<Eph>(m => m.StartTime <= txtEndTime.DateTime));
  129. }
  130. return CriteriaOperator.And(filterList);
  131. }
  132. }
  133. }