using System; using System.Collections; using System.Collections.Generic; using System.Linq; using System.Text; using FineUIPro; using Model; namespace BLL { /// /// 人员信息 /// public static class PersonService { public static Model.SGGLDB db = Funs.DB; #region 劳务人员列表 /// /// 记录数 /// public static int count2 { get; set; } /// /// 定义变量 /// private static IQueryable getDataLists = from x in db.View_SitePerson_Person select x; /// /// 数据列表 /// /// /// /// /// /// /// /// /// public static IEnumerable getListData(string projetcId, string unitId, string workPostId, string name, string idCard, string states, Grid Grid1) { IQueryable getDataList = getDataLists.OrderBy(x => x.ProjectId).ThenBy(x => x.UnitId); if (!string.IsNullOrEmpty(projetcId) && projetcId != Const._Null) { getDataList = getDataList.Where(e => e.ProjectId == projetcId); } if (!string.IsNullOrEmpty(unitId) && unitId != Const._Null) { getDataList = getDataList.Where(e => e.UnitId == unitId); } if (!string.IsNullOrEmpty(workPostId) && workPostId != Const._Null) { getDataList = getDataList.Where(e => e.WorkPostId == workPostId); } if (!string.IsNullOrEmpty(states) && states != "-2") { getDataList = getDataList.Where(e => e.IsUsed == Convert.ToInt32(states)); } if (!string.IsNullOrEmpty(name)) { getDataList = getDataList.Where(e => e.PersonName.Contains(name)); } if (!string.IsNullOrEmpty(idCard)) { getDataList = getDataList.Where(e => e.IdentityCard.Contains(idCard)); } count2 = getDataList.Count(); if (count2 == 0) { return null; } getDataList = SortConditionHelper.SortingAndPaging(getDataList, Grid1.SortField, Grid1.SortDirection, Grid1.PageIndex, Grid1.PageSize); return from x in getDataList select new { x.PersonId, x.PersonName, x.CardNo, x.IdentityCard, x.Sex, x.SexName, x.UnitId, x.UnitName, x.WorkPostId, x.WorkPostName, x.ProjectId, ProjectName = db.Base_Project.First(u => u.ProjectId == x.ProjectId).ProjectName, ShortName = db.Base_Project.First(u => u.ProjectId == x.ProjectId).ShortName, NativePlace = x.CountryName ?? "" + x.ProvinceName ?? "", x.TeamGroupId, x.TeamGroupName, x.InTime, x.OutTime, x.IsUsed, OutName = (x.IsUsed == 1 ? "是" : "否"), }; } #endregion /// /// 根据主键获取人员信息 /// /// /// public static Model.SitePerson_Person GetPersonById(string personId) { return Funs.DB.SitePerson_Person.FirstOrDefault(e => e.PersonId == personId); } /// /// 根据主键获取人员信息 /// /// /// public static string GetPersonNameById(string personId) { string name = string.Empty; var getp = Funs.DB.SitePerson_Person.FirstOrDefault(e => e.PersonId == personId); if (getp != null) { name = getp.PersonName; } return name; } public static string GetPersonNameByIdForApi(string personId) { using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString)) { string name = string.Empty; var getp = db.SitePerson_Person.FirstOrDefault(e => e.PersonId == personId); if (getp != null) { name = getp.PersonName; } return name; } } /// /// 根据UserId主键获取人员信息 /// /// /// public static string GetPersonIdByUserId(string userId) { string personId = userId; var getPerson = GetPersonById(userId); if (getPerson == null) { var getUser = UserService.GetUserByUserId(userId); if (getUser != null) { getPerson = Funs.DB.SitePerson_Person.FirstOrDefault(e => e.IdentityCard == getUser.IdentityCard); if (getPerson != null) { personId = getPerson.PersonId; } } } return personId; } public static string GetPersonIdByUserIdForApi(string userId) { using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString)) { string personId = userId; var getPerson = db.SitePerson_Person.FirstOrDefault(e => e.PersonId == userId); if (getPerson == null) { var getUser = db.Sys_User.FirstOrDefault(e => e.UserId == userId); if (getUser != null) { getPerson = db.SitePerson_Person.FirstOrDefault(e => e.IdentityCard == getUser.IdentityCard); if (getPerson != null) { personId = getPerson.PersonId; } } } return personId; } } /// /// 根据UserId主键获取人员信息 /// /// /// public static Model.SitePerson_Person GetPersonByUserId(string userId, string projectId) { var getPerson = GetPersonById(userId); if (getPerson == null) { var getUser = UserService.GetUserByUserId(userId); if (getUser != null) { getPerson = Funs.DB.SitePerson_Person.FirstOrDefault(e => e.IdentityCard == getUser.IdentityCard && e.ProjectId == projectId); } } return getPerson; } public static Model.SitePerson_Person GetPersonByUserIdForApi(string userId, string projectId) { using (var db = new Model.SGGLDB(Funs.ConnString)) { var getPerson = db.SitePerson_Person.FirstOrDefault(e => e.PersonId == userId); if (getPerson == null) { var getUser = db.Sys_User.FirstOrDefault(e => e.UserId == userId); if (getUser != null) { getPerson = db.SitePerson_Person.FirstOrDefault(e => e.IdentityCard == getUser.IdentityCard && e.ProjectId == projectId); } } return getPerson; } } /// /// 根据项目单位获取人员信息 /// /// /// public static List GetPersonLitsByprojectIdUnitId(string projectId, string unitId) { if (!string.IsNullOrEmpty(unitId)) { return (from x in Funs.DB.SitePerson_Person where x.ProjectId == projectId && x.UnitId == unitId orderby x.PersonName select x).ToList(); } else { return (from x in Funs.DB.SitePerson_Person where x.ProjectId == projectId orderby x.PersonName select x).ToList(); } } /// /// 根据项目单位获取人员信息 /// /// /// public static List GetPersonLitsByprojectIdUnitIdTeamGroupId(string projectId, string unitId, string teamGroupId) { var getPersons = GetPersonLitsByprojectIdUnitId(projectId, unitId); if (!string.IsNullOrEmpty(teamGroupId)) { getPersons = getPersons.Where(x => x.TeamGroupId == teamGroupId).OrderBy(x => x.PersonName).ToList(); } return getPersons; } /// /// 获取最大的人员位置 /// /// 最大的人员位置 public static int? GetMaxPersonIndex(string projectId) { return (from x in Funs.DB.SitePerson_Person where x.ProjectId == projectId select x.PersonIndex).Max(); } /// /// 根据单位Id查询所有人员的数量 /// /// 单位Id /// 人员的数量 public static int GetPersonCountByUnitId(string unitId, string projectId) { var q = (from x in Funs.DB.SitePerson_Person where x.UnitId == unitId && x.ProjectId == projectId && x.IsUsed == 1 select x).ToList(); return q.Count(); } /// /// 根据单位Id查询所有HSE人员的数量 /// /// 单位Id /// HSE人员的数量 public static int GetHSEPersonCountByUnitId(string unitId, string projectId) { var q = (from x in Funs.DB.SitePerson_Person where x.UnitId == unitId && x.ProjectId == projectId && (x.WorkPostId == BLL.Const.WorkPost_HSSEEngineer || x.WorkPostId == BLL.Const.WorkPost_SafetyManager) && x.IsUsed == 1 select x).ToList(); return q.Count(); } /// /// 获取所有人员位置集合 /// /// 所有人员位置集合 public static List GetPersonIndexs(string projectId) { return (from x in Funs.DB.SitePerson_Person where x.ProjectId == projectId select x.PersonIndex).ToList(); } /// /// 根据卡号查询人员信息 /// /// 卡号 /// 人员实体 public static Model.SitePerson_Person GetPersonByCardNo(string projectId, string cardNo) { return Funs.DB.SitePerson_Person.FirstOrDefault(e => e.ProjectId == projectId && e.CardNo == cardNo); } /// /// 根据卡号查询所有人员的数量 /// /// 卡号 /// 人员的数量 public static int GetPersonCountByCardNo(string projectId, string cardNo) { var q = (from x in Funs.DB.SitePerson_Person where x.ProjectId == projectId && x.CardNo == cardNo select x).ToList(); return q.Count(); } /// /// 根据人员姓名和所在单位判断人员是否存在 /// /// /// /// public static bool IsExistPersonByUnit(string unitId, string personName, string projectId) { var q = from x in Funs.DB.SitePerson_Person where x.UnitId == unitId && x.PersonName == personName && x.ProjectId == projectId select x; if (q.Count() > 0) { return true; } else { return false; } } /// /// 根据身份证号Id获取人员的数量 /// /// 身份证号 /// 人员的数量 public static Model.SitePerson_Person GetPersonCountByIdentityCard(string identityCard, string projectId) { var q = Funs.DB.SitePerson_Person.FirstOrDefault(x => x.IdentityCard == identityCard && x.ProjectId == projectId); return q; } /// /// 获取人员信息列表 /// /// /// public static List GetPersonList(string projectId) { return (from x in Funs.DB.SitePerson_Person where x.ProjectId == projectId select x).ToList(); } /// /// 增加人员信息 /// /// 人员实体 public static void AddPerson(Model.SitePerson_Person person) { using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString)) { Model.SitePerson_Person newPerson = new Model.SitePerson_Person { PersonId = person.PersonId, CardNo = person.CardNo, PersonName = person.PersonName, Sex = person.Sex, IdentityCard = person.IdentityCard, Address = person.Address, ProjectId = person.ProjectId, UnitId = person.UnitId, TeamGroupId = person.TeamGroupId, WorkAreaId = person.WorkAreaId, WorkPostId = person.WorkPostId, OutTime = person.OutTime, OutResult = person.OutResult, Telephone = person.Telephone, PositionId = person.PositionId, PostTitleId = person.PostTitleId, PhotoUrl = person.PhotoUrl, HeadImage = person.HeadImage, IsUsed = person.IsUsed, IsCardUsed = person.IsCardUsed, DepartId = person.DepartId, FromPersonId = person.FromPersonId, Password = GetPersonPassWord(person.IdentityCard), AuditorId = person.AuditorId, AuditorDate = person.AuditorDate, IsForeign = person.IsForeign, IsOutside = person.IsOutside, EduLevel = person.EduLevel, MaritalStatus = person.MaritalStatus, Isprint = "0", MainCNProfessionalId = person.MainCNProfessionalId, ViceCNProfessionalId = person.ViceCNProfessionalId, Birthday = person.Birthday, IdcardType = person.IdcardType, IdcardStartDate = person.IdcardStartDate, IdcardEndDate = person.IdcardEndDate, IdcardForever = person.IdcardForever, PoliticsStatus = person.PoliticsStatus, IdcardAddress = person.IdcardAddress, Nation = person.Nation, CountryCode = person.CountryCode, ProvinceCode = person.ProvinceCode, IsSafetyMonitoring = person.IsSafetyMonitoring, IsCardNoOK = IDCardValid.CheckIDCard(person.IdentityCard), }; if (person.InTime.HasValue) { newPerson.InTime = person.InTime; } else { newPerson.InTime = Funs.GetNewDateTime(DateTime.Now.ToShortDateString()); } db.SitePerson_Person.InsertOnSubmit(newPerson); db.SubmitChanges(); ////增加一条编码记录 BLL.CodeRecordsService.InsertCodeRecordsByMenuIdProjectIdUnitId(BLL.Const.PersonListMenuId, person.ProjectId, person.UnitId, person.PersonId, person.InTime); } } /// /// 修改人员信息 /// /// 人员实体 public static void UpdatePerson(Model.SitePerson_Person person) { using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString)) { Model.SitePerson_Person newPerson = db.SitePerson_Person.FirstOrDefault(e => e.PersonId == person.PersonId); if (newPerson != null) { newPerson.FromPersonId = person.FromPersonId; newPerson.CardNo = person.CardNo; newPerson.PersonName = person.PersonName; newPerson.Sex = person.Sex; if (newPerson.IdentityCard != person.IdentityCard) { PersonInOutService.UpdateRealNameInOut(newPerson.PersonId, newPerson.IdentityCard, person.IdentityCard); newPerson.IdentityCard = person.IdentityCard; newPerson.IsCardNoOK = IDCardValid.CheckIDCard(person.IdentityCard); } newPerson.Address = person.Address; newPerson.ProjectId = person.ProjectId; newPerson.UnitId = person.UnitId; newPerson.TeamGroupId = person.TeamGroupId; newPerson.WorkAreaId = person.WorkAreaId; newPerson.WorkPostId = person.WorkPostId; newPerson.InTime = person.InTime; newPerson.OutTime = person.OutTime; newPerson.OutResult = person.OutResult; newPerson.Telephone = person.Telephone; newPerson.PositionId = person.PositionId; newPerson.PostTitleId = person.PostTitleId; newPerson.PhotoUrl = person.PhotoUrl; newPerson.IsSafetyMonitoring = person.IsSafetyMonitoring; newPerson.HeadImage = person.HeadImage; newPerson.IsUsed = person.IsUsed; newPerson.IsCardUsed = person.IsCardUsed; newPerson.EduLevel = person.EduLevel; newPerson.MaritalStatus = person.MaritalStatus; newPerson.DepartId = person.DepartId; newPerson.QRCodeAttachUrl = person.QRCodeAttachUrl; newPerson.Password = GetPersonPassWord(person.IdentityCard); if (!newPerson.OutTime.HasValue) { newPerson.OutTime = null; newPerson.ExchangeTime = null; } newPerson.ExchangeTime2 = null; newPerson.RealNameUpdateTime = null; if (!string.IsNullOrEmpty(person.AuditorId)) { newPerson.AuditorId = person.AuditorId; } if (person.AuditorDate.HasValue) { newPerson.AuditorDate = person.AuditorDate; } newPerson.IsForeign = person.IsForeign; newPerson.IsOutside = person.IsOutside; newPerson.Birthday = person.Birthday; newPerson.MainCNProfessionalId = person.MainCNProfessionalId; newPerson.ViceCNProfessionalId = person.ViceCNProfessionalId; newPerson.IdcardType = person.IdcardType; newPerson.IdcardStartDate = person.IdcardStartDate; newPerson.IdcardEndDate = person.IdcardEndDate; newPerson.IdcardForever = person.IdcardForever; newPerson.PoliticsStatus = person.PoliticsStatus; newPerson.IdcardAddress = person.IdcardAddress; newPerson.Nation = person.Nation; newPerson.CountryCode = person.CountryCode; newPerson.ProvinceCode = person.ProvinceCode; db.SubmitChanges(); } } } /// /// 根据人员Id删除一个人员信息 /// /// 人员Id public static void DeletePerson(string personId) { Model.SitePerson_Person person = Funs.DB.SitePerson_Person.FirstOrDefault(e => e.PersonId == personId); if (person != null) { ///删除编码表记录 BLL.CodeRecordsService.DeleteCodeRecordsByDataId(personId); //删除特岗人员资质 var personQuality = PersonQualityService.GetPersonQualityByPersonId(personId); if (personQuality != null) { CodeRecordsService.DeleteCodeRecordsByDataId(personQuality.PersonQualityId);//删除编号 CommonService.DeleteAttachFileById(personQuality.PersonQualityId);//删除附件 Funs.DB.QualityAudit_PersonQuality.DeleteOnSubmit(personQuality); Funs.DB.SubmitChanges(); } //删除安全人员资质 Model.QualityAudit_SafePersonQuality safePersonQuality = Funs.DB.QualityAudit_SafePersonQuality.FirstOrDefault(e => e.PersonId == personId); if (safePersonQuality != null) { CodeRecordsService.DeleteCodeRecordsByDataId(safePersonQuality.SafePersonQualityId); CommonService.DeleteAttachFileById(safePersonQuality.SafePersonQualityId); Funs.DB.QualityAudit_SafePersonQuality.DeleteOnSubmit(safePersonQuality); Funs.DB.SubmitChanges(); } ///违规人员 var getViolation = from x in Funs.DB.Check_ViolationPerson where x.PersonId == person.PersonId select x; if (getViolation.Count() > 0) { Funs.DB.Check_ViolationPerson.DeleteAllOnSubmit(getViolation); Funs.DB.SubmitChanges(); } ///删除考试记录 var getTask = from x in Funs.DB.Training_Task where x.UserId == person.PersonId select x; if (getTask.Count() > 0) { foreach (var item in getTask) { TrainingTaskService.DeleteTaskById(item.TaskId); } } ///删除考试记录 var getTestRecode = from x in Funs.DB.Training_TestRecord where x.TestManId == person.PersonId select x; if (getTestRecode.Count() > 0) { foreach (var item in getTestRecode) { TestRecordService.DeleteTestRecordByTestRecordId(item.TestRecordId); } } ///删除人员绩效 var getPerfomances = from x in Funs.DB.Perfomance_PersonPerfomance where x.PersonId == person.PersonId select x; if (getPerfomances.Count() > 0) { foreach (var item in getPerfomances) { PersonPerfomanceService.DeletePersonPerfomanceById(item.PersonPerfomanceId); } } ///删除人员出入场记录 BLL.PersonInOutService.DeletePersonInOutByPersonId(person.PersonId); ///删除编码表记录 BLL.CodeRecordsService.DeleteCodeRecordsByDataId(personId); Funs.DB.SitePerson_Person.DeleteOnSubmit(person); Funs.DB.SubmitChanges(); } } /// /// 根据身份证号获取人员信息 /// /// 身份证号 /// 人员信息 public static Model.SitePerson_Person GetPersonByIdentityCard(string projectId, string identityCard) { if (!string.IsNullOrEmpty(identityCard)) { return Funs.DB.SitePerson_Person.FirstOrDefault(e => e.ProjectId == projectId && e.IdentityCard == identityCard); } else { return null; } } /// /// 根据身份证号获取人员信息 /// /// 姓名 /// 人员信息 public static Model.SitePerson_Person GetPersonByName(string projectId, string name) { if (!string.IsNullOrEmpty(name)) { return Funs.DB.SitePerson_Person.FirstOrDefault(e => e.ProjectId == projectId && e.PersonName == name); } else { return null; } } /// /// 保存发卡信息 /// /// /// public static void SaveSendCard(string personId, string cardNo, int personIndex) { using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString)) { Model.SitePerson_Person card = db.SitePerson_Person.FirstOrDefault(e => e.CardNo == cardNo); if (card != null) { card.CardNo = null; } else { Model.SitePerson_Person person = db.SitePerson_Person.FirstOrDefault(e => e.PersonId == personId); person.CardNo = cardNo; person.PersonIndex = personIndex; //person.CardNo = sendCardNo; } db.SubmitChanges(); } } /// /// 根据作业区域获取人员 /// /// /// public static List GetPersonListByWorkAreaId(string workAreaId) { return (from x in Funs.DB.SitePerson_Person where x.WorkAreaId == workAreaId select x).ToList(); } /// /// 人员离岗 /// /// public static void PersonOut(string personId, DateTime date) { using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString)) { var person = db.SitePerson_Person.FirstOrDefault(x => x.PersonId == personId); if (person != null) { person.OutTime = date; person.IsUsed = 1; person.ExchangeTime = null; person.ExchangeTime2 = null; person.RealNameUpdateTime = null; db.SubmitChanges(); } } } #region 表下拉框 /// /// 表下拉框 /// /// 下拉框名字 /// 是否显示请选择 public static void InitPersonByProjectUnitDropDownList(FineUIPro.DropDownList dropName, string projectId, string unitId, bool isShowPlease) { dropName.DataValueField = "PersonId"; dropName.DataTextField = "PersonName"; dropName.DataSource = GetPersonLitsByprojectIdUnitId(projectId, unitId); dropName.DataBind(); if (isShowPlease) { Funs.FineUIPleaseSelect(dropName); } } /// /// 表下拉框 /// /// 下拉框名字 /// 是否显示请选择 public static void InitPersonByProjectUnitTeamGroupDropDownList(FineUIPro.DropDownList dropName, string projectId, string unitId, string teamGroupId, bool isShowPlease) { dropName.DataValueField = "PersonId"; dropName.DataTextField = "PersonName"; dropName.DataSource = GetPersonLitsByprojectIdUnitIdTeamGroupId(projectId, unitId, teamGroupId); dropName.DataBind(); if (isShowPlease) { Funs.FineUIPleaseSelect(dropName); } } #endregion /// /// 获取人员密码 /// /// /// public static string GetPersonPassWord(string idCard) { string passWord = Funs.EncryptionPassword(Const.Password); ////现场人员密码 if (!string.IsNullOrEmpty(idCard)) { if (idCard.Length > 3) { passWord = Funs.EncryptionPassword(idCard.Substring(idCard.Length - 4)); } else { passWord = Funs.EncryptionPassword(idCard); } } return passWord; } #region 在岗人员列表 /// /// 记录数 /// public static int inCount { get; set; } /// /// 定义变量 /// private static IQueryable getInPersonLists = from x in db.SitePerson_Person where x.IsUsed == 1 && x.InTime <= DateTime.Now && (!x.OutTime.HasValue || x.OutTime > DateTime.Now) select x; /// /// 获取分页列表 /// /// 页码 /// 每页数量 /// public static IEnumerable getInPsersonListData(string projectId, string unitId, string personName, string identityCard, Grid Grid1) { IQueryable getInPersonList = getInPersonLists.Where(x => x.ProjectId == projectId); if (!string.IsNullOrEmpty(unitId) && unitId != Const._Null) { if (unitId == "0") { getInPersonList = getInPersonList.Where(x => x.UnitId == null); } else { getInPersonList = getInPersonList.Where(x => x.UnitId == unitId); } } if (!string.IsNullOrEmpty(personName)) { getInPersonList = getInPersonList.Where(x => x.PersonName.Contains(personName)); } if (!string.IsNullOrEmpty(identityCard)) { getInPersonList = getInPersonList.Where(x => x.IdentityCard.Contains(identityCard)); } inCount = getInPersonList.Count(); if (inCount == 0) { return null; } getInPersonList = SortConditionHelper.SortingAndPaging(getInPersonList, Grid1.SortField, Grid1.SortDirection, Grid1.PageIndex, Grid1.PageSize); return from x in getInPersonList select new { x.PersonId, x.CardNo, x.PersonName, x.UnitId, db.Base_Unit.First(u => u.UnitId == x.UnitId).UnitName, x.IdentityCard, IsInName = "", InOuDate = DateTime.Now.ToShortDateString(), InOutTime = "00:00:00", }; } #endregion } }