This commit is contained in:
cheche
2024-01-10 16:24:00 +08:00
58 changed files with 766 additions and 1181 deletions

View File

@@ -8,6 +8,4 @@ public class DevicePageRequest : PageDto
/// 平台
/// </summary>
public string Brand { get; set; }
public string MyProperty { get; set; }
}

View File

@@ -14,6 +14,8 @@ public class DeviceUnderGroupResponse
/// </summary>
public string Brand { get; set; }
/// <summary>
/// 是否启用
/// </summary>
public bool Enable { get; set; }
}

View File

@@ -23,6 +23,7 @@
<ItemGroup>
<ProjectReference Include="..\Dlhis.Common.Api\Dlhis.Common.Api.csproj" />
<ProjectReference Include="..\Dlhis.Entity\Dlhis.Entity.csproj" />
<ProjectReference Include="..\Dlhis.User.Api\Dlhis.User.Api.csproj" />
</ItemGroup>
</Project>

View File

@@ -32,7 +32,7 @@ public class MealUserService : IMealUserService
public async Task AddAsync(MealUserAddRequest request)
{
// 获取档案信息
//todo 获取档案信息
var gainfoEntity = await _gainfoStore.Queryable(GainfoStatusEnumType.Working)
.Where(x => x.No.ToString() == request.UserId)
@@ -42,7 +42,7 @@ public class MealUserService : IMealUserService
var entity = new CanteenUserEntity
{
UserId = request.UserId,
UserNo = request.UserId,
UserType = request.UserType,
UserCode = gainfoEntity.Code,
CarNo = gainfoEntity.CarNo,
@@ -57,7 +57,7 @@ public class MealUserService : IMealUserService
public async Task<MealUserResponse> GetMealUserAsync(string userId)
{
return await _dbContext.Queryable<CanteenUserEntity>()
.Where(x => x.UserId == userId)
.Where(x => x.UserNo == userId)
.Select<MealUserResponse>()
.FirstAsync();
}

View File

@@ -78,5 +78,15 @@ public class GainfosController : ControllerBase
{
await _gainfoService.OnboardingAsync(request);
}
/// <summary>
/// 当前人员信息
/// </summary>
/// <returns></returns>
[HttpGet("current")]
public async Task<GainfoCurrentResponse> CurrentUserInfoAsync()
{
return await _gainfoService.CurrentUserInfoAsync();
}
}

View File

@@ -1,5 +1,6 @@
using Dlhis.Basic.Organization.Response;
using Dlhis.Basic.Organization.Services;
using Dlhis.User.Api.Response;
using Kurisu.AspNetCore.MVC;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
@@ -27,7 +28,7 @@ public class WerksController : ControllerBase
/// </summary>
/// <returns></returns>
[HttpGet("list")]
public async Task<List<WerkResponse>> GetListAsync()
public async Task<List<TenantResponse>> GetListAsync()
{
return await _werkService.GetListAsync();
}
@@ -37,7 +38,7 @@ public class WerksController : ControllerBase
/// </summary>
/// <returns></returns>
[HttpGet("current")]
public async Task<WerkResponse> GetCurrentAsync()
public async Task<TenantResponse> GetCurrentAsync()
{
return await _werkService.GetCurrentAsync();
}

View File

@@ -5,7 +5,7 @@ public class DepartmentTreeResponse
/// <summary>
/// 部门号
/// </summary>
public string Code { get; set; }
public string No { get; set; }
/// <summary>
/// 部门名称

View File

@@ -0,0 +1,9 @@
namespace Dlhis.Basic.Organization.Response;
public class GainfoCurrentMealInfoResponse
{
/// <summary>
/// 余额
/// </summary>
public decimal Balance { get; set; }
}

View File

@@ -0,0 +1,52 @@
using Dlhis.Entity.Basic.Enums;
using Kurisu.AspNetCore.Utils.Extensions;
namespace Dlhis.Basic.Organization.Response;
public class GainfoCurrentResponse
{
/// <summary>
/// 用户档案号
/// </summary>
public string UserNo { get; set; }
/// <summary>
/// 用户姓名
/// </summary>
public string UserName { get; set; }
/// <summary>
/// 性别枚举
/// </summary>
public GenderEnumType Gender { get; set; }
/// <summary>
/// 性别描述
/// </summary>
public string GenderDesc => Gender.GetDescription();
/// <summary>
/// 工号
/// </summary>
public string UserCode { get; set; }
/// <summary>
/// 部门号
/// </summary>
public string DepartmentNo { get; set; }
/// <summary>
/// 部门名称
/// </summary>
public string DepartmentName { get; set; }
/// <summary>
/// 出生日期/生日
/// </summary>
public DateTime Birthday { get; set; }
/// <summary>
/// 就餐信息
/// </summary>
public GainfoCurrentMealInfoResponse MealInfo { get; set; }
}

View File

@@ -1,23 +0,0 @@
using SqlSugar;
namespace Dlhis.Basic.Organization.Response;
public class WerkResponse
{
public long Id { get; set; }
/// <summary>
/// 代号
/// </summary>
public string Code { get; set; }
/// <summary>
/// 名称
/// </summary>
public string Name { get; set; }
/// <summary>
/// 是否可见
/// </summary>
public bool Visible { get; set; }
}

View File

@@ -16,4 +16,6 @@ public interface IGainfoService : IScopeDependency
Task DimissionAsync(GainfoDImissionRequest request);
Task OnboardingAsync(GainfoDImissionRequest request);
Task<GainfoCurrentResponse> CurrentUserInfoAsync();
}

View File

@@ -1,10 +1,10 @@
using Dlhis.Basic.Organization.Response;
using Dlhis.User.Api.Response;
namespace Dlhis.Basic.Organization.Services;
public interface IWerkService : IScopeDependency
{
Task<List<WerkResponse>> GetListAsync();
Task<List<TenantResponse>> GetListAsync();
Task<WerkResponse> GetCurrentAsync();
Task<TenantResponse> GetCurrentAsync();
}

View File

