This commit is contained in:
2025-07-02 20:12:08 +08:00
parent 27b0099074
commit a6729f3c10
6 changed files with 95 additions and 25 deletions

View File

@@ -20,10 +20,18 @@ namespace MyCode.Project.Domain.Model
/// Default: /// Default:
/// Nullable:False /// Nullable:False
/// </summary> /// </summary>
public string Request {get;set;} [SugarColumn(IsPrimaryKey=true,IsIdentity=true)]
public int Id {get;set;}
/// <summary> /// <summary>
/// Desc: /// Desc:
/// Default:
/// Nullable:False
/// </summary>
public string Request {get;set;}
/// <summary>
/// Desc:运行状态 0=未运行 1=运行中 2=运行成功 3=失败
/// Default:0 /// Default:0
/// Nullable:False /// Nullable:False
/// </summary> /// </summary>
@@ -36,5 +44,12 @@ namespace MyCode.Project.Domain.Model
/// </summary> /// </summary>
public string ExceptionInfo {get;set;} public string ExceptionInfo {get;set;}
/// <summary>
/// Desc:刷新登录参数的时间
/// Default:DateTime.Now
/// Nullable:True
/// </summary>
public DateTime? EditTime {get;set;}
} }
} }

View File

@@ -1,12 +1,12 @@
<?xml version="1.0" encoding="utf-8" ?> <?xml version="1.0" encoding="utf-8" ?>
<Jobs> <Jobs>
<job name="EveryTimeJob" desc="每3秒执行调度" enabled="true" type="MyCode.Project.ScheduleTask.Jobs.EveryJob,MyCode.Project.ScheduleTask" CronExpression="*/3 * * * * ?" /> <job name="EveryTimeJob" desc="每1分钟执行调度" enabled="true" type="MyCode.Project.ScheduleTask.Jobs.EveryJob,MyCode.Project.ScheduleTask" CronExpression="0 */1 * * * ?" />
<job name="EveryPriority2Job" desc="每30秒执行调度" enabled="true" type="MyCode.Project.ScheduleTask.Jobs.EveryPriority2Job,MyCode.Project.ScheduleTask" CronExpression="*/2 * * * * ?" /> <job name="EveryPriority2Job" desc="每30秒执行调度" enabled="true" type="MyCode.Project.ScheduleTask.Jobs.EveryPriority2Job,MyCode.Project.ScheduleTask" CronExpression="*/30 * * * * ?" />
<job name="EveryOtherJob" desc="每60秒执行调度" enabled="true" type="MyCode.Project.ScheduleTask.Jobs.EveryOtherJob,MyCode.Project.ScheduleTask" CronExpression="0 */1 * * * ?" /> <job name="EveryOtherJob" desc="每60秒执行调度" enabled="true" type="MyCode.Project.ScheduleTask.Jobs.EveryOtherJob,MyCode.Project.ScheduleTask" CronExpression="0 */1 * * * ?" />
<job name="EveryMinuteJob" desc="每1分钟执行调度" enabled="true" type="MyCode.Project.ScheduleTask.Jobs.EveryMinuteJob,MyCode.Project.ScheduleTask" CronExpression="0 */1 * * * ?" />
<job name="OpenIdJob" desc="半夜1点创建刷OPENID任务" enabled="true" type="MyCode.Project.ScheduleTask.Jobs.NinePMTimeJob,MyCode.Project.ScheduleTask" CronExpression="0 0 1 * * ?" /> <job name="NinePMTimeJob" desc="半夜1点创建登录信息" enabled="true" type="MyCode.Project.ScheduleTask.Jobs.NinePMTimeJob,MyCode.Project.ScheduleTask" CronExpression="0 0 1 * * ?" />
</Jobs> </Jobs>

View File

@@ -15,21 +15,21 @@ using System.Threading;
namespace MyCode.Project.ScheduleTask.Jobs namespace MyCode.Project.ScheduleTask.Jobs
{ {
public class EveryFiveMinuteJob : IJob public class EveryMinuteJob : IJob
{ {
private IReport2308Service _report2308Service; private IStaffDataEnterpriseWechatService _staffDataEnterpriseWechatService;
public EveryFiveMinuteJob(IReport2308Service report2308Service) public EveryMinuteJob(IStaffDataEnterpriseWechatService staffDataEnterpriseWechatService)
{ {
_report2308Service = report2308Service; _staffDataEnterpriseWechatService = staffDataEnterpriseWechatService;
} }
public void Execute(IJobExecutionContext context) public void Execute(IJobExecutionContext context)
{ {
_report2308Service.EveryFiveMinuteJob(); _staffDataEnterpriseWechatService.TaskAttendanceRequest();
} }
} }
} }

View File

