2021-04-30 10:28:37 +08:00
using BLL ;
using System ;
using System.Collections.Generic ;
using System.Data ;
using System.Data.SqlClient ;
2024-04-28 10:23:34 +08:00
using System.IO ;
2021-04-30 10:28:37 +08:00
using System.Linq ;
namespace FineUIPro.Web.Comprehensive
{
public partial class InspectionMachine : PageBase
{
#region 加 载
/// <summary>
/// 加载页面
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Page_Load ( object sender , EventArgs e )
{
if ( ! IsPostBack )
{
GetButtonPower ( ) ;
BLL . UnitService . InitUnitDownList ( this . sdrpUnitId , this . CurrUser . LoginProjectId , true ) ;
BLL . CNProfessionalService . InitCNProfessionalDownList ( this . sdrpCNProfessional , true ) ;
BindGrid ( ) ;
}
}
/// <summary>
/// 数据绑定
/// </summary>
public void BindGrid ( )
{
2023-04-28 17:46:41 +08:00
string strSql = @"select InspectionMachineId, InspectionMachineCode, U.UnitName,CN.ProfessionalName ,Status,
2021-04-30 10:28:37 +08:00
InspectionMachineName, SpecificationModel, NextTestDate, TestCycle, C.InspectionDate,
2024-08-19 10:51:27 +08:00
InspectionDate CompileDate, (CASE WHEN IsVerification=1 THEN '是' WHEN IsVerification=0 THEN '否' ELSE '' END) AS IsVerification, InspectionType, LeaveDate, UnitsCount,C.RemarkCode,C.IsOnSite
2021-04-30 10:28:37 +08:00
from Comprehensive_InspectionMachine C
left join Base_Unit U on C.UnitId=U.UnitId
left join Base_CNProfessional CN on C.CNProfessionalId=CN.CNProfessionalId
where C.ProjectId = @ProjectId" ;
List < SqlParameter > listStr = new List < SqlParameter > ( ) ;
listStr . Add ( new SqlParameter ( "@ProjectId" , this . CurrUser . LoginProjectId ) ) ;
if ( sdrpUnitId . SelectedValue ! = BLL . Const . _Null )
{
strSql + = " AND C.UnitId=@UnitId" ;
listStr . Add ( new SqlParameter ( "@UnitId" , sdrpUnitId . SelectedValue ) ) ;
}
if ( sdrpCNProfessional . SelectedValue ! = BLL . Const . _Null )
{
strSql + = " AND C.CNProfessionalId=@CNProfessionalId" ;
listStr . Add ( new SqlParameter ( "@CNProfessionalId" , sdrpCNProfessional . SelectedValue ) ) ;
}
if ( sdrpType . SelectedValue ! = "" )
{
strSql + = " AND C.InspectionType=@InspectionType" ;
listStr . Add ( new SqlParameter ( "@InspectionType" , sdrpType . SelectedValue ) ) ;
}
SqlParameter [ ] parameter = listStr . ToArray ( ) ;
DataTable tb = SQLHelper . GetDataTableRunText ( strSql , parameter ) ;
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
2023-06-26 11:16:55 +08:00
protected void Grid1_RowDataBound ( object sender , GridRowEventArgs e )
{
DataRowView row = e . DataItem as DataRowView ;
string IsVerification = row [ "IsVerification" ] . ToString ( ) ;
string NextTestDate = row [ "NextTestDate" ] . ToString ( ) ;
2024-08-19 10:51:27 +08:00
string InspectionType = row [ "InspectionType" ] . ToString ( ) ;
2023-06-27 10:14:53 +08:00
if ( InspectionType = = "计量" )
2023-06-26 11:16:55 +08:00
{
2023-06-27 10:14:53 +08:00
if ( IsVerification = = "是" & & ! string . IsNullOrEmpty ( NextTestDate ) ) //在校验期内
2023-06-26 11:16:55 +08:00
{
2025-03-14 15:29:22 +08:00
//if (DateTime.Compare(DateTime.Parse(NextTestDate).AddDays(-15), DateTime.Now) < 0)
//{
if ( DateTime . Parse ( NextTestDate ) < DateTime . Now )
2023-06-27 10:14:53 +08:00
{
// Grid1.Rows[e.RowIndex].RowCssClass = "Red";
//过期为红色
e . RowCssClass = "Red" ;
}
2025-03-14 15:29:22 +08:00
else if ( DateTime . Parse ( NextTestDate ) . AddDays ( - 15 ) < DateTime . Now & & DateTime . Parse ( NextTestDate ) > = DateTime . Now )
{
//到期前15天黄色标识提醒
e . RowCssClass = "Yellow" ;
}
2023-06-27 10:14:53 +08:00
}
2023-06-26 11:16:55 +08:00
}
2024-08-19 10:51:27 +08:00
//离场为灰色
string LeaveDate = row [ "LeaveDate" ] . ToString ( ) ;
string IsOnSite = row [ "IsOnSite" ] . ToString ( ) ;
if ( ! string . IsNullOrEmpty ( LeaveDate ) | | IsOnSite = = "False" )
{
e . RowCssClass = "Gray" ;
}
2023-06-26 11:16:55 +08:00
}
2021-04-30 10:28:37 +08:00
#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>
/// 新增按钮事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnNew_Click ( object sender , EventArgs e )
{
PageContext . RegisterStartupScript ( Window1 . GetShowReference ( String . Format ( "InspectionMachineEdit.aspx" , "编辑 - " ) ) ) ;
}
#endregion
#region 编 辑
/// <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 ( "InspectionMachineEdit.aspx?InspectionMachineId={0}" , Grid1 . SelectedRowID , "编辑 - " ) ) ) ;
}
/// <summary>
/// Grid行双击事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Grid1_RowDoubleClick ( object sender , GridRowClickEventArgs e )
{
btnMenuModify_Click ( sender , e ) ;
}
#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 InspectionMachine = BLL . InspectionMachineService . GetInspectionMachineById ( rowID ) ;
if ( InspectionMachine ! = null )
{
BLL . InspectionMachineService . DeleteInspectionMachine ( rowID ) ;
}
}
BindGrid ( ) ;
ShowNotify ( "删除数据成功!" , MessageBoxIcon . Success ) ;
}
}
#endregion
#region 导 入
/// <summary>
/// 导入按钮
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnImport_Click ( object sender , EventArgs e )
{
2025-02-27 11:51:00 +08:00
PageContext . RegisterStartupScript ( Window2 . GetShowReference ( String . Format ( "InspectionMachineDataInNew.aspx" , "导入 - " ) ) ) ;
2021-04-30 10:28:37 +08:00
}
#endregion
#region 获 取 按 钮 权 限
/// <summary>
/// 获取按钮权限
/// </summary>
/// <param name="button"></param>
/// <returns></returns>
private void GetButtonPower ( )
{
if ( Request . Params [ "value" ] = = BLL . Const . _Null )
{
return ;
}
var buttonList = BLL . CommonService . GetAllButtonList ( this . CurrUser . LoginProjectId , this . CurrUser . UserId , BLL . Const . InspectionMachineMenuId ) ;
if ( buttonList . Count ( ) > 0 )
{
if ( buttonList . Contains ( BLL . Const . BtnAdd ) )
{
this . btnNew . Hidden = false ;
}
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 ;
}
if ( buttonList . Contains ( BLL . Const . BtnSave ) )
{
this . btnImport . Hidden = false ;
}
}
}
#endregion
2021-05-20 17:16:01 +08:00
2023-04-28 17:46:41 +08:00
public static string ConvertState ( object Status )
2021-05-20 17:16:01 +08:00
{
2023-04-28 17:46:41 +08:00
if ( Status ! = null )
{
if ( Status . ToString ( ) . Trim ( ) = = BLL . Const . Comprehensive_ReCompile )
{
return "重报" ;
}
else if ( Status . ToString ( ) . Trim ( ) = = BLL . Const . Comprehensive_ReJect )
{
return "驳回" ;
}
else if ( Status . ToString ( ) . Trim ( ) = = BLL . Const . Comprehensive_Compile )
{
return "编制" ;
}
else if ( Status . ToString ( ) . Trim ( ) = = BLL . Const . Comprehensive_Audit )
{
return "待审批" ;
}
else if ( Status . ToString ( ) . Trim ( ) = = BLL . Const . Comprehensive_Complete )
{
return "审批完成" ;
}
}
return "编制" ;
2021-05-20 17:16:01 +08:00
}
2024-04-28 10:23:34 +08:00
#region 导 出 按 钮
/// 导出按钮
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnOut_Click ( object sender , EventArgs e )
{
string rootPath = Server . MapPath ( "~/" ) ;
2024-04-29 19:13:54 +08:00
string initTemplatePath = Const . InspectionMachineDataInUrl ;
2024-04-28 10:23:34 +08:00
string uploadfilepath = string . Empty ;
string newUrl = string . Empty ;
uploadfilepath = rootPath + initTemplatePath ;
var lists = ( from x in Funs . DB . Comprehensive_InspectionMachine
where x . ProjectId = = this . CurrUser . LoginProjectId
select x ) ;
if ( this . sdrpUnitId . SelectedValue ! = BLL . Const . _Null )
{
lists = lists . Where ( x = > x . UnitId = = this . sdrpUnitId . SelectedValue ) ;
}
if ( sdrpCNProfessional . SelectedValue ! = BLL . Const . _Null )
{
lists = lists . Where ( x = > x . CNProfessionalId = = this . sdrpCNProfessional . SelectedValue ) ;
}
if ( sdrpType . SelectedValue ! = "" )
{
lists = lists . Where ( x = > x . InspectionType = = this . sdrpType . SelectedValue ) ;
}
2024-04-29 19:13:54 +08:00
lists = lists . OrderBy ( x = > x . RemarkCode ) ;
2024-04-28 10:23:34 +08:00
if ( lists ! = null )
{
2024-04-30 23:33:49 +08:00
string projectName = BLL . ProjectService . GetShortNameByProjectId ( this . CurrUser . LoginProjectId ) ;
2025-07-24 10:21:02 +08:00
newUrl = uploadfilepath . Replace ( "机具报验导入模板" , "机具报验(" + projectName . Replace ( "/" , "" ) + DateTime . Now . ToString ( "yyyyMMdd" ) + ") " ) ;
2025-01-23 16:11:00 +08:00
if ( File . Exists ( newUrl ) )
{
File . Delete ( newUrl ) ;
}
2024-04-28 10:23:34 +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-04-28 10:23:34 +08:00
var font = workbook . CreateFont ( ) ;
font . FontHeightInPoints = 11 ;
cellStyle . SetFont ( font ) ;
2024-05-08 21:51:39 +08:00
2024-04-28 10:23:34 +08:00
NPOI . SS . UserModel . ICellStyle cellStyle0 = workbook . CreateCellStyle ( ) ;
cellStyle0 . BorderTop = NPOI . SS . UserModel . BorderStyle . Thin ;
cellStyle0 . BorderRight = NPOI . SS . UserModel . BorderStyle . Thin ;
cellStyle0 . BorderBottom = NPOI . SS . UserModel . BorderStyle . Thin ;
cellStyle0 . BorderLeft = NPOI . SS . UserModel . BorderStyle . Thin ;
2024-05-08 21:51:39 +08:00
cellStyle0 . Alignment = NPOI . SS . UserModel . HorizontalAlignment . Right ;
2024-04-28 10:23:34 +08:00
cellStyle0 . VerticalAlignment = NPOI . SS . UserModel . VerticalAlignment . Center ;
var font0 = workbook . CreateFont ( ) ;
2024-05-08 21:51:39 +08:00
font0 . FontHeightInPoints = 11 ;
2024-04-28 10:23:34 +08:00
cellStyle0 . SetFont ( font0 ) ;
// 第二步:创建新数据行
NPOI . SS . UserModel . ISheet sheet = workbook . GetSheetAt ( 0 ) ;
NPOI . SS . UserModel . IRow row = sheet . GetRow ( 0 ) ;
NPOI . SS . UserModel . ICell cell ;
2024-04-29 19:13:54 +08:00
int i = 2 ;
2024-04-28 10:23:34 +08:00
foreach ( var item in lists )
{
// 第二步:创建新数据行
row = sheet . CreateRow ( i ) ;
// 添加数据
cell = row . CreateCell ( 0 ) ;
cell . CellStyle = cellStyle ;
cell . SetCellValue ( BLL . UnitService . GetUnitNameByUnitId ( item . UnitId ) ) ; //报验单位
cell = row . CreateCell ( 1 ) ;
cell . CellStyle = cellStyle ;
cell . SetCellValue ( item . InspectionMachineCode ) ; //报验编号
cell = row . CreateCell ( 2 ) ;
cell . CellStyle = cellStyle ;
cell . SetCellValue ( item . InspectionMachineName ) ; //名称
cell = row . CreateCell ( 3 ) ;
cell . CellStyle = cellStyle ;
string proName = string . Empty ;
var cnp = BLL . CNProfessionalService . GetCNProfessional ( item . CNProfessionalId ) ;
if ( cnp ! = null )
{
proName = cnp . ProfessionalName ;
}
cell . SetCellValue ( proName ) ; //专业
cell = row . CreateCell ( 4 ) ;
cell . CellStyle = cellStyle ;
cell . SetCellValue ( item . InspectionType ) ; //类型
cell = row . CreateCell ( 5 ) ;
cell . CellStyle = cellStyle ;
cell . SetCellValue ( item . SpecificationModel ) ; //规格型号
cell = row . CreateCell ( 6 ) ;
cell . CellStyle = cellStyle ;
cell . SetCellValue ( item . NextTestDate . HasValue ? string . Format ( "{0:yyyy-MM-dd}" , item . NextTestDate ) : "" ) ; //下次检验日期
cell = row . CreateCell ( 7 ) ;
cell . CellStyle = cellStyle ;
cell . SetCellValue ( item . TestCycle ) ; //检验周期
cell = row . CreateCell ( 8 ) ;
cell . CellStyle = cellStyle ;
string isV = string . Empty ;
if ( item . IsVerification . HasValue )
{
if ( item . IsVerification = = true )
{
isV = "是" ;
}
else if ( item . IsVerification = = false )
{
isV = "否" ;
}
}
cell . SetCellValue ( isV ) ; //是否在校验期内
cell = row . CreateCell ( 9 ) ;
cell . CellStyle = cellStyle ;
cell . SetCellValue ( item . InspectionDate . HasValue ? string . Format ( "{0:yyyy-MM-dd}" , item . InspectionDate ) : "" ) ; //报验日期
cell = row . CreateCell ( 10 ) ;
cell . CellStyle = cellStyle ;
string isO = string . Empty ;
if ( item . IsOnSite . HasValue ) //是否在场
{
if ( item . IsOnSite = = true )
{
isO = "是" ;
}
else if ( item . IsOnSite = = false )
{
isO = "否" ;
}
}
cell . SetCellValue ( isO ) ; //是否在校验期内
cell = row . CreateCell ( 11 ) ;
2024-05-08 21:51:39 +08:00
cell . CellStyle = cellStyle0 ;
2024-04-28 10:23:34 +08:00
cell . SetCellValue ( item . UnitsCount . HasValue ? item . UnitsCount . ToString ( ) : "" ) ; //台数
cell = row . CreateCell ( 12 ) ;
cell . CellStyle = cellStyle ;
2024-04-29 19:13:54 +08:00
string isK = string . Empty ;
if ( item . IsCheckOK . HasValue ) //校验合格
{
if ( item . IsCheckOK = = true )
{
isK = "是" ;
}
else if ( item . IsCheckOK = = false )
{
isK = "否" ;
}
}
cell . SetCellValue ( isK ) ;
cell = row . CreateCell ( 13 ) ;
cell . CellStyle = cellStyle ;
2024-04-28 10:23:34 +08:00
cell . SetCellValue ( item . LeaveDate . HasValue ? string . Format ( "{0:yyyy-MM-dd}" , item . LeaveDate ) : "" ) ; //离场时间
2024-04-29 19:13:54 +08:00
cell = row . CreateCell ( 14 ) ;
cell . CellStyle = cellStyle ;
cell . SetCellValue ( item . RemarkCode . HasValue ? item . RemarkCode . ToString ( ) : "" ) ; //标志编号
2024-04-28 10:23:34 +08:00
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 ) ;
}
}
#endregion
2021-04-30 10:28:37 +08:00
}
}