Browse Source

加入任务统计

master
feng 3 years ago
parent
commit
7a91da18e7
  1. 12
      src/Coldairarrow.Api/Controllers/HuiYan/teamitemsController.cs
  2. 2
      src/Coldairarrow.Api/Program.cs
  3. 20
      src/Coldairarrow.Api/appsettings.json
  4. 157
      src/Coldairarrow.Business/HuiYan/teamitemsBusiness.cs
  5. 5
      src/Coldairarrow.Business/MDS/userBusiness.cs
  6. 5
      src/Coldairarrow.Business/MDS/userdepartmentBusiness.cs
  7. 18
      src/Coldairarrow.Entity/DTO/TaskInfoDto.cs
  8. 1
      src/Coldairarrow.IBusiness/HuiYan/IteamitemsBusiness.cs
  9. 3
      src/Coldairarrow.IBusiness/MDS/IuserBusiness.cs
  10. 3
      src/Coldairarrow.IBusiness/MDS/IuserdepartmentBusiness.cs

12
src/Coldairarrow.Api/Controllers/HuiYan/teamitemsController.cs

@ -116,6 +116,18 @@ namespace Coldairarrow.Api.Controllers.HuiYan
return _teamitemsBus.GetTeamCount();
}
/// <summary>
/// 获取所有统计信息
/// </summary>
/// <param name="start"></param>
/// <param name="end"></param>
/// <returns></returns>
[HttpGet]
public AjaxResult GetTjInfo(DateTime start, DateTime end)
{
return _teamitemsBus.GetTjInfo(start,end);
}
/// <summary>
/// 获取比价统计信息

2
src/Coldairarrow.Api/Program.cs

@ -32,8 +32,10 @@ namespace Coldairarrow.Api
config.UseDatabase<IMDSDbAccessor>(dbmdsOptions.ConnectionString, dbmdsOptions.DatabaseType);
});
})
.ConfigureWebHostDefaults(webBuilder =>
{
//.UseUrls("http://*:8080")
webBuilder.UseStartup<Startup>();
})
.Build()

20
src/Coldairarrow.Api/appsettings.json

