423 lines
		
	
	
		
			19 KiB
		
	
	
	
		
			C#
		
	
	
	
		
		
			
		
	
	
			423 lines
		
	
	
		
			19 KiB
		
	
	
	
		
			C#
		
	
	
	
|  | using System; | |||
|  | using System.Collections.Generic; | |||
|  | using System.Linq; | |||
|  | using System.Net; | |||
|  | using System.Net.Http; | |||
|  | using System.Web.Http; | |||
|  | using BLL; | |||
|  | using Model; | |||
|  | using WebAPI.Filter; | |||
|  | 
 | |||
|  | namespace WebAPI.Controllers | |||
|  | { | |||
|  |     /// <summary> | |||
|  |     ///  | |||
|  |     /// </summary> | |||
|  |     public class DoorServerController : ApiController | |||
|  |     { | |||
|  |         #region 获取部门、人员、出入记录最大ID | |||
|  |         /// <summary> | |||
|  |         ///  获取部门、人员、出入记录最大ID | |||
|  |         /// </summary> | |||
|  |         /// <param name="projectId"></param> | |||
|  |         /// <returns></returns> | |||
|  |         public string getMaxID(string projectId) | |||
|  |         { | |||
|  |             int DepartmentID = 0,  ID=0; | |||
|  |             long EmployID = 0, ValidEventID=0; | |||
|  |             var getD = Funs.DB.T_d_department.Where(x=> x.ProjectId == projectId).Select(x => x.DepartmentID); | |||
|  |             if (getD.Count()>0) | |||
|  |             { | |||
|  |                 DepartmentID = getD.Max(); | |||
|  |             } | |||
|  |             var getE= Funs.DB.T_d_employinfo.Where(x => x.ProjectId == projectId).Select(x => x.EmployID); | |||
|  |             if (getE.Count() > 0) | |||
|  |             { | |||
|  |                 EmployID = getE.Max(); | |||
|  |             } | |||
|  |             var getI = Funs.DB.T_d_facerecord.Where(x => x.ProjectId == projectId).Select(x => x.ID); | |||
|  |             if (getI.Count() > 0) | |||
|  |             { | |||
|  |                 ID = getI.Max(); | |||
|  |             } | |||
|  |             var getV = Funs.DB.T_d_validcardevent.Where(x => x.ProjectId == projectId).Select(x => x.ValidEventID); | |||
|  |             if (getV.Count() > 0) | |||
|  |             { | |||
|  |                 ValidEventID = getV.Max(); | |||
|  |             } | |||
|  |             return ("$" + DepartmentID.ToString()+"$"+ EmployID.ToString()+"$"+ID.ToString() + "$" + ValidEventID.ToString() + "$"); | |||
|  |         } | |||
|  |         #endregion | |||
|  |          | |||
|  |         #region 保存部门信息 | |||
|  |         /// <summary> | |||
|  |         /// 保存部门信息 | |||
|  |         /// </summary> | |||
|  |         /// <param name="department">部门信息</param> | |||
|  |         /// <returns></returns> | |||
|  |         [HttpPost] | |||
|  |         public Model.ResponeData SaveDepartment([FromBody] Model.t_d_departmentItem department) | |||
|  |         { | |||
|  |             var responeData = new Model.ResponeData(); | |||
|  |             try | |||
|  |             { | |||
|  |                 using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString)) | |||
|  |                 { | |||
|  |                     if (department != null) | |||
|  |                     { | |||
|  |                         var getDep = db.T_d_department.FirstOrDefault(x => x.DepartmentID == department.DepartmentID && x.ProjectId ==department.ProjectId); | |||
|  |                         if (getDep == null) | |||
|  |                         { | |||
|  |                             Model.T_d_department newDep = new Model.T_d_department() | |||
|  |                             { | |||
|  |                                 NewID = SQLHelper.GetNewID(), | |||
|  |                                 ProjectId = department.ProjectId, | |||
|  |                                 DepartmentID = department.DepartmentID, | |||
|  |                                 DepartmentName = department.DepartmentName, | |||
|  |                                 ParentID = department.ParentID, | |||
|  |                                 IsDel = department.IsDel, | |||
|  |                                 IsDown = department.IsDown, | |||
|  |                                 ParentDepartmentName = department.ParentDepartmentName, | |||
|  |                                 IsEnable = department.IsEnable, | |||
|  |                             }; | |||
|  |                             db.T_d_department.InsertOnSubmit(newDep); | |||
|  |                             db.SubmitChanges(); | |||
|  |                         } | |||
|  |                     } | |||
|  |                     else | |||
|  |                     { | |||
|  |                         responeData.code = 2; | |||
|  |                         responeData.message = "信息有误!"; | |||
|  |                     } | |||
|  |                 } | |||
|  |             } | |||
|  |             catch (Exception ex) | |||
|  |             { | |||
|  |                 responeData.code = 0; | |||
|  |                 responeData.message = ex.Message; | |||
|  |             } | |||
|  | 
 | |||
|  |             return responeData; | |||
|  |         } | |||
|  |         #endregion         | |||
|  | 
 | |||
