| 
									
										
										
										
											2021-04-30 10:28:37 +08:00
										 |  |  |  | using BLL; | 
					
						
							|  |  |  |  | using SgManager.AI; | 
					
						
							|  |  |  |  | using System; | 
					
						
							|  |  |  |  | using System.Collections.Generic; | 
					
						
							|  |  |  |  | using System.Configuration; | 
					
						
							|  |  |  |  | using System.Linq; | 
					
						
							|  |  |  |  | using System.Web; | 
					
						
							|  |  |  |  | using System.Web.Http; | 
					
						
							|  |  |  |  | using WebAPI.Models; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | namespace WebAPI.Controllers | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  |     /// <summary> | 
					
						
							|  |  |  |  |     ///  | 
					
						
							|  |  |  |  |     /// </summary> | 
					
						
							|  |  |  |  |     public class FaceController : ApiController | 
					
						
							|  |  |  |  |     { | 
					
						
							|  |  |  |  |         /// <summary> | 
					
						
							|  |  |  |  |         ///  | 
					
						
							|  |  |  |  |         /// </summary> | 
					
						
							|  |  |  |  |         /// <param name="form"></param> | 
					
						
							|  |  |  |  |         /// <returns></returns> | 
					
						
							|  |  |  |  |         [HttpPost]         | 
					
						
							|  |  |  |  |         public Model.ResponeData SaveWXFacerecord([FromBody]FaceRecordForm form) | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             var responeData = new Model.ResponeData(); | 
					
						
							|  |  |  |  |             HttpFileCollection files = HttpContext.Current.Request.Files; | 
					
						
							|  |  |  |  |             string localRoot = form.AttachUrl1;// HttpContext.Current.Request["AttachUrl1"]; | 
					
						
							|  |  |  |  |             string inOrOut = form.inOrOut;//HttpContext.Current.Request["inOrOut"]; | 
					
						
							|  |  |  |  |             string projectId = form.projectId;//HttpContext.Current.Request["projectId"]; | 
					
						
							|  |  |  |  |             string location = form.location;//HttpContext.Current.Request["location"]; | 
					
						
							|  |  |  |  |             string userId = form.userId;// HttpContext.Current.Request["userId"]; | 
					
						
							|  |  |  |  |             string userName = form.userName;////HttpContext.Current.Request["userName"]; | 
					
						
							|  |  |  |  |             localRoot = ConfigurationManager.AppSettings["localRoot"] + localRoot; //物理路径 | 
					
						
							|  |  |  |  |             string reUrl = string.Empty; | 
					
						
							|  |  |  |  |             List<SgManager.AI.faceResult> kqFace = null; | 
					
						
							|  |  |  |  |             try | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |                 kqFace = (List<SgManager.AI.faceResult>)SgManager.AI.FaceClass.SearchFileFace(localRoot); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  |             catch (Exception e) | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |                 responeData.message = "识别失败,人脸库信息为空"+ localRoot; | 
					
						
							|  |  |  |  |                 responeData.data = localRoot; | 
					
						
							|  |  |  |  |                 responeData.code = 0; | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |             if (kqFace == null || kqFace.Count == 0) | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |                 responeData.code = 0; | 
					
						
							|  |  |  |  |                 responeData.message = "识别失败,人脸库信息为空"; | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  |             else if (kqFace[0].errMess != "SUCCESS") | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |                 responeData.code = 0; | 
					
						
							|  |  |  |  |                 responeData.message = BaiduError.getBaiduError(kqFace[0].errCode); | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  |             else | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |                 string idCard = kqFace[0].user_id; | 
					
						
							|  |  |  |  |                 using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString)) | 
					
						
							|  |  |  |  |                 { | 
					
						
							|  |  |  |  |                     var person = db.SitePerson_Person.Where(u => u.IdentityCard == idCard && u.ProjectId == projectId).FirstOrDefault();             | 
					
						
							|  |  |  |  |                     if (person != null) | 
					
						
							|  |  |  |  |                     { | 
					
						
							|  |  |  |  |                         string inOrOutS = "进门"; | 
					
						
							|  |  |  |  |                         if (inOrOut == "1") | 
					
						
							|  |  |  |  |                         { | 
					
						
							|  |  |  |  |                             inOrOutS ="出门"; | 
					
						
							|  |  |  |  |                         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |                         Model.t_d_facerecordItem newFacerecordItem = new Model.t_d_facerecordItem() | 
					
						
							|  |  |  |  |                         { | 
					
						
							|  |  |  |  |                             ProjectId = person.ProjectId, | 
					
						
							|  |  |  |  |                             ID = 0, | 
					
						
							|  |  |  |  |                             EmployName = person.PersonName, | 
					
						
							|  |  |  |  |                             DepartmentID = person.TeamGroupId, | 
					
						
							|  |  |  |  |                             DepartName = TeamGroupService.GetTeamGroupNameByTeamGroupId(person.TeamGroupId),                         | 
					
						
							|  |  |  |  |                             EmployNO = person.IdentityCard,                          | 
					
						
							|  |  |  |  |                             RoleID = "微信端", | 
					
						
							|  |  |  |  |                             DateTimeRecord =DateTime.Now, | 
					
						
							|  |  |  |  |                             RecordDes = "微信端:",            | 
					
						
							|  |  |  |  |                             InOrOut = inOrOutS, | 
					
						
							|  |  |  |  |                             Des1 = form.AttachUrl1, | 
					
						
							|  |  |  |  |                             Des2= form.location, | 
					
						
							|  |  |  |  |                         }; | 
					
						
							|  |  |  |  |                         var getfacerecord = db.T_d_facerecord.Where(x => x.ProjectId == person.ProjectId); | 
					
						
							|  |  |  |  |                         if (getfacerecord.Count() > 0) | 
					
						
							|  |  |  |  |                         { | 
					
						
							|  |  |  |  |                             newFacerecordItem.ID = getfacerecord.Max(x => x.ID) + 1; | 
					
						
							|  |  |  |  |                         } | 
					
						
							|  |  |  |  |                         var area = db.WxProjectGpsPoint.Where(u => u.ProjectId == person.ProjectId).ToList(); | 
					
						
							|  |  |  |  |                         if (area != null && area.Count > 0) | 
					
						
							|  |  |  |  |                         { | 
					
						
							|  |  |  |  |                             //  string points = area.Point; | 
					
						
							|  |  |  |  |                             //if (!string.IsNullOrEmpty(points)) | 
					
						
							|  |  |  |  |                             //{ | 
					
						
							|  |  |  |  |                             //    string[] ps = points.Split('|'); | 
					
						
							|  |  |  |  |                             Gpslocation myLocation = new Gpslocation(); | 
					
						
							|  |  |  |  |                             string[] myp = location.Split(','); | 
					
						
							|  |  |  |  |                             myLocation.lat = float.Parse(myp[0]); | 
					
						
							|  |  |  |  |                             myLocation.lng = float.Parse(myp[1]); | 
					
						
							|  |  |  |  |                             List<Gpslocation> gpsLoactions = new List<Gpslocation>(); | 
					
						
							|  |  |  |  |                             foreach (var po in area) | 
					
						
							|  |  |  |  |                             { | 
					
						
							|  |  |  |  |                                 Gpslocation gp = new Gpslocation(); | 
					
						
							|  |  |  |  |                                 string[] p = po.Point.Split(','); | 
					
						
							|  |  |  |  |                                 gp.lat = float.Parse(p[0]); | 
					
						
							|  |  |  |  |                                 gp.lng = float.Parse(p[1]); | 
					
						
							|  |  |  |  |                                 gpsLoactions.Add(gp); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |                             } | 
					
						
							|  |  |  |  |                             if (GpsPolygonHelper.isPointInPolygon(myLocation, gpsLoactions)) | 
					
						
							|  |  |  |  |                             { | 
					
						
							|  |  |  |  |                                 newFacerecordItem.RecordDes+= "打卡成功"; | 
					
						
							|  |  |  |  |                                 //APIPersonService.getPersonInOut(person.ProjectId, person.IdentityCard, isIn, DateTime.Now); | 
					
						
							|  |  |  |  |                                 responeData.message = "打卡成功"; | 
					
						
							|  |  |  |  |                             } | 
					
						
							|  |  |  |  |                             else | 
					
						
							|  |  |  |  |                             { | 
					
						
							|  |  |  |  |                                 newFacerecordItem.RecordDes += "识别成功,不在项目区域内打卡"; | 
					
						
							|  |  |  |  |                                 //responeData.code = 0; | 
					
						
							|  |  |  |  |                                 responeData.message = "不在项目区域内打卡"; | 
					
						
							|  |  |  |  |                             } | 
					
						
							|  |  |  |  |                         } | 
					
						
							|  |  |  |  |                         else | 
					
						
							|  |  |  |  |                         { | 
					
						
							|  |  |  |  |                             newFacerecordItem.RecordDes += "识别成功,无项目坐标信息";                            | 
					
						
							|  |  |  |  |                             // APIPersonService.getPersonInOut(person.ProjectId, person.CardNo, isIn, DateTime.Now); | 
					
						
							|  |  |  |  |                             responeData.message = "识别成功,无项目坐标信息"; | 
					
						
							|  |  |  |  |                         } | 
					
						
							|  |  |  |  |                         SaveFacerecord(newFacerecordItem); | 
					
						
							|  |  |  |  |                     } | 
					
						
							|  |  |  |  |                     else | 
					
						
							|  |  |  |  |                     { | 
					
						
							|  |  |  |  |                         responeData.code = 0; | 
					
						
							|  |  |  |  |                         responeData.message = "识别成功,但无人员项目信息"; | 
					
						
							|  |  |  |  |                     } | 
					
						
							|  |  |  |  |                 } | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  |             return responeData; | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  |          | 
					
						
							|  |  |  |  |         #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(); | 
					
						
							|  |  |  |  |                             ///// 根据出入记录 写入考勤记录 | 
					
						
							|  |  |  |  |                             facerecord.IDCardNo = facerecord.EmployNO; | 
					
						
							| 
									
										
										
										
											2022-06-16 17:34:24 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  |                             var getPerson = db.SitePerson_Person.FirstOrDefault(x => x.ProjectId == newFacerecord.ProjectId && x.IdentityCard == newFacerecord.EmployNO); | 
					
						
							|  |  |  |  |                             if (getPerson != null) | 
					
						
							| 
									
										
										
										
											2021-04-30 10:28:37 +08:00
										 |  |  |  |                             { | 
					
						
							| 
									
										
										
										
											2022-06-16 17:34:24 +08:00
										 |  |  |  |                                 DoorServerService.InsertEmployInOutRecord(facerecord, getPerson); | 
					
						
							|  |  |  |  |                                 if (facerecord.DateTimeRecord.HasValue) | 
					
						
							| 
									
										
										
										
											2021-04-30 10:28:37 +08:00
										 |  |  |  |                                 { | 
					
						
							| 
									
										
										
										
											2022-06-16 17:34:24 +08:00
										 |  |  |  |                                     int isIn = 0; | 
					
						
							|  |  |  |  |                                     if (facerecord.InOrOut == "进门") | 
					
						
							|  |  |  |  |                                     { | 
					
						
							|  |  |  |  |                                         isIn = 1; | 
					
						
							|  |  |  |  |                                     } | 
					
						
							|  |  |  |  |                                     APIPersonService.getPersonInOut(getPerson, isIn, facerecord.DateTimeRecord.Value); | 
					
						
							| 
									
										
										
										
											2021-04-30 10:28:37 +08:00
										 |  |  |  |                                 } | 
					
						
							|  |  |  |  |                             } | 
					
						
							|  |  |  |  |                         } | 
					
						
							|  |  |  |  |                     } | 
					
						
							|  |  |  |  |                     else | 
					
						
							|  |  |  |  |                     { | 
					
						
							|  |  |  |  |                         responeData.code = 2; | 
					
						
							|  |  |  |  |                         responeData.message = "信息有误!"; | 
					
						
							|  |  |  |  |                     } | 
					
						
							|  |  |  |  |                 } | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  |             catch (Exception ex) | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |                 responeData.code = 0; | 
					
						
							|  |  |  |  |                 responeData.message = ex.Message; | 
					
						
							|  |  |  |  |                 ErrLogInfo.WriteLog("WX接口-保存出入记录", ex); | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |             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(); | 
					
						
							|  |  |  |  |                             ///// 根据出入记录 写入考勤记录 | 
					
						
							|  |  |  |  |                             Model.t_d_facerecordItem newFacerecord = new Model.t_d_facerecordItem | 
					
						
							|  |  |  |  |                             { | 
					
						
							|  |  |  |  |                                 ProjectId = validcardevent.ProjectId, | 
					
						
							|  |  |  |  |                                 ID = validcardevent.ValidEventID, | 
					
						
							|  |  |  |  |                                 EmployName = validcardevent.EmployName, | 
					
						
							|  |  |  |  |                                 DepartmentID = validcardevent.DepartmentID, | 
					
						
							|  |  |  |  |                                 DepartName = validcardevent.DepartmentName, | 
					
						
							|  |  |  |  |                                 AreaID = validcardevent.AreaID, | 
					
						
							|  |  |  |  |                                 AreaName = validcardevent.AreaName, | 
					
						
							|  |  |  |  |                                 EmployNO = validcardevent.IDCardNo, | 
					
						
							|  |  |  |  |                                 IDCardNo = validcardevent.IDCardNo, | 
					
						
							|  |  |  |  |                                 DateTimeRecord = validcardevent.RecordDateTime, | 
					
						
							|  |  |  |  |                                 InOrOut = validcardevent.InOrOut == 1 ? "进门" : "出门", | 
					
						
							|  |  |  |  |                             }; | 
					
						
							| 
									
										
										
										
											2022-06-16 17:34:24 +08:00
										 |  |  |  |                             var getPerson = db.SitePerson_Person.FirstOrDefault(x => x.ProjectId == validcardevent.ProjectId && x.IdentityCard == validcardevent.IDCardNo); | 
					
						
							|  |  |  |  |                             if (getPerson != null) | 
					
						
							| 
									
										
										
										
											2021-04-30 10:28:37 +08:00
										 |  |  |  |                             { | 
					
						
							| 
									
										
										
										
											2022-06-16 17:34:24 +08:00
										 |  |  |  |                                 DoorServerService.InsertEmployInOutRecord(newFacerecord, getPerson); | 
					
						
							|  |  |  |  |                                 if (validcardevent.RecordDateTime.HasValue) | 
					
						
							| 
									
										
										
										
											2021-04-30 10:28:37 +08:00
										 |  |  |  |                                 { | 
					
						
							| 
									
										
										
										
											2022-06-16 17:34:24 +08:00
										 |  |  |  |                                     int isIn = 0; | 
					
						
							|  |  |  |  |                                     if (validcardevent.InOrOut == 1) | 
					
						
							|  |  |  |  |                                     { | 
					
						
							|  |  |  |  |                                         isIn = 1; | 
					
						
							|  |  |  |  |                                     } | 
					
						
							|  |  |  |  |                                     APIPersonService.getPersonInOut(getPerson, isIn, validcardevent.RecordDateTime.Value); | 
					
						
							| 
									
										
										
										
											2021-04-30 10:28:37 +08:00
										 |  |  |  |                                 } | 
					
						
							|  |  |  |  |                             } | 
					
						
							|  |  |  |  |                         } | 
					
						
							|  |  |  |  |                     } | 
					
						
							|  |  |  |  |                     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 SaveEmployInOutRecord([FromBody] Model.t_d_facerecordItem facerecord) | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             var responeData = new Model.ResponeData(); | 
					
						
							|  |  |  |  |             try | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |                 if (facerecord != null) | 
					
						
							|  |  |  |  |                 { | 
					
						
							|  |  |  |  |                     ///// 根据出入记录 写入考勤记录 | 
					
						
							|  |  |  |  |                     facerecord.IDCardNo = facerecord.EmployNO; | 
					
						
							| 
									
										
										
										
											2022-06-16 17:34:24 +08:00
										 |  |  |  |                     var getPerson = Funs.DB.SitePerson_Person.FirstOrDefault(x => x.ProjectId == facerecord.ProjectId && x.IdentityCard == facerecord.EmployNO); | 
					
						
							|  |  |  |  |                     if (getPerson != null) | 
					
						
							|  |  |  |  |                     { | 
					
						
							|  |  |  |  |                         DoorServerService.InsertEmployInOutRecord(facerecord, getPerson); | 
					
						
							|  |  |  |  |                     } | 
					
						
							| 
									
										
										
										
											2021-04-30 10:28:37 +08:00
										 |  |  |  |                 } | 
					
						
							|  |  |  |  |                 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; | 
					
						
							|  |  |  |  |                 responeData.data = Funs.DB.spInOutManHoursReport(projectId, unitId, postId, startDate, endDate).ToList(); ; | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  |             catch (Exception ex) | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |                 responeData.code = 0; | 
					
						
							|  |  |  |  |                 responeData.message = ex.Message; | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  |             return responeData; | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  |         #endregion | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | } |