using Dlhis.Entity.Device.Enums; using Dlhis.Middle.Api; using Dlhis.Middle.Request; using Dlhis.Middle.Response; using Kurisu.AspNetCore.DataAccess.SqlSugar.Aop; using Kurisu.AspNetCore.UnifyResultAndValidation; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.WebUtilities; using Newtonsoft.Json.Linq; namespace Dlhis.Middle.Controllers; /// /// 任务分配 /// [Route("api/scheduled/[controller]")] [ApiController] public class AssignmentsController : ControllerBase { private readonly IAssignmentDeviceTaskApi _assignmentDeviceTaskApi; private readonly string _internalIp; public AssignmentsController(IAssignmentDeviceTaskApi assignmentDeviceTaskApi, IConfiguration configuration) { _assignmentDeviceTaskApi = assignmentDeviceTaskApi; _internalIp = configuration.GetSection("InternalIP").Value; } /// /// 获取设备任务(按设备) /// /// [IgnoreTenant] [HttpGet("deviceTasks")] public async Task>> DeviceGetTasksGetAsync([FromQuery] DeviceTaskGetRequest request) { var result = await _assignmentDeviceTaskApi.DeviceGetTasksAsync(request); foreach (var data in result.Data) { foreach (var task in data.Tasks.Where(x => x.Type != DeviceTaskEnumType.Delete)) { var currentUser = JObject.FromObject(task.Info).ToObject(); var token = QueryHelpers.ParseQuery(currentUser.Face).First().Value; currentUser.Face = $"http://{_internalIp}/api/basic/gainfos/face?token=" + token; task.Info = currentUser; } } return result; } /// /// 获取设备任务(按设备) /// /// [HttpPost("deviceTasks")] [IgnoreTenant] public async Task>> DeviceGetTasksPostAsync(DeviceTaskGetRequest request) { var result = await _assignmentDeviceTaskApi.DeviceGetTasksAsync(request); foreach (var data in result.Data) { foreach (var task in data.Tasks.Where(x => x.Type != DeviceTaskEnumType.Delete)) { var currentUser = JObject.FromObject(task.Info).ToObject(); var token = QueryHelpers.ParseQuery(currentUser.Face).First().Value; currentUser.Face = $"http://{_internalIp}/api/basic/gainfos/face?token=" + token; task.Info = currentUser; } } return result; } }