GatherDatas.razor.cs 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419
  1. using aipadmin;
  2. using AIPlatform.Protocol.Entities;
  3. using AIPlatform.Protocol.Model;
  4. using AIPlatform.Protocol.Utilities;
  5. using aipmgr.Models;
  6. using aipmgr.Shared;
  7. using aipmgr.Utilities;
  8. using BootstrapBlazor.Components;
  9. using System.ComponentModel.DataAnnotations;
  10. using System.Diagnostics.CodeAnalysis;
  11. namespace aipmgr.Pages
  12. {
  13. public sealed partial class GatherDatas
  14. {
  15. [NotNull]
  16. private Table<GatherDataModel>? GatherDataTable { get; set; }
  17. private static List<int> PageItemsSource = new List<int> { 10, 20 };
  18. private ItemChangedType _changedType;
  19. [NotNull]
  20. private MessageBase? _messageBaseRef { get; set; }
  21. private GatherDataModel SearchModel { get; set; } = new GatherDataModel();
  22. private DateTimeRangeValue SettlementTimeRange { get; set; } = new();
  23. [Required(ErrorMessage = "{0}不能为空")]
  24. private DateTimeRangeValue GatherTimeRange { get; set; } = new();
  25. [NotNull]
  26. private List<SelectedItem>? _organizationItems { get; set; }
  27. [NotNull]
  28. private List<SelectedItem>? _gathererItems { get; set; }
  29. [NotNull]
  30. private List<SelectedItem>? _categoryItems { get; set; }
  31. [NotNull]
  32. private Modal? _createOrEditModal { get; set; }
  33. [NotNull]
  34. private GatherDataModel? _currentGatherData { get; set; }
  35. [NotNull]
  36. private string? _title { get; set; }
  37. protected override async Task OnInitializedAsync()
  38. {
  39. await base.OnInitializedAsync();
  40. _organizationItems = new List<SelectedItem>();
  41. _gathererItems = new List<SelectedItem>();
  42. _categoryItems = new List<SelectedItem>();
  43. _currentGatherData = new GatherDataModel();
  44. var organizations = await AdminManager.Shared.GetOrganizationsAsync();
  45. _organizationItems = organizations.Select(x => new SelectedItem
  46. {
  47. Value = x.Id.ToString(),
  48. Text = x.Name,
  49. }).ToList();
  50. }
  51. private async Task OnOrganizationChanged(SelectedItem item)
  52. {
  53. try
  54. {
  55. await LoadingManager.OpenAsync();
  56. _currentGatherData.OrganizationName = item.Text;
  57. if (_currentGatherData.OrganizationId == 0)
  58. {
  59. _categoryItems.Clear();
  60. _currentGatherData.CategoryId = 0;
  61. _currentGatherData.CategoryName = null;
  62. _currentGatherData.GathererId = 0;
  63. _currentGatherData.GathererName = null;
  64. }
  65. else if (_currentGatherData.OrganizationId > 0)
  66. {
  67. _categoryItems.Clear();
  68. var imageCategories = await AdminManager.Shared.GetImageCategoriesByLevelAsync(CategoryLevel.MainCategory);
  69. if (imageCategories != null)
  70. {
  71. foreach (var imageCategory in imageCategories)
  72. {
  73. var selectItem = new SelectedItem
  74. {
  75. Value = imageCategory.Id.ToString(),
  76. Text = imageCategory.Name,
  77. GroupName = "图像大类",
  78. };
  79. _categoryItems.Add(selectItem);
  80. }
  81. }
  82. var gatherCategories = await AdminManager.Shared.GetGatherCategoriesByOrganizationIdAsync(_currentGatherData.OrganizationId);
  83. if (gatherCategories != null)
  84. {
  85. foreach (var gatherCategory in gatherCategories)
  86. {
  87. var selectItem = new SelectedItem
  88. {
  89. Value = gatherCategory.Id.ToString(),
  90. Text = gatherCategory.Name,
  91. GroupName = "采集大类",
  92. };
  93. _categoryItems.Add(selectItem);
  94. }
  95. }
  96. _categoryItems.Insert(0, new SelectedItem("0", "请选择..."));
  97. }
  98. }
  99. catch (Exception ex)
  100. {
  101. await _messageBaseRef.ShowMessageBaseAsync($"加载采集大类失败,错误:{ex.Translate()}");
  102. }
  103. finally
  104. {
  105. StateHasChanged();
  106. await LoadingManager.CloseAsync();
  107. }
  108. }
  109. private async Task OnGatherCategoryChanged(SelectedItem item)
  110. {
  111. try
  112. {
  113. await LoadingManager.OpenAsync();
  114. _currentGatherData.CategoryName = item.Text;
  115. if (_currentGatherData.CategoryId == 0)
  116. {
  117. _gathererItems.Clear();
  118. _currentGatherData.GathererId = 0;
  119. _currentGatherData.GathererName = null;
  120. }
  121. else
  122. {
  123. if (item.GroupName == "图像大类")
  124. {
  125. var imageCategory = await AdminManager.Shared.GetImageCategoryAsync(_currentGatherData.CategoryId);
  126. _gathererItems = imageCategory.Gatherers.Select(x => new SelectedItem
  127. {
  128. Value = x.Id.ToString(),
  129. Text = x.Name
  130. }).ToList();
  131. _currentGatherData.CategoryType = CategoryType.ImageCategory;
  132. }
  133. else if (item.GroupName == "采集大类")
  134. {
  135. var gatherCategory = await AdminManager.Shared.GetGatherCategoryByIdAsync(_currentGatherData.CategoryId);
  136. _gathererItems = gatherCategory.Gatherers.Select(x => new SelectedItem
  137. {
  138. Value = x.Id.ToString(),
  139. Text = x.Name
  140. }).ToList();
  141. _currentGatherData.CategoryType = CategoryType.GatherCategory;
  142. }
  143. _gathererItems.Insert(0, new SelectedItem("0", "请选择..."));
  144. }
  145. }
  146. catch (Exception ex)
  147. {
  148. await _messageBaseRef.ShowMessageBaseAsync($"加载采集成员失败,错误:{ex.Translate()}");
  149. }
  150. finally
  151. {
  152. StateHasChanged();
  153. await LoadingManager.CloseAsync();
  154. }
  155. }
  156. private async Task OnGatherChanged(SelectedItem item)
  157. {
  158. try
  159. {
  160. await LoadingManager.OpenAsync();
  161. _currentGatherData.GathererName = item.Text;
  162. }
  163. catch (Exception ex)
  164. {
  165. await _messageBaseRef.ShowMessageBaseAsync($"加载采集成员失败,错误:{ex.Translate()}");
  166. }
  167. finally
  168. {
  169. StateHasChanged();
  170. await LoadingManager.CloseAsync();
  171. }
  172. }
  173. private async Task<QueryData<GatherDataModel>> OnSearchModelQueryAsync(QueryPageOptions options)
  174. {
  175. try
  176. {
  177. var organizations = await AdminManager.Shared.GetOrganizationsAsync();
  178. _organizationItems = organizations.Select(x => new SelectedItem
  179. {
  180. Value = x.Id.ToString(),
  181. Text = x.Name
  182. }).ToList();
  183. var searchModel = new SearchGatherDataModel
  184. {
  185. Name = SearchModel.CategoryName,
  186. GathererName = SearchModel.GathererName,
  187. OrganizationId = SearchModel.OrganizationId,
  188. ModelType = SearchModel.ModelType,
  189. Source = SearchModel.Source,
  190. };
  191. if (SettlementTimeRange.Start != DateTime.MinValue)
  192. {
  193. searchModel.SettleStartTime = SettlementTimeRange.Start;
  194. searchModel.SettleEndTime = SettlementTimeRange.End;
  195. }
  196. var pageIndex = options.PageIndex - 1;
  197. var pageSize = options.PageItems;
  198. var count = await AdminManager.Shared.GetGatherDatasCountAsync(searchModel);
  199. var files = await AdminManager.Shared.GetGatherDatasAsync(pageIndex, pageSize, searchModel);
  200. var items = new List<GatherDataModel>();
  201. foreach (var item in files)
  202. {
  203. var vo = MapHelper.Map<GatherDataModel, GatherData>(item);
  204. vo.GathererName = item.Gatherer.Name;
  205. vo.GathererId = item.Gatherer.Id;
  206. vo.CategoryName = item.Category.Name;
  207. vo.CategoryId = item.Category.Id;
  208. vo.CategoryType = item.Category.Type;
  209. vo.OrganizationId = item.Organization.Id;
  210. vo.OrganizationName = item.Organization.Name;
  211. vo.GatherTime.StartTime = item.StartTime.ToLocalTime();
  212. vo.GatherTime.EndTime = item.EndTime.ToLocalTime();
  213. vo.SettlementTime = vo.SettlementTime?.ToLocalTime();
  214. items.Add(vo);
  215. }
  216. return await Task.FromResult(new QueryData<GatherDataModel>()
  217. {
  218. Items = items,
  219. TotalCount = (int)count,
  220. });
  221. }
  222. catch (Exception ex)
  223. {
  224. await _messageBaseRef.ShowMessageBaseAsync($"查询数据失败,错误:{ex.Translate()}");
  225. return await Task.FromResult(new QueryData<GatherDataModel>());
  226. }
  227. }
  228. private async Task OnResetSearchAsync(GatherDataModel item)
  229. {
  230. try
  231. {
  232. if (_organizationItems != null && _organizationItems.Count > 0)
  233. {
  234. item.OrganizationId = long.Parse(_organizationItems.First().Value);
  235. item.OrganizationName = _organizationItems.First().Text;
  236. }
  237. item.CategoryName = null;
  238. item.GathererName = null;
  239. item.ModelType = null;
  240. item.Source = null;
  241. item.SettlementTime = null;
  242. SettlementTimeRange = new DateTimeRangeValue();
  243. }
  244. catch (Exception ex)
  245. {
  246. await _messageBaseRef.ShowMessageBaseAsync($"重置搜索失败,错误:{ex.Translate()}");
  247. }
  248. }
  249. private async Task<GatherDataModel> OnEditAsync(GatherDataModel item)
  250. {
  251. try
  252. {
  253. _changedType = ItemChangedType.Update;
  254. _title = "编辑采集数据";
  255. _currentGatherData = MapHelper.Map<GatherDataModel, GatherDataModel>(item);
  256. GatherTimeRange.Start = item.GatherTime.StartTime.Value;
  257. GatherTimeRange.End = item.GatherTime.EndTime.Value;
  258. StateHasChanged();
  259. await _createOrEditModal.Show();
  260. return item;
  261. }
  262. catch (Exception ex)
  263. {
  264. await _messageBaseRef.ShowMessageBaseAsync($"编辑采集分类失败,错误:{ex.Translate()}");
  265. return item;
  266. }
  267. }
  268. private async Task<GatherDataModel> OnAddAsync()
  269. {
  270. try
  271. {
  272. _changedType = ItemChangedType.Add;
  273. _title = "新建采集分类";
  274. _currentGatherData = new GatherDataModel();
  275. GatherTimeRange = new DateTimeRangeValue();
  276. StateHasChanged();
  277. await _createOrEditModal.Show();
  278. }
  279. catch (Exception ex)
  280. {
  281. await _messageBaseRef.ShowMessageBaseAsync($"新建采集分类失败,错误:{ex.Translate()}");
  282. }
  283. return new GatherDataModel();
  284. }
  285. private async Task OnCloseAsync()
  286. {
  287. await _createOrEditModal.Close();
  288. return;
  289. }
  290. private async void OnConfirmAsync()
  291. {
  292. try
  293. {
  294. await LoadingManager.OpenAsync();
  295. if (GatherTimeRange.Start != DateTime.MinValue)
  296. {
  297. _currentGatherData.GatherTime.StartTime = GatherTimeRange.Start;
  298. _currentGatherData.GatherTime.EndTime = GatherTimeRange.End;
  299. }
  300. if (_currentGatherData.OrganizationId == 0)
  301. {
  302. await _messageBaseRef.ShowMessageBaseAsync("请选择组织!");
  303. return;
  304. }
  305. if (_currentGatherData.CategoryId == 0)
  306. {
  307. await _messageBaseRef.ShowMessageBaseAsync("请选择采集大类!");
  308. return;
  309. }
  310. if (_currentGatherData.GathererId == 0)
  311. {
  312. await _messageBaseRef.ShowMessageBaseAsync("请选择采集人员!");
  313. return;
  314. }
  315. if (string.IsNullOrEmpty(_currentGatherData.ModelType))
  316. {
  317. await _messageBaseRef.ShowMessageBaseAsync("请输入机型!");
  318. return;
  319. }
  320. if (string.IsNullOrEmpty(_currentGatherData.Source))
  321. {
  322. await _messageBaseRef.ShowMessageBaseAsync("请输入机型!");
  323. return;
  324. }
  325. if (_currentGatherData.CollectionQuantity == null || _currentGatherData.CollectionQuantity <= 0)
  326. {
  327. await _messageBaseRef.ShowMessageBaseAsync("请输入正确的数量!");
  328. return;
  329. }
  330. if (_currentGatherData.GatherTime.StartTime == null)
  331. {
  332. await _messageBaseRef.ShowMessageBaseAsync("请选择采集开始时间!");
  333. return;
  334. }
  335. if (_currentGatherData.GatherTime.EndTime == null)
  336. {
  337. await _messageBaseRef.ShowMessageBaseAsync("请选择采集结束时间!");
  338. return;
  339. }
  340. if (_currentGatherData.SettlementTime == null)
  341. {
  342. await _messageBaseRef.ShowMessageBaseAsync("请选择结算时间!");
  343. return;
  344. }
  345. if (_changedType == ItemChangedType.Update)
  346. {
  347. var gatherData = await AdminManager.Shared.GetGatherDataByIdAsync(_currentGatherData.Id);
  348. await AdminManager.Shared.UpdateGatherDataAsync(gatherData.Id,
  349. new CategoryItem
  350. {
  351. Id = _currentGatherData.CategoryId,
  352. Name = _currentGatherData.CategoryName,
  353. Type = _currentGatherData.CategoryType,
  354. },
  355. new EntityBase
  356. {
  357. Id = _currentGatherData.OrganizationId,
  358. Name = _currentGatherData.OrganizationName,
  359. },
  360. new EntityBase
  361. {
  362. Id = _currentGatherData.GathererId,
  363. Name = _currentGatherData.GathererName,
  364. },
  365. _currentGatherData.ModelType, _currentGatherData.Source, _currentGatherData.CollectionQuantity.Value, _currentGatherData.GatherTime.StartTime.Value, _currentGatherData.GatherTime.EndTime.Value, _currentGatherData.SettlementTime.Value);
  366. }
  367. else if (_changedType == ItemChangedType.Add)
  368. {
  369. await AdminManager.Shared.CreateGatherDataAsync(
  370. new CategoryItem
  371. {
  372. Id = _currentGatherData.CategoryId,
  373. Name = _currentGatherData.CategoryName,
  374. Type = _currentGatherData.CategoryType,
  375. },
  376. new EntityBase
  377. {
  378. Id = _currentGatherData.OrganizationId,
  379. Name = _currentGatherData.OrganizationName,
  380. },
  381. new EntityBase
  382. {
  383. Id = _currentGatherData.GathererId,
  384. Name = _currentGatherData.GathererName,
  385. }, _currentGatherData.ModelType, _currentGatherData.Source, _currentGatherData.CollectionQuantity.Value, _currentGatherData.GatherTime.StartTime.Value, _currentGatherData.GatherTime.EndTime.Value, _currentGatherData.SettlementTime.Value);
  386. }
  387. StateHasChanged();
  388. await _createOrEditModal.Close();
  389. await GatherDataTable.QueryAsync();
  390. }
  391. catch (Exception ex)
  392. {
  393. await _messageBaseRef.ShowMessageBaseAsync($"保存失败,错误:{ex.Translate()}");
  394. }
  395. finally
  396. {
  397. await LoadingManager.CloseAsync();
  398. }
  399. }
  400. }
  401. }