ChengDa_English/SGGL/FineUIPro.Web/ZHGL/RealName/SynchroSet.aspx.cs

583 lines
26 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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
{
/// <summary>
/// 用户编辑页面
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
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();
}
}
/// <summary>
/// 保存按钮
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
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);
}
/// <summary>
/// 连接测试
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
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
/// <summary>
/// 获取按钮权限
/// </summary>
/// <param name="button"></param>
/// <returns></returns>
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
/// <summary>
/// 推送参建企业
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnCompany_Click(object sender, EventArgs e)
{
ShowNotify(BLL.SynchroSetService.PushCollCompany(), MessageBoxIcon.Information);
}
/// <summary>
/// 推送项目参建单位
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
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);
}
}
/// <summary>
/// 推送施工队
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
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);
}
}
/// <summary>
/// 推送人员信息
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
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);
}
}
/// <summary>
/// 推送考勤
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
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);
}
}
/// <summary>
/// 切换项目
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void drpProject_SelectedIndexChanged(object sender, EventArgs e)
{
this.SetPage();
}
/// <summary>
///
/// </summary>
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
/// <summary>
/// 按身份证推送
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
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<string> returnCardList()
{
List<string> getList = new List<string>();
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
/// <summary>
///
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
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);
}
}
}
}
}