|  |         #region 保存人员信息 | |||
|  |         /// <summary> | |||
|  |         /// 保存人员信息 | |||
|  |         /// </summary> | |||
|  |         /// <param name="employinfo">人员信息</param> | |||
|  |         /// <returns></returns> | |||
|  |         [HttpPost] | |||
|  |         public Model.ResponeData SaveEmployinfo([FromBody] Model.t_d_employinfoItem employinfo) | |||
|  |         { | |||
|  |             var responeData = new Model.ResponeData(); | |||
|  |             try | |||
|  |             { | |||
|  |                 using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString)) | |||
|  |                 { | |||
|  |                     if (employinfo != null) | |||
|  |                     { | |||
|  |                         var getEm = db.T_d_employinfo.FirstOrDefault(x => x.EmployID == employinfo.EmployID && x.ProjectId ==employinfo.ProjectId); | |||
|  |                         if (getEm == null) | |||
|  |                         { | |||
|  |                             Model.T_d_employinfo newEmploy = new Model.T_d_employinfo() | |||
|  |                             { | |||
|  |                                 NewID = SQLHelper.GetNewID(), | |||
|  |                                 ProjectId = employinfo.ProjectId, | |||
|  |                                 EmployID = employinfo.EmployID, | |||
|  |                                 WxEmployID = employinfo.WxEmployID, | |||
|  |                                 EmployNO = employinfo.EmployNO, | |||
|  |                                 EmployName = employinfo.EmployName, | |||
|  |                                 CardNO = employinfo.CardNO, | |||
|  |                                 GroupID = employinfo.GroupID, | |||
|  |                                 IsAttend = employinfo.IsAttend, | |||
|  |                                 IsDoor = employinfo.IsDoor, | |||
|  |                                 BeginDateTime = employinfo.BeginDateTime, | |||
|  |                                 EndDateTime = employinfo.EndDateTime, | |||
|  |                                 InPassWord = employinfo.InPassWord, | |||
|  |                                 DepartmentName = employinfo.DepartmentName, | |||
|  |                                 Mailbox = employinfo.Mailbox, | |||
|  |                                 Mobilephone = employinfo.Mobilephone, | |||
|  |                                 WeiXinNO = employinfo.WeiXinNO, | |||
|  |                                 PostName = employinfo.PostName, | |||
|  |                                 Gender = employinfo.Gender, | |||
|  |                                 IsDown = employinfo.IsDown, | |||
|  |                                 IsWxDown = employinfo.IsWxDown, | |||
|  |                                 IDCardNo = employinfo.IDCardNo, | |||
|  |                                 PlayCardNumber = employinfo.PlayCardNumber, | |||
|  |                                 PlayCardSum = employinfo.PlayCardSum, | |||
|  |                                 UpdataCloud = employinfo.UpdataCloud, | |||
|  |                                 Birthday = employinfo.Birthday, | |||
|  |                                 Police = employinfo.Police, | |||
|  |                                 Nation = employinfo.Nation, | |||
|  |                                 Address = employinfo.Address, | |||
|  |                                 UpdateState = employinfo.UpdateState, | |||
|  |                                 UpdateDateTime = employinfo.UpdateDateTime, | |||
|  |                                 IsSubmarineBack = employinfo.IsSubmarineBack, | |||
|  |                                 OnSiteState = employinfo.OnSiteState, | |||
|  |                                 TimeNumber = employinfo.TimeNumber, | |||
|  |                                 CardTimeRecord = employinfo.CardTimeRecord, | |||
|  |                                 ReservedFieldsOne = employinfo.ReservedFieldsOne, | |||
|  |                                 ReservedFieldsTwo = employinfo.ReservedFieldsTwo, | |||
|  |                                 ReservedFieldsThree = employinfo.ReservedFieldsThree, | |||
|  |                                 ReservedFieldsFour = employinfo.ReservedFieldsFour, | |||
|  |                                 ReservedFieldsFive = employinfo.ReservedFieldsFive, | |||
|  |                             }; | |||
|  | 
 | |||
|  |                             #region 获取部门                           | |||
|  |                             var getDep = Funs.DB.T_d_department.FirstOrDefault(x => x.ProjectId == newEmploy.ProjectId && x.DepartmentID == newEmploy.GroupID); | |||
|  |                             if (getDep != null) | |||
|  |                             { | |||
|  |                                 if (getDep.ParentID == 0) | |||
|  |                                 { | |||
|  |                                     newEmploy.InstallationId = getDep.DepartmentID;                                   | |||
|  |                                 } | |||
|  |                                 else | |||
|  |                                 { | |||
|  |                                     var getDep0 =BLL.DoorServerService.GetSupDep(newEmploy.ProjectId, getDep.ParentID, 0); | |||
|  |                                     if (getDep0 != null) | |||
|  |                                     { | |||
|  |                                         newEmploy.UnitId = newEmploy.GroupID; | |||
|  |                                         newEmploy.InstallationId = getDep0.DepartmentID; | |||
|  |                                         var getUnit = BLL.DoorServerService.GetSupDep(newEmploy.ProjectId, getDep.DepartmentID, newEmploy.InstallationId ?? 0); | |||
|  |                                         if (getUnit != null) | |||
|  |                                         { | |||
|  |                                             newEmploy.UnitId = getUnit.DepartmentID; | |||
|  |                                         } | |||
|  |                                     } | |||
|  |                                 } | |||
|  |                             } | |||
|  |                             #endregion | |||
|  | 
 | |||
|  |                             db.T_d_employinfo.InsertOnSubmit(newEmploy); | |||
|  |                             db.SubmitChanges(); | |||
|  |                         } | |||
|  |                     } | |||
|  |                     else | |||
|  |                     { | |||
|  |                         responeData.code = 2; | |||
|  |                         responeData.message = "信息有误!"; | |||
|  |                     } | |||
|  |                 } | |||
|  |             } | |||
|  |             catch (Exception ex) | |||
|  |             { | |||
|  |                 responeData.code = 0; | |||
|  |                 responeData.message = ex.Message; | |||
|  |             } | |||
|  | 
 | |||
