From 8ccc25e07458e9bd0c84e0234f940936078ed587 Mon Sep 17 00:00:00 2001
From: fei550 <1420031550@qq.com>
Date: Wed, 24 Dec 2025 16:27:07 +0800
Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E8=80=83=E5=8B=A4=E5=AF=B9?=
=?UTF-8?q?=E6=8E=A5=E9=9C=80=E8=A6=81=E4=BA=BA=E5=91=98=E6=8E=A5=E5=8F=A3?=
=?UTF-8?q?=E5=92=8C=E8=80=83=E5=8B=A4=E8=AE=B0=E5=BD=95=E6=8E=A5=E5=8F=A3?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
SGGL/BLL/API/APIPersonService.cs | 81 +++++++++----
SGGL/Model/HSSE/PersonInOutRecordInput.cs | 31 +++++
SGGL/Model/HSSE/ProjectPersonInput.cs | 20 ----
SGGL/Model/HSSE/ProjectPersonOutput.cs | 124 ++++++++++++++++++++
SGGL/Model/Model.csproj | 2 +
SGGL/WebAPI/Controllers/PersonController.cs | 81 +++++++++++--
6 files changed, 289 insertions(+), 50 deletions(-)
create mode 100644 SGGL/Model/HSSE/PersonInOutRecordInput.cs
create mode 100644 SGGL/Model/HSSE/ProjectPersonOutput.cs
diff --git a/SGGL/BLL/API/APIPersonService.cs b/SGGL/BLL/API/APIPersonService.cs
index c111966b..9f46216d 100644
--- a/SGGL/BLL/API/APIPersonService.cs
+++ b/SGGL/BLL/API/APIPersonService.cs
@@ -299,7 +299,7 @@ namespace BLL
///
/// 查询过滤条件
///
- public static List getPersonByFilter(Model.ProjectPersonInput filter)
+ public static List getPersonByFilter(Model.ProjectPersonInput filter)
{
using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
{
@@ -315,6 +315,12 @@ namespace BLL
query = query.Where(x => x.ProjectId == filter.ProjectId);
}
+ // 项目名称过滤(模糊查询)
+ if (!string.IsNullOrEmpty(filter.ProjectName))
+ {
+ query = query.Where(x => x.ProjectName.Contains(filter.ProjectName));
+ }
+
// 人员ID过滤
if (!string.IsNullOrEmpty(filter.PersonId))
{
@@ -361,44 +367,26 @@ namespace BLL
if (!string.IsNullOrEmpty(filter.WorkPostName))
{
query = query.Where(x => x.WorkPostName.Contains(filter.WorkPostName));
- }
-
- // 性别过滤
- if (!string.IsNullOrEmpty(filter.Sex))
- {
- query = query.Where(x => x.Sex == filter.Sex);
- }
-
- // 电话号码过滤(模糊查询)
- if (!string.IsNullOrEmpty(filter.Telephone))
- {
- query = query.Where(x => x.Telephone.Contains(filter.Telephone));
- }
+ }
}
// 默认只返回在岗人员
query = query.Where(x => x.States == Const.ProjectPersonStates_1);
var persons = from x in query orderby x.CardNo descending
- select new Model.PersonItem
+ select new Model.ProjectPersonOutput
{
PersonId = x.PersonId,
SitePersonId = x.SitePersonId,
CardNo = x.CardNo,
PersonName = x.PersonName,
SexName = x.SexName,
- Sex = x.Sex,
IdentityCard = x.IdentityCard,
- Address = x.Address,
ProjectId = x.ProjectId,
- ProjectCode = x.ProjectCode,
ProjectName = x.ProjectName,
UnitId = x.UnitId,
- UnitCode = x.UnitCode,
UnitName = x.UnitName,
- TeamGroupId = x.TeamGroupId,
TeamGroupName = x.TeamGroupName,
- WorkPostId = x.WorkPostId,
WorkPostName = x.WorkPostName,
InTime = string.Format("{0:yyyy-MM-dd}", x.InTime),
OutTime = string.Format("{0:yyyy-MM-dd}", x.OutTime),
@@ -406,10 +394,8 @@ namespace BLL
Telephone = x.Telephone,
PhotoUrl = x.PhotoUrl,
DepartName = x.DepartName,
- WorkAreaId = x.WorkAreaId,
WorkAreaName = x.WorkAreaName,
PostType = x.PostType,
- IsForeign = x.IsForeign.HasValue ? x.IsForeign : false,
PersonType = x.PersonType,
PersonTypeName = x.PersonType == "2" ? "外聘" : (x.PersonType == "3" ? "第三方" : "员工"),
PostTypeName = db.Sys_Const.FirstOrDefault(z => z.GroupId == ConstValue.Group_PostType && z.ConstValue == x.PostType).ConstText,
@@ -1113,6 +1099,55 @@ namespace BLL
}
#endregion
+ #region 根据条件获取人员出入场记录(支持多条件过滤)
+ ///
+ /// 根据条件获取人员出入场记录(支持多条件过滤)
+ ///
+ /// 查询过滤条件
+ ///
+ public static List getPersonInOutListByFilter(Model.PersonInOutRecordInput filter)
+ {
+ using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
+ {
+ var query = from x in db.SitePerson_PersonInOut
+ join y in db.SitePerson_Person on x.PersonId equals y.PersonId
+ where x.ChangeTime >= filter.StartTime && x.ChangeTime <= filter.EndTime
+ select new Model.PersonInOutItem
+ {
+ PersonId = x.PersonId,
+ PersonName = y.PersonName,
+ ProjectId = x.ProjectId,
+ UnitId = y.UnitId,
+ UnitName = db.Base_Unit.First(z => z.UnitId == y.UnitId).UnitName,
+ WorkPostId = y.WorkPostId,
+ WorkPostName = db.Base_WorkPost.First(z => z.WorkPostId == y.WorkPostId).WorkPostName,
+ IsIn = x.IsIn,
+ IsInName = x.IsIn == true ? "进场" : "出场",
+ ChangeTime = string.Format("{0:yyyy-MM-dd HH:mm}", x.ChangeTime),
+ ChangeTimeD = x.ChangeTime,
+ };
+
+ // 添加过滤条件
+ if (filter != null)
+ {
+ // 单位名称过滤(模糊查询)
+ if (!string.IsNullOrEmpty(filter.UnitName))
+ {
+ query = query.Where(x => x.UnitName.Contains(filter.UnitName));
+ }
+
+ // 人员姓名过滤(模糊查询)
+ if (!string.IsNullOrEmpty(filter.PersonName))
+ {
+ query = query.Where(x => x.PersonName.Contains(filter.PersonName));
+ }
+ }
+
+ return query.OrderByDescending(x => x.ChangeTimeD).ToList();
+ }
+ }
+ #endregion
+
#region 根据identityCard获取人员资质信息
///
/// 根据identityCard获取人员资质信息
diff --git a/SGGL/Model/HSSE/PersonInOutRecordInput.cs b/SGGL/Model/HSSE/PersonInOutRecordInput.cs
new file mode 100644
index 00000000..659d32ea
--- /dev/null
+++ b/SGGL/Model/HSSE/PersonInOutRecordInput.cs
@@ -0,0 +1,31 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Model
+{
+ ///
+ /// 人员出入记录入参
+ ///
+ public class PersonInOutRecordInput
+ {
+ ///
+ /// 单位名称
+ ///
+ public string UnitName { get; set; }
+ ///
+ /// 人员姓名
+ ///
+ public string PersonName { get; set; }
+ ///
+ /// 开始时间
+ ///
+ public DateTime StartTime { get; set; }
+ ///
+ /// 结束时间
+ ///
+ public DateTime EndTime { get; set; }
+ }
+}
diff --git a/SGGL/Model/HSSE/ProjectPersonInput.cs b/SGGL/Model/HSSE/ProjectPersonInput.cs
index 68c2d405..e594b832 100644
--- a/SGGL/Model/HSSE/ProjectPersonInput.cs
+++ b/SGGL/Model/HSSE/ProjectPersonInput.cs
@@ -26,14 +26,6 @@ namespace Model
///
public string PersonName { get; set; }
///
- /// 性别
- ///
- public string SexName { get; set; }
- ///
- /// 性别
- ///
- public string Sex { get; set; }
- ///
/// 身份证号码
///
public string IdentityCard { get; set; }
@@ -60,18 +52,6 @@ namespace Model
///
public string WorkPostName { get; set; }
- ///
- /// 电话
- ///
- public string Telephone { get; set; }
- ///
- /// 照片路径
- ///
- public string PhotoUrl { get; set; }
- ///
- /// 照片二进制
- ///
- public string headImage { get; set; }
///
/// 部门名称
///
diff --git a/SGGL/Model/HSSE/ProjectPersonOutput.cs b/SGGL/Model/HSSE/ProjectPersonOutput.cs
new file mode 100644
index 00000000..b0fb4ebd
--- /dev/null
+++ b/SGGL/Model/HSSE/ProjectPersonOutput.cs
@@ -0,0 +1,124 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Model
+{
+ public class ProjectPersonOutput
+ {
+ ///
+ /// 人员主键ID
+ ///
+ public string PersonId { get; set; }
+ ///
+ /// 项目人员主键ID
+ ///
+ public string SitePersonId { get; set; }
+ ///
+ /// 卡号
+ ///
+ public string CardNo { get; set; }
+ ///
+ /// 姓名
+ ///
+ public string PersonName { get; set; }
+ ///
+ /// 性别
+ ///
+ public string SexName { get; set; }
+ ///
+ /// 身份证号码
+ ///
+ public string IdentityCard { get; set; }
+
+ ///
+ /// 项目id
+ ///
+ public string ProjectId { get; set; }
+ ///
+ /// 项目名称
+ ///
+ public string ProjectName { get; set; }
+ ///
+ /// 单位ID
+ ///
+ public string UnitId { get; set; }
+ ///
+ /// 单位名称
+ ///
+ public string UnitName { get; set; }
+ ///
+ /// 班组名称
+ ///
+ public string TeamGroupName { get; set; }
+ ///
+ /// 岗位名称
+ ///
+ public string WorkPostName { get; set; }
+ ///
+ /// 入场时间
+ ///
+ public string InTime { get; set; }
+ ///
+ /// 出场时间
+ ///
+ public string OutTime { get; set; }
+ ///
+ /// 出场原因
+ ///
+ public string OutResult { get; set; }
+ ///
+ /// 电话
+ ///
+ public string Telephone { get; set; }
+ ///
+ /// 照片路径
+ ///
+ public string PhotoUrl { get; set; }
+ ///
+ /// 部门名称
+ ///
+ public string DepartName { get; set; }
+
+ ///
+ /// 作业区域名称
+ ///
+ public string WorkAreaName { get; set; }
+
+ ///
+ /// 岗位类型
+ ///
+ public string PostType
+ {
+ get;
+ set;
+ }
+ ///
+ /// 岗位类型名称
+ ///
+ public string PostTypeName
+ {
+ get;
+ set;
+ }
+ ///
+ /// 人员类型
+ ///
+ public string PersonType
+ {
+ get;
+ set;
+ }
+ ///
+ /// 人员类型
+ ///
+ public string PersonTypeName
+ {
+ get;
+ set;
+ }
+
+ }
+}
diff --git a/SGGL/Model/Model.csproj b/SGGL/Model/Model.csproj
index bddb95ec..a1b83dcc 100644
--- a/SGGL/Model/Model.csproj
+++ b/SGGL/Model/Model.csproj
@@ -252,7 +252,9 @@
+
+
diff --git a/SGGL/WebAPI/Controllers/PersonController.cs b/SGGL/WebAPI/Controllers/PersonController.cs
index fd8a1989..0313f87e 100644
--- a/SGGL/WebAPI/Controllers/PersonController.cs
+++ b/SGGL/WebAPI/Controllers/PersonController.cs
@@ -102,25 +102,38 @@ namespace WebAPI.Controllers
///
/// 根据条件获取项目人员信息(支持分页和过滤)
///
- /// 查询过滤条件
+ /// 查询过滤条件(ProjectName为必填参数)
/// 每页条数
/// 页码(从1开始)
/// 是否返回全部数据
///
- public Model.ResponeData getPersonByFilter([FromUri] Model.ProjectPersonInput filter, int pagesize = 15, int pageindex = 1, bool returnAll = false)
+ public Model.ResponeData getPersonByFilter([FromUri] Model.ProjectPersonInput filter, int? pagesize = 15, int? pageindex = 1, bool ? returnAll = false)
{
var responeData = new Model.ResponeData();
try
{
+ // 验证必填参数 ProjectName
+ if (filter == null || string.IsNullOrEmpty(filter.ProjectName))
+ {
+ responeData.code = 2;
+ responeData.message = "ProjectName为必填参数!";
+ return responeData;
+ }
+
+ // 处理可空参数的默认值
+ int actualPagesize = pagesize ?? 15;
+ int actualPageindex = pageindex ?? 1;
+ bool actualReturnAll = returnAll ?? false;
+
var getDataList = APIPersonService.getPersonByFilter(filter);
int pageCount = getDataList.Count;
- if (!returnAll && pageCount > 0 && pageindex > 0 && pagesize > 0)
+ if (!actualReturnAll && pageCount > 0 && actualPageindex > 0 && actualPagesize > 0)
{
- getDataList = getDataList.Skip(pagesize * (pageindex - 1)).Take(pagesize).ToList();
+ getDataList = getDataList.Skip(actualPagesize * (actualPageindex - 1)).Take(actualPagesize).ToList();
}
- responeData.data = new { pageCount, pageindex, pagesize, getDataList };
+ responeData.data = new { pageCount, pageindex = actualPageindex, pagesize = actualPagesize, getDataList };
}
catch (Exception ex)
{
@@ -999,8 +1012,8 @@ namespace WebAPI.Controllers
#region 根据人员ID获取个人出入场记录
///
/// 根据人员ID获取个人出入场记录
- ///
- ///
+ ///
+ ///
///
///
/// 页码
@@ -1027,6 +1040,60 @@ namespace WebAPI.Controllers
}
#endregion
+ #region 根据条件获取人员出入场记录(支持分页和过滤)
+ ///
+ /// 根据条件获取人员出入场记录(支持分页和过滤)
+ ///
+ /// 查询过滤条件(StartTime和EndTime必填)
+ /// 每页条数
+ /// 页码(从1开始)
+ /// 是否返回全部数据
+ ///
+ public Model.ResponeData getPersonInOutListByFilter([FromUri] Model.PersonInOutRecordInput filter, int? pagesize = 15, int? pageindex = 1, bool? returnAll = false)
+ {
+ var responeData = new Model.ResponeData();
+ try
+ {
+ // 验证必填参数
+ if (filter == null || filter.StartTime == default(DateTime) || filter.EndTime == default(DateTime))
+ {
+ responeData.code = 2;
+ responeData.message = "StartTime和EndTime为必填参数!";
+ return responeData;
+ }
+
+ // 验证时间范围
+ if (filter.StartTime > filter.EndTime)
+ {
+ responeData.code = 2;
+ responeData.message = "StartTime不能大于EndTime!";
+ return responeData;
+ }
+
+ // 处理可空参数的默认值
+ int actualPagesize = pagesize ?? 15;
+ int actualPageindex = pageindex ?? 1;
+ bool actualReturnAll = returnAll ?? false;
+
+ var getDataList = APIPersonService.getPersonInOutListByFilter(filter);
+ int pageCount = getDataList.Count;
+
+ if (!actualReturnAll && pageCount > 0 && actualPageindex > 0 && actualPagesize > 0)
+ {
+ getDataList = getDataList.Skip(actualPagesize * (actualPageindex - 1)).Take(actualPagesize).ToList();
+ }
+
+ responeData.data = new { pageCount, pageindex = actualPageindex, pagesize = actualPagesize, getDataList };
+ }
+ catch (Exception ex)
+ {
+ responeData.code = 0;
+ responeData.message = ex.Message;
+ }
+ return responeData;
+ }
+ #endregion
+
#region 获取异常人员信息出入场记录
///
/// 获取异常人员信息出入场记录