From 82e77027e3f79f5c7518933b330793016079749d Mon Sep 17 00:00:00 2001 From: liguoyang Date: Mon, 8 Jan 2024 10:11:06 +0800 Subject: [PATCH] =?UTF-8?q?fix=20=E5=AD=97=E6=AE=B5=E5=90=8D=E7=A7=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Src/Dlhis.Entity/Basic/Entity/DeviceEntity.cs | 8 +- Src/Dlhis.Entity/Basic/Entity/GainfoEntity.cs | 102 +++++------------- .../Basic/Enums/GainfoStatusEnumType.cs | 4 +- .../Sys/Entities/MenuPermissionEntity.cs | 6 +- ...mType.cs => MenuAssignmentTypeEnumType.cs} | 4 +- .../Configurations/ServiceSettings.cs | 2 +- .../Dlhis.ScheduledTask.csproj | 1 + Src/Dlhis.ScheduledTask/Dockerfile | 1 + Src/Dlhis.ScheduledTask/HangfirePack.cs | 69 ------------ Src/Dlhis.ScheduledTask/Job/SyncOrgInfoJob.cs | 25 ++--- Src/Dlhis.ScheduledTask/Job/SyncPersonJob.cs | 100 +++++++++-------- Src/Dlhis.ScheduledTask/Packs/HangfirePack.cs | 67 ++++++++++++ Src/Dlhis.ScheduledTask/Packs/SqlSugarPack.cs | 15 +++ Src/Dlhis.ScheduledTask/Program.cs | 1 - Src/Dlhis.ScheduledTask/SqlGeneration.cs | 34 ------ Src/Dlhis.ScheduledTask/SqlSugarPack.cs | 29 ----- 16 files changed, 182 insertions(+), 286 deletions(-) rename Src/Dlhis.Entity/Sys/Enums/{MenuPermissionTypeEnumType.cs => MenuAssignmentTypeEnumType.cs} (87%) delete mode 100644 Src/Dlhis.ScheduledTask/HangfirePack.cs create mode 100644 Src/Dlhis.ScheduledTask/Packs/HangfirePack.cs create mode 100644 Src/Dlhis.ScheduledTask/Packs/SqlSugarPack.cs delete mode 100644 Src/Dlhis.ScheduledTask/SqlGeneration.cs delete mode 100644 Src/Dlhis.ScheduledTask/SqlSugarPack.cs diff --git a/Src/Dlhis.Entity/Basic/Entity/DeviceEntity.cs b/Src/Dlhis.Entity/Basic/Entity/DeviceEntity.cs index 354d9368..79281c0c 100644 --- a/Src/Dlhis.Entity/Basic/Entity/DeviceEntity.cs +++ b/Src/Dlhis.Entity/Basic/Entity/DeviceEntity.cs @@ -79,14 +79,14 @@ public class DeviceEntity : SugarBaseEntity, ITenantId /// /// 最后使用人 /// - [SugarColumn(ColumnDescription = "最后使用人")] - public DateTime LastLogId { get; set; } + [SugarColumn(IsNullable = true, ColumnDescription = "最后使用人")] + public DateTime? LastLogId { get; set; } /// /// 最后使用日期 /// - [SugarColumn(ColumnDescription = "最后使用日期")] - public DateTime LastLogDateTime { get; set; } + [SugarColumn(IsNullable = true, ColumnDescription = "最后使用日期")] + public DateTime? LastLogDateTime { get; set; } /// diff --git a/Src/Dlhis.Entity/Basic/Entity/GainfoEntity.cs b/Src/Dlhis.Entity/Basic/Entity/GainfoEntity.cs index 0aa10c72..8b1f6bd6 100644 --- a/Src/Dlhis.Entity/Basic/Entity/GainfoEntity.cs +++ b/Src/Dlhis.Entity/Basic/Entity/GainfoEntity.cs @@ -12,49 +12,55 @@ public class GainfoEntity : SugarBaseEntity /// 档案号 /// [SugarColumn(ColumnDescription = "档案号")] - public string Guestno { get; set; } + public string No { get; set; } /// /// SAP内部编号 /// [SugarColumn(ColumnDescription = "SAP内部编号")] - public string Ano { get; set; } + public string SapNo { get; set; } /// /// 人员类型 /// [SugarColumn(ColumnDescription = "人员类型")] - public string Class { get; set; } + public string GType { get; set; } /// /// 姓名 /// [SugarColumn(ColumnDescription = "姓名")] - public string Gname { get; set; } + public string Name { get; set; } + + /// + /// 外文名字 + /// + [SugarColumn(ColumnDescription = "外文名字")] + public string NameEn { get; set; } /// /// 工号 /// [SugarColumn(ColumnDescription = "工号")] - public string Ename { get; set; } + public string Code { get; set; } /// /// 国家代码 /// [SugarColumn(ColumnDescription = "国家代码")] - public string Country { get; set; } + public string CountryNo { get; set; } /// /// 证件类型代码 /// [SugarColumn(ColumnDescription = "证件类型代码")] - public string Idcls { get; set; } + public string IdClass { get; set; } /// /// 身份证号 /// [SugarColumn(ColumnDescription = "身份证号")] - public string IdNO { get; set; } + public string IdNo { get; set; } /// /// 身份证籍贯区域代码 @@ -66,7 +72,7 @@ public class GainfoEntity : SugarBaseEntity /// 性别 /// [SugarColumn(ColumnDescription = "性别")] - public string Sex { get; set; } + public string Gender { get; set; } /// /// 生日 @@ -84,13 +90,13 @@ public class GainfoEntity : SugarBaseEntity /// 已婚/未婚 /// [SugarColumn(ColumnDescription = "已婚/未婚")] - public string Postcode { get; set; } + public string Marital { get; set; } /// /// 部门编码 /// [SugarColumn(ColumnDescription = "部门编码")] - public string Appellation { get; set; } + public string DepartmentNo { get; set; } /// /// 民族代码 @@ -104,12 +110,6 @@ public class GainfoEntity : SugarBaseEntity [SugarColumn(ColumnDescription = "手机号码")] public string Phone { get; set; } - /// - /// 联系电话 - /// - [SugarColumn(ColumnDescription = "联系电话")] - public string Mobile { get; set; } - /// /// 学历 /// @@ -120,55 +120,7 @@ public class GainfoEntity : SugarBaseEntity /// 岗位 /// [SugarColumn(ColumnDescription = "岗位")] - public string Web { get; set; } - - /// - /// 备注 - /// - [SugarColumn(ColumnDescription = "备注")] - public string Remark { get; set; } - - /// - /// 操作账号 - /// - [SugarColumn(ColumnDescription = "操作账号")] - public string Log_id { get; set; } - - /// - /// 操作班次 - /// - [SugarColumn(ColumnDescription = "操作班次")] - public string Log_shift { get; set; } - - /// - /// 操作时间 - /// - [SugarColumn(ColumnDescription = "操作时间")] - public DateTime Log_date { get; set; } - - /// - /// 操作IP - /// - [SugarColumn(ColumnDescription = "操作IP")] - public string Log_ip { get; set; } - - /// - /// 是否在职 F 在职 T离职 - /// - [SugarColumn(ColumnDescription = "是否在职 F 在职 T离职")] - public string Isowner { get; set; } - - /// - /// 创建时间 - /// - [SugarColumn(ColumnDescription = "创建时间")] - public DateTime Createdate { get; set; } - - /// - /// 外文名字 - /// - [SugarColumn(ColumnDescription = "外文名字")] - public string Gname_en { get; set; } + public string Position { get; set; } /// /// 卡号 @@ -176,6 +128,12 @@ public class GainfoEntity : SugarBaseEntity [SugarColumn(ColumnDescription = "卡号")] public string CarNo { get; set; } + /// + /// 备注 + /// + [SugarColumn(ColumnDescription = "备注")] + public string Remark { get; set; } + /// /// 人事范围 /// @@ -183,14 +141,8 @@ public class GainfoEntity : SugarBaseEntity public string Werks { get; set; } /// - /// 人员号 + /// 在职状态 /// - [SugarColumn(ColumnDescription = "人员号")] - public string Pernr { get; set; } - - /// - /// 邮箱 - /// - [SugarColumn(ColumnDescription = "邮箱")] - public string Email { get; set; } + [SugarColumn(ColumnDescription = "在职状态")] + public string Employed { get; set; } } diff --git a/Src/Dlhis.Entity/Basic/Enums/GainfoStatusEnumType.cs b/Src/Dlhis.Entity/Basic/Enums/GainfoStatusEnumType.cs index dd5e9c00..517140ea 100644 --- a/Src/Dlhis.Entity/Basic/Enums/GainfoStatusEnumType.cs +++ b/Src/Dlhis.Entity/Basic/Enums/GainfoStatusEnumType.cs @@ -9,7 +9,7 @@ namespace Dlhis.Entity.Basic.Enums; public enum GainfoStatusEnumType { /// - /// + /// 在职 /// [Description("在职")] Working = 1, @@ -21,7 +21,7 @@ public enum GainfoStatusEnumType Leave = 2, /// - /// 外部人员 + /// 外部 /// [Description("外部")] External = 3 diff --git a/Src/Dlhis.Entity/Sys/Entities/MenuPermissionEntity.cs b/Src/Dlhis.Entity/Sys/Entities/MenuPermissionEntity.cs index beb83bb2..e177ad52 100644 --- a/Src/Dlhis.Entity/Sys/Entities/MenuPermissionEntity.cs +++ b/Src/Dlhis.Entity/Sys/Entities/MenuPermissionEntity.cs @@ -12,10 +12,10 @@ namespace Dlhis.Entity.Sys.Entities; public class MenuPermissionEntity : SugarBaseEntity, ITenantId, ISoftDeleted { /// - /// 权限类型 + /// 权限分配类型 /// - [SugarColumn(ColumnDataType = "varchar(50)", ColumnDescription = "权限类型", SqlParameterDbType = typeof(EnumToStringConvert))] - public MenuPermissionTypeEnumType UniqueType { get; set; } + [SugarColumn(ColumnDataType = "varchar(50)", ColumnDescription = "权限分配类型", SqlParameterDbType = typeof(EnumToStringConvert))] + public MenuAssignmentTypeEnumType UniqueType { get; set; } /// /// 类型值 diff --git a/Src/Dlhis.Entity/Sys/Enums/MenuPermissionTypeEnumType.cs b/Src/Dlhis.Entity/Sys/Enums/MenuAssignmentTypeEnumType.cs similarity index 87% rename from Src/Dlhis.Entity/Sys/Enums/MenuPermissionTypeEnumType.cs rename to Src/Dlhis.Entity/Sys/Enums/MenuAssignmentTypeEnumType.cs index 6413fb12..0d70d4b4 100644 --- a/Src/Dlhis.Entity/Sys/Enums/MenuPermissionTypeEnumType.cs +++ b/Src/Dlhis.Entity/Sys/Enums/MenuAssignmentTypeEnumType.cs @@ -5,8 +5,8 @@ namespace Dlhis.Entity.Sys.Enums; /// /// 权限类型 /// -[Description("权限类型")] -public enum MenuPermissionTypeEnumType +[Description("权限分配类型")] +public enum MenuAssignmentTypeEnumType { /// /// 用户 diff --git a/Src/Dlhis.ScheduledTask/Configurations/ServiceSettings.cs b/Src/Dlhis.ScheduledTask/Configurations/ServiceSettings.cs index 1c381ff1..6e904403 100644 --- a/Src/Dlhis.ScheduledTask/Configurations/ServiceSettings.cs +++ b/Src/Dlhis.ScheduledTask/Configurations/ServiceSettings.cs @@ -3,7 +3,7 @@ namespace Dlhis.ScheduledTask.Configurations { - //[Configuration] + [Configuration] public class ServiceSettings { public string ServerUrl { get; private set; } diff --git a/Src/Dlhis.ScheduledTask/Dlhis.ScheduledTask.csproj b/Src/Dlhis.ScheduledTask/Dlhis.ScheduledTask.csproj index 024b57a4..7893c27b 100644 --- a/Src/Dlhis.ScheduledTask/Dlhis.ScheduledTask.csproj +++ b/Src/Dlhis.ScheduledTask/Dlhis.ScheduledTask.csproj @@ -21,6 +21,7 @@ + diff --git a/Src/Dlhis.ScheduledTask/Dockerfile b/Src/Dlhis.ScheduledTask/Dockerfile index 2c70e70a..01d8ae26 100644 --- a/Src/Dlhis.ScheduledTask/Dockerfile +++ b/Src/Dlhis.ScheduledTask/Dockerfile @@ -7,6 +7,7 @@ EXPOSE 80 FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build WORKDIR /src COPY ["Src/Dlhis.ScheduledTask/Dlhis.ScheduledTask.csproj", "Src/Dlhis.ScheduledTask/"] +COPY ["Src/Dlhis.Entity/Dlhis.Entity.csproj", "Src/Dlhis.Entity/"] RUN dotnet restore "Src/Dlhis.ScheduledTask/Dlhis.ScheduledTask.csproj" COPY . . WORKDIR "/src/Src/Dlhis.ScheduledTask" diff --git a/Src/Dlhis.ScheduledTask/HangfirePack.cs b/Src/Dlhis.ScheduledTask/HangfirePack.cs deleted file mode 100644 index 941cd109..00000000 --- a/Src/Dlhis.ScheduledTask/HangfirePack.cs +++ /dev/null @@ -1,69 +0,0 @@ -using Dlhis.ScheduledTask.Configurations; -using Dlhis.ScheduledTask.Job; -using Hangfire; -using Hangfire.Dashboard.BasicAuthorization; -using Hangfire.MySql; -using Kurisu.AspNetCore.Startup; - - -namespace Dlhis.ScheduledTask -{ - public class HangfirePack : BaseAppPack - { - public override bool IsBeforeUseRouting { get; } - - public override void ConfigureServices(IServiceCollection services) - { - - services.Configure(Configuration.GetSection("ServiceSettings")); - services.AddHangfire(configuration => - { - var options = new MySqlStorageOptions - { - TablesPrefix = "Hangfire" - }; - - configuration.UseSimpleAssemblyNameTypeSerializer() - .UseRecommendedSerializerSettings() - .UseStorage(new MySqlStorage(Configuration.GetConnectionString("HangfireConnection"), options)); - - }); - services.UseHangfireto(); - services.AddHangfireServer(); - } - - public override void Configure(IApplicationBuilder app, IWebHostEnvironment env) - { - - app.UseHangfireDashboard("/hangfire", new DashboardOptions - { - AppPath = null, - DashboardTitle = "hangfire", - Authorization = new[] - { - new BasicAuthAuthorizationFilter(new BasicAuthAuthorizationFilterOptions - { - RequireSsl = false, - SslRedirect = false, - Users = new [] - { - new BasicAuthAuthorizationUser - { - Login ="admin", - PasswordClear = "admin" - } - } - }) - } - }); - app.UseHangfireDashboard(); - BackgroundJob.Enqueue(() => Console.WriteLine("This is a background job.")); - RecurringJob.AddOrUpdate("SyncOrgInfoJob_id", s => s.SyncOrgInfo(), "0 0 0 * * ?"); - RecurringJob.AddOrUpdate("SyncPositionJob_id", s =>s.SyncPositionInfo(), "0 0 1 * * ?"); - RecurringJob.AddOrUpdate("SyncPersonJob_id", s => s.SyncPersonInfo(), "0 0 2 * * ?"); - - } - - - } -} diff --git a/Src/Dlhis.ScheduledTask/Job/SyncOrgInfoJob.cs b/Src/Dlhis.ScheduledTask/Job/SyncOrgInfoJob.cs index 3381dae1..49b6c85b 100644 --- a/Src/Dlhis.ScheduledTask/Job/SyncOrgInfoJob.cs +++ b/Src/Dlhis.ScheduledTask/Job/SyncOrgInfoJob.cs @@ -22,9 +22,9 @@ namespace Dlhis.ScheduledTask.Job _dbContext = dbContext; } - - public async Task SyncOrgInfo() + + public async Task SyncOrgInfo() { HttpClient httpClient = new HttpClient(); httpClient.Timeout = TimeSpan.FromMinutes(10); @@ -32,8 +32,7 @@ namespace Dlhis.ScheduledTask.Job var headerValue = Convert.ToBase64String(Encoding.UTF8.GetBytes(credentials)); httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", headerValue); - string apiUrl = - "http://sappidap.jinkosolar.cn:51000/RESTAdapter/Rest/EHR_ORGANIZATION/"; + string apiUrl = "http://sappidap.jinkosolar.cn:51000/RESTAdapter/Rest/EHR_ORGANIZATION/"; string requestBody = "{\"I_DATE\":\"2021-01-01\",\"I_DATE_TO\":\"2022-05-29\",\"I_LANGU\":\"1\",\"T_ID\":{\"item\":[{\"OBJID\":\"50007967\"},{\"OBJID\":\"50008308\"}]}}"; @@ -43,7 +42,7 @@ namespace Dlhis.ScheduledTask.Job if (response.IsSuccessStatusCode) { string responseData = await response.Content.ReadAsStringAsync(); - ZHRS_ORGResult orgResult = JsonSerializer.Deserialize(responseData); + ZHRS_ORGResult orgResult = JsonSerializer.Deserialize(responseData); if (orgResult.T_ORG != null && orgResult.T_ORG.item.Count > 0) { @@ -52,10 +51,10 @@ namespace Dlhis.ScheduledTask.Job // 使用 SQLSugar 将新数据同步到数据库 await SaveOrg(modifiedOrgList); } - //} - //else - //{ - // Console.WriteLine($"HTTP请求失败,状态码:{response.StatusCode}"); + //} + //else + //{ + // Console.WriteLine($"HTTP请求失败,状态码:{response.StatusCode}"); } } @@ -70,19 +69,17 @@ namespace Dlhis.ScheduledTask.Job return sapList.Except(needRemove, new ZHRS_ORGComparer()).ToList(); } - private async Task SaveOrg(List modifiedOrgList) + private async Task SaveOrg(List modifiedOrgList) { if (modifiedOrgList == null || modifiedOrgList.Count == 0) return; foreach (ZHRS_ORG item in modifiedOrgList) { - - var existingOrgs = await _dbContext.Queryable().Where(x => x.OBJID == item.OBJID).FirstAsync(); if (existingOrgs != null) { - var org = item.Adapt(existingOrgs); + var org = item.Adapt(existingOrgs); await _dbContext.UpdateAsync(org); } else @@ -90,7 +87,7 @@ namespace Dlhis.ScheduledTask.Job var org = item.Adapt(); await _dbContext.InsertAsync(org); } - } + } } } } diff --git a/Src/Dlhis.ScheduledTask/Job/SyncPersonJob.cs b/Src/Dlhis.ScheduledTask/Job/SyncPersonJob.cs index 33c7793b..833e07b5 100644 --- a/Src/Dlhis.ScheduledTask/Job/SyncPersonJob.cs +++ b/Src/Dlhis.ScheduledTask/Job/SyncPersonJob.cs @@ -82,8 +82,8 @@ namespace Dlhis.ScheduledTask.Job //var existsWorkCodes = conn.Query($"select ename from gainfo_sap where ename in ( {string.Join(",", searchCodes.Select(x => $"'{x}'"))} )") // .ToList(); var existsWorkCodes = _dbContext.Queryable() - .Where(x => searchCodes.Contains(x.Ename)) - .Select(x => x.Ename) + .Where(x => searchCodes.Contains(x.Code)) + .Select(x => x.Code) .ToList(); var originUpdates = persons.Where(x => existsWorkCodes.Contains(x.ZWORKCODE)).ToList(); @@ -120,7 +120,7 @@ namespace Dlhis.ScheduledTask.Job i++; try { - await UpdatePerson(item); + await UpdatePerson(item); //conn.Execute(SqlGeneration.UpdateSql, item); //log.Debug($"执行更新{i}/{currentTotal} name:{item.gname},ename:{item.ename}"); } @@ -142,19 +142,18 @@ namespace Dlhis.ScheduledTask.Job private async Task SavePerson(GainfoSap item) { - var gainfo = await _dbContext.Queryable().Where(x => x.IdNO == item.idno).FirstAsync(); + var gainfo = await _dbContext.Queryable().Where(x => x.IdNo == item.idno).FirstAsync(); if (gainfo != null) { - gainfo.Pernr = item.PERNR; - gainfo.Gname = item.gname; - gainfo.Ename = item.ename; - gainfo.Web = item.web; + gainfo.SapNo = item.PERNR; + gainfo.Name = item.gname; + gainfo.Code = item.ename; + gainfo.Position = item.web; gainfo.Phone = item.phone; - gainfo.Appellation = item.appellation; - gainfo.Isowner = item.isowner; + gainfo.DepartmentNo = item.appellation; + gainfo.Employed = item.isowner; gainfo.Remark = item.remark; - gainfo.Email = item.email; - gainfo.Createdate = (DateTime)item.createdate; + gainfo.Degree = item.email; gainfo.Werks = item.WERKS; await _dbContext.UpdateAsync(gainfo); } @@ -162,30 +161,29 @@ namespace Dlhis.ScheduledTask.Job { var info = new GainfoEntity() { - Ano = item.ano, - Guestno = item.guestno, - Class = item.@class, - Gname = item.gname, - Ename = item.ename, - Country = item.country, - Idcls = item.idcls, + SapNo = item.ano, + No = item.guestno, + GType = item.@class, + Name = item.gname, + Code = item.ename, + CountryNo = item.country, + IdClass = item.idcls, Native = item.native, - Sex = item.sex, + Gender = item.sex, Birthday = (DateTime)item.birthday, Address = item.address, //Occupation = item.occupation, - Appellation = item.appellation, + DepartmentNo = item.appellation, Nation = item.nation, Phone = item.phone, - Web = item.web, - Log_id = item.log_id, - Log_shift = item.log_shift, - Log_date = (DateTime)item.log_date, - Log_ip = item.log_ip, - Isowner = item.isowner, + Position = item.web, + //Log_id = item.log_id, + //Log_shift = item.log_shift, + //Log_date = (DateTime)item.log_date, + //Log_ip = item.log_ip, + Employed = item.isowner, Remark = item.remark, - Email = item.email, - Createdate = (DateTime)item.createdate, + Degree = item.email, Werks = item.WERKS, }; await _dbContext.InsertAsync(info); @@ -193,46 +191,44 @@ namespace Dlhis.ScheduledTask.Job } private async Task UpdatePerson(GainfoSap item) { - var gainfo = await _dbContext.Queryable().Where(x => x.IdNO == item.idno).FirstAsync(); + var gainfo = await _dbContext.Queryable().Where(x => x.IdNo == item.idno).FirstAsync(); if (gainfo != null) { _dbContext.Updateable().SetColumns(g => new GainfoEntity { - Pernr = item.PERNR, - Gname = item.gname, - Ename = item.ename, - Web = item.web, + SapNo = item.PERNR, + Name = item.gname, + Code = item.ename, + Position = item.web, Phone = item.phone, - Appellation = item.appellation, - Isowner = item.isowner, + DepartmentNo = item.appellation, + Employed = item.isowner, Remark = item.remark, - Email = item.email, - Createdate = (DateTime)item.createdate, + Degree = item.email, Werks = item.WERKS }) - .Where(g => g.IdNO == item.idno - && !_dbContext.Queryable().Any(g => g.IdNO == item.idno && g.Pernr != item.PERNR && g.Isowner == "T") - && !_dbContext.Queryable().Any(g => g.IdNO == item.idno && int.Parse(g.Pernr) > int.Parse(item.PERNR) && g.Isowner == item.isowner)); + .Where(g => g.IdNo == item.idno + && !_dbContext.Queryable().Any(g => g.IdNo == item.idno && g.SapNo != item.PERNR && g.Employed == "T") + && !_dbContext.Queryable().Any(g => g.IdNo == item.idno && int.Parse(g.SapNo) > int.Parse(item.PERNR) && g.Employed == item.isowner)); } else { _dbContext.Updateable().SetColumns(g => new GainfoEntity { - Pernr = item.PERNR, - Gname = item.gname, - Ename = item.ename, - Web = item.web, + SapNo = item.PERNR, + Name = item.gname, + Code = item.ename, + Position = item.web, Phone = item.phone, - Appellation = item.appellation, - Isowner = item.isowner, + DepartmentNo = item.appellation, + Employed = item.isowner, Remark = item.remark, - Email = item.email, - Createdate = (DateTime)item.createdate, + Degree = item.email, Werks = item.WERKS }) - .Where(g => g.Ano == item.PERNR - && !_dbContext.Queryable().Any(g => g.Ename == item.ename && g.Isowner == "T") - && !_dbContext.Queryable().Any(g => g.IdNO == item.idno && int.Parse(g.Pernr) > int.Parse(item.PERNR) && g.Isowner == item.isowner)); + .Where(g => g.SapNo == item.PERNR + && !_dbContext.Queryable().Any(g => g.Code == item.ename && g.Employed == "T") + && !_dbContext.Queryable().Any(g => g.IdNo == item.idno && int.Parse(g.SapNo) > int.Parse(item.PERNR) && g.Employed == item.isowner)); } } diff --git a/Src/Dlhis.ScheduledTask/Packs/HangfirePack.cs b/Src/Dlhis.ScheduledTask/Packs/HangfirePack.cs new file mode 100644 index 00000000..5453da57 --- /dev/null +++ b/Src/Dlhis.ScheduledTask/Packs/HangfirePack.cs @@ -0,0 +1,67 @@ +using Dlhis.ScheduledTask.Configurations; +using Dlhis.ScheduledTask.Job; +using Hangfire; +using Hangfire.Dashboard.BasicAuthorization; +using Hangfire.MySql; +using Kurisu.AspNetCore.Startup; + + +namespace Dlhis.ScheduledTask.Packs; + +public class HangfirePack : BaseAppPack +{ + public override bool IsBeforeUseRouting { get; } + + public override void ConfigureServices(IServiceCollection services) + { + + services.Configure(Configuration.GetSection("ServiceSettings")); + services.AddHangfire(configuration => + { + var options = new MySqlStorageOptions + { + TablesPrefix = "Hangfire" + }; + + configuration.UseSimpleAssemblyNameTypeSerializer() + .UseRecommendedSerializerSettings() + .UseStorage(new MySqlStorage(Configuration.GetConnectionString("HangfireConnection"), options)); + + }); + services.UseHangfireto(); + services.AddHangfireServer(); + } + + public override void Configure(IApplicationBuilder app, IWebHostEnvironment env) + { + + app.UseHangfireDashboard("/hangfire", new DashboardOptions + { + AppPath = null, + DashboardTitle = "hangfire", + Authorization = new[] + { + new BasicAuthAuthorizationFilter(new BasicAuthAuthorizationFilterOptions + { + RequireSsl = false, + SslRedirect = false, + Users = new [] + { + new BasicAuthAuthorizationUser + { + Login ="admin", + PasswordClear = "admin" + } + } + }) + } + }); + + app.UseHangfireDashboard(); + + BackgroundJob.Enqueue(() => Console.WriteLine("This is a background job.")); + RecurringJob.AddOrUpdate("SyncOrgInfoJob_id", s => s.SyncOrgInfo(), "0 0 0 * * ?"); + RecurringJob.AddOrUpdate("SyncPositionJob_id", s => s.SyncPositionInfo(), "0 0 1 * * ?"); + RecurringJob.AddOrUpdate("SyncPersonJob_id", s => s.SyncPersonInfo(), "0 0 2 * * ?"); + } +} diff --git a/Src/Dlhis.ScheduledTask/Packs/SqlSugarPack.cs b/Src/Dlhis.ScheduledTask/Packs/SqlSugarPack.cs new file mode 100644 index 00000000..ede7092f --- /dev/null +++ b/Src/Dlhis.ScheduledTask/Packs/SqlSugarPack.cs @@ -0,0 +1,15 @@ +using Kurisu.AspNetCore.Startup; +using Kurisu.SqlSugar.Extensions; + +namespace Dlhis.ScheduledTask.Packs; + +public class SqlSugarPack : BaseAppPack +{ + public override bool IsBeforeUseRouting { get; } + + public override void ConfigureServices(IServiceCollection services) + { + services.AddHttpContextAccessor(); + services.AddSqlSugar(); + } +} diff --git a/Src/Dlhis.ScheduledTask/Program.cs b/Src/Dlhis.ScheduledTask/Program.cs index 66b0e63e..281db99e 100644 --- a/Src/Dlhis.ScheduledTask/Program.cs +++ b/Src/Dlhis.ScheduledTask/Program.cs @@ -14,6 +14,5 @@ public class Startup : DefaultStartup { public Startup(IConfiguration configuration) : base(configuration) { - } } \ No newline at end of file diff --git a/Src/Dlhis.ScheduledTask/SqlGeneration.cs b/Src/Dlhis.ScheduledTask/SqlGeneration.cs deleted file mode 100644 index da1e0068..00000000 --- a/Src/Dlhis.ScheduledTask/SqlGeneration.cs +++ /dev/null @@ -1,34 +0,0 @@ -using System.Linq; -using Dlhis.ScheduledTask.Entities; - -namespace Dlhis -{ - public class SqlGeneration - { - private static string _insertSql; - private static string _updateSql; - - static SqlGeneration() - { - //"" - var properties = typeof(GainfoSap).GetProperties(); - - var insertFields = properties - .Where(x => !x.IsDefined(typeof(IgnoreColumnAttribute), false)) - .Where(x => !x.IsDefined(typeof(PkColumnAttribute), false)) - .Select(x => x.Name); - _insertSql = $" insert into gainfo_sap({string.Join(",", insertFields)}) \r\n values \r\n ({string.Join(",", insertFields.Select(x => $"@{x}"))})"; - - var updateFields = properties - .Where(x => !x.IsDefined(typeof(IgnoreColumnAttribute), false)) - .Where(x => !x.IsDefined(typeof(PkColumnAttribute), false)) - .Where(x => !x.IsDefined(typeof(UpdateColumnAttribute), false)) - .Select(x => x.Name); - _updateSql = $" update gainfo_sap set {string.Join(",", updateFields.Select(x => $"{x}=@{x}"))} \t\n where ename=@ename"; - } - - public static string InsertSql => _insertSql; - public static string UpdateSql => _updateSql; - } -} - diff --git a/Src/Dlhis.ScheduledTask/SqlSugarPack.cs b/Src/Dlhis.ScheduledTask/SqlSugarPack.cs deleted file mode 100644 index dec5a3de..00000000 --- a/Src/Dlhis.ScheduledTask/SqlSugarPack.cs +++ /dev/null @@ -1,29 +0,0 @@ -using Kurisu.AspNetCore.Startup; -using Kurisu.AspNetCore; -using Kurisu.SqlSugar.Extensions; -using SqlSugar; - -namespace Dlhis.ScheduledTask -{ - public class SqlSugarPack : BaseAppPack - { - public override bool IsBeforeUseRouting { get; } - - public override void ConfigureServices(IServiceCollection services) - { - services.AddHttpContextAccessor(); - services.AddSqlSugar(); - } - - public override void Configure(IApplicationBuilder app, IWebHostEnvironment env) - { -#if DEBUG - using var scope = app.ApplicationServices.CreateScope(); - var db = scope.ServiceProvider.GetService(); - var tables = App.ActiveTyps.Where(x => x.IsDefined(typeof(SugarTable), false)).ToArray(); - db.DbMaintenance.CreateDatabase(); - db.CodeFirst.InitTables(tables); -#endif - } - } -}