181 lines
		
	
	
		
			7.9 KiB
		
	
	
	
		
			C#
		
	
	
	
			
		
		
	
	
			181 lines
		
	
	
		
			7.9 KiB
		
	
	
	
		
			C#
		
	
	
	
| 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);
 | ||
|         }
 | ||
|         
 | ||
|         /// <summary>
 | ||
|         ///  插入当日出入记录表
 | ||
|         /// </summary>
 | ||
|         /// <param name="PersonInOut"></param>
 | ||
|         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 getPUnit = db.Project_ProjectUnit.FirstOrDefault(x => x.ProjectId == newPersonInOut.ProjectId && x.UnitId == newPersonInOut.UnitId);
 | ||
|                 if (getPUnit.UnitType != Const.ProjectUnitType_3 && getPUnit.UnitType != Const.ProjectUnitType_4)
 | ||
|                 {
 | ||
|                     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();
 | ||
|             }
 | ||
|         }
 | ||
| 
 | ||
|         /// <summary>
 | ||
|         /// 根据人员主键删除一个人员出入场记录
 | ||
|         /// </summary>
 | ||
|         /// <param name="personId"></param>
 | ||
|         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();
 | ||
|             }
 | ||
|         }
 | ||
|         
 | ||
|         /// <summary>
 | ||
|         /// 身份证号码发生变化时 修改实名制出入记录
 | ||
|         /// </summary>
 | ||
|         /// <param name="personId"></param>
 | ||
|         public static void UpdateRealNameInOut(string personId, string oldCardNo, string newIdCardNo)
 | ||
|         {
 | ||
|             Model.SGGLDB db = Funs.DB;
 | ||
|             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();
 | ||
|                 }
 | ||
|             }
 | ||
|         }
 | ||
| 
 | ||
|         /// <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;
 | ||
|         }
 | ||
|     }
 | ||
| } |