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; using Infrastructure.Extensions; using Moq; using OpenAuth.App.ServiceApp.InsTaskHallManager.Response; namespace OpenAuth.App.ServiceApp.InsTaskHallManager { public class InsTaskHallApp : SqlSugarBaseApp { private readonly IConfiguration _configuration; private readonly ISqlSugarClient client; public InsTaskHallApp(ISugarUnitOfWork unitWork, ISimpleClient repository, IAuth auth, ISqlSugarClient sqlSugarClient, IConfiguration configuration) : base(unitWork, repository, auth) { _configuration = configuration; this.client = sqlSugarClient; } /// /// 任务区 /// /// public async Task> GetTaskList() { var query = await client.Queryable().Where(r => r.IsCompleted == false) .LeftJoin((r, p) => r.ShpId == p.Id) .OrderByDescending(r=>r.CreateTime) .Select((r, p) => new { r.Id, r.TaskName, r.State, p.ShpCount, CompleteCount = SqlFunc.Subqueryable().Where(a => a.TaskId == r.Id).Count() > 0 ? SqlFunc.Subqueryable().Where(a => a.TaskId == r.Id).Sum(r => (r.EndNum - r.BeginNum)) : 0 }).ToListAsync(); return query; } /// /// 完成任务 /// /// public async Task> GetCompleteTaskList() { var query = await client.Queryable().Where(r => r.IsCompleted == true&&r.CompleteTime!=null) .Select(r => new { 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(); return query; } /// /// 最佳牛马排行 /// /// /// public async Task> GetRankingList(string flag) { DateTime begindate = DateTime.Now; if (flag == "week") { DateTime today = DateTime.Today; // 获取今天的日期 int diff = today.DayOfWeek - DayOfWeek.Monday; // 如果是星期天,DayOfWeek.Sunday 的值是 0,调整为 -6 if (diff < 0) { diff += 7; } begindate= today.AddDays(-diff); } if (flag == "month") { begindate = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-01")); } var query = await client.Queryable() .Where(r => r.IsComplate == true && r.CompleteTime != null) .WhereIF(flag!="total", r=> r.CompleteTime>=begindate) .GroupBy(r => r.ReciveUserId) .Select(r => new { count = SqlFunc.AggregateCount(r.Id), userid=r.ReciveUserId }) .MergeTable() .LeftJoin((r, u) => r.userid == u.Id.ToString()) .OrderBy((r, u) => r.count) .Select((r, u) => new { r.count, r.userid, u.Name, u.HeadIcon }) .ToListAsync(); return query; } /// /// 在办任务 /// /// public async Task> GetTaskingList(string flag) { DateTime begindate = DateTime.Now; var query = await client.Queryable() .Where(r => r.IsComplate == false) .GroupBy(r => r.ReciveUserId) .Select(r => new { count = SqlFunc.AggregateCount(r.Id), userid = r.ReciveUserId }) .MergeTable() .LeftJoin((r, u) => r.userid == u.Id.ToString()) .OrderBy((r, u) => r.count) .Select((r, u) => new { r.count, r.userid, u.Name, u.HeadIcon }) .ToListAsync(); return query; } } }