|  |             return responeData; | |||
|  |         } | |||
|  |         #endregion         | |||
|  | 
 | |||
|  |         #region 保存人脸识别出入记录信息 | |||
|  |         /// <summary> | |||
|  |         /// 保存出入记录信息 | |||
|  |         /// </summary> | |||
|  |         /// <param name="facerecord">出入记录信息</param> | |||
|  |         /// <returns></returns> | |||
|  |         [HttpPost] | |||
|  |         public Model.ResponeData SaveFacerecord([FromBody] Model.t_d_facerecordItem facerecord) | |||
|  |         { | |||
|  |             var responeData = new Model.ResponeData(); | |||
|  |             try | |||
|  |             { | |||
|  |                 using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString)) | |||
|  |                 { | |||
|  |                     if (facerecord != null) | |||
|  |                     { | |||
|  |                         var getFacerecord = db.T_d_facerecord.FirstOrDefault(x => x.ID == facerecord.ID && x.ProjectId == facerecord.ProjectId); | |||
|  |                         if (getFacerecord == null) | |||
|  |                         { | |||
|  |                             Model.T_d_facerecord newFacerecord = new Model.T_d_facerecord() | |||
|  |                             { | |||
|  |                                 NewID = SQLHelper.GetNewID(), | |||
|  |                                 ProjectId = facerecord.ProjectId, | |||
|  |                                 ID = facerecord.ID, | |||
|  |                                 EmployName = facerecord.EmployName, | |||
|  |                                 DepartmentID = facerecord.DepartmentID, | |||
|  |                                 DepartName = facerecord.DepartName, | |||
|  |                                 AreaID = facerecord.AreaID, | |||
|  |                                 AreaName = facerecord.AreaName, | |||
|  |                                 EmployNO = facerecord.EmployNO, | |||
|  |                                 CardID = facerecord.CardID, | |||
|  |                                 RoleID = facerecord.RoleID, | |||
|  |                                 DateTimeRecord = facerecord.DateTimeRecord, | |||
|  |                                 RecordDes = facerecord.RecordDes, | |||
|  |                                 FaceIP = facerecord.FaceIP, | |||
|  |                                 InOrOut = facerecord.InOrOut, | |||
|  |                                 Des1 = facerecord.Des1, | |||
|  |                                 Des2 = facerecord.Des2, | |||
|  |                                 Des3 = facerecord.Des3, | |||
|  |                                 Des4 = facerecord.Des4, | |||
|  |                             }; | |||
|  | 
 | |||
|  |                             db.T_d_facerecord.InsertOnSubmit(newFacerecord); | |||
|  |                             db.SubmitChanges(); | |||
|  |                             if (facerecord.DateTimeRecord.HasValue) | |||
|  |                            { | |||
|  |                                 Model.SitePerson_PersonInOut newInOut = new Model.SitePerson_PersonInOut | |||
|  |                                 { | |||
|  |                                     ProjectId = facerecord.ProjectId, | |||
|  |                                     IdentityCard = facerecord.EmployNO, | |||
|  |                                     IsIn = facerecord.InOrOut == "进门" ? true : false, | |||
|  |                                     ChangeTime = facerecord.DateTimeRecord.Value, | |||
|  |                                     InOutWay = Const.InOutWay_1, | |||
|  |                                 }; | |||
|  | 
 | |||
|  |                                 PersonInOutService.AddPersonInOut(newInOut); | |||
|  |                             } | |||
|  |                         } | |||
|  |                     } | |||
|  |                     else | |||
|  |                     { | |||
|  |                         responeData.code = 2; | |||
|  |                         responeData.message = "信息有误!"; | |||
|  |                     } | |||
|  |                 } | |||
|  |             } | |||
|  |             catch (Exception ex) | |||
|  |             { | |||
|  |                 responeData.code = 0; | |||
|  |                 responeData.message = ex.Message; | |||
|  |             } | |||
|  | 
 | |||
