diff --git a/src/Coldairarrow.Api/Controllers/HuiYan/teamitemsController.cs b/src/Coldairarrow.Api/Controllers/HuiYan/teamitemsController.cs
index ad599a1..182e83d 100644
--- a/src/Coldairarrow.Api/Controllers/HuiYan/teamitemsController.cs
+++ b/src/Coldairarrow.Api/Controllers/HuiYan/teamitemsController.cs
@@ -116,6 +116,18 @@ namespace Coldairarrow.Api.Controllers.HuiYan
return _teamitemsBus.GetTeamCount();
}
+ ///
+ /// 获取所有统计信息
+ ///
+ ///
+ ///
+ ///
+ [HttpGet]
+ public AjaxResult GetTjInfo(DateTime start, DateTime end)
+ {
+ return _teamitemsBus.GetTjInfo(start,end);
+ }
+
///
/// 获取比价统计信息
diff --git a/src/Coldairarrow.Api/Program.cs b/src/Coldairarrow.Api/Program.cs
index 06d11d0..088f63d 100644
--- a/src/Coldairarrow.Api/Program.cs
+++ b/src/Coldairarrow.Api/Program.cs
@@ -32,8 +32,10 @@ namespace Coldairarrow.Api
config.UseDatabase(dbmdsOptions.ConnectionString, dbmdsOptions.DatabaseType);
});
})
+
.ConfigureWebHostDefaults(webBuilder =>
{
+ //.UseUrls("http://*:8080")
webBuilder.UseStartup();
})
.Build()
diff --git a/src/Coldairarrow.Api/appsettings.json b/src/Coldairarrow.Api/appsettings.json
index 68a7afa..9e3e4f6 100644
--- a/src/Coldairarrow.Api/appsettings.json
+++ b/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,,ԽΪλ,ͬIdͻIdͬʱظ
- "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,
diff --git a/src/Coldairarrow.Business/HuiYan/teamitemsBusiness.cs b/src/Coldairarrow.Business/HuiYan/teamitemsBusiness.cs
index 6b40a98..5c2e04c 100644
--- a/src/Coldairarrow.Business/HuiYan/teamitemsBusiness.cs
+++ b/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, 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> 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();
+ var q = from a in q_titem.AsExpandable()
+ join b in Db.GetIQueryable() on a.Id equals b.TeamItemId into ab
+ from b in ab.DefaultIfEmpty()
+ select @select.Invoke(b, a);
+
+ var where = LinqHelper.True();
+ where = where.And(c => c.CreateTime >= start && c.CreateTime <= end);
+ var list = q.Where(where).ToList();
+
+
+ Expression> 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> 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();
+
+ 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();
+
+ 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() { jtInfo },
+ FB=fbList,
+ BJ=bjList
+ };
+
+
+ return Success(result) ;
+
+ }
+
public AjaxResult SetState(string id, int state)
{
//删除
diff --git a/src/Coldairarrow.Business/MDS/userBusiness.cs b/src/Coldairarrow.Business/MDS/userBusiness.cs
index 78f42b4..89f1baf 100644
--- a/src/Coldairarrow.Business/MDS/userBusiness.cs
+++ b/src/Coldairarrow.Business/MDS/userBusiness.cs
@@ -86,6 +86,11 @@ namespace Coldairarrow.Business.MDS
}
+ public IQueryable GetUserQueryable()
+ {
+ return GetIQueryable();
+ }
+
#region 私有成员
#endregion
diff --git a/src/Coldairarrow.Business/MDS/userdepartmentBusiness.cs b/src/Coldairarrow.Business/MDS/userdepartmentBusiness.cs
index 20ea3ce..dc7ed43 100644
--- a/src/Coldairarrow.Business/MDS/userdepartmentBusiness.cs
+++ b/src/Coldairarrow.Business/MDS/userdepartmentBusiness.cs
@@ -59,6 +59,11 @@ namespace Coldairarrow.Business.MDS
#endregion
+ public IQueryable GetDepQueryable()
+ {
+ return GetIQueryable();
+ }
+
#region 私有成员
#endregion
diff --git a/src/Coldairarrow.Entity/DTO/TaskInfoDto.cs b/src/Coldairarrow.Entity/DTO/TaskInfoDto.cs
index aa4cf17..1a344e5 100644
--- a/src/Coldairarrow.Entity/DTO/TaskInfoDto.cs
+++ b/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; }
+
///
/// 待审核任务数量
///
@@ -54,5 +65,10 @@ namespace Coldairarrow.Entity.DTO
/// 不合格数量
///
public int FailedCount { get; set; }
+
+ ///
+ /// 未完成数量
+ ///
+ public int NeedWorkCount { get; set; }
}
}
diff --git a/src/Coldairarrow.IBusiness/HuiYan/IteamitemsBusiness.cs b/src/Coldairarrow.IBusiness/HuiYan/IteamitemsBusiness.cs
index 2160d13..294e5d8 100644
--- a/src/Coldairarrow.IBusiness/HuiYan/IteamitemsBusiness.cs
+++ b/src/Coldairarrow.IBusiness/HuiYan/IteamitemsBusiness.cs
@@ -25,6 +25,7 @@ namespace Coldairarrow.Business.HuiYan
AjaxResult GetTeamCount();
Task GetMyTaskInfo(int type, DateTime start, DateTime end);
+ AjaxResult GetTjInfo(DateTime start, DateTime end);
bool UpdateTaskSuccess(List logs);
}
diff --git a/src/Coldairarrow.IBusiness/MDS/IuserBusiness.cs b/src/Coldairarrow.IBusiness/MDS/IuserBusiness.cs
index a661cf3..b26d7c3 100644
--- a/src/Coldairarrow.IBusiness/MDS/IuserBusiness.cs
+++ b/src/Coldairarrow.IBusiness/MDS/IuserBusiness.cs
@@ -16,5 +16,8 @@ namespace Coldairarrow.Business.MDS
Task DeleteDataAsync(List ids);
IQueryable GetPriceTaskUserList();
+
+
+ IQueryable GetUserQueryable();
}
}
\ No newline at end of file
diff --git a/src/Coldairarrow.IBusiness/MDS/IuserdepartmentBusiness.cs b/src/Coldairarrow.IBusiness/MDS/IuserdepartmentBusiness.cs
index 3453e5b..481c3b4 100644
--- a/src/Coldairarrow.IBusiness/MDS/IuserdepartmentBusiness.cs
+++ b/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 ids);
+
+ IQueryable GetDepQueryable();
}
}
\ No newline at end of file