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

158 lines
5.4 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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<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;
}
/// <summary>
/// 完成任务
/// </summary>
/// <returns></returns>
public async Task<List<InsTaskRes>> GetCompleteTaskList()
{
var query = await client.Queryable<InsTask>().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;
}
/// <summary>
/// 最佳牛马排行
/// </summary>
/// <param name="flag"></param>
/// <returns></returns>
public async Task<List<dynamic>> 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<InsTaskgroup>()
.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<SysUser>((r, u) => r.userid == u.Id.ToString())
.OrderBy((r, u) => r.count)
.Select<dynamic>((r, u) => new
{
r.count,
r.userid,
u.Name,
u.HeadIcon
})
.ToListAsync();
return query;
}
/// <summary>
/// 在办任务
/// </summary>
/// <returns></returns>
public async Task<List<dynamic>> GetTaskingList(string flag)
{
DateTime begindate = DateTime.Now;
var query = await client.Queryable<InsTaskgroup>()
.Where(r => r.IsComplate == false)
.GroupBy(r => r.ReciveUserId)
.Select(r => new
{
count = SqlFunc.AggregateCount(r.Id),
userid = r.ReciveUserId
})
.MergeTable()
.LeftJoin<SysUser>((r, u) => r.userid == u.Id.ToString())
.OrderBy((r, u) => r.count)
.Select<dynamic>((r, u) => new
{
r.count,
r.userid,
u.Name,
u.HeadIcon
})
.ToListAsync();
return query;
}
}
}