@ -1,8 +1,8 @@
{
"urls": "http://*:5000",
"urls": "http://*:5001",
"AllowedHosts": "*",
"log": { //
"minlevel": "Trace", //Microsoft.Extensions.Logging.LogLevel
"log": { //־
"minlevel": "Trace", //Microsoft.Extensions.Logging.LogLevel
"console": {
"enabled": true
},
@ -17,7 +17,7 @@
"nodes": [ "http://elastic:123456@localhost:9200/" ],
"indexformat": "colder.{0:yyyyMMdd}"
},
"overrides": [ //
"overrides": [ //д־
{
"source": "Microsoft.AspNetCore",
"minlevel": "Warning"
@ -33,12 +33,12 @@
]
},
"Cache": {
"CacheType": "Memory", //Coldairarrow.Util.CacheType
"RedisEndpoint": "127.0.0.1:6379" //Redis, https://github.com/2881099/csredis
"CacheType": "Memory", //Coldairarrow.Util.CacheType
"RedisEndpoint": "127.0.0.1:6379" //Redisڵַ, https://github.com/2881099/csredis
},
"Database": {
"BaseDb": {
//"DatabaseType": "SqlServer", //EFCore.Sharding.DatabaseType
//"DatabaseType": "SqlServer", //EFCore.Sharding.DatabaseType
//"ConnectionString": "Data Source=.;Initial Catalog=Colder.Admin.AntdVue;Integrated Security=True;Pooling=true;"
//"DatabaseType": "PostgreSql",
//"ConnectionString": "Server=127.0.0.1;Port=5432;Database=Colder.Admin.AntdVue;User Id=postgres;Password=postgres;"
@ -54,9 +54,9 @@
"ConnectionString": "server=rm-bp1508okrh23710yfao.mysql.rds.aliyuncs.com;user id=qyroot;password=kaicn1132+-;persistsecurityinfo=True;database=mds;SslMode=none;AllowLoadLocalInfile=true;ConvertZeroDateTime=True"
}
},
//Id,,,IdId
"WorkerId": 1, //Id
"WebRootUrl": "http://localhost:5000", //,
//ѩId,,ԽΪλ,ͬIdͻIdͬʱظ
"WorkerId": 1, //Id
"WebRootUrl": "http://localhost:5000", //ӿڸַ,
"jwt": {
"secret": "D96BFA5B-F2AF-45BC-9342-5A55C3F9BBB0",
"accessExpireHours": 24,

157
src/Coldairarrow.Business/HuiYan/teamitemsBusiness.cs

@ -1,6 +1,8 @@
using Coldairarrow.Entity.DTO;
using Coldairarrow.Business.MDS;
using Coldairarrow.Entity.DTO;
using Coldairarrow.Entity.Enum;
using Coldairarrow.Entity.HuiYan;
using Coldairarrow.Entity.MDS;
using Coldairarrow.IBusiness;
using Coldairarrow.Util;
using EFCore.Sharding;
@ -19,10 +21,14 @@ namespace Coldairarrow.Business.HuiYan
public class teamitemsBusiness : BaseBusiness<teamitems>, IteamitemsBusiness, ITransientDependency
{
readonly IOperator _operator;
public teamitemsBusiness(IDbAccessor db, IOperator @operator)
IuserdepartmentBusiness _iuserdepartmentBusiness;
IuserBusiness _iuserBusiness;
public teamitemsBusiness(IDbAccessor db, IOperator @operator, IuserdepartmentBusiness iuserdepartmentBusiness, IuserBusiness iuserBusiness)
: base(db)
{
_operator = @operator;
_iuserdepartmentBusiness = iuserdepartmentBusiness;
_iuserBusiness = iuserBusiness;
}
#region 外部接口
@ -349,6 +355,153 @@ namespace Coldairarrow.Business.HuiYan
}
public AjaxResult GetTjInfo(DateTime start, DateTime end)
{
Expression<Func<pricetasklog, teamitems, TaskInfoDto>> select = (a, b) => new TaskInfoDto
{
IsPass = b.IsQualified,
TeamId = b.TeamId,
TeamUserId = b.UserId,
TeamDate = b.CreateTime,
TeamOverDate = b.UpdateDate,
PriceTaskUserId = b.PriceTaskUserId,
TeamItemState = (TeamItemState?)b.State
};
select = select.BuildExtendSelectExpre();
var q_titem = Db.GetIQueryable<teamitems>();
var q = from a in q_titem.AsExpandable()
join b in Db.GetIQueryable<pricetasklog>() on a.Id equals b.TeamItemId into ab
from b in ab.DefaultIfEmpty()
select @select.Invoke(b, a);
var where = LinqHelper.True<TaskInfoDto>();
where = where.And(c => c.CreateTime >= start && c.CreateTime <= end);
var list = q.Where(where).ToList();
Expression<Func<TaskInfoDto, userdepartment, TaskInfoDto>> select2 = (a, b) => new TaskInfoDto
{
TeamName =b==null?"未知" :b.DepartmentName
};
select2 = select2.BuildExtendSelectExpre();
var q2 = from a in list
join b in _iuserdepartmentBusiness.GetDepQueryable() on a.TeamId equals b.Id into ab
from b in ab.DefaultIfEmpty()
select @select2.Invoke(a, b);
list = q2.ToList();
Expression<Func<TaskInfoDto, user, TaskInfoDto>> select3 = (a, b) => new TaskInfoDto
{
UserName = b == null ? "未知" : b.UserNick
};
select3 = select3.BuildExtendSelectExpre();
var q3 = from a in list
join b in _iuserBusiness.GetUserQueryable() on a.UserId equals b.Id into ab
from b in ab.DefaultIfEmpty()
select @select3.Invoke(a, b);
list = q3.ToList();
var jtInfo = new PriceTaskInfo()
{
AuditCount = list.Count(c => c.State == PriceTaskState.),
OverCount = list.Count(c => c.State == PriceTaskState.),
PassCount = list.Count(c => c.IsPass == true),
PublishCount = list.Count,
FailedCount = list.Count(c => c.IsPass == false),
NeedWorkCount = list.Count(c => c.State != PriceTaskState.)
};
if (list.Count > 0)
{
jtInfo.PassRate = Math.Round(((decimal)jtInfo.PassCount / list.Count) * 100, 2);
}
var fbList= new List<PriceTaskInfo>();
var groups= list.GroupBy(c => c.TeamName).ToList();
foreach (var group in groups)
{
var sonList = group.ToList();
var price = new PriceTaskInfo()
{
Title = group.Key,
AuditCount = sonList.Count(c => c.State == PriceTaskState.),
OverCount = sonList.Count(c => c.State == PriceTaskState.),
PassCount = sonList.Count(c => c.IsPass == true),
PublishCount = sonList.Count,
FailedCount = sonList.Count(c => c.IsPass == false),
NeedWorkCount = sonList.Count(c => c.State != PriceTaskState.)
};
if (sonList.Count > 0)
{
price.PassRate = Math.Round(((decimal)price.PassCount / sonList.Count) * 100, 2);
}
fbList.Add(price);
}
var bjList = new List<PriceTaskInfo>();
var bjGroup = list.GroupBy(c => c.UserName).ToList();
foreach (var group in bjGroup)
{
var sonList = group.ToList();
var price = new PriceTaskInfo()
{
Title = group.Key,
AuditCount = sonList.Count(c => c.State == PriceTaskState.),
OverCount = sonList.Count(c => c.State == PriceTaskState.),
PassCount = sonList.Count(c => c.IsPass == true),
PublishCount = sonList.Count,
FailedCount = sonList.Count(c => c.IsPass == false),
NeedWorkCount = sonList.Count(c => c.State != PriceTaskState.)
};
if (sonList.Count > 0)
{
price.PassRate = Math.Round(((decimal)price.PassCount / sonList.Count) * 100, 2);
}
bjList.Add(price);
}
var result = new
{
//待完成
WaitOver = list.Count(c => c.TeamItemState == TeamItemState. &&!string.IsNullOrEmpty( c.PriceTaskUserId)&& c.State != PriceTaskState.),
//待接入
WaitCheck= list.Count(c => c.TeamItemState == TeamItemState. && string.IsNullOrEmpty(c.PriceTaskUserId) ),
JT=new List<PriceTaskInfo>() { jtInfo },
FB=fbList,
BJ=bjList
};
return Success(result) ;
}
public AjaxResult SetState(string id, int state)
{
//删除

5
src/Coldairarrow.Business/MDS/userBusiness.cs

@ -86,6 +86,11 @@ namespace Coldairarrow.Business.MDS
}
public IQueryable<user> GetUserQueryable()
{
return GetIQueryable();
}
#region 私有成员
#endregion

5
src/Coldairarrow.Business/MDS/userdepartmentBusiness.cs

@ -59,6 +59,11 @@ namespace Coldairarrow.Business.MDS
#endregion
public IQueryable<userdepartment> GetDepQueryable()
{
return GetIQueryable();
}
#region 私有成员
#endregion

18
src/Coldairarrow.Entity/DTO/TaskInfoDto.cs

@ -1,4 +1,5 @@
using System;
using Coldairarrow.Entity.Enum;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
@ -20,11 +21,21 @@ namespace Coldairarrow.Entity.DTO
public DateTime? TeamDate { get; set; }
public DateTime? TeamOverDate { get; set; }
public string PriceTaskUserId { get; set; }
public TeamItemState? TeamItemState { get; set; }
public string TeamName { get; set; }
public string UserName { get; set; }
}
public class PriceTaskInfo
{
public string Title { get; set; }
/// <summary>
/// 待审核任务数量
/// </summary>
@ -54,5 +65,10 @@ namespace Coldairarrow.Entity.DTO
/// 不合格数量
/// </summary>
public int FailedCount { get; set; }
/// <summary>
/// 未完成数量
/// </summary>
public int NeedWorkCount { get; set; }
}
}

1
src/Coldairarrow.IBusiness/HuiYan/IteamitemsBusiness.cs

@ -25,6 +25,7 @@ namespace Coldairarrow.Business.HuiYan
AjaxResult GetTeamCount();
Task<PriceTaskInfo> GetMyTaskInfo(int type, DateTime start, DateTime end);
AjaxResult GetTjInfo(DateTime start, DateTime end);
bool UpdateTaskSuccess(List<pricetasklog> logs);
}

3
src/Coldairarrow.IBusiness/MDS/IuserBusiness.cs

@ -16,5 +16,8 @@ namespace Coldairarrow.Business.MDS
Task DeleteDataAsync(List<string> ids);
IQueryable<UserRoleDto> GetPriceTaskUserList();
IQueryable<user> GetUserQueryable();
}
}

3
src/Coldairarrow.IBusiness/MDS/IuserdepartmentBusiness.cs

@ -1,6 +1,7 @@
using Coldairarrow.Entity.MDS;
using Coldairarrow.Util;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace Coldairarrow.Business.MDS
@ -12,5 +13,7 @@ namespace Coldairarrow.Business.MDS
Task AddDataAsync(userdepartment data);
Task UpdateDataAsync(userdepartment data);
Task DeleteDataAsync(List<string> ids);
IQueryable<userdepartment> GetDepQueryable();
}
}
Loading…
Cancel
Save