@@ -18,7 +18,7 @@ public class DepartmentService : IDepartmentService
public async Task<List<DepartmentTreeResponse>> GetTreeAsync()
{
var departments = await _dbContext.Queryable<DepartmentEntity>().ToListAsync();
var tops = departments.Where(x => x.PCode.IsEmpty()).Adapt<List<DepartmentTreeResponse>>();
var tops = departments.Where(x => x.PNo.IsEmpty()).Adapt<List<DepartmentTreeResponse>>();
tops.ForEach(x =>
{
@@ -31,7 +31,7 @@ public class DepartmentService : IDepartmentService
private void RecursionGetNext(DepartmentTreeResponse current, List<DepartmentEntity> departments)
{
var next = departments.Where(x => x.PCode == current.Code).ToList();
var next = departments.Where(x => x.PNo == current.No).ToList();
current.Next = next.Adapt<List<DepartmentTreeResponse>>();
foreach (var item in next)
{

View File

@@ -4,6 +4,7 @@ using Dlhis.Entity.Basic.Entity;
using Dlhis.Entity.Basic.Enums;
using Kurisu.AspNetCore.Utils.Extensions;
using Kurisu.Core.DataAccess.Dto;
using Kurisu.Core.User.Abstractions;
using Kurisu.SqlSugar.Attributes;
using Kurisu.SqlSugar.Extensions;
using Kurisu.SqlSugar.Services;
@@ -15,11 +16,13 @@ public class GainfoService : IGainfoService
{
private readonly IGainfoStore _gainfoStore;
private readonly IDbContext _dbContext;
private readonly ICurrentUser _currentUser;
public GainfoService(IGainfoStore gainfoStore, IDbContext dbContext)
public GainfoService(IGainfoStore gainfoStore, IDbContext dbContext, ICurrentUser currentUser)
{
_gainfoStore = gainfoStore;
_dbContext = dbContext;
_currentUser = currentUser;
}
/// <summary>
@@ -32,7 +35,7 @@ public class GainfoService : IGainfoService
request.DepartmentNos = await GetRecursionDepartmentNosAsync(request.DepartmentNos);
var page = await _gainfoStore.Queryable(request.Status)
.WhereIF(request.DepartmentNos.Any(), gainfo => request.DepartmentNos.Contains(gainfo.DepartmentNo))
.WhereIF(request.DepartmentNos.IsPresent(), gainfo => request.DepartmentNos.Contains(gainfo.DepartmentNo))
.Select<GainfoPageResponse>()
.ToPageListAsync(request);
@@ -112,6 +115,33 @@ public class GainfoService : IGainfoService
await _gainfoStore.InsertAsync(gainfo);
}
public async Task<GainfoCurrentResponse> CurrentUserInfoAsync()
{
var identityId = _currentUser.GetIntSubjectId();
var gainfo = await _gainfoStore.Queryable(GainfoStatusEnumType.Working)
.LeftJoin<DepartmentEntity>((ga, department) => ga.DepartmentNo == department.No)
.LeftJoin<CanteenUserEntity>((ga, department, mealUser) => ga.No == mealUser.UserNo)
.Where((ga, department) => ga.IdentityUserId == identityId)
.Select((ga, department, mealUser) => new GainfoCurrentResponse
{
UserNo = ga.No,
Birthday = ga.Birthday,
DepartmentNo = department.No,
DepartmentName = department.Name,
Gender = ga.Gender,
UserCode = ga.Code,
UserName = ga.Name,
MealInfo = new GainfoCurrentMealInfoResponse
{
Balance = mealUser.Balance
}
})
.FirstAsync();
return gainfo;
}
//-------------------------------------------help methods ------------------------------------------------
@@ -128,26 +158,26 @@ public class GainfoService : IGainfoService
}
var departments = await _dbContext.Queryable<DepartmentEntity>().ToListAsync();
var currentNos = departments.Where(x => departmentNos.Contains(x.Code)).ToList();
var currentNos = departments.Where(x => departmentNos.Contains(x.No)).ToList();
foreach (var item in currentNos)
{
RecursionGetNext(item.Code, departments, departmentNos);
RecursionGetNext(item.No, departments, departmentNos);
}
return departmentNos.Distinct().ToList();
void RecursionGetNext(string currentCode, List<DepartmentEntity> departments, List<string> result)
{
var next = departments.Where(x => x.PCode == currentCode).ToList();
var next = departments.Where(x => x.PNo == currentCode).ToList();
foreach (var item in next)
{
result.Add(item.Code);
result.Add(item.No);
}
foreach (var item in next)
{
RecursionGetNext(item.Code, departments, result);
RecursionGetNext(item.No, departments, result);
}
}
}

View File

@@ -1,35 +1,39 @@
/*using Dlhis.Basic.Organization.Response;
using Dlhis.Entity.Basic.Entity;
using Dlhis.User.Api;
using Dlhis.User.Api.Response;
using Kurisu.AspNetCore.Utils.Extensions;
using Kurisu.Core.Result;
using Kurisu.Core.User.Abstractions;
using Kurisu.SqlSugar.Services;
namespace Dlhis.Basic.Organization.Services.Implements;
public class WerkService : IWerkService
{
private readonly IDbContext _dbContext;
private readonly ICurrentUser _currentUser;
private readonly ITenantApi _tenantApi;
public WerkService(IDbContext dbContext, ICurrentUser currentUser)
public WerkService(ICurrentUser currentUser, ITenantApi tenantApi)
{
_dbContext = dbContext;
_currentUser = currentUser;
_tenantApi = tenantApi;
}
public async Task<List<WerkResponse>> GetListAsync()
public async Task<List<TenantResponse>> GetListAsync()
{
return await _dbContext.Queryable<WerkEntity>()
.Select<WerkResponse>()
.ToListAsync();
var tenantResult = await _tenantApi.GetTenantsAsync();
(tenantResult.Code == ApiStateCode.Success).ThrowIfFalse(tenantResult.Msg);
var tenants = tenantResult.Data;
return tenants;
}
public async Task<WerkResponse> GetCurrentAsync()
public async Task<TenantResponse> GetCurrentAsync()
{
var tenant = _currentUser.GetStringTenantId();
return await _dbContext.Queryable<WerkEntity>()
.Where(x => x.Code == tenant)
.Select<WerkResponse>()
.FirstAsync();
var tenantResult = await _tenantApi.GetTenantsAsync();
(tenantResult.Code == ApiStateCode.Success).ThrowIfFalse(tenantResult.Msg);
var tenants = tenantResult.Data;
return tenants.FirstOrDefault(x => x.Code == tenant);
}
}
*/

View File

@@ -19,7 +19,10 @@ public class SqlSugarPack : BaseAppPack
#if DEBUG
using var scope = app.ApplicationServices.CreateScope();
var db = scope.ServiceProvider.GetService<ISqlSugarClient>();
var tables = App.ActiveTyps.Where(x => x.IsDefined(typeof(SugarTable), false)).ToArray();
var tables = App.ActiveTyps.Where(x => x.IsDefined(typeof(SugarTable), false))
.Where(x => !x.IsDefined(typeof(SkipScanAttribute), false))
.ToArray();
db.DbMaintenance.CreateDatabase();
db.CodeFirst.InitTables(tables);
#endif

View File

@@ -6,7 +6,8 @@
}
},
"InternalRequest": {
"CommonRequestUrl": "http://localhost:5001"
"CommonRequestUrl": "http://localhost:5001",
"UserRequestUrl": "http://localhost:5004"
},
"SwaggerOptions": {
"Enable": true,

View File

@@ -7,7 +7,8 @@
},
"AllowedHosts": "*",
"InternalRequest": {
"CommonRequestUrl": "http://common"
"CommonRequestUrl": "http://common",
"UserRequestUrl": "http://user"
},
"SqlSugarOptions": {
"DefaultConnectionString": "server=192.168.199.124;port=3306;userid=root;password=dlhis123;database=yikatong;charset=utf8mb4;",

View File

@@ -7,6 +7,9 @@ using Microsoft.AspNetCore.Mvc;
namespace Dlhis.Canteen.Order.Controllers;
/// <summary>
/// 充值/消费
/// </summary>
[Authorize]
[Route("api/[controller]")]
[ApiController]

View File

@@ -61,11 +61,11 @@ public class OrderService : IOrderService
//根据档案号
var canteenUser = await _dbContext.Queryable<CanteenUserEntity>()
.Where(x => x.UserId == request.UserUniqueNo || x.UserCode == request.UserUniqueNo)
.Where(x => x.UserNo == request.UserUniqueNo || x.UserCode == request.UserUniqueNo)
.FirstAsync();
var gafinfo = await _dbContext.Queryable<GainfoEntity>()
.Where(x => x.No == canteenUser.UserId)
.Where(x => x.No == canteenUser.UserNo)
.FirstAsync();
var settings = await _canteenSettingService.GetUserSettingAsync(gafinfo.No);
@@ -104,7 +104,7 @@ public class OrderService : IOrderService
OrderStatus = CanteenOrderStatusEnumType.Wait,
Name = gafinfo.Name,
Source = request.Source,
UserId = canteenUser.UserId,
UserId = canteenUser.UserNo,
UserCode = canteenUser.UserCode,
Amount = request.Amount,
BusinessPlaceCode = businessPlace.Code,
@@ -209,7 +209,7 @@ public class OrderService : IOrderService
{
try
{
var canteenUser = await _dbContext.Queryable<CanteenUserEntity>().Where(x => x.UserId == order.UserId).FirstAsync();
var canteenUser = await _dbContext.Queryable<CanteenUserEntity>().Where(x => x.UserNo == order.UserId).FirstAsync();
//金额+-
canteenUser.Balance += order.Amount;
@@ -224,7 +224,7 @@ public class OrderService : IOrderService
var effect = await _dbContext.Updateable<CanteenUserEntity>()
.SetColumns(x => x.Balance == canteenUser.Balance + order.Amount)
.SetColumns(x => x.Version == x.Version + 1)
.Where(x => x.UserId == order.UserId && x.Version == canteenUser.Version)//必须与查询时的version一致
.Where(x => x.UserNo == order.UserId && x.Version == canteenUser.Version)//必须与查询时的version一致
.ExecuteCommandAsync();
if (effect <= 0)

View File

@@ -25,7 +25,7 @@ public class CanteenSettingService : ICanteenSettingService
public async Task<Pagination<CanteenSettingResponse>> GetPageAsync(CanteenSettingPageRequest request)
{
var page = await _context.Queryable<CanteenSettingEntity>()
.LeftJoin<CanteenUserEntity>((setting, user) => setting.UniqueValue == user.UserId)
.LeftJoin<CanteenUserEntity>((setting, user) => setting.UniqueValue == user.UserNo)
.WhereIF(request.UniqueType.HasValue, setting => setting.UniqueType == request.UniqueType)
.WhereIF(request.Item.HasValue, setting => setting.Item == request.Item)
.WhereIF(request.Search.IsPresent(), setting => setting.UniqueValue.Contains(request.Search))

View File

@@ -11,9 +11,4 @@ public class SqlSugarPack : BaseAppPack
{
services.AddSqlSugar();
}
public override void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
}
}

View File

@@ -16,7 +16,7 @@ public class CanteenUserEntity : SugarBaseEntity, IVersion, ITenantId
/// 档案号
/// </summary>
[SugarColumn(IsNullable = false, ColumnDescription = "档案号")]
public string UserId { get; set; }
public string UserNo { get; set; }
/// <summary>

View File

@@ -13,13 +13,13 @@ public class DepartmentEntity : SugarBaseEntity
/// 部门号
/// </summary>
[SugarColumn(ColumnDescription = "部门号")]
public string Code { get; set; }
public string No { get; set; }
/// <summary>
/// 上级部门号
/// </summary>
[SugarColumn(ColumnDescription = "上级部门号")]
public string PCode { get; set; }
public string PNo { get; set; }
/// <summary>
/// 部门名称

View File

@@ -148,6 +148,12 @@ public class GainfoEntity : SugarBaseEntity
/// </summary>
[SugarColumn(ColumnDescription = "在职状态")]
public string Employed { get; set; }
/// <summary>
/// 身份认证用户Id
/// </summary>
[SugarColumn(ColumnDescription = "身份认证用户Id")]
public int IdentityUserId { get; set; }
}
//[SugarTable(TableName = "GainfoLeave", TableDescription = "离职人员档案表")]

View File

@@ -8,13 +8,13 @@ public enum GenderEnumType
/// <summary>
/// 女性
/// </summary>
[Description("女性")]
[Description("女")]
Female = 0,
/// <summary>
/// 男性
/// </summary>
[Description("男性")]
[Description("男")]
Male = 1,
/// <summary>

View File

@@ -1,5 +1,4 @@
using Dlhis.Entity.Canteen.Enums;
using Kurisu.Core.DataAccess.Entity;
using SqlSugar;
using SqlSugar.DbConvert;
@@ -9,7 +8,7 @@ namespace Dlhis.Entity.Canteen.Entities;
/// 就餐订单
/// </summary>
[SugarTable(TableName = "CanteenOrder", TableDescription = "就餐订单")]
public class CanteenOrderEntity : BalanceRecordEntity, ITenantId
public class CanteenOrderEntity : BalanceRecordEntity
{
/// <summary>
/// 请求json
@@ -40,5 +39,4 @@ public class CanteenOrderEntity : BalanceRecordEntity, ITenantId
/// </summary>
[SugarColumn(ColumnDescription = "处理结果")]
public string Result { get; set; }
public string TenantId { get; set; }
}

View File

@@ -1,5 +1,7 @@
using Kurisu.SqlSugar;
using Dlhis.Entity.Device.Enums;
using Kurisu.SqlSugar;
using SqlSugar;
using SqlSugar.DbConvert;
namespace Dlhis.Entity.Device.Entities;
@@ -9,10 +11,16 @@ namespace Dlhis.Entity.Device.Entities;
[SugarTable(TableName = "DeviceTask")]
public class DeviceTaskEntity : SugarBaseEntity
{
/// <summary>
/// 任务类型
/// </summary>
[SugarColumn(ColumnDataType = "varchar(50)", SqlParameterDbType = typeof(EnumToStringConvert))]
public DeviceTaskEnumType Type { get; set; }
/// <summary>
/// 用户档案号
/// </summary>
public string UserId { get; set; }
public string UserNo { get; set; }
/// <summary>
/// 用户学工号
@@ -34,6 +42,11 @@ public class DeviceTaskEntity : SugarBaseEntity
/// </summary>
public int RetryCount { get; set; }
/// <summary>
/// 任务下发状态
/// </summary>
[SugarColumn(ColumnDataType = "varchar(50)", SqlParameterDbType = typeof(EnumToStringConvert))]
public DeviceTaskStatusEnumType Status { get; set; }
/// <summary>
/// 处理结果

View File

@@ -0,0 +1,30 @@
using System.ComponentModel;
namespace Dlhis.Entity.Device.Enums;
/// <summary>
/// 设备任务类型
/// </summary>
[Description("设备任务类型")]
public enum DeviceTaskEnumType
{
// 状态:ADD-准备下发;ADDOK-下发成功;DEL-准备删除;DELOK-删除成功;AERR-下发错误;DERR-删除错误;UUU-先删除后下发;
/// <summary>
/// 添加
/// </summary>
[Description("添加")]
Add = 1,
/// <summary>
/// 删除
/// </summary>
[Description("删除")]
Delete = 2,
/// <summary>
/// 删除后添加
/// </summary>
[Description("删除后添加")]
AddAfterDelete = 3,
}

View File

@@ -0,0 +1,34 @@
using System.ComponentModel;
namespace Dlhis.Entity.Device.Enums;
/// <summary>
/// 设备任务下发状态
/// </summary>
[Description("设备任务下发状态")]
public enum DeviceTaskStatusEnumType
{
/// <summary>
/// 待下发
/// </summary>
[Description("待下发")]
Wait = 0,
/// <summary>
/// 处理中
/// </summary>
[Description("处理中")]
Process = 5,
/// <summary>
/// 下发完成
/// </summary>
[Description("下发完成")]
Success = 10,
/// <summary>
/// 异常
/// </summary>
[Description("异常")]
Error = 99,
}

View File

@@ -1,75 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<appSettings>
<!--接口服务器地址 后面不要带 "/"-->
<add key="ServerUrl" value="http://172.16.7.58:8125"/>
<!--接口登录用户名-->
<add key="UserName" value="admin_ws"/>
<!--接口登录密码-->
<add key="Password" value="jinkohr@2017"/>
<!--同步人事信息时间-->
<add key="SyncTime" value="00:00"/>
<!--考勤记录上传间隔-->
<add key="AttendanceUploadInterval" value="30"/>
<!--考勤记录上传间隔-->
<add key="AttendanceUploadUrl" value="http://172.16.7.110:8121/sap/bc/srt/wsdl/flv_10002A111AD1/bndg_url/sap/bc/srt/rfc/sap/zhrf_swipe_data_saven/210/zhrf_swipe_data_save/zhrf_swipe_data_save?sap-client=210"/>
<!--迪联数据库连接-->
<add key="DlhisDatabase" value="server=192.168.199.124,32634;uid=sa;pwd=@Z!123456;database=test;"/>
<add key="Werks" value="aaa,bbb"/>
<!--人事信息开始同步日期-->
<add key="BeginSyncDate" value="2020-5-1"/>
<!--HTTP api 监听端口-->
<add key="ApiPort" value="8099"/>
<add key="EHRWebServiceUserName" value="mes_wsuser"/>
<add key="EHRWebServicePassword" value="pid12345"/>
<add key="EHRInsertRecordApiUrl" value="http://172.16.7.70:50000/dir/wsdl?p=ic/0dba887338dd39cebd17fdf55f2f8430"/>
<add key="EHRDeleteRecordApiUrl" value="http://172.16.7.70:50000/dir/wsdl?p=ic/d8b0cfae38313211a93cb5d813ea0062"/>
<add key="EHRSavePhotoApiUrl" value="http://172.16.7.70:50000/XISOAPAdapter/MessageServlet?senderParty=&amp;senderService=DLDM&amp;receiverParty=&amp;receiverService=&amp;interface=SI_DLDM2EHR_InsertRecord_Out&amp;interfaceNamespace=urn%3Ajinkosolar.com%3Adldm%3Aehr_insert_record"/>
<add key="EHR_GET_WORK_CARD_INFOApiUrl" value="http://sappipap01.jinkosolar.cn:50100/RESTAdapter/Rest/EHR_GET_WORK_CARD_INFO/"/>
<!--获取员工卡片信息-->
<add key="RestUserName" value="DL_USER"/>
<add key="RestPassword" value="MWLnaIbGtI9Q4N"/>
<!--RESULT 账号与密码-->
</appSettings>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6"/>
</startup>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral"/>
<bindingRedirect oldVersion="0.0.0.0-12.0.0.0" newVersion="12.0.0.0"/>
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Microsoft.Owin" publicKeyToken="31bf3856ad364e35" culture="neutral"/>
<bindingRedirect oldVersion="0.0.0.0-4.1.0.0" newVersion="4.1.0.0"/>
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.Http" publicKeyToken="31bf3856ad364e35" culture="neutral"/>
<bindingRedirect oldVersion="0.0.0.0-5.2.7.0" newVersion="5.2.7.0"/>
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Net.Http.Formatting" publicKeyToken="31bf3856ad364e35" culture="neutral"/>
<bindingRedirect oldVersion="0.0.0.0-5.2.7.0" newVersion="5.2.7.0"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
<!--
PERNR NUMC 人员号
WERKS CHAR 人事范围
ORGEH NUMC 组织单位
PLANS NUMC 岗位
ZZ_SJGH CHAR 直接上级工号
ZZ_AQJB CHAR 安全级别
NAME CHAR 姓名
GESCH CHAR 性别代码
GBDAT DATS 出生日期
ZZ_SFZH CHAR 身份证号码
ZTELE CHAR 座机号
ZWORKCODE CHAR OA工号
ZMOBILE CHAR 手机
ZEMAIL CHAR 电子邮件
ZSTATUS CHAR 状态
-->

View File

@@ -2,7 +2,7 @@
<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
<Nullable>enable</Nullable>
<Nullable>disable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
<DockerDefaultTargetOS>Linux</DockerDefaultTargetOS>
<DockerfileContext>..\..</DockerfileContext>

View File

@@ -1,11 +1,10 @@
namespace Dlhis.ScheduledTask.Entities
{
public class GainfoSap
{
public GainfoSap()
{
using SqlSugar;
}
namespace Dlhis.ScheduledTask.Entities;
[SugarTable(TableName = "GainfoSap")]
public class GainfoSapEntity
{
[PkColumn]
public int id { get; set; }
@@ -112,4 +111,3 @@
{
}
}

View File

@@ -10,7 +10,6 @@ using System.Text;
using Dlhis.ScheduledTask.Configurations;
using Kurisu.SqlSugar.Services;
using Dlhis.Entity.Basic.Entity;
using Dlhis.ScheduledTask.Wsproxy.Dlhis.JinkoHr.WsProxy;
using Dlhis.Entity.Basic.Enums;
namespace Dlhis.ScheduledTask.Job
@@ -22,7 +21,7 @@ namespace Dlhis.ScheduledTask.Job
private List<ZHRS_ORG> lastUpdatedOrgList = new List<ZHRS_ORG>();
private List<ZHRS_POST> lastUpdatedPositionList = new List<ZHRS_POST>();
private readonly ServiceSettings serviceSettings;
private readonly ZHRS_WERKS[] werks;
private readonly IDbContext _dbContext;
public SyncPersonJob(IDbContext dbContext)
{
@@ -141,7 +140,7 @@ namespace Dlhis.ScheduledTask.Job
return failure;
}
private async Task SavePerson(GainfoSap item)
private async Task SavePerson(GainfoSapEntity item)
{
var gainfo = await _dbContext.Queryable<GainfoEntity>().Where(x => x.IdNo == item.idno).FirstAsync();
if (gainfo != null)
@@ -191,7 +190,7 @@ namespace Dlhis.ScheduledTask.Job
await _dbContext.InsertAsync(info);
}
}
private async Task UpdatePerson(GainfoSap item)
private async Task UpdatePerson(GainfoSapEntity item)
{
var gainfo = await _dbContext.Queryable<GainfoEntity>().Where(x => x.IdNo == item.idno).FirstAsync();
if (gainfo != null)
@@ -242,58 +241,58 @@ namespace Dlhis.ScheduledTask.Job
var headerValue = Convert.ToBase64String(Encoding.UTF8.GetBytes(credentials));
httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", headerValue);
List<PersonDetail> persons = new List<PersonDetail>();
foreach (var item in werks)
{
try
{
var body = new
{
T_WERKS = new
{
item = new List<object>
{
new
{
item.WERKS
}
}
},
T_PERSON = Array.Empty<string>(),
T_PNO = Array.Empty<string>(),
};
var content = new StringContent(JsonConvert.SerializeObject(body), Encoding.UTF8, "application/json");
var response = httpClient.PostAsync("http://sappipap01.jinkosolar.cn:50100/RESTAdapter/Rest/EHR_PERSONNEL/", content).Result;
var jsonResponse = response.Content.ReadAsStringAsync().Result;
if (response.IsSuccessStatusCode)
{
PersonResult personResp = JsonConvert.DeserializeObject<PersonResult>(jsonResponse);
if (personResp?.T_PERSON?.item?.Any() == true)
{
persons.AddRange(personResp.T_PERSON.item);
//log.Info($"人事范围[{item.WERKS}]获取{personResp.T_PERSON.item.Count}条数据");
}
}
else
{
throw new Exception($"请求异常:{response.StatusCode}:" + jsonResponse);
}
// this is webservice call
//var personResp = archivesClient.ZHRF_SYN_03(new ZHRF_SYN_03()
List<PersonDetail> persons = new();
//foreach (var item in werks)
//{
// //I_DATE = Settings.BeginSyncDate.ToString("yyy-MM-dd"),
// T_PERSON = Array.Empty<ZHRS_PERSON>(),
// T_PNO = Array.Empty<ZHRS_PNO>(),
// T_WERKS = new ZHRS_WERKS[] { item },
//});
}
catch (Exception ex)
{
//log.Error($"人事范围[{item.WERKS}]获取失败:{ex.Message}", ex);
}
}
// try
// {
// var body = new
// {
// T_WERKS = new
// {
// item = new List<object>
// {
// new
// {
// item.WERKS
// }
// }
// },
// T_PERSON = Array.Empty<string>(),
// T_PNO = Array.Empty<string>(),
// };
// var content = new StringContent(JsonConvert.SerializeObject(body), Encoding.UTF8, "application/json");
// var response = httpClient.PostAsync("http://sappipap01.jinkosolar.cn:50100/RESTAdapter/Rest/EHR_PERSONNEL/", content).Result;
// var jsonResponse = response.Content.ReadAsStringAsync().Result;
// if (response.IsSuccessStatusCode)
// {
// PersonResult personResp = JsonConvert.DeserializeObject<PersonResult>(jsonResponse);
// if (personResp?.T_PERSON?.item?.Any() == true)
// {
// persons.AddRange(personResp.T_PERSON.item);
// //log.Info($"人事范围[{item.WERKS}]获取{personResp.T_PERSON.item.Count}条数据");
// }
// }
// else
// {
// throw new Exception($"请求异常:{response.StatusCode}:" + jsonResponse);
// }
// // this is webservice call
// //var personResp = archivesClient.ZHRF_SYN_03(new ZHRF_SYN_03()
// //{
// // //I_DATE = Settings.BeginSyncDate.ToString("yyy-MM-dd"),
// // T_PERSON = Array.Empty<ZHRS_PERSON>(),
// // T_PNO = Array.Empty<ZHRS_PNO>(),
// // T_WERKS = new ZHRS_WERKS[] { item },
// //});
// }
// catch (Exception ex)
// {
// //log.Error($"人事范围[{item.WERKS}]获取失败:{ex.Message}", ex);
// }
//}
return new PersonResult()
{
@@ -312,11 +311,11 @@ namespace Dlhis.ScheduledTask.Job
var needRemove = sapList.Intersect(lastUpdatedPersonList, new ZHRS_PERSONComparer());
return sapList.Except(needRemove, new ZHRS_PERSONComparer()).ToList();
}
private List<GainfoSap> ToGainfoSap(List<PersonDetail> data)
private List<GainfoSapEntity> ToGainfoSap(List<PersonDetail> data)
{
return data.Select(person =>
{
GainfoSap o = null;
GainfoSapEntity o = null;
try
{
@@ -337,7 +336,7 @@ namespace Dlhis.ScheduledTask.Job
var sex = person.GESCH == "2" ? "F" : "M";
person.ZZ_SFZH = person.ZZ_SFZH?.TrimStart();
o = new GainfoSap
o = new GainfoSapEntity
{
gname = person.NAME,
ename = person.ZWORKCODE,

View File

@@ -1,7 +1,7 @@
using Hangfire;
namespace Dlhis.ScheduledTask.Job
{
namespace Dlhis.ScheduledTask.Job;
public static class UseHangfire
{
public static void UseHangfireto(this IServiceCollection services)
@@ -9,4 +9,3 @@ namespace Dlhis.ScheduledTask.Job
GlobalConfiguration.Configuration.UseActivator(new HangfireActivator(services.BuildServiceProvider()));
}
}
}

View File

@@ -9,7 +9,6 @@ public class SqlSugarPack : BaseAppPack
public override void ConfigureServices(IServiceCollection services)
{
services.AddHttpContextAccessor();
services.AddSqlSugar();
}
}

View File

@@ -6,14 +6,6 @@
"ASPNETCORE_ENVIRONMENT": "Development"
},
"applicationUrl": "http://localhost:5010"
},
"Docker": {
"commandName": "Docker",
"launchUrl": "{Scheme}://{ServiceHost}:{ServicePort}",
"environmentVariables": {
"ASPNETCORE_URLS": "http://+:80"
},
"publishAllPorts": true
}
}
}

View File

@@ -0,0 +1,35 @@
using Dlhis.ScheduledTask.TaskAssignment.Request;
using Dlhis.ScheduledTask.TaskAssignment.Response;
using Dlhis.ScheduledTask.TaskAssignment.Services;
using Kurisu.Core.DataAccess.Dto;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
namespace Dlhis.ScheduledTask.TaskAssignment.Controllers;
/// <summary>
/// 设备任务下发
/// </summary>
[Authorize]
[Route("api/[controller]")]
[ApiController]
public class DeviceTaskAssignmentsController : ControllerBase
{
private readonly IDeviceTaskAssignmentService _deviceTaskAssignmentService;
public DeviceTaskAssignmentsController(IDeviceTaskAssignmentService deviceTaskAssignmentService)
{
_deviceTaskAssignmentService = deviceTaskAssignmentService;
}
/// <summary>
/// 设备任务下发分页
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
[HttpGet("page")]
public async Task<Pagination<DeviceTaskAssignmentResponse>> GetPageAsync([FromQuery] DeviceTaskAssignmentRequest request)
{
return await _deviceTaskAssignmentService.GetPageAsync(request);
}
}

View File

@@ -0,0 +1,7 @@
using Kurisu.Core.DataAccess.Dto;
namespace Dlhis.ScheduledTask.TaskAssignment.Request;
public class DeviceTaskAssignmentRequest : PageDto
{
}

View File

@@ -0,0 +1,62 @@
using Dlhis.Entity.Device.Enums;
using Kurisu.AspNetCore.Utils.Extensions;
namespace Dlhis.ScheduledTask.TaskAssignment.Response;
public class DeviceTaskAssignmentResponse
{
/// <summary>
/// 任务类型
/// </summary>
public DeviceTaskEnumType Type { get; set; }
/// <summary>
/// 任务类型描述
/// </summary>
public string TypeDesc => Type.GetDescription();
/// <summary>
/// 用户档案号
/// </summary>
public string UserNo { get; set; }
/// <summary>
/// 用户学工号
/// </summary>
public string UserCode { get; set; }
/// <summary>
/// 用户名
/// </summary>
public string UserName { get; set; }
/// <summary>
/// 设备唯一号
/// </summary>
public string DeviceUniqueNo { get; set; }
/// <summary>
/// 重试次数
/// </summary>
public int RetryCount { get; set; }
/// <summary>
/// 任务下发状态
/// </summary>
public DeviceTaskStatusEnumType Status { get; set; }
/// <summary>
/// 任务下发状态描述
/// </summary>
public string StatusDesc => Status.GetDescription();
/// <summary>
/// 处理结果
/// </summary>
public string ResultMessage { get; set; }
/// <summary>
/// 数据状态最新修改时间
/// </summary>
public DateTime LastUpdateTime { get; set; }
}

View File

@@ -0,0 +1,10 @@
using Dlhis.ScheduledTask.TaskAssignment.Request;
using Dlhis.ScheduledTask.TaskAssignment.Response;
using Kurisu.Core.DataAccess.Dto;
namespace Dlhis.ScheduledTask.TaskAssignment.Services;
public interface IDeviceTaskAssignmentService : IScopeDependency
{
Task<Pagination<DeviceTaskAssignmentResponse>> GetPageAsync(DeviceTaskAssignmentRequest request);
}

View File

@@ -0,0 +1,38 @@
using Dlhis.Entity.Device.Entities;
using Dlhis.ScheduledTask.TaskAssignment.Request;
using Dlhis.ScheduledTask.TaskAssignment.Response;
using Kurisu.Core.DataAccess.Dto;
using Kurisu.SqlSugar.Extensions;
using Kurisu.SqlSugar.Services;
namespace Dlhis.ScheduledTask.TaskAssignment.Services.Implements;
public class DeviceTaskAssignmentService : IDeviceTaskAssignmentService
{
private readonly IDbContext _dbContext;
public DeviceTaskAssignmentService(IDbContext dbContext)
{
_dbContext = dbContext;
}
public async Task<Pagination<DeviceTaskAssignmentResponse>> GetPageAsync(DeviceTaskAssignmentRequest request)
{
var page = await _dbContext.Queryable<DeviceTaskEntity>()
.Select((deviceTask) => new DeviceTaskAssignmentResponse
{
DeviceUniqueNo = deviceTask.DeviceUniqueNo,
ResultMessage = deviceTask.ResultMessage,
RetryCount = deviceTask.RetryCount,
Status = deviceTask.Status,
UserNo = deviceTask.UserNo,
UserName = deviceTask.UserName,
UserCode = deviceTask.UserCode,
Type = deviceTask.Type,
LastUpdateTime = deviceTask.ModifiedTime
})
.ToPageListAsync(request);
return page;
}
}

View File

@@ -1,851 +0,0 @@
namespace Dlhis.ScheduledTask.Wsproxy
{
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
//
// This source code was auto-generated by wsdl, Version=4.6.1055.0.
//
namespace Dlhis.JinkoHr.WsProxy
{
/// <remarks/>
// CODEGEN: The optional WSDL extension element 'Policy' from namespace 'http://schemas.xmlsoap.org/ws/2004/09/policy' was not handled.
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "4.6.1055.0")]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
//[System.Web.Services.WebServiceBindingAttribute(Name = "ZHRF_SYN_03N", Namespace = "urn:sap-com:document:sap:rfc:functions")]
/*public partial class ZHRF_SYN_03N : System.Web.Services.Protocols.SoapHttpClientProtocol
{
private System.Threading.SendOrPostCallback ZHRF_SYN_03OperationCompleted;
/// <remarks/>
public ZHRF_SYN_03N()
{
this.Url = "http://172.16.7.58:8125/sap/bc/srt/rfc/sap/zhrf_syn_03n/800/zhrf_syn" +
"_03n/zhrf_syn_03n";
}
/// <remarks/>
public event ZHRF_SYN_03CompletedEventHandler ZHRF_SYN_03Completed;
/// <remarks/>
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("urn:sap-com:document:sap:rfc:functions:ZHRF_SYN_03N:ZHRF_SYN_03Request", Use = System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle = System.Web.Services.Protocols.SoapParameterStyle.Bare)]
[return: System.Xml.Serialization.XmlElementAttribute("ZHRF_SYN_03Response", Namespace = "urn:sap-com:document:sap:rfc:functions")]
public ZHRF_SYN_03Response ZHRF_SYN_03([System.Xml.Serialization.XmlElementAttribute("ZHRF_SYN_03", Namespace = "urn:sap-com:document:sap:rfc:functions")] ZHRF_SYN_03 ZHRF_SYN_031)
{
object[] results = this.Invoke("ZHRF_SYN_03", new object[] {
ZHRF_SYN_031});
return ((ZHRF_SYN_03Response)(results[0]));
}
/// <remarks/>
public System.IAsyncResult BeginZHRF_SYN_03(ZHRF_SYN_03 ZHRF_SYN_031, System.AsyncCallback callback, object asyncState)
{
return this.BeginInvoke("ZHRF_SYN_03", new object[] {
ZHRF_SYN_031}, callback, asyncState);
}
/// <remarks/>
public ZHRF_SYN_03Response EndZHRF_SYN_03(System.IAsyncResult asyncResult)
{
object[] results = this.EndInvoke(asyncResult);
return ((ZHRF_SYN_03Response)(results[0]));
}
/// <remarks/>
public void ZHRF_SYN_03Async(ZHRF_SYN_03 ZHRF_SYN_031)
{
this.ZHRF_SYN_03Async(ZHRF_SYN_031, null);
}
/// <remarks/>
public void ZHRF_SYN_03Async(ZHRF_SYN_03 ZHRF_SYN_031, object userState)
{
if ((this.ZHRF_SYN_03OperationCompleted == null))
{
this.ZHRF_SYN_03OperationCompleted = new System.Threading.SendOrPostCallback(this.OnZHRF_SYN_03OperationCompleted);
}
this.InvokeAsync("ZHRF_SYN_03", new object[] {
ZHRF_SYN_031}, this.ZHRF_SYN_03OperationCompleted, userState);
}
private void OnZHRF_SYN_03OperationCompleted(object arg)
{
if ((this.ZHRF_SYN_03Completed != null))
{
System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
this.ZHRF_SYN_03Completed(this, new ZHRF_SYN_03CompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
}
}
/// <remarks/>
public new void CancelAsync(object userState)
{
base.CancelAsync(userState);
}
}*/
/* /// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "4.6.1055.0")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]*/
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true, Namespace = "urn:sap-com:document:sap:rfc:functions")]
public partial class ZHRF_SYN_03
{
private string i_DATEField;
private ZHRS_PERSON[] t_PERSONField;
private ZHRS_PNO[] t_PNOField;
private ZHRS_WERKS[] t_WERKSField;
/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute(Form = System.Xml.Schema.XmlSchemaForm.Unqualified)]
public string I_DATE
{
get
{
return this.i_DATEField;
}
set
{
this.i_DATEField = value;
}
}
/// <remarks/>
[System.Xml.Serialization.XmlArrayAttribute(Form = System.Xml.Schema.XmlSchemaForm.Unqualified)]
[System.Xml.Serialization.XmlArrayItemAttribute("item", Form = System.Xml.Schema.XmlSchemaForm.Unqualified, IsNullable = false)]
public ZHRS_PERSON[] T_PERSON
{
get
{
return this.t_PERSONField;
}
set
{
this.t_PERSONField = value;
}
}
/// <remarks/>
[System.Xml.Serialization.XmlArrayAttribute(Form = System.Xml.Schema.XmlSchemaForm.Unqualified)]
[System.Xml.Serialization.XmlArrayItemAttribute("item", Form = System.Xml.Schema.XmlSchemaForm.Unqualified, IsNullable = false)]
public ZHRS_PNO[] T_PNO
{
get
{
return this.t_PNOField;
}
set
{
this.t_PNOField = value;
}
}
/// <remarks/>
[System.Xml.Serialization.XmlArrayAttribute(Form = System.Xml.Schema.XmlSchemaForm.Unqualified)]
[System.Xml.Serialization.XmlArrayItemAttribute("item", Form = System.Xml.Schema.XmlSchemaForm.Unqualified, IsNullable = false)]
public ZHRS_WERKS[] T_WERKS
{
get
{
return this.t_WERKSField;
}
set
{
this.t_WERKSField = value;
}
}
}
/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "4.6.1055.0")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(Namespace = "urn:sap-com:document:sap:rfc:functions")]
public partial class ZHRS_PERSON
{
private string pERNRField;
private string wERKSField;
private string oRGEHField;
private string pLANSField;
private string zZ_SJGHField;
private string zZ_AQJBField;
private string nAMEField;
private string gESCHField;
private string gBDATField;
private string zZ_SFZHField;
private string zTELEField;
private string zWORKCODEField;
private string zMOBILEField;
private string zEMAILField;
private string zSTATUSField;
private string zZZ_XSQYField;
private string zKOSTLField;
private string zZZ_ZDField;
private string zZ_ZJField;
private string zZRZRQField;
private string zZLZRQField;
private string zMASSGField;
private string zMGTXTField;
private string zBEGDAField;
private string zENDDAField;
private string zSTELLField;
private string zSTELL_NMField;
private string zZADZHField;
private string zSTAT2Field;
private string zZCJRQField;
private string zZZZRQField;
private string zMASSNField;
private string zMNTXTField;
private string zXUELIField;
private string zZ_KLXField;
/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute(Form = System.Xml.Schema.XmlSchemaForm.Unqualified)]
public string PERNR
{
get
{
return this.pERNRField;
}
set
{
this.pERNRField = value;
}
}
/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute(Form = System.Xml.Schema.XmlSchemaForm.Unqualified)]
public string WERKS
{
get
{
return this.wERKSField;
}
set
{
this.wERKSField = value;
}
}
/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute(Form = System.Xml.Schema.XmlSchemaForm.Unqualified)]
public string ORGEH
{
get
{
return this.oRGEHField;
}
set
{
this.oRGEHField = value;
}
}
/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute(Form = System.Xml.Schema.XmlSchemaForm.Unqualified)]
public string PLANS
{
get
{
return this.pLANSField;
}
set
{
this.pLANSField = value;
}
}
/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute(Form = System.Xml.Schema.XmlSchemaForm.Unqualified)]
public string ZZ_SJGH
{
get
{
return this.zZ_SJGHField;
}
set
{
this.zZ_SJGHField = value;
}
}
/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute(Form = System.Xml.Schema.XmlSchemaForm.Unqualified)]
public string ZZ_AQJB
{
get
{
return this.zZ_AQJBField;
}
set
{
this.zZ_AQJBField = value;
}
}
/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute(Form = System.Xml.Schema.XmlSchemaForm.Unqualified)]
public string NAME
{
get
{
return this.nAMEField;
}
set
{
this.nAMEField = value;
}
}
/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute(Form = System.Xml.Schema.XmlSchemaForm.Unqualified)]
public string GESCH
{
get
{
return this.gESCHField;
}
set
{
this.gESCHField = value;
}
}
/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute(Form = System.Xml.Schema.XmlSchemaForm.Unqualified)]
public string GBDAT
{
get
{
return this.gBDATField;
}
set
{
this.gBDATField = value;
}
}
/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute(Form = System.Xml.Schema.XmlSchemaForm.Unqualified)]
public string ZZ_SFZH
{
get
{
return this.zZ_SFZHField;
}
set
{
this.zZ_SFZHField = value;
}
}
/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute(Form = System.Xml.Schema.XmlSchemaForm.Unqualified)]
public string ZTELE
{
get
{
return this.zTELEField;
}
set
{
this.zTELEField = value;
}
}
/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute(Form = System.Xml.Schema.XmlSchemaForm.Unqualified)]
public string ZWORKCODE
{
get
{
return this.zWORKCODEField;
}
set
{
this.zWORKCODEField = value;
}
}
/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute(Form = System.Xml.Schema.XmlSchemaForm.Unqualified)]
public string ZMOBILE
{
get
{
return this.zMOBILEField;
}
set
{
this.zMOBILEField = value;
}
}
/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute(Form = System.Xml.Schema.XmlSchemaForm.Unqualified)]
public string ZEMAIL
{
get
{
return this.zEMAILField;
}
set
{
this.zEMAILField = value;
}
}
/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute(Form = System.Xml.Schema.XmlSchemaForm.Unqualified)]
public string ZSTATUS
{
get
{
return this.zSTATUSField;
}
set
{
this.zSTATUSField = value;
}
}
/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute(Form = System.Xml.Schema.XmlSchemaForm.Unqualified)]
public string ZZ_XSQY
{
get
{
return this.zZZ_XSQYField;
}
set
{
this.zZZ_XSQYField = value;
}
}
/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute(Form = System.Xml.Schema.XmlSchemaForm.Unqualified)]
public string KOSTL
{
get
{
return this.zKOSTLField;
}
set
{
this.zKOSTLField = value;
}
}
/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute(Form = System.Xml.Schema.XmlSchemaForm.Unqualified)]
public string ZZ_ZD
{
get
{
return this.zZZ_ZDField;
}
set
{
this.zZZ_ZDField = value;
}
}
/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute(Form = System.Xml.Schema.XmlSchemaForm.Unqualified)]
/// <remarks/>
public string Z_ZJ
{
get
{
return this.zZ_ZJField;
}
set
{
this.zZ_ZJField = value;
}
}
/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute(Form = System.Xml.Schema.XmlSchemaForm.Unqualified)]
public string ZRZRQ
{
get
{
return this.zZRZRQField;
}
set
{
this.zZRZRQField = value;
}
}
/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute(Form = System.Xml.Schema.XmlSchemaForm.Unqualified)]
public string ZLZRQ
{
get
{
return this.zZLZRQField;
}
set
{
this.zZLZRQField = value;
}
}
/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute(Form = System.Xml.Schema.XmlSchemaForm.Unqualified)]
public string MASSG
{
get
{
return this.zMASSGField;
}
set
{
this.zMASSGField = value;
}
}
/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute(Form = System.Xml.Schema.XmlSchemaForm.Unqualified)]
public string MGTXT
{
get
{
return this.zMGTXTField;
}
set
{
this.zMGTXTField = value;
}
}
[System.Xml.Serialization.XmlElementAttribute(Form = System.Xml.Schema.XmlSchemaForm.Unqualified)]
public string BEGDA
{
get
{
return zBEGDAField;
}
set
{
zBEGDAField = value;
}
}
[System.Xml.Serialization.XmlElementAttribute(Form = System.Xml.Schema.XmlSchemaForm.Unqualified)]
public string ENDDA
{
get
{
return zENDDAField;
}
set
{
zENDDAField = value;
}
}
[System.Xml.Serialization.XmlElementAttribute(Form = System.Xml.Schema.XmlSchemaForm.Unqualified)]
public string STELL
{
get
{
return zSTELLField;
}
set
{
zSTELLField = value;
}
}
[System.Xml.Serialization.XmlElementAttribute(Form = System.Xml.Schema.XmlSchemaForm.Unqualified)]
public string STELL_NM
{
get
{
return zSTELL_NMField;
}
set
{
zSTELL_NMField = value;
}
}
[System.Xml.Serialization.XmlElementAttribute(Form = System.Xml.Schema.XmlSchemaForm.Unqualified)]
public string ZADZH
{
get
{
return zZADZHField;
}
set
{
zZADZHField = value;
}
}
[System.Xml.Serialization.XmlElementAttribute(Form = System.Xml.Schema.XmlSchemaForm.Unqualified)]
public string STAT2
{
get
{
return zSTAT2Field;
}
set
{
zSTAT2Field = value;
}
}
[System.Xml.Serialization.XmlElementAttribute(Form = System.Xml.Schema.XmlSchemaForm.Unqualified)]
public string ZCJRQ
{
get
{
return zZCJRQField;
}
set
{
zZCJRQField = value;
}
}
[System.Xml.Serialization.XmlElementAttribute(Form = System.Xml.Schema.XmlSchemaForm.Unqualified)]
public string ZZZRQ
{
get
{
return zZZZRQField;
}
set
{
zZZZRQField = value;
}
}
[System.Xml.Serialization.XmlElementAttribute(Form = System.Xml.Schema.XmlSchemaForm.Unqualified)]
public string MASSN
{
get
{
return zMASSNField;
}
set
{
zMASSNField = value;
}
}
[System.Xml.Serialization.XmlElementAttribute(Form = System.Xml.Schema.XmlSchemaForm.Unqualified)]
public string MNTXT
{
get
{
return zMNTXTField;
}
set
{
zMNTXTField = value;
}
}
[System.Xml.Serialization.XmlElementAttribute(Form = System.Xml.Schema.XmlSchemaForm.Unqualified)]
public string ZXUELI
{
get
{
return zXUELIField;
}
set
{
zXUELIField = value;
}
}
[System.Xml.Serialization.XmlElementAttribute(Form = System.Xml.Schema.XmlSchemaForm.Unqualified)]
public string ZZ_KLX
{
get
{
return zZ_KLXField;
}
set
{
zZ_KLXField = value;
}
}
}
/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "4.6.1055.0")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(Namespace = "urn:sap-com:document:sap:rfc:functions")]
public partial class ZHRS_WERKS
{
private string wERKSField;
/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute(Form = System.Xml.Schema.XmlSchemaForm.Unqualified)]
public string WERKS
{
get
{
return this.wERKSField;
}
set
{
this.wERKSField = value;
}
}
}
/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "4.6.1055.0")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(Namespace = "urn:sap-com:document:sap:rfc:functions")]
public partial class ZHRS_PNO
{
private string zWORKCODEField;
/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute(Form = System.Xml.Schema.XmlSchemaForm.Unqualified)]
public string ZWORKCODE
{
get
{
return this.zWORKCODEField;
}
set
{
this.zWORKCODEField = value;
}
}
}
/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "4.6.1055.0")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true, Namespace = "urn:sap-com:document:sap:rfc:functions")]
public partial class ZHRF_SYN_03Response
{
private ZHRS_PERSON[] t_PERSONField;
private ZHRS_PNO[] t_PNOField;
private ZHRS_WERKS[] t_WERKSField;
/// <remarks/>
[System.Xml.Serialization.XmlArrayAttribute(Form = System.Xml.Schema.XmlSchemaForm.Unqualified)]
[System.Xml.Serialization.XmlArrayItemAttribute("item", Form = System.Xml.Schema.XmlSchemaForm.Unqualified, IsNullable = false)]
public ZHRS_PERSON[] T_PERSON
{
get
{
return this.t_PERSONField;
}
set
{
this.t_PERSONField = value;
}
}
/// <remarks/>
[System.Xml.Serialization.XmlArrayAttribute(Form = System.Xml.Schema.XmlSchemaForm.Unqualified)]
[System.Xml.Serialization.XmlArrayItemAttribute("item", Form = System.Xml.Schema.XmlSchemaForm.Unqualified, IsNullable = false)]
public ZHRS_PNO[] T_PNO
{
get
{
return this.t_PNOField;
}
set
{
this.t_PNOField = value;
}
}
/// <remarks/>
[System.Xml.Serialization.XmlArrayAttribute(Form = System.Xml.Schema.XmlSchemaForm.Unqualified)]
[System.Xml.Serialization.XmlArrayItemAttribute("item", Form = System.Xml.Schema.XmlSchemaForm.Unqualified, IsNullable = false)]
public ZHRS_WERKS[] T_WERKS
{
get
{
return this.t_WERKSField;
}
set
{
this.t_WERKSField = value;
}
}
}
/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "4.6.1055.0")]
public delegate void ZHRF_SYN_03CompletedEventHandler(object sender, ZHRF_SYN_03CompletedEventArgs e);
/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "4.6.1055.0")]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
public partial class ZHRF_SYN_03CompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs
{
private object[] results;
internal ZHRF_SYN_03CompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) :
base(exception, cancelled, userState)
{
this.results = results;
}
/// <remarks/>
public ZHRF_SYN_03Response Result
{
get
{
this.RaiseExceptionIfNecessary();
return ((ZHRF_SYN_03Response)(this.results[0]));
}
}
}
}
}

