2024-05-08 10:17:02 +08:00
using BLL ;
using BLL.Common ;
using Model ;
2025-10-09 10:39:49 +08:00
using Org.BouncyCastle.Tls.Crypto ;
2024-05-08 10:17:02 +08:00
using System ;
using System.Collections.Generic ;
using System.Data ;
using System.Data.SqlClient ;
using System.IO ;
using System.Linq ;
namespace FineUIPro.Web.BaseInfo
{
public partial class Department : PageBase
{
#region 加 载
/// <summary>
/// 加载页面
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Page_Load ( object sender , EventArgs e )
{
if ( ! IsPostBack )
{
GetButtonPower ( ) ; //按钮权限
2025-10-09 10:39:49 +08:00
//部门领导
2024-05-08 10:17:02 +08:00
drpDepartLeader . DataTextField = "UserName" ;
drpDepartLeader . DataValueField = "UserId" ;
this . drpDepartLeader . DataSource = BLL . Sys_UserService . GetUserList ( ) ;
this . drpDepartLeader . DataBind ( ) ;
Funs . FineUIPleaseSelect ( this . drpDepartLeader ) ;
this . drpDepartLeader . SelectedIndex = 0 ;
2025-10-09 10:39:49 +08:00
//部门代理人
drpDelegatedRepresentative . DataTextField = "UserName" ;
drpDelegatedRepresentative . DataValueField = "UserId" ;
this . drpDelegatedRepresentative . DataSource = BLL . Sys_UserService . GetUserList ( ) ;
this . drpDelegatedRepresentative . DataBind ( ) ;
Funs . FineUIPleaseSelect ( this . drpDelegatedRepresentative ) ;
this . drpDelegatedRepresentative . SelectedIndex = 0 ;
2024-05-08 10:17:02 +08:00
ddlPageSize . SelectedValue = Grid1 . PageSize . ToString ( ) ;
// 绑定表格
BindGrid ( ) ;
}
}
/// <summary>
/// 绑定数据
/// </summary>
private void BindGrid ( )
{
2025-10-09 10:39:49 +08:00
string strSql = @ "SELECT dep.DepartId,dep.DepartCode,dep.DepartName,dep.DepartLeader,u.UserName,dep.DelegatedRepresentative,r.UserName as DelegatedRepresentativeName
2024-05-08 10:17:02 +08:00
FROM dbo . Base_Depart AS dep
LEFT JOIN dbo . Sys_User AS u ON u . UserId = dep . DepartLeader
2025-10-09 10:39:49 +08:00
LEFT JOIN dbo . Sys_User AS r ON r . UserId = dep . DelegatedRepresentative
2024-05-08 10:17:02 +08:00
Where 1 = 1 ";
// 2.获取当前分页数据
List < SqlParameter > listStr = new List < SqlParameter > ( ) ;
if ( ! string . IsNullOrEmpty ( this . txtDepCode . Text . Trim ( ) ) )
{
strSql + = " AND dep.DepartCode LIKE @departCode" ;
listStr . Add ( new SqlParameter ( "@departCode" , "%" + this . txtDepCode . Text . Trim ( ) + "%" ) ) ;
}
SqlParameter [ ] parameter = listStr . ToArray ( ) ;
DataTable tb = SQLHelper . GetDataTableRunText ( strSql , parameter ) ;
Grid1 . RecordCount = tb . Rows . Count ;
var table = this . GetPagedDataTable ( Grid1 , tb ) ;
Grid1 . DataSource = table ;
Grid1 . DataBind ( ) ;
}
protected void Text_TextChanged ( object sender , EventArgs e )
{
BindGrid ( ) ;
}
/// <summary>
/// 改变索引事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Grid1_PageIndexChange ( object sender , GridPageEventArgs e )
{
Grid1 . PageIndex = e . NewPageIndex ;
BindGrid ( ) ;
}
#endregion
#region 分 页 下 拉 选 择
/// <summary>
/// 分页下拉选择
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void ddlPageSize_SelectedIndexChanged ( object sender , EventArgs e )
{
Grid1 . PageSize = Convert . ToInt32 ( ddlPageSize . SelectedValue ) ;
BindGrid ( ) ;
}
#endregion
#region 删 除
/// <summary>
/// 删除
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnDelete_Click ( object sender , EventArgs e )
{
BLL . DepartService . DeleteDepartById ( hfFormID . Text ) ;
BLL . Sys_LogService . AddLog ( this . CurrUser . UserId , "Delete department" ) ;
// 重新绑定表格,并模拟点击[新增按钮]
BindGrid ( ) ;
//PageContext.RegisterStartupScript("onNewButtonClick();");
}
/// <summary>
/// 右键删除事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnMenuDelete_Click ( object sender , EventArgs e )
{
this . DeleteData ( ) ;
}
/// <summary>
/// 删除方法
/// </summary>
private void DeleteData ( )
{
if ( Grid1 . SelectedRowIndexArray . Length > 0 )
{
foreach ( int rowIndex in Grid1 . SelectedRowIndexArray )
{
string rowID = Grid1 . DataKeys [ rowIndex ] [ 0 ] . ToString ( ) ;
BLL . DepartService . DeleteDepartById ( rowID ) ;
BLL . Sys_LogService . AddLog ( this . CurrUser . UserId , "Delete department" ) ;
}
BindGrid ( ) ;
//PageContext.RegisterStartupScript("onNewButtonClick();");
}
}
#endregion
#region 编 辑
/// <summary>
/// 右键编辑事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnMenuEdit_Click ( object sender , EventArgs e )
{
this . EditData ( ) ;
}
/// <summary>
/// 编辑数据方法
/// </summary>
private void EditData ( )
{
if ( Grid1 . SelectedRowIndexArray . Length = = 0 )
{
Alert . ShowInTop ( "Please select at least one record! " , MessageBoxIcon . Warning ) ;
return ;
}
string Id = Grid1 . SelectedRowID ;
var depart = BLL . DepartService . GetDepartById ( Id ) ;
if ( depart ! = null )
{
this . txtDepartCode . Text = depart . DepartCode ;
this . txtDepartName . Text = depart . DepartName ;
this . txtRemark . Text = depart . Remark ;
if ( ! string . IsNullOrEmpty ( depart . DepartLeader ) )
{
this . drpDepartLeader . SelectedValue = depart . DepartLeader ;
}
2025-10-09 10:39:49 +08:00
else
{
this . drpDepartLeader . SelectedIndex = 0 ;
}
if ( ! string . IsNullOrEmpty ( depart . DelegatedRepresentative ) )
{
this . drpDelegatedRepresentative . SelectedValue = depart . DelegatedRepresentative ;
}
else
{
this . drpDelegatedRepresentative . SelectedIndex = 0 ;
}
2024-05-08 10:17:02 +08:00
hfFormID . Text = Id ;
this . btnDelete . Enabled = true ;
}
}
#endregion
#region 保 存
/// <summary>
/// 保存按钮
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnSave_Click ( object sender , EventArgs e )
{
string strRowID = hfFormID . Text ;
if ( ! BLL . DepartService . IsExitDepartCode ( this . txtDepartCode . Text . Trim ( ) , strRowID ) & & ! BLL . DepartService . IsExitDepartName ( this . txtDepartName . Text . Trim ( ) , strRowID ) )
{
Model . Base_Depart depart = new Model . Base_Depart
{
DepartCode = this . txtDepartCode . Text . Trim ( ) ,
DepartName = this . txtDepartName . Text . Trim ( ) ,
Remark = this . txtRemark . Text . Trim ( )
} ;
if ( this . drpDepartLeader . SelectedValue ! = BLL . Const . _Null )
{
depart . DepartLeader = this . drpDepartLeader . SelectedValue ;
}
2025-10-09 10:39:49 +08:00
if ( this . drpDelegatedRepresentative . SelectedValue ! = BLL . Const . _Null )
{
depart . DelegatedRepresentative = this . drpDelegatedRepresentative . SelectedValue ;
}
2024-05-08 10:17:02 +08:00
if ( string . IsNullOrEmpty ( strRowID ) )
{
depart . DepartId = SQLHelper . GetNewID ( typeof ( Model . Base_Depart ) ) ;
BLL . DepartService . AddDepart ( depart ) ;
BLL . Sys_LogService . AddLog ( this . CurrUser . UserId , "Add the department" ) ;
ShowNotify ( "Save successfully!" , MessageBoxIcon . Success ) ;
}
else
{
depart . DepartId = strRowID ;
BLL . DepartService . UpdateDepart ( depart ) ;
BLL . Sys_LogService . AddLog ( this . CurrUser . UserId , "Modify the department" ) ;
ShowNotify ( "Save successfully!" , MessageBoxIcon . Success ) ;
}
//this.SimpleForm1.Reset();
// 重新绑定表格,并点击当前编辑或者新增的行
BindGrid ( ) ;
//PageContext.RegisterStartupScript(String.Format("F('{0}').selectRow('{1}');", Grid1.ClientID, depart.DepartId));
//PageContext.RegisterStartupScript("onNewButtonClick();");
}
else
{
ShowNotify ( "The BU.Code or BU.Name entered already exists! " , MessageBoxIcon . Warning ) ;
}
}
#endregion
#region 权 限 设 置
/// <summary>
/// 菜单按钮权限
/// </summary>
private void GetButtonPower ( )
{
var buttonList = BLL . CommonService . GetAllButtonList ( this . CurrUser . UserId , BLL . Const . DepartmentMenuId ) ;
if ( buttonList . Count ( ) > 0 )
{
if ( buttonList . Contains ( BLL . Const . BtnAdd ) )
{
this . btnNew . Hidden = false ;
}
if ( buttonList . Contains ( BLL . Const . BtnModify ) )
{
this . btnMenuEdit . Hidden = false ;
}
if ( buttonList . Contains ( BLL . Const . BtnSave ) )
{
this . btnSave . Hidden = false ;
}
if ( buttonList . Contains ( BLL . Const . BtnDelete ) )
{
this . btnDelete . Hidden = false ;
}
}
}
#endregion
protected void Grid1_RowSelect ( object sender , GridRowSelectEventArgs e )
{
this . EditData ( ) ;
}
protected void btnNew_Click ( object sender , EventArgs e )
{
this . hfFormID . Text = string . Empty ;
this . txtDepartCode . Text = string . Empty ;
this . txtDepartName . Text = string . Empty ;
this . drpDepartLeader . SelectedValue = Const . _Null ;
2025-10-09 10:39:49 +08:00
this . drpDelegatedRepresentative . SelectedValue = Const . _Null ;
2024-05-08 10:17:02 +08:00
this . txtRemark . Text = string . Empty ;
this . btnDelete . Enabled = false ;
}
#region 模 板 下 载
/// <summary>
/// 模板下载
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnDownLoad_Click ( object sender , EventArgs e )
{
PageContext . RegisterStartupScript ( Confirm . GetShowReference ( "Are you sure to download the import template?" , String . Empty , MessageBoxIcon . Question , PageManager1 . GetCustomEventReference ( false , "Confirm_OK" ) , PageManager1 . GetCustomEventReference ( "Confirm_Cancel" ) ) ) ;
}
/// <summary>
/// 下载导入模板
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void PageManager1_CustomEvent ( object sender , CustomEventArgs e )
{
if ( e . EventArgument = = "Confirm_OK" )
{
string rootPath = Server . MapPath ( "~/" ) ;
string uploadfilepath = rootPath + Const . DepartmentTemplateUrl ;
string filePath = Const . DepartmentTemplateUrl ;
string fileName = Path . GetFileName ( filePath ) ;
FileInfo info = new FileInfo ( uploadfilepath ) ;
long fileSize = info . Length ;
Response . ClearContent ( ) ;
Response . AddHeader ( "Content-Disposition" , "attachment;filename=" + System . Web . HttpUtility . UrlEncode ( fileName , System . Text . Encoding . UTF8 ) ) ;
Response . ContentType = "excel/plain" ;
Response . ContentEncoding = System . Text . Encoding . UTF8 ;
Response . AddHeader ( "Content-Length" , fileSize . ToString ( ) . Trim ( ) ) ;
Response . TransmitFile ( uploadfilepath , 0 , fileSize ) ;
Response . End ( ) ;
}
}
#endregion
#region 导 入 定 义 项
/// <summary>
/// 上传预设的虚拟路径
/// </summary>
private string initPath = Const . ExcelUrl ;
/// <summary>
/// 错误集合
/// </summary>
public static string errorInfos = string . Empty ;
#endregion
#region 导 入
/// <summary>
/// 导入
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnImport_Click ( object sender , EventArgs e )
{
string message = string . Empty ;
errorInfos = string . Empty ;
List < Base_Depart > depList = new List < Base_Depart > ( ) ;
try
{
if ( this . fuAttachUrl . HasFile = = false )
{
ShowNotify ( "Please select Excel file!" , MessageBoxIcon . Warning ) ;
return ;
}
string IsXls = Path . GetExtension ( this . fuAttachUrl . FileName ) . ToString ( ) . Trim ( ) . ToLower ( ) ;
if ( IsXls ! = ".xls" & & IsXls ! = ".xlsx" )
{
ShowNotify ( "Only Excel files can be selected!" , MessageBoxIcon . Warning ) ;
return ;
}
if ( depList ! = null )
{
depList . Clear ( ) ;
}
if ( ! string . IsNullOrEmpty ( errorInfos ) )
{
errorInfos = string . Empty ;
}
string rootPath = Server . MapPath ( "~/" ) ;
string initFullPath = rootPath + initPath ;
if ( ! Directory . Exists ( initFullPath ) )
{
Directory . CreateDirectory ( initFullPath ) ;
}
//指定上传文件名称
this . hdFileName . Text = BLL . Funs . GetNewFileName ( ) + IsXls ;
//上传文件路径
string filePath = initFullPath + this . hdFileName . Text ;
//文件上传服务器
this . fuAttachUrl . PostedFile . SaveAs ( filePath ) ;
//文件上传服务器后的名称
string fileName = rootPath + initPath + this . hdFileName . Text ;
//读取Excel
DataSet ds = NPOIHelper . ExcelToDataSet ( fileName , out errorInfos , true ) ;
//验证Excel读取是否有误
if ( ! string . IsNullOrEmpty ( errorInfos ) )
{
ShowNotify ( errorInfos , MessageBoxIcon . Warning ) ;
return ;
}
//导入数据库
if ( ds . Tables . Count > 0 )
{
for ( int i = 0 ; i < ds . Tables [ 0 ] . Rows . Count ; i + + )
{
Base_Depart d = new Base_Depart ( ) ;
#region 数 据 验 证 和 赋 值
string departmentCode = ds . Tables [ 0 ] . Rows [ i ] [ "DepartmentCode" ] . ToString ( ) ;
if ( departmentCode ! = null & & ! string . IsNullOrEmpty ( departmentCode ) )
{
d . DepartCode = departmentCode ;
}
else
{
errorInfos + = ( i + 2 ) + "Line, [DepartmentCode] cannot be empty!</br>" ;
}
string manager = ds . Tables [ 0 ] . Rows [ i ] [ "Manager" ] . ToString ( ) ;
if ( manager ! = null & & ! string . IsNullOrEmpty ( manager ) )
{
d . DepartLeader = manager ;
}
else
{
errorInfos + = ( i + 2 ) + "Line, [Manager] cannot be empty!</br>" ;
}
depList . Add ( d ) ;
#endregion
}
if ( ! string . IsNullOrEmpty ( errorInfos ) )
{
ShowNotify ( errorInfos , MessageBoxIcon . Warning , 10000 ) ;
return ;
}
if ( depList . Count > 0 )
{
foreach ( var item in depList )
{
Model . Base_Depart dep = Funs . DB . Base_Depart . FirstOrDefault ( x = > x . DepartCode = = item . DepartCode ) ;
if ( dep ! = null )
{
var user = BLL . Sys_UserService . GetUserByAccount ( item . DepartLeader ) ;
if ( user ! = null )
{
dep . DepartLeader = user . UserId ;
Funs . DB . SubmitChanges ( ) ;
}
}
}
}
ShowNotify ( "Import success!" , MessageBoxIcon . Success ) ;
PageContext . RegisterStartupScript ( ActiveWindow . GetHidePostBackReference ( ) ) ;
}
else
{
ShowAlert ( "No data!" , MessageBoxIcon . Warning ) ;
return ;
}
}
catch ( Exception ex )
{
ShowAlert ( "'" + ex . Message + "'" , MessageBoxIcon . Warning ) ;
}
}
#endregion
}
}