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 获取异常人员信息出入场记录 /// /// 获取异常人员信息出入场记录