using BLL; using Newtonsoft.Json; using Newtonsoft.Json.Linq; using System; using System.Collections; using System.Collections.Generic; using System.Configuration; using System.Linq; namespace FineUIPro.Web.ZHGL.RealName { public partial class SynchroSet : PageBase { /// /// 用户编辑页面 /// /// /// protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { ///权限 this.GetButtonPower(); ProjectService.InitAllProjectShortNameDropDownList(this.drpProject, this.CurrUser.UserId, false); if (!string.IsNullOrEmpty(this.CurrUser.LoginProjectId)) { this.drpProject.SelectedValue = this.CurrUser.LoginProjectId; this.drpProject.Readonly = true; } if (this.CurrUser.UserId == Const.hfnbdId) { this.btnDataProcess.Hidden = false; } this.SetPage(); } } /// /// 保存按钮 /// /// /// protected void btnSave_Click(object sender, EventArgs e) { Model.RealName_SynchroSet newSynchroSet = new Model.RealName_SynchroSet { UnitId = Const.UnitId_CD, ApiUrl = Funs.RealNameApiUrl, ClientId = this.txtclientId.Text.Trim(), UserName = this.txtUserName.Text.Trim(), Password = this.txtword.Text.Trim(), Intervaltime = Funs.GetNewInt(this.txtintervaltime.Text.Trim()), }; newSynchroSet.ProCode = ProjectService.GetContractNoByProjectId(this.drpProject.SelectedValue); BLL.SynchroSetService.SaveSynchroSet(newSynchroSet); ShowNotify("保存成功!", MessageBoxIcon.Success); } /// /// 连接测试 /// /// /// protected void btnConnect_Click(object sender, EventArgs e) { Model.RealName_SynchroSet newSynchroSet = new Model.RealName_SynchroSet { UnitId = Const.UnitId_CD, ApiUrl = Funs.RealNameApiUrl, ClientId = this.txtclientId.Text.Trim(), UserName = this.txtUserName.Text.Trim(), Password = this.txtword.Text.Trim(), Intervaltime = Funs.GetNewInt(this.txtintervaltime.Text.Trim()), }; newSynchroSet.ProCode = ProjectService.GetContractNoByProjectId(this.drpProject.SelectedValue); if (!string.IsNullOrEmpty(SynchroSetService.SaveToken(newSynchroSet))) { ShowNotify("连接成功!", MessageBoxIcon.Success); } else { Alert.ShowInParent("连接失败", MessageBoxIcon.Warning); } } #region 获取按钮权限 /// /// 获取按钮权限 /// /// /// private void GetButtonPower() { string menuId = !string.IsNullOrEmpty(this.CurrUser.LoginProjectId) ? Const.RealNameSynchroSetMenuId : Const.ServerRealNameSynchroSetMenuId; var buttonList = BLL.CommonService.GetAllButtonList(this.CurrUser.LoginProjectId, this.CurrUser.UserId, menuId); if (buttonList.Count() > 0) { if (buttonList.Contains(BLL.Const.BtnSave)) { this.btnSave.Hidden = false; this.btnConnect.Hidden = false; this.btnCompany.Hidden = false; this.btnCompany.Hidden = false; this.btnProCollCompany.Hidden = false; this.btnCollTeam.Hidden = false; this.btnPersons.Hidden = false; this.btnAttendance.Hidden = false; } } } #endregion /// /// 推送参建企业 /// /// /// protected void btnCompany_Click(object sender, EventArgs e) { ShowNotify(BLL.SynchroSetService.PushCollCompany(), MessageBoxIcon.Information); } /// /// 推送项目参建单位 /// /// /// protected void btnProCollCompany_Click(object sender, EventArgs e) { string message = string.Empty; string proCode = BLL.ProjectService.GetContractNoByProjectId(this.drpProject.SelectedValue); var getRProjects = Funs.DB.RealName_Project.FirstOrDefault(x => x.ProCode == proCode); if (getRProjects != null) { message += ("项目" + getRProjects.ProCode + SynchroSetService.PushProCollCompany(getRProjects.ProCode)); ShowNotify(message, MessageBoxIcon.Information); } else { ShowNotify("当前项目还没有与实名制对接!", MessageBoxIcon.Information); } } /// /// 推送施工队 /// /// /// protected void btnCollTeam_Click(object sender, EventArgs e) { string message = string.Empty; string proCode = BLL.ProjectService.GetContractNoByProjectId(this.drpProject.SelectedValue); var getRProjects = Funs.DB.RealName_Project.FirstOrDefault(x => x.ProCode == proCode); if (getRProjects != null) { message += ("项目" + getRProjects.ProCode + SynchroSetService.PushCollTeam(getRProjects.ProCode)); ShowNotify(message, MessageBoxIcon.Information); } else { ShowNotify("当前项目还没有与实名制对接!", MessageBoxIcon.Information); } } /// /// 推送人员信息 /// /// /// protected void btnPersons_Click(object sender, EventArgs e) { //string add ="新增"+ BLL.SynchroSetService.PushPersons(Const.BtnAdd,null) ?? ""; //string update ="更新"+ BLL.SynchroSetService.PushPersons(Const.BtnModify,null) ?? ""; //ShowNotify(add+"|"+ update, MessageBoxIcon.Information); string message = string.Empty; string proCode = BLL.ProjectService.GetContractNoByProjectId(this.drpProject.SelectedValue); var getRProjects = Funs.DB.RealName_Project.FirstOrDefault(x => x.ProCode == proCode); if (getRProjects != null) { message += ("项目" + getRProjects.ProCode + "新增" + BLL.SynchroSetService.PushPersons(Const.BtnAdd, getRProjects.ProCode, null) ?? ""); message += ("|更新" + BLL.SynchroSetService.PushPersons(Const.BtnModify, getRProjects.ProCode, null) ?? ""); ShowNotify(message, MessageBoxIcon.Information); } else { ShowNotify("当前项目还没有与实名制对接!", MessageBoxIcon.Information); } } /// /// 推送考勤 /// /// /// protected void btnAttendance_Click(object sender, EventArgs e) { string message = string.Empty; string proCode = BLL.ProjectService.GetContractNoByProjectId(this.drpProject.SelectedValue); var getRProjects = Funs.DB.RealName_Project.FirstOrDefault(x => x.ProCode == proCode); if (getRProjects != null) { message += ("项目" + getRProjects.ProCode + SynchroSetService.PushAttendance(getRProjects.ProCode)); ShowNotify(message, MessageBoxIcon.Information); } else { ShowNotify("当前项目还没有与实名制对接!", MessageBoxIcon.Information); } } /// /// 切换项目 /// /// /// protected void drpProject_SelectedIndexChanged(object sender, EventArgs e) { this.SetPage(); } /// /// /// protected void SetPage() { this.txtclientId.Text = string.Empty; this.txtUserName.Text = string.Empty; this.txtword.Text = string.Empty; this.txtapiUrl.Text = Funs.RealNameApiUrl; this.txtintervaltime.Text = ConfigurationManager.AppSettings["Intervaltime"]; var getpro = Funs.DB.Base_Project.FirstOrDefault(x => x.ProjectId == this.drpProject.SelectedValue); if (getpro != null) { if (!string.IsNullOrEmpty(getpro.ContractNo)) { var getSynchroSet = SynchroSetService.GetSynchroSetByUnitId(Const.UnitId_CD, getpro.ContractNo); if (getSynchroSet != null) { this.txtapiUrl.Text = Funs.RealNameApiUrl; this.txtclientId.Text = getSynchroSet.ClientId; this.txtUserName.Text = getSynchroSet.UserName; this.txtword.Text = getSynchroSet.Password; if (string.IsNullOrEmpty(this.txtintervaltime.Text)) { this.txtintervaltime.Text = getSynchroSet.Intervaltime.ToString(); } } } this.lbProjectInfo.Text = "项目:" + getpro.ProjectName + ";项目号:" + getpro.ProjectCode + ";合同号:" + getpro.ContractNo + "。"; } } #region 按身份证推送或删除考勤 /// /// 按身份证推送 /// /// /// protected void btnPushData_Click(object sender, EventArgs e) { string message = string.Empty; string idText = this.txtIdentityCard.Text.Trim(); if (!string.IsNullOrEmpty(idText)) { string proCode = ProjectService.GetContractNoByProjectId(this.drpProject.SelectedValue); var getRProjects = Funs.DB.RealName_Project.FirstOrDefault(x => x.ProCode == proCode); if (getRProjects != null && !string.IsNullOrEmpty(getRProjects.ProCode)) { var getList = returnCardList(); if (getList != null && getList.Count > 0) { foreach (var item in getList) { message += ("项目" + getRProjects.ProCode + "新增" + BLL.SynchroSetService.PushPersonsByIdentityCard(Const.BtnAdd, getRProjects.ProCode, item) ?? ""); message += ("|更新" + BLL.SynchroSetService.PushPersonsByIdentityCard(Const.BtnModify, getRProjects.ProCode, item) ?? ""); } ShowNotify(message, MessageBoxIcon.Information); } } else { ShowNotify("当前项目还没有与实名制对接!", MessageBoxIcon.Information); } } } protected void btnDelete_Click(object sender, EventArgs e) { var getList = returnCardList(); if (getList != null && getList.Count > 0) { foreach (var item in getList) { var realPersonInOutNow = Funs.DB.RealName_PersonInOutNow.Where(x => x.IdcardNumber == item); if (realPersonInOutNow.Count() > 0) { Funs.DB.RealName_PersonInOutNow.DeleteAllOnSubmit(realPersonInOutNow); Funs.DB.SubmitChanges(); } } } } private List returnCardList() { List getList = new List(); string idText = this.txtIdentityCard.Text.Trim(); if (!string.IsNullOrEmpty(idText)) { idText = idText.Replace(",", ",").Replace("(条)", "").Replace(";", ";").Replace("(", "(").Replace(")", ")"); if (idText.Contains("(")) { var getData = Funs.GetStrListByStr(idText, ';'); foreach (var itemD in getData) { if (!string.IsNullOrEmpty(itemD)) { var a = itemD.Split('('); if (a.Count() > 1) { var b = a[1].Split(')'); if (b.Count() > 1) { getList.Add(b[0]); } } } } } else { getList = Funs.GetStrListByStr(idText, ','); } } return getList; } #endregion /// /// /// /// /// protected void btnDataProcess_Click(object sender, EventArgs e) { int delCount = 0; try { var result = (from x in Funs.DB.RealName_PersonInOutNow select new { x.ProjectId, date = x.ChangeTime.Value.Date, x.IdcardNumber, x.IsIn }).Distinct(); foreach (var item in result) { var getDateRecords = from x in Funs.DB.RealName_PersonInOutNow where x.ProjectId == item.ProjectId && x.ChangeTime.Value >= item.date.Date && x.ChangeTime.Value < item.date.Date.AddDays(1) && x.IdcardNumber == item.IdcardNumber select x; var getInRecords = getDateRecords.Where(x => x.IsIn == true); if (getInRecords.Count() > 1) { DateTime? minChangeTime = getInRecords.Min(x => x.ChangeTime); var getDeleteInR = from x in getInRecords where x.ChangeTime != minChangeTime select x; if (getDeleteInR.Count() > 0) { delCount += getDeleteInR.Count(); Funs.DB.RealName_PersonInOutNow.DeleteAllOnSubmit(getDeleteInR); Funs.DB.SubmitChanges(); } } var getOutRecords = getDateRecords.Where(x => x.IsIn == false); if (getOutRecords.Count() > 1) { DateTime? maxChangeTime = getOutRecords.Max(x => x.ChangeTime); var getDeleteOutR = from x in getOutRecords where x.ChangeTime != maxChangeTime select x; if (getDeleteOutR.Count() > 0) { delCount += getDeleteOutR.Count(); Funs.DB.RealName_PersonInOutNow.DeleteAllOnSubmit(getDeleteOutR); Funs.DB.SubmitChanges(); } } if (delCount >= 1000) { Alert.ShowInTop("已清理" + delCount.ToString(), MessageBoxIcon.Success); return; } } Alert.ShowInTop("已清理" + delCount.ToString(), MessageBoxIcon.Success); } catch (Exception ex) { Alert.ShowInTop("已清理" + delCount.ToString(), MessageBoxIcon.Success); return; } } protected void btnAllPushData_Click(object sender, EventArgs e) { string message = string.Empty; int count = 0; string projectId = this.drpProject.SelectedValue; string proCode = ProjectService.GetContractNoByProjectId(projectId); var getRProjects = Funs.DB.RealName_Project.FirstOrDefault(x => x.ProCode == proCode); if (getRProjects != null && !string.IsNullOrEmpty(getRProjects.ProCode)) { var getIdentityCards = (from x in Funs.DB.SitePerson_Person join v in Funs.DB.ProjectData_TeamGroup on x.TeamGroupId equals v.TeamGroupId join pu in Funs.DB.Project_ProjectUnit on new { x.UnitId, x.ProjectId } equals new { pu.UnitId, pu.ProjectId } where x.ProjectId == projectId && x.IsCardNoOK == true && pu.IsSynchro == true && v.TeamId.HasValue && !x.RealNameAddTime.HasValue && x.HeadImage != null && x.HeadImage.Length >0 select x.IdentityCard).Take(100); foreach (var item in getIdentityCards) { string mes = BLL.SynchroSetService.PushPersonsByIdentityCard(Const.BtnAdd, getRProjects.ProCode, item) ?? ""; if (mes.Contains("不合法")) { message += ("身份证号码" + item + "新增失败" + mes); } else { count++; } } } SynchroSetService.InsertRealNamePushLog(projectId, proCode, "单条批量推送(增加)", "完成", null, message, null, null); if (string.IsNullOrEmpty(message)) { ShowNotify("同步完成!" + count.ToString() + "条", MessageBoxIcon.Success); } else { Alert.ShowInParent("同步完成!" + count.ToString() + "条;" + message, MessageBoxIcon.Warning); } } protected void btnUpdate_Click(object sender, EventArgs e) { string message = string.Empty; int count = 0; string projectId = this.drpProject.SelectedValue; string proCode = ProjectService.GetContractNoByProjectId(projectId); var getRProjects = Funs.DB.RealName_Project.FirstOrDefault(x => x.ProCode == proCode); if (getRProjects != null && !string.IsNullOrEmpty(getRProjects.ProCode)) { var getIdentityCards = (from x in Funs.DB.SitePerson_Person join v in Funs.DB.ProjectData_TeamGroup on x.TeamGroupId equals v.TeamGroupId join pu in Funs.DB.Project_ProjectUnit on new { x.UnitId, x.ProjectId } equals new { pu.UnitId, pu.ProjectId } where x.ProjectId == projectId && v.TeamId.HasValue && x.IsCardNoOK == true && v.TeamId.HasValue && !x.RealNameUpdateTime.HasValue && x.RealNameAddTime.HasValue && pu.IsSynchro == true select x.IdentityCard).Take(100); foreach (var item in getIdentityCards) { string mes = BLL.SynchroSetService.PushPersonsByIdentityCard(Const.BtnModify, getRProjects.ProCode, item) ?? ""; if (mes.Contains("不合法")) { message += ("身份证号码" + item + "更新失败" + mes); } else { count++; } } } SynchroSetService.InsertRealNamePushLog(projectId, proCode, "单条批量推送(更新)", "完成", null, message, null, null); if (string.IsNullOrEmpty(message)) { ShowNotify("同步完成!" + count.ToString() + "条", MessageBoxIcon.Success); } else { Alert.ShowInParent("同步完成!" + count.ToString() + "条;" + message, MessageBoxIcon.Warning); } } protected void btnKQ_Click(object sender, EventArgs e) { string message = string.Empty; int count = 0; string projectId = this.drpProject.SelectedValue; string proCode = ProjectService.GetContractNoByProjectId(projectId); var getRProjects = Funs.DB.RealName_Project.FirstOrDefault(x => x.ProCode == proCode); if (getRProjects != null && !string.IsNullOrEmpty(getRProjects.ProCode)) { try { string sucess = string.Empty; string code = string.Empty; string url = Funs.RealNameApiUrl + "/foreignApi/accept/attendance"; var getDataLists = from x in Funs.DB.RealName_PersonInOutNow join p in Funs.DB.SitePerson_Person on x.PersonId equals p.PersonId where x.IdcardNumber != null && x.IdcardType != null && x.ChangeTime.HasValue && p.RealNameAddTime.HasValue && x.ProjectId == projectId select x; foreach (var item in getDataLists) { var listObject = new { list = new { proCode, name = item.Name, idcardType = item.IdcardType, idcardNumber = item.IdcardNumber, checkType = item.CheckType, checkTime = item.ChangeTime, dierction = (item.IsIn == true ? "JINCHANG_JINCHU" : "TUICHANG_JINCHU"), checkWay = item.CheckWay, checkLocation = item.CheckLocation, longitude = item.Longitude, latitude = item.Latitude } }; Hashtable newToken = new Hashtable { { "token", SynchroSetService.getaccess_token(proCode) } }; var returndata = BLL.APIGetHttpService.OutsideHttp(url, "POST", null, newToken, JsonConvert.SerializeObject(listObject)); string mes = string.Empty; if (!string.IsNullOrEmpty(returndata)) { JObject obj = JObject.Parse(returndata); mes = obj["message"].ToString(); code = obj["code"].ToString(); sucess = obj["success"].ToString(); if (obj["success"] != null && Convert.ToBoolean(obj["success"].ToString())) { using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString)) { var getPersonInOutNow = db.RealName_PersonInOutNow.FirstOrDefault(x => x.PersonInOutId == item.PersonInOutId); if (getPersonInOutNow != null) { //getPersonInOutNow.RealNamePushTime = DateTime.Now; db.RealName_PersonInOutNow.DeleteOnSubmit(getPersonInOutNow); db.SubmitChanges(); } } } else { message += item.IdcardNumber + mes ?? "出入记录异常!"; } } } } catch (Exception ex) { ErrLogInfo.WriteLog(ex, "推送考勤数据", "SynchroSetService.PushAttendance"); message += ex.Message; } if (string.IsNullOrEmpty(message)) { ShowNotify("同步完成!" + count.ToString() + "条", MessageBoxIcon.Success); } else { Alert.ShowInParent("同步完成!" + count.ToString() + "条;" + message, MessageBoxIcon.Warning); } } } } }