2024-01-05 09:40:50 +08:00
using BLL ;
using System ;
using System.Collections.Generic ;
using System.Data ;
using System.Data.SqlClient ;
using System.Linq ;
using System.Web ;
using System.Web.UI ;
using System.Web.UI.WebControls ;
namespace FineUIPro.Web.TestRun.TestRunManage
{
public partial class InspectTailTermList : PageBase
{
protected void Page_Load ( object sender , EventArgs e )
{
if ( ! IsPostBack )
{
InitTreeMenu ( ) ;
}
}
#region 树 绑 定
/// <summary>
/// 加载树
/// </summary>
private void InitTreeMenu ( )
{
this . tvControlItem . Nodes . Clear ( ) ;
TreeNode rootNode = new TreeNode ( ) ;
rootNode . Text = "检查表" ;
rootNode . NodeID = "0" ;
rootNode . Expanded = true ;
rootNode . ToolTip = "" ;
rootNode . EnableClickEvent = true ;
this . tvControlItem . Nodes . Add ( rootNode ) ;
var userSubInspects = from a in Funs . DB . TestRun_TermItemInspectedUser
join b in Funs . DB . TestRun_SubInspectTermItem on a . TermItemId equals b . TermItemId
join c in Funs . DB . TestRun_InspectTailTerm on a . TermItemId equals c . TermItemId
where c . InspectUser = = this . CurrUser . UserId & & a . ProjectId = = this . CurrUser . LoginProjectId & & a . InspectionResults = = 0
select new { a , b } ;
if ( userSubInspects . Count ( ) = = 0 ) return ;
var systemIds = userSubInspects . Select ( x = > x . b . SystemId ) ;
var workPackIds = userSubInspects . Select ( x = > x . b . WorkPackId ) ;
var list = from a in Funs . DB . PreRun_SysDevice
join b in Funs . DB . TestRun_SubSysWorkPackage on a . PreRunId equals b . SystemId
join c in Funs . DB . TestRun_WorkPackage on b . WorkPackId equals c . WorkPackId
where a . ProjectId = = this . CurrUser . LoginProjectId & & systemIds . Contains ( a . PreRunId ) & & workPackIds . Contains ( c . WorkPackId )
select new { a . PreRunId , a . ProcessesId , a . SystemId , a . PreRunCode , a . PreRunName , a . ProjectId , c . WorkPackId , c . WorkPackName , b . WorkPackCode } ;
if ( list . Count ( ) > 0 )
{
var ids = list . Select ( x = > x . ProcessesId ) . ToList ( ) ;
ids . AddRange ( list . Select ( x = > x . PreRunId ) . ToList ( ) ) ;
ids = ids . Distinct ( ) . ToList ( ) ;
var syslist = Funs . DB . PreRun_SysDevice . Where ( x = > ids . Contains ( x . PreRunId ) ) . ToList ( ) ;
if ( syslist . Count > 0 )
{
var oneIds = syslist . ConvertAll ( x = > x . ProcessesId ) . Distinct ( ) . ToList ( ) ;
foreach ( var itemOne in oneIds )
{
var itemOneModel = syslist . FirstOrDefault ( x = > x . PreRunId = = itemOne ) ;
TreeNode rootOneNode = new TreeNode ( ) ;
rootOneNode . NodeID = itemOneModel . PreRunId ;
rootOneNode . Text = itemOneModel . PreRunName ;
rootOneNode . ToolTip = itemOneModel . PreRunName ;
rootOneNode . CommandName = "" ;
rootOneNode . EnableClickEvent = false ;
rootOneNode . EnableExpandEvent = false ;
rootNode . Nodes . Add ( rootOneNode ) ;
rootOneNode . Expanded = true ;
var subTwoList = syslist . Where ( g = > g . ParentId = = itemOneModel . PreRunId ) . GroupBy ( x = > new { x . PreRunId , x . ProcessesId , x . PreRunCode , x . PreRunName } ) ;
foreach ( var itemTwo in subTwoList )
{
TreeNode rootTwoNode = new TreeNode ( ) ;
rootTwoNode . NodeID = itemTwo . Key . PreRunId ;
rootTwoNode . Text = itemTwo . Key . PreRunName ;
rootTwoNode . ToolTip = itemTwo . Key . PreRunName ;
rootTwoNode . CommandName = "" ;
rootTwoNode . EnableClickEvent = false ;
rootTwoNode . EnableExpandEvent = false ;
rootOneNode . Nodes . Add ( rootTwoNode ) ;
rootTwoNode . Expanded = true ;
var worklist = list . Where ( a = > a . PreRunId = = itemTwo . Key . PreRunId ) . GroupBy ( x = > new { x . WorkPackId , x . WorkPackName , x . WorkPackCode } ) . ToList ( ) ;
if ( worklist . Count > 0 )
{
foreach ( var itemWork in worklist . OrderBy ( o = > o . Key . WorkPackCode ) )
{
TreeNode newNode = new TreeNode ( ) ;
newNode . Text = itemWork . Key . WorkPackName ;
newNode . NodeID = itemWork . Key . WorkPackId + "|" + itemTwo . Key . PreRunId ;
newNode . ToolTip = itemWork . Key . WorkPackName ;
newNode . CommandName = "" ;
newNode . Expanded = true ;
newNode . EnableClickEvent = true ;
newNode . EnableExpandEvent = true ;
rootTwoNode . Nodes . Add ( newNode ) ;
}
}
}
}
}
}
}
/// <summary>
/// 点击TreeView
/// </summary>
protected void tvControlItem_NodeCommand ( object sender , TreeCommandEventArgs e )
{
this . BindGrid ( ) ;
}
#endregion
#region 绑 定 数 据
/// <summary>
/// 数据绑定
/// </summary>
public void BindGrid ( )
{
string strSql = @"select a.TailTermId,a.ProjectId,d.ProjectCode,d.ProjectName,a.TailTermCode,a.ConstructionUnit,b.UnitName,a.SubInspectId,a.TermItemId,c.WorkInspectName,a.QuestionDesc,a.RectifyTime,a.RectifyOpinion,a.InspectUser,e.UserName as InspectUserName,a.ApproveUser,f.UserName as ApproveUserName,a.HandleUser,g.UserName as HandleUserName,a.ApproveState,(case a.ApproveState when 0 then '待提交处理' when 1 then '待处理' when 2 then '处理退回' when 3 then '审核退回' when 4 then '待审核' when 5 then '审核通过' else '' end) as ApproveStateName,a.AddTime,a.WorkPackId,c.SystemId,a.AdjustCompleteTime,DATEDIFF(DAY, GETDATE(),a.AdjustCompleteTime) as AdjustDiffDay from TestRun_InspectTailTerm as a inner join Base_Unit as b on a.ConstructionUnit=b.UnitId inner join TestRun_SubInspectTermItem as c on c.TermItemId=a.TermItemId inner join Base_Project as d on d.ProjectId=a.ProjectId inner join Sys_User as e on e.UserId=a.InspectUser inner join Sys_User as f on f.UserId=a.ApproveUser inner join Sys_User as g on g.UserId=a.HandleUser where 1=1 and a.ProjectId=@projectid and a.InspectUser=@InspectUser" ;
List < SqlParameter > listStr = new List < SqlParameter > ( ) ;
listStr . Add ( new SqlParameter ( "@projectid" , this . CurrUser . LoginProjectId ) ) ;
listStr . Add ( new SqlParameter ( "@InspectUser" , this . CurrUser . UserId ) ) ;
if ( this . tvControlItem . SelectedNodeID . Split ( '|' ) . Length > 0 )
{
var workPackId = this . tvControlItem . SelectedNodeID . Split ( '|' ) . First ( ) ;
strSql + = " and a.WorkPackId=@WorkPackId" ;
listStr . Add ( new SqlParameter ( "@WorkPackId" , workPackId ) ) ;
}
if ( this . tvControlItem . SelectedNodeID . Split ( '|' ) . Length > 1 )
{
var systemId = this . tvControlItem . SelectedNodeID . Split ( '|' ) . Last ( ) ;
strSql + = " and c.SystemId=@SystemId" ;
listStr . Add ( new SqlParameter ( "@SystemId" , systemId ) ) ;
}
//审核状态
if ( ! string . IsNullOrWhiteSpace ( ddlApproveState . SelectedValue ) )
{
strSql + = " and a.ApproveState=@ApproveState" ;
listStr . Add ( new SqlParameter ( "@ApproveState" , ddlApproveState . SelectedValue ) ) ;
}
//开始时间
if ( ! string . IsNullOrWhiteSpace ( txtStartTime . Text ) )
{
strSql + = $" and a.RectifyTime>='{DateTime.Parse(txtStartTime.Text.Trim()).ToString(" yyyy - MM - dd ")} 00:00:00'" ;
}
//结束时间
if ( ! string . IsNullOrWhiteSpace ( txtEndTime . Text ) )
{
2024-04-01 10:29:19 +08:00
strSql + = $" and a.RectifyTime<='{DateTime.Parse(txtEndTime.Text.Trim()).ToString(" yyyy - MM - dd ")} 23:59:59'" ;
2024-01-05 09:40:50 +08:00
}
strSql + = " order by a.AddTime asc" ;
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 ( ) ;
}
/// <summary>
/// 分页
/// </summary>
protected void Grid1_PageIndexChange ( object sender , GridPageEventArgs e )
{
Grid1 . PageIndex = e . NewPageIndex ;
BindGrid ( ) ;
}
/// <summary>
/// 双击事件
/// </summary>
protected void Grid1_RowDoubleClick ( object sender , GridRowClickEventArgs e )
{
btnMenuModify_Click ( null , null ) ;
}
/// <summary>
/// 分页下拉框
/// </summary>
protected void ddlPageSize_SelectedIndexChanged ( object sender , EventArgs e )
{
Grid1 . PageSize = Convert . ToInt32 ( ddlPageSize . SelectedValue ) ;
BindGrid ( ) ;
}
/// <summary>
/// 排序
/// </summary>
protected void Grid1_Sort ( object sender , GridSortEventArgs e )
{
BindGrid ( ) ;
}
/// <summary>
/// 行数据处理事件
/// </summary>
protected void Grid1_RowDataBound ( object sender , GridRowEventArgs e )
{
DataRowView row = e . DataItem as DataRowView ;
// 入学年份
int diffDay = Convert . ToInt32 ( row [ "AdjustDiffDay" ] ) ;
TemplateField AdjustDiffDay = Grid1 . FindColumn ( "AdjustDiffDay" ) as TemplateField ;
int approveState = int . Parse ( Grid1 . DataKeys [ e . RowIndex ] [ 1 ] . ToString ( ) ) ;
if ( approveState ! = 5 )
{
if ( diffDay > 0 )
{
e . CellAttributes [ AdjustDiffDay . ColumnIndex ] [ "data-color" ] = "color1" ;
}
else if ( diffDay = = 0 )
{
e . CellAttributes [ AdjustDiffDay . ColumnIndex ] [ "data-color" ] = "color2" ;
}
else if ( diffDay < 0 )
{
e . CellAttributes [ AdjustDiffDay . ColumnIndex ] [ "data-color" ] = "color3" ;
}
}
}
#endregion
#region 按 钮
/// <summary>
/// 修改
/// </summary>
protected void btnMenuModify_Click ( object sender , EventArgs e )
{
if ( Grid1 . SelectedRowIndexArray . Length = = 0 )
{
Alert . ShowInTop ( "请至少选择一条记录!" , MessageBoxIcon . Warning ) ;
return ;
}
var passLs = new List < int > ( ) { 0 , 2 } ;
var model = Funs . DB . TestRun_InspectTailTerm . FirstOrDefault ( x = > x . TailTermId = = Grid1 . SelectedRowID ) ;
if ( model ! = null )
{
if ( ! passLs . Contains ( model . ApproveState . Value ) )
{
Alert . ShowInTop ( "只可编辑“待提交处理”和“处理退回”的记录!" , MessageBoxIcon . Warning ) ;
return ;
}
}
PageContext . RegisterStartupScript ( Window1 . GetShowReference ( String . Format ( "InspectTailTermEdit.aspx?TailTermId={0}" , Grid1 . SelectedRowID , "编辑 - " ) ) ) ;
}
/// <summary>
/// 编辑
/// </summary>
protected void btnModify_Click ( object sender , EventArgs e )
{
btnMenuModify_Click ( null , null ) ;
}
/// <summary>
/// 新增
/// </summary>
protected void btnNew_Click ( object sender , EventArgs e )
{
PageContext . RegisterStartupScript ( Window1 . GetShowReference ( String . Format ( "InspectTailTermEdit.aspx?TailTermId=" , "新增 - " ) ) ) ;
}
/// <summary>
/// 查看
/// </summary>
protected void btnMenuView_Click ( object sender , EventArgs e )
{
if ( Grid1 . SelectedRowIndexArray . Length = = 0 )
{
Alert . ShowInTop ( "请至少选择一条记录!" , MessageBoxIcon . Warning ) ;
return ;
}
PageContext . RegisterStartupScript ( Window1 . GetShowReference ( String . Format ( "InspectTailTermEdit.aspx?IsView=true&TailTermId={0}" , Grid1 . SelectedRowID , "查看 - " ) ) ) ;
}
/// <summary>
/// 删除
/// </summary>
protected void btnMenuDel_Click ( object sender , EventArgs e )
{
if ( Grid1 . SelectedRowIndexArray . Length = = 0 )
{
Alert . ShowInTop ( "请至少选择一条记录!" , MessageBoxIcon . Warning ) ;
return ;
}
var model = Funs . DB . TestRun_InspectTailTerm . FirstOrDefault ( x = > x . TailTermId = = Grid1 . SelectedRowID ) ;
if ( model ! = null )
{
if ( model . ApproveState ! = 0 )
{
Alert . ShowInTop ( "只可删除待提交的记录!" , MessageBoxIcon . Warning ) ;
return ;
}
Funs . DB . TestRun_InspectTailTerm . DeleteOnSubmit ( model ) ;
Funs . DB . SubmitChanges ( ) ;
BindGrid ( ) ;
Alert . ShowInTop ( "删除成功!" , MessageBoxIcon . Success ) ;
}
}
/// <summary>
/// 查询
/// </summary>
protected void btnQuery_Click ( object sender , EventArgs e )
{
BindGrid ( ) ;
}
/// <summary>
/// 弹框关闭
/// </summary>
protected void Window1_Close ( object sender , WindowCloseEventArgs e )
{
BindGrid ( ) ;
}
/// <summary>
/// 提交处理
/// </summary>
protected void btnSubmitReview_Click ( object sender , EventArgs e )
{
if ( Grid1 . SelectedRowIndexArray . Length = = 0 )
{
Alert . ShowInTop ( "请至少选择一条记录!" , MessageBoxIcon . Warning ) ;
return ;
}
var passLs = new List < int > ( ) { 0 , 2 } ;
var model = Funs . DB . TestRun_InspectTailTerm . FirstOrDefault ( x = > x . TailTermId = = Grid1 . SelectedRowID ) ;
if ( model ! = null )
{
//0:待提交处理1:待处理2:处理退回3:审核退回4:待审核5:审核通过
if ( ! passLs . Contains ( model . ApproveState . Value ) )
{
Alert . ShowInTop ( "只可提交“待提交处理”和“处理退回”的记录!" , MessageBoxIcon . Warning ) ;
return ;
}
model . ApproveState = 1 ;
Funs . DB . SubmitChanges ( ) ;
BindGrid ( ) ;
Alert . ShowInTop ( "提交成功!" , MessageBoxIcon . Success ) ;
}
}
/// <summary>
/// 撤回提交
/// </summary>
protected void btnwithdraw_Click ( object sender , EventArgs e )
{
if ( Grid1 . SelectedRowIndexArray . Length = = 0 )
{
Alert . ShowInTop ( "请至少选择一条记录!" , MessageBoxIcon . Warning ) ;
return ;
}
var model = Funs . DB . TestRun_InspectTailTerm . FirstOrDefault ( x = > x . TailTermId = = Grid1 . SelectedRowID ) ;
if ( model ! = null )
{
//0:待提交处理1:待处理2:处理退回3:审核退回4:待审核5:审核通过
if ( model . ApproveState ! = 1 )
{
Alert . ShowInTop ( "只可撤回“待处理”的记录!" , MessageBoxIcon . Warning ) ;
return ;
}
model . ApproveState = 0 ;
Funs . DB . SubmitChanges ( ) ;
BindGrid ( ) ;
Alert . ShowInTop ( "撤回成功!" , MessageBoxIcon . Success ) ;
}
}
#endregion
#region 私 有 方 法
/// <summary>
/// 是否逾期返回
/// </summary>
/// <returns></returns>
public string IsOverdue ( object diffDayVal , object approveStateVal )
{
var result = string . Empty ;
var diffDay = 0 ;
var approveState = 0 ;
if ( diffDayVal ! = null ) diffDay = int . Parse ( diffDayVal . ToString ( ) ) ;
if ( approveStateVal ! = null ) approveStateVal = int . Parse ( approveStateVal . ToString ( ) ) ;
if ( approveState ! = 5 )
{
if ( diffDay > 0 )
{
result = "未逾期" ;
}
else if ( diffDay = = 0 )
{
result = "即将逾期" ;
}
else if ( diffDay < 0 )
{
result = "已逾期" ;
}
}
else
{
result = "整改完毕" ;
}
return result ;
}
#endregion
}
}