CNCEC_SUBQHSE_WUHUAN/SGGL/BLL/ZHGL/RealName/SynchroSetService.cs

1676 lines
85 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 Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Net;
namespace BLL
{
public class SynchroSetService
{
/// <summary>
/// 根据主键获取同步设置
/// </summary>
/// <param name="SynchroSetId"></param>
/// <returns></returns>
public static Model.RealName_SynchroSet GetSynchroSetById(string SynchroSetId)
{
return Funs.DB.RealName_SynchroSet.FirstOrDefault(e => e.SynchroSetId == SynchroSetId);
}
/// <summary>
/// 根据单位ID获取同步设置
/// </summary>
/// <param name="SynchroSetId"></param>
/// <returns></returns>
public static Model.RealName_SynchroSet GetSynchroSetByUnitId(string unitId, string proCode)
{
//return Funs.DB.RealName_SynchroSet.FirstOrDefault(e => e.UnitId == unitId);
if (!string.IsNullOrEmpty(proCode))
{
return Funs.DB.RealName_SynchroSet.FirstOrDefault(e => e.UnitId == unitId && e.ProCode == proCode);
}
else
{
return Funs.DB.RealName_SynchroSet.FirstOrDefault(e => e.UnitId == unitId);
}
}
#region
/// <summary>
/// 表下拉框
/// </summary>
/// <param name="dropName">下拉框名字</param>
/// <param name="isShowPlease">是否显示请选择</param>
public static void InitCountryDropDownList(FineUIPro.DropDownList dropName, bool isShowPlease)
{
dropName.DataValueField = "CountryId";
dropName.DataTextField = "Cname";
dropName.DataSource = (from x in Funs.DB.RealName_Country orderby x.Cname select x).ToList();
dropName.DataBind();
if (isShowPlease)
{
Funs.FineUIPleaseSelect(dropName);
}
}
#endregion
public static List<Model.RealName_Project> GetRealNameProject()
{
return (from x in Funs.DB.RealName_Project select x).ToList();
}
#region
/// <summary>
/// 表下拉框
/// </summary>
/// <param name="dropName">下拉框名字</param>
/// <param name="isShowPlease">是否显示请选择</param>
public static void InitProjectDropDownList(FineUIPro.DropDownList dropName, bool isShowPlease)
{
dropName.DataValueField = "ProCode";
dropName.DataTextField = "ProName";
dropName.DataSource = (from x in Funs.DB.RealName_Project
orderby x.ProCode
select x).ToList();
dropName.DataBind();
if (isShowPlease)
{
Funs.FineUIPleaseSelect(dropName);
}
}
#endregion
#region
/// <summary>
///
/// </summary>
/// <param name="SynchroSet"></param>
public static void SaveSynchroSet(Model.RealName_SynchroSet SynchroSet)
{
using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
{
var getSynchroSet = db.RealName_SynchroSet.FirstOrDefault(e => e.UnitId == SynchroSet.UnitId && e.ProCode == SynchroSet.ProCode);
if (getSynchroSet != null)
{
getSynchroSet.ApiUrl = Funs.RealNameApiUrl;
getSynchroSet.ClientId = SynchroSet.ClientId;
getSynchroSet.UserName = SynchroSet.UserName;
getSynchroSet.Password = SynchroSet.Password;
getSynchroSet.Timestamp = SynchroSet.Timestamp;
getSynchroSet.ProCode = SynchroSet.ProCode;
if (!string.IsNullOrEmpty(SynchroSet.Token))
{
getSynchroSet.Token = SynchroSet.Token;
getSynchroSet.Tokenendtime = SynchroSet.Tokenendtime;
}
getSynchroSet.Intervaltime = SynchroSet.Intervaltime;
db.SubmitChanges();
}
else
{
SynchroSet.SynchroSetId = SQLHelper.GetNewID();
db.RealName_SynchroSet.InsertOnSubmit(SynchroSet);
db.SubmitChanges();
}
}
}
/// <summary>
/// 根据主键删除同步设置
/// </summary>
/// <param name="SynchroSetId"></param>
public static void DeleteSynchroSetById(string SynchroSetId)
{
Model.SGGLDB db = Funs.DB;
Model.RealName_SynchroSet SynchroSet = db.RealName_SynchroSet.FirstOrDefault(e => e.SynchroSetId == SynchroSetId);
if (SynchroSet != null)
{
db.RealName_SynchroSet.DeleteOnSubmit(SynchroSet);
db.SubmitChanges();
}
}
/// <summary>
/// 根据主键删除同步设置
/// </summary>
/// <param name="SynchroSetId"></param>
public static void DeleteSynchroSetByUnitId(string unitId)
{
Model.SGGLDB db = Funs.DB;
Model.RealName_SynchroSet SynchroSet = db.RealName_SynchroSet.FirstOrDefault(e => e.UnitId == unitId);
if (SynchroSet != null)
{
db.RealName_SynchroSet.DeleteOnSubmit(SynchroSet);
db.SubmitChanges();
}
}
#endregion
#region access_token信息
/// <summary>
/// 获取凭证
/// </summary>
/// <returns></returns>
public static string getaccess_token(string proCode)
{
string access_token = string.Empty;
Model.RealName_SynchroSet getToken = new Model.RealName_SynchroSet();
if (!string.IsNullOrEmpty(proCode))
{
getToken = Funs.DB.RealName_SynchroSet.FirstOrDefault(x => x.ProCode == proCode);
}
else
{
getToken = Funs.DB.RealName_SynchroSet.FirstOrDefault(x => x.Tokenendtime > DateTime.Now);
}
if (getToken != null)
{
if (getToken.Tokenendtime > DateTime.Now)
{
access_token = getToken.Token;
}
else
{
access_token = SaveToken(getToken);
}
}
return access_token;
}
/// <summary>
/// 获取access_token信息
/// </summary>
/// <param name="url"></param>
/// <returns></returns>
public static string SaveToken(Model.RealName_SynchroSet SynchroSet)
{
try
{
string access_token = string.Empty;
string pushContent = string.Empty;
string clientId = SynchroSet.ClientId;
string userName = SynchroSet.UserName;
string password = Funs.EncryptionPassword(SynchroSet.Password);
string timestamp = string.Format("{0:yyyy-MM-dd HH:mm:ss}", DateTime.Now.AddMinutes(-4));
string sign = Funs.EncryptionPassword(clientId + userName + password + timestamp);
var getToken = new
{
clientId,
userName,
password,
timestamp,
sign
};
string contenttype = "application/json;charset=utf-8";
pushContent= JsonConvert.SerializeObject(getToken);
var returndata = BLL.APIGetHttpService.OutsideHttp(Funs.RealNameApiUrl + "/foreignApi/auth/accessToken", "POST", contenttype, null,pushContent);
if (!string.IsNullOrEmpty(returndata))
{
JObject obj = JObject.Parse(returndata);
if (obj["success"] != null && Convert.ToBoolean(obj["success"].ToString()))
{
access_token = obj["data"].ToString();
SynchroSet.Token = access_token;
SynchroSet.Tokenendtime = DateTime.Now.AddHours(12);
SynchroSet.Timestamp = Funs.GetNewDateTime(timestamp);
SaveSynchroSet(SynchroSet);
InsertRealNamePushLog(null, SynchroSet.ProCode, "获取凭证", obj["success"].ToString(), obj["code"].ToString(), obj["message"].ToString(),access_token, pushContent);
}
else
{
InsertRealNamePushLog(null, SynchroSet.ProCode, "获取凭证", "False", "", returndata, access_token, pushContent);
}
}
else
{
InsertRealNamePushLog(null, SynchroSet.ProCode, "获取凭证", "False", "", "获取凭证失败", access_token, pushContent);
}
return access_token;
}
catch (Exception ex)
{
ErrLogInfo.WriteLog(ex, " 获取access_token信息", "SynchroSetService.SaveToken");
return "";
}
}
#endregion
#region
/// <summary>
/// 实名制推送记录日志
/// </summary>
public static void InsertRealNamePushLog(string ProjectId, string JTProjectCode, string PushType, string Success, string Code, string Message, string ReturnData, string PushContent)
{
using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
{
Model.RealName_PushLog newLog = new Model.RealName_PushLog
{
PushLogId = SQLHelper.GetNewID(),
ProjectId = ProjectId,
ProjectCode = JTProjectCode,
PushType = PushType,
Success = Success,
Code = Code,
Message = Message,
PushTime = DateTime.Now,
ReturnData = ReturnData,
PushContent = PushContent,
};
db.RealName_PushLog.InsertOnSubmit(newLog);
db.SubmitChanges();
}
}
#endregion
#region
/// <summary>
/// 获取基础字典数据
/// </summary>
/// <param name="type"></param>
/// <returns></returns>
public static string getBasicData(string type)
{
try
{
Model.SGGLDB db = Funs.DB;
string mess = string.Empty;
string sucess = string.Empty;
string code = string.Empty;
string data = string.Empty;
string pushContent = string.Empty;
string contenttype = "application/json;charset=unicode";
string url = Funs.RealNameApiUrl + "/foreignApi/baseData/getDict";
var dictTypeCode = new
{
dictTypeCode = type
};
Hashtable newToken = new Hashtable
{
{ "token", getaccess_token(null) }
};
pushContent = JsonConvert.SerializeObject(dictTypeCode);
var returndata = BLL.APIGetHttpService.OutsideHttp(url, "POST", contenttype, newToken, pushContent);
if (!string.IsNullOrEmpty(returndata))
{
JObject obj = JObject.Parse(returndata);
mess = obj["message"].ToString();
code = obj["code"].ToString();
sucess = obj["success"].ToString();
if (Convert.ToBoolean(obj["success"].ToString()))
{
data = obj["data"].ToString();
JArray arr = JArray.Parse(data);
foreach (var item in arr)
{
string dictCode = item["dictCode"].ToString();
string name = item["dictName"].ToString();
if (!string.IsNullOrEmpty(name) && !string.IsNullOrEmpty(dictCode))
{
var getBasicData = db.RealName_BasicData.FirstOrDefault(x => x.DictCode == dictCode && x.DictTypeCode == type);
if (getBasicData != null)
{
getBasicData.DictName = name;
db.SubmitChanges();
}
else
{
Model.RealName_BasicData newBasicData = new Model.RealName_BasicData
{
BasicDataId = SQLHelper.GetNewID(),
DictTypeCode = type,
DictCode = dictCode,
DictName = name
};
db.RealName_BasicData.InsertOnSubmit(newBasicData);
db.SubmitChanges();
}
if (type == "LAB_WORK_TYPE")
{
var getWorkPost = Funs.DB.Base_WorkPost.FirstOrDefault(x => x.WorkPostCode == dictCode);
if (getWorkPost == null)
{
Model.Base_WorkPost newWorkPost = new Model.Base_WorkPost
{
WorkPostId = SQLHelper.GetNewID(),
WorkPostCode = dictCode,
WorkPostName = name,
PostType = "3",
Remark = "来源实名制系统"
};
Funs.DB.Base_WorkPost.InsertOnSubmit(newWorkPost);
Funs.DB.SubmitChanges();
}
}
}
}
}
}
InsertRealNamePushLog(null, null, "获取基础字典[" + type + "]", sucess, code, mess,data,pushContent);
return mess;
}
catch (Exception ex)
{
ErrLogInfo.WriteLog(ex, "获取基础字典", "SynchroSetService.getBasicData");
return "";
}
}
#endregion
#region
/// <summary>
/// 获取基础字典数据
/// </summary>
/// <param name="type"></param>
/// <returns></returns>
public static string getCountry()
{
Model.SGGLDB db = Funs.DB;
string mess = string.Empty;
string sucess = string.Empty;
string code = string.Empty;
string data = string.Empty;
string pushContent = string.Empty;
string contenttype = "application/json;charset=unicode";
string url = Funs.RealNameApiUrl + "/foreignApi/baseData/getCountry";
Hashtable newToken = new Hashtable
{
{ "token", getaccess_token(null) }
};
var returndata = BLL.APIGetHttpService.OutsideHttp(url, "POST", contenttype, newToken, null);
if (!string.IsNullOrEmpty(returndata))
{
JObject obj = JObject.Parse(returndata);
mess = obj["message"].ToString();
code = obj["code"].ToString();
sucess = obj["success"].ToString();
if (Convert.ToBoolean(obj["success"].ToString()))
{
data = obj["data"].ToString();
JArray arr = JArray.Parse(data);
foreach (var item in arr)
{
string countryId = item["countryId"].ToString();
string cname = item["cname"].ToString();
string name = item["name"].ToString();
if (!string.IsNullOrEmpty(countryId))
{
var getCountry = db.RealName_Country.FirstOrDefault(x => x.CountryId == countryId);
if (getCountry != null)
{
getCountry.Cname = cname;
getCountry.Name = name;
db.SubmitChanges();
}
else
{
Model.RealName_Country newCountry = new Model.RealName_Country
{
ID = SQLHelper.GetNewID(),
CountryId = countryId,
Cname = cname,
Name = name
};
db.RealName_Country.InsertOnSubmit(newCountry);
db.SubmitChanges();
}
}
}
}
}
InsertRealNamePushLog(null, null, "获取国家数据", sucess, code, mess, data, pushContent);
return mess;
}
#endregion
#region
/// <summary>
/// 获取基础字典数据
/// </summary>
/// <param name="type"></param>
/// <returns></returns>
public static string getCity(string countryId)
{
Model.SGGLDB db = Funs.DB;
string mess = string.Empty;
string sucess = string.Empty;
string code = string.Empty;
string data = string.Empty;
string pushContent = string.Empty;
string contenttype = "application/json;charset=unicode";
string url = Funs.RealNameApiUrl + "/foreignApi/baseData/getCity";
var getCountrys = from x in db.RealName_Country where countryId == null || x.CountryId == countryId select x;
foreach (var citem in getCountrys)
{
var country = new
{
countryId = citem.CountryId
};
Hashtable newToken = new Hashtable
{
{ "token", getaccess_token(null) }
};
pushContent = JsonConvert.SerializeObject(country);
var returndata = BLL.APIGetHttpService.OutsideHttp(url, "POST", contenttype, newToken,pushContent);
if (!string.IsNullOrEmpty(returndata))
{
JObject obj = JObject.Parse(returndata);
mess = obj["message"].ToString();
code = obj["code"].ToString();
sucess = obj["success"].ToString();
if (Convert.ToBoolean(obj["success"].ToString()))
{
data = obj["data"].ToString();
JArray arr = JArray.Parse(data);
foreach (var item in arr)
{
string provinceCode = item["provinceCode"].ToString();
string cityCode = item["cityCode"].ToString();
string cname = item["cname"].ToString();
string cnShortName = item["cnShortName"].ToString();
string name = item["name"].ToString();
if (!string.IsNullOrEmpty(provinceCode))
{
var getCity = db.RealName_City.FirstOrDefault(x => x.CountryId == citem.CountryId && x.ProvinceCode == provinceCode);
if (getCity == null)
{
Model.RealName_City newCity = new Model.RealName_City
{
ID = SQLHelper.GetNewID(),
CountryId = citem.CountryId,
ProvinceCode = provinceCode,
CityCode = cityCode,
Cname = cname,
CnShortName = cnShortName,
Name = name
};
db.RealName_City.InsertOnSubmit(newCity);
db.SubmitChanges();
}
}
}
}
}
}
InsertRealNamePushLog(null, null, "获取省份数据", sucess, code, mess, data, pushContent);
return mess;
}
#endregion
#region
/// <summary>
/// 获取项目数据
/// </summary>
/// <param name="type"></param>
/// <returns></returns>
public static string getProject(string proCode)
{
string mess = string.Empty;
string sucess = string.Empty;
string code = string.Empty;
string data = string.Empty;
string pushContent = string.Empty;
string contenttype = "application/json;charset=unicode";
string url = Funs.RealNameApiUrl + "/foreignApi/baseData/getProjectList";
Hashtable newToken = new Hashtable
{
{ "token", getaccess_token(proCode) }
};
var returndata = BLL.APIGetHttpService.OutsideHttp(url, "POST", contenttype, newToken, null);
if (!string.IsNullOrEmpty(returndata))
{
JObject obj = JObject.Parse(returndata);
mess = obj["message"].ToString();
code = obj["code"].ToString();
sucess = obj["success"].ToString();
if (Convert.ToBoolean(obj["success"].ToString()))
{
data = obj["data"].ToString();
JArray arr = JArray.Parse(data);
foreach (var item in arr)
{
string JTproCode = item["proCode"].ToString();
string proName = item["proName"].ToString();
string proShortName = item["proShortName"].ToString();
if (!string.IsNullOrEmpty(proCode))
{
var getProject = Funs.DB.RealName_Project.FirstOrDefault(x => x.ProCode == proCode);
if (getProject != null)
{
getProject.ProName = proName;
getProject.ProShortName = proShortName;
getProject.JTproCode = JTproCode;
Funs.DB.SubmitChanges();
}
else
{
Model.RealName_Project newProject = new Model.RealName_Project
{
ID = SQLHelper.GetNewID(),
ProCode = proCode,
JTproCode=JTproCode,
ProName = proName,
ProShortName = proShortName
};
Funs.DB.RealName_Project.InsertOnSubmit(newProject);
Funs.DB.SubmitChanges();
}
}
}
}
}
InsertRealNamePushLog(null, proCode, "获取项目数据", sucess, code, mess, data, pushContent);
return mess;
}
#endregion
#region
/// <summary>
/// 获取基础字典数据
/// </summary>
/// <param name="type"></param>
/// <returns></returns>
public static string getCollTeam(string proCode)
{
try
{
string mess = string.Empty;
string sucess = string.Empty;
string code = string.Empty;
string data = string.Empty;
string pushContent = string.Empty;
string contenttype = "application/json;charset=unicode";
string url = Funs.RealNameApiUrl + "/foreignApi/baseData/getCollTeam";
var getProjects = from x in Funs.DB.RealName_Project where proCode == null || x.ProCode == proCode select x;
foreach (var citem in getProjects)
{
var getProject = new
{
proCode = RealName_ProjectService.GeJTproCodeByproCode(citem.ProCode),
};
Hashtable newToken = new Hashtable
{
{ "token", getaccess_token(citem.ProCode) }
};
pushContent = JsonConvert.SerializeObject(getProject);
var returndata = BLL.APIGetHttpService.OutsideHttp(url, "POST", contenttype, newToken, pushContent);
if (!string.IsNullOrEmpty(returndata))
{
JObject obj = JObject.Parse(returndata);
mess = obj["message"].ToString();
code = obj["code"].ToString();
sucess = obj["success"].ToString();
if (Convert.ToBoolean(obj["success"].ToString()))
{
using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
{
data = obj["data"].ToString();
JArray arr = JArray.Parse(data);
foreach (var item in arr)
{
long? teamId = Funs.GetNewlong(item["teamId"].ToString());
string teamName = item["teamName"].ToString();
string teamLeaderName = item["teamLeaderName"].ToString();
string teamLeaderMobile = item["teamLeaderMobile"].ToString();
string thirdTeamCode = item["thirdTeamCode"].ToString();
if (teamId.HasValue)
{
var getCollTeam = db.RealName_CollTeam.FirstOrDefault(x => x.ProCode == citem.ProCode && x.TeamId == teamId);
if (getCollTeam == null)
{
Model.RealName_CollTeam newCollTeam = new Model.RealName_CollTeam
{
ID = SQLHelper.GetNewID(),
TeamId = teamId,
ProCode = citem.ProCode,
TeamName = teamName,
TeamLeaderName = teamLeaderName,
TeamLeaderMobile = teamLeaderMobile
};
db.RealName_CollTeam.InsertOnSubmit(newCollTeam);
db.SubmitChanges();
}
else
{
if (getCollTeam.TeamName != teamName || getCollTeam.TeamLeaderName != teamLeaderName)
{
getCollTeam.TeamName = teamName;
getCollTeam.TeamLeaderName = teamLeaderName;
getCollTeam.TeamLeaderMobile = teamLeaderMobile;
db.SubmitChanges();
}
}
var getTeamGroup = db.ProjectData_TeamGroup.FirstOrDefault(x => x.TeamGroupId == thirdTeamCode && (x.TeamId != teamId || x.TeamId == null));
if (getTeamGroup != null)
{
getTeamGroup.TeamId = teamId;
getTeamGroup.RealNamePushTime = DateTime.Now;
db.SubmitChanges();
}
}
}
}
}
else
{
InsertRealNamePushLog(null, proCode, "获取施工队数据", sucess, code, mess, data, pushContent);
}
}
else
{
InsertRealNamePushLog(null, proCode, "获取施工队数据", sucess, code, mess, data, pushContent);
}
}
return mess;
}
catch (Exception ex)
{
ErrLogInfo.WriteLog(ex, "获取施工队数据", "SynchroSetService.getCollTeam");
return "";
}
}
#endregion
#region
/// <summary>
/// 推送参建企业数据
/// </summary>
/// <param name="type"></param>
/// <returns></returns>
public static string PushCollCompany()
{
Model.SGGLDB db = Funs.DB;
string mess = string.Empty;
string sucess = string.Empty;
string code = string.Empty;
string data = string.Empty;
string pushContent = string.Empty;
string contenttype = "application/json;charset=unicode";
string url = Funs.RealNameApiUrl + "/foreignApi/accept/collCompany";
var getUnit = (from x in db.Base_Unit
where !x.RealNamePushTime.HasValue && x.CollCropCode != null && x.CollCropCode != ""
select x).Take(200).ToList();
if (getUnit.Count() > 0)
{
var listObject = new
{
list = getUnit.Select(x => new { collCompanyName = x.UnitName, collCropCode = x.CollCropCode, isChina = x.IsChina })
};
Hashtable newToken = new Hashtable
{
{ "token", getaccess_token(null) }
};
pushContent = JsonConvert.SerializeObject(listObject);
var returndata = BLL.APIGetHttpService.OutsideHttp(url, "POST", contenttype, newToken, pushContent);
if (!string.IsNullOrEmpty(returndata))
{
JObject obj = JObject.Parse(returndata);
mess = obj["message"].ToString();
code = obj["code"].ToString();
sucess = obj["success"].ToString();
data = obj["data"].ToString();
if (Convert.ToBoolean(obj["success"].ToString()))
{
foreach (var item in getUnit)
{
item.RealNamePushTime = DateTime.Now;
Funs.DB.SubmitChanges();
}
}
}
InsertRealNamePushLog(null, null, "推送参建企业数据", sucess, code, mess, data, pushContent);
}
else
{
mess = "没有符合条件的数据!";
}
return mess;
}
#endregion
#region
/// <summary>
/// 推送项目参建企业数据
/// </summary>
/// <param name="type"></param>
/// <returns></returns>
public static string PushProCollCompany(string proCode)
{
Model.SGGLDB db = Funs.DB;
string mess = string.Empty;
string sucess = string.Empty;
string code = string.Empty;
string data = string.Empty;
string pushContent = string.Empty;
string contenttype = "application/json;charset=unicode";
string url = Funs.RealNameApiUrl + "/foreignApi/accept/proCollCompany";
var getProjectUnits = (from x in db.Project_ProjectUnit
join y in db.Base_Project on x.ProjectId equals y.ProjectId
join z in db.RealName_Project on y.JTProjectCode equals z.ProCode
join u in db.Base_Unit on x.UnitId equals u.UnitId
where z.ProCode != null && !x.RealNamePushTime.HasValue && x.UnitType != null
&& (proCode == null || y.JTProjectCode == proCode) && x.IsSynchro == true
&& u.CollCropCode != null && u.CollCropCode != ""
select new
{
unitId=x.UnitId,
proCode = z.JTproCode,
collCropCode = u.CollCropCode,
collCropType = db.Sys_Const.First(t => t.GroupId == ConstValue.Group_ProjectUnitType && t.ConstValue == x.UnitType).Remark,
entryTime = string.Format("{0:yyyy-MM-dd}", x.InTime),
exitTime = string.Format("{0:yyyy-MM-dd}", x.OutTime),
linkName = u.LinkName,
idcardType = u.IdcardType,
idcardNumber = u.IdcardNumber,
linkMobile = u.LinkMobile,
collCropStatus = u.CollCropStatus,
x.RealNamePushTime,
x.ProjectUnitId,
}).Take(200).ToList();
if (getProjectUnits.Count() > 0)
{
var listObject = new
{
list = getProjectUnits.Select(x => new { x.proCode, x.collCropCode, x.collCropType, x.entryTime, x.exitTime, x.linkName, x.idcardType, x.idcardNumber, x.linkMobile, x.collCropStatus, })
};
Hashtable newToken = new Hashtable
{
{ "token", getaccess_token(proCode) }
};
PushCollCompany(getProjectUnits.Select(x => x.unitId).Distinct().ToList(), newToken);
pushContent = JsonConvert.SerializeObject(listObject);
var returndata = BLL.APIGetHttpService.OutsideHttp(url, "POST", contenttype, newToken, pushContent);
if (!string.IsNullOrEmpty(returndata))
{
JObject obj = JObject.Parse(returndata);
mess = obj["message"].ToString();
code = obj["code"].ToString();
sucess = obj["success"].ToString();
data = obj["data"].ToString();
if (Convert.ToBoolean(obj["success"].ToString()))
{
foreach (var item in getProjectUnits)
{
var getPUnit = db.Project_ProjectUnit.FirstOrDefault(x => x.ProjectUnitId == item.ProjectUnitId);
if (getPUnit != null)
{
getPUnit.RealNamePushTime = DateTime.Now;
db.SubmitChanges();
}
}
}
}
InsertRealNamePushLog(null, proCode, "推送项目参建企业数据", sucess, code, mess, data, pushContent);
}
else
{
mess = "没有符合条件的数据!";
}
return mess;
}
/// <summary>
/// 推送参建企业数据
/// </summary>
/// <param name="type"></param>
/// <returns></returns>
public static void PushCollCompany(List<string> unitIdLists, Hashtable newToken)
{
Model.SGGLDB db = Funs.DB;
string mess = string.Empty;
string sucess = string.Empty;
string code = string.Empty;
string data = string.Empty;
string pushContent = string.Empty;
string contenttype = "application/json;charset=unicode";
string url = Funs.RealNameApiUrl + "/foreignApi/accept/collCompany";
var getUnit = (from x in db.Base_Unit
where unitIdLists.Contains(x.UnitId) && !x.RealNamePushTime.HasValue
select x).ToList();
if (getUnit.Count() > 0)
{
var listObject = new
{
list = getUnit.Select(x => new { collCompanyName = x.UnitName, collCropCode = x.CollCropCode, isChina = x.IsChina })
};
pushContent = JsonConvert.SerializeObject(listObject);
var returndata = BLL.APIGetHttpService.OutsideHttp(url, "POST", contenttype, newToken, pushContent);
if (!string.IsNullOrEmpty(returndata))
{
JObject obj = JObject.Parse(returndata);
mess = obj["message"].ToString();
code = obj["code"].ToString();
sucess = obj["success"].ToString();
data = obj["data"].ToString();
if (Convert.ToBoolean(obj["success"].ToString()))
{
foreach (var item in getUnit)
{
item.RealNamePushTime = DateTime.Now;
db.SubmitChanges();
}
}
}
InsertRealNamePushLog(null, null, "推送参建企业数据", sucess, code, mess, data, pushContent);
}
}
#endregion
#region /
/// <summary>
/// 推送项目部/施工队(以下简称施工队)数据
/// </summary>
/// <returns></returns>
public static string PushCollTeam(string proCode)
{
string mess = string.Empty;
string sucess = string.Empty;
string code = string.Empty;
string data = string.Empty;
string pushContent = string.Empty;
string contenttype = "application/json;charset=unicode";
string url = Funs.RealNameApiUrl + "/foreignApi/accept/collTeam";
var getCollTeam = (from x in Funs.DB.ProjectData_TeamGroup
join y in Funs.DB.Base_Project on x.ProjectId equals y.ProjectId
join z in Funs.DB.RealName_Project on y.JTProjectCode equals z.ProCode
join u in Funs.DB.Base_Unit on x.UnitId equals u.UnitId
join s in Funs.DB.SitePerson_Person on x.GroupLeaderId equals s.PersonId into jonPerson
from s in jonPerson.DefaultIfEmpty()
where z.ProCode != null && !x.RealNamePushTime.HasValue && x.TeamTypeId != null
&& (proCode == null || y.JTProjectCode == proCode)
&& u.CollCropCode != null && u.CollCropCode != ""
select new
{
proCode = z.JTproCode,
collCropCode = u.CollCropCode,
teamType = x.TeamTypeId,
teamName = x.TeamGroupName,
thirdTeamCode = x.TeamGroupId,
entryTime = string.Format("{0:yyyy-MM-dd}", x.EntryTime),
exitTime = string.Format("{0:yyyy-MM-dd}", x.ExitTime),
teamLeaderName = s.PersonName,
teamLeaderIdcardType = s.IdcardType,
teamLeaderIdcardNumber = s.IdentityCard,
teamLeaderMobile = s.Telephone,
x.RealNamePushTime,
x.TeamGroupId,
}).Take(200).ToList();
if (getCollTeam.Count() > 0)
{
var listObject = new
{
list = getCollTeam.Select(x => new { x.proCode, x.collCropCode, x.teamType, x.teamName, x.thirdTeamCode, x.entryTime, x.exitTime, x.teamLeaderName, x.teamLeaderIdcardType, x.teamLeaderIdcardNumber, x.teamLeaderMobile })
};
Hashtable newToken = new Hashtable
{
{ "token", getaccess_token(proCode) }
};
pushContent = JsonConvert.SerializeObject(listObject);
var returndata = BLL.APIGetHttpService.OutsideHttp(url, "POST", contenttype, newToken, pushContent);
if (!string.IsNullOrEmpty(returndata))
{
JObject obj = JObject.Parse(returndata);
mess = obj["message"].ToString();
code = obj["code"].ToString();
sucess = obj["success"].ToString();
data = obj["data"].ToString();
if (obj["success"] != null && Convert.ToBoolean(obj["success"].ToString()))
{
using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
{
foreach (var item in getCollTeam)
{
var getTeamGroup = db.ProjectData_TeamGroup.FirstOrDefault(x => x.TeamGroupId == item.TeamGroupId);
if (getTeamGroup != null)
{
getTeamGroup.RealNamePushTime = DateTime.Now;
db.SubmitChanges();
}
}
}
}
}
InsertRealNamePushLog(null, proCode, "推送项目部/施工队", sucess, code, mess, data, pushContent);
}
else
{
mess = "没有符合条件的数据!";
}
return mess;
}
#endregion
#region
/// <summary>
/// 推送人员数据
/// </summary>
/// <returns></returns>
public static string PushPersons(string type, string proCode,string identityCard)
{
try
{
string mess = string.Empty;
string sucess = string.Empty;
string code = string.Empty;
string data = string.Empty;
string pushContent = string.Empty;
string contenttype = "application/json;charset=unicode";
var getData = (from x in Funs.DB.SitePerson_Person
join y in Funs.DB.Base_Project on x.ProjectId equals y.ProjectId
join z in Funs.DB.RealName_Project on y.JTProjectCode equals z.ProCode
join p in Funs.DB.Project_ProjectUnit on new { x.UnitId, x.ProjectId } equals new { p.UnitId, p.ProjectId }
join v in Funs.DB.ProjectData_TeamGroup on x.TeamGroupId equals v.TeamGroupId
join w in Funs.DB.Base_WorkPost on x.WorkPostId equals w.WorkPostId
where (identityCard == null || x.IdentityCard == identityCard)
&& y.JTProjectCode == proCode && z.JTproCode != null && x.IsCardNoOK ==true && v.TeamId.HasValue
&& ((type == Const.BtnModify && !x.RealNameUpdateTime.HasValue && x.RealNameAddTime.HasValue)
|| (type != Const.BtnModify && !x.RealNameAddTime.HasValue && x.IsUsed && !x.OutTime.HasValue
&& x.HeadImage != null && x.HeadImage.Length > 0))
&& p.IsSynchro == true
select new
{
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) : null,
idcardForever = "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,
proCode = z.JTproCode,
teamId = v.TeamId,
mobile = x.Telephone,
teamLeaderFlag = (v.GroupLeaderId == x.PersonId ? "Y" : "N"),
userType = ((w.PostType == "1" || w.PostType == "4") ? "LAB_USER_MANAGE" : "LAB_USER_BULIDER"),
workType = w.WorkPostCode,
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,
x.RealNameAddTime,
x.RealNameUpdateTime,
x.PersonId,
}).Take(200).ToList();
if (getData.Count() > 0)
{
string returndata = string.Empty;
Hashtable newToken = new Hashtable
{
{ "token", getaccess_token(proCode) }
};
if (type == Const.BtnModify)
{
var updatelistObject = new
{
list = getData.Select(x => new { x.name, x.idcardType, x.idcardNumber, x.idcardStartDate, x.idcardEndDate, x.idcardForever, x.politicsStatus, x.eduLevel, x.maritalStatus, x.sex, x.idcardAddress, x.homeAddress, x.birthday, x.nation, x.countryCode, x.provinceCode, x.proCode, x.teamId, x.mobile, x.teamLeaderFlag, x.userType, x.workType, x.isLeave, x.entryTime, x.exitTime })
};
pushContent = JsonConvert.SerializeObject(updatelistObject);
returndata = BLL.APIGetHttpService.OutsideHttp(Funs.RealNameApiUrl + "/foreignApi/accept/updatePersons", "POST", contenttype, newToken, pushContent);
}
else
{
var addlistObject = new
{
list = getData.Select(x => new { x.name, x.idcardType, x.idcardNumber, x.idcardStartDate, x.idcardEndDate, x.idcardForever, x.politicsStatus, x.eduLevel, x.maritalStatus, x.sex, x.idcardAddress, x.homeAddress, x.birthday, x.nation, x.countryCode, x.provinceCode, x.headImage, x.proCode, x.teamId, x.mobile, x.teamLeaderFlag, x.userType, x.workType, x.isLeave, x.entryTime, x.exitTime })
};
pushContent = JsonConvert.SerializeObject(addlistObject);
returndata = BLL.APIGetHttpService.OutsideHttp(Funs.RealNameApiUrl + "/foreignApi/accept/persons", "POST", contenttype, newToken, pushContent);
}
if (!string.IsNullOrEmpty(returndata))
{
JObject obj = JObject.Parse(returndata);
mess = obj["message"].ToString();
code = obj["code"].ToString();
sucess = obj["success"].ToString();
data = obj["data"].ToString();
if (obj["success"] != null && Convert.ToBoolean(obj["success"].ToString()) )
{
using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
{
foreach (var item in getData)
{
var getPerson = db.SitePerson_Person.FirstOrDefault(x => x.PersonId == item.PersonId);
if (getPerson != null)
{
if (!getPerson.RealNameAddTime.HasValue)
{
getPerson.RealNameAddTime = DateTime.Now;
}
getPerson.RealNameUpdateTime = DateTime.Now;
db.SubmitChanges();
}
}
}
}
}
InsertRealNamePushLog(null, proCode, "推送人员数据", sucess, code, mess, data, pushContent);
}
else
{
mess = "没有符合条件的数据!";
}
return mess;
}
catch (Exception ex)
{
ErrLogInfo.WriteLog(ex, "推送人员数据", "SynchroSetService.PushPersons");
return "";
}
}
/// <summary>
/// 推送人员数据
/// </summary>
/// <param name="type"></param>
/// <param name="proCode"></param>
/// <param name="identityCard"></param>
/// <param name="isLog">是否写日志</param>
/// <returns></returns>
public static string PushPersonsByIdentityCard(string type, string proCode, string identityCard,bool isLog)
{
try
{
string mess = string.Empty;
string sucess = string.Empty;
string code = string.Empty;
string data = string.Empty;
string pushContent = string.Empty;
string contenttype = "application/json;charset=unicode";
var getData = (from x in Funs.DB.SitePerson_Person
join y in Funs.DB.Base_Project on x.ProjectId equals y.ProjectId
join z in Funs.DB.RealName_Project on y.JTProjectCode equals z.ProCode
join v in Funs.DB.ProjectData_TeamGroup on x.TeamGroupId equals v.TeamGroupId
join w in Funs.DB.Base_WorkPost on x.WorkPostId equals w.WorkPostId
join p in Funs.DB.Project_ProjectUnit on new { x.UnitId,x.ProjectId } equals new { p.UnitId,p.ProjectId }
where x.IdentityCard == identityCard && y.JTProjectCode == proCode
&& v.TeamId.HasValue && z.JTproCode != null
&& ((type ==Const.BtnAdd && x.HeadImage != null && x.HeadImage.Length > 0) || type == Const.BtnModify)
&& p.IsSynchro == true
select new
{
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) : null,
idcardForever = "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,
headImage = x.HeadImage,
proCode = z.JTproCode,
teamId = v.TeamId,
mobile = x.Telephone,
teamLeaderFlag = (v.GroupLeaderId == x.PersonId ? "Y" : "N"),
userType = ((w.PostType == "1" || w.PostType == "4") ? "LAB_USER_MANAGE" : "LAB_USER_BULIDER"),
workType = w.WorkPostCode,
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,
x.RealNameAddTime,
x.RealNameUpdateTime,
x.PersonId,
}).ToList();
if (getData.Count() > 0)
{
string returndata = string.Empty;
Hashtable newToken = new Hashtable
{
{ "token", getaccess_token(proCode) }
};
if (type == Const.BtnModify)
{
var updatelistObject = new
{
list = getData.Select(x => new { x.name, x.idcardType, x.idcardNumber, x.idcardStartDate, x.idcardEndDate, x.idcardForever, x.politicsStatus, x.eduLevel, x.maritalStatus, x.sex, x.idcardAddress, x.homeAddress, x.birthday, x.nation, x.countryCode, x.provinceCode, x.proCode, x.teamId, x.mobile, x.teamLeaderFlag, x.userType, x.workType, x.isLeave, x.entryTime, x.exitTime })
};
pushContent = JsonConvert.SerializeObject(updatelistObject);
returndata = BLL.APIGetHttpService.OutsideHttp(Funs.RealNameApiUrl + "/foreignApi/accept/updatePersons", "POST", contenttype, newToken, pushContent);
}
else
{
var addlistObject = new
{
list = getData.Select(x => new { x.name, x.idcardType, x.idcardNumber, x.idcardStartDate, x.idcardEndDate, x.idcardForever, x.politicsStatus, x.eduLevel, x.maritalStatus, x.sex, x.idcardAddress, x.homeAddress, x.birthday, x.nation, x.countryCode, x.provinceCode, x.headImage, x.proCode, x.teamId, x.mobile, x.teamLeaderFlag, x.userType, x.workType, x.isLeave, x.entryTime, x.exitTime })
};
pushContent = JsonConvert.SerializeObject(addlistObject);
returndata = BLL.APIGetHttpService.OutsideHttp(Funs.RealNameApiUrl + "/foreignApi/accept/persons", "POST", contenttype, newToken, pushContent);
}
if (!string.IsNullOrEmpty(returndata))
{
JObject obj = JObject.Parse(returndata);
mess = obj["message"].ToString();
code = obj["code"].ToString();
sucess = obj["success"].ToString();
data = obj["data"].ToString();
if (obj["success"] != null && Convert.ToBoolean(obj["success"].ToString()) && code == "200")
{
using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
{
foreach (var item in getData)
{
var getPerson = db.SitePerson_Person.FirstOrDefault(x => x.PersonId == item.PersonId);
if (getPerson != null)
{
if (!getPerson.RealNameAddTime.HasValue)
{
getPerson.RealNameAddTime = DateTime.Now;
}
getPerson.RealNameUpdateTime = DateTime.Now;
db.SubmitChanges();
}
}
}
}
else
{
if (data.Contains("历史项目进退场时间重合") || data.Contains("已推送"))
{
using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
{
foreach (var item in getData)
{
var getPerson = db.SitePerson_Person.FirstOrDefault(x => x.PersonId == item.PersonId);
if (getPerson != null)
{
if (!getPerson.RealNameAddTime.HasValue)
{
getPerson.RealNameAddTime = DateTime.Now;
}
if (type == Const.BtnModify)
{
getPerson.RealNameUpdateTime = DateTime.Now;
}
db.SubmitChanges();
}
}
}
}
else if (data.Contains("人员不存在"))
{
SynchroSetService.PushPersonsByIdentityCard(Const.BtnAdd, proCode, identityCard, isLog);
}
else
{
if (isLog)
{
InsertRealNamePushLog(null, proCode, "推送人员数据", sucess, code, mess, data, pushContent);
}
}
}
}
else
{
if (isLog)
{
InsertRealNamePushLog(null, proCode, "推送人员数据", sucess, code, mess, data, pushContent);
}
}
if (data.Contains("已存在") || mess.Contains("已存在"))
{
using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
{
foreach (var item in getData)
{
if (data.Contains(item.idcardNumber) || mess.Contains(item.idcardNumber))
{
var getPerson = db.SitePerson_Person.FirstOrDefault(x => x.PersonId == item.PersonId);
if (getPerson != null)
{
if (!getPerson.RealNameAddTime.HasValue)
{
getPerson.RealNameAddTime = DateTime.Now;
}
db.SubmitChanges();
}
}
}
}
}
}
else
{
mess = "没有符合条件的数据!";
}
return mess;
}
catch (Exception ex)
{
ErrLogInfo.WriteLog(ex, "推送人员数据", "SynchroSetService.PushPersons");
return "";
}
}
/// <summary>
/// 推送人员数据
/// </summary>
/// <returns></returns>
public static string updatePersonsExitTime(string proCode)
{
try
{
string mess = string.Empty;
string sucess = string.Empty;
string code = string.Empty;
string data = string.Empty;
string pushContent = string.Empty;
string contenttype = "application/json;charset=unicode";
int okcount = 0;
var getData = (from x in Funs.DB.SitePerson_Person
join y in Funs.DB.Base_Project on x.ProjectId equals y.ProjectId
join z in Funs.DB.RealName_Project on y.JTProjectCode equals z.ProCode
where y.JTProjectCode == proCode && x.OutTime.HasValue
&& !x.RealNameUpdateTime.HasValue
&& x.RealNameAddTime.HasValue
select new
{
idcardNumber = x.IdentityCard,
proCode=z.JTproCode,
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,
x.RealNameAddTime,
x.RealNameUpdateTime,
name = x.PersonName,
x.PersonId,
});
if (getData.Count() > 0)
{
foreach (var itemData in getData)
{
string returndata = string.Empty;
Hashtable newToken = new Hashtable
{
{ "token", getaccess_token(proCode) }
};
var getItemList = getData.Where(x => x.idcardNumber == itemData.idcardNumber).ToList();
var addlistObject = new
{
list = getItemList.Select(x => new { x.idcardNumber, x.proCode, x.entryTime, x.exitTime, x.name })
};
pushContent = JsonConvert.SerializeObject(addlistObject);
returndata = BLL.APIGetHttpService.OutsideHttp(Funs.RealNameApiUrl + "/foreignApi/accept/updatePersonsExitTime", "POST", contenttype, newToken, pushContent);
if (!string.IsNullOrEmpty(returndata))
{
JObject obj = JObject.Parse(returndata);
mess = obj["message"].ToString();
code = obj["code"].ToString();
sucess = obj["success"].ToString();
data = obj["data"].ToString();
if (obj["success"] != null && Convert.ToBoolean(obj["success"].ToString()))
{
using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
{
var getPerson = db.SitePerson_Person.FirstOrDefault(x => x.PersonId == itemData.PersonId);
if (getPerson != null)
{
if (!getPerson.RealNameAddTime.HasValue)
{
getPerson.RealNameAddTime = DateTime.Now;
}
getPerson.RealNameUpdateTime = DateTime.Now;
db.SubmitChanges();
}
}
okcount++;
}
else
{
mess += itemData.name + "退场失败";
}
}
if (okcount > 0)
{
mess += "退场成功人数"+okcount.ToString();
}
InsertRealNamePushLog(null, proCode, "推送更新离岗人员", sucess, code, mess, data, pushContent);
}
}
else
{
mess = "没有符合条件的数据!";
}
return mess;
}
catch (Exception ex)
{
ErrLogInfo.WriteLog(ex, "推送未更新离岗人员", "SynchroSetService.updatePersonsExitTime");
return "推送人员异常";
}
}
#endregion
#region
/// <summary>
/// 推送考勤数据
/// </summary>
/// <returns></returns>
public static string PushAttendance(string proCode)
{
try
{
string mess = string.Empty;
string sucess = string.Empty;
string code = string.Empty;
string data = string.Empty;
string pushContent = string.Empty;
//string contenttype = "application/json;charset=unicode";
string url = Funs.RealNameApiUrl + "/foreignApi/accept/attendance";
var getData = (from x in Funs.DB.RealName_PersonInOutNow
join p in Funs.DB.SitePerson_Person on x.PersonId equals p.PersonId
join v in Funs.DB.ProjectData_TeamGroup on p.TeamGroupId equals v.TeamGroupId
join r in Funs.DB.RealName_CollTeam on v.TeamId equals r.TeamId
join z in Funs.DB.RealName_Project on x.ProCode equals z.ProCode
join pu in Funs.DB.Project_ProjectUnit on new { x.UnitId, x.ProjectId } equals new { pu.UnitId, pu.ProjectId }
where x.IdcardNumber != null && x.IdcardType != null && x.ChangeTime.HasValue
&& (proCode == null || x.ProCode == proCode) && p.HeadImage != null && p.HeadImage.Length > 0
&& v.TeamId.HasValue && p.HeadImage != null && r.TeamId.HasValue
&& p.IsCardNoOK ==true && z.JTproCode != null
&& (!p.OutTime.HasValue || p.OutTime > x.ChangeTime)
&& !x.RealNamePushTime.HasValue
&& pu.IsSynchro == true
orderby x.ChangeTime descending
select new
{
p.PersonId,
proCode = z.JTproCode,
name = x.Name,
idcardType = x.IdcardType,
idcardNumber = x.IdcardNumber,
checkType = x.CheckType,
checkTime = string.Format("{0:yyyy-MM-dd HH:mm:ss}", x.ChangeTime),
dierction = x.IsIn == true ? "JINCHANG_JINCHU" : "TUICHANG_JINCHU",
checkWay = x.CheckWay,
checkLocation = x.CheckLocation,
longitude = x.Longitude,
latitude = x.Latitude,
x.RealNamePushTime,
x.PersonInOutId,
v.TeamGroupId,
}).Take(200).ToList();
if (getData.Count() > 0)
{
var listObject = new
{
list = getData.Select(x => new { x.proCode, x.name, x.idcardType, x.idcardNumber, x.checkType, x.checkTime, x.dierction, x.checkWay, x.checkLocation, x.longitude, x.latitude })
};
Hashtable newToken = new Hashtable
{
{ "token", getaccess_token(proCode) }
};
addTeam(getData.Select(x => x.TeamGroupId).Distinct().ToList(), newToken);
getTeam(proCode, newToken);
var getPersonS = getData.Select(x => x.idcardNumber).Distinct().ToList();
foreach (var pitem in getPersonS)
{
PushPersonsByIdentityCard(Const.BtnAdd, proCode, pitem, false);
PushPersonsByIdentityCard(Const.BtnModify, proCode, pitem, false);
}
pushContent = JsonConvert.SerializeObject(listObject);
var returndata = BLL.APIGetHttpService.OutsideHttp(url, "POST", null, newToken, pushContent);
if (!string.IsNullOrEmpty(returndata))
{
JObject obj = JObject.Parse(returndata);
mess = obj["message"].ToString();
code = obj["code"].ToString();
sucess = obj["success"].ToString();
data = obj["data"].ToString();
if (obj["success"] != null && Convert.ToBoolean(obj["success"].ToString()))
{
using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
{
foreach (var item in getData)
{
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();
}
}
}
}
}
InsertRealNamePushLog(null, proCode, "推送考勤数据", sucess, code, mess, data, pushContent);
if (data.Contains("无法入场") || mess.Contains("班组"))
{
foreach (var item in getData)
{
if (data.Contains(item.idcardNumber) || mess.Contains(item.idcardNumber))
{
using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
{
var getPersonInOutNow = db.RealName_PersonInOutNow.FirstOrDefault(x => x.IdcardNumber == item.idcardNumber);
if (getPersonInOutNow != null)
{
getPersonInOutNow.RealNamePushTime = DateTime.Now;
// db.RealName_PersonInOutNow.DeleteOnSubmit(getPersonInOutNow);
db.SubmitChanges();
}
}
}
}
}
}
else
{
mess = "没有符合条件的数据!";
}
return mess;
}
catch (Exception ex)
{
ErrLogInfo.WriteLog(ex, "推送考勤数据", "SynchroSetService.PushAttendance");
return "";
}
}
/// <summary>
///
/// </summary>
/// <param name="proCode"></param>
/// <param name="newToken"></param>
public static void getTeam(string proCode, Hashtable newToken)
{
var getProject = new
{
proCode = RealName_ProjectService.GeJTproCodeByproCode(proCode),
};
var returndata = BLL.APIGetHttpService.OutsideHttp(Funs.RealNameApiUrl + "/foreignApi/baseData/getCollTeam", "POST", null, newToken, JsonConvert.SerializeObject(getProject));
if (!string.IsNullOrEmpty(returndata))
{
JObject obj = JObject.Parse(returndata);
if (Convert.ToBoolean(obj["success"].ToString()))
{
using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
{
JArray arr = JArray.Parse(obj["data"].ToString());
foreach (var item in arr)
{
long? teamId = Funs.GetNewlong(item["teamId"].ToString());
string teamName = item["teamName"].ToString();
string teamLeaderName = item["teamLeaderName"].ToString();
string teamLeaderMobile = item["teamLeaderMobile"].ToString();
string thirdTeamCode = item["thirdTeamCode"].ToString();
if (teamId.HasValue)
{
var getCollTeam = db.RealName_CollTeam.FirstOrDefault(x => x.ProCode == proCode && x.TeamId == teamId);
if (getCollTeam == null)
{
Model.RealName_CollTeam newCollTeam = new Model.RealName_CollTeam
{
ID = SQLHelper.GetNewID(),
TeamId = teamId,
ProCode = proCode,
TeamName = teamName,
TeamLeaderName = teamLeaderName,
TeamLeaderMobile = teamLeaderMobile
};
db.RealName_CollTeam.InsertOnSubmit(newCollTeam);
db.SubmitChanges();
}
var getTeamGroup = db.ProjectData_TeamGroup.FirstOrDefault(x => x.TeamGroupId == thirdTeamCode && (x.TeamId != teamId || x.TeamId == null));
if (getTeamGroup != null)
{
getTeamGroup.TeamId = teamId;
getTeamGroup.RealNamePushTime = DateTime.Now;
db.SubmitChanges();
}
}
}
}
}
}
}
/// <summary>
/// 推送 施工队
/// </summary>
public static void addTeam(List<string> teamGroupIds, Hashtable newToken)
{
var getCollTeam = (from x in Funs.DB.ProjectData_TeamGroup
join y in Funs.DB.Base_Project on x.ProjectId equals y.ProjectId
join z in Funs.DB.RealName_Project on y.JTProjectCode equals z.ProCode
join u in Funs.DB.Base_Unit on x.UnitId equals u.UnitId
join s in Funs.DB.SitePerson_Person on x.GroupLeaderId equals s.PersonId into jonPerson
from s in jonPerson.DefaultIfEmpty()
where teamGroupIds.Contains(x.TeamGroupId) && z.JTproCode != null
select new
{
proCode = z.JTproCode,
collCropCode = u.CollCropCode,
teamType = x.TeamTypeId,
teamName = x.TeamGroupName,
thirdTeamCode = x.TeamGroupId,
entryTime = string.Format("{0:yyyy-MM-dd}", x.EntryTime),
exitTime = string.Format("{0:yyyy-MM-dd}", x.ExitTime),
teamLeaderName = s.PersonName,
teamLeaderIdcardType = s.IdcardType,
teamLeaderIdcardNumber = s.IdentityCard,
teamLeaderMobile = s.Telephone,
x.RealNamePushTime,
x.TeamGroupId,
}).ToList();
if (getCollTeam.Count() > 0)
{
var listObject = new
{
list = getCollTeam.Select(x => new { x.proCode, x.collCropCode, x.teamType, x.teamName, x.thirdTeamCode, x.entryTime, x.exitTime, x.teamLeaderName, x.teamLeaderIdcardType, x.teamLeaderIdcardNumber, x.teamLeaderMobile })
};
BLL.APIGetHttpService.OutsideHttp(Funs.RealNameApiUrl + "/foreignApi/accept/collTeam", "POST", null, newToken, JsonConvert.SerializeObject(listObject));
}
}
/// <summary>
/// 推送人员
/// </summary>
/// <param name="personList"></param>
public static void addPerson(List<string> personList, Hashtable newToken)
{
using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
{
var getData = (from x in db.SitePerson_Person
join y in db.Base_Project on x.ProjectId equals y.ProjectId
join z in db.RealName_Project on y.JTProjectCode equals z.ProCode
join v in db.ProjectData_TeamGroup on x.TeamGroupId equals v.TeamGroupId
join w in db.Base_WorkPost on x.WorkPostId equals w.WorkPostId
join p in db.Project_ProjectUnit on new { x.UnitId, x.ProjectId } equals new { p.UnitId, p.ProjectId }
where personList.Contains(x.PersonId) && z.JTproCode != null
&& p.IsSynchro == true
select new
{
name = x.PersonName,
idcardType = x.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) : null,
idcardForever = "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,
proCode = z.JTproCode,
teamId = v.TeamId,
mobile = x.Telephone,
teamLeaderFlag = (v.GroupLeaderId == x.PersonId ? "Y" : "N"),
userType = ((w.PostType == "1" || w.PostType == "4") ? "LAB_USER_MANAGE" : "LAB_USER_BULIDER"),
workType = w.WorkPostCode,
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,
x.RealNameAddTime,
x.RealNameUpdateTime,
x.PersonId,
}).ToList();
if (getData.Count() > 0)
{
var addlistObject = new
{
list = getData.Select(x => new { x.name, x.idcardType, x.idcardNumber, x.idcardStartDate, x.idcardEndDate, x.idcardForever, x.politicsStatus, x.eduLevel, x.maritalStatus, x.sex, x.idcardAddress, x.homeAddress, x.birthday, x.nation, x.countryCode, x.provinceCode, x.headImage, x.proCode, x.teamId, x.mobile, x.teamLeaderFlag, x.userType, x.workType, x.isLeave, x.entryTime, x.exitTime })
};
BLL.APIGetHttpService.OutsideHttp(Funs.RealNameApiUrl + "/foreignApi/accept/persons", "POST", null, newToken, JsonConvert.SerializeObject(addlistObject));
BLL.APIGetHttpService.OutsideHttp(Funs.RealNameApiUrl + "/foreignApi/accept/updatePersons", "POST", null, newToken, JsonConvert.SerializeObject(addlistObject));
}
}
}
#endregion
}
}