diff --git a/Src/Dlhis.Basic/Device/Response/DevicePageResponse.cs b/Src/Dlhis.Basic/Device/Response/DevicePageResponse.cs
index 448e34e9..d9d47179 100644
--- a/Src/Dlhis.Basic/Device/Response/DevicePageResponse.cs
+++ b/Src/Dlhis.Basic/Device/Response/DevicePageResponse.cs
@@ -84,4 +84,19 @@ public class DevicePageResponse
/// 是否启用
///
public bool Enable { get; set; }
+
+ ///
+ /// 是否在线
+ ///
+ public bool IsOnline { get; set; }
+
+ ///
+ /// 消费总额
+ ///
+ public decimal Amount { get; set; }
+
+ ///
+ /// 消费人次
+ ///
+ public int UserCount { get; set; }
}
diff --git a/Src/Dlhis.Basic/Device/Services/Implements/DeviceService.cs b/Src/Dlhis.Basic/Device/Services/Implements/DeviceService.cs
index fe0257a7..8a7e9bb3 100644
--- a/Src/Dlhis.Basic/Device/Services/Implements/DeviceService.cs
+++ b/Src/Dlhis.Basic/Device/Services/Implements/DeviceService.cs
@@ -1,6 +1,8 @@
using Dlhis.Basic.Device.Request;
using Dlhis.Basic.Device.Response;
using Dlhis.Entity.Basic.Entity;
+using Dlhis.Entity.Canteen.Entities;
+using Dlhis.Entity.Canteen.Enums;
using Dlhis.Entity.Device.Entities;
using Dlhis.Entity.Device.Enums;
using Kurisu.AspNetCore.Scope;
@@ -11,7 +13,6 @@ using Kurisu.SqlSugar.Attributes;
using Kurisu.SqlSugar.Extensions;
using Kurisu.SqlSugar.Services;
using Mapster;
-using Microsoft.AspNetCore.Mvc;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
@@ -40,9 +41,51 @@ public class DeviceService : IDeviceService
}, true)
.ToPageListAsync(request);
+ var now = DateTime.Now;
+ var deviceUniqueNos = page.Data.Select(x => x.UniqueNo).ToList();
+
+ var balanceRecords = await _dbContext.Queryable().Where(x => x.Type == BalanceRecordTypeEnumType.Out)
+ .Where(x => deviceUniqueNos.Contains(x.DeviceInfo))
+ .ToListAsync();
+
+ var deviceRegistries = await _dbContext.Queryable()
+ .LeftJoin((x, d) => x.DeviceUniqueNo == d.UniqueNo)
+ .Where(x => deviceUniqueNos.Contains(x.DeviceUniqueNo))
+ .Select((x, d) => new
+ {
+ d.HeartbeatInterval,
+ x.LastHeartbeatTime,
+ x.DeviceUniqueNo,
+ })
+ .ToListAsync();
+
+ page.Data.ForEach(device =>
+ {
+ device.Amount = balanceRecords.Sum(x => x.Amount);
+ device.UserCount = balanceRecords.DistinctBy(x => x.UserCode).Count();
+
+ var r = deviceRegistries.FirstOrDefault(x => x.DeviceUniqueNo == device.UniqueNo);
+ if (r == null)
+ {
+ device.IsOnline = false;
+ }
+ else
+ {
+ if (r.HeartbeatInterval <= 0)
+ {
+ device.IsOnline = true;
+ }
+ else
+ {
+ device.IsOnline = r.LastHeartbeatTime.AddSeconds(r.HeartbeatInterval * 3) >= now;
+ }
+ }
+ });
+
return page;
}
+
[Transactional]
public async Task SaveAsync(DeviceSaveRequest request)
{
@@ -288,7 +331,7 @@ public class DeviceService : IDeviceService
dbContext.Client.CurrentConnectionConfig.ConnectionString = logConnectionString;
var logs = await dbContext.Queryable()
.WhereIF(!request.message.IsEmpty(), x => x.Message.Contains(request.message))
- .WhereIF(!level.IsEmpty(),x => x.Level == level)
+ .WhereIF(!level.IsEmpty(), x => x.Level == level)
.Select()
.ToPageListAsync(request);
return logs;
diff --git a/Src/Dlhis.Basic/Organization/Controllers/GainfosController.cs b/Src/Dlhis.Basic/Organization/Controllers/GainfosController.cs
index 33e9307f..39d3405f 100644
--- a/Src/Dlhis.Basic/Organization/Controllers/GainfosController.cs
+++ b/Src/Dlhis.Basic/Organization/Controllers/GainfosController.cs
@@ -141,7 +141,7 @@ public class GainfosController : ControllerBase
///
///
[HttpGet("list")]
- public async Task> GetGainfoListTaskAsync([FromQuery]GainfoListRequest request)
+ public async Task> GetGainfoListTaskAsync([FromQuery] GainfoListRequest request)
{
return await _gainfoService.GetGainfoListTaskAsync(request);
}
@@ -155,57 +155,5 @@ public class GainfosController : ControllerBase
{
return await _gainfoService.GetGainfoDetailTaskAsync(request);
}
-
- ///
- /// 获取近七天入职人数及列表
- ///
- ///
- [HttpGet("weeknumber")]
- public async Task>> GetWeekNumberAsync([FromQuery] WeekNumberRequest request)
- {
- // 从请求头中获取 Token
- string token = HttpContext.Request.Headers["Authorization"].ToString().Replace("Bearer ", "");
-
- return await _gainfoService.GetWeekNumberAsync(request,token);
- }
-
- ///
- /// 获取近七天离职人数及列表
- ///
- ///
- [HttpGet("weeknumberdimission")]
- public async Task>> GetDimissionWeekNumberAsync([FromQuery] WeekNumberRequest request)
- {
- // 从请求头中获取 Token
- string token = HttpContext.Request.Headers["Authorization"].ToString().Replace("Bearer ", "");
-
- return await _gainfoService.GetDimissionWeekNumberAsync(request,token);
- }
-
- ///
- /// 获取基地在职、离职、考勤数
- ///
- ///
- [HttpGet("gainfonumbers")]
- public async Task GetGainfoNumbersAsync()
- {
- // 从请求头中获取 Token
- string token = HttpContext.Request.Headers["Authorization"].ToString().Replace("Bearer ", "");
-
- return await _gainfoService.GetGainfoNumbersAsync(token);
- }
-
- ///
- /// 获取本基地管理员列表
- ///
- ///
- ///
- [HttpGet("administrator")]
- public async Task> GetAdministratorAsync([FromQuery] WeekNumberRequest request)
- {
- // 从请求头中获取 Token
- string token = HttpContext.Request.Headers["Authorization"].ToString().Replace("Bearer ", "");
- return await _gainfoService.GetAdministratorAsync(request,token);
- }
}
diff --git a/Src/Dlhis.Basic/Organization/Request/GainfoSaveRequest.cs b/Src/Dlhis.Basic/Organization/Request/GainfoSaveRequest.cs
index 54f41fe3..838f621c 100644
--- a/Src/Dlhis.Basic/Organization/Request/GainfoSaveRequest.cs
+++ b/Src/Dlhis.Basic/Organization/Request/GainfoSaveRequest.cs
@@ -110,11 +110,6 @@ public class GainfoSaveRequest : IValidatableObject
///
public string Werks { get; set; }
- ///
- /// 在职状态
- ///
- public string Employed { get; set; }
-
public IEnumerable Validate(ValidationContext validationContext)
{
if (GainfoStatus.HasValue && GainfoStatus == GainfoStatusEnumType.Leave)
diff --git a/Src/Dlhis.Basic/Organization/Response/GainfoDetailResponse.cs b/Src/Dlhis.Basic/Organization/Response/GainfoDetailResponse.cs
index a2472cfe..565d53dc 100644
--- a/Src/Dlhis.Basic/Organization/Response/GainfoDetailResponse.cs
+++ b/Src/Dlhis.Basic/Organization/Response/GainfoDetailResponse.cs
@@ -105,10 +105,5 @@ namespace Dlhis.Basic.Organization.Response
/// 民族代码
///
public string NationName { get; set; }
-
- ///
- /// 是否在职
- ///
- public bool IsActive { get; set; }
}
}
diff --git a/Src/Dlhis.Basic/Organization/Response/GainfoListResponse.cs b/Src/Dlhis.Basic/Organization/Response/GainfoListResponse.cs
index a826eec0..8e7c6789 100644
--- a/Src/Dlhis.Basic/Organization/Response/GainfoListResponse.cs
+++ b/Src/Dlhis.Basic/Organization/Response/GainfoListResponse.cs
@@ -1,60 +1,51 @@
using Dlhis.Entity.Basic.Enums;
-using SqlSugar;
-using SqlSugar.DbConvert;
-namespace Dlhis.Basic.Organization.Response
+namespace Dlhis.Basic.Organization.Response;
+
+public class GainfoListResponse
{
- public class GainfoListResponse
- {
- ///
- /// 档案号
- ///
- public string No { get; set; }
+ ///
+ /// 档案号
+ ///
+ public string No { get; set; }
- ///
- /// 姓名
- ///
- public string Name { get; set; }
+ ///
+ /// 姓名
+ ///
+ public string Name { get; set; }
- ///
- /// 学工号
- ///
- public string Code { get; set; }
+ ///
+ /// 学工号
+ ///
+ public string Code { get; set; }
- ///
- /// 身份证号
- ///
- public string IdNo { get; set; }
+ ///
+ /// 身份证号
+ ///
+ public string IdNo { get; set; }
- ///
- /// 性别
- ///
- public GenderEnumType Gender { get; set; }
+ ///
+ /// 性别
+ ///
+ public GenderEnumType Gender { get; set; }
- ///
- /// 手机号码
- ///
- public string Phone { get; set; }
+ ///
+ /// 手机号码
+ ///
+ public string Phone { get; set; }
- ///
- /// 部门编码
- ///
- public string DepartmentNo { get; set; }
+ ///
+ /// 部门编码
+ ///
+ public string DepartmentNo { get; set; }
- ///
- /// 部门名称
- ///
- public string DepartmentName { get; set; }
+ ///
+ /// 部门名称
+ ///
+ public string DepartmentName { get; set; }
- ///
- /// 身份证地址
- ///
- public string Address { get; set; }
-
- ///
- /// 在职状态
- ///
- public string Employed { get; set; }
-
- }
+ ///
+ /// 身份证地址
+ ///
+ public string Address { get; set; }
}
diff --git a/Src/Dlhis.Basic/Organization/Response/GainfoPageResponse.cs b/Src/Dlhis.Basic/Organization/Response/GainfoPageResponse.cs
index cb3c563c..4b8faadd 100644
--- a/Src/Dlhis.Basic/Organization/Response/GainfoPageResponse.cs
+++ b/Src/Dlhis.Basic/Organization/Response/GainfoPageResponse.cs
@@ -112,9 +112,4 @@ public class GainfoPageResponse
/// 人事范围
///
public string Werks { get; set; }
-
- ///
- /// 在职状态
- ///
- public string Employed { get; set; }
}
diff --git a/Src/Dlhis.Basic/Organization/Services/IGainfoService.cs b/Src/Dlhis.Basic/Organization/Services/IGainfoService.cs
index 7bb8f0fc..7372f48d 100644
--- a/Src/Dlhis.Basic/Organization/Services/IGainfoService.cs
+++ b/Src/Dlhis.Basic/Organization/Services/IGainfoService.cs
@@ -31,12 +31,4 @@ public interface IGainfoService : IScopeDependency
Task> GetGainfoListTaskAsync(GainfoListRequest request);
Task GetGainfoDetailTaskAsync(GainfoDetailRequest request);
-
- Task>> GetWeekNumberAsync(WeekNumberRequest request, string token);
-
- Task>> GetDimissionWeekNumberAsync([FromQuery] WeekNumberRequest request, string token);
-
- Task GetGainfoNumbersAsync(string token);
-
- Task> GetAdministratorAsync(WeekNumberRequest request,string token);
}
diff --git a/Src/Dlhis.Basic/Organization/Services/Implements/GainfoService.cs b/Src/Dlhis.Basic/Organization/Services/Implements/GainfoService.cs
index 78753d46..f21150bd 100644
--- a/Src/Dlhis.Basic/Organization/Services/Implements/GainfoService.cs
+++ b/Src/Dlhis.Basic/Organization/Services/Implements/GainfoService.cs
@@ -333,10 +333,10 @@ public class GainfoService : IGainfoService
DepartmentNo = de.No,
DepartmentName = de.Name,
Address = ga.Address,
- Employed = ga.Employed
}).ToPageListAsync(request);
return page;
}
+
///
/// 档案详情
///
@@ -373,8 +373,8 @@ public class GainfoService : IGainfoService
Marital = ga.Marital,
CountryName = type2.Display,
NationName = type3.Display,
- IsActive = ga.Employed == "Active" ? true : false,
}).FirstAsync();
+
return info;
}
@@ -425,11 +425,8 @@ public class GainfoService : IGainfoService
Marital = ga.Marital,
CountryName = type2.Display,
NationName = type3.Display,
- IsActive = ga.Employed == "Active" ? true : false,
}).ToPageListAsync(request);
- //var infos = await _gainfoStore.Queryable(GainfoStatusEnumType.Working)
- // .Where(ga => ga.CreateTime.ToString("yyyy-MM-dd") == time)
- // .ToPageListAsync(request);
+
dic[time] = infos;
}
return dic;
@@ -481,7 +478,6 @@ public class GainfoService : IGainfoService
Marital = ga.Marital,
CountryName = type2.Display,
NationName = type3.Display,
- IsActive = ga.Employed == "Active" ? true : false,
}).ToPageListAsync(request);
dic[time] = infos;
}
@@ -514,44 +510,6 @@ public class GainfoService : IGainfoService
return res;
}
- public async Task> GetAdministratorAsync( WeekNumberRequest request, string token)
- {
- var werks = GetClaimValueFromToken(token, "tenant");
- var info = await _gainfoStore.Queryable(GainfoStatusEnumType.Working)
- .LeftJoin((ga, de) => ga.DepartmentNo == de.No)
- .LeftJoin((ga, de, type) => ga.Native == type.Code && type.Type == "native")
- .LeftJoin((ga, de, type, posi) => ga.Position == posi.Name)
- .LeftJoin((ga, de, type, posi, type2) => ga.CountryNo == type2.Code && type2.Type == "country")
- .LeftJoin((ga, de, type, posi, type2, type3) => ga.Nation == type3.Code && type3.Type == "nation")
- .Where(ga => ga.Werks == werks && ga.IdentityUserId != 0)
- .Select((ga, de, type, posi, type2, type3) => new GainfoDetailResponse
- {
- No = ga.No,
- SapNo = ga.SapNo,
- Name = ga.Name,
- Code = ga.Code,
- DepartmentName = de.Name,
- IdClass = ga.IdClass,
- IdNo = ga.IdNo,
- Gender = ga.Gender,
- NativeName = type.Display,
- Address = ga.Address,
- Birthday = ga.Birthday,
- Phone = ga.Phone,
- Position = ga.Position,
- Grade = posi.Grade,
- Degree = ga.Degree,
- Werks = ga.Werks,
- CostId = ga.CostId,
- Marital = ga.Marital,
- CountryName = type2.Display,
- NationName = type3.Display,
- IsActive = ga.Employed == "Active" ? true : false,
- }).ToPageListAsync(request);
-
- return info;
- }
-
//-------------------------------------------help methods ------------------------------------------------
///
diff --git a/Src/Dlhis.Basic/Packs/SqlSugarPack.cs b/Src/Dlhis.Basic/Packs/SqlSugarPack.cs
index d4467cae..86dc45aa 100644
--- a/Src/Dlhis.Basic/Packs/SqlSugarPack.cs
+++ b/Src/Dlhis.Basic/Packs/SqlSugarPack.cs
@@ -1,5 +1,4 @@
-using Dlhis.Entity.Basic.Entity;
-using Kurisu.AspNetCore;
+using Kurisu.AspNetCore;
using Kurisu.AspNetCore.Startup;
using Kurisu.SqlSugar.Extensions;
using SqlSugar;
diff --git a/Src/Dlhis.Entity/Basic/Entity/GainfoEntity.cs b/Src/Dlhis.Entity/Basic/Entity/GainfoEntity.cs
index 1ddbe206..66ff9e59 100644
--- a/Src/Dlhis.Entity/Basic/Entity/GainfoEntity.cs
+++ b/Src/Dlhis.Entity/Basic/Entity/GainfoEntity.cs
@@ -148,12 +148,6 @@ public class GainfoEntity : SugarBaseEntity
///
public string CostId { get; set; }
- ///
- /// 在职状态
- ///
- [SugarColumn(ColumnDescription = "在职状态")]
- public string Employed { get; set; }
-
///
/// 身份认证用户Id
///
diff --git a/Src/Dlhis.Sys/Identity/Controllers/RolesController.cs b/Src/Dlhis.Sys/Identity/Controllers/RolesController.cs
index 0924f7c3..cd65a44d 100644
--- a/Src/Dlhis.Sys/Identity/Controllers/RolesController.cs
+++ b/Src/Dlhis.Sys/Identity/Controllers/RolesController.cs
@@ -85,8 +85,8 @@ public class RolesController : ControllerBase
///
///
[HttpGet("my")]
- public async Task GetMyRoleAsync()
+ public async Task GetMyRoleAsync(int? userId)
{
- return await _roleService.GetMyRoleAsync();
+ return await _roleService.GetMyRoleAsync(userId);
}
}
diff --git a/Src/Dlhis.Sys/Identity/Response/UserResponse.cs b/Src/Dlhis.Sys/Identity/Response/UserResponse.cs
index 45ff5c74..15c1fe33 100644
--- a/Src/Dlhis.Sys/Identity/Response/UserResponse.cs
+++ b/Src/Dlhis.Sys/Identity/Response/UserResponse.cs
@@ -58,4 +58,10 @@ public class UserResponse
/// 登陆失败次数
///
public int AccessFailedCount { get; set; }
+
+
+ ///
+ /// 角色
+ ///
+ public string Role { get; set; }
}
diff --git a/Src/Dlhis.Sys/Identity/Services/IRoleService.cs b/Src/Dlhis.Sys/Identity/Services/IRoleService.cs
index 3b789429..8b02ba23 100644
--- a/Src/Dlhis.Sys/Identity/Services/IRoleService.cs
+++ b/Src/Dlhis.Sys/Identity/Services/IRoleService.cs
@@ -12,7 +12,7 @@ public interface IRoleService : IScopeDependency
Task SaveRoleAsync(RoleSaveRequest request);
- Task GetMyRoleAsync();
+ Task GetMyRoleAsync(int? userId);
Task RemoveRoleAsync(RoleRemoveRequest request);
diff --git a/Src/Dlhis.Sys/Identity/Services/Implements/RoleService.cs b/Src/Dlhis.Sys/Identity/Services/Implements/RoleService.cs
index 38cd025a..2702f1a2 100644
--- a/Src/Dlhis.Sys/Identity/Services/Implements/RoleService.cs
+++ b/Src/Dlhis.Sys/Identity/Services/Implements/RoleService.cs
@@ -9,7 +9,6 @@ using Kurisu.Core.DataAccess.Dto;
using Kurisu.Core.User.Abstractions;
using Kurisu.SqlSugar.Extensions;
using Kurisu.SqlSugar.Services;
-using Org.BouncyCastle.Asn1.Ocsp;
namespace Dlhis.Sys.Identity.Services.Implements;
@@ -40,9 +39,9 @@ public class RoleService : IRoleService
});
}
- public async Task GetMyRoleAsync()
+ public async Task GetMyRoleAsync(int? userId)
{
- var userId = _currentUser.GetIntSubjectId();
+ userId ??= _currentUser.GetIntSubjectId();
return await Scoped.Request.Value.CreateAsync(async sp =>
{
@@ -50,7 +49,6 @@ public class RoleService : IRoleService
var identityConnection = _configuration.GetSection("SqlSugarOptions:IdentityConnectionString").Value;
dbContext.Client.CurrentConnectionConfig.ConnectionString = identityConnection;
-
return await dbContext.Queryable()
.LeftJoin((x, r) => x.RoleId == r.Id)
.Where(x => x.UserId == userId)
diff --git a/Src/Dlhis.Sys/Identity/Services/Implements/UserService.cs b/Src/Dlhis.Sys/Identity/Services/Implements/UserService.cs
index f27e0528..63a9b19f 100644
--- a/Src/Dlhis.Sys/Identity/Services/Implements/UserService.cs
+++ b/Src/Dlhis.Sys/Identity/Services/Implements/UserService.cs
@@ -1,5 +1,4 @@
-using System.Configuration;
-using Dlhis.Entity.Sys.Entities;
+using Dlhis.Entity.Sys.Entities;
using Dlhis.Sys.Identity.Request;
using Dlhis.Sys.Identity.Response;
using Kurisu.AspNetCore.Utils.Extensions;
@@ -23,13 +22,18 @@ public class UserService : IUserService
public async Task> GetPageAsync(UserPageRequest request)
{
return await _dbContext.Queryable()
+ .LeftJoin((x, ur) => x.Id == ur.UserId)
+ .LeftJoin((x, ur, r) => ur.RoleId == r.Id)
.WhereIF(request.Search.IsPresent(), x => x.UserName.Contains(request.Search)
|| x.NormalizedUserName.Contains(request.Search)
|| x.Email.Contains(request.Search)
|| x.NormalizedEmail.Contains(request.Search)
|| x.PhoneNumber.Contains(request.Search)
)
- .Select()
+ .Select((x, ur, r) => new UserResponse
+ {
+ Id = x.Id
+ }, true)
.ToPageListAsync(request);
}