Infrastructure/OpenAuth.App/ServiceApp/InsTaskHallManager/InsTaskHallApp.cs

81 lines
2.7 KiB
C#
Raw Normal View History

2024-11-13 16:38:41 +08:00
using OpenAuth.App.BaseApp.Base;
using OpenAuth.Repository.Domain;
using OpenAuth.Repository;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using OpenAuth.App.Interface;
using SqlSugar;
using Microsoft.Extensions.Configuration;
using DocumentFormat.OpenXml.Office2010.ExcelAc;
using DocumentFormat.OpenXml.Office2010.CustomUI;
using NPOI.OpenXmlFormats.Dml;
2024-11-13 17:05:01 +08:00
using Infrastructure.Extensions;
using Moq;
2024-11-14 10:08:17 +08:00
using OpenAuth.App.ServiceApp.InsTaskHallManager.Response;
2024-11-13 16:38:41 +08:00
namespace OpenAuth.App.ServiceApp.InsTaskHallManager
{
public class InsTaskHallApp : SqlSugarBaseApp<InsTask, SugarDbContext>
{
private readonly IConfiguration _configuration;
private readonly ISqlSugarClient client;
public InsTaskHallApp(ISugarUnitOfWork<SugarDbContext> unitWork,
ISimpleClient<InsTask> repository, IAuth auth, ISqlSugarClient sqlSugarClient,
IConfiguration configuration) : base(unitWork, repository, auth)
{
_configuration = configuration;
this.client = sqlSugarClient;
}
/// <summary>
/// 任务区
/// </summary>
/// <returns></returns>
public async Task<List<dynamic>> GetTaskList()
{
var query = await client.Queryable<InsTask>().Where(r => r.IsCompleted == false)
.LeftJoin<InsAishp>((r, p) => r.ShpId == p.Id)
.OrderByDescending(r=>r.CreateTime)
.Select<dynamic>((r, p) => new
{
r.Id,
r.TaskName,
r.State,
p.ShpCount,
CompleteCount = SqlFunc.Subqueryable<InsTaskgroup>().Where(a => a.TaskId == r.Id).Count() > 0 ? SqlFunc.Subqueryable<InsTaskgroup>().Where(a => a.TaskId == r.Id).Sum(r => (r.EndNum - r.BeginNum)) : 0
}).ToListAsync();
return query;
}
2024-11-13 17:05:01 +08:00
/// <summary>
/// 完成任务
/// </summary>
/// <returns></returns>
2024-11-14 10:08:17 +08:00
public async Task<List<InsTaskRes>> GetCompleteTaskList()
2024-11-13 17:05:01 +08:00
{
var query = await client.Queryable<InsTask>().Where(r => r.IsCompleted == true&&r.CompleteTime!=null)
2024-11-14 10:08:17 +08:00
.Select(r => new
2024-11-13 17:05:01 +08:00
{
2024-11-14 10:08:17 +08:00
id=r.Id,
datetime= r.CompleteTime.Value.Date
})
.MergeTable()
.GroupBy(r=>r.datetime)
.Select(r => new InsTaskRes
{
count = SqlFunc.AggregateCount(r.id),
time= r.datetime
})
.MergeTable().OrderBy(r => r.time)
.ToListAsync();
2024-11-13 17:05:01 +08:00
return query;
}
2024-11-13 16:38:41 +08:00
}
}