CloudBuilder/CloudBuilder.Security.Gui/SecurityMasterEnquiryPage.cs
owenchen 1c0c83af5f ow
2026-05-12 10:09:31 +08:00

469 lines
16 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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();
}
/// <summary>
/// 第一次加载时执行,只执行一次
/// </summary>
public override void FunctionLoaded()
{
try
{
base.FunctionLoaded();
//初始化容器-------------------------------------
securityMasterRequest = ServiceHelper.GetTypeService<SecurityMasterRequest>();
securityMessagePolicy = ServiceHelper.GetTypeService<SecurityMessagePolicy>()!;
//界面初始化
InitGui();
}
catch (ValidatedException ex)
{
ShowMessageBox.ShowInfo(ex.Message);
}
catch (ServiceErrorException ex)
{
ShowMessageBox.ShowError(ex.Message);
}
catch (Exception ex)
{
ShowMessageBox.ShowError(ex.Message);
}
}
/// <summary>
/// 每次从别的界面进入时执行不包括下面的界面切换发生在FunctionLoaded之后
/// 这个是有参数传入,常用于查询界面进入到操作界面发生
/// </summary>
/// <param name="param"></param>
public override void FunctionActivated(object param)
{
base.FunctionActivated(param);
masterCategoryTxt.Focus();
}
/// <summary>
/// 当Page被选中时执行,用于Tab导航的切换没有参数变化跟FunctionActivated有区别
/// </summary>
public override void FunctionSelected()
{
this.ParentAbstractForm.AcceptButton = this.searchBut;
if (!IsDialog)
this.ParentAbstractForm.CancelButton = this.resetBut;
else
this.ParentAbstractForm.CancelButton = this.cancelBut;
masterCategoryTxt.Focus();
}
/// <summary>
/// 控件的初始化
/// </summary>
private void InitGui()
{
//DataGridView初始化不要自动生成列且允许重排列名操作
dataGv.InitColumn(true, true);
//初始化绑定设置
InitBindingContext();
//设置显示模式
SetDisplayMode(true);
InitGridViewPagination();
}
/// <summary>
/// DataGridView分页控件初始化
/// </summary>
private void InitGridViewPagination()
{
searchCriteria = new SecurityMasterSearchCriteria();
gridViewPagination.SetLimit(searchCriteria.limit);
gridViewPagination.OnPaginationChanged += Search;
gridViewPagination.OnPrint += Print;
}
/// <summary>
/// 打印当前查询结果
/// </summary>
private void Print()
{
//設置查詢條件
List<string> searCriteria = new List<string>();
if (!string.IsNullOrEmpty(masterCategoryTxt.Text))
searCriteria.Add(masterCategoryLabel.Text + masterCategoryTxt.Text);
//設置每列的格式
TemplateHeader[] headers = dataGv.GetTemplateHeaders();
//打印Excel
new DataToExcelHelper<SecurityMasterEntity>(null).PrintExcel(this.Parent.Text, this.Parent.Text, searCriteria, headers, securityMasters);
}
/// <summary>
/// 有特殊要求的UI控件初始化设置使用guiOperateHelper管理
/// </summary>
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);
}
}
/// <summary>
/// 与Web同步写法
/// </summary>
/// <returns></returns>
private SecurityMasterSearchCriteria PackSearchCriteria()
{
searchCriteria = new SecurityMasterSearchCriteria();
searchCriteria.limit = gridViewPagination.Limit;
searchCriteria.page = gridViewPagination.CurrentPage;
List<SearchFilter> filters = new List<SearchFilter>();
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<SecurityMasterEntity>(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<SecurityMasterEntity>(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<SecurityMasterEntity>();
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<SecurityMasterEntity>(dataGv.SelectedCells[0].RowIndex);
SecurityMasterEntity[] datas = dataGv.GetSelectedCellsData<SecurityMasterEntity>();
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);
}
}
}
}