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);
+
+ });
}
}
}