CtrlXl.cs 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366
  1. using DevExpress.XtraEditors;
  2. using DevExpress.XtraScheduler;
  3. using DxHelper;
  4. using ExtensionsDev;
  5. using System;
  6. using System.Collections.Generic;
  7. using System.Diagnostics;
  8. using System.Linq;
  9. using System.Threading.Tasks;
  10. using System.Windows.Forms;
  11. using DW5S.App.CorTools;
  12. using DW5S.DTO;
  13. using DW5S.Entity;
  14. using DW5S.Repostory;
  15. using Serilog;
  16. using static DevExpress.Xpo.Helpers.AssociatedCollectionCriteriaHelper;
  17. using DW5S.Service;
  18. using DW5S.ViewModel;
  19. using XdCxRhDW5S.ViewModel;
  20. namespace DW5S.App.UserControl
  21. {
  22. public partial class CtrlXl : DevExpress.XtraEditors.XtraUserControl
  23. {
  24. List<XlViewModel> list = new List<XlViewModel>();
  25. int maxCount = 0;
  26. int maxPage = 0;
  27. int currentPage = 1;
  28. int? satCode = null;
  29. public CtrlXl()
  30. {
  31. InitializeComponent();
  32. this.layoutControl1.UseDefault();
  33. btnOpen.UseChooseFile().UseDoubleClickToSelectAll();
  34. }
  35. private async void TxtSat_EditValueChanged(object sender, EventArgs e)
  36. {
  37. var sat = txtSat.EditValue as SatViewModel;
  38. satCode = sat?.SatCode;
  39. var unitOfWork = IocContainer.UnitOfWork;
  40. var repsXl = unitOfWork.Of<XlInfo>() as XlRepository;
  41. this.maxCount = await repsXl.GetCount(satCode);
  42. var countPerPage = Convert.ToInt32(txtCountPerPage.Text);
  43. this.maxPage = maxCount / countPerPage;
  44. if (maxCount % countPerPage != 0)
  45. maxPage++;
  46. currentPage = 1;
  47. dataNavigator1.TextStringFormat = $"第{1}页/共{maxPage}页";
  48. await LoadPageData(1);
  49. }
  50. private async void CtrlXl_Load(object sender, EventArgs e)
  51. {
  52. var unitOfWork = IocContainer.UnitOfWork;
  53. var repsXl = unitOfWork.Of<XlInfo>() as XlRepository;
  54. var sat = await repsXl.GetAllSat();
  55. txtSat.UseDefault("不限制", true).SetData(sat.To<List<SatViewModel>>(), displayField: nameof(SatViewModel.Sat)).UseDoubleClickToSelectAll();
  56. gridXl.UseDefault(list).UseRowNumber().UseDeleteAsync<XlViewModel>(Del)
  57. .UseClearAsync<XlViewModel>(Clear).UseExportXlsx()
  58. .AddMenu("星历推算", SvgHelper.LoadFromFile("Image\\XlCalc.svg"), () =>
  59. {
  60. var ids = gridView1.GetSelectedRows();
  61. if (ids.Length <= 0)
  62. {
  63. XtraMessageBox.Show("请选择需要星历推算的数据信息!");
  64. return;
  65. }
  66. var item = gridView1.GetRow(ids[0]) as XlViewModel;
  67. XlCalculateForm form = new XlCalculateForm(item.TwoLine);
  68. form.ShowDialog();
  69. })
  70. .AddMenu("刷新数据", SvgHelper.CreateRefresh(), async () =>
  71. {
  72. currentPage = 1;
  73. dataNavigator1.Buttons.First.Enabled = false;
  74. dataNavigator1.Buttons.PrevPage.Enabled = false;
  75. dataNavigator1.Buttons.Last.Enabled = true;
  76. dataNavigator1.Buttons.NextPage.Enabled = true;
  77. dataNavigator1.TextStringFormat = $"第{currentPage}页/共{maxPage}页";
  78. await LoadPageData(currentPage);
  79. });
  80. await LoadData(1);
  81. dataNavigator1.TextStringFormat = $"第{currentPage}页/共{maxPage}页";
  82. dataNavigator1.DataSource = list;
  83. dataNavigator1.Buttons.First.Enabled = false;
  84. dataNavigator1.Buttons.PrevPage.Enabled = false;
  85. }
  86. public async Task LoadData(int currentPage)
  87. {
  88. try
  89. {
  90. var unitOfWork = IocContainer.UnitOfWork;
  91. var repsXl = unitOfWork.Of<XlInfo>() as XlRepository;
  92. this.maxCount = await repsXl.GetCount(satCode);
  93. var countPerPage = Convert.ToInt32(txtCountPerPage.Text);
  94. this.maxPage = maxCount / countPerPage;
  95. if (maxCount % countPerPage != 0)
  96. maxPage++;
  97. await LoadPageData(1);
  98. }
  99. catch (Exception ex)
  100. {
  101. string msg = "加载星历信息异常";
  102. IocContainer.Logger.Error(ex, msg);
  103. DxHelper.MsgBoxHelper.ShowError(msg);
  104. }
  105. }
  106. private async Task LoadPageData(int currentPage)
  107. {
  108. var unitOfWork = IocContainer.UnitOfWork;
  109. var repsXl = unitOfWork.Of<XlInfo>() as XlRepository;
  110. var dtResult = await repsXl.GetPageAsync(currentPage, Convert.ToInt32(txtCountPerPage.Text), satCode);
  111. list.Clear();
  112. list.AddRange(dtResult.To<List<XlViewModel>>());
  113. gridView1.RefreshData();
  114. if (maxPage == 1)
  115. {
  116. dataNavigator1.Buttons.First.Enabled = false;
  117. dataNavigator1.Buttons.PrevPage.Enabled = false;
  118. dataNavigator1.Buttons.Last.Enabled = false;
  119. dataNavigator1.Buttons.NextPage.Enabled = false;
  120. }
  121. }
  122. private async void btnImp_Click(object sender, EventArgs e)
  123. {
  124. this.layoutControl1.Enabled = false;
  125. if (string.IsNullOrEmpty(btnOpen.Text))
  126. {
  127. DxHelper.MsgBoxHelper.ShowInfo($"请选择星历文件");
  128. this.layoutControl1.Enabled = true;
  129. return;
  130. }
  131. string file;
  132. try
  133. {
  134. file = await HttpHelper.UploadFileAsync(btnOpen.Text);
  135. }
  136. catch (Exception ex)
  137. {
  138. layoutControl1.Enabled = true;
  139. string msg = "上传星历文件异常";
  140. IocContainer.Logger.Error(ex, msg);
  141. DxHelper.MsgBoxHelper.ShowError(msg);
  142. return;
  143. }
  144. try
  145. {
  146. XlImportDto dto = new XlImportDto() { File = file };
  147. var result = await HttpHelper.PostRequestAsync<RecordRes>(SysConfig.GetUrl("Xl/ImportTle"), dto);
  148. if (result.code == 200)
  149. {
  150. DxHelper.MsgBoxHelper.ShowInfo($"星历导入成功.共导入{result.data.Count}条");
  151. await LoadData(1);
  152. }
  153. else
  154. {
  155. IocContainer.Logger.Error(result.msg);
  156. DxHelper.MsgBoxHelper.ShowError(result.msg);
  157. }
  158. }
  159. catch (Exception ex)
  160. {
  161. string msg = "星历导入异常";
  162. IocContainer.Logger.Error(ex, msg);
  163. DxHelper.MsgBoxHelper.ShowError(msg);
  164. }
  165. this.layoutControl1.Enabled = true;
  166. }
  167. private async Task<bool> Del(List<XlViewModel> list)
  168. {
  169. try
  170. {
  171. this.Enabled = false;
  172. var unitOfWork = IocContainer.UnitOfWork;
  173. var repsXl = unitOfWork.Of<XlInfo>();
  174. await repsXl.DeleteAsync(list.To<List<XlInfo>>());
  175. await unitOfWork.SaveAsync();
  176. await LoadData(1);
  177. return true;
  178. }
  179. catch (Exception ex)
  180. {
  181. string msg = "删除选中的星历时异常";
  182. IocContainer.Logger.Error(ex, msg);
  183. DxHelper.MsgBoxHelper.ShowError(msg);
  184. return false;
  185. }
  186. finally
  187. {
  188. this.Enabled = true;
  189. }
  190. }
  191. private async Task<bool> Clear(List<XlViewModel> list)
  192. {
  193. try
  194. {
  195. this.Enabled = false;
  196. var unitOfWork = IocContainer.UnitOfWork;
  197. var repsXl = unitOfWork.Of<XlInfo>();
  198. await repsXl.DeleteAsync(list.To<List<XlInfo>>());
  199. await unitOfWork.SaveAsync();
  200. await LoadData(1);
  201. return true;
  202. }
  203. catch (Exception ex)
  204. {
  205. string msg = "清空星历时异常";
  206. IocContainer.Logger.Error(ex, msg);
  207. DxHelper.MsgBoxHelper.ShowError(msg);
  208. return false;
  209. }
  210. finally
  211. {
  212. this.Enabled = true;
  213. }
  214. }
  215. private async void dataNavigator1_ButtonClick(object sender, NavigatorButtonClickEventArgs e)
  216. {
  217. if (e.Button.ButtonType == NavigatorButtonType.First)
  218. {
  219. currentPage = 1;
  220. dataNavigator1.Buttons.First.Enabled = false;
  221. dataNavigator1.Buttons.PrevPage.Enabled = false;
  222. dataNavigator1.Buttons.Last.Enabled = true;
  223. dataNavigator1.Buttons.NextPage.Enabled = true;
  224. }
  225. else if (e.Button.ButtonType == NavigatorButtonType.Last)
  226. {
  227. currentPage = maxPage;
  228. dataNavigator1.Buttons.Last.Enabled = false;
  229. dataNavigator1.Buttons.NextPage.Enabled = false;
  230. dataNavigator1.Buttons.First.Enabled = true;
  231. dataNavigator1.Buttons.PrevPage.Enabled = true;
  232. }
  233. else if (e.Button.ButtonType == NavigatorButtonType.NextPage)
  234. {
  235. currentPage++;
  236. dataNavigator1.Buttons.First.Enabled = true;
  237. dataNavigator1.Buttons.PrevPage.Enabled = true;
  238. if (currentPage >= maxPage)
  239. {
  240. dataNavigator1.Buttons.Last.Enabled = false;
  241. dataNavigator1.Buttons.NextPage.Enabled = false;
  242. }
  243. else
  244. {
  245. dataNavigator1.Buttons.Last.Enabled = true;
  246. dataNavigator1.Buttons.NextPage.Enabled = true;
  247. }
  248. }
  249. else if (e.Button.ButtonType == NavigatorButtonType.PrevPage)
  250. {
  251. currentPage--;
  252. dataNavigator1.Buttons.Last.Enabled = true;
  253. dataNavigator1.Buttons.NextPage.Enabled = true;
  254. if (currentPage == 1)
  255. {
  256. dataNavigator1.Buttons.First.Enabled = false;
  257. dataNavigator1.Buttons.PrevPage.Enabled = false;
  258. }
  259. }
  260. await LoadPageData(currentPage);
  261. dataNavigator1.TextStringFormat = $"第{currentPage}页/共{maxPage}页";
  262. }
  263. private async void btnGo_Click(object sender, EventArgs e)
  264. {
  265. int.TryParse(txtGoPage.Text, out int _currentPage);
  266. if (_currentPage > maxPage)
  267. {
  268. _currentPage = maxPage;
  269. }
  270. if (_currentPage > 0)
  271. {
  272. currentPage = _currentPage;
  273. if (currentPage == 1 && currentPage < maxPage)
  274. {
  275. dataNavigator1.Buttons.First.Enabled = false;
  276. dataNavigator1.Buttons.PrevPage.Enabled = false;
  277. dataNavigator1.Buttons.Last.Enabled = true;
  278. dataNavigator1.Buttons.NextPage.Enabled = true;
  279. }
  280. else if (currentPage == 1 && currentPage == maxPage)
  281. {
  282. dataNavigator1.Buttons.First.Enabled = false;
  283. dataNavigator1.Buttons.PrevPage.Enabled = false;
  284. dataNavigator1.Buttons.First.Enabled = false;
  285. dataNavigator1.Buttons.PrevPage.Enabled = false;
  286. }
  287. else if (currentPage == maxPage)
  288. {
  289. dataNavigator1.Buttons.First.Enabled = true;
  290. dataNavigator1.Buttons.PrevPage.Enabled = true;
  291. dataNavigator1.Buttons.Last.Enabled = false;
  292. dataNavigator1.Buttons.NextPage.Enabled = false;
  293. if (dataNavigator1.Position == 0)
  294. dataNavigator1.Position = 1;
  295. }
  296. else
  297. {
  298. dataNavigator1.Buttons.First.Enabled = true;
  299. dataNavigator1.Buttons.PrevPage.Enabled = true;
  300. dataNavigator1.Buttons.Last.Enabled = true;
  301. dataNavigator1.Buttons.NextPage.Enabled = true;
  302. dataNavigator1.Position = 1;
  303. }
  304. dataNavigator1.TextStringFormat = $"第{currentPage}页/共{maxPage}页";
  305. await LoadPageData(currentPage);
  306. }
  307. }
  308. private async void txtCountPerPage_EditValueChanged(object sender, EventArgs e)
  309. {
  310. int.TryParse(txtCountPerPage.Text, out int countPerPage);
  311. if (countPerPage > 0)
  312. {
  313. this.maxPage = maxCount / countPerPage;
  314. if (maxCount % countPerPage != 0)
  315. maxPage++;
  316. if (currentPage > maxPage)
  317. currentPage = maxPage;
  318. if (currentPage == 1 && currentPage < maxPage)
  319. {
  320. dataNavigator1.Buttons.First.Enabled = false;
  321. dataNavigator1.Buttons.PrevPage.Enabled = false;
  322. dataNavigator1.Buttons.Last.Enabled = true;
  323. dataNavigator1.Buttons.NextPage.Enabled = true;
  324. }
  325. else if (currentPage == 1 && currentPage == maxPage)
  326. {
  327. dataNavigator1.Buttons.First.Enabled = false;
  328. dataNavigator1.Buttons.PrevPage.Enabled = false;
  329. dataNavigator1.Buttons.First.Enabled = false;
  330. dataNavigator1.Buttons.PrevPage.Enabled = false;
  331. }
  332. else if (currentPage == maxPage)
  333. {
  334. dataNavigator1.Buttons.First.Enabled = true;
  335. dataNavigator1.Buttons.PrevPage.Enabled = true;
  336. dataNavigator1.Buttons.Last.Enabled = false;
  337. dataNavigator1.Buttons.NextPage.Enabled = false;
  338. }
  339. else
  340. {
  341. dataNavigator1.Buttons.First.Enabled = true;
  342. dataNavigator1.Buttons.PrevPage.Enabled = true;
  343. dataNavigator1.Buttons.Last.Enabled = true;
  344. dataNavigator1.Buttons.NextPage.Enabled = true;
  345. dataNavigator1.Position = 1;
  346. }
  347. dataNavigator1.TextStringFormat = $"第{currentPage}页/共{maxPage}页";
  348. await LoadPageData(currentPage);
  349. }
  350. }
  351. }
  352. }