合并
This commit is contained in:
@@ -8,6 +8,4 @@ public class DevicePageRequest : PageDto
|
||||
/// 平台
|
||||
/// </summary>
|
||||
public string Brand { get; set; }
|
||||
|
||||
public string MyProperty { get; set; }
|
||||
}
|
||||
|
||||
@@ -14,6 +14,8 @@ public class DeviceUnderGroupResponse
|
||||
/// </summary>
|
||||
public string Brand { get; set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 是否启用
|
||||
/// </summary>
|
||||
public bool Enable { get; set; }
|
||||
}
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
@@ -5,7 +5,7 @@ public class DepartmentTreeResponse
|
||||
/// <summary>
|
||||
/// 部门号
|
||||
/// </summary>
|
||||
public string Code { get; set; }
|
||||
public string No { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 部门名称
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
namespace Dlhis.Basic.Organization.Response;
|
||||
|
||||
public class GainfoCurrentMealInfoResponse
|
||||
{
|
||||
/// <summary>
|
||||
/// 余额
|
||||
/// </summary>
|
||||
public decimal Balance { get; set; }
|
||||
}
|
||||
@@ -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; }
|
||||
}
|
||||
@@ -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; }
|
||||
}
|
||||
@@ -16,4 +16,6 @@ public interface IGainfoService : IScopeDependency
|
||||
Task DimissionAsync(GainfoDImissionRequest request);
|
||||
|
||||
Task OnboardingAsync(GainfoDImissionRequest request);
|
||||
|
||||
Task<GainfoCurrentResponse> CurrentUserInfoAsync();
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
{
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
*/
|
||||
@@ -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
|
||||
|
||||
@@ -6,7 +6,8 @@
|
||||
}
|
||||
},
|
||||
"InternalRequest": {
|
||||
"CommonRequestUrl": "http://localhost:5001"
|
||||
"CommonRequestUrl": "http://localhost:5001",
|
||||
"UserRequestUrl": "http://localhost:5004"
|
||||
},
|
||||
"SwaggerOptions": {
|
||||
"Enable": true,
|
||||
|
||||
@@ -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;",
|
||||
|
||||
@@ -7,6 +7,9 @@ using Microsoft.AspNetCore.Mvc;
|
||||
|
||||
namespace Dlhis.Canteen.Order.Controllers;
|
||||
|
||||
/// <summary>
|
||||
/// 充值/消费
|
||||
/// </summary>
|
||||
[Authorize]
|
||||
[Route("api/[controller]")]
|
||||
[ApiController]
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -11,9 +11,4 @@ public class SqlSugarPack : BaseAppPack
|
||||
{
|
||||
services.AddSqlSugar();
|
||||
}
|
||||
|
||||
public override void Configure(IApplicationBuilder app, IWebHostEnvironment env)
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
/// 部门名称
|
||||
|
||||
@@ -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 = "离职人员档案表")]
|
||||
|
||||
@@ -8,13 +8,13 @@ public enum GenderEnumType
|
||||
/// <summary>
|
||||
/// 女性
|
||||
/// </summary>
|
||||
[Description("女性")]
|
||||
[Description("女")]
|
||||
Female = 0,
|
||||
|
||||
/// <summary>
|
||||
/// 男性
|
||||
/// </summary>
|
||||
[Description("男性")]
|
||||
[Description("男")]
|
||||
Male = 1,
|
||||
|
||||
/// <summary>
|
||||
|
||||
@@ -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; }
|
||||
}
|
||||
@@ -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>
|
||||
/// 处理结果
|
||||
|
||||
30
Src/Dlhis.Entity/Device/Enums/DeviceTaskEnumType.cs
Normal file
30
Src/Dlhis.Entity/Device/Enums/DeviceTaskEnumType.cs
Normal 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,
|
||||
}
|
||||
34
Src/Dlhis.Entity/Device/Enums/DeviceTaskStatusEnumType.cs
Normal file
34
Src/Dlhis.Entity/Device/Enums/DeviceTaskStatusEnumType.cs
Normal 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,
|
||||
}
|
||||
@@ -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=&senderService=DLDM&receiverParty=&receiverService=&interface=SI_DLDM2EHR_InsertRecord_Out&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 状态
|
||||
|
||||
-->
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net6.0</TargetFramework>
|
||||
<Nullable>enable</Nullable>
|
||||
<Nullable>disable</Nullable>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<DockerDefaultTargetOS>Linux</DockerDefaultTargetOS>
|
||||
<DockerfileContext>..\..</DockerfileContext>
|
||||
|
||||
@@ -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 @@
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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()));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,7 +9,6 @@ public class SqlSugarPack : BaseAppPack
|
||||
|
||||
public override void ConfigureServices(IServiceCollection services)
|
||||
{
|
||||
services.AddHttpContextAccessor();
|
||||
services.AddSqlSugar();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
using Kurisu.Core.DataAccess.Dto;
|
||||
|
||||
namespace Dlhis.ScheduledTask.TaskAssignment.Request;
|
||||
|
||||
public class DeviceTaskAssignmentRequest : PageDto
|
||||
{
|
||||
}
|
||||
@@ -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; }
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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]));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -6,8 +6,8 @@
|
||||
}
|
||||
},
|
||||
"InternalRequest": {
|
||||
"CommonRequestUrl": "http://common",
|
||||
"UserRequestUrl": "http://localhost:5010"
|
||||
"CommonRequestUrl": "http://localhost:5001",
|
||||
"UserRequestUrl": "http://localhost:5004"
|
||||
},
|
||||
"SwaggerOptions": {
|
||||
"Enable": true,
|
||||
|
||||
14
Src/Dlhis.User.Api/ITenantApi.cs
Normal file
14
Src/Dlhis.User.Api/ITenantApi.cs
Normal 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();
|
||||
}
|
||||
10
Src/Dlhis.User.Api/Response/TenantResponse.cs
Normal file
10
Src/Dlhis.User.Api/Response/TenantResponse.cs
Normal 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; }
|
||||
}
|
||||
@@ -6,6 +6,7 @@
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<DockerDefaultTargetOS>Linux</DockerDefaultTargetOS>
|
||||
<DockerfileContext>..\..</DockerfileContext>
|
||||
<GenerateDocumentationFile>True</GenerateDocumentationFile>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
|
||||
42
Src/Dlhis.User/Identity/Controllers/TenantsController.cs
Normal file
42
Src/Dlhis.User/Identity/Controllers/TenantsController.cs
Normal 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();
|
||||
}
|
||||
}
|
||||
8
Src/Dlhis.User/Identity/Request/TenantPageRequest.cs
Normal file
8
Src/Dlhis.User/Identity/Request/TenantPageRequest.cs
Normal file
@@ -0,0 +1,8 @@
|
||||
using Kurisu.Core.DataAccess.Dto;
|
||||
|
||||
namespace Dlhis.User.Identity.Request
|
||||
{
|
||||
public class TenantPageRequest : PageDto
|
||||
{
|
||||
}
|
||||
}
|
||||
10
Src/Dlhis.User/Identity/Response/TenantResponse.cs
Normal file
10
Src/Dlhis.User/Identity/Response/TenantResponse.cs
Normal 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; }
|
||||
}
|
||||
12
Src/Dlhis.User/Identity/Services/ITenantService.cs
Normal file
12
Src/Dlhis.User/Identity/Services/ITenantService.cs
Normal 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();
|
||||
}
|
||||
27
Src/Dlhis.User/Identity/Services/Implements/RoleService.cs
Normal file
27
Src/Dlhis.User/Identity/Services/Implements/RoleService.cs
Normal 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);
|
||||
}
|
||||
}
|
||||
34
Src/Dlhis.User/Identity/Services/Implements/TenantService.cs
Normal file
34
Src/Dlhis.User/Identity/Services/Implements/TenantService.cs
Normal 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();
|
||||
}
|
||||
}
|
||||
@@ -6,7 +6,7 @@
|
||||
"ASPNETCORE_ENVIRONMENT": "Development"
|
||||
},
|
||||
"dotnetRunMessages": true,
|
||||
"applicationUrl": "http://localhost:5010"
|
||||
"applicationUrl": "http://localhost:5004"
|
||||
}
|
||||
},
|
||||
"$schema": "https://json.schemastore.org/launchsettings.json"
|
||||
|
||||
@@ -16,7 +16,6 @@
|
||||
"Scopes": {
|
||||
"openid": "openid",
|
||||
"profile": "profile",
|
||||
"role": "role",
|
||||
"yikatong": "yikatong"
|
||||
}
|
||||
},
|
||||
|
||||
@@ -22,7 +22,6 @@
|
||||
"Scopes": {
|
||||
"openid": "openid",
|
||||
"profile": "profile",
|
||||
"role": "role",
|
||||
"yikatong": "yikatong"
|
||||
}
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user