@@ -93,6 +93,7 @@
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Compile Include="JobsHelp.cs" /> <Compile Include="JobsHelp.cs" />
<Compile Include="Jobs\EveryMinuteJob.cs" />
<Compile Include="Jobs\EveryPriority2Job.cs" /> <Compile Include="Jobs\EveryPriority2Job.cs" />
<Compile Include="Jobs\EveryOtherJob.cs" /> <Compile Include="Jobs\EveryOtherJob.cs" />
<Compile Include="Jobs\NinePMTimeJob.cs" /> <Compile Include="Jobs\NinePMTimeJob.cs" />

View File

@@ -20,5 +20,11 @@ namespace MyCode.Project.Services
void TaskGetUserByAccount(); void TaskGetUserByAccount();
void AddTask(); void AddTask();
/// <summary>
/// 定时打卡任务
/// </summary>
void TaskAttendanceRequest();
} }
} }

View File

@@ -8,12 +8,14 @@ using MyCode.Project.Infrastructure.WebPost;
using MyCode.Project.OutSideService; using MyCode.Project.OutSideService;
using MyCode.Project.Repositories; using MyCode.Project.Repositories;
using Senparc.CO2NET.Exceptions; using Senparc.CO2NET.Exceptions;
using Senparc.Weixin.MP.Entities.Request;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Net; using System.Net;
using System.Security.Policy; using System.Security.Policy;
using System.Threading; using System.Threading;
using System.Web.Helpers;
using System.Xml.Linq; using System.Xml.Linq;
namespace MyCode.Project.Services.Implementation namespace MyCode.Project.Services.Implementation
@@ -21,30 +23,36 @@ namespace MyCode.Project.Services.Implementation
/// <summary> /// <summary>
/// 员工档案与企业微信资料 相关服务 /// 员工档案与企业微信资料 相关服务
/// </summary> /// </summary>
public class StaffDataEnterpriseWechatService : ServiceBase , IStaffDataEnterpriseWechatService public class StaffDataEnterpriseWechatService : ServiceBase, IStaffDataEnterpriseWechatService
{ {
private IWorkProcessService _workProcessService; private IWorkProcessService _workProcessService;
private ITBDStaffDataLRepository _tBDStaffDataLRepository; private ITBDStaffDataLRepository _tBDStaffDataLRepository;
private ITBDStaffDataRepository _tBDStaffDataRepository; private ITBDStaffDataRepository _tBDStaffDataRepository;
private ITAttendanceRequestRepository _tAttendanceRequestRepository;
private ITUserLoginParameterRepository _tUserLoginParameterRepository; private ITUserLoginParameterRepository _tUserLoginParameterRepository;
private static object locker = new object(); //创建锁 private static object locker = new object(); //创建锁
public StaffDataEnterpriseWechatService(IWorkProcessService workProcessService public StaffDataEnterpriseWechatService(IWorkProcessService workProcessService
, ITBDStaffDataLRepository tBDStaffDataLRepository , ITBDStaffDataLRepository tBDStaffDataLRepository
, ITBDStaffDataRepository tBDStaffDataRepository , ITBDStaffDataRepository tBDStaffDataRepository
, ITUserLoginParameterRepository tUserLoginParameterRepository , ITUserLoginParameterRepository tUserLoginParameterRepository
, ITAttendanceRequestRepository tAttendanceRequestRepository
, IEnterpriseWechatService enterpriseWechatService) , IEnterpriseWechatService enterpriseWechatService)
{ {
_workProcessService = workProcessService; _workProcessService = workProcessService;
_tUserLoginParameterRepository = tUserLoginParameterRepository; _tUserLoginParameterRepository = tUserLoginParameterRepository;
_tBDStaffDataLRepository = tBDStaffDataLRepository; _tBDStaffDataLRepository = tBDStaffDataLRepository;
_tBDStaffDataRepository = tBDStaffDataRepository; _tBDStaffDataRepository = tBDStaffDataRepository;
_tAttendanceRequestRepository = tAttendanceRequestRepository;
} }
DateTime now = DateTime.Now; DateTime now = DateTime.Now;
/// <summary>
/// 打卡
/// </summary>
public static string _UpdateAttendanceDataUrl = "http://14.21.32.187:9090/K3Cloud/G_HRApi.Attendance.UpdateAttendanceData.ExecuteService,G-HRApi.common.kdsvc";
/// <summary> /// <summary>
/// 定时获取用户登录参数 /// 定时获取用户登录参数
/// </summary> /// </summary>
@@ -60,8 +68,8 @@ namespace MyCode.Project.Services.Implementation
keyValuePairs.Add("Data", json); keyValuePairs.Add("Data", json);
json = JsonHelper.ToJson(keyValuePairs); json = JsonHelper.ToJson(keyValuePairs);
LogHelper.Info(json); LogHelper.Info(json);
var re=webUtility.DoPostJson(url, json); var re = webUtility.DoPostJson(url, json);
LogHelper.Info(re); LogHelper.Info(re);
var result = JsonHelper.ToObject<DeMiResp>(re); var result = JsonHelper.ToObject<DeMiResp>(re);
if (result.Result.IsSuccess == "true") if (result.Result.IsSuccess == "true")
@@ -76,13 +84,13 @@ namespace MyCode.Project.Services.Implementation
{ {
add = 1; add = 1;
one = new T_UserLogin_Parameter(); one = new T_UserLogin_Parameter();
one.FPHONE = t.FPHONE; one.FPHONE = t.FPHONE;
} }
one.DBID = postModel1.DBID; one.DBID = postModel1.DBID;
one.FPASSWORD = t.FPASSWORD; one.FPASSWORD = t.FPASSWORD;
one.Status = 1; one.Status = 1;
one.EditTime = DateTime.Now; one.EditTime = DateTime.Now;
one.KEY1= "95F80245-F905-4472-A319-008682087E02"; one.KEY1 = "95F80245-F905-4472-A319-008682087E02";
if (add == 0) if (add == 0)
_tUserLoginParameterRepository.Update(one); _tUserLoginParameterRepository.Update(one);
else else
@@ -101,7 +109,7 @@ namespace MyCode.Project.Services.Implementation
PostModel1 postModel1 = new PostModel1(); PostModel1 postModel1 = new PostModel1();
postModel1.DBID = "5dc0f25110f625"; postModel1.DBID = "5dc0f25110f625";
postModel1.KEY = "95F80245-F905-4472-A319-008682087E02"; postModel1.KEY = "95F80245-F905-4472-A319-008682087E02";
WebUtils webUtility = new WebUtils(); WebUtils webUtility = new WebUtils();
string json = JsonHelper.ToJson(postModel1); string json = JsonHelper.ToJson(postModel1);
var list = _tUserLoginParameterRepository.Queryable().Where(t => t.FPHONE != "").ToList(); var list = _tUserLoginParameterRepository.Queryable().Where(t => t.FPHONE != "").ToList();
@@ -114,7 +122,7 @@ namespace MyCode.Project.Services.Implementation
DBID = postModel1.DBID, DBID = postModel1.DBID,
userName = t.FPHONE, userName = t.FPHONE,
HashPassword = t.FPASSWORD, HashPassword = t.FPASSWORD,
IFTaskLogin=1 IFTaskLogin = 1
} }
}; };
json = JsonHelper.ToJson(JsonString); json = JsonHelper.ToJson(JsonString);
@@ -135,15 +143,55 @@ namespace MyCode.Project.Services.Implementation
_tUserLoginParameterRepository.Update(t); _tUserLoginParameterRepository.Update(t);
Thread.Sleep(300); Thread.Sleep(300);
}); });
//_workProcessService.Add<IStaffDataEnterpriseWechatService>(this.MerchantId, "InitDepartment", "刷企业微信数据", "", 2); _workProcessService.Add<IStaffDataEnterpriseWechatService>(this.MerchantId, "TaskGetUserByAccount", "调度定时登录账号信息", "", 2);
} }
public void AddTask() public void AddTask()
{ {
_workProcessService.Add<IStaffDataEnterpriseWechatService>(this.MerchantId, "TaskGetPasswordData", "定时获取用户登录参数", "", 2); _workProcessService.Add<IStaffDataEnterpriseWechatService>(this.MerchantId, "TaskGetPasswordData", "定时获取用户登录参数", "", 2);
_workProcessService.Add<IStaffDataEnterpriseWechatService>(this.MerchantId, "TaskGetUserByAccount", "调度定时登录账号信息", "", 2);
}
/// <summary>
/// 定时打卡任务
/// </summary>
public void TaskAttendanceRequest()
{
WebUtils webUtility = new WebUtils();
var list = _tAttendanceRequestRepository.Queryable().Where(t => t.Status == 0).OrderBy(y => y.Id).Take(50).ToList();
list.ForEach(t =>
{
t.Status = 1;
t.EditTime = DateTime.Now;
t.ExceptionInfo = "";
});
_tAttendanceRequestRepository.Update(list);
list.ForEach(t =>
{
LogHelper.Info(t.Request);
var re = webUtility.DoPostJson(_UpdateAttendanceDataUrl, t.Request);
LogHelper.Info(re);
var result = JsonHelper.ToObject<DeMiResp>(re);
if (result.Result.IsSuccess == "true")
{
t.Status = 2;
t.EditTime = DateTime.Now;
t.ExceptionInfo = "";
_tAttendanceRequestRepository.Update(t);
}
else
{
t.Status = 3;
t.EditTime = DateTime.Now;
t.ExceptionInfo = result.Result.ErrorMessage;
_tAttendanceRequestRepository.Update(t);
}
Thread.Sleep(500);
});
} }
} }
} }