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 AddPersonInOut(Model.SitePerson_PersonInOut PersonInOut) //{ // Model.SGGLDB db = Funs.DB; // string postType = null; // string workpostId = null; // var getPerson = db.SitePerson_Person.FirstOrDefault(x => x.PersonId == PersonInOut.PersonId); // if (getPerson != null) // { // workpostId = getPerson.WorkPostId; // var getWokPost = db.Base_WorkPost.FirstOrDefault(x => x.PostType == getPerson.WorkPostId); // if (getWokPost != null) // { // postType = getWokPost.PostType; // } // } // Model.SitePerson_PersonInOut newPersonInOut = new Model.SitePerson_PersonInOut // { // PersonInOutId = SQLHelper.GetNewID(typeof(Model.SitePerson_PersonInOut)), // ProjectId = PersonInOut.ProjectId, // UnitId = PersonInOut.UnitId, // PersonId = PersonInOut.PersonId, // IsIn = PersonInOut.IsIn, // ChangeTime = PersonInOut.ChangeTime, // WorkPostId = workpostId, // PostType = postType, // }; // db.SitePerson_PersonInOut.InsertOnSubmit(newPersonInOut); // db.SubmitChanges(); // //// 插入当日记录表 // InsertPersonInOutNowNow(newPersonInOut); //} /// /// 插入当日出入记录表 /// /// public static void InsertPersonInOutNowNow(Model.SitePerson_PersonInOutNow PersonInOut) { Model.SGGLDB db = Funs.DB; 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 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(); } } var getLastList = from x in db.SitePerson_PersonInOutNow where x.ChangeTime <= PersonInOut.ChangeTime.Value.AddHours(-48) select x; if (getLastList.Count() > 0) { db.SitePerson_PersonInOutNow.DeleteAllOnSubmit(getLastList); db.SubmitChanges(); } } /// /// 根据人员主键删除一个人员出入场记录 /// /// public static void DeletePersonInOutByPersonId(string personId) { Model.SGGLDB db = Funs.DB; 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 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; } } }