using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace BLL { /// /// 人员信息 /// public static class PersonInOutService { public static Model.SGGLDB db = Funs.DB; /// /// 根据主键获取人员出入场信息 /// /// /// public static Model.SitePerson_PersonInOut GetPersonInOutById(string PersonInOutId) { return Funs.DB.SitePerson_PersonInOut.FirstOrDefault(e => e.PersonInOutId == PersonInOutId); } /// /// 根据人员id 出入时间取记录 /// /// 人员id /// 出入场时间 /// 出/入 true-入;false-出 /// public static Model.SitePerson_PersonInOut GetPersonInOutByTimePersonId(string personId, DateTime ChangeTime, bool isIn) { return Funs.DB.SitePerson_PersonInOut.FirstOrDefault(x => x.PersonId == personId && x.ChangeTime == ChangeTime && x.IsIn == isIn); } /// /// 插入当日出入记录表 /// /// public static void InsertPersonInOutNowNow(Model.SitePerson_PersonInOutNow PersonInOut) { using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString)) { var getNow = db.SitePerson_PersonInOutNow.FirstOrDefault(x => x.PersonInOutId == PersonInOut.PersonInOutId); if (getNow == null) { Model.SitePerson_PersonInOutNow newPersonInOut = new Model.SitePerson_PersonInOutNow { PersonInOutId = PersonInOut.PersonInOutId, ProjectId = PersonInOut.ProjectId, UnitId = PersonInOut.UnitId, PersonId = PersonInOut.PersonId, IsIn = PersonInOut.IsIn, ChangeTime = PersonInOut.ChangeTime, WorkPostId = PersonInOut.WorkPostId, PostType = PersonInOut.PostType, ProCode = PersonInOut.ProCode, Name = PersonInOut.Name, IdcardType = PersonInOut.IdcardType ?? "SHENFEN_ZHENGJIAN", IdcardNumber = PersonInOut.IdcardNumber, CheckType = "ZHENGCHANG_KAOQINLEIBIE", CheckWay = "FACE_FANGSHI", }; db.SitePerson_PersonInOutNow.InsertOnSubmit(newPersonInOut); db.SubmitChanges(); /// 监理 业主 不进入 var getPUnit = db.Project_ProjectUnit.FirstOrDefault(x => x.ProjectId == newPersonInOut.ProjectId && x.UnitId == newPersonInOut.UnitId); if (getPUnit.IsSynchro == true) { var getRealNameP = db.RealName_Project.FirstOrDefault(x => x.ProCode == newPersonInOut.ProCode); if (getRealNameP != null) { Model.RealName_PersonInOutNow newR = new Model.RealName_PersonInOutNow { PersonInOutId = newPersonInOut.PersonInOutId, ProjectId = newPersonInOut.ProjectId, UnitId = newPersonInOut.UnitId, PersonId = newPersonInOut.PersonId, IsIn = newPersonInOut.IsIn, ChangeTime = newPersonInOut.ChangeTime, WorkPostId = newPersonInOut.WorkPostId, PostType = newPersonInOut.PostType, ProCode = newPersonInOut.ProCode, Name = newPersonInOut.Name, IdcardType = newPersonInOut.IdcardType ?? "SHENFEN_ZHENGJIAN", IdcardNumber = newPersonInOut.IdcardNumber, CheckType = "ZHENGCHANG_KAOQINLEIBIE", CheckWay = "FACE_FANGSHI", }; db.RealName_PersonInOutNow.InsertOnSubmit(newR); db.SubmitChanges(); } } } } } /// /// 根据人员主键删除一个人员出入场记录 /// /// public static void DeletePersonInOutByPersonId(string personId) { using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString)) { var personInOut = from x in db.SitePerson_PersonInOut where x.PersonId == personId select x; if (personInOut.Count() > 0) { db.SitePerson_PersonInOut.DeleteAllOnSubmit(personInOut); db.SubmitChanges(); } var rpersonInOut = from x in db.RealName_PersonInOutNow where x.PersonId == personId select x; if (rpersonInOut.Count() > 0) { db.RealName_PersonInOutNow.DeleteAllOnSubmit(rpersonInOut); db.SubmitChanges(); } } } /// /// 身份证号码发生变化时 修改实名制出入记录 /// /// public static void UpdateRealNameInOut(string personId, string oldCardNo, string newIdCardNo) { using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString)) { var personInOuts = from x in db.RealName_PersonInOutNow where x.PersonId == personId && x.IdcardNumber == oldCardNo select x; if (personInOuts.Count() > 0) { foreach (var item in personInOuts) { item.IdcardNumber = newIdCardNo; db.SubmitChanges(); } } } } /// /// 获取出入记录人工时 /// /// public static List getWorkPostStatistic(List getAllPersonInOutList) { Model.SGGLDB db = Funs.DB; List reports = new List(); var getUnitIdList = getAllPersonInOutList.Select(x => x.UnitId).Distinct(); foreach (var uitem in getUnitIdList) { var getU = getAllPersonInOutList.Where(x => x.UnitId == uitem); var getWorkPostIdList = getU.Select(x => x.WorkPostId).Distinct(); foreach (var witem in getWorkPostIdList) { var getW = getU.Where(x => x.WorkPostId == witem); Model.WorkPostStatisticItem newWItem = new Model.WorkPostStatisticItem { ID = SQLHelper.GetNewID(), UnitId = uitem, UnitName = UnitService.GetUnitNameByUnitId(uitem), WorkPostId = witem, WorkPostName = WorkPostService.getWorkPostNameById(witem), PersonCount = getW.Select(x => x.PersonId).Distinct().Count(), UnitWorkPostID = uitem + "|" + witem, }; reports.Add(newWItem); } } return reports; } } }