2021-04-30 10:28:37 +08:00
using BLL ;
using System ;
using System.Collections.Generic ;
using System.Data ;
using System.Data.SqlClient ;
2024-05-05 17:08:38 +08:00
using System.IO ;
2021-04-30 10:28:37 +08:00
using System.Linq ;
2021-05-20 17:16:01 +08:00
using System.Text ;
2021-04-30 10:28:37 +08:00
namespace FineUIPro.Web.CQMS.ProcessControl
{
public partial class InspectionManagement : PageBase
{
#region 加 载
/// <summary>
/// 加载页面
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Page_Load ( object sender , EventArgs e )
{
if ( ! IsPostBack )
{
GetButtonPower ( ) ;
BLL . CNProfessionalService . InitCNProfessionalDownList ( this . drpCNProfessional , true ) ; //专业
2024-09-02 10:42:39 +08:00
BLL . UnitService . InitUnitByProjectIdUnitTypeDropDownList ( drpUnit , this . CurrUser . LoginProjectId , BLL . Const . ProjectUnitType_2 , true ) ; //施工分包商
2021-04-30 10:28:37 +08:00
BindGrid ( ) ;
}
}
/// <summary>
/// 数据绑定
/// </summary>
public void BindGrid ( )
{
2025-05-16 17:54:16 +08:00
StringBuilder sb = new StringBuilder ( ) ;
sb . Append ( "SELECT P.InspectionId,P.ProjectId,P.UnitId,P.CNProfessionalId,P.UnitWorkId,U.UnitName,C.ProfessionalName,P.NoticeCode,UnitWork.UnitWorkName,DP.DivisionName AS Branch,BP.BreakdownName AS ControlPointType,BP.Class,P.AcceptanceSite,P.AcceptanceCheckMan,(CASE WHEN IsOnceQualified='False' THEN '否' ELSE '是' END)AS IsOnceQualified,P.InspectionCode,P.InspectionDate " ) ;
sb . Append ( "FROM ProcessControl_InspectionManagement AS P " ) ;
sb . Append ( "LEFT JOIN Base_Unit AS U ON U.UnitId = P.UnitId " ) ;
sb . Append ( "LEFT JOIN Base_CNProfessional C ON C.CNProfessionalId = P.CNProfessionalId " ) ;
sb . Append ( "LEFT JOIN WBS_UnitWork AS UnitWork ON UnitWork.UnitWorkId = P.UnitWorkId " ) ;
sb . Append ( "LEFT JOIN WBS_DivisionProject AS DP ON DP.DivisionProjectId = P.Branch " ) ;
sb . Append ( "LEFT JOIN WBS_BreakdownProject AS BP ON BP.BreakdownProjectId = P.ControlPointType " ) ;
sb . Append ( "WHERE P.ProjectId=@ProjectId " ) ;
2021-04-30 10:28:37 +08:00
List < SqlParameter > listStr = new List < SqlParameter > ( ) ;
listStr . Add ( new SqlParameter ( "@ProjectId" , this . CurrUser . LoginProjectId ) ) ;
2024-09-02 10:42:39 +08:00
if ( drpUnit . SelectedValue ! = BLL . Const . _Null )
2021-04-30 10:28:37 +08:00
{
2025-05-16 17:54:16 +08:00
sb . Append ( "AND P.UnitId=@UnitId " ) ;
2024-09-02 10:42:39 +08:00
listStr . Add ( new SqlParameter ( "@UnitId" , drpUnit . SelectedValue ) ) ;
2021-04-30 10:28:37 +08:00
}
if ( drpCNProfessional . SelectedValue ! = BLL . Const . _Null )
{
2025-05-16 17:54:16 +08:00
sb . Append ( "AND P.CNProfessionalId=@CNProfessionalId " ) ;
2021-04-30 10:28:37 +08:00
listStr . Add ( new SqlParameter ( "@CNProfessionalId" , drpCNProfessional . SelectedValue ) ) ;
}
2024-06-25 22:54:12 +08:00
if ( ! string . IsNullOrEmpty ( txtStarTime . Text ) )
2021-04-30 10:28:37 +08:00
{
2025-05-16 17:54:16 +08:00
sb . Append ( "AND P.InspectionDate >= @startTime " ) ;
2024-06-25 22:54:12 +08:00
listStr . Add ( new SqlParameter ( "@startTime" , Funs . GetNewDateTime ( txtStarTime . Text ) ) ) ;
2021-04-30 10:28:37 +08:00
}
2024-06-25 22:54:12 +08:00
if ( ! string . IsNullOrEmpty ( txtEndTime . Text ) )
2021-04-30 10:28:37 +08:00
{
2025-05-16 17:54:16 +08:00
sb . Append ( "AND P.InspectionDate <= @endTim " ) ;
2024-06-25 22:54:12 +08:00
listStr . Add ( new SqlParameter ( "@endTime" , Funs . GetNewDateTime ( txtEndTime . Text ) ) ) ;
2021-04-30 10:28:37 +08:00
}
2025-05-16 17:54:16 +08:00
sb . Append ( "ORDER BY P.NoticeCode DESC " ) ;
2021-04-30 10:28:37 +08:00
SqlParameter [ ] parameter = listStr . ToArray ( ) ;
2025-05-16 17:54:16 +08:00
DataTable tb = SQLHelper . GetDataTableRunText ( sb . ToString ( ) , parameter ) ;
2021-04-30 10:28:37 +08:00
Grid1 . RecordCount = tb . Rows . Count ;
//tb = GetFilteredTable(Grid1.FilteredData, tb);
var table = this . GetPagedDataTable ( Grid1 , tb ) ;
Grid1 . DataSource = table ;
Grid1 . DataBind ( ) ;
}
#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 ( ) ;
}
/// <summary>
/// 分页索引事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Grid1_PageIndexChange ( object sender , GridPageEventArgs e )
{
BindGrid ( ) ;
}
/// <summary>
/// 排序
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Grid1_Sort ( object sender , FineUIPro . GridSortEventArgs e )
{
Grid1 . SortDirection = e . SortDirection ;
Grid1 . SortField = e . SortField ;
BindGrid ( ) ;
}
#endregion
#region 查 询
/// <summary>
/// 查询
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnSearch_Click ( object sender , EventArgs e )
{
BindGrid ( ) ;
}
#endregion
#region 关 闭 弹 出 窗 口
/// <summary>
///关闭弹出窗口
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Window1_Close ( object sender , WindowCloseEventArgs e )
{
BindGrid ( ) ;
}
#endregion
#region 编 辑
/// <summary>
/// Grid行双击事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Grid1_RowDoubleClick ( object sender , GridRowClickEventArgs e )
{
btnMenuModify_Click ( null , null ) ;
}
/// <summary>
/// 右键编辑
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnMenuModify_Click ( object sender , EventArgs e )
{
if ( Grid1 . SelectedRowIndexArray . Length = = 0 )
{
Alert . ShowInTop ( "请至少选择一条记录" , MessageBoxIcon . Warning ) ;
return ;
}
PageContext . RegisterStartupScript ( Window1 . GetShowReference ( String . Format ( "InspectionManagementEdit.aspx?InspectionId={0}" , Grid1 . SelectedRowID , "编辑 - " ) ) ) ;
}
#endregion
#region 右 键 删 除
/// <summary>
/// 右键删除
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnMenuDel_Click ( object sender , EventArgs e )
{
if ( Grid1 . SelectedRowIndexArray . Length > 0 )
{
foreach ( int rowIndex in Grid1 . SelectedRowIndexArray )
{
string rowID = Grid1 . DataKeys [ rowIndex ] [ 0 ] . ToString ( ) ;
var InspectionEquipment = BLL . InspectionManagementService . GetInspectionManagementById ( rowID ) ;
if ( InspectionEquipment ! = null )
{
BLL . InspectionManagementDetailService . DeleteAllInspectionDetail ( rowID ) ;
BLL . InspectionManagementService . DeleteInspectionManagement ( rowID ) ;
}
}
BindGrid ( ) ;
ShowNotify ( "删除数据成功!" , MessageBoxIcon . Success ) ;
}
}
#endregion
#region 获 取 按 钮 权 限
/// <summary>
/// 获取按钮权限
/// </summary>
/// <param name="button"></param>
/// <returns></returns>
private void GetButtonPower ( )
{
if ( Request . Params [ "value" ] = = "0" )
{
return ;
}
var buttonList = BLL . CommonService . GetAllButtonList ( this . CurrUser . LoginProjectId , this . CurrUser . UserId , BLL . Const . InspectionManagementMenuId ) ;
if ( buttonList . Count ( ) > 0 )
{
if ( buttonList . Contains ( BLL . Const . BtnModify ) )
{
this . btnMenuModify . Hidden = false ;
this . Grid1 . EnableRowDoubleClickEvent = true ;
}
else
{
this . Grid1 . EnableRowDoubleClickEvent = false ;
}
if ( buttonList . Contains ( BLL . Const . BtnDelete ) )
{
this . btnMenuDel . Hidden = false ;
}
}
}
#endregion
2021-05-20 17:16:01 +08:00
#region 导 出 按 钮
/// 导出按钮
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnOut_Click ( object sender , EventArgs e )
{
2024-05-05 17:08:38 +08:00
string rootPath = Server . MapPath ( "~/" ) ;
string initTemplatePath = Const . InspectionManagementTempUrl ;
string uploadfilepath = string . Empty ;
string newUrl = string . Empty ;
uploadfilepath = rootPath + initTemplatePath ;
2025-05-16 17:54:16 +08:00
//var lists = (from x in Funs.DB.ProcessControl_InspectionManagementDetail
// join y in Funs.DB.ProcessControl_InspectionManagement
// on x.InspectionId equals y.InspectionId
// where y.ProjectId == this.CurrUser.LoginProjectId
// select y);
var db = Funs . DB ;
var lists = ( from x in db . ProcessControl_InspectionManagement
join bu in db . Base_Unit on x . UnitId equals bu . UnitId into buGroup
from bu in buGroup . DefaultIfEmpty ( )
join bcn in db . Base_CNProfessional on x . CNProfessionalId equals bcn . CNProfessionalId into bcnGroup
from bcn in bcnGroup . DefaultIfEmpty ( )
//join wbsuw in db.WBS_UnitWork on x.UnitWorkId equals wbsuw.UnitWorkId into wbsuwGroup
//from wbsuw in wbsuwGroup.DefaultIfEmpty()
//join wbsd in db.WBS_DivisionProject on x.Branch equals wbsd.DivisionProjectId into wbsdGroup
//from wbsd in wbsdGroup.DefaultIfEmpty()
//join wbsbp in db.WBS_BreakdownProject on x.ControlPointType equals wbsbp.BreakdownProjectId into wbsbpGroup
//from wbsbp in wbsbpGroup.DefaultIfEmpty()
where x . ProjectId = = this . CurrUser . LoginProjectId
orderby x . NoticeCode descending
select new
{
UnitId = x . UnitId ,
UnitName = bu . UnitName ,
CNProfessionalId = x . CNProfessionalId ,
ProfessionalName = bcn . ProfessionalName ,
NoticeCode = x . NoticeCode ,
AcceptanceSite = x . AcceptanceSite ,
AcceptanceCheckMan = x . AcceptanceCheckMan ,
InspectionDate = x . InspectionDate ,
IsOnceQualified = x . IsOnceQualified ,
InspectionCode = x . InspectionCode
} ) ;
2024-09-02 10:42:39 +08:00
if ( drpUnit . SelectedValue ! = BLL . Const . _Null )
2024-05-05 17:08:38 +08:00
{
2024-09-02 10:42:39 +08:00
lists = lists . Where ( x = > x . UnitId = = drpUnit . SelectedValue ) ;
2024-05-05 17:08:38 +08:00
}
if ( drpCNProfessional . SelectedValue ! = BLL . Const . _Null )
{
lists = lists . Where ( x = > x . CNProfessionalId = = drpCNProfessional . SelectedValue ) ;
}
if ( ! string . IsNullOrEmpty ( txtStarTime . Text . Trim ( ) ) )
{
lists = lists . Where ( x = > x . InspectionDate > = Funs . GetNewDateTime ( txtStarTime . Text . Trim ( ) ) ) ;
}
if ( ! string . IsNullOrEmpty ( txtEndTime . Text . Trim ( ) ) )
{
lists = lists . Where ( x = > x . InspectionDate < = Funs . GetNewDateTime ( txtEndTime . Text . Trim ( ) ) ) ;
}
if ( lists ! = null )
{
string projectName = BLL . ProjectService . GetShortNameByProjectId ( this . CurrUser . LoginProjectId ) ;
newUrl = uploadfilepath . Replace ( "控制点检查检测模板" , "控制点检查检测(" + projectName + DateTime . Now . ToString ( "yyyyMMdd" ) + ") " ) ;
2025-01-23 16:11:00 +08:00
if ( File . Exists ( newUrl ) )
{
File . Delete ( newUrl ) ;
}
2024-05-05 17:08:38 +08:00
File . Copy ( uploadfilepath , newUrl ) ;
// 第一步:读取文件流
NPOI . SS . UserModel . IWorkbook workbook ;
using ( FileStream stream = new FileStream ( newUrl , FileMode . Open , FileAccess . Read ) )
{
//workbook = new NPOI.XSSF.UserModel.XSSFWorkbook(stream);
workbook = new NPOI . HSSF . UserModel . HSSFWorkbook ( stream ) ;
}
// 创建单元格样式
NPOI . SS . UserModel . ICellStyle cellStyle = workbook . CreateCellStyle ( ) ;
cellStyle . BorderTop = NPOI . SS . UserModel . BorderStyle . Thin ;
cellStyle . BorderRight = NPOI . SS . UserModel . BorderStyle . Thin ;
cellStyle . BorderBottom = NPOI . SS . UserModel . BorderStyle . Thin ;
cellStyle . BorderLeft = NPOI . SS . UserModel . BorderStyle . Thin ;
cellStyle . Alignment = NPOI . SS . UserModel . HorizontalAlignment . Center ;
cellStyle . VerticalAlignment = NPOI . SS . UserModel . VerticalAlignment . Center ;
2024-05-08 21:51:39 +08:00
cellStyle . WrapText = true ; //自动换行
2024-05-05 17:08:38 +08:00
var font = workbook . CreateFont ( ) ;
font . FontHeightInPoints = 11 ;
cellStyle . SetFont ( font ) ;
// 第二步:创建新数据行
NPOI . SS . UserModel . ISheet sheet = workbook . GetSheetAt ( 0 ) ;
NPOI . SS . UserModel . IRow row = sheet . GetRow ( 0 ) ;
NPOI . SS . UserModel . ICell cell ;
int i = 2 ;
foreach ( var item in lists )
{
// 第二步:创建新数据行
row = sheet . CreateRow ( i ) ;
// 添加数据
cell = row . CreateCell ( 0 ) ;
cell . CellStyle = cellStyle ;
2025-05-16 17:54:16 +08:00
cell . SetCellValue ( item . UnitName ) ; //施工分包商
2024-05-05 17:08:38 +08:00
cell = row . CreateCell ( 1 ) ;
cell . CellStyle = cellStyle ;
2025-05-16 17:54:16 +08:00
cell . SetCellValue ( item . ProfessionalName ) ; //专业
2024-05-05 17:08:38 +08:00
cell = row . CreateCell ( 2 ) ;
cell . CellStyle = cellStyle ;
cell . SetCellValue ( item . NoticeCode ) ; //共检通知单编号
cell = row . CreateCell ( 3 ) ;
cell . CellStyle = cellStyle ;
cell . SetCellValue ( item . AcceptanceSite ) ; //验收部位
cell = row . CreateCell ( 4 ) ;
cell . CellStyle = cellStyle ;
string userName = string . Empty ;
if ( ! string . IsNullOrEmpty ( item . AcceptanceCheckMan ) )
{
userName = ConvertCheckMan ( item . AcceptanceCheckMan ) ;
}
cell . SetCellValue ( userName ) ; //检查人
cell = row . CreateCell ( 5 ) ;
cell . CellStyle = cellStyle ;
2025-05-16 17:54:16 +08:00
cell . SetCellValue ( item . IsOnceQualified = = false ? "否" : "是" ) ; //是否一次合格
2024-05-05 17:08:38 +08:00
cell = row . CreateCell ( 6 ) ;
cell . CellStyle = cellStyle ;
cell . SetCellValue ( item . InspectionCode ) ; //报验编号
cell = row . CreateCell ( 7 ) ;
cell . CellStyle = cellStyle ;
cell . SetCellValue ( item . InspectionDate . HasValue ? string . Format ( "{0:yyyy-MM-dd}" , item . InspectionDate ) : "" ) ; //验收日期
i + + ;
}
// 第三步:写入文件流
using ( FileStream stream = new FileStream ( newUrl , FileMode . Create , FileAccess . Write ) )
{
workbook . Write ( stream ) ;
workbook . Close ( ) ;
}
string fileName = Path . GetFileName ( newUrl ) ;
FileInfo info = new FileInfo ( newUrl ) ;
long fileSize = info . Length ;
Response . Clear ( ) ;
Response . ContentType = "application/x-zip-compressed" ;
Response . AddHeader ( "Content-Disposition" , "attachment;filename=" + System . Web . HttpUtility . UrlEncode ( fileName , System . Text . Encoding . UTF8 ) ) ;
Response . AddHeader ( "Content-Length" , fileSize . ToString ( ) ) ;
Response . TransmitFile ( newUrl , 0 , fileSize ) ;
Response . Flush ( ) ;
Response . Close ( ) ;
File . Delete ( newUrl ) ;
}
else
{
Alert . ShowInTop ( "当前无记录,无法导出!" , MessageBoxIcon . Warning ) ;
}
2021-05-20 17:16:01 +08:00
}
#endregion
2023-08-15 15:11:57 +08:00
/// <summary>
/// 获取检查人名称
/// </summary>
/// <param name="CarryUnitIds"></param>
/// <returns></returns>
protected string ConvertCheckMan ( object CarryUnitIds )
{
var uname = BLL . UserService . getUserNamesUserIds ( CarryUnitIds ) ;
if ( string . IsNullOrEmpty ( uname ) )
{
uname = CarryUnitIds . ToString ( ) ;
}
return uname ;
}
2021-04-30 10:28:37 +08:00
}
}