From a6729f3c10cf9ff34e173913f40905d460d43a0c Mon Sep 17 00:00:00 2001 From: yuyubo <1870149533@qq.com> Date: Wed, 2 Jul 2025 20:12:08 +0800 Subject: [PATCH] 99 --- .../Model/T_AttendanceRequest.cs | 17 +++- MyCode.Project.ScheduleTask/JobConfig.xml | 8 +- ...veryFiveMinuteJob.cs => EveryMinuteJob.cs} | 10 +-- .../MyCode.Project.ScheduleTask.csproj | 1 + .../IStaffDataEnterpriseWechatService.cs | 6 ++ .../StaffDataEnterpriseWechatService.cs | 78 +++++++++++++++---- 6 files changed, 95 insertions(+), 25 deletions(-) rename MyCode.Project.ScheduleTask/Jobs/{EveryFiveMinuteJob.cs => EveryMinuteJob.cs} (60%) diff --git a/MyCode.Project.Domain/Model/T_AttendanceRequest.cs b/MyCode.Project.Domain/Model/T_AttendanceRequest.cs index c596112..eff2c24 100644 --- a/MyCode.Project.Domain/Model/T_AttendanceRequest.cs +++ b/MyCode.Project.Domain/Model/T_AttendanceRequest.cs @@ -20,10 +20,18 @@ namespace MyCode.Project.Domain.Model /// Default: /// Nullable:False /// - public string Request {get;set;} + [SugarColumn(IsPrimaryKey=true,IsIdentity=true)] + public int Id {get;set;} /// /// Desc: + /// Default: + /// Nullable:False + /// + public string Request {get;set;} + + /// + /// Desc:运行状态 0=未运行 1=运行中 2=运行成功 3=失败 /// Default:0 /// Nullable:False /// @@ -36,5 +44,12 @@ namespace MyCode.Project.Domain.Model /// public string ExceptionInfo {get;set;} + /// + /// Desc:刷新登录参数的时间 + /// Default:DateTime.Now + /// Nullable:True + /// + public DateTime? EditTime {get;set;} + } } diff --git a/MyCode.Project.ScheduleTask/JobConfig.xml b/MyCode.Project.ScheduleTask/JobConfig.xml index f52986b..2ac7df2 100644 --- a/MyCode.Project.ScheduleTask/JobConfig.xml +++ b/MyCode.Project.ScheduleTask/JobConfig.xml @@ -1,12 +1,12 @@  - - + + - + - + diff --git a/MyCode.Project.ScheduleTask/Jobs/EveryFiveMinuteJob.cs b/MyCode.Project.ScheduleTask/Jobs/EveryMinuteJob.cs similarity index 60% rename from MyCode.Project.ScheduleTask/Jobs/EveryFiveMinuteJob.cs rename to MyCode.Project.ScheduleTask/Jobs/EveryMinuteJob.cs index 1e8da17..ee56204 100644 --- a/MyCode.Project.ScheduleTask/Jobs/EveryFiveMinuteJob.cs +++ b/MyCode.Project.ScheduleTask/Jobs/EveryMinuteJob.cs @@ -15,21 +15,21 @@ using System.Threading; 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) { - _report2308Service.EveryFiveMinuteJob(); + _staffDataEnterpriseWechatService.TaskAttendanceRequest(); } } } diff --git a/MyCode.Project.ScheduleTask/MyCode.Project.ScheduleTask.csproj b/MyCode.Project.ScheduleTask/MyCode.Project.ScheduleTask.csproj index 8e7f48d..e3fff32 100644 --- a/MyCode.Project.ScheduleTask/MyCode.Project.ScheduleTask.csproj +++ b/MyCode.Project.ScheduleTask/MyCode.Project.ScheduleTask.csproj @@ -93,6 +93,7 @@ + diff --git a/MyCode.Project.Services/IServices/IStaffDataEnterpriseWechatService.cs b/MyCode.Project.Services/IServices/IStaffDataEnterpriseWechatService.cs index be29830..2b3efcf 100644 --- a/MyCode.Project.Services/IServices/IStaffDataEnterpriseWechatService.cs +++ b/MyCode.Project.Services/IServices/IStaffDataEnterpriseWechatService.cs @@ -20,5 +20,11 @@ namespace MyCode.Project.Services void TaskGetUserByAccount(); void AddTask(); + /// + /// 定时打卡任务 + /// + void TaskAttendanceRequest(); } + + } diff --git a/MyCode.Project.Services/Implementation/StaffData/StaffDataEnterpriseWechatService.cs b/MyCode.Project.Services/Implementation/StaffData/StaffDataEnterpriseWechatService.cs index 24e202e..e2729d4 100644 --- a/MyCode.Project.Services/Implementation/StaffData/StaffDataEnterpriseWechatService.cs +++ b/MyCode.Project.Services/Implementation/StaffData/StaffDataEnterpriseWechatService.cs @@ -8,12 +8,14 @@ using MyCode.Project.Infrastructure.WebPost; using MyCode.Project.OutSideService; using MyCode.Project.Repositories; using Senparc.CO2NET.Exceptions; +using Senparc.Weixin.MP.Entities.Request; using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Security.Policy; using System.Threading; +using System.Web.Helpers; using System.Xml.Linq; namespace MyCode.Project.Services.Implementation @@ -21,30 +23,36 @@ namespace MyCode.Project.Services.Implementation /// /// 员工档案与企业微信资料 相关服务 /// - public class StaffDataEnterpriseWechatService : ServiceBase , IStaffDataEnterpriseWechatService + public class StaffDataEnterpriseWechatService : ServiceBase, IStaffDataEnterpriseWechatService { - private IWorkProcessService _workProcessService; - + private IWorkProcessService _workProcessService; + private ITBDStaffDataLRepository _tBDStaffDataLRepository; private ITBDStaffDataRepository _tBDStaffDataRepository; + private ITAttendanceRequestRepository _tAttendanceRequestRepository; private ITUserLoginParameterRepository _tUserLoginParameterRepository; private static object locker = new object(); //创建锁 public StaffDataEnterpriseWechatService(IWorkProcessService workProcessService - + , ITBDStaffDataLRepository tBDStaffDataLRepository , ITBDStaffDataRepository tBDStaffDataRepository , ITUserLoginParameterRepository tUserLoginParameterRepository + , ITAttendanceRequestRepository tAttendanceRequestRepository , IEnterpriseWechatService enterpriseWechatService) { _workProcessService = workProcessService; _tUserLoginParameterRepository = tUserLoginParameterRepository; - _tBDStaffDataLRepository = tBDStaffDataLRepository; + _tBDStaffDataLRepository = tBDStaffDataLRepository; _tBDStaffDataRepository = tBDStaffDataRepository; + _tAttendanceRequestRepository = tAttendanceRequestRepository; } DateTime now = DateTime.Now; - + /// + /// 打卡 + /// + public static string _UpdateAttendanceDataUrl = "http://14.21.32.187:9090/K3Cloud/G_HRApi.Attendance.UpdateAttendanceData.ExecuteService,G-HRApi.common.kdsvc"; /// /// 定时获取用户登录参数 /// @@ -60,8 +68,8 @@ namespace MyCode.Project.Services.Implementation keyValuePairs.Add("Data", json); json = JsonHelper.ToJson(keyValuePairs); LogHelper.Info(json); - var re=webUtility.DoPostJson(url, json); - + var re = webUtility.DoPostJson(url, json); + LogHelper.Info(re); var result = JsonHelper.ToObject(re); if (result.Result.IsSuccess == "true") @@ -76,13 +84,13 @@ namespace MyCode.Project.Services.Implementation { add = 1; one = new T_UserLogin_Parameter(); - one.FPHONE = t.FPHONE; + 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"; + one.KEY1 = "95F80245-F905-4472-A319-008682087E02"; if (add == 0) _tUserLoginParameterRepository.Update(one); else @@ -101,7 +109,7 @@ namespace MyCode.Project.Services.Implementation 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(); @@ -114,7 +122,7 @@ namespace MyCode.Project.Services.Implementation DBID = postModel1.DBID, userName = t.FPHONE, HashPassword = t.FPASSWORD, - IFTaskLogin=1 + IFTaskLogin = 1 } }; json = JsonHelper.ToJson(JsonString); @@ -135,15 +143,55 @@ namespace MyCode.Project.Services.Implementation _tUserLoginParameterRepository.Update(t); Thread.Sleep(300); }); - //_workProcessService.Add(this.MerchantId, "InitDepartment", "刷企业微信数据", "", 2); + _workProcessService.Add(this.MerchantId, "TaskGetUserByAccount", "调度定时登录账号信息", "", 2); + } public void AddTask() { _workProcessService.Add(this.MerchantId, "TaskGetPasswordData", "定时获取用户登录参数", "", 2); - _workProcessService.Add(this.MerchantId, "TaskGetUserByAccount", "调度定时登录账号信息", "", 2); - + + } + + /// + /// 定时打卡任务 + /// + 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(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); + + }); } } }