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
 | |
|     }
 | |
| }
 |