This commit is contained in:
李超 2026-04-26 17:52:27 +08:00
parent 098c1ccacc
commit 2471c8b18b
1 changed files with 55 additions and 43 deletions

View File

@ -55,23 +55,28 @@ namespace FineUIPro.Web.Door
/// </summary>
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<SqlParameter> listStr = new List<SqlParameter>
{
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<string> resId = new List<string>();
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; ";
/// <summary>
/// 计算合计
/// </summary>
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 +"小时"}
};