using Newtonsoft.Json; using Newtonsoft.Json.Linq; using SgManager.AI; using System; using System.Collections.Generic; using System.Configuration; using System.Linq; namespace BLL { public static class APIPersonService { #region 获取项目现场人员登录信息 /// /// 获取项目现场人员登录信息 /// /// /// public static Model.UserItem PersonLogOn(Model.UserItem userInfo) { using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString)) { var getUser = from x in db.SitePerson_Person where (x.Telephone == userInfo.Account || x.PersonName == userInfo.Account) && (x.Password == Funs.EncryptionPassword(userInfo.Password) || (x.IdentityCard != null && x.IdentityCard.Substring(x.IdentityCard.Length - 4) == userInfo.Password)) && x.InTime <= DateTime.Now && (!x.OutTime.HasValue || x.OutTime >= DateTime.Now) && x.IsUsed == true select new Model.UserItem { UserId = x.PersonId, UserCode = x.CardNo, Password = x.Password, UserName = x.PersonName, UnitId = x.UnitId, LoginProjectId = x.ProjectId, IdentityCard = x.IdentityCard, Account = x.Telephone, UnitName = db.Base_Unit.First(u => u.UnitId == x.UnitId).UnitName, LoginProjectName = db.Base_Project.First(u => u.ProjectId == x.ProjectId).ProjectName, Telephone = x.Telephone, WorkPostId = x.WorkPostId, WorkPostName = db.Base_WorkPost.First(w => w.WorkPostId == x.WorkPostId).WorkPostName, UserType = "3", }; return getUser.FirstOrDefault(); } } #endregion #region 根据personId获取人员信息 /// /// 根据personId获取人员信息 /// /// /// public static Model.PersonItem getPersonByPersonId(string personId) { using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString)) { var getPerson = from x in db.View_SitePerson_Person where x.PersonId == personId || x.IdentityCard == personId select new Model.PersonItem { PersonId = x.PersonId, CardNo = x.CardNo, PersonName = x.PersonName, Sex = x.Sex, SexName = x.SexName, 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), OutResult = x.OutResult, Telephone = x.Telephone, PhotoUrl = x.PhotoUrl, DepartName = x.DepartName, IsUsed = x.IsUsed, IsUsedName = x.IsUsed == false ? "不启用" : "启用", AuditorId = x.AuditorId, AuditorName = db.Sys_User.First(z => z.UserId == x.AuditorId).UserName, IsForeign = x.IsForeign.HasValue ? x.IsForeign : false, IsOutside = x.IsOutside.HasValue ? x.IsOutside : false, AuditorDate = string.Format("{0:yyyy-MM-dd}", x.AuditorDate), AttachUrl1 = x.IDCardUrl == null ? APIUpLoadFileService.getFileUrl(personId + "#1", null) : x.IDCardUrl.Replace('\\', '/'), AttachUrl2 = APIUpLoadFileService.getFileUrl(personId + "#2", null), AttachUrl3 = APIUpLoadFileService.getFileUrl(personId + "#3", null), AttachUrl4 = getAttachUrl4(x.PersonId), AttachUrl5 = APIUpLoadFileService.getFileUrl(personId + "#5", null), IdcardType=x.IdcardType, IdcardTypeName=x.IdcardTypeName, IdcardStartDate= string.Format("{0:yyyy-MM-dd}", x.IdcardStartDate), IdcardEndDate = string.Format("{0:yyyy-MM-dd}", x.IdcardEndDate), IdcardForever=x.IdcardForever, IdcardForeverStr=x.IdcardForeverStr, PoliticsStatus=x.PoliticsStatus, PoliticsStatusName=x.PoliticsStatusName, IdcardAddress=x.IdcardAddress, Nation=x.Nation, NationName=x.NationName, EduLevel=x.EduLevel, EduLevelName=x.EduLevelName, MaritalStatus=x.MaritalStatus, MaritalStatusName=x.MaritalStatusName, CountryCode=x.CountryCode, CountryName=x.CountryName, ProvinceCode=x.ProvinceCode, ProvinceName=x.ProvinceName, MainCNProfessionalId=x.MainCNProfessionalId, MainCNProfessionalName=x.MainCNProfessionalName, ViceCNProfessionalId=x.ViceCNProfessionalId, ViceCNProfessionalName=x.ViceCNProfessionalName }; return getPerson.FirstOrDefault(); } } /// /// /// /// public static string getAttachUrl4(string personId) { using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString)) { string returnUrl = APIUpLoadFileService.getFileUrl(personId + "#4", null); var getPersonQuality = db.QualityAudit_PersonQuality.FirstOrDefault(x => x.PersonId == personId); if (getPersonQuality != null) { string url1 = APIUpLoadFileService.getFileUrl(getPersonQuality.PersonQualityId, null); if (!string.IsNullOrEmpty(url1)) { if (!string.IsNullOrEmpty(returnUrl)) { returnUrl += "," + url1; } else { returnUrl = url1; } } } return returnUrl; } } #endregion #region 根据personId获取人员信息 /// /// 根据personId获取人员信息 /// /// /// public static Model.PersonItem getPersonByProjectIdIdentityCard(string projectId, string identityCard) { using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString)) { var getPerson = from x in db.View_SitePerson_Person where x.ProjectId == projectId && (x.PersonId == identityCard || x.IdentityCard == identityCard) select new Model.PersonItem { PersonId = x.PersonId, CardNo = x.CardNo, PersonName = x.PersonName, Sex = x.Sex, SexName = x.SexName, 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), OutResult = x.OutResult, Telephone = x.Telephone, PhotoUrl = x.PhotoUrl, DepartName = x.DepartName, IsUsed = x.IsUsed, IsUsedName = x.IsUsed == false ? "不启用" : "启用", AuditorId = x.AuditorId, AuditorName = db.Sys_User.First(z => z.UserId == x.AuditorId).UserName, IsForeign = x.IsForeign.HasValue ? x.IsForeign : false, IsOutside = x.IsOutside.HasValue ? x.IsOutside : false, AuditorDate = string.Format("{0:yyyy-MM-dd}", x.AuditorDate), AttachUrl1 = x.IDCardUrl == null ? APIUpLoadFileService.getFileUrl(x.PersonId + "#1", null) : x.IDCardUrl.Replace('\\', '/'), AttachUrl2 = APIUpLoadFileService.getFileUrl(x.PersonId + "#2", null), AttachUrl3 = APIUpLoadFileService.getFileUrl(x.PersonId + "#3", null), AttachUrl4 = getAttachUrl4(x.PersonId), AttachUrl5 = APIUpLoadFileService.getFileUrl(x.PersonId + "#5", null), IdcardType = x.IdcardType, IdcardTypeName = x.IdcardTypeName, IdcardStartDate = string.Format("{0:yyyy-MM-dd}", x.IdcardStartDate), IdcardEndDate = string.Format("{0:yyyy-MM-dd}", x.IdcardEndDate), IdcardForever = x.IdcardForever, IdcardForeverStr = x.IdcardForeverStr, PoliticsStatus = x.PoliticsStatus, PoliticsStatusName = x.PoliticsStatusName, IdcardAddress = x.IdcardAddress, Nation = x.Nation, NationName = x.NationName, EduLevel = x.EduLevel, EduLevelName = x.EduLevelName, MaritalStatus = x.MaritalStatus, MaritalStatusName = x.MaritalStatusName, CountryCode = x.CountryCode, CountryName = x.CountryName, ProvinceCode = x.ProvinceCode, ProvinceName = x.ProvinceName, MainCNProfessionalId = x.MainCNProfessionalId, MainCNProfessionalName = x.MainCNProfessionalName, ViceCNProfessionalId = x.ViceCNProfessionalId, ViceCNProfessionalName = x.ViceCNProfessionalName }; return getPerson.FirstOrDefault(); } } #endregion #region 根据personid人员打回 /// /// 根据personid人员打回 /// /// /// /// public static void getReUserPersonByPersonId(string personId, string userId) { using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString)) { var getPerson = db.SitePerson_Person.FirstOrDefault(x => x.PersonId == personId); if (getPerson != null) { getPerson.IsUsed = false; getPerson.AuditorId = userId; getPerson.AuditorDate = DateTime.Now; db.SubmitChanges(); } } } #endregion #region 根据projectId、unitid获取人员信息 /// /// 根据projectId、unitid获取人员信息 /// /// /// public static List getPersonByProjectIdUnitId(string projectId, string unitId) { using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString)) { var persons = from x in db.View_SitePerson_Person where x.ProjectId == projectId && (x.UnitId == unitId || unitId == null) && x.IsUsed == true && x.InTime <= DateTime.Now && (!x.OutTime.HasValue || x.OutTime >= DateTime.Now) orderby x.CardNo descending select new Model.PersonItem { PersonId = x.PersonId, CardNo = x.CardNo, PersonName = x.PersonName, SexName = x.SexName, 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), OutResult = x.OutResult, 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, IsOutside = x.IsOutside.HasValue ? x.IsOutside : false, PostTypeName = db.Sys_Const.First(z => z.GroupId == ConstValue.Group_PostType && z.ConstValue == x.PostType).ConstText, }; return persons.ToList(); } } #endregion #region 获取在岗、离岗、待审人员列表 /// /// 记录数 /// public static int getPersonListCount { get; set; } /// /// 获取在岗、离岗、待审人员列表 /// /// /// /// 0待审1在岗2离岗 /// 查询单位 /// 查询岗位 /// 查询条件 /// public static List getPersonListByProjectIdStates(string projectId, string unitId, string states, string strUnitId, string strWorkPostId, string strParam, int pageIndex) { 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_CWCEC && !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)); } if (states == "0") { getViews = getViews.Where(x => x.IsUsed == false && !x.AuditorDate.HasValue); } else if (states == "1") { getViews = getViews.Where(x => x.IsUsed == true && x.InTime <= DateTime.Now && (!x.OutTime.HasValue || x.OutTime >= DateTime.Now)); } else if (states == "2") { getViews = getViews.Where(x => x.IsUsed == true && x.OutTime <= DateTime.Now); } else if (states == "-1") { getViews = getViews.Where(x => x.IsUsed == false && x.AuditorDate.HasValue); } getPersonListCount = getViews.Count(); if (getPersonListCount == 0) { return null; } else { var persons = from x in getViews join y in db.Base_Unit on x.UnitId equals y.UnitId orderby x.InTime descending select new Model.PersonItem { PersonId = x.PersonId, CardNo = x.CardNo, PersonName = x.PersonName, SexName = (x.Sex == "2" ? "女" : "男"), IdentityCard = x.IdentityCard, Address = x.Address, ProjectId = x.ProjectId, UnitId = x.UnitId, UnitCode = y.UnitCode, UnitName = y.UnitName, TeamGroupId = x.TeamGroupId, TeamGroupName = db.ProjectData_TeamGroup.First(z => z.TeamGroupId == x.TeamGroupId).TeamGroupName, WorkPostId = x.WorkPostId, WorkPostName = db.Base_WorkPost.First(z => z.WorkPostId == x.WorkPostId).WorkPostName, InTime = string.Format("{0:yyyy-MM-dd}", x.InTime), OutTime = string.Format("{0:yyyy-MM-dd}", x.OutTime), OutResult = x.OutResult, Telephone = x.Telephone, PhotoUrl = x.PhotoUrl, IsUsed = x.IsUsed, IsUsedName = (x.IsUsed == true ? "启用" : "未启用"), WorkAreaId = x.WorkAreaId, WorkAreaName = UnitWorkService.GetUnitWorkName(x.WorkAreaId), PostType = ReturnQuality(x.PersonId, x.WorkPostId), //PostTypeName = db.Sys_Const.First(p => p.GroupId == ConstValue.Group_PostType && p.ConstValue == p.PostType).ConstText, IsForeign = x.IsForeign.HasValue ? x.IsForeign : false, IsOutside = x.IsOutside.HasValue ? x.IsOutside : false, }; if (pageIndex > 0) { return persons.Skip(Funs.PageSize * (pageIndex - 1)).Take(Funs.PageSize).ToList(); } else { return persons.ToList(); } } } } /// /// /// /// /// private static string ReturnQuality(string personId, string workPostId) { using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString)) { string postType = ""; var workPost = db.Base_WorkPost.FirstOrDefault(x => x.WorkPostId == workPostId); if (workPost != null) { if (workPost.PostType == Const.PostType_2) { var getPerQ = db.QualityAudit_PersonQuality.FirstOrDefault(x => x.PersonId == personId && x.States == Const.State_2 && x.LimitDate >= DateTime.Now.AddMonths(1)); if (getPerQ == null) { postType = "1"; } } else if (workPost.PostType == Const.PostType_5) { var getPerQ = db.QualityAudit_EquipmentPersonQuality.FirstOrDefault(x => x.PersonId == personId && x.States == Const.State_2 && x.LimitDate >= DateTime.Now.AddMonths(1)); if (getPerQ == null) { postType = "3"; } } if (workPost.IsHsse == true) { var getPerQ = db.QualityAudit_SafePersonQuality.FirstOrDefault(x => x.PersonId == personId && x.States == Const.State_2 && x.LimitDate >= DateTime.Now.AddMonths(1)); if (getPerQ == null) { postType = "2"; } } } return postType; } } #endregion #region 根据培训类型获取项目培训人员信息 /// /// 根据培训类型获取项目培训人员信息 /// /// 项目ID /// 培训单位ID /// 培训岗位ID /// 培训类型ID /// public static List getTrainingPersonListByTrainTypeId(string projectId, string unitIds, string workPostIds, string trainTypeId) { using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString)) { List unitIdList = Funs.GetStrListByStr(unitIds, ','); var getPersons = from x in db.View_SitePerson_Person where x.ProjectId == projectId && unitIdList.Contains(x.UnitId) && x.IsUsed == true //&& x.InTime <= DateTime.Now && (!x.OutTime.HasValue || x.OutTime >= DateTime.Now) select new Model.PersonItem { PersonId = x.PersonId, CardNo = x.CardNo, PersonName = x.PersonName, SexName = x.SexName, 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), OutResult = x.OutResult, Telephone = x.Telephone, PhotoUrl = x.PhotoUrl, DepartName = x.DepartName, }; if (!string.IsNullOrEmpty(workPostIds)) { List workPostIdList = Funs.GetStrListByStr(workPostIds, ','); getPersons = getPersons.Where(x => workPostIdList.Contains(x.WorkPostId)); } List getTrainPersonList = new List(); var getTrainType = TrainTypeService.GetTrainTypeById(trainTypeId); if (getTrainType != null && (!getTrainType.IsRepeat.HasValue || getTrainType.IsRepeat == false)) { foreach (var item in getPersons) { var getTrainPersonIdList1 = (from x in db.EduTrain_TrainRecordDetail join y in db.EduTrain_TrainRecord on x.TrainingId equals y.TrainingId where y.ProjectId == projectId && y.TrainTypeId == trainTypeId && x.CheckResult == true && x.PersonId == item.PersonId select x).FirstOrDefault(); if (getTrainPersonIdList1 == null) { var getTrainPersonIdList2 = (from x in db.Training_Task join y in db.Training_Plan on x.PlanId equals y.PlanId where y.ProjectId == projectId && y.TrainTypeId == trainTypeId && y.States != "3" && x.UserId == item.PersonId select x).FirstOrDefault(); if (getTrainPersonIdList2 == null) { getTrainPersonList.Add(item); } } } return getTrainPersonList; } else { return getPersons.ToList(); } } } #endregion #region 根据培训类型获取项目培训人员信息 /// /// 根据培训类型获取项目培训人员信息 /// /// 项目ID /// 培训单位ID /// 培训岗位ID /// 培训类型ID /// public static List getTrainingPersonListByTrainTypeId(string projectId, string unitIds, string workPostIds, string trainTypeId, string strParam) { using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString)) { List unitIdList = Funs.GetStrListByStr(unitIds, ','); var getPersons = from x in db.View_SitePerson_Person where unitIdList.Contains(x.UnitId) && x.IsUsed == true && x.InTime <= DateTime.Now && (!x.OutTime.HasValue || x.OutTime >= DateTime.Now) select new Model.PersonItem { PersonId = x.PersonId, CardNo = x.CardNo, PersonName = x.PersonName, SexName = x.SexName, 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), OutResult = x.OutResult, Telephone = x.Telephone, PhotoUrl = x.PhotoUrl, DepartName = x.DepartName, }; if (!string.IsNullOrEmpty(projectId)) { getPersons = getPersons.Where(x => x.ProjectId == projectId); } else { getPersons = getPersons.Where(x => x.ProjectId == null); } if (!string.IsNullOrEmpty(strParam)) { getPersons = getPersons.Where(x => x.PersonName.Contains(strParam)); } if (!string.IsNullOrEmpty(workPostIds)) { List workPostIdList = Funs.GetStrListByStr(workPostIds, ','); getPersons = getPersons.Where(x => workPostIdList.Contains(x.WorkPostId)); } List getTrainPersonList = new List(); var getTrainType = TrainTypeService.GetTrainTypeById(trainTypeId); if (getTrainType != null && (!getTrainType.IsRepeat.HasValue || getTrainType.IsRepeat == false)) { foreach (var item in getPersons) { var getTrainPersonIdList1 = (from x in db.EduTrain_TrainRecordDetail join y in db.EduTrain_TrainRecord on x.TrainingId equals y.TrainingId where y.ProjectId == projectId && y.TrainTypeId == trainTypeId && x.CheckResult == true && x.PersonId == item.PersonId select x).FirstOrDefault(); if (getTrainPersonIdList1 == null) { var getTrainPersonIdList2 = (from x in db.Training_Task join y in db.Training_Plan on x.PlanId equals y.PlanId where y.ProjectId == projectId && y.TrainTypeId == trainTypeId && y.States != "3" && x.UserId == item.PersonId select x).FirstOrDefault(); if (getTrainPersonIdList2 == null) { getTrainPersonList.Add(item); } } } return getTrainPersonList.ToList(); } else { return getPersons.ToList(); } } } /// /// 根据培训类型获取项目培训人员信息 /// /// 项目ID /// 培训单位ID /// 培训岗位ID /// 培训类型ID /// public static List getTrainingPersonListByTrainTypeId(Model.PersonItem person) { using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString)) { List unitIdList = Funs.GetStrListByStr(person.UnitId, ','); var getPersons = from x in db.View_SitePerson_Person where unitIdList.Contains(x.UnitId) && x.IsUsed == true && (!x.OutTime.HasValue || x.OutTime >= DateTime.Now) select x; if (!string.IsNullOrEmpty(person.ProjectId)) { getPersons = getPersons.Where(x => x.ProjectId == person.ProjectId); } else { getPersons = getPersons.Where(x => x.ProjectId == null); } if (!string.IsNullOrEmpty(person.strParam)) { getPersons = getPersons.Where(x => x.PersonName.Contains(person.strParam)); } if (!string.IsNullOrEmpty(person.WorkPostId)) { List workPostIdList = Funs.GetStrListByStr(person.WorkPostId, ','); getPersons = getPersons.Where(x => workPostIdList.Contains(x.WorkPostId)); } if (!string.IsNullOrEmpty(person.InTime)) { DateTime? intimeD = Funs.GetNewDateTime(person.InTime); getPersons = getPersons.Where(x => x.InTime == intimeD); } var getPersonItems = from x in getPersons select new Model.PersonItem { PersonId = x.PersonId, CardNo = x.CardNo, PersonName = x.PersonName, SexName = x.SexName, 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), OutResult = x.OutResult, Telephone = x.Telephone, PhotoUrl = x.PhotoUrl, DepartName = x.DepartName, }; List getTrainPersonList = new List(); var getTrainType = TrainTypeService.GetTrainTypeById(person.TrainTypeId); if (getTrainType != null && (!getTrainType.IsRepeat.HasValue || getTrainType.IsRepeat == false)) { foreach (var item in getPersonItems) { var getTrainPersonIdList1 = (from x in db.EduTrain_TrainRecordDetail join y in db.EduTrain_TrainRecord on x.TrainingId equals y.TrainingId where y.ProjectId == person.ProjectId && y.TrainTypeId == person.TrainTypeId && x.CheckResult == true && x.PersonId == item.PersonId select x).FirstOrDefault(); if (getTrainPersonIdList1 == null) { var getTrainPersonIdList2 = (from x in db.Training_Task join y in db.Training_Plan on x.PlanId equals y.PlanId where y.ProjectId == person.ProjectId && y.TrainTypeId == person.TrainTypeId && y.States != "3" && x.UserId == item.PersonId select x).FirstOrDefault(); if (getTrainPersonIdList2 == null) { getTrainPersonList.Add(item); } } } return getTrainPersonList.ToList(); } else { return getPersonItems.ToList(); } } } #endregion #region 人员信息保存方法 /// /// 人员信息保存方法 /// /// 人员信息 public static string SaveSitePerson(Model.PersonItem person) { using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString)) { Model.SitePerson_Person newPerson = new Model.SitePerson_Person { PersonId = person.PersonId, ProjectId = person.ProjectId, CardNo = person.CardNo, PersonName = person.PersonName, IdentityCard = person.IdentityCard.Trim(), Address = person.Address, UnitId = person.UnitId, OutResult = person.OutResult, Telephone = person.Telephone, PhotoUrl = person.PhotoUrl, IDCardUrl = person.AttachUrl1, InTime = Funs.GetNewDateTime(person.InTime), OutTime = Funs.GetNewDateTime(person.OutTime), AuditorId = person.AuditorId, IsForeign = person.IsForeign, IsOutside = person.IsOutside, //AuditorDate = Funs.GetNewDateTime(person.AuditorDate), Sex = person.Sex, WorkAreaId = person.WorkAreaId, IdcardStartDate = Funs.GetNewDateTime(person.IdcardStartDate), IdcardEndDate = Funs.GetNewDateTime(person.IdcardEndDate), IdcardForever=person.IdcardForever, IdcardAddress = person.IdcardAddress, IdcardType= "SHENFEN_ZHENGJIAN", }; if (!string.IsNullOrEmpty(person.TeamGroupId)) { newPerson.TeamGroupId = person.TeamGroupId; } if (!string.IsNullOrEmpty(person.WorkPostId)) { newPerson.WorkPostId = person.WorkPostId; } //if (!string.IsNullOrEmpty(person.IdcardType)) //{ // newPerson.IdcardType = person.IdcardType; //} if (!string.IsNullOrEmpty(person.PoliticsStatus)) { newPerson.PoliticsStatus = person.PoliticsStatus; } if (!string.IsNullOrEmpty(person.Nation)) { newPerson.Nation = person.Nation; } if (!string.IsNullOrEmpty(person.EduLevel)) { newPerson.EduLevel = person.EduLevel; } if (!string.IsNullOrEmpty(person.MaritalStatus)) { newPerson.MaritalStatus = person.MaritalStatus; } if (!string.IsNullOrEmpty(person.CountryCode)) { newPerson.CountryCode = person.CountryCode; } if (!string.IsNullOrEmpty(person.ProvinceCode)) { newPerson.ProvinceCode = person.ProvinceCode; } if (!string.IsNullOrEmpty(person.MainCNProfessionalId)) { newPerson.MainCNProfessionalId = person.MainCNProfessionalId; } if (!string.IsNullOrEmpty(person.ViceCNProfessionalId)) { newPerson.ViceCNProfessionalId = person.ViceCNProfessionalId; } if (person.IsUsed == true) { newPerson.IsUsed = true; } else { newPerson.IsUsed = false; } newPerson.Password = PersonService.GetPersonPassWord(person.IdentityCard); string rootUrl = ConfigurationManager.AppSettings["localRoot"]; if (!string.IsNullOrEmpty(rootUrl) && !string.IsNullOrEmpty(person.PhotoUrl)) { newPerson.HeadImage = AttachFileService.SetImageToByteArray(rootUrl + person.PhotoUrl); } var getPerson = db.SitePerson_Person.FirstOrDefault(x => (x.IdentityCard == newPerson.IdentityCard && x.ProjectId == newPerson.ProjectId) || x.PersonId == newPerson.PersonId); if (getPerson == null) { newPerson.Isprint = "0"; newPerson.PersonId = SQLHelper.GetNewID(); newPerson.IsCardNoOK = IDCardValid.CheckIDCard(person.IdentityCard); db.SitePerson_Person.InsertOnSubmit(newPerson); db.SubmitChanges(); CodeRecordsService.InsertCodeRecordsByMenuIdProjectIdUnitId(Const.PersonListMenuId, person.ProjectId, person.UnitId, person.PersonId, newPerson.InTime); } else { newPerson.PersonId = getPerson.PersonId; getPerson.ProjectId = person.ProjectId; getPerson.CardNo = person.CardNo; getPerson.PersonName = person.PersonName; getPerson.IdentityCard = person.IdentityCard; getPerson.Address = person.Address; getPerson.UnitId = person.UnitId; getPerson.OutResult = person.OutResult; getPerson.Telephone = person.Telephone; getPerson.Password = newPerson.Password; getPerson.MainCNProfessionalId = newPerson.MainCNProfessionalId; getPerson.ViceCNProfessionalId = newPerson.ViceCNProfessionalId; getPerson.IdcardStartDate = newPerson.IdcardStartDate; getPerson.IdcardEndDate = newPerson.IdcardEndDate; getPerson.IdcardForever = newPerson.IdcardForever; getPerson.IdcardAddress = newPerson.IdcardAddress; getPerson.IdcardType = newPerson.IdcardType; getPerson.EduLevel = newPerson.EduLevel; getPerson.MaritalStatus = newPerson.MaritalStatus; getPerson.PoliticsStatus = newPerson.PoliticsStatus; getPerson.Nation = newPerson.Nation; getPerson.CountryCode = newPerson.CountryCode; getPerson.ProvinceCode = newPerson.ProvinceCode; getPerson.MainCNProfessionalId = newPerson.MainCNProfessionalId; getPerson.ViceCNProfessionalId = newPerson.ViceCNProfessionalId; if (!string.IsNullOrEmpty(person.PhotoUrl) && getPerson.PhotoUrl != person.PhotoUrl) { getPerson.PhotoUrl = person.PhotoUrl; getPerson.ExchangeTime = null; getPerson.HeadImage = newPerson.HeadImage; } if (!string.IsNullOrEmpty(person.AttachUrl1)) { getPerson.IDCardUrl = person.AttachUrl1; } getPerson.InTime = Funs.GetNewDateTime(person.InTime); getPerson.OutTime = Funs.GetNewDateTime(person.OutTime); getPerson.Sex = person.Sex; // getPerson.AuditorDate = Funs.GetNewDateTime(person.AuditorDate); if (!string.IsNullOrEmpty(person.TeamGroupId)) { getPerson.TeamGroupId = person.TeamGroupId; } if (!string.IsNullOrEmpty(person.WorkPostId)) { getPerson.WorkPostId = person.WorkPostId; } if (!string.IsNullOrEmpty(person.WorkAreaId)) { getPerson.WorkAreaId = person.WorkAreaId; } if (getPerson.AuditorDate.HasValue && getPerson.IsUsed == false) { getPerson.AuditorDate = null; } else { getPerson.IsUsed = person.IsUsed; getPerson.AuditorDate = DateTime.Now; } getPerson.AuditorId = person.AuditorId; if (!newPerson.OutTime.HasValue) { getPerson.OutTime = null; getPerson.ExchangeTime = null; } getPerson.ExchangeTime2 = null; getPerson.RealNameUpdateTime = null; getPerson.IsForeign = person.IsForeign; getPerson.IsOutside = person.IsOutside; getPerson.IsCardNoOK = IDCardValid.CheckIDCard(getPerson.IdentityCard); db.SubmitChanges(); } if (!string.IsNullOrEmpty(newPerson.PersonId)) { SaveMeetUrl(newPerson.PersonId, Const.PersonListMenuId, person.AttachUrl1, person.AttachUrl2, person.AttachUrl3, person.AttachUrl4, person.AttachUrl5); } // 更新同身份证号码用户的电话 if (!string.IsNullOrEmpty(newPerson.Telephone)) { var getUser = db.Sys_User.FirstOrDefault(x => x.IdentityCard == newPerson.IdentityCard); if (getUser != null) { getUser.Telephone = newPerson.Telephone; db.SubmitChanges(); } } if (!newPerson.AuditorDate.HasValue && string.IsNullOrEmpty(newPerson.AuditorId)) { APICommonService.SendSubscribeMessage(newPerson.AuditorId, "人员信息待您审核", person.ProjectCode, string.Format("{0:yyyy-MM-dd HH:mm:ss}", DateTime.Now)); } return newPerson.PersonId; } } #region 人员附件保存方法 /// /// 人员附件保存方法 /// public static void SaveMeetUrl(string personId, string menuId, string url1, string url2, string url3, string url4, string url5) { Model.ToDoItem toDoItem = new Model.ToDoItem { MenuId = menuId, DataId = personId + "#1", UrlStr = url1, }; if (!string.IsNullOrEmpty(url1)) { APIUpLoadFileService.SaveAttachUrl(toDoItem); } toDoItem.DataId = personId + "#2"; toDoItem.UrlStr = url2; if (!string.IsNullOrEmpty(url2)) { APIUpLoadFileService.SaveAttachUrl(toDoItem); } toDoItem.DataId = personId + "#3"; toDoItem.UrlStr = url3; if (!string.IsNullOrEmpty(url3)) { APIUpLoadFileService.SaveAttachUrl(toDoItem); } toDoItem.DataId = personId + "#4"; toDoItem.UrlStr = url4; if (!string.IsNullOrEmpty(url4)) { APIUpLoadFileService.SaveAttachUrl(toDoItem); } toDoItem.DataId = personId + "#5"; toDoItem.UrlStr = url5; if (!string.IsNullOrEmpty(url5)) { APIUpLoadFileService.SaveAttachUrl(toDoItem); } } #endregion #endregion #region 更新人员附件 /// /// 更新人员附件 /// /// public static void SaveSitePersonAttachment(Model.PersonItem person) { using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString)) { var getPerson = db.SitePerson_Person.FirstOrDefault(x => x.IdentityCard == person.IdentityCard || x.PersonId == person.PersonId); if (getPerson != null) { if (!string.IsNullOrEmpty(person.PhotoUrl) && getPerson.PhotoUrl != person.PhotoUrl) { getPerson.PhotoUrl = person.PhotoUrl; getPerson.ExchangeTime = null; string rootUrl = ConfigurationManager.AppSettings["localRoot"]; if (!string.IsNullOrEmpty(rootUrl) && !string.IsNullOrEmpty(person.PhotoUrl)) { getPerson.HeadImage = AttachFileService.SetImageToByteArray(rootUrl + person.PhotoUrl); } } if (!string.IsNullOrEmpty(person.AttachUrl1)) { getPerson.IDCardUrl = person.AttachUrl1; } db.SubmitChanges(); SaveMeetUrl(getPerson.PersonId, Const.PersonListMenuId, person.AttachUrl1, person.AttachUrl2, person.AttachUrl3, person.AttachUrl4, person.AttachUrl5); } } } #endregion #region 人员离场 /// /// 人员离场 /// /// public static void getPersonOut(string personId) { if (!string.IsNullOrEmpty(personId)) { using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString)) { List getLists = Funs.GetStrListByStr(personId, ','); foreach (var item in getLists) { var getPerson = db.SitePerson_Person.FirstOrDefault(x => x.PersonId == item); if (getPerson != null) { getPerson.OutTime = DateTime.Now; PersonService.UpdatePerson(getPerson); } } } } } #endregion #region 人员出入场记录 /// /// 人员出入场 /// /// w /// /// /// public static void getPersonInOut(Model.SitePerson_Person getPerson, int isIn, DateTime changeTime) { if (!string.IsNullOrEmpty(getPerson.IdentityCard)) { using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString)) { if (getPerson != null) { string postType = null; var getWokPost = db.Base_WorkPost.FirstOrDefault(x => x.WorkPostId == getPerson.WorkPostId); if (getWokPost != null) { postType = getWokPost.PostType; } var getPersonInOut = db.SitePerson_PersonInOut.FirstOrDefault(x => x.PersonId == getPerson.PersonId && x.ProjectId == getPerson.ProjectId && x.ChangeTime == changeTime); if (getPersonInOut == null) { Model.SitePerson_PersonInOut newInOut = new Model.SitePerson_PersonInOut { PersonInOutId = SQLHelper.GetNewID(), ProjectId = getPerson.ProjectId, UnitId = getPerson.UnitId, PersonId = getPerson.PersonId, IsIn = isIn == 1 ? true : false, ChangeTime = changeTime, WorkPostId = getPerson.WorkPostId, PostType = postType, }; db.SitePerson_PersonInOut.InsertOnSubmit(newInOut); db.SubmitChanges(); string proCode = ProjectService.GetJTProjectCodeByProjectId(getPerson.ProjectId); Model.SitePerson_PersonInOutNow newNow = new Model.SitePerson_PersonInOutNow { PersonInOutId = newInOut.PersonInOutId, ProjectId = newInOut.ProjectId, UnitId = newInOut.UnitId, PersonId = newInOut.PersonId, IsIn = newInOut.IsIn, ChangeTime = newInOut.ChangeTime, WorkPostId = newInOut.WorkPostId, PostType = newInOut.PostType, ProCode = proCode, Name = getPerson.PersonName, IdcardType = getPerson.IdcardType, IdcardNumber = getPerson.IdentityCard, }; if (!getPerson.OutTime.HasValue || getPerson.OutTime > DateTime.Now) { //// 插入当日记录表 PersonInOutService.InsertPersonInOutNowNow(newNow); // GetDataService.CorrectingPersonInOutNumber(projectId); } } } } } } #endregion #region 获取人员信息出入场记录 /// /// 获取人员信息出入场记录 /// /// /// /// /// /// /// public static List getPersonInOutList(string projectId, string unitId, string startTime, string endTime) { using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString)) { DateTime? startTimeD = Funs.GetNewDateTime(startTime); DateTime? endTimeD = Funs.GetNewDateTime(endTime); var personInOuts = from x in db.SitePerson_PersonInOut join y in db.SitePerson_Person on x.PersonId equals y.PersonId where x.ProjectId == projectId 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 (!string.IsNullOrEmpty(unitId) && unitId != Const.UnitId_CWCEC) { personInOuts = personInOuts.Where(x => x.UnitId == unitId); } if (startTimeD.HasValue) { personInOuts = personInOuts.Where(x => x.ChangeTimeD >= startTimeD); } if (endTimeD.HasValue) { personInOuts = personInOuts.Where(x => x.ChangeTimeD <= endTimeD); } return personInOuts.OrderByDescending(x => x.ChangeTimeD).ToList(); } } #endregion #region 获取人员信息出入场记录 /// /// /// public static int getPersonInOutListCount { get; set; } /// /// 获取人员信息出入场记录 /// /// /// /// /// /// /// public static List getPersonInOutList(string projectId, string userUnitId, string unitId, string workPostId, string strParam, string startTime, string endTime, int pageIndex) { using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString)) { DateTime? startTimeD = Funs.GetNewDateTime(startTime); DateTime? endTimeD = Funs.GetNewDateTime(endTime); var getPersonInOutList = from x in db.SitePerson_PersonInOut where x.ProjectId == projectId select x; if (!string.IsNullOrEmpty(userUnitId) && userUnitId != Const.UnitId_CWCEC) { getPersonInOutList = getPersonInOutList.Where(x => x.UnitId == userUnitId); } if (!string.IsNullOrEmpty(unitId)) { getPersonInOutList = getPersonInOutList.Where(x => x.UnitId == unitId); } if (!string.IsNullOrEmpty(workPostId)) { getPersonInOutList = getPersonInOutList.Where(x => x.WorkPostId == workPostId); } if (startTimeD.HasValue) { getPersonInOutList = getPersonInOutList.Where(x => x.ChangeTime >= startTimeD); } if (endTimeD.HasValue) { getPersonInOutList = getPersonInOutList.Where(x => x.ChangeTime <= endTimeD); } if (!string.IsNullOrEmpty(strParam)) { getPersonInOutList = from x in getPersonInOutList join y in db.SitePerson_Person on x.PersonId equals y.PersonId where y.ProjectId == projectId && y.PersonName.Contains(strParam) select x; } getPersonListCount = getPersonInOutList.Count(); if (getPersonListCount == 0) { return null; } else { var personInOuts = from x in getPersonInOutList join y in db.SitePerson_Person on x.PersonId equals y.PersonId where x.ProjectId == projectId 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 (pageIndex > 0) { return personInOuts.OrderByDescending(x => x.ChangeTimeD).Skip(Funs.PageSize * (pageIndex - 1)).Take(Funs.PageSize).ToList(); } else { return personInOuts.ToList(); } } } } #endregion #region 根据人员ID获取个人出入场记录 /// /// /// public static int getPersonInOutListByPersonIdCount { get; set; } /// /// 根据人员ID获取个人出入场记录 /// /// /// /// /// public static List getPersonInOutListByPersonId(string personId, string startTime, string endTime, int pageIndex) { using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString)) { DateTime? startTimeD = Funs.GetNewDateTime(startTime); DateTime? endTimeD = Funs.GetNewDateTime(endTime); var personInOuts = from x in db.SitePerson_PersonInOut where x.PersonId == personId select new Model.PersonInOutItem { PersonInOutId =x.PersonInOutId, PersonId = x.PersonId, PersonName = db.SitePerson_Person.First(z=>z.PersonId==x.PersonId).PersonName, ProjectId = x.ProjectId, UnitId = x.UnitId, UnitName = db.Base_Unit.First(z => z.UnitId == x.UnitId).UnitName, WorkPostId = x.WorkPostId, WorkPostName = db.Base_WorkPost.First(z => z.WorkPostId == x.WorkPostId).WorkPostName, IsIn = x.IsIn, IsInName = x.IsIn == true ? "进场" : "出场", ChangeTime = string.Format("{0:yyyy-MM-dd HH:mm}", x.ChangeTime), ChangeTimeD = x.ChangeTime, }; if (startTimeD.HasValue) { personInOuts = personInOuts.Where(x => x.ChangeTimeD >= startTimeD); } if (endTimeD.HasValue) { personInOuts = personInOuts.Where(x => x.ChangeTimeD <= endTimeD); } getPersonListCount = personInOuts.Count(); if (getPersonListCount == 0) { return null; } else { if (pageIndex > 0) { return personInOuts.OrderByDescending(x => x.ChangeTimeD).Skip(Funs.PageSize * (pageIndex - 1)).Take(Funs.PageSize).ToList(); } else { return personInOuts.ToList(); } } } } #endregion #region 根据identityCard获取人员资质信息 /// /// 根据identityCard获取人员资质信息 /// /// /// public static Model.PersonQualityItem getPersonQualityByIdentityCard(string identityCard, string projectId) { using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString)) { var getLists = from y in db.SitePerson_Person join x in db.QualityAudit_PersonQuality on y.PersonId equals x.PersonId where (y.IdentityCard == identityCard || x.PersonId == identityCard) && (projectId == null || y.ProjectId == projectId) orderby y.CardNo select new Model.PersonQualityItem { PersonQualityId = x.PersonQualityId, PersonId = x.PersonId, PersonName = y.PersonName, CardNo = y.CardNo, IdentityCard = y.IdentityCard, ProjectId = y.ProjectId, UnitId = y.UnitId, UnitName = db.Base_Unit.First(z => z.UnitId == y.UnitId).UnitName, UnitCode = db.Base_Unit.First(z => z.UnitId == y.UnitId).UnitCode, WorkPostId = y.WorkPostId, WorkPostName = db.Base_WorkPost.First(z => z.WorkPostId == y.WorkPostId).WorkPostName, CertificateId = x.CertificateId, CertificateName = db.Base_Certificate.First(z => z.CertificateId == x.CertificateId).CertificateName, CertificateNo = x.CertificateNo, Grade = x.Grade, SendUnit = x.SendUnit, SendDate = string.Format("{0:yyyy-MM-dd}", x.SendDate), LimitDate = string.Format("{0:yyyy-MM-dd}", x.LimitDate), LateCheckDate = string.Format("{0:yyyy-MM-dd}", x.LateCheckDate), ApprovalPerson = db.Sys_User.First(z => z.UserId == x.AuditorId).UserName, Remark = x.Remark, CompileMan = x.CompileMan, CompileManName = db.Sys_User.First(z => z.UserId == x.CompileMan).UserName, CompileDate = string.Format("{0:yyyy-MM-dd}", x.CompileDate), AuditDate = string.Format("{0:yyyy-MM-dd}", x.AuditDate), AuditorName = db.Sys_User.First(z => z.UserId == x.AuditorId).UserName, AttachUrl = APIUpLoadFileService.getFileUrl(x.PersonQualityId, null), }; return getLists.FirstOrDefault(); } } #endregion #region 根据identityCard获取人员资质信息 /// /// 根据identityCard获取人员资质信息 /// /// /// public static List getPersonTestRecoedByIdentityCard(string identityCard, string projectId) { using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString)) { var getLists = from x in db.EduTrain_TrainRecordDetail join y in db.SitePerson_Person on x.PersonId equals y.PersonId join z in db.EduTrain_TrainRecord on x.TrainingId equals z.TrainingId where y.IdentityCard == identityCard && (projectId == null || z.ProjectId == projectId) orderby z.TrainStartDate descending select new Model.TestRecordItem { TestRecordId = x.TrainDetailId, ProjectId = z.ProjectId, ProjectName = db.Base_Project.First(u => u.ProjectId == z.ProjectId).ProjectName, TestPlanName = z.TrainTitle, TestManId = x.PersonId, TestManName = y.PersonName, TestStartTime = string.Format("{0:yyyy-MM-dd HH:mm}", z.TrainStartDate), TestEndTime = string.Format("{0:yyyy-MM-dd HH:mm}", z.TrainEndDate), TestScores = x.CheckScore ?? 0, CheckResult = x.CheckResult, TestType = db.Base_TrainType.First(u => u.TrainTypeId == z.TrainTypeId).TrainTypeName, }; return getLists.ToList(); } } #endregion #region 根据projectId、unitid获取特岗人员资质信息 /// /// 根据projectId、unitid获取特岗人员资质信息 /// /// 项目ID /// 单位ID /// 数据类型0-已过期;1-即将过期;2-无证书 /// 页码 /// public static List getPersonQualityByProjectIdUnitId(string projectId, string unitId, string type) { using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString)) { var getLists = (from x in db.SitePerson_Person join y in db.QualityAudit_PersonQuality on x.PersonId equals y.PersonId join z in db.Base_WorkPost on x.WorkPostId equals z.WorkPostId where x.ProjectId == projectId && z.PostType == "2" orderby y.LimitDate select new Model.PersonQualityItem { PersonQualityId = y.PersonQualityId, PersonId = y.PersonId, PersonName = x.PersonName, CardNo = x.CardNo, IdentityCard = x.IdentityCard, ProjectId = x.ProjectId, UnitId = x.UnitId, UnitName = db.Base_Unit.First(z => z.UnitId == x.UnitId).UnitName, CertificateId = y.CertificateId, CertificateName = db.Base_Certificate.First(z => z.CertificateId == y.CertificateId).CertificateName, WorkPostId = x.WorkPostId, WorkPostName = db.Base_WorkPost.First(z => z.WorkPostId == x.WorkPostId).WorkPostName, CertificateNo = y.CertificateNo, Grade = y.Grade, SendUnit = y.SendUnit, SendDate = string.Format("{0:yyyy-MM-dd}", y.SendDate), LimitDate = string.Format("{0:yyyy-MM-dd}", y.LimitDate), LimitDateD = y.LimitDate, LateCheckDate = string.Format("{0:yyyy-MM-dd}", y.LateCheckDate), ApprovalPerson = db.Sys_User.First(z => z.UserId == x.AuditorId).UserName, Remark = y.Remark, CompileMan = y.CompileMan, CompileManName = db.Sys_User.First(z => z.UserId == y.CompileMan).UserName, CompileDate = string.Format("{0:yyyy-MM-dd}", y.CompileDate), AuditDate = string.Format("{0:yyyy-MM-dd}", y.AuditDate), AuditorName = db.Sys_User.First(z => z.UserId == x.AuditorId).UserName, AttachUrl = APIUpLoadFileService.getFileUrl(y.PersonQualityId, null), }).ToList(); if (ProjectUnitService.GetProjectUnitTypeByProjectIdUnitId(projectId, unitId)) { getLists = getLists.Where(x => x.UnitId == unitId).ToList(); } if (type == "0") { getLists = getLists.Where(x => x.CertificateId != null && x.LimitDateD < DateTime.Now).ToList(); } else if (type == "1") { getLists = getLists.Where(x => x.CertificateId != null && x.LimitDateD >= DateTime.Now && x.LimitDateD < DateTime.Now.AddMonths(1)).ToList(); } else if (type == "2") { getLists = getLists.Where(x => x.CertificateId == null).ToList(); } return getLists; } } #endregion #region 人员资质信息保存方法 /// /// 人员资质信息保存方法 /// /// 人员信息 public static void SavePersonQuality(Model.PersonQualityItem personQuality) { using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString)) { Model.QualityAudit_PersonQuality newPersonQuality = new Model.QualityAudit_PersonQuality { PersonQualityId = personQuality.PersonQualityId, PersonId = personQuality.PersonId, CertificateNo = personQuality.CertificateNo, CertificateName = personQuality.CertificateName, Grade = personQuality.Grade, SendUnit = personQuality.SendUnit, SendDate = Funs.GetNewDateTime(personQuality.SendDate), LimitDate = Funs.GetNewDateTime(personQuality.LimitDate), LateCheckDate = Funs.GetNewDateTime(personQuality.LateCheckDate), ApprovalPerson = personQuality.ApprovalPerson, Remark = personQuality.Remark, CompileDate = Funs.GetNewDateTime(personQuality.CompileDate), AuditDate = Funs.GetNewDateTime(personQuality.AuditDate), }; if (!string.IsNullOrEmpty(personQuality.CertificateId)) { newPersonQuality.CertificateId = personQuality.CertificateId; } if (!string.IsNullOrEmpty(personQuality.CompileMan)) { newPersonQuality.CompileMan = personQuality.CompileMan; } if (!string.IsNullOrEmpty(personQuality.AuditorId)) { newPersonQuality.AuditorId = personQuality.AuditorId; } var getPersonQuality = db.QualityAudit_PersonQuality.FirstOrDefault(x => x.PersonQualityId == newPersonQuality.PersonQualityId || x.PersonId == newPersonQuality.PersonId); if (getPersonQuality == null) { newPersonQuality.PersonQualityId = SQLHelper.GetNewID(); newPersonQuality.AuditDate = null; db.QualityAudit_PersonQuality.InsertOnSubmit(newPersonQuality); db.SubmitChanges(); } else { newPersonQuality.PersonQualityId = getPersonQuality.PersonQualityId; getPersonQuality.CertificateId = newPersonQuality.CertificateId; getPersonQuality.CertificateNo = newPersonQuality.CertificateNo; getPersonQuality.CertificateName = newPersonQuality.CertificateName; getPersonQuality.Grade = newPersonQuality.Grade; getPersonQuality.SendUnit = newPersonQuality.SendUnit; getPersonQuality.SendDate = newPersonQuality.SendDate; getPersonQuality.LimitDate = newPersonQuality.LimitDate; getPersonQuality.LateCheckDate = newPersonQuality.LateCheckDate; getPersonQuality.ApprovalPerson = newPersonQuality.ApprovalPerson; getPersonQuality.Remark = newPersonQuality.Remark; getPersonQuality.CompileMan = newPersonQuality.CompileMan; getPersonQuality.CompileDate = newPersonQuality.CompileDate; getPersonQuality.AuditDate = newPersonQuality.AuditDate; getPersonQuality.AuditorId = newPersonQuality.AuditorId; db.SubmitChanges(); } if (!string.IsNullOrEmpty(newPersonQuality.PersonQualityId)) { APIUpLoadFileService.SaveAttachUrl(Const.PersonQualityMenuId, newPersonQuality.PersonQualityId, personQuality.AttachUrl, "0"); } } } #endregion #region 获取异常人员信息出入场记录 /// /// 获取异常人员信息出入场记录 /// /// /// 单位ID /// 开始时间 /// 结束时间 /// 入场异常 0 出场异常 1 /// 页码 /// public static List getAbnormalPersonInOutList(string projectId, string unitId, string startTime, string endTime, string inOut, int pageIndex) { using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString)) { DateTime startTimeD = Funs.GetNewDateTimeOrNow(startTime); DateTime endTimeD = Funs.GetNewDateTimeOrNow(endTime); List getAbnormalPersonInOutList = new List(); //// 入场异常 if (inOut == "0") { var getAllPersonInOutLists = getPersonInOutLists(projectId, unitId, startTimeD.AddHours(-18), endTimeD); /// 出场 var getPersonOuts = getAllPersonInOutLists.Where(x => (x.IsIn == false || x.IsIn == null) && x.ChangeTimeD >= startTimeD ); var getgetPersonIns = getAllPersonInOutLists.Where(x => x.IsIn == true ); Model.PersonInOutItem newItem = new Model.PersonInOutItem(); foreach (var item in getPersonOuts) { var getIn = getgetPersonIns.FirstOrDefault(x => x.PersonId == item.PersonId && x.ChangeTimeD.Value.AddHours(18) >= item.ChangeTimeD && x.ChangeTimeD < item.ChangeTimeD); if (getIn == null) { getAbnormalPersonInOutList.Add(item); } } } else //// 出场异常 { var getAllPersonInOutLists = getPersonInOutLists(projectId, unitId, startTimeD, endTimeD.AddHours(18)); /// 进场 var getPersonInts = getAllPersonInOutLists.Where(x => x.IsIn == true && x.ChangeTimeD <= endTimeD); var getPersonOuts = getAllPersonInOutLists.Where(x => (x.IsIn == false || x.IsIn == null)); Model.PersonInOutItem newItem = new Model.PersonInOutItem(); foreach (var item in getPersonInts) { var getOut = getPersonOuts.FirstOrDefault(x => x.PersonId == item.PersonId && x.ChangeTimeD.Value.AddHours(-18) <= item.ChangeTimeD && x.ChangeTimeD > item.ChangeTimeD); if (getOut == null) { getAbnormalPersonInOutList.Add(item); } } } return getAbnormalPersonInOutList.Skip(Funs.PageSize * (pageIndex - 1)).Take(Funs.PageSize).ToList(); } } /// /// /// /// /// /// /// /// /// public static List getPersonInOutLists(string projectId, string unitId, DateTime startTimeD, DateTime endTimeD) { using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString)) { var personInOuts = from x in db.SitePerson_PersonInOut join y in db.SitePerson_Person on x.PersonId equals y.PersonId where x.ProjectId == projectId && x.ChangeTime >= startTimeD && x.ChangeTime <= endTimeD 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 (!string.IsNullOrEmpty(unitId)) { personInOuts = personInOuts.Where(x => x.UnitId == unitId); } return personInOuts.ToList(); } } #endregion /// /// /// /// /// public static string PersonFace(Model.SitePerson_Person person) { string message = string.Empty; string filePath = ConfigurationManager.AppSettings["localRoot"] + person.PhotoUrl; List kqFace = null; try { kqFace = (List)SgManager.AI.FaceClass.SearchFileFace(filePath); if (kqFace != null || kqFace.Count > 0 || kqFace[0].errMess == "SUCCESS") { string result = FaceClass.FaceVerify(filePath); JObject jresult = JObject.Parse(result); JObject lvresult = jresult.Value("result"); bool isOK = false; if (jresult.Value("error_code") == 0) { if (lvresult.Value("face_liveness") >= ConfigAppSetting.getConfigAppSetting("BD_face_liveness") ? true : false)//99.5%//活体度 { if (Convert.ToDouble(lvresult["face_list"][0]["location"]["width"]) > ConfigAppSetting.getConfigAppSetting("BD_width") ? true : false) { if (Convert.ToDouble(lvresult["face_list"][0]["location"]["height"]) > ConfigAppSetting.getConfigAppSetting("BD_height") ? true : false) { if (System.Math.Abs(Convert.ToDouble(lvresult["face_list"][0]["angle"]["roll"])) <= ConfigAppSetting.getConfigAppSetting("BD_roll") ? true : false)//角度正负度数 { if (System.Math.Abs(Convert.ToDouble(lvresult["face_list"][0]["angle"]["yaw"])) <= ConfigAppSetting.getConfigAppSetting("BD_roll") + 1 ? true : false)//角度正负度数 { if (System.Math.Abs(Convert.ToDouble(lvresult["face_list"][0]["angle"]["pitch"])) <= ConfigAppSetting.getConfigAppSetting("BD_roll") + 1 ? true : false)//角度正负度数 { if (Convert.ToDouble(lvresult["face_list"][0]["quality"]["occlusion"]["left_eye"]) <= ConfigAppSetting.getConfigAppSetting("BD_occlusion") ? true : false)// 0为无遮挡,1是完全遮挡 { if (Convert.ToDouble(lvresult["face_list"][0]["quality"]["occlusion"]["right_eye"]) <= ConfigAppSetting.getConfigAppSetting("BD_occlusion") ? true : false)// 0为无遮挡,1是完全遮挡 { if (Convert.ToDouble(lvresult["face_list"][0]["quality"]["occlusion"]["nose"]) <= ConfigAppSetting.getConfigAppSetting("BD_occlusion") ? true : false)// 0为无遮挡,1是完全遮挡 { if (Convert.ToDouble(lvresult["face_list"][0]["quality"]["occlusion"]["mouth"]) <= ConfigAppSetting.getConfigAppSetting("BD_occlusion") ? true : false)// 0为无遮挡,1是完全遮挡 { if (Convert.ToDouble(lvresult["face_list"][0]["quality"]["occlusion"]["left_cheek"]) <= ConfigAppSetting.getConfigAppSetting("BD_occlusion") ? true : false)// 0为无遮挡,1是完全遮挡 { if (Convert.ToDouble(lvresult["face_list"][0]["quality"]["occlusion"]["right_cheek"]) <= ConfigAppSetting.getConfigAppSetting("BD_occlusion") ? true : false)// 0为无遮挡,1是完全遮挡 { if (Convert.ToDouble(lvresult["face_list"][0]["quality"]["occlusion"]["chin_contour"]) <= ConfigAppSetting.getConfigAppSetting("BD_occlusion") ? true : false)// 0为无遮挡,1是完全遮挡 { if (Convert.ToDouble(lvresult["face_list"][0]["quality"]["blur"]) <= ConfigAppSetting.getConfigAppSetting("BD_blur") ? true : false)//模糊度,0---1,小于0.7 { isOK = true; } else message = "清晰度检测失败"; ; } else message = "遮挡检测失败"; } else message = "遮挡检测失败"; } else message = "遮挡检测失败"; } else message = "遮挡检测失败"; } else message = "遮挡检测失败"; } else message = "遮挡检测失败"; } else message = "遮挡检测失败"; } else message = "角度检测失败"; } else message = "角度检测失败"; } else message = "角度检测失败"; } else message = "宽高检测失败"; } else message = "宽高检测失败"; } else message = "活体检测失败"; } else message = "识别不到人脸"; if (isOK) { var faceResult = FaceClass.add(person.PersonId, person.IdentityCard, System.Configuration.ConfigurationManager.AppSettings["CEMS_IMG_URL"].ToString() + person.PhotoUrl, AccessToken.getAccessToken()); var face = JsonConvert.DeserializeObject(faceResult); // JsonConvert.DeserializeObject(myPunishItem); if (face.error_code == 0 || face.error_code == 223105) { message = "人脸库注册成功!"; // face_token = face.result.face_token; //APIPersonService.SaveSitePerson(person); } else { message = "注册人脸库失败" + face.error_code + face.error_msg; } } else { message += "注册人脸库失败"; } } } catch (Exception ex) { message = "注册人脸库失败"; ErrLogInfo.WriteLog(ex, "PC-人员信息保存", "SitePerson.PersonListEdit"); } return message; } } }