123
This commit is contained in:
@@ -9,22 +9,14 @@ namespace MyCode.Project.Services
|
||||
{
|
||||
public interface IStaffDataEnterpriseWechatService
|
||||
{
|
||||
void InitDepartment();
|
||||
|
||||
/// <summary>
|
||||
/// 定时获取用户登录参数
|
||||
/// </summary>
|
||||
void TaskGetPasswordData();
|
||||
|
||||
/// <summary>
|
||||
/// 执行需要比对的数据任务
|
||||
/// 调度定时登录账号信息
|
||||
/// </summary>
|
||||
void RunWechatVSKingDee();
|
||||
|
||||
/// <summary>
|
||||
/// 创建需要比对的数据任务
|
||||
/// </summary>
|
||||
void AddWechatVSKingDeeJob();
|
||||
|
||||
/// <summary>
|
||||
/// 定时任务刷微信OPENID
|
||||
/// </summary>
|
||||
void TaskAddOpenIdJob();
|
||||
void TaskGetUserByAccount();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,13 +1,19 @@
|
||||
using MyCode.Project.Domain.Message.Response.EnterpriseWechat;
|
||||
using MyCode.Project.Domain.Message.Request.User;
|
||||
using MyCode.Project.Domain.Message.Response.EnterpriseWechat;
|
||||
using MyCode.Project.Domain.Message.Response.Wechat;
|
||||
using MyCode.Project.Domain.Model;
|
||||
using MyCode.Project.Domain.Repositories;
|
||||
using MyCode.Project.Infrastructure.Common;
|
||||
using MyCode.Project.Infrastructure.WebPost;
|
||||
using MyCode.Project.OutSideService;
|
||||
using MyCode.Project.Repositories;
|
||||
using Senparc.CO2NET.Exceptions;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Net;
|
||||
using System.Security.Policy;
|
||||
using System.Threading;
|
||||
using System.Xml.Linq;
|
||||
|
||||
namespace MyCode.Project.Services.Implementation
|
||||
@@ -18,555 +24,118 @@ namespace MyCode.Project.Services.Implementation
|
||||
public class StaffDataEnterpriseWechatService : ServiceBase , IStaffDataEnterpriseWechatService
|
||||
{
|
||||
private IWorkProcessService _workProcessService;
|
||||
private ITBASSYSPARAMETERRepository _tBASSYSPARAMETERRepository;
|
||||
private readonly IEnterpriseWechatService _enterpriseWechatService;
|
||||
private IBasDepartmentRepository _basDepartmentRepository;
|
||||
private IBasEmployeeRepository _basEmployeeRepository;
|
||||
private IBasEmployeeDepartRepository _basEmployeeDepartRepository;
|
||||
private ITBDDEPARTMENTLRepository _tBDDEPARTMENTLRepository;
|
||||
private IRpEmployeeDepartLogRepository _rpEmployeeDepartLogRepository;
|
||||
|
||||
private ITBDStaffDataLRepository _tBDStaffDataLRepository;
|
||||
private ITBDStaffDataRepository _tBDStaffDataRepository;
|
||||
private ITUserLoginParameterRepository _tUserLoginParameterRepository;
|
||||
|
||||
private static object locker = new object(); //创建锁
|
||||
public StaffDataEnterpriseWechatService(IWorkProcessService workProcessService
|
||||
, ITBASSYSPARAMETERRepository tBASSYSPARAMETERRepository
|
||||
,IBasDepartmentRepository basDepartmentRepository
|
||||
, IBasEmployeeRepository basEmployeeRepository
|
||||
, IBasEmployeeDepartRepository basEmployeeDepartRepository
|
||||
, ITBDDEPARTMENTLRepository tBDDEPARTMENTLRepository
|
||||
, IRpEmployeeDepartLogRepository rpEmployeeDepartLogRepository
|
||||
|
||||
, ITBDStaffDataLRepository tBDStaffDataLRepository
|
||||
, ITBDStaffDataRepository tBDStaffDataRepository
|
||||
, ITUserLoginParameterRepository tUserLoginParameterRepository
|
||||
, IEnterpriseWechatService enterpriseWechatService)
|
||||
{
|
||||
_workProcessService = workProcessService;
|
||||
_tBASSYSPARAMETERRepository = tBASSYSPARAMETERRepository;
|
||||
_basEmployeeRepository = basEmployeeRepository;
|
||||
_basDepartmentRepository = basDepartmentRepository;
|
||||
_basEmployeeDepartRepository = basEmployeeDepartRepository;
|
||||
_enterpriseWechatService = enterpriseWechatService;
|
||||
_tBDDEPARTMENTLRepository = tBDDEPARTMENTLRepository;
|
||||
_rpEmployeeDepartLogRepository = rpEmployeeDepartLogRepository;
|
||||
_tBDStaffDataLRepository = tBDStaffDataLRepository;
|
||||
_tUserLoginParameterRepository = tUserLoginParameterRepository;
|
||||
_tBDStaffDataLRepository = tBDStaffDataLRepository;
|
||||
_tBDStaffDataRepository = tBDStaffDataRepository;
|
||||
}
|
||||
|
||||
DateTime now = DateTime.Now;
|
||||
#region 初始化 公司-部门列表
|
||||
|
||||
/// <summary>
|
||||
/// 初始化 公司-部门列表【后端测试用】
|
||||
/// 定时获取用户登录参数
|
||||
/// </summary>
|
||||
/// <param name="query"></param>
|
||||
public void InitDepartment()
|
||||
public void TaskGetPasswordData()
|
||||
{
|
||||
//var config = _companyConfigService.GetCompanyConfig(login.CompanyId);
|
||||
var configList = _tBASSYSPARAMETERRepository.Queryable().Where(t=>t.FPARAMETEROBJID== "GAT_HR_AbutmentParameter").ToList();
|
||||
|
||||
configList.ForEach(SysParameter =>
|
||||
{
|
||||
WechatSysParameter config = new WechatSysParameter();
|
||||
if (!string.IsNullOrWhiteSpace(SysParameter.FPARAMETERS))
|
||||
{
|
||||
try
|
||||
{
|
||||
|
||||
XDocument xdoc = XDocument.Parse(SysParameter.FPARAMETERS);
|
||||
|
||||
// 使用 LINQ to XML 查询所有的 <name> 元素
|
||||
var FCorpid = xdoc.Descendants("FCorpid").FirstOrDefault();
|
||||
var FCorpsecret = xdoc.Descendants("FCorpsecret").FirstOrDefault();
|
||||
|
||||
config.FAppid = FCorpid.Value;
|
||||
config.FSecret = FCorpsecret.Value;
|
||||
}
|
||||
catch
|
||||
{
|
||||
return;
|
||||
}
|
||||
var infoList = _enterpriseWechatService.GetDepartmentList("", config.FAppid, config.FSecret);
|
||||
var ids = infoList.Select(x => long.Parse(x.Id.ToString())).ToList();
|
||||
var existsDepartList = _basDepartmentRepository.Queryable().Where(x => 1 == 1).ToList();
|
||||
//_repository.UpdateQueue<BasDepartment>(x=>new BasDepartment { IsDelete=1},x=> x.IsDelete == 0 && x.CompanyId == login.CompanyId && !ids.Contains(x.Id));
|
||||
List<BasDepartment> addList = new List<BasDepartment>();
|
||||
infoList.ForEach(x =>
|
||||
{
|
||||
var info = existsDepartList.Where(p => p.WeChatId == x.Id).FirstOrDefault();
|
||||
if (info == null)
|
||||
{
|
||||
BasDepartment depart = new BasDepartment();
|
||||
depart.Id = Guid.NewGuid();
|
||||
depart.WeChatId = x.Id;
|
||||
depart.Name = x.Name;
|
||||
depart.OrderNum = x.Order;
|
||||
depart.WeChatIdParentId = x.Parentid;
|
||||
addList.Add(depart);
|
||||
}
|
||||
else
|
||||
{
|
||||
now = now.AddSeconds(1);
|
||||
_basDepartmentRepository.Update(p => new BasDepartment { Name = x.Name, OrderNum = x.Order, WeChatIdParentId = long.Parse(x.Parentid.ToString()), EditTime = now }, p => p.WeChatId == x.Id);
|
||||
|
||||
}
|
||||
|
||||
InitEmployee(config, x.Id);//员工列表
|
||||
|
||||
|
||||
if (x.ListChild.Count() > 0)
|
||||
{
|
||||
addList.AddRange(SetChild(x.ListChild, existsDepartList, config));
|
||||
}
|
||||
});
|
||||
if (addList.Count() > 0)
|
||||
_basDepartmentRepository.Add(addList);
|
||||
|
||||
|
||||
InitEmployeeInfo(config);//完善员工详情
|
||||
|
||||
//部门与员工的关系
|
||||
SetEmployeeDepart(config);
|
||||
_workProcessService.Add<IStaffDataEnterpriseWechatService>(this.MerchantId, "AddWechatVSKingDeeJob", "创建需要比对的数据任务", "", 2);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public List<BasDepartment> SetChild(List<DepartmentHasChild> listChild, List<BasDepartment> existsDepartList, WechatSysParameter config)
|
||||
{
|
||||
List<BasDepartment> addList = new List<BasDepartment>();
|
||||
List<long> dropList = new List<long>();
|
||||
var childids = listChild.Select(x => long.Parse(x.Id.ToString())).ToList();
|
||||
listChild.ForEach(t => {
|
||||
var info = existsDepartList.Where(p => p.WeChatId == t.Id).FirstOrDefault();
|
||||
var drop = existsDepartList.Where(x => x.WeChatIdParentId == t.Parentid && !childids.Contains(x.WeChatId.Value)).Select(x => x.WeChatId.Value).FirstOrDefault();
|
||||
if (drop > 0)
|
||||
dropList.Add(drop);
|
||||
if (info == null)
|
||||
{
|
||||
BasDepartment depart = new BasDepartment();
|
||||
depart.Id = Guid.NewGuid();
|
||||
depart.WeChatId = t.Id;
|
||||
depart.Name = t.Name;
|
||||
depart.OrderNum = t.Order;
|
||||
depart.WeChatIdParentId = t.Parentid;
|
||||
depart.EditTime = DateTime.Now;
|
||||
addList.Add(depart);
|
||||
}
|
||||
else
|
||||
{
|
||||
now = now.AddSeconds(1);
|
||||
_basDepartmentRepository.Update(p => new BasDepartment { Name = t.Name, OrderNum = t.Order, WeChatIdParentId =long.Parse( t.Parentid.ToString()), EditTime = now }, p => p.WeChatId == t.Id);
|
||||
}
|
||||
if (t.ListChild.Count() > 0)
|
||||
{
|
||||
addList.AddRange(SetChild(t.ListChild, existsDepartList, config));
|
||||
}
|
||||
});
|
||||
//已删掉的部门
|
||||
_basDepartmentRepository.Delete( x => dropList.Contains(x.WeChatId.Value));
|
||||
return addList;
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region 初始化 公司-公司-员工列表【后端测试用】
|
||||
/// <summary>
|
||||
/// 初始化 公司-公司-员工列表【后端测试用】
|
||||
/// </summary>
|
||||
/// <param name="query"></param>
|
||||
public void InitEmployee(WechatSysParameter config ,int departid)
|
||||
{
|
||||
|
||||
var infoList = _enterpriseWechatService.GetDepartmentMemberList("", departid, config.FAppid, config.FSecret, 1);
|
||||
var existsempIds = _basEmployeeRepository.Queryable().Where(x => 1==1).Select(x => x.UserId).ToList();
|
||||
List<BasEmployee> addList = new List<BasEmployee>();
|
||||
infoList.Where(x => !existsempIds.Contains(x.Userid)).ToList().ForEach(x =>
|
||||
{
|
||||
BasEmployee employee = new BasEmployee();
|
||||
employee.ID = Guid.NewGuid();
|
||||
employee.UserId = x.Userid;
|
||||
employee.Name = EncryptHelper.Base64Encrypt(x.Name);
|
||||
|
||||
employee.EditTime = DateTime.Now;
|
||||
|
||||
addList.Add(employee);
|
||||
});
|
||||
if (addList.Count() > 0)
|
||||
_basEmployeeRepository.Add(addList);
|
||||
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region 初始化 完善员工详情
|
||||
/// <summary>
|
||||
/// 初始化 完善员工详情【后端测试用】
|
||||
/// </summary>
|
||||
public void InitEmployeeInfo(WechatSysParameter config)
|
||||
{
|
||||
|
||||
var empList = _basEmployeeRepository.Queryable().Where(x => 1==1).Select(x => x.UserId).ToList();
|
||||
empList.ForEach(x =>
|
||||
{
|
||||
var info = _enterpriseWechatService.GetEmployeeInfo(x, config.FAppid, config.FSecret);
|
||||
if (info.Errcode == 60111)
|
||||
{
|
||||
now = now.AddSeconds(1);
|
||||
_basEmployeeRepository.Update(t => new BasEmployee
|
||||
{
|
||||
IsDelete = 1,
|
||||
|
||||
EditTime = now
|
||||
}, t => t.UserId == x );
|
||||
}
|
||||
else
|
||||
{
|
||||
now = now.AddSeconds(1);
|
||||
var openid = _enterpriseWechatService.GetOpenidByUserid(x, config.FAppid, config.FSecret);
|
||||
_basEmployeeRepository.Update(t => new BasEmployee
|
||||
{
|
||||
Name = EncryptHelper.Base64Encrypt(info.name),
|
||||
Nick = info.name,
|
||||
Alias = info.alias,
|
||||
Gender = info.gender,
|
||||
Mobile = info.mobile,
|
||||
Position = info.position,
|
||||
Avatar = info.avatar,
|
||||
ThumbAvatar = info.thumb_avatar,
|
||||
Email = info.email,
|
||||
Status = info.status,
|
||||
OpenUserid = openid.openid,
|
||||
EditTime = now
|
||||
}, t => t.UserId == x);
|
||||
}
|
||||
});
|
||||
string url = $@"http://14.21.32.187:9090/K3Cloud/G_HRApi.Staff.StaffData.GetPasswordData.ExecuteService,G-HRApi.common.kdsvc";
|
||||
PostModel1 postModel1 = new PostModel1();
|
||||
postModel1.DBID = "5dc0f25110f625";
|
||||
postModel1.KEY = "95F80245-F905-4472-A319-008682087E02";
|
||||
WebUtils webUtility = new WebUtils();
|
||||
string json = JsonHelper.ToJson(postModel1);
|
||||
Dictionary<string, string> keyValuePairs = new Dictionary<string, string>();
|
||||
keyValuePairs.Add("Data", json);
|
||||
json = JsonHelper.ToJson(keyValuePairs);
|
||||
LogHelper.Info(json);
|
||||
var re=webUtility.DoPostJson(url, json);
|
||||
|
||||
}
|
||||
#endregion
|
||||
|
||||
|
||||
#region 初始化 部门与员工的关系
|
||||
/// <summary>
|
||||
/// 初始化 部门与员工的关系
|
||||
/// </summary>
|
||||
/// <param name="login"></param>
|
||||
public void SetEmployeeDepart(WechatSysParameter config)
|
||||
{
|
||||
|
||||
var departList = _basDepartmentRepository.Queryable().Where(x => 1 == 1).ToList();
|
||||
var employeeList = _basEmployeeRepository.Queryable().Where(x => 1 == 1).Select(x => new { x.ID, x.UserId ,x.Nick,x.OpenUserid}).ToList();
|
||||
var empShipList = _basEmployeeDepartRepository.Queryable().Where(x => 1==1).ToList();
|
||||
List<BasEmployeeDepart> emdepartList = new List<BasEmployeeDepart>();
|
||||
departList.ForEach(x =>
|
||||
LogHelper.Info(re);
|
||||
var result = JsonHelper.ToObject<DeMiResp>(re);
|
||||
if (result.Result.IsSuccess == "true")
|
||||
{
|
||||
//获取目前部门的员工数据
|
||||
var empShip = empShipList.Where(p => p.DepartmentId == x.Id).ToList();
|
||||
//与同步过来后部门的员工数据对比
|
||||
var infoList = _enterpriseWechatService.GetDepartmentMemberList("", x.WeChatId.Value, config.FAppid, config.FSecret);
|
||||
var userids = empShip.Select(p => p.EmployeeUserId.Trim()).ToList();
|
||||
//新的关系则新增
|
||||
infoList.ForEach(t =>
|
||||
{
|
||||
var em = employeeList.Where(f => f.UserId.Trim() == t.Userid.Trim()).FirstOrDefault();
|
||||
if (em != null)
|
||||
{
|
||||
BasEmployeeDepart item = new BasEmployeeDepart();
|
||||
item.Id =Guid.NewGuid();
|
||||
item.DepartmentId = x.Id;
|
||||
item.EmployeeId = em.ID;
|
||||
item.EmployeeUserId = t.Userid;
|
||||
item.KDepartementId = -1;
|
||||
item.WechatDepartName = x.Name;
|
||||
item.Nick = em.Nick;
|
||||
item.OpenId = em.OpenUserid;
|
||||
if (x.WeChatIdParentId > 1)
|
||||
{
|
||||
var pDept = departList.Where(s => s.WeChatId == x.WeChatIdParentId).FirstOrDefault();
|
||||
if (pDept != null)
|
||||
{
|
||||
item.WechatDepartName = pDept.Name + "-" + item.WechatDepartName;
|
||||
if (pDept.WeChatIdParentId > 1)
|
||||
{
|
||||
pDept = departList.Where(s => s.WeChatId == pDept.WeChatIdParentId).FirstOrDefault();
|
||||
if (pDept != null)
|
||||
{
|
||||
item.WechatDepartName = pDept.Name + "-" + item.WechatDepartName;
|
||||
if (pDept.WeChatIdParentId > 1)
|
||||
{
|
||||
pDept = departList.Where(s => s.WeChatId == pDept.WeChatIdParentId).FirstOrDefault();
|
||||
if (pDept != null)
|
||||
{
|
||||
item.WechatDepartName = pDept.Name + "-" + item.WechatDepartName;
|
||||
if (pDept.WeChatIdParentId > 0)
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
emdepartList.Add(item);
|
||||
}
|
||||
});
|
||||
////已更换部门的员工则修改为删除状态
|
||||
//var infoUserIds = infoList.Select(p => p.Userid).ToList();
|
||||
//var upUserids = empShip.Where(p => !infoUserIds.Contains(p.EmployeeUserId)).Select(p => p.EmployeeUserId).ToList();
|
||||
//if (upUserids.Count() > 0)
|
||||
// _basEmployeeDepartRepository.Delete( p => p.DepartmentId == x.Id && upUserids.Contains(p.EmployeeUserId));
|
||||
});
|
||||
if (emdepartList.Count() > 0)
|
||||
{
|
||||
_basEmployeeDepartRepository.Delete(t=>1==1);
|
||||
_basEmployeeDepartRepository.Add(emdepartList);
|
||||
}
|
||||
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region AddWechatVSKingDeeJob(创建需要比对的数据任务)
|
||||
/// <summary>
|
||||
/// 创建需要比对的数据任务
|
||||
/// </summary>
|
||||
public void AddWechatVSKingDeeJob()
|
||||
{
|
||||
var list = _basEmployeeDepartRepository.Queryable().Where(t => 1 == 1).ToList();
|
||||
List<RpEmployeeDepartLog> addList = new List<RpEmployeeDepartLog>();
|
||||
list.ForEach(t =>
|
||||
{
|
||||
t.Status = 0;
|
||||
t.OpenIdStatus = 0;
|
||||
t.DepartStatus = 0;
|
||||
RpEmployeeDepartLog temp = new RpEmployeeDepartLog();
|
||||
temp.Id = Guid.NewGuid();
|
||||
temp.Nick = t.Nick;
|
||||
temp.CreateTime = DateTime.Now;
|
||||
temp.WechatDepartmentId = t.WechatDepartmentId;
|
||||
temp.WechatDepartName = t.WechatDepartName;
|
||||
temp.EmployeeId = t.EmployeeId;
|
||||
temp.EmployeeUserId = t.EmployeeUserId;
|
||||
temp.OpenId = t.OpenId;
|
||||
temp.Status = 0;
|
||||
temp.OpenIdStatus = 0;
|
||||
temp.DepartStatus = 0;
|
||||
addList.Add(temp);
|
||||
});
|
||||
_basEmployeeDepartRepository.Update(list);
|
||||
if (addList.Count > 0)
|
||||
_rpEmployeeDepartLogRepository.Add(addList);
|
||||
string now = DateTime.Now.ToString("yyyyMMdd");
|
||||
string lastMonth = DateTime.Now.AddMonths(-1).ToString("yyyyMMdd");
|
||||
string sql = $@"
|
||||
IF EXISTS (
|
||||
SELECT 1
|
||||
FROM INFORMATION_SCHEMA.TABLES
|
||||
WHERE TABLE_SCHEMA = 'dbo'
|
||||
AND TABLE_NAME = 'T_BD_StaffData{now}'
|
||||
)
|
||||
BEGIN
|
||||
PRINT '表 T_BD_StaffData{now} 存在';
|
||||
END
|
||||
ELSE
|
||||
BEGIN
|
||||
select * into T_BD_StaffData{now} from T_BD_StaffData
|
||||
END;
|
||||
|
||||
IF EXISTS (
|
||||
SELECT 1
|
||||
FROM INFORMATION_SCHEMA.TABLES
|
||||
WHERE TABLE_SCHEMA = 'dbo'
|
||||
AND TABLE_NAME = 'T_BD_StaffData{lastMonth}'
|
||||
)
|
||||
BEGIN
|
||||
drop table T_BD_StaffData{lastMonth};
|
||||
END;
|
||||
";
|
||||
_rpEmployeeDepartLogRepository.ExecuteSqlCommand(sql);
|
||||
_workProcessService.Add<IStaffDataEnterpriseWechatService>(this.MerchantId, "RunWechatVSKingDee", "执行需要比对的数据任务", "", 2);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
|
||||
#region RunWechatVSKingDee(执行需要比对的数据任务)
|
||||
/// <summary>
|
||||
/// 执行需要比对的数据任务
|
||||
/// </summary>
|
||||
public void RunWechatVSKingDee()
|
||||
{
|
||||
try
|
||||
{
|
||||
var allKingDepet = _tBDDEPARTMENTLRepository.Queryable().Where(t => 1 == 1).ToList();
|
||||
var allKingEmployeeL = _tBDStaffDataLRepository.Queryable().Where(t => 1 == 1).ToList();
|
||||
var allKingEmployee = _tBDStaffDataRepository.Queryable().Where(t => 1 == 1).ToList();
|
||||
var list = _rpEmployeeDepartLogRepository.Queryable().Where(t => t.Status == 0).OrderBy(t => t.SortNum).Take(1000).ToList();
|
||||
List<RpEmployeeDepartLog> addList = new List<RpEmployeeDepartLog>();
|
||||
var list = result.Result.Data.Item;
|
||||
var oldList = _tUserLoginParameterRepository.Queryable().Where(t => 1 == 1).ToList();
|
||||
list.ForEach(t =>
|
||||
{
|
||||
//执行结果 -1=金蝶未找到员工 0=未开始 3=名字重复且部门无法匹配 100=更新完毕
|
||||
int status = 0;
|
||||
var KingEmployeeL = allKingEmployeeL.Where(h => h.FNAME.Trim() == t.Nick.Trim()).ToList();
|
||||
if (KingEmployeeL.Count == 0)
|
||||
int add = 0;
|
||||
var one = oldList.Where(h => h.FPHONE == t.FPHONE).FirstOrDefault();
|
||||
if (one == null)
|
||||
{
|
||||
status = -1;
|
||||
add = 1;
|
||||
one = new T_UserLogin_Parameter();
|
||||
one.FPHONE = t.FPHONE;
|
||||
}
|
||||
one.DBID = postModel1.DBID;
|
||||
one.FPASSWORD = t.FPASSWORD;
|
||||
one.Status = 1;
|
||||
one.EditTime = DateTime.Now;
|
||||
one.KEY1= "95F80245-F905-4472-A319-008682087E02";
|
||||
if (add == 0)
|
||||
_tUserLoginParameterRepository.Update(one);
|
||||
else
|
||||
{
|
||||
//1 先找同名的人
|
||||
//2 如果有超过1个同名人,则找相同部门
|
||||
if (KingEmployeeL.Count == 1)
|
||||
{
|
||||
var tempOne = KingEmployeeL.FirstOrDefault();
|
||||
var KingEmployee = allKingEmployee.FirstOrDefault(h => h.FID == tempOne.FID);
|
||||
t.FID = KingEmployee.FID;
|
||||
|
||||
if (KingEmployee.FWECOMID != t.OpenId)
|
||||
{
|
||||
|
||||
t.FWECOMID = KingEmployee.FWECOMID;
|
||||
t.OpenIdStatus = 1;
|
||||
KingEmployee.FWECOMID = t.OpenId;
|
||||
_tBDStaffDataRepository.Update(KingEmployee);
|
||||
}
|
||||
else
|
||||
{
|
||||
t.OpenIdStatus = 100;
|
||||
}
|
||||
var KingDepart = allKingDepet.FirstOrDefault(h => h.FDEPTID == KingEmployee.FDEPARTMENTID);
|
||||
if (KingDepart != null)
|
||||
{
|
||||
t.KDName = KingDepart.FNAME;
|
||||
t.KDepartementId = KingDepart.FDEPTID;
|
||||
if (KingDepart.FNAME != t.WechatDepartName)
|
||||
{
|
||||
|
||||
t.DepartStatus = 1;
|
||||
}
|
||||
else
|
||||
t.DepartStatus = 100;
|
||||
}
|
||||
else
|
||||
{
|
||||
t.KDName = "无部门";
|
||||
t.DepartStatus = 1;
|
||||
}
|
||||
|
||||
status = 100;
|
||||
}
|
||||
else if (KingEmployeeL.Count > 1)
|
||||
{
|
||||
var FIDList = KingEmployeeL.Select(h => h.FID).ToList();
|
||||
var tempKingEmployee = allKingEmployee.Where(h => FIDList.Contains(h.FID)).ToList();
|
||||
var tempDepartIdList = tempKingEmployee.Select(h => h.FDEPARTMENTID).ToList();
|
||||
var tempKingDepet = allKingDepet.Where(h => tempDepartIdList.Contains(h.FDEPTID)).ToList();
|
||||
var rightKingDepet = tempKingDepet.Where(h => h.FNAME == t.WechatDepartName).FirstOrDefault();
|
||||
if (rightKingDepet == null) //多人同名但是部门无法匹配
|
||||
{
|
||||
t.KDName = string.Join(",", tempKingDepet.Select(h => h.FNAME).ToList());
|
||||
var zaiZhiEmployeel = tempKingEmployee.Where(h => h.FEMPLOYEESTATUSID !=null &&h.FEMPLOYEESTATUSID.ToLower() != ("646b0211707080").ToLower()
|
||||
&& FIDList.Contains(h.FID)).ToList();
|
||||
if (zaiZhiEmployeel.Count == 1)
|
||||
{
|
||||
t.DepartStatus = 1;
|
||||
var tempOne = zaiZhiEmployeel.FirstOrDefault();
|
||||
var KingEmployee = allKingEmployee.FirstOrDefault(h => h.FID == tempOne.FID);
|
||||
t.FID = KingEmployee.FID;
|
||||
|
||||
if (KingEmployee.FWECOMID != t.OpenId)
|
||||
{
|
||||
t.FWECOMID = KingEmployee.FWECOMID;
|
||||
t.OpenIdStatus = 1;
|
||||
KingEmployee.FWECOMID = t.OpenId;
|
||||
_tBDStaffDataRepository.Update(KingEmployee);
|
||||
}
|
||||
else
|
||||
{
|
||||
t.OpenIdStatus = 100;
|
||||
}
|
||||
var KingDepart = allKingDepet.FirstOrDefault(h => h.FDEPTID == KingEmployee.FDEPARTMENTID);
|
||||
if (KingDepart != null)
|
||||
{
|
||||
t.KDName = KingDepart.FNAME;
|
||||
t.KDepartementId = KingDepart.FDEPTID;
|
||||
if (KingDepart.FNAME != t.WechatDepartName)
|
||||
{
|
||||
|
||||
t.DepartStatus = 1;
|
||||
}
|
||||
else
|
||||
t.DepartStatus = 100;
|
||||
}
|
||||
else
|
||||
{
|
||||
t.KDName = "无部门";
|
||||
t.DepartStatus = 1;
|
||||
}
|
||||
|
||||
status = 100;
|
||||
}
|
||||
else
|
||||
{
|
||||
t.DepartStatus = 1;
|
||||
status = 3;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
t.KDName = rightKingDepet.FNAME;
|
||||
t.KDepartementId = rightKingDepet.FDEPTID;
|
||||
t.DepartStatus = 100;
|
||||
var rightKingEmployee = tempKingEmployee.FirstOrDefault(h => h.FDEPARTMENTID == rightKingDepet.FDEPTID);
|
||||
if (rightKingEmployee.FWECOMID != t.OpenId)
|
||||
{
|
||||
t.FWECOMID = rightKingEmployee.FWECOMID;
|
||||
t.OpenIdStatus = 1;
|
||||
rightKingEmployee.FWECOMID = t.OpenId;
|
||||
_tBDStaffDataRepository.Update(rightKingEmployee);
|
||||
}
|
||||
else
|
||||
{
|
||||
t.OpenIdStatus = 100;
|
||||
}
|
||||
status = 100;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
t.Status = status;
|
||||
var employeeDepart = _basEmployeeDepartRepository.Queryable().Where(h => h.EmployeeUserId == t.EmployeeUserId).First();
|
||||
employeeDepart.Status = t.Status;
|
||||
employeeDepart.OpenIdStatus = t.OpenIdStatus;
|
||||
employeeDepart.DepartStatus = t.DepartStatus;
|
||||
t.EditTime = DateTime.Now;
|
||||
_basEmployeeDepartRepository.Update(employeeDepart);
|
||||
_rpEmployeeDepartLogRepository.Update(t);
|
||||
|
||||
_tUserLoginParameterRepository.Add(one);
|
||||
});
|
||||
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
throw new BaseException(ex.Message);
|
||||
}
|
||||
finally
|
||||
{
|
||||
if (_rpEmployeeDepartLogRepository.IsExist(t => t.Status == 0))
|
||||
{
|
||||
_workProcessService.Add<IStaffDataEnterpriseWechatService>(this.MerchantId, "RunWechatVSKingDee", "执行需要比对的数据任务", "", 2);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
//_workProcessService.Add<IStaffDataEnterpriseWechatService>(this.MerchantId, "InitDepartment", "刷企业微信数据", "", 2);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
/// <summary>
|
||||
/// 定时任务刷微信OPENID
|
||||
/// 调度定时登录账号信息
|
||||
/// </summary>
|
||||
public void TaskAddOpenIdJob()
|
||||
public void TaskGetUserByAccount()
|
||||
{
|
||||
_workProcessService.Add<IStaffDataEnterpriseWechatService>(this.MerchantId, "InitDepartment", "刷企业微信数据", "", 2);
|
||||
string url = $@"http://14.21.32.187:9090/K3Cloud/G_HRApi.GetUserByAccount.ExecuteService,G-HRApi.common.kdsvc";
|
||||
PostModel1 postModel1 = new PostModel1();
|
||||
postModel1.DBID = "5dc0f25110f625";
|
||||
postModel1.KEY = "95F80245-F905-4472-A319-008682087E02";
|
||||
|
||||
WebUtils webUtility = new WebUtils();
|
||||
string json = JsonHelper.ToJson(postModel1);
|
||||
var list = _tUserLoginParameterRepository.Queryable().Where(t => t.FPHONE != "").ToList();
|
||||
list.ForEach(t =>
|
||||
{
|
||||
var JsonString = new
|
||||
{
|
||||
Data = new
|
||||
{
|
||||
DBID = postModel1.DBID,
|
||||
userName = t.FPHONE,
|
||||
HashPassword = t.FPASSWORD,
|
||||
IFTaskLogin=1
|
||||
}
|
||||
};
|
||||
json = JsonHelper.ToJson(JsonString);
|
||||
LogHelper.Info(json);
|
||||
var re = webUtility.DoPostJson(url, json);
|
||||
LogHelper.Info(re);
|
||||
var result = JsonHelper.ToObject<DeMiResp>(re);
|
||||
t.Response = re;
|
||||
if (result.Result.IsSuccess == "true")
|
||||
{
|
||||
t.LoginStatus = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
t.LoginStatus = 0;
|
||||
}
|
||||
t.LoginEditTime = DateTime.Now;
|
||||
_tUserLoginParameterRepository.Update(t);
|
||||
Thread.Sleep(300);
|
||||
});
|
||||
//_workProcessService.Add<IStaffDataEnterpriseWechatService>(this.MerchantId, "InitDepartment", "刷企业微信数据", "", 2);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -162,8 +162,10 @@
|
||||
</Reference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="Implementation\StaffData\StaffDataEnterpriseWechatService.cs" />
|
||||
<Compile Include="Implementation\WorkProcess\WorkProcessService.cs" />
|
||||
<Compile Include="IServices\ICheckTokenService.cs" />
|
||||
<Compile Include="IServices\IStaffDataEnterpriseWechatService.cs" />
|
||||
<Compile Include="IServices\IWorkProcessService.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<Compile Include="ServiceBase.cs" />
|
||||
|
||||
Reference in New Issue
Block a user