View File

@@ -4,5 +4,28 @@
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
},
"SwaggerOptions": {
"Enable": true,
"Authority": "https://yikatong.isawesome.cn/oauth2",
"ClientId": "4fb184324eac4180",
"ClientSecret": "8ac8f235152f1524",
"Scopes": {
"openid": "openid",
"profile": "profile",
"yikatong": "yikatong"
}
},
"IdentityServerOptions": {
"Authority": "https://yikatong.isawesome.cn/oauth2",
"RequireHttpsMetadata": true,
"Issuer": "identity.isawesome.cn",
"Audience": "",
"Pat": {
"Enable": false,
"Scheme": "token",
"ClientId": "reference",
"ClientSecret": "123456"
}
}
}

View File

@@ -15,6 +15,29 @@
"ConnectionStrings": {
"HangfireConnection": "server=192.168.199.124;port=3306;userid=root;password=dlhis123;database=HangFire;charset=utf8mb4;Allow User Variables=true;"
},
"SwaggerOptions": {
"Enable": true,
"Authority": "http://identity.oauth.svc.cluster.local",
"ClientId": "4fb184324eac4180",
"ClientSecret": "8ac8f235152f1524",
"Scopes": {
"openid": "openid",
"profile": "profile",
"yikatong": "yikatong"
}
},
"IdentityServerOptions": {
"Authority": "http://identity.oauth.svc.cluster.local",
"RequireHttpsMetadata": false,
"Issuer": "identity.isawesome.cn",
"Audience": "",
"Pat": {
"Enable": false,
"Scheme": "token",
"ClientId": "reference",
"ClientSecret": "123456"
}
},
"ServiceSettings": {
"ServerUrl": "http://172.16.7.58:8125",
"UserName": "admin_ws",

View File

@@ -6,8 +6,8 @@
}
},
"InternalRequest": {
"CommonRequestUrl": "http://common",
"UserRequestUrl": "http://localhost:5010"
"CommonRequestUrl": "http://localhost:5001",
"UserRequestUrl": "http://localhost:5004"
},
"SwaggerOptions": {
"Enable": true,

View File

@@ -0,0 +1,14 @@
using Dlhis.User.Api.Response;
using Kurisu.Core.Result;
using Kurisu.RemoteCall.Attributes;
namespace Dlhis.User.Api;
[EnableRemoteClient(Name = "user-service", BaseUrl = "${InternalRequest:UserRequestUrl}")]
public interface ITenantApi
{
[Auth]
[Get("/api/tenants/list")]
Task<DefaultApiResult<List<TenantResponse>>> GetTenantsAsync();
}

View File

@@ -0,0 +1,10 @@
namespace Dlhis.User.Api.Response;
public class TenantResponse
{
public int Id { get; set; }
public string Code { get; set; }
public string Name { get; set; }
}

View File

@@ -6,6 +6,7 @@
<ImplicitUsings>enable</ImplicitUsings>
<DockerDefaultTargetOS>Linux</DockerDefaultTargetOS>
<DockerfileContext>..\..</DockerfileContext>
<GenerateDocumentationFile>True</GenerateDocumentationFile>
</PropertyGroup>
<ItemGroup>

View File

@@ -0,0 +1,42 @@
using Dlhis.User.Identity.Request;
using Dlhis.User.Identity.Response;
using Dlhis.User.Identity.Services;
using Kurisu.Core.DataAccess.Dto;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
namespace Dlhis.User.Identity.Controllers;
[Authorize]
[Route("api/[controller]")]
[ApiController]
public class TenantsController : ControllerBase
{
private readonly ITenantService _tenantService;
public TenantsController(ITenantService tenantService)
{
_tenantService = tenantService;
}
/// <summary>
/// 获取租户分页
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
[HttpGet("page")]
public async Task<Pagination<TenantResponse>> GetPageAsync([FromQuery] TenantPageRequest request)
{
return await _tenantService.GetPageAsync(request);
}
/// <summary>
/// 获取所有租户
/// </summary>
/// <returns></returns>
[HttpGet("list")]
public async Task<List<TenantResponse>> GetListAsync()
{
return await _tenantService.GetListAsync();
}
}

View File

@@ -0,0 +1,8 @@
using Kurisu.Core.DataAccess.Dto;
namespace Dlhis.User.Identity.Request
{
public class TenantPageRequest : PageDto
{
}
}

View File

@@ -0,0 +1,10 @@
namespace Dlhis.User.Identity.Response;
public class TenantResponse
{
public int Id { get; set; }
public string Code { get; set; }
public string Name { get; set; }
}

View File

@@ -0,0 +1,12 @@
using Dlhis.User.Identity.Request;
using Dlhis.User.Identity.Response;
using Kurisu.Core.DataAccess.Dto;
namespace Dlhis.User.Identity.Services;
public interface ITenantService : IScopeDependency
{
Task<Pagination<TenantResponse>> GetPageAsync(TenantPageRequest request);
Task<List<TenantResponse>> GetListAsync();
}

View File

@@ -0,0 +1,27 @@
using Dlhis.Entity.Sys.Entities;
using Dlhis.User.Identity.Request;
using Dlhis.User.Identity.Response;
using Kurisu.AspNetCore.Utils.Extensions;
using Kurisu.Core.DataAccess.Dto;
using Kurisu.SqlSugar.Extensions;
using Kurisu.SqlSugar.Services;
namespace Dlhis.User.Identity.Services.Implements;
public class RoleService : IRoleService
{
private readonly IDbContext _dbContext;
public RoleService(IDbContext dbContext)
{
_dbContext = dbContext;
}
public async Task<Pagination<RoleRespone>> GetPageAsync(RolePageRequest request)
{
return await _dbContext.Queryable<RoleEntity>()
.WhereIF(request.Search.IsPresent(), x => x.Name.Contains(request.Search) || x.NormalizedName.Contains(request.Search))
.Select<RoleRespone>()
.ToPageListAsync(request);
}
}

View File

@@ -0,0 +1,34 @@
using Dlhis.Entity.Sys.Entities;
using Dlhis.User.Identity.Request;
using Dlhis.User.Identity.Response;
using Kurisu.AspNetCore.Utils.Extensions;
using Kurisu.Core.DataAccess.Dto;
using Kurisu.SqlSugar.Extensions;
using Kurisu.SqlSugar.Services;
namespace Dlhis.User.Identity.Services.Implements;
public class TenantService : ITenantService
{
private readonly IDbContext _dbContext;
public TenantService(IDbContext dbContext)
{
_dbContext = dbContext;
}
public async Task<Pagination<TenantResponse>> GetPageAsync(TenantPageRequest request)
{
return await _dbContext.Queryable<TenantEntity>()
.WhereIF(request.Search.IsPresent(), (tenant) => tenant.Name.Contains(request.Search))
.Select<TenantResponse>()
.ToPageListAsync(request);
}
public async Task<List<TenantResponse>> GetListAsync()
{
return await _dbContext.Queryable<TenantEntity>()
.Select<TenantResponse>()
.ToListAsync();
}
}

View File

@@ -6,7 +6,7 @@
"ASPNETCORE_ENVIRONMENT": "Development"
},
"dotnetRunMessages": true,
"applicationUrl": "http://localhost:5010"
"applicationUrl": "http://localhost:5004"
}
},
"$schema": "https://json.schemastore.org/launchsettings.json"

View File

@@ -16,7 +16,6 @@
"Scopes": {
"openid": "openid",
"profile": "profile",
"role": "role",
"yikatong": "yikatong"
}
},

View File

@@ -22,7 +22,6 @@
"Scopes": {
"openid": "openid",
"profile": "profile",
"role": "role",
"yikatong": "yikatong"
}
},