diff --git a/SGGL/FineUIPro.Web/Door/InOutRecord.aspx.cs b/SGGL/FineUIPro.Web/Door/InOutRecord.aspx.cs index d4443c78..abc71fa1 100644 --- a/SGGL/FineUIPro.Web/Door/InOutRecord.aspx.cs +++ b/SGGL/FineUIPro.Web/Door/InOutRecord.aspx.cs @@ -55,23 +55,28 @@ namespace FineUIPro.Web.Door /// private void GetPersonStatistic() { - string strSql = @"WITH CTE AS ( - SELECT ROW_NUMBER() OVER (PARTITION BY Record.IDCardNo,RecordDate ORDER BY OffDuty3 desc,WorkIn3,OffDuty2 desc,WorkIn2,OffDuty1 desc,WorkIn1) as rn - ,NewID,Record.ProjectId,InstallationName,P.UnitId,U.UnitName,P.PersonName,RecordDate,Record.EmployName - ,IDCardNo,P.Nation,B.dictName AS NationName ,PostName,WorkIn1,OffDuty1,WorkIn2,OffDuty2,WorkIn3,OffDuty3,ManHours - ,T.TeamGroupId,T.TeamGroupName,P.WorkPostId,W.WorkPostName, ManOverHours - FROM dbo.t_d_EmployInOutRecord AS Record - LEFT JOIN SitePerson_Person AS P ON Record.ProjectId=P.ProjectId AND Record.IDCardNo=P.IdentityCard - LEFT JOIN Base_Unit AS U ON P.UnitId =U.UnitId - LEFT JOIN ProjectData_TeamGroup AS T ON P.TeamGroupId=T.TeamGroupId - LEFT JOIN Base_WorkPost AS W ON P.WorkPostId =W.WorkPostId - LEFT JOIN RealName_BasicData AS B ON B.dictTypeCode='MINZU_TYPE' AND B.dictCode=P.Nation - WHERE Record.ProjectId = @ProjectId"; + string strSql = @" + SELECT NewID,ManOverHours, ManHours + FROM dbo.t_d_EmployInOutRecord AS Record + "; List listStr = new List { new SqlParameter("@ProjectId", this.ProjectId) }; - + if ("-1" != rbPost.SelectedValue) + { + strSql += " LEFT JOIN SitePerson_Person AS P ON Record.ProjectId=P.ProjectId AND Record.IDCardNo=P.IdentityCard "; + } + strSql += " WHERE Record.ProjectId = @ProjectId "; + if (rbPost.SelectedValue == "0") + { + strSql += " AND P.OutTime IS NOT NULL"; + } + else if (rbPost.SelectedValue == "1") + { + strSql += " AND P.OutTime IS NULL"; + } + if (this.drpUnit.SelectedValue != Const._Null && !string.IsNullOrEmpty(this.drpUnit.SelectedValue)) { int i = 0; @@ -79,11 +84,11 @@ namespace FineUIPro.Web.Door { if (i == 0) { - strSql += " AND ( P.UnitId = @UnitId" + i.ToString(); + strSql += " AND ( Record.UnitId = @UnitId" + i.ToString(); } else { - strSql += " OR P.UnitId = @UnitId" + i.ToString(); + strSql += " OR Record.UnitId = @UnitId" + i.ToString(); } listStr.Add(new SqlParameter("@UnitId" + i.ToString(), item.Value)); @@ -99,17 +104,17 @@ namespace FineUIPro.Web.Door { if (i == 0) { - strSql += " AND ( P.WorkPostId = @WorkPostId" + i.ToString(); + strSql += " AND ( Record.PostId = @WorkPostId" + i.ToString(); } else { - strSql += " OR P.WorkPostId = @WorkPostId" + i.ToString(); + strSql += " OR Record.PostId = @WorkPostId" + i.ToString(); } listStr.Add(new SqlParameter("@WorkPostId" + i.ToString(), item.Value)); i++; } - strSql += " ) "; + strSql += " "; } if (this.drpWorkTeam.SelectedValue != Const._Null && !string.IsNullOrEmpty(this.drpWorkTeam.SelectedValue)) @@ -119,54 +124,59 @@ namespace FineUIPro.Web.Door { if (i == 0) { - strSql += " AND ( T.TeamGroupId = @TeamGroupId" + i.ToString(); + strSql += " AND ( Record.DepartmentID = @TeamGroupId" + i.ToString(); } else { - strSql += " OR T.TeamGroupId = @TeamGroupId" + i.ToString(); + strSql += " OR Record.DepartmentID = @TeamGroupId" + i.ToString(); } listStr.Add(new SqlParameter("@TeamGroupId" + i.ToString(), item.Value)); i++; } - strSql += " ) "; + strSql += " ) "; } if (!string.IsNullOrEmpty(this.txtStartDate.Text)) { - strSql += " AND RecordDate >= @StartDate"; + strSql += " AND Record.RecordDate >= @StartDate"; listStr.Add(new SqlParameter("@StartDate", this.txtStartDate.Text)); } - if (rbPost.SelectedValue == "0") - { - strSql += " AND P.OutTime IS NOT NULL"; - } - else if (rbPost.SelectedValue == "1") - { - strSql += " AND P.OutTime IS NULL"; - } + if (!string.IsNullOrEmpty(this.txtEndDate.Text)) { - strSql += " AND RecordDate <= @EndDate"; + strSql += " AND Record.RecordDate <= @EndDate"; listStr.Add(new SqlParameter("@EndDate", this.txtEndDate.Text)); } if (!string.IsNullOrEmpty(this.txtName.Text.Trim())) { - strSql += " AND P.PersonName LIKE @PersonName"; + strSql += " AND Record.EmployName LIKE @PersonName"; listStr.Add(new SqlParameter("@PersonName", "%" + this.txtName.Text.Trim() + "%")); } - strSql += @" ) -SELECT NewID,ProjectId,InstallationName,UnitId,UnitName,PersonName,RecordDate,EmployName,IDCardNo,Nation,NationName ,PostName,WorkIn1,OffDuty1,WorkIn2,OffDuty2,WorkIn3,OffDuty3,ManHours,TeamGroupId,TeamGroupName,WorkPostId,WorkPostName, ManOverHours -FROM CTE -WHERE rn = 1; "; + strSql += @" order by Record.RecordDate desc, OffDuty3 desc,WorkIn3,OffDuty2 desc,WorkIn2,OffDuty1 desc,WorkIn1 "; SqlParameter[] parameter = listStr.ToArray(); - DataTable tb = SQLHelper.GetDataTableRunText(strSql, parameter); - Grid1.RecordCount = tb.Rows.Count; - var table = this.GetPagedDataTable(Grid1, tb); - this.OutputSummaryData(tb); ///取合计值 - Grid1.DataSource = table; + DataTable tbres = SQLHelper.GetDataTableRunText(strSql, parameter); + + List resId = new List(); + if (tbres != null) + { + foreach(DataRow row in tbres.Rows) + { + resId.Add(row["NewID"].ToString()); + } + } + string sqlData = @"SELECT NewID,ProjectId,InstallationName,UnitId,UnitName, EmployName as PersonName,RecordDate,EmployName,IDCardNo,Nation,NationName ,PostName,WorkIn1,OffDuty1,WorkIn2,OffDuty2,WorkIn3,OffDuty3,ManHours,DepartmentID TeamGroupId,DepartName TeamGroupName,PostId WorkPostId,postname WorkPostName, ManOverHours + FROM t_d_EmployInOutRecord + where NewID in('"+string.Join("','",resId)+"')"; + + DataTable tb = SQLHelper.GetDataTableRunText(sqlData, null); + Grid1.RecordCount = tbres.Rows.Count; + //var table = this.GetPagedDataTable(Grid1, tb); + this.OutputSummaryData(tbres); ///取合计值 + + Grid1.DataSource = tb; Grid1.DataBind(); } @@ -174,8 +184,10 @@ WHERE rn = 1; "; /// /// 计算合计 /// - private void OutputSummaryData(DataTable tb) + private void OutputSummaryData( DataTable tb) { + + int PSum = 0; int OverHoursSum = 0; int ManHoursSum = 0; @@ -189,7 +201,7 @@ WHERE rn = 1; "; JObject summary = new JObject { { "UnitName", "合计:" }, - { "EmployName", PSum+"人" }, + { "EmployName",PSum+ "人" }, { "ManHours", ManHoursSum+"小时" }, { "ManOverHours", OverHoursSum +"小时"} };