|  |             return responeData; | |||
|  |         } | |||
|  |         #endregion | |||
|  | 
 | |||
|  |         #region 保存刷卡出入记录信息 | |||
|  |         /// <summary> | |||
|  |         /// 保存出入记录信息 | |||
|  |         /// </summary> | |||
|  |         /// <param name="validcardevent">出入记录信息</param> | |||
|  |         /// <returns></returns> | |||
|  |         [HttpPost] | |||
|  |         public Model.ResponeData SaveValidcardevent([FromBody] Model.t_d_validcardeventItem validcardevent) | |||
|  |         { | |||
|  |             var responeData = new Model.ResponeData(); | |||
|  |             try | |||
|  |             { | |||
|  |                 using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString)) | |||
|  |                 { | |||
|  |                     if (validcardevent != null) | |||
|  |                     { | |||
|  |                         var getValidcardevent = db.T_d_facerecord.FirstOrDefault(x => x.ID == validcardevent.ValidEventID && x.ProjectId == validcardevent.ProjectId); | |||
|  |                         if (getValidcardevent == null) | |||
|  |                         { | |||
|  |                             Model.T_d_validcardevent newValidcardevent = new Model.T_d_validcardevent() | |||
|  |                             { | |||
|  |                                 NewID = SQLHelper.GetNewID(), | |||
|  |                                 ProjectId = validcardevent.ProjectId, | |||
|  |                                 ValidEventID = validcardevent.ValidEventID, | |||
|  |                                 RecordDateTime = validcardevent.RecordDateTime, | |||
|  |                                 CardNO = validcardevent.CardNO, | |||
|  |                                 ConsumerID = validcardevent.ConsumerID, | |||
|  |                                 InOrOut = validcardevent.InOrOut, | |||
|  |                                 ControllerID = validcardevent.ControllerID, | |||
|  |                                 ReaderNO = validcardevent.ReaderNO, | |||
|  |                                 RecordFlashLoc = validcardevent.RecordFlashLoc, | |||
|  |                                 RecordAll = validcardevent.RecordAll, | |||
|  |                                 JPGPath = validcardevent.JPGPath, | |||
|  |                                 IsDown = validcardevent.IsDown, | |||
|  |                                 EquipmentSN = validcardevent.EquipmentSN, | |||
|  |                                 ConsumerNO = validcardevent.ConsumerNO, | |||
|  |                                 EmployNO = validcardevent.EmployNO, | |||
|  |                                 EmployName = validcardevent.EmployName, | |||
|  |                                 CardType = validcardevent.CardType, | |||
|  |                                 Card = validcardevent.Card, | |||
|  |                                 DepartmentID = validcardevent.DepartmentID, | |||
|  |                                 DepartmentName = validcardevent.DepartmentName, | |||
|  |                                 ControllerSN = validcardevent.ControllerSN, | |||
|  |                                 DoorID = validcardevent.DoorID, | |||
|  |                                 DoorName = validcardevent.DoorName, | |||
|  |                                 ReaderName = validcardevent.ReaderName, | |||
|  |                                 AreaID = validcardevent.AreaID, | |||
|  |                                 AreaName = validcardevent.AreaName, | |||
|  |                                 WorkType = validcardevent.WorkType, | |||
|  |                                 Positions = validcardevent.Positions, | |||
|  |                                 IDCardNo = validcardevent.IDCardNo, | |||
|  |                             }; | |||
|  | 
 | |||
|  |                             db.T_d_validcardevent.InsertOnSubmit(newValidcardevent); | |||
|  |                             db.SubmitChanges(); | |||
|  |                        | |||
|  |                             if (validcardevent.RecordDateTime.HasValue) | |||
|  |                             { | |||
|  |                                 Model.SitePerson_PersonInOut newInOut = new Model.SitePerson_PersonInOut | |||
|  |                                 { | |||
|  |                                     ProjectId = validcardevent.ProjectId, | |||
|  |                                     IdentityCard = validcardevent.EmployNO, | |||
|  |                                     IsIn = validcardevent.InOrOut == 1 ? true : false, | |||
|  |                                     ChangeTime = validcardevent.RecordDateTime.Value, | |||
|  |                                     InOutWay = Const.InOutWay_1, | |||
|  |                                 }; | |||
|  | 
 | |||
|  |                                 PersonInOutService.AddPersonInOut(newInOut); | |||
|  |                             } | |||
|  |                         } | |||
|  |                     } | |||
|  |                     else | |||
|  |                     { | |||
|  |                         responeData.code = 2; | |||
|  |                         responeData.message = "信息有误!"; | |||
|  |                     } | |||
|  |                 } | |||
|  |             } | |||
|  |             catch (Exception ex) | |||
|  |             { | |||
|  |                 responeData.code = 0; | |||
|  |                 responeData.message = ex.Message; | |||
|  |             } | |||
|  | 
 | |||
