using BLL; using Model; using System; using System.Collections.Generic; using System.Configuration; using System.IO; using System.Linq; using System.Web.Http; namespace WebAPI.Controllers { /// /// /// public class PersonController : ApiController { #region 根据personid获取人员信息 /// /// 根据personid获取人员信息 /// /// /// public Model.ResponeData getPersonBySitePersonId(string sitePersonId) { var responeData = new Model.ResponeData(); try { responeData.data = APIPersonService.getPersonBySitePersonId(sitePersonId, null, null); } catch (Exception ex) { responeData.code = 0; responeData.message = ex.Message; } return responeData; } #endregion #region 根据projectId、identityCard获取人员信息 /// /// 根据projectId、identityCard获取人员信息 /// /// /// /// public Model.ResponeData getPersonByProjectIdIdentityCard(string projectId, string identityCard) { var responeData = new Model.ResponeData(); try { var getPerson = Funs.DB.Person_Persons.FirstOrDefault(x => x.IdentityCard == identityCard); if (getPerson == null) { responeData.data = null; } else { responeData.data = APIPersonService.getPersonBySitePersonId(null, projectId, identityCard); } } catch (Exception ex) { responeData.code = 0; responeData.message = ex.Message; } return responeData; } #endregion #region 根据projectId、unitid获取人员信息 /// /// 根据projectId、unitid获取人员信息 /// /// /// /// /// public Model.ResponeData getPersonByProjectIdUnitId(string projectId, string unitId, int pageIndex, string personName = "") { var responeData = new Model.ResponeData(); try { var getDataList = APIPersonService.getPersonByProjectIdUnitId(projectId, unitId); if (!string.IsNullOrEmpty(personName)) { getDataList = getDataList.Where(x => x.PersonName.Contains(personName)).ToList(); } int pageCount = getDataList.Count; if (pageCount > 0 && pageIndex > 0) { getDataList = getDataList.Skip(Funs.PageSize * (pageIndex - 1)).Take(Funs.PageSize).ToList(); } responeData.data = new { pageCount, getDataList }; } catch (Exception ex) { responeData.code = 0; responeData.message = ex.Message; } return responeData; } #endregion #region 根据条件获取项目人员信息(支持分页和过滤) /// /// 根据条件获取项目人员信息(支持分页和过滤) /// /// 查询过滤条件(ProjectCode为必填参数) /// 每页条数 /// 页码(从1开始) /// 是否返回全部数据 /// public Model.ResponeData getPersonByFilter([FromUri] Model.ProjectPersonInput filter, int? pagesize = 15, int? pageindex = 1, bool? returnAll = false) { var responeData = new Model.ResponeData(); try { // 验证必填参数 ProjectCode if (filter == null || string.IsNullOrEmpty(filter.ProjectCode)) { responeData.code = 0; responeData.message = "ProjectCode为必填参数!"; return responeData; } // 处理可空参数的默认值 int actualPagesize = pagesize ?? 15; int actualPageindex = pageindex ?? 1; bool actualReturnAll = returnAll ?? false; var getDataList = APIPersonService.getPersonByFilter(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 获取在岗、离岗、待审人员数量 /// /// 获取在岗、离岗、待审人员列表 /// /// /// /// /// /// /// /// public Model.ResponeData getPersonStatesCount(string projectId, string unitId, string states, string strUnitId, string strWorkPostId, string strParam) { var responeData = new Model.ResponeData(); try { using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString)) { var getViews = from x in db.SitePerson_Person where x.ProjectId == projectId && (strUnitId == null || x.UnitId == strUnitId) && (strWorkPostId == null || x.WorkPostId == strWorkPostId) select x; if (unitId != Const.UnitId_SEDIN && !string.IsNullOrEmpty(unitId)) { getViews = getViews.Where(x => x.UnitId == unitId); } if (!string.IsNullOrEmpty(strParam)) { getViews = getViews.Where(x => x.PersonName.Contains(strParam) || x.IdentityCard.Contains(strParam)); } int tatalCount = getViews.Count(); //在审 int count0 = getViews.Where(x => x.States == Const.ProjectPersonStates_0).Count(); //在岗 int count1 = getViews.Where(x => x.States == Const.ProjectPersonStates_1).Count(); //离岗 int count2 = getViews.Where(x => x.States == Const.ProjectPersonStates_2).Count(); //打回 int count3 = getViews.Where(x => x.States == Const.ProjectPersonStates_R).Count(); responeData.data = new { tatalCount, count0, count1, count2, count3 }; } } catch (Exception ex) { responeData.code = 0; responeData.message = ex.Message; } return responeData; } #endregion #region 获取在岗、离岗、待审人员列表 /// /// 获取在岗、离岗、待审人员列表 /// /// /// 当前人单位ID /// 0待审1在岗2离岗 /// 查询单位 /// 查询岗位 /// 查询条件 /// /// public Model.ResponeData getPersonListByProjectIdStates(string projectId, string unitId, string states, string strUnitId, string strWorkPostId, string strParam, int pageIndex) { var responeData = new Model.ResponeData(); try { var getDataList = APIPersonService.getPersonListByProjectIdStates(projectId, unitId, states, strUnitId, strWorkPostId, strParam, pageIndex); int pageCount = APIPersonService.getPersonListCount; responeData.data = new { pageCount, getDataList }; } catch (Exception ex) { responeData.code = 0; responeData.message = ex.Message; } return responeData; } #endregion #region 根据identityCard获取人员培训考试信息 /// /// 根据identityCard获取人员培训考试信息 /// /// /// /// public Model.ResponeData getPersonTestRecoedByIdentityCard(string identityCard, string projectId = null) { var responeData = new Model.ResponeData(); try { responeData.data = APIPersonService.getPersonTestRecoedByIdentityCard(identityCard, projectId); } catch (Exception ex) { responeData.code = 0; responeData.message = ex.Message; } return responeData; } #endregion #region 根据identityCard获取人员资质信息 /// /// 根据identityCard获取人员资质信息 /// /// /// /// public Model.ResponeData getPersonQualityByIdentityCard(string identityCard, string projectId = null) { var responeData = new Model.ResponeData(); try { responeData.data = APIPersonService.getPersonQualityByIdentityCard(identityCard, projectId); } catch (Exception ex) { responeData.code = 0; responeData.message = ex.Message; } return responeData; } #endregion #region 根据projectId、unitid获取特岗人员资质各状态数 /// /// 根据projectId、unitid获取特岗人员资质各状态数 /// /// 项目ID /// 单位ID /// 人员资质数量 public Model.ResponeData getPersonQualityCount(string projectId, string unitId) { var responeData = new Model.ResponeData(); try { using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString)) { var getDataList = db.View_QualityAudit_PersonQuality.Where(x => x.ProjectId == projectId && x.CertificateId != null); if (ProjectUnitService.GetProjectUnitTypeByProjectIdUnitId(projectId, unitId)) { getDataList = getDataList.Where(x => x.UnitId == unitId); } //总数 int tatalCount = getDataList.Count(); //过期 int count1 = getDataList.Where(x => x.LimitDate < DateTime.Now).Count(); //即将过期 int count2 = getDataList.Where(x => x.LimitDate >= DateTime.Now && x.LimitDate < DateTime.Now.AddMonths(1)).Count(); responeData.data = new { tatalCount, count1, count2 }; } } catch (Exception ex) { responeData.code = 0; responeData.message = ex.Message; } return responeData; } #endregion #region 根据projectId、unitid获取特岗人员资质信息 /// /// 根据projectId、unitid获取特岗人员资质信息 /// /// 项目ID /// 单位ID /// 数据类型0-已过期;1-即将过期;2-无证;3-待审核;4-已审核;-1打回 /// 页码 /// public Model.ResponeData getPersonQualityByProjectIdUnitId(string projectId, string unitId, string type, int pageIndex) { var responeData = new Model.ResponeData(); try { var getDataList = APIPersonService.getPersonQualityByProjectIdUnitId(projectId, unitId, type); int pageCount = getDataList.Count(); if (pageCount > 0 && pageIndex > 0) { getDataList = getDataList.Skip(Funs.PageSize * (pageIndex - 1)).Take(Funs.PageSize).ToList(); } responeData.data = new { pageCount, getDataList }; } catch (Exception ex) { responeData.code = 0; responeData.message = ex.Message; } return responeData; } #endregion #region 保存 人员资质信息 QualityAudit_PersonQuality /// /// 保存Meeting /// /// 人员资质信息 /// [HttpPost] public Model.ResponeData SavePersonQuality([FromBody] Model.PersonQualityItem personQuality) { var responeData = new Model.ResponeData(); try { APIPersonService.SavePersonQuality(personQuality); } catch (Exception ex) { responeData.code = 0; responeData.message = ex.Message; } return responeData; } #endregion #region 根据项目\单位\岗位\培训类型获取项目培训\考试人员信息 /// /// 根据项目\单位\岗位\培训类型获取项目培训\考试人员信息 /// /// 项目ID /// 培训单位ID /// 培训岗位ID(可为空) /// 培训类型ID(可为空) /// 分页 /// public Model.ResponeData getTrainingPersonListByTrainTypeId(string projectId, string unitIds, string workPostIds, string trainTypeId, int pageIndex, string startDate, string endDate, string isRepeat) { var responeData = new Model.ResponeData(); try { var getDataList = APIPersonService.getTrainingPersonListByTrainTypeId(projectId, unitIds, workPostIds, trainTypeId, null, startDate, endDate, isRepeat).OrderBy(x => x.UnitName).ThenBy(x => x.ProjectName).ToList(); int pageCount = getDataList.Count; if (pageCount > 0 && pageIndex > 0) { getDataList = getDataList.OrderBy(u => u.UnitName).ThenBy(u => u.PersonName).Skip(Funs.PageSize * (pageIndex - 1)).Take(Funs.PageSize).ToList(); ////200 ->Funs.PageSize } responeData.data = new { pageCount, getDataList }; } catch (Exception ex) { responeData.code = 0; responeData.message = ex.Message; } return responeData; } public Model.ResponeData getTrainingPersonListByTrainTypeId(string projectId, string unitIds, string workPostIds, string trainTypeId, int pageIndex) { var responeData = new Model.ResponeData(); try { var getDataList = APIPersonService.getTrainingPersonListByTrainTypeId(projectId, unitIds, workPostIds, trainTypeId, null).OrderBy(x => x.UnitName).ThenBy(x => x.ProjectName).ToList(); int pageCount = getDataList.Count; if (pageCount > 0 && pageIndex > 0) { getDataList = getDataList.OrderBy(u => u.UnitName).ThenBy(u => u.PersonName).Skip(Funs.PageSize * (pageIndex - 1)).Take(Funs.PageSize).ToList(); ////200 ->Funs.PageSize } responeData.data = new { pageCount, getDataList }; } catch (Exception ex) { responeData.code = 0; responeData.message = ex.Message; } return responeData; } /// /// /// /// /// /// /// /// /// /// public Model.ResponeData getTrainingPersonListByTrainTypeId(string projectId, string unitIds, string workPostIds, string trainTypeId, string name, int pageIndex, string startDate, string endDate, string isRepeat) { var responeData = new Model.ResponeData(); try { var getDataList = APIPersonService.getTrainingPersonListByTrainTypeId(projectId, unitIds, workPostIds, trainTypeId, name, startDate, endDate, isRepeat).OrderBy(x => x.UnitName).ThenBy(x => x.ProjectName).ToList(); int pageCount = getDataList.Count; if (pageCount > 0 && pageIndex > 0) { getDataList = getDataList.OrderBy(u => u.UnitName).ThenBy(u => u.PersonName).Skip(Funs.PageSize * (pageIndex - 1)).Take(Funs.PageSize).ToList(); ////200 ->Funs.PageSize } responeData.data = new { pageCount, getDataList }; } catch (Exception ex) { responeData.code = 0; responeData.message = ex.Message; } return responeData; } #endregion #region 保存项目人员信息 /// /// 保存项目人员信息 /// /// 人员信息 /// [HttpPost] public Model.ResponeData SaveSitePerson([FromBody] Model.PersonItem person) { var responeData = new Model.ResponeData(); try { using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString)) { if (person != null && !string.IsNullOrEmpty(person.IdentityCard)) { var getPerson = db.SitePerson_Person.FirstOrDefault(x => x.IdentityCard == person.IdentityCard.Trim() && x.ProjectId == person.ProjectId); if (getPerson != null && getPerson.PersonId != person.PersonId) //if (getPerson != null && getPerson.SitePersonId != person.SitePersonId) { responeData.code = 2; responeData.message = "人员身份证号码已存在!"; } else { APIPersonService.SaveSitePerson(person); } } else { responeData.code = 2; responeData.message = "人员信息有误!"; } } } catch (Exception ex) { responeData.code = 0; responeData.message = ex.Message; } return responeData; } #endregion #region 更新人员更新附件 /// /// 更新人员更新附件 /// /// 人员信息 /// [HttpPost] public Model.ResponeData SaveSitePersonAttachment([FromBody] Model.PersonItem person) { var responeData = new Model.ResponeData(); try { if (person != null) { APIPersonService.SaveSitePersonAttachment(person); } else { responeData.code = 2; responeData.message = "人员附件信息有误!"; } } catch (Exception ex) { responeData.code = 0; responeData.message = ex.Message; } return responeData; } #endregion #region 人员状态调整 /// /// 人员状态调整 /// /// /// /// public Model.ResponeData getSitePersonPersonStates(string sitePersonId, string states) { var responeData = new Model.ResponeData(); try { var getSitePerson = SitePerson_PersonService.GetSitePersonById(sitePersonId); if (getSitePerson != null) { var testRecord = BLL.TestRecordService.GetOKTestRecordByPersonIdAndDate(getSitePerson.PersonId, getSitePerson.InTime); if (testRecord != null) { SitePerson_PersonService.SetSitePerson_PersonStates(sitePersonId, states, DateTime.Now); } else { responeData.code = 0; responeData.message = "入场教育考试未合格,无法审核入场!"; } } } catch (Exception ex) { responeData.code = 0; responeData.message = ex.Message; } return responeData; } #endregion #region 项目人员信息 接收接口 /// /// 保存人员信息 /// /// 人员信息 /// [HttpPost] public Model.ResponeData PostProjectPerson([FromBody] Model.PersonItem person) { var responeData = new Model.ResponeData(); try { if (person != null) { using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString)) { var getProject = ProjectService.GetProjectByProjectId(person.ProjectId); if (getProject != null) { var getUnit = UnitService.getUnitByCollCropCodeUnitName(person.CollCropCode, person.UnitName); if (getUnit != null) { var getProjectPerson = SitePerson_PersonService.GetSitePersonByProjectIdIdentityCard(getProject.ProjectId, person.IdentityCard); if (getProjectPerson == null) { var newPerson = APIPersonService.getSavePerson(person); var newProjectPerson = APIPersonService.getSaveProjectPerson(person); var getPersons = Person_PersonsService.GetPerson_PersonsByIdCard(person.IdentityCard); if (getPersons == null) { if (person.headImage != null) { var image = Convert.FromBase64String(person.headImage); newPerson.HeadImage = image; string rootPath = ConfigurationManager.AppSettings["localRoot"]; string path = "FileUpLoad/PersonBaseInfo/" + DateTime.Now.ToString("yyyy-MM") + "/"; string fileUrl = (rootPath + path).Replace('/', '\\'); string flieName = Funs.GetNewFileName() + "~" + person.PersonName + ".jpg"; if (!Directory.Exists(fileUrl)) { Directory.CreateDirectory(fileUrl); } newPerson.PhotoUrl = path + flieName; System.IO.File.WriteAllBytes((fileUrl + flieName), image); //AttachFileService.Base64ToImage(person.headImage, path, person.PersonName); } newPerson.IsOffice = false; newPerson.PersonId = SQLHelper.GetNewID(); Person_PersonsService.AddPerson(newPerson); } if (!string.IsNullOrEmpty(person.TeamGroupName) && !string.IsNullOrEmpty(newProjectPerson.UnitId)) { var getTeamGroup = TeamGroupService.getTeamGroupByTeamGroupName(getProject.ProjectId, newProjectPerson.UnitId, person.TeamGroupName); if (getTeamGroup != null) { newProjectPerson.TeamGroupId = getTeamGroup.TeamGroupId; } else { Model.ProjectData_TeamGroup newTeamGroup = new Model.ProjectData_TeamGroup { TeamGroupId = SQLHelper.GetNewID(), ProjectId = getProject.ProjectId, UnitId = newProjectPerson.UnitId, TeamGroupName = person.TeamGroupName, Remark = "来源:门禁对接数据", TeamTypeId = "CANJIAN_TEAM", EntryTime = System.DateTime.Now, RealNamePushTime = null, }; db.ProjectData_TeamGroup.InsertOnSubmit(newTeamGroup); db.SubmitChanges(); newProjectPerson.TeamGroupId = newTeamGroup.TeamGroupId; } } var getWorkArea = UnitWorkService.GetUnitWorkByUnitWorkName(getProject.ProjectId, person.WorkAreaName); if (getWorkArea != null) { newProjectPerson.WorkAreaId = getWorkArea.UnitWorkId; } var getWorkPost = WorkPostService.GetWorkPostByName(person.WorkPostName); if (getWorkPost != null) { newProjectPerson.WorkPostId = getWorkPost.WorkPostId; } var getHsseMan = SitePerson_PersonService.getSitePerson_PersonByRoleId(getProject.ProjectId, BLL.Const.HSSEManager); if (getHsseMan != null) { newProjectPerson.AuditorId = getHsseMan.PersonId; newProjectPerson.AuditorDate = DateTime.Now; } newProjectPerson.OutTime = Funs.GetNewDateTime(person.OutTime); if (newProjectPerson.OutTime.HasValue) { newProjectPerson.States = Const.ProjectPersonStates_2; } else { newProjectPerson.States = Const.ProjectPersonStates_1; } newProjectPerson.PersonId = SQLHelper.GetNewID(); SitePerson_PersonService.AddSitePerson(newProjectPerson); responeData.message = "新增人员成功!"; } else { if (!string.IsNullOrEmpty(person.OutTime)) { SitePerson_PersonService.SetSitePerson_PersonStates(getProjectPerson.PersonId, Const.ProjectPersonStates_2, Funs.GetNewDateTime(person.OutTime)); responeData.message = "更新出场时间"; } else { responeData.message = "该身份证号码人员已存在!"; } } } else { responeData.code = 0; responeData.message = "单位:" + person.UnitName + "施工平台不存在!"; } } else { responeData.code = 0; responeData.message = "项目:" + person.ProjectId + "施工平台不存在!"; } } } else { responeData.code = 0; responeData.message = "数据为空!"; } } catch (Exception ex) { responeData.code = 0; responeData.message = ex.Message; } return responeData; } #endregion #region 插入人员出入场记录 /// /// 获取人员出入场记录 /// /// /// /// /// /// /// [HttpGet] public Model.ResponeData getPersonInOut(string projectId, string idCard, int isIn, DateTime changeTime) { var responeData = new Model.ResponeData(); string operationLog = "projectId:" + projectId + ";idCard:" + idCard + ";isIn:" + isIn.ToString() + ";changeTime:" + Funs.GetNewFileName(changeTime); try { Model.SitePerson_PersonInOut newInOut = new Model.SitePerson_PersonInOut { ProjectId = projectId, IdentityCard = idCard, IsIn = isIn == 1 ? true : false, ChangeTime = changeTime, InOutWay = Const.InOutWay_1 }; PersonInOutService.AddPersonInOut(newInOut); APICommonService.SaveSysAPILog("Person/getPersonInOut", operationLog, responeData.code.ToString()); } catch (Exception ex) { responeData.code = 0; responeData.message = ex.Message; APICommonService.SaveSysAPILog("Person/getPersonInOut", operationLog + "|" + ex.Message, responeData.code.ToString()); } return responeData; } [HttpPost] public Model.ResponeData getPersonInOut([FromBody] List personInOutItem) { var responeData = new Model.ResponeData(); if (personInOutItem.Count > 0) { try { List newInOutList = new List(); foreach (var item in personInOutItem) { Model.SitePerson_PersonInOut newInOut = new Model.SitePerson_PersonInOut { ProjectId = item.projectId, IdentityCard = item.idCard, IsIn = item.isIn == 1 ? true : false, ChangeTime = item.changeTime, InOutWay = Const.InOutWay_1, Address = item.deviceIp }; newInOutList.Add(newInOut); } PersonInOutService.AddPersonInOut(newInOutList); } catch (Exception ex) { responeData.code = 0; responeData.message = ex.StackTrace; } } return responeData; } #endregion #region 保存人员出入记录 /// /// /// /// /// [HttpPost] public Model.ResponeData SavePersonInOut([FromBody] Model.PersonInOutItem personInOut) { var responeData = new Model.ResponeData(); try { if (!string.IsNullOrEmpty(personInOut.PersonId) || (!string.IsNullOrEmpty(personInOut.IdentityCard) && !string.IsNullOrEmpty(personInOut.ProjectId))) { Model.SitePerson_PersonInOut newPersonInOut = new Model.SitePerson_PersonInOut { ProjectId = personInOut.ProjectId, OldID = personInOut.OldID, PersonId = personInOut.PersonId, IdentityCard = personInOut.IdentityCard, IsIn = personInOut.IsIn ?? true, ChangeTime = Funs.GetNewDateTimeOrNow(personInOut.ChangeTime), InOutWay = personInOut.InOutWay ?? Const.InOutWay_Other, }; PersonInOutService.AddPersonInOut(newPersonInOut); } else { responeData.code = 2; responeData.message = "信息不全!"; } } catch (Exception ex) { responeData.code = 0; responeData.message = ex.Message; ErrLogInfo.WriteLog(ex, "WX接口-保存人员出入记录", "PersonController.SavePersonInOut"); } return responeData; } #endregion #region 获取发卡人员 /// /// 获取发卡人员 /// /// /// public Model.ResponeData getPersonDataExchange(string projectId) { var responeData = new Model.ResponeData(); try { responeData.data = (from x in Funs.DB.SitePerson_Person join y in Funs.DB.Base_Unit on x.UnitId equals y.UnitId join persons in Funs.DB.Person_Persons on x.IdentityCard equals persons.IdentityCard where x.ProjectId == projectId && !x.ExchangeTime.HasValue && x.States == Const.ProjectPersonStates_1 && x.CardNo.Length > 5 && persons.PhotoUrl != null select new { x.PersonId, x.SitePersonId, x.PersonName, x.CardNo, x.IdentityCard, x.UnitId, y.UnitCode, y.UnitName, Sex = persons.Sex ?? "1", Funs.DB.Base_WorkPost.First(z => z.WorkPostId == x.WorkPostId).WorkPostName, Funs.DB.ProjectData_TeamGroup.First(z => z.TeamGroupId == x.TeamGroupId).TeamGroupName, persons.Telephone, persons.Address, TrainRecord = APIPersonService.getStrTrainRecordByPersonId(x.PersonId), x.ExchangeTime, x.ExchangeTime2, PhotoUrl = persons.PhotoUrl.Replace('\\', '/'), }).Take(200).ToList(); } catch (Exception ex) { responeData.code = 0; responeData.message = ex.Message; } return responeData; } public Model.ResponeData getAllPersonDataExchange(string projectId) { var responeData = new Model.ResponeData(); try { // var trainingIds = Funs.DB.EduTrain_TrainRecord.Where(x => projectId == projectId).Select(x => x.TrainingId).ToList(); // var personIds = Funs.DB.EduTrain_TrainRecordDetail.Where(x => trainingIds.Contains(x.TrainingId)).Select(x=>x.PersonId).ToList(); ; responeData.data = (from x in Funs.DB.SitePerson_Person join y in Funs.DB.Base_Unit on x.UnitId equals y.UnitId join persons in Funs.DB.Person_Persons on x.IdentityCard equals persons.IdentityCard join traindetail in Funs.DB.Training_TestRecord on x.PersonId equals traindetail.TestManId where x.ProjectId == projectId && !x.ExchangeTime.HasValue && traindetail.ProjectId == projectId && x.States == Const.ProjectPersonStates_1 && x.CardNo.Length > 5 && persons.PhotoUrl != null && traindetail.TestScores >= 60 // where personIds.Contains(x.PersonId) select new { x.PersonId, x.SitePersonId, x.PersonName, x.CardNo, x.IdentityCard, x.UnitId, y.UnitCode, y.UnitName, x.InTime, y.ShortUnitName, Sex = persons.Sex ?? "1", Funs.DB.Base_WorkPost.First(z => z.WorkPostId == x.WorkPostId).WorkPostName, Funs.DB.ProjectData_TeamGroup.First(z => z.TeamGroupId == x.TeamGroupId).TeamGroupName, persons.Telephone, persons.Address, TrainRecord = APIPersonService.getStrTrainingTestRecordByPersonId(x.PersonId), x.ExchangeTime, x.ExchangeTime2, x.AuditorDate, PhotoUrl = persons.PhotoUrl.Replace('\\', '/'), IsUsed = x.States == Const.ProjectPersonStates_1 ? 1 : 0, BlackList = 0 }).Take(200).ToList(); } catch (Exception ex) { responeData.code = 0; responeData.message = ex.Message; ErrLogInfo.WriteLog(ex, "WX接口-获取人员下发门禁", "PersonController.getPersonDataExchange"); } return responeData; } #endregion #region 获取离场人员 /// /// 获取离场人员 /// /// /// public Model.ResponeData getPersonOutDataExchange(string projectId) { var responeData = new Model.ResponeData(); try { using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString)) { responeData.data = (from x in db.SitePerson_Person where x.ProjectId == projectId && x.States == Const.ProjectPersonStates_2 && x.CardNo != null && !x.ExchangeTime2.HasValue && x.ExchangeTime.HasValue select new { x.SitePersonId, x.PersonId, x.PersonName, x.CardNo, x.IdentityCard, OutTime = x.OutTime == null ? DateTime.Now.AddYears(10) : x.OutTime, }).ToList(); } } catch (Exception ex) { responeData.code = 0; responeData.message = ex.Message; } return responeData; } #endregion #region 更新人员数据交换时间 /// /// 更新人员数据交换时间 /// /// 人员ID /// 交换类型 /// public Model.ResponeData getUpdatePersonExchangeTime(string sitePersonId, string type) { var responeData = new Model.ResponeData(); try { APIPersonService.getUpdatePersonExchangeTime(sitePersonId, type); } catch (Exception ex) { responeData.code = 0; responeData.message = ex.Message; } return responeData; } /// /// /// /// /// /// /// public Model.ResponeData getUpdatePersonExchangeTime(string projectId, string idCard, string type) { var responeData = new Model.ResponeData(); try { var getsiteperson = Funs.DB.SitePerson_Person.FirstOrDefault(x => x.ProjectId == projectId && x.IdentityCard == idCard); if (getsiteperson != null) { APIPersonService.getUpdatePersonExchangeTime(getsiteperson.SitePersonId, type); } else { responeData.code = 1; responeData.message = "当前项目不存在身份证为:" + idCard.ToString() + "的人员!"; } } catch (Exception ex) { responeData.code = 0; responeData.message = ex.Message; } return responeData; } #endregion #region 获取人员信息出入场记录 /// /// 获取人员信息出入场记录 /// /// /// 当前人单位ID /// /// /// 页码 /// public Model.ResponeData getPersonInOutList(string projectId, string unitId, string startTime, string endTime, int pageIndex) { var responeData = new Model.ResponeData(); try { var getDataList = APIPersonService.getPersonInOutList(projectId, unitId, startTime, endTime); int pageCount = getDataList.Count(); if (pageCount > 0 && pageIndex > 0) { getDataList = getDataList.Skip(Funs.PageSize * (pageIndex - 1)).Take(Funs.PageSize).ToList(); } responeData.data = new { pageCount, getDataList }; } catch (Exception ex) { responeData.code = 0; responeData.message = ex.Message; } return responeData; } #endregion #region 获取人员信息出入场记录-查询 /// /// 获取人员信息出入场记录 /// /// /// /// 当前人单位ID /// 岗位 /// 查询条件 /// /// /// 页码 /// public Model.ResponeData getPersonInOutList(string projectId, string userUnitId, string workPostId, string strParam, string startTime, string endTime, int pageIndex, string unitId = null) { var responeData = new Model.ResponeData(); try { var getDataList = APIPersonService.getPersonInOutList(projectId, userUnitId, unitId, workPostId, strParam, startTime, endTime); int pageCount = getDataList.Count(); if (pageCount > 0 && pageIndex > 0) { getDataList = getDataList.Skip(Funs.PageSize * (pageIndex - 1)).Take(Funs.PageSize).ToList(); } responeData.data = new { pageCount, getDataList }; } catch (Exception ex) { responeData.code = 0; responeData.message = ex.Message; } return responeData; } #endregion #region 根据人员ID获取个人出入场记录 /// /// 根据人员ID获取个人出入场记录 /// /// /// /// /// 页码 /// public Model.ResponeData getPersonInOutListByPersonId(string personId, string startTime, string endTime, int pageIndex) { var responeData = new Model.ResponeData(); try { var getDataList = APIPersonService.getPersonInOutListByPersonId(personId, startTime, endTime); int pageCount = getDataList.Count(); if (pageCount > 0 && pageIndex > 0) { getDataList = getDataList.Skip(Funs.PageSize * (pageIndex - 1)).Take(Funs.PageSize).ToList(); } responeData.data = new { pageCount, getDataList }; } catch (Exception ex) { responeData.code = 0; responeData.message = ex.Message; } return responeData; } #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 = 0; responeData.message = "StartTime和EndTime为必填参数!"; return responeData; } // 验证时间范围 if (filter.StartTime > filter.EndTime) { responeData.code = 0; responeData.message = "StartTime不能大于EndTime!"; return responeData; } //20260228 赛鼎it要求取消projectcode必填验证,改为如果有projectcode则按照projectcode查询,没有则不过滤projectcode查询 //if (filter == null || string.IsNullOrEmpty(filter.ProjectCode)) //{ // responeData.code = 0; // responeData.message = "ProjectCode为必填参数!"; // 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 获取异常人员信息出入场记录 /// /// 获取异常人员信息出入场记录 /// /// /// 单位ID /// 开始时间 /// 结束时间 /// 入场异常 0 出场异常 1 /// 页码 /// public Model.ResponeData getAbnormalPersonInOutList(string projectId, string unitId, string startTime, string endTime, string inOut, int pageIndex) { var responeData = new Model.ResponeData(); try { var getDataList = APIPersonService.getAbnormalPersonInOutList(projectId, unitId, startTime, endTime, inOut, pageIndex); int pageCount = getDataList.Count(); responeData.data = new { pageCount, getDataList }; } catch (Exception ex) { responeData.code = 0; responeData.message = ex.Message; } return responeData; } #endregion } }