using ClosedXML.Excel; using CloudBuilder.Core.DependencyInjection.Form; using CloudBuilder.Core.Report; using CloudBuilder.Core.Service; using CloudBuilder.Gui; using CloudBuilder.Gui.DependencyInjection; using CloudBuilder.Request.Security; using CloudBuilder.Security.Data; using CloudBuilder.Security.Entity; using CloudBuilder.Security.Linkup; using CloudBuilder.Security.Policy; using CloudBuilder.Security.SearchCriteria; using DocumentFormat.OpenXml.Spreadsheet; using Krypton.Toolkit; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Http.Extensions; using Microsoft.Extensions.DependencyInjection; using Microsoft.IdentityModel.Tokens; using Newtonsoft.Json; using System; using System.Collections.Generic; using System.ComponentModel; using System.ComponentModel.DataAnnotations; using System.Data; using System.Drawing; using System.Linq; using System.Net; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace CloudBuilder.Security.Gui { public partial class SecurityMasterEnquiryPage : AbstractPage { private SecurityMasterEntity[] securityMasters = null!; private SecurityMasterSearchCriteria searchCriteria = null!; private BindingContextAttributeProvider provider; private SecurityMasterRequest securityMasterRequest; private SecurityMessagePolicy securityMessagePolicy; //初始化Page,注入容器内,不要在此做任何事情 public SecurityMasterEnquiryPage() { InitializeComponent(); } /// /// 第一次加载时执行,只执行一次 /// public override void FunctionLoaded() { try { base.FunctionLoaded(); //初始化容器------------------------------------- securityMasterRequest = ServiceHelper.GetTypeService(); securityMessagePolicy = ServiceHelper.GetTypeService()!; //界面初始化 InitGui(); } catch (ValidatedException ex) { ShowMessageBox.ShowInfo(ex.Message); } catch (ServiceErrorException ex) { ShowMessageBox.ShowError(ex.Message); } catch (Exception ex) { ShowMessageBox.ShowError(ex.Message); } } /// /// 每次从别的界面进入时执行,不包括下面的界面切换,发生在FunctionLoaded之后 /// 这个是有参数传入,常用于查询界面进入到操作界面发生 /// /// public override void FunctionActivated(object param) { base.FunctionActivated(param); masterCategoryTxt.Focus(); } /// /// 当Page被选中时执行,用于Tab导航的切换,没有参数变化,跟FunctionActivated有区别 /// public override void FunctionSelected() { this.ParentAbstractForm.AcceptButton = this.searchBut; if (!IsDialog) this.ParentAbstractForm.CancelButton = this.resetBut; else this.ParentAbstractForm.CancelButton = this.cancelBut; masterCategoryTxt.Focus(); } /// /// 控件的初始化 /// private void InitGui() { //DataGridView初始化不要自动生成列,且允许重排列名操作 dataGv.InitColumn(true, true); //初始化绑定设置 InitBindingContext(); //设置显示模式 SetDisplayMode(true); InitGridViewPagination(); } /// /// DataGridView分页控件初始化 /// private void InitGridViewPagination() { searchCriteria = new SecurityMasterSearchCriteria(); gridViewPagination.SetLimit(searchCriteria.limit); gridViewPagination.OnPaginationChanged += Search; gridViewPagination.OnPrint += Print; } /// /// 打印当前查询结果 /// private void Print() { //設置查詢條件 List searCriteria = new List(); if (!string.IsNullOrEmpty(masterCategoryTxt.Text)) searCriteria.Add(masterCategoryLabel.Text + masterCategoryTxt.Text); //設置每列的格式 TemplateHeader[] headers = dataGv.GetTemplateHeaders(); //打印Excel new DataToExcelHelper(null).PrintExcel(this.Parent.Text, this.Parent.Text, searCriteria, headers, securityMasters); } /// /// 有特殊要求的UI控件初始化设置,使用guiOperateHelper管理 /// private void InitBindingContext() { InitPermission(); guiOperateHelper = new GuiOperateHelper(); } private void InitPermission() { viewBut.Set(SecurityPermissionPolicy.SecurityMaster, Operate.Find); createBut.Set(SecurityPermissionPolicy.SecurityMaster, Operate.Insert); amendBut.Set(SecurityPermissionPolicy.SecurityMaster, Operate.Update); deleteBut.Set(SecurityPermissionPolicy.SecurityMaster, Operate.Delete); } private void SetDisplayMode(bool enable) { guiOperateHelper.EnableControls(true, this.searchPanel, this.bottomPanel); guiOperateHelper.EnableControls(false, dataGv); if (securityMasters != null) guiOperateHelper.EnableControls(enable, viewBut, amendBut, deleteBut); else guiOperateHelper.EnableControls(false, viewBut, amendBut, deleteBut); //如果是弹出的窗口,不显示 createBut.Visible = !IsDialog; dialogPanel.Visible = IsDialog; operationPanel.Visible = !IsDialog; this.masterCategoryTxt.Focus(); } private void searchBut_Click(object sender, EventArgs e) { try { Search(); } catch (ValidatedException ex) { ShowMessageBox.ShowInfo(ex.Message); } catch (ServiceErrorException ex) { ShowMessageBox.ShowError(ex.Message); } catch (Exception ex) { ShowMessageBox.ShowError(ex.Message); } } /// /// 与Web同步写法 /// /// private SecurityMasterSearchCriteria PackSearchCriteria() { searchCriteria = new SecurityMasterSearchCriteria(); searchCriteria.limit = gridViewPagination.Limit; searchCriteria.page = gridViewPagination.CurrentPage; List filters = new List(); SearchFilter filter = new SearchFilter(); filter.Column = SecurityMasterEntity.DB_MASTER_CATEGORY; filter.Type = SearchFilterTypePolicy.TEXT; filter.Operator = SearchFilterOperatorPolicy.CONTAIN; filter.Value = masterCategoryTxt.GetValue(); filters.Add(filter); filter = new SearchFilter(); filter.Column = SecurityMasterEntity.DB_MASTER_SUBCATEGORY; filter.Type = SearchFilterTypePolicy.TEXT; filter.Operator = SearchFilterOperatorPolicy.CONTAIN; filter.Value = masterSubcategoryTxt.GetValue(); filters.Add(filter); filter = new SearchFilter(); filter.Column = SecurityMasterEntity.DB_MASTER_CODE_ITEM; filter.Type = SearchFilterTypePolicy.TEXT; filter.Operator = SearchFilterOperatorPolicy.CONTAIN; filter.Value = masterCodeItemTxt.GetValue(); filters.Add(filter); filter = new SearchFilter(); filter.Column = SecurityMasterEntity.DB_LOCAL_DESCRIPTION; filter.Type = SearchFilterTypePolicy.TEXT; filter.Operator = SearchFilterOperatorPolicy.CN_CONTAIN; filter.Value = localDescriptionTxt.GetValue(); filters.Add(filter); searchCriteria.Filter = filters.ToArray(); return searchCriteria; } private void Search() { try { var data = securityMasterRequest.FindBySearchCriteria(PackSearchCriteria()); if (data != null) securityMasters = data.Datas; gridViewPagination.SetTotal(data.Total); if (securityMasters == null || securityMasters.Length == 0) { ShowMessageBox.ShowInfo(securityMessagePolicy.ComposeMessage(SecurityMessagePolicy.GUI_WS_RECORD_NOT_FOUND)); guiOperateHelper.ResetControls(this.dataGv); return; } dataGv.SetDataSource(securityMasters); SetDisplayMode(true); } catch (ValidatedException ex) { ShowMessageBox.ShowInfo(ex.Message); } catch (ServiceErrorException ex) { ShowMessageBox.ShowError(ex.Message); } catch (Exception ex) { ShowMessageBox.ShowError(ex.Message); } } private void resetBut_Click(object sender, EventArgs e) { guiOperateHelper.ResetControls(this.mainPanel); //Reset时默认会设置limit为AbstractSearchCriteria.limit,如果不同时,需要重新设置 gridViewPagination.SetLimit(searchCriteria.limit); SetDisplayMode(false); } private void createBut_Click(object sender, EventArgs e) { DisplayPage(GuiDisplayMode.Create, null); } private void DisplayPage(GuiDisplayMode mode, SecurityMasterEntity data) { try { AbstractForm dialog = GetAbstractDialog(typeof(SecurityMasterDialogPage).Name); if (mode == GuiDisplayMode.Create) { if (DialogResult.OK != dialog.ShowCreateDialog()) return; } else if (mode == GuiDisplayMode.Amend) { if (DialogResult.OK != dialog.ShowAmendDialog(data)) return; } else { dialog.ShowViewDialog(data); return; } //masterCategoryTxt.Text = ((SecurityMasterEntity)dialog.OutputData).MasterCategory; //masterSubcategoryTxt.Text = ((SecurityMasterEntity)dialog.OutputData).MasterSubcategory; //masterCodeItemTxt.Text = ((SecurityMasterEntity)dialog.OutputData).MasterCodeItem; Search(); } catch (ValidatedException ex) { ShowMessageBox.ShowInfo(ex.Message); } catch (ServiceErrorException ex) { ShowMessageBox.ShowError(ex.Message); } catch (Exception ex) { ShowMessageBox.ShowError(ex.Message); } } private void viewBut_Click(object sender, EventArgs e) { if (dataGv.RowCount <= 0 || dataGv.SelectedCells.Count <= 0) { ShowMessageBox.ShowInfo(securityMessagePolicy.ComposeMessage(SecurityMessagePolicy.GUI_WS_RECORD_NOT_FOUND)); return; } SecurityMasterEntity data = dataGv.GetRowData(dataGv.SelectedCells[0].RowIndex); DisplayPage(GuiDisplayMode.View, data); } private void amendBut_Click(object sender, EventArgs e) { if (dataGv.RowCount <= 0 || dataGv.SelectedCells.Count <= 0) { ShowMessageBox.ShowInfo(securityMessagePolicy.ComposeMessage(SecurityMessagePolicy.GUI_WS_RECORD_NOT_FOUND)); return; } SecurityMasterEntity data = dataGv.GetRowData(dataGv.SelectedCells[0].RowIndex); DisplayPage(GuiDisplayMode.Amend, data); } private void deleteBut_Click(object sender, EventArgs e) { try { Delete(); } catch (ValidatedException ex) { ShowMessageBox.ShowInfo(ex.Message); } catch (ServiceErrorException ex) { ShowMessageBox.ShowError(ex.Message); } catch (Exception ex) { ShowMessageBox.ShowError(ex.Message); } } private void Delete() { if (dataGv.RowCount <= 0 || dataGv.SelectedCells.Count <= 0) { ShowMessageBox.ShowInfo(securityMessagePolicy.ComposeMessage(SecurityMessagePolicy.GUI_WS_RECORD_NOT_FOUND)); return; } if (DialogResult.Yes != ShowMessageBox.ShowOption(securityMessagePolicy.ComposeMessage(SecurityMessagePolicy.GUI_CONFIRM_DEL_NULL), securityMessagePolicy.ComposeMessage(SecurityMessagePolicy.GUI_DELETE))) return; SecurityMasterEntity[] datas = dataGv.GetSelectedCellsData(); securityMasterRequest.Deletes(datas); ShowMessageBox.ShowInfo(securityMessagePolicy.ComposeMessage(SecurityMessagePolicy.GUI_SUCCEED_DELETED_NULL)); Search(); } private void okBut_Click(object sender, EventArgs e) { try { if (dataGv.RowCount <= 0 || dataGv.SelectedCells.Count <= 0) return; //SecurityMasterEntity data = dataGv.GetRowData(dataGv.SelectedCells[0].RowIndex); SecurityMasterEntity[] datas = dataGv.GetSelectedCellsData(); this.ParentAbstractForm.OutputData = datas; this.ParentAbstractForm.DialogResult = DialogResult.OK; this.ParentAbstractForm.Close(); } catch (ValidatedException ex) { ShowMessageBox.ShowInfo(ex.Message); } catch (ServiceErrorException ex) { ShowMessageBox.ShowError(ex.Message); } catch (Exception ex) { ShowMessageBox.ShowError(ex.Message); } } private void cancelBut_Click(object sender, EventArgs e) { try { this.ParentAbstractForm.DialogResult = DialogResult.Cancel; this.ParentAbstractForm.Close(); } catch (ValidatedException ex) { ShowMessageBox.ShowInfo(ex.Message); } catch (ServiceErrorException ex) { ShowMessageBox.ShowError(ex.Message); } catch (Exception ex) { ShowMessageBox.ShowError(ex.Message); } } private void dataGv_CellDoubleClick(object sender, DataGridViewCellEventArgs e) { try { if (IsDialog) okBut_Click(null, null); else viewBut_Click(null, null); } catch (ValidatedException ex) { ShowMessageBox.ShowInfo(ex.Message); } catch (ServiceErrorException ex) { ShowMessageBox.ShowError(ex.Message); } catch (Exception ex) { ShowMessageBox.ShowError(ex.Message); } } } }