This commit is contained in:
2025-08-12 15:11:26 +08:00
parent 61bbde9489
commit 505787c95c
2 changed files with 77 additions and 2 deletions

View File

@@ -1,10 +1,14 @@
using Dlhis.ScheduledTask.TaskAssignment.Request;
using Dlhis.Entity.Canteen.Entities;
using Dlhis.Entity.Canteen.Enums;
using Dlhis.ScheduledTask.TaskAssignment.Request;
using Dlhis.ScheduledTask.TaskAssignment.Response;
using Dlhis.ScheduledTask.TaskAssignment.Services;
using Kurisu.AspNetCore.DataAccess.SqlSugar.Aop;
using Kurisu.AspNetCore.DataAccess.SqlSugar.Services;
using Kurisu.AspNetCore.UnifyResultAndValidation.Aop;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using SqlSugar;
namespace Dlhis.ScheduledTask.TaskAssignment.Controllers;
@@ -17,10 +21,12 @@ namespace Dlhis.ScheduledTask.TaskAssignment.Controllers;
public class AssignmentsController : ControllerBase
{
private readonly IAssignmentService _assignmentService;
private readonly IDbContext _dbContext;
public AssignmentsController(IAssignmentService assignmentService)
public AssignmentsController(IAssignmentService assignmentService, IDbContext dbContext)
{
_assignmentService = assignmentService;
_dbContext = dbContext;
}
/// <summary>
@@ -59,4 +65,45 @@ public class AssignmentsController : ControllerBase
{
await _assignmentService.UpdateDeviceTaskStatusAsync(requests);
}
[AllowAnonymous]
[HttpPost("balance/calc")]
[IgnoreTenant]
public async Task Calc()
{
var userCodes = await _dbContext.Queryable<UserBalanceEntity>()
.Where(x => SqlFunc.Subqueryable<UserBalanceTmpEntity>().Where(p => p.UserCode == x.UserCode).NotAny())
.Select(x => x.UserCode)
.Distinct()
.Take(5000)
.ToListAsync();
var d = new DateTime(2025, 6, 30);
foreach (var userCode in userCodes)
{
if (!await _dbContext.Queryable<UserBalanceTmpEntity>().Where(x => x.UserCode == userCode).AnyAsync())
{
await _dbContext.InsertAsync(new UserBalanceTmpEntity
{
UserCode = userCode,
Balance = 0,
Version = 0
});
}
var balance = await _dbContext.Queryable<BalanceRecordEntity>()
.Where(x => x.UserCode == userCode)
.Where(x => x.Status == BalanceRecordStatusEnumType.Valid)
.Where(x => !BalanceRecordSourceConstants.IgnoreSources.Contains(x.Source))
.Where(x => x.CostDate <= d)
.SumAsync(x => x.Amount);
await _dbContext.Updateable<UserBalanceTmpEntity>()
.SetColumns(x => x.Balance == balance)
.SetColumns(x => x.ModifiedTime == DateTime.Now)
.Where(x => x.UserCode == userCode)
.ExecuteCommandAsync();
}
}
}