施工人力

This commit is contained in:
geh
2025-12-01 10:24:34 +08:00
parent da23e72a7f
commit 07b7d8426a
11 changed files with 561 additions and 212 deletions
@@ -2,6 +2,8 @@
using Model;
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Threading.Tasks;
using System.Web.Http;
@@ -200,5 +202,102 @@ namespace WebAPI.Controllers
}
#endregion
#region
/// <summary>
/// 统计考勤人员考勤数据
/// </summary>
/// <returns></returns>
[HttpPost]
public Model.ReturnData SynSitePersonCheckingStatistics()
{
var responeData = new Model.ReturnData();
responeData.time = DateTime.Now.ToString();
using (SqlConnection Connection = new SqlConnection(Funs.ConnString))
{
try
{
string sql = @"
TRUNCATE TABLE dbo.SitePerson_Checking_Statistics;
INSERT INTO dbo.SitePerson_Checking_Statistics (
ProjectId,
UnitId,
UnitName,
WorkAreaId,
WorkAreaName,
WorkPostId,
WorkPostName,
IntoOutTime,
num
)
SELECT
a.ProjectId,
b.UnitId,
b.UnitName,
b.WorkAreaId,
b.WorkAreaName,
p.WorkPostId,
w.WorkPostName,
CAST(b.IntoOutTime AS DATE) AS IntoOutTime,
COUNT(1) AS num
FROM (
SELECT
PersonId,
CAST(IntoOutTime AS DATE) AS IntoOutTime,
MAX(CheckingId) AS MaxCheckingId,
ProjectId
FROM SitePerson_Checking
GROUP BY PersonId, CAST(IntoOutTime AS DATE), ProjectId
) a
JOIN SitePerson_Checking b ON a.MaxCheckingId = b.CheckingId
LEFT JOIN SitePerson_Person p ON a.PersonId = p.PersonId
LEFT JOIN Base_WorkPost w ON p.WorkPostId = w.WorkPostId
LEFT JOIN Base_Project bp ON a.ProjectId = bp.ProjectId
where bp.ProjectState='1'
GROUP BY
a.ProjectId,
b.UnitId,
b.UnitName,
b.WorkAreaId,
b.WorkAreaName,
p.WorkPostId,
w.WorkPostName,
CAST(b.IntoOutTime AS DATE);";
Connection.Open();
SqlCommand command = new SqlCommand(sql, Connection)
{
CommandTimeout = 0,
CommandType = CommandType.Text
};
int result = command.ExecuteNonQuery();
responeData.message = $"执行成功,共插入 {result} 条记录";
}
catch (SqlException sqlEx)
{
responeData.code = 0;
responeData.message = $"数据库操作失败: {sqlEx.Message}";
}
catch (Exception ex)
{
responeData.code = 0;
responeData.message = $"执行失败: {ex.Message}";
}
finally
{
Connection.Close();
}
}
return responeData;
}
#endregion
}
}