|  |             return responeData; | |||
|  |         } | |||
|  |         #endregion | |||
|  |          | |||
|  |         #region 获取门禁人员考勤统计 | |||
|  |         /// <summary> | |||
|  |         /// 获取人员信息出入场记录 | |||
|  |         /// </summary> | |||
|  |         /// <param name="projectId"></param> | |||
|  |         /// <param name="startDate"></param> | |||
|  |         /// <param name="endDate"></param> | |||
|  |         /// <returns></returns> | |||
|  |         public Model.ResponeData getInOutstatistics(string projectId,  DateTime startDate, DateTime endDate) | |||
|  |         { | |||
|  |             var responeData = new Model.ResponeData(); | |||
|  |             try | |||
|  |             { | |||
|  | 
 | |||
|  |                 string unitId = null; | |||
|  |                 string postId = null; | |||
|  |                 var data = Funs.DB.spInOutManHoursReport(projectId, unitId, postId, startDate, endDate).ToList(); | |||
|  | 
 | |||
|  |                 List<InOutstatisticsItem> res = new List<InOutstatisticsItem>(); | |||
|  |                 Dictionary<string, InOutstatisticsItem> ids = new Dictionary<string, InOutstatisticsItem>(); | |||
|  |                 foreach (var item in data) | |||
|  |                 { | |||
|  |                     if (ids.Keys.Contains(item.UnitName + "$" + item.PostName)) | |||
|  |                     { | |||
|  |                         ids[item.UnitName + "$" + item.PostName].ManHoursSum += item.ManHoursSum; | |||
|  |                         ids[item.UnitName + "$" + item.PostName].ManCountSum += item.ManCountSum; | |||
|  |                         ids[item.UnitName + "$" + item.PostName].PersonCountSum += item.PersonCountSum; | |||
|  |                     } | |||
|  |                     else | |||
|  |                     { | |||
|  |                         ids.Add(item.UnitName + "$" + item.PostName, item); | |||
|  |                         res.Add(item); | |||
|  |                     } | |||
|  |                 } | |||
|  |                 responeData.data = res; | |||
|  |             } | |||
|  |             catch (Exception ex) | |||
|  |             { | |||
|  |                 responeData.code = 0; | |||
|  |                 responeData.message = ex.Message; | |||
|  |             } | |||
|  |             return responeData; | |||
|  |         } | |||
|  |         #endregion | |||
|  |     } | |||
|  | } |