using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Net.Http; using System.Web.Http; using BLL; using WebAPI.Filter; namespace WebAPI.Controllers { /// /// /// public class DoorServerController : ApiController { #region 获取部门、人员、出入记录最大ID /// /// 获取部门、人员、出入记录最大ID /// /// /// 查询条件 /// public string getMaxID(string projectId, string queryValue = null) { 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(); } if (!string.IsNullOrEmpty(queryValue)) { var getI = Funs.DB.T_d_facerecord.Where(x => x.ProjectId == projectId && x.RoleID == queryValue).Select(x => x.ID); if (getI.Count() > 0) { ID = getI.Max(); } } else { 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 保存部门信息 /// /// 保存部门信息 /// /// 部门信息 /// [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 保存人员信息 /// /// 保存人员信息 /// /// 人员信息 /// [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 保存人脸识别出入记录信息 /// /// 保存出入记录信息 /// /// 出入记录信息 /// [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) { string projectId = facerecord.ProjectId; string personName = facerecord.EmployName; var getPersonByIdCard = db.SitePerson_Person.Where(x => x.IdentityCard == facerecord.EmployNO).OrderByDescending(x => x.InTime).FirstOrDefault(); if (getPersonByIdCard != null) { personName = getPersonByIdCard.PersonName; projectId = getPersonByIdCard.ProjectId; } var getFacerecord = db.T_d_facerecord.FirstOrDefault(x => x.ID == facerecord.ID && x.ProjectId == projectId && x.RoleID == facerecord.RoleID); if (getFacerecord == null) { Model.T_d_facerecord newFacerecord = new Model.T_d_facerecord() { NewID = SQLHelper.GetNewID(), ProjectId = projectId, ID = facerecord.ID, EmployName =personName, 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; DoorServerService.InsertEmployInOutRecord(facerecord); if (facerecord.DateTimeRecord.HasValue) { int isIn = 0; if (facerecord.InOrOut == "进门") { isIn = 1; } APIPersonService.getPersonInOut(projectId, facerecord.EmployNO, isIn, facerecord.DateTimeRecord.Value); } } } else { responeData.code = 2; responeData.message = "信息有误!"; } } } catch (Exception ex) { responeData.code = 0; responeData.message = ex.Message; } return responeData; } #endregion #region 保存刷卡出入记录信息 /// /// 保存出入记录信息 /// /// 出入记录信息 /// [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 ? "进门" : "出门", }; DoorServerService.InsertEmployInOutRecord(newFacerecord); if (validcardevent.RecordDateTime.HasValue) { int isIn = 0; if (validcardevent.InOrOut == 1) { isIn = 1; } APIPersonService.getPersonInOut(validcardevent.ProjectId, validcardevent.IDCardNo, isIn, validcardevent.RecordDateTime.Value); } } } else { responeData.code = 2; responeData.message = "信息有误!"; } } } catch (Exception ex) { responeData.code = 0; responeData.message = ex.Message; } return responeData; } #endregion #region 保存出入记录信息 /// /// 保存出入记录信息 /// /// 出入记录信息 /// [HttpPost] public Model.ResponeData SaveEmployInOutRecord([FromBody] Model.t_d_facerecordItem facerecord) { var responeData = new Model.ResponeData(); try { if (facerecord != null) { ///// 根据出入记录 写入考勤记录 facerecord.IDCardNo = facerecord.EmployNO; DoorServerService.InsertEmployInOutRecord(facerecord); } else { responeData.code = 2; responeData.message = "信息有误!"; } } catch (Exception ex) { responeData.code = 0; responeData.message = ex.Message; } return responeData; } #endregion #region 获取门禁人员考勤统计 /// /// 获取人员信息出入场记录 /// /// /// /// /// 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; } /// /// /// /// /// /// /// /// public Model.ResponeData getUnitSumInOutstatistics(string projectId, string unitId, DateTime startDate, DateTime endDate) { var responeData = new Model.ResponeData(); try { string postId = null; var getData = Funs.DB.spInOutManHoursReport(projectId, unitId, postId, startDate, endDate).ToList(); responeData.data = getData.Sum(x => x.ManCountSum); } catch (Exception ex) { responeData.code = 0; responeData.message = ex.Message; } return responeData; } #endregion } }