using Dlhis.Entity.Basic.Entity; using Dlhis.Entity.Basic.Enums; 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; /// /// 任务分配 /// [Authorize] [Route("api/[controller]")] [ApiController] public class AssignmentsController : ControllerBase { private readonly IAssignmentService _assignmentService; private readonly IDbContext _dbContext; public AssignmentsController(IAssignmentService assignmentService, IDbContext dbContext) { _assignmentService = assignmentService; _dbContext = dbContext; } /// /// 获取设备任务(按设备) /// /// [DisableApiLog] [IgnoreTenant] [HttpGet("deviceTasks")] public async Task> DeviceGetTasksGetAsync([FromQuery] DeviceTaskGetRequest request) { return await _assignmentService.DeviceGetTasksAsync(request); } /// /// 获取设备任务(按设备) /// /// [DisableApiLog] [HttpPost("deviceTasks")] [IgnoreTenant] public async Task> DeviceGetTasksPostAsync(DeviceTaskGetRequest request) { return await _assignmentService.DeviceGetTasksAsync(request); } /// /// 更新任务状态 /// /// /// [DisableApiLog] [HttpPost("taskStatus")] [IgnoreTenant] public async Task UpdateDeviceTaskStatusAsync(List requests) { await _assignmentService.UpdateDeviceTaskStatusAsync(requests); } [AllowAnonymous] [HttpPost("balance/calc")] [IgnoreTenant] public async Task Calc() { var s = new DateTime(2025, 7, 1); var e = new DateTime(2025, 8, 1); var userCodes = await _dbContext.Queryable().Where(x => x.ResignationDate.HasValue && x.ResignationDate >= s && x.ResignationDate <= e) .Where(x => x.Type != GainfoUserTypeEnumType.External && x.Type != GainfoUserTypeEnumType.Outsource) .Select(x => x.Code) .Distinct() .ToListAsync(); foreach (var userCode in userCodes) { if (!await _dbContext.Queryable().Where(x => x.UserCode == userCode).AnyAsync()) { await _dbContext.InsertAsync(new UserBalanceTmpEntity { UserCode = userCode, Balance = 0, Version = 0 }); } var balance = await _dbContext.Queryable() .Where(x => x.UserCode == userCode) .Where(x => x.Status == BalanceRecordStatusEnumType.Valid) .Where(x => !BalanceRecordSourceConstants.IgnoreSources.Contains(x.Source)) .Where(x => x.CostDate >= s && x.CostDate <= e) .Where(x => x.Type == BalanceRecordTypeEnumType.Out) .SumAsync(x => x.Amount); await _dbContext.Updateable() .SetColumns(x => x.Balance == balance) .SetColumns(x => x.ModifiedTime == DateTime.Now) .Where(x => x.UserCode == userCode) .ExecuteCommandAsync(); } } }