| 
									
										
										
										
											2021-04-30 10:28:37 +08:00
										 |  |  |  | using System; | 
					
						
							|  |  |  |  | using System.Collections.Generic; | 
					
						
							|  |  |  |  | using System.Linq; | 
					
						
							|  |  |  |  | using System.Text; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | namespace BLL | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  |     /// <summary> | 
					
						
							|  |  |  |  |     /// 人员信息 | 
					
						
							|  |  |  |  |     /// </summary> | 
					
						
							|  |  |  |  |     public static class PersonInOutService | 
					
						
							|  |  |  |  |     { | 
					
						
							|  |  |  |  |         public static Model.SGGLDB db = Funs.DB; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         /// <summary> | 
					
						
							|  |  |  |  |         /// 根据主键获取人员出入场信息 | 
					
						
							|  |  |  |  |         /// </summary> | 
					
						
							|  |  |  |  |         /// <param name="PersonInOutId"></param> | 
					
						
							|  |  |  |  |         /// <returns></returns> | 
					
						
							|  |  |  |  |         public static Model.SitePerson_PersonInOut GetPersonInOutById(string PersonInOutId) | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             return Funs.DB.SitePerson_PersonInOut.FirstOrDefault(e => e.PersonInOutId == PersonInOutId); | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         /// <summary> | 
					
						
							|  |  |  |  |         /// 根据人员id 出入时间取记录 | 
					
						
							|  |  |  |  |         /// </summary> | 
					
						
							|  |  |  |  |         /// <param name="personId">人员id</param> | 
					
						
							|  |  |  |  |         /// <param name="time">出入场时间</param> | 
					
						
							|  |  |  |  |         /// <param name="isIn">出/入 true-入;false-出</param> | 
					
						
							|  |  |  |  |         /// <returns></returns> | 
					
						
							|  |  |  |  |         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); | 
					
						
							|  |  |  |  |         } | 
					
						
							| 
									
										
										
										
											2021-09-08 19:13:25 +08:00
										 |  |  |  |          | 
					
						
							| 
									
										
										
										
											2021-04-30 10:28:37 +08:00
										 |  |  |  |         /// <summary> | 
					
						
							|  |  |  |  |         ///  插入当日出入记录表 | 
					
						
							|  |  |  |  |         /// </summary> | 
					
						
							|  |  |  |  |         /// <param name="PersonInOut"></param> | 
					
						
							|  |  |  |  |         public static void InsertPersonInOutNowNow(Model.SitePerson_PersonInOutNow PersonInOut) | 
					
						
							|  |  |  |  |         { | 
					
						
							| 
									
										
										
										
											2022-06-16 17:34:24 +08:00
										 |  |  |  |             using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString)) | 
					
						
							| 
									
										
										
										
											2021-04-30 10:28:37 +08:00
										 |  |  |  |             { | 
					
						
							| 
									
										
										
										
											2022-06-16 17:34:24 +08:00
										 |  |  |  |                 var getNow = db.SitePerson_PersonInOutNow.FirstOrDefault(x => x.PersonInOutId == PersonInOut.PersonInOutId); | 
					
						
							|  |  |  |  |                 if (getNow == null) | 
					
						
							| 
									
										
										
										
											2021-04-30 10:28:37 +08:00
										 |  |  |  |                 { | 
					
						
							| 
									
										
										
										
											2022-06-16 17:34:24 +08:00
										 |  |  |  |                     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) | 
					
						
							| 
									
										
										
										
											2021-04-30 10:28:37 +08:00
										 |  |  |  |                     { | 
					
						
							| 
									
										
										
										
											2022-06-16 17:34:24 +08:00
										 |  |  |  |                         var getRealNameP = db.RealName_Project.FirstOrDefault(x => x.ProCode == newPersonInOut.ProCode); | 
					
						
							|  |  |  |  |                         if (getRealNameP != null) | 
					
						
							| 
									
										
										
										
											2021-10-11 09:10:19 +08:00
										 |  |  |  |                         { | 
					
						
							| 
									
										
										
										
											2022-06-16 17:34:24 +08:00
										 |  |  |  |                             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", | 
					
						
							|  |  |  |  |                             }; | 
					
						
							| 
									
										
										
										
											2022-09-28 21:21:59 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-09-29 14:21:52 +08:00
										 |  |  |  |                             db.RealName_PersonInOutNow.InsertOnSubmit(newR); | 
					
						
							|  |  |  |  |                             db.SubmitChanges();                           | 
					
						
							| 
									
										
										
										
											2022-06-16 17:34:24 +08:00
										 |  |  |  |                         } | 
					
						
							| 
									
										
										
										
											2021-10-11 09:10:19 +08:00
										 |  |  |  |                     } | 
					
						
							| 
									
										
										
										
											2021-04-30 10:28:37 +08:00
										 |  |  |  |                 } | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         /// <summary> | 
					
						
							|  |  |  |  |         /// 根据人员主键删除一个人员出入场记录 | 
					
						
							|  |  |  |  |         /// </summary> | 
					
						
							|  |  |  |  |         /// <param name="personId"></param> | 
					
						
							|  |  |  |  |         public static void DeletePersonInOutByPersonId(string personId) | 
					
						
							|  |  |  |  |         { | 
					
						
							| 
									
										
										
										
											2022-06-16 17:34:24 +08:00
										 |  |  |  |             using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString)) | 
					
						
							| 
									
										
										
										
											2021-04-30 10:28:37 +08:00
										 |  |  |  |             { | 
					
						
							| 
									
										
										
										
											2022-06-16 17:34:24 +08:00
										 |  |  |  |                 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(); | 
					
						
							|  |  |  |  |                 } | 
					
						
							| 
									
										
										
										
											2021-04-30 10:28:37 +08:00
										 |  |  |  |             } | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  |          | 
					
						
							| 
									
										
										
										
											2021-08-26 16:55:27 +08:00
										 |  |  |  |         /// <summary> | 
					
						
							|  |  |  |  |         /// 身份证号码发生变化时 修改实名制出入记录 | 
					
						
							|  |  |  |  |         /// </summary> | 
					
						
							|  |  |  |  |         /// <param name="personId"></param> | 
					
						
							|  |  |  |  |         public static void UpdateRealNameInOut(string personId, string oldCardNo, string newIdCardNo) | 
					
						
							|  |  |  |  |         { | 
					
						
							| 
									
										
										
										
											2022-06-16 17:34:24 +08:00
										 |  |  |  |             using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString)) | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |                 var personInOuts = from x in db.RealName_PersonInOutNow | 
					
						
							| 
									
										
										
										
											2021-08-26 16:55:27 +08:00
										 |  |  |  |                                where x.PersonId == personId && x.IdcardNumber == oldCardNo | 
					
						
							|  |  |  |  |                                select x; | 
					
						
							| 
									
										
										
										
											2022-06-16 17:34:24 +08:00
										 |  |  |  |                 if (personInOuts.Count() > 0) | 
					
						
							| 
									
										
										
										
											2021-08-26 16:55:27 +08:00
										 |  |  |  |                 { | 
					
						
							| 
									
										
										
										
											2022-06-16 17:34:24 +08:00
										 |  |  |  |                     foreach (var item in personInOuts) | 
					
						
							|  |  |  |  |                     { | 
					
						
							|  |  |  |  |                         item.IdcardNumber = newIdCardNo; | 
					
						
							|  |  |  |  |                         db.SubmitChanges(); | 
					
						
							|  |  |  |  |                     } | 
					
						
							| 
									
										
										
										
											2021-08-26 16:55:27 +08:00
										 |  |  |  |                 } | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-04-30 10:28:37 +08:00
										 |  |  |  |         /// <summary> | 
					
						
							|  |  |  |  |         ///  获取出入记录人工时 | 
					
						
							|  |  |  |  |         /// </summary> | 
					
						
							|  |  |  |  |         /// <returns></returns> | 
					
						
							|  |  |  |  |         public static List<Model.WorkPostStatisticItem> getWorkPostStatistic(List<Model.SitePerson_PersonInOut> getAllPersonInOutList) | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             Model.SGGLDB db = Funs.DB; | 
					
						
							|  |  |  |  |             List<Model.WorkPostStatisticItem> reports = new List<Model.WorkPostStatisticItem>();            | 
					
						
							|  |  |  |  |            | 
					
						
							|  |  |  |  |             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; | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | } |