using System; using System.Collections.Generic; using System.Configuration; using System.IO; using System.Linq; using System.Net; using System.Net.Http; using System.Web.Http; using BLL; using WebAPI.Filter; namespace WebAPI.Controllers { /// /// /// public class DoorServiceController : ApiController { #region 项目出入记录接口 /// /// 保存出入记录信息 /// /// 出入记录信息 /// [HttpPost] public Model.ResponeData postPersonInOuts([FromBody] Model.attendanceItems records) { var responeData = new Model.ResponeData(); try { if (records != null && records.records.Count() > 0) { List attendanceItems = records.records; var getprojectCode = attendanceItems.FirstOrDefault(x => x.ProjectCode != null || x.ProjectId != null); if (getprojectCode != null) { string projectId = getprojectCode.ProjectId; if (string.IsNullOrEmpty(projectId)) { var getProject = ProjectService.GetProjectByProjectCode(getprojectCode.ProjectCode); if (getProject != null) { projectId = getProject.ProjectId; } } if (!string.IsNullOrEmpty(projectId)) { using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString)) { int maxId = 0; var getmax = db.T_d_facerecord.Where(x => x.ProjectId == projectId && x.RoleID == "白名单").Select(x => x.ID); if (getmax.Count() > 0) { maxId = getmax.Max(); } foreach (var item in attendanceItems) { maxId = maxId + 1; string name = string.Empty; string cardNo = string.Empty; var getPerson = db.SitePerson_Person.FirstOrDefault(x => x.IdentityCard == item.idCardNumber); if (getPerson != null) { name = getPerson.PersonName; cardNo = getPerson.CardNo; } Model.T_d_facerecord newFacerecord = new Model.T_d_facerecord() { NewID = SQLHelper.GetNewID(), ProjectId = projectId, ID = maxId, EmployName = name, EmployNO = item.idCardNumber, RoleID = "白名单", DateTimeRecord = Funs.GetNewDateTime(item.attendanceTime), RecordDes = "白名单:允许通行", InOrOut = (item.attendanceType == 1 ? "进门" : "出门"), }; db.T_d_facerecord.InsertOnSubmit(newFacerecord); db.SubmitChanges(); ///// 根据出入记录 写入考勤记录 Model.t_d_facerecordItem facerecord = new Model.t_d_facerecordItem { ID = maxId, EmployName = name, IDCardNo = item.idCardNumber, EmployNO = item.idCardNumber, ProjectId = projectId, RoleID = "白名单", DateTimeRecord = Funs.GetNewDateTime(item.attendanceTime), RecordDes = "白名单:允许通行", InOrOut = (item.attendanceType == 1 ? "进门" : "出门"), }; if (facerecord.DateTimeRecord.HasValue) { int isIn = 0; if (facerecord.InOrOut == "进门") { isIn = 1; } APIPersonService.getPersonInOut(facerecord.ProjectId, facerecord.EmployNO, isIn, facerecord.DateTimeRecord.Value); } } responeData.message = "插入成功!"; } } else { responeData.code = 0; responeData.message = "项目号异常!"; } } else { responeData.code = 0; responeData.message = "项目号为空!"; } } else { responeData.code = 0; responeData.message = "数据为空!"; } } catch (Exception ex) { responeData.code = 0; responeData.message = ex.Message; } return responeData; } #endregion #region 项目出入人员信息 /// /// 保存人员信息 /// /// 人员信息 /// [HttpPost] public Model.ResponeData postPersons([FromBody] Model.PersonItem person) { var responeData = new Model.ResponeData(); try { if (person != null) { using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString)) { var getProject = ProjectService.GetProjectByProjectCode(person.ProjectCode); if (getProject != null) { var getUnit = UnitService.getUnitByCollCropCodeUnitName(person.CollCropCode, person.UnitName); if (getUnit != null) { Model.SitePerson_Person newPerson = new Model.SitePerson_Person { PersonId = SQLHelper.GetNewID(), ProjectId = getProject.ProjectId, UnitId = getUnit.UnitId, PersonName = person.PersonName, IdentityCard = person.IdentityCard, IdcardType = "SHENFEN_ZHENGJIAN", IdcardAddress = person.IdcardAddress, IdcardForever = "N", IdcardStartDate = Funs.GetNewDateTime(person.IdcardStartDate), IdcardEndDate = Funs.GetNewDateTime(person.IdcardEndDate), Sex = (person.Sex == "女" || person.Sex == "2") ? "2" : "1", Address = person.Address, OutResult = person.OutResult, Birthday = person.Birthday, Telephone = person.Telephone, IsUsed = (person.IsUsed == false ? 0 : 1), InTime = Funs.GetNewDateTimeOrNow(person.InTime), Password = BLL.PersonService.GetPersonPassWord(person.IdentityCard), Isprint = "0", }; if (!string.IsNullOrEmpty(person.TeamGroupName) && !string.IsNullOrEmpty(newPerson.UnitId)) { var getTeamGroup = TeamGroupService.getTeamGroupByTeamGroupName(getProject.ProjectId, newPerson.UnitId, person.TeamGroupName); if (getTeamGroup != null) { newPerson.TeamGroupId = getTeamGroup.TeamGroupId; } else { Model.ProjectData_TeamGroup newTeamGroup = new Model.ProjectData_TeamGroup { TeamGroupId = SQLHelper.GetNewID(), ProjectId = getProject.ProjectId, UnitId = newPerson.UnitId, TeamGroupName = person.TeamGroupName, Remark = "来源:门禁对接数据", TeamTypeId = "CANJIAN_TEAM", EntryTime = System.DateTime.Now, RealNamePushTime = null, }; db.ProjectData_TeamGroup.InsertOnSubmit(newTeamGroup); db.SubmitChanges(); newPerson.TeamGroupId = newTeamGroup.TeamGroupId; } } var getWorkArea = UnitWorkService.GetUnitWorkByUnitWorkName(getProject.ProjectId, person.WorkAreaName); if (getWorkArea != null) { newPerson.WorkAreaId = getWorkArea.UnitWorkId; } var getWorkPost = WorkPostService.GetWorkPostByName(person.WorkPostName); if (getWorkPost != null) { newPerson.WorkPostId = getWorkPost.WorkPostId; } var getHsseMan = ProjectService.getHSSEManager(getProject.ProjectId); if (getHsseMan != null) { newPerson.AuditorId = getHsseMan.UserId; newPerson.AuditorDate = DateTime.Now; } newPerson.OutTime = Funs.GetNewDateTime(person.OutTime); if (person.headImage != null) { var image = Convert.FromBase64String(person.headImage); newPerson.HeadImage = image; string rootPath = ConfigurationManager.AppSettings["localRoot"]; string path = "FileUpLoad/PersonBaseInfo/" + DateTime.Now.ToString("yyyy-MM") + "/"; string fileUrl = (rootPath + path).Replace('/', '\\'); string flieName = Funs.GetNewFileName() + "~" + person.PersonName + ".jpg"; if (!Directory.Exists(fileUrl)) { Directory.CreateDirectory(fileUrl); } newPerson.PhotoUrl = path + flieName; File.WriteAllBytes((fileUrl + flieName), image); //AttachFileService.Base64ToImage(person.headImage, path, person.PersonName); } var getPerson = db.SitePerson_Person.FirstOrDefault(e => e.ProjectId == getProject.ProjectId && e.IdentityCard == person.IdentityCard); if (getPerson == null) { PersonService.AddPerson(newPerson); responeData.message = "新增人员成功!"; } else { if (!string.IsNullOrEmpty(person.OutTime)) { var outTime = Funs.GetNewDateTimeOrNow(person.OutTime); PersonService.PersonOut(getPerson.PersonId, outTime); responeData.message = "更新出场时间"; } else { getPerson.PersonName = newPerson.PersonName; getPerson.IdcardAddress = newPerson.IdcardAddress; getPerson.IdcardStartDate = newPerson.IdcardStartDate; getPerson.IdcardEndDate = newPerson.IdcardEndDate; getPerson.Sex = newPerson.Sex; getPerson.Address = newPerson.Address; getPerson.OutResult = newPerson.OutResult; getPerson.Birthday = newPerson.Birthday; getPerson.Telephone = newPerson.Telephone; getPerson.IsUsed = 1; getPerson.InTime = newPerson.InTime; if (!string.IsNullOrEmpty(newPerson.TeamGroupId)) { getPerson.TeamGroupId = newPerson.TeamGroupId; } if (!string.IsNullOrEmpty(newPerson.WorkPostId)) { getPerson.WorkPostId = newPerson.WorkPostId; } if (!string.IsNullOrEmpty(newPerson.PhotoUrl)) { getPerson.PhotoUrl = newPerson.PhotoUrl; } db.SubmitChanges(); responeData.message = getPerson.PersonName+ ":信息更新成功!"; } } } else { responeData.code = 0; responeData.message = "单位:" + person.UnitName + "施工平台不存在!"; } } else { responeData.code = 0; responeData.message = "项目号:" + person.ProjectCode + "施工平台不存在!"; } } } else { responeData.code = 0; responeData.message = "数据为空!"; } } catch (Exception ex) { responeData.code = 0; responeData.message = ex.Message; } return responeData; } #endregion #region 获取在岗人员 -照片不空 /// /// 获取在岗人员 /// /// /// public Model.ResponeData getPersons(string projectCode) { var responeData = new Model.ResponeData(); try { var getProject = Funs.DB.Base_Project.FirstOrDefault(e => e.ProjectCode == projectCode); if (getProject != null) { responeData.data = from x in Funs.DB.SitePerson_Person join y in Funs.DB.Base_Unit on x.UnitId equals y.UnitId join T in Funs.DB.ProjectData_TeamGroup on x.TeamGroupId equals T.TeamGroupId join w in Funs.DB.Base_WorkPost on x.WorkPostId equals w.WorkPostId where x.ProjectId == getProject.ProjectId && !x.ExchangeTime.HasValue && (!x.OutTime.HasValue || x.OutTime > DateTime.Now) && x.InTime.HasValue && x.InTime < DateTime.Now && x.IsUsed == 1 && x.PhotoUrl != null select new { x.PersonId, x.PersonName, x.CardNo, x.IdentityCard, x.UnitId, y.UnitCode, y.UnitName, y.ShortUnitName, T.TeamGroupName, x.Sex, w.WorkPostName, x.Telephone, x.Address, x.InTime, x.AuditorDate, x.ExchangeTime, x.ExchangeTime2, x.PhotoUrl, }; } else { responeData.code = 0; responeData.message = "数据为空!"; } } catch (Exception ex) { responeData.code = 0; responeData.message = ex.Message; ErrLogInfo.WriteLog(ex, "WX接口-获取人员下发门禁", "DoorServiceController.getPersons"); } return responeData; } #endregion #region 更新人员数据交换时间 /// /// 更新人员数据交换时间 /// /// /// /// /// public Model.ResponeData getUpdatePersonExchangeTime(string projectCode, string idCard, string type) { var responeData = new Model.ResponeData(); try { using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString)) { var getProject = db.Base_Project.FirstOrDefault(e => e.ProjectCode == projectCode); if (getProject != null) { var getPerson = db.SitePerson_Person.FirstOrDefault(e => e.ProjectId == getProject.ProjectId && e.IdentityCard == idCard); if (getPerson != null && !string.IsNullOrEmpty(type)) { if (type == "1") { getPerson.ExchangeTime2 = DateTime.Now; if (!getPerson.ExchangeTime.HasValue) { getPerson.ExchangeTime = DateTime.Now; } } else { getPerson.ExchangeTime = DateTime.Now; } db.SubmitChanges(); } } } } catch (Exception ex) { responeData.code = 0; responeData.message = ex.Message; ErrLogInfo.WriteLog(ex, "WX接口-更新人员数据交换时间", "PersonController.getUpdatePersonExchangeTime"); } return responeData; } #endregion #region 获取离场人员 /// /// 获取离场人员 /// /// /// public Model.ResponeData getOutWorkPersons(string projectCode) { var responeData = new Model.ResponeData(); try { using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString)) { var getProject = db.Base_Project.FirstOrDefault(e => e.ProjectCode == projectCode); if (getProject != null) { responeData.data = (from x in db.SitePerson_Person where x.ProjectId == getProject.ProjectId && x.OutTime.HasValue && !x.ExchangeTime2.HasValue && x.ExchangeTime.HasValue select new { x.PersonId, x.PersonName, x.CardNo, x.IdentityCard, OutTime = x.OutTime == null ? DateTime.Now.AddYears(10) : x.OutTime, }).Take(200).ToList(); } } } catch (Exception ex) { responeData.code = 0; responeData.message = ex.Message; } return responeData; } #endregion #region 插入人员出入场记录 /// /// 获取人员出入场记录 /// /// /// /// /// /// public Model.ResponeData getPersonInOut(string projectCode, string idCard, int isIn, DateTime changeTime) { var responeData = new Model.ResponeData(); try { var getProject = ProjectService.GetProjectByProjectCode(projectCode); if (getProject != null) { Model.SitePerson_PersonInOut newInOut = new Model.SitePerson_PersonInOut { ProjectId = getProject.ProjectId, IdentityCard = idCard, IsIn = isIn == 1 ? true : false, ChangeTime = changeTime, InOutWay = Const.InOutWay_1, }; PersonInOutService.AddPersonInOut(newInOut); } } catch (Exception ex) { responeData.code = 0; responeData.message = ex.Message; ErrLogInfo.WriteLog(ex, "WX接口-插入人员出入场记录", "PersonController.getPersonInOut"); } return responeData; } #endregion #region 获取在岗人员 /// /// 获取在岗人员 /// /// /// public Model.ResponeData getRealNamePersons(string projectCode) { var responeData = new Model.ResponeData(); try { using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString)) { var getProject = db.Base_Project.FirstOrDefault(e => e.ProjectCode == projectCode); if (getProject != null) { responeData.data = (from x in db.SitePerson_Person join y in db.Base_Unit on x.UnitId equals y.UnitId join T in db.ProjectData_TeamGroup on x.TeamGroupId equals T.TeamGroupId join w in db.Base_WorkPost on x.WorkPostId equals w.WorkPostId where x.ProjectId == getProject.ProjectId && (!x.ExchangeTime.HasValue || !x.ExchangeTime2.HasValue) //&& (!x.OutTime.HasValue || x.OutTime > DateTime.Now) //&& x.InTime.HasValue && x.InTime < DateTime.Now && x.IsUsed == 1 && x.PhotoUrl != null select new Model.RealNamePersonItem { projectCode = getProject.ProjectCode, projectName = getProject.ProjectName, unitName = y.UnitName, collCropCode = y.CollCropCode, teamGroupName = T.TeamGroupName, name = x.PersonName, idcardType = "SHENFEN_ZHENGJIAN", idcardNumber = x.IdentityCard, idcardStartDate = x.IdcardStartDate.HasValue ? string.Format("{0:yyyy-MM-dd}", x.IdcardStartDate) : null, idcardEndDate = x.IdcardEndDate.HasValue ? string.Format("{0:yyyy-MM-dd}", x.IdcardEndDate) : (x.IdcardStartDate.HasValue ? string.Format("{0:yyyy-MM-dd}", x.IdcardStartDate.Value.AddYears(30)) : null), idcardForever = x.IdcardStartDate.HasValue ? "N" : "Y", politicsStatus = x.PoliticsStatus, eduLevel = x.EduLevel, maritalStatus = x.MaritalStatus, sex = (x.Sex == "2" ? "F" : "M"), idcardAddress = x.IdcardAddress, homeAddress = x.Address, birthday = x.Birthday.HasValue ? string.Format("{0:yyyy-MM-dd}", x.Birthday) : null, nation = x.Nation, countryCode = x.CountryCode, provinceCode = x.ProvinceCode, positiveIdcardImage = db.AttachFile.First(t => (x.PersonId + "#1") == t.ToKeyId).ImageByte, negativeIdcardImage = db.AttachFile.First(t => (x.PersonId + "#5") == t.ToKeyId).ImageByte, headImage = x.HeadImage, mobile = x.Telephone, teamLeaderFlag = (T.GroupLeaderId == x.PersonId ? "Y" : "N"), userType = ((w.PostType == "1" || w.PostType == "4") ? "LAB_USER_MANAGE" : "LAB_USER_BULIDER"), workType = w.WorkPostCode, workPostName = w.WorkPostName, isLeave = x.OutTime.HasValue ? "Y" : "N", entryTime = x.InTime.HasValue ? string.Format("{0:yyyy-MM-dd}", x.InTime) : null, exitTime = x.OutTime.HasValue ? string.Format("{0:yyyy-MM-dd}", x.OutTime) : null, }).ToList(); } else { responeData.code = 0; responeData.message = "数据为空!"; } } } catch (Exception ex) { responeData.code = 0; responeData.message = ex.Message; ErrLogInfo.WriteLog(ex, "WX接口-获取人员下发门禁", "DoorServiceController.getPersons"); } return responeData; } #endregion } }