diff --git a/Src/Dlhis.Basic/BusinessShift/Response/BusinessPlaceShiftTinyResponse.cs b/Src/Dlhis.Basic/BusinessShift/Response/BusinessPlaceShiftTinyResponse.cs
index 359754c7..40217d10 100644
--- a/Src/Dlhis.Basic/BusinessShift/Response/BusinessPlaceShiftTinyResponse.cs
+++ b/Src/Dlhis.Basic/BusinessShift/Response/BusinessPlaceShiftTinyResponse.cs
@@ -3,7 +3,7 @@
public class BusinessPlaceShiftTinyResponse
{
///
- /// 无用字段,暂时不删除 //todo
+ /// 无用字段,暂时不删除
///
public string CustomCode { get; set; }
diff --git a/Src/Dlhis.Basic/Common/SysData/Controller/MiddlesController.cs b/Src/Dlhis.Basic/Common/SysData/Controller/MiddlesController.cs
new file mode 100644
index 00000000..c3485490
--- /dev/null
+++ b/Src/Dlhis.Basic/Common/SysData/Controller/MiddlesController.cs
@@ -0,0 +1,29 @@
+using Dlhis.Basic.Common.SysData.Request;
+using Dlhis.Basic.Common.SysData.Services;
+using Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Mvc;
+
+namespace Dlhis.Basic.Common.SysData.Controller;
+
+[Authorize]
+[Route("api/[controller]")]
+[ApiController]
+public class MiddlesController : ControllerBase
+{
+ private readonly IHealthCheckService _healthCheckService;
+
+ public MiddlesController(IHealthCheckService healthCheckService)
+ {
+ _healthCheckService = healthCheckService;
+ }
+
+ ///
+ /// 健康检查
+ ///
+ ///
+ [HttpPost("healthz")]
+ public async Task CheckAsync(MiddleHealthCheckRequest request)
+ {
+ await _healthCheckService.CheckAsync(request.Factories);
+ }
+}
\ No newline at end of file
diff --git a/Src/Dlhis.Basic/Common/SysData/Request/HealthCheckRequest.cs b/Src/Dlhis.Basic/Common/SysData/Request/HealthCheckRequest.cs
new file mode 100644
index 00000000..4e530661
--- /dev/null
+++ b/Src/Dlhis.Basic/Common/SysData/Request/HealthCheckRequest.cs
@@ -0,0 +1,9 @@
+using System.ComponentModel.DataAnnotations;
+
+namespace Dlhis.Basic.Common.SysData.Request;
+
+public class HealthCheckRequest
+{
+ [MinLength(1)]
+ public List Factories { get; set; }
+}
\ No newline at end of file
diff --git a/Src/Dlhis.Basic/Common/SysData/Request/MiddleHealthCheckRequest.cs b/Src/Dlhis.Basic/Common/SysData/Request/MiddleHealthCheckRequest.cs
new file mode 100644
index 00000000..c08b33c0
--- /dev/null
+++ b/Src/Dlhis.Basic/Common/SysData/Request/MiddleHealthCheckRequest.cs
@@ -0,0 +1,6 @@
+namespace Dlhis.Basic.Common.SysData.Request;
+
+public class MiddleHealthCheckRequest
+{
+ public List Factories { get; set; }
+}
\ No newline at end of file
diff --git a/Src/Dlhis.Basic/Common/SysData/Services/IHealthCheckService.cs b/Src/Dlhis.Basic/Common/SysData/Services/IHealthCheckService.cs
new file mode 100644
index 00000000..489f8e5b
--- /dev/null
+++ b/Src/Dlhis.Basic/Common/SysData/Services/IHealthCheckService.cs
@@ -0,0 +1,6 @@
+namespace Dlhis.Basic.Common.SysData.Services;
+
+public interface IHealthCheckService : IScopeDependency
+{
+ Task CheckAsync(List factories);
+}
\ No newline at end of file
diff --git a/Src/Dlhis.Basic/Common/SysData/Services/Implements/HealthCheckService.cs b/Src/Dlhis.Basic/Common/SysData/Services/Implements/HealthCheckService.cs
new file mode 100644
index 00000000..90203b63
--- /dev/null
+++ b/Src/Dlhis.Basic/Common/SysData/Services/Implements/HealthCheckService.cs
@@ -0,0 +1,10 @@
+namespace Dlhis.Basic.Common.SysData.Services.Implements;
+
+public class HealthCheckService : IHealthCheckService
+{
+ public async Task CheckAsync(List factories)
+ {
+ //todo 状态显示
+ await Task.CompletedTask;
+ }
+}
\ No newline at end of file
diff --git a/Src/Dlhis.Basic/Common/SysData/Services/Implements/SysDataService.cs b/Src/Dlhis.Basic/Common/SysData/Services/Implements/SysDataService.cs
index 53ec663d..976e0244 100644
--- a/Src/Dlhis.Basic/Common/SysData/Services/Implements/SysDataService.cs
+++ b/Src/Dlhis.Basic/Common/SysData/Services/Implements/SysDataService.cs
@@ -1,5 +1,7 @@
using System.Reflection;
using Dlhis.Entity.Basic.Entity;
+using Dlhis.Entity.Canteen.Entities;
+using Dlhis.Entity.Canteen.Enums;
using Kurisu.AspNetCore;
using Kurisu.AspNetCore.DataAccess.Entity;
using Kurisu.AspNetCore.DataAccess.SqlSugar.Services;
@@ -22,27 +24,53 @@ public class SysDataService : ISysDataService
var type = App.ActiveTypes
.Where(x => x.IsDefined(typeof(SugarTable), false))
.Where(x => !x.IsDefined(typeof(SkipScanAttribute), false))
- .First(x => x.GetCustomAttribute()!.TableName == tableName);
+ .FirstOrDefault(x => x.GetCustomAttribute()!.TableName == tableName);
- var table = type.GetCustomAttribute()!.TableName;
+ var table = type?.GetCustomAttribute()!.TableName;
var sql = $"select * from {table}";
- if (type.IsAssignableTo(typeof(ITenantId)))
+
+ if (type == null)
{
- sql += $" where tenantId = '{factory}'";
+ table = tableName;
+ }
+ else
+ {
+ if (type.IsAssignableTo(typeof(ITenantId)))
+ {
+ sql += $" where tenantId = '{factory}'";
+ }
}
- switch (tableName)
+ switch (table)
{
case "Gainfo":
- //sql = $"select * from Gainfo where factory = '{factory}'";
return await _dbContext.Queryable().Where(x => x.Factory == factory).Select(x => (object)x).ToListAsync();
case "GainfoMeal":
{
- var codes = await _dbContext.Queryable().Where(x => x.Factory == factory).Select(x => x.Code).ToListAsync();
- return await _dbContext.Queryable().Where(x => codes.Contains(x.UserCode)).Select(x => (object)x).ToListAsync();
+ var r = await _dbContext.Queryable()
+ .Where(x => x.Factory == factory)
+ .GroupBy(x => x.Code)
+ .Select(x => new
+ {
+ UserCode = x.Code,
+ Balance = SqlFunc.Subqueryable().Where(p => p.UserCode == x.Code)
+ .Where(p => p.Source != BalanceRecordSourceEnumType.EMealVoucher && p.Status == BalanceRecordStatusEnumType.Valid && p.IsDeleted == false)
+ .Sum(p => p.Amount)
+ })
+ .ToListAsync();
+
+ return r.Select(x => (object)x).ToList();
}
default:
return await _dbContext.Client.SqlQueryable