|
|
|
@ -639,186 +639,185 @@ namespace Myshipping.Application
|
|
|
|
|
if (userTendInfo == null)
|
|
|
|
|
throw Oops.Oh($"当前用户关联租户信息获取失败");
|
|
|
|
|
|
|
|
|
|
var statList = _taskStatManageInfoRepository.AsQueryable().Where(t => (t.USER_ID == userTendInfo.User.Id
|
|
|
|
|
&& t.STAT_TYPE == TaskStatLevelEnum.PERSON.ToString()) || (t.COMP_ID == userTendInfo.Tend.Id && t.STAT_TYPE == TaskStatLevelEnum.PUBLIC.ToString())).ToList();
|
|
|
|
|
//var statList = _taskStatManageInfoRepository.AsQueryable().Where(t => (t.USER_ID == userTendInfo.User.Id
|
|
|
|
|
//&& t.STAT_TYPE == TaskStatLevelEnum.PERSON.ToString()) || (t.COMP_ID == userTendInfo.Tend.Id && t.STAT_TYPE == TaskStatLevelEnum.PUBLIC.ToString())).ToList();
|
|
|
|
|
|
|
|
|
|
if (true)
|
|
|
|
|
{
|
|
|
|
|
//任务列表分组统计
|
|
|
|
|
var groupList = _taskBaseInfoRepository.AsQueryable()
|
|
|
|
|
.Where(t => (t.CreatedUserId == UserManager.UserId && t.IS_PUBLIC == 0) || (t.TenantId == userTendInfo.Tend.Id && t.IS_PUBLIC == 1))
|
|
|
|
|
.GroupBy(p => new { p.TASK_TYPE, p.STATUS, p.IS_EXCEPT, p.IS_PUBLIC })
|
|
|
|
|
.Select(p => new
|
|
|
|
|
{
|
|
|
|
|
Total = SqlFunc.AggregateCount(p.PK_ID),
|
|
|
|
|
TaskType = p.TASK_TYPE,
|
|
|
|
|
Status = p.STATUS,
|
|
|
|
|
IsExcept = p.IS_EXCEPT,
|
|
|
|
|
IsPublic = p.IS_PUBLIC
|
|
|
|
|
}).ToList();
|
|
|
|
|
|
|
|
|
|
var exceptList = groupList
|
|
|
|
|
.Where(t => t.IsExcept == 1).ToList();
|
|
|
|
|
//任务列表分组统计
|
|
|
|
|
var groupList = _taskBaseInfoRepository.AsQueryable()
|
|
|
|
|
.Where(t => (t.CreatedUserId == UserManager.UserId && t.IS_PUBLIC == 0) || (t.TenantId == userTendInfo.Tend.Id && t.IS_PUBLIC == 1))
|
|
|
|
|
.GroupBy(p => new { p.TASK_TYPE, p.STATUS, p.IS_EXCEPT, p.IS_PUBLIC })
|
|
|
|
|
.Select(p => new
|
|
|
|
|
{
|
|
|
|
|
Total = SqlFunc.AggregateCount(p.PK_ID),
|
|
|
|
|
TaskType = p.TASK_TYPE,
|
|
|
|
|
Status = p.STATUS,
|
|
|
|
|
IsExcept = p.IS_EXCEPT,
|
|
|
|
|
IsPublic = p.IS_PUBLIC
|
|
|
|
|
}).ToList();
|
|
|
|
|
|
|
|
|
|
var exceptList = groupList
|
|
|
|
|
.Where(t => t.IsExcept == 1).ToList();
|
|
|
|
|
|
|
|
|
|
var personList = groupList
|
|
|
|
|
.Where(t => t.IsExcept == 0 && t.IsPublic == 0).ToList();
|
|
|
|
|
var personList = groupList
|
|
|
|
|
.Where(t => t.IsExcept == 0 && t.IsPublic == 0).ToList();
|
|
|
|
|
|
|
|
|
|
var publicList = groupList
|
|
|
|
|
.Where(t => t.IsExcept == 0 && t.IsPublic == 1).ToList();
|
|
|
|
|
var publicList = groupList
|
|
|
|
|
.Where(t => t.IsExcept == 0 && t.IsPublic == 1).ToList();
|
|
|
|
|
|
|
|
|
|
#region 异常
|
|
|
|
|
if (exceptList.Count > 0)
|
|
|
|
|
#region 异常
|
|
|
|
|
if (exceptList.Count > 0)
|
|
|
|
|
{
|
|
|
|
|
resultInfo.LevelTop.Add(new TaskUserStatItem
|
|
|
|
|
{
|
|
|
|
|
resultInfo.LevelTop.Add(new TaskUserStatItem
|
|
|
|
|
Key = TaskStatLevelEnum.EXCPTION.ToString(),
|
|
|
|
|
Name = TaskStatLevelEnum.EXCPTION.GetDescription(),
|
|
|
|
|
Total = exceptList.Sum(t => t.Total),
|
|
|
|
|
SortNo = (int)TaskStatLevelEnum.EXCPTION,
|
|
|
|
|
ActionKey = TaskStatLevelEnum.EXCPTION.ToString()
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
exceptList.GroupBy(t => t.Status)
|
|
|
|
|
.Select(t => new { Key = t.Key, Total = t.ToList().Sum(p => p.Total) })
|
|
|
|
|
.ToList().ForEach(t =>
|
|
|
|
|
{
|
|
|
|
|
Key = TaskStatLevelEnum.EXCPTION.ToString(),
|
|
|
|
|
Name = TaskStatLevelEnum.EXCPTION.GetDescription(),
|
|
|
|
|
Total = exceptList.Sum(t => t.Total),
|
|
|
|
|
SortNo = (int)TaskStatLevelEnum.EXCPTION,
|
|
|
|
|
ActionKey = TaskStatLevelEnum.EXCPTION.ToString()
|
|
|
|
|
});
|
|
|
|
|
TaskStatusEnum currEnum = (TaskStatusEnum)System.Enum.Parse(typeof(TaskStatusEnum), t.Key);
|
|
|
|
|
|
|
|
|
|
exceptList.GroupBy(t => t.Status)
|
|
|
|
|
.Select(t => new { Key = t.Key, Total = t.ToList().Sum(p => p.Total) })
|
|
|
|
|
.ToList().ForEach(t =>
|
|
|
|
|
resultInfo.LevelNext.Add(new TaskUserStatItemNext
|
|
|
|
|
{
|
|
|
|
|
TaskStatusEnum currEnum = (TaskStatusEnum)System.Enum.Parse(typeof(TaskStatusEnum), t.Key);
|
|
|
|
|
|
|
|
|
|
resultInfo.LevelNext.Add(new TaskUserStatItemNext
|
|
|
|
|
{
|
|
|
|
|
TopKey = TaskStatLevelEnum.EXCPTION.ToString(),
|
|
|
|
|
Key = currEnum.ToString(),
|
|
|
|
|
Name = currEnum.GetDescription(),
|
|
|
|
|
Total = t.Total,
|
|
|
|
|
SortNo = (int)currEnum,
|
|
|
|
|
ActionKey = $"{TaskStatLevelEnum.EXCPTION.ToString()}#{currEnum.ToString()}"
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
TopKey = TaskStatLevelEnum.EXCPTION.ToString(),
|
|
|
|
|
Key = currEnum.ToString(),
|
|
|
|
|
Name = currEnum.GetDescription(),
|
|
|
|
|
Total = t.Total,
|
|
|
|
|
SortNo = (int)currEnum,
|
|
|
|
|
ActionKey = $"{TaskStatLevelEnum.EXCPTION.ToString()}#{currEnum.ToString()}"
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
exceptList.GroupBy(t => new { t.Status, t.TaskType })
|
|
|
|
|
.Select(t => new { Key = t.Key, Total = t.ToList().Sum(p => p.Total) })
|
|
|
|
|
.ToList().ForEach(t =>
|
|
|
|
|
{
|
|
|
|
|
TaskBusiTypeEnum currEnum = (TaskBusiTypeEnum)System.Enum.Parse(typeof(TaskBusiTypeEnum), t.Key.TaskType);
|
|
|
|
|
|
|
|
|
|
resultInfo.LevelTree.Add(new TaskUserStatItemTree
|
|
|
|
|
{
|
|
|
|
|
TopKey = TaskStatLevelEnum.EXCPTION.ToString(),
|
|
|
|
|
NextKey = t.Key.Status,
|
|
|
|
|
Key = currEnum.ToString(),
|
|
|
|
|
Name = currEnum.GetDescription(),
|
|
|
|
|
Total = t.Total,
|
|
|
|
|
SortNo = (int)currEnum,
|
|
|
|
|
ActionKey = $"{TaskStatLevelEnum.EXCPTION.ToString()}#{t.Key.Status}#{currEnum.ToString()}"
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
exceptList.GroupBy(t => new { t.Status, t.TaskType })
|
|
|
|
|
.Select(t => new { Key = t.Key, Total = t.ToList().Sum(p => p.Total) })
|
|
|
|
|
.ToList().ForEach(t =>
|
|
|
|
|
{
|
|
|
|
|
TaskBusiTypeEnum currEnum = (TaskBusiTypeEnum)System.Enum.Parse(typeof(TaskBusiTypeEnum), t.Key.TaskType);
|
|
|
|
|
|
|
|
|
|
resultInfo.LevelTree.Add(new TaskUserStatItemTree
|
|
|
|
|
{
|
|
|
|
|
TopKey = TaskStatLevelEnum.EXCPTION.ToString(),
|
|
|
|
|
NextKey = t.Key.Status,
|
|
|
|
|
Key = currEnum.ToString(),
|
|
|
|
|
Name = currEnum.GetDescription(),
|
|
|
|
|
Total = t.Total,
|
|
|
|
|
SortNo = (int)currEnum,
|
|
|
|
|
ActionKey = $"{TaskStatLevelEnum.EXCPTION.ToString()}#{t.Key.Status}#{currEnum.ToString()}"
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
#region 个人
|
|
|
|
|
if (personList.Count > 0)
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
#region 个人
|
|
|
|
|
if (personList.Count > 0)
|
|
|
|
|
{
|
|
|
|
|
resultInfo.LevelTop.Add(new TaskUserStatItem
|
|
|
|
|
{
|
|
|
|
|
resultInfo.LevelTop.Add(new TaskUserStatItem
|
|
|
|
|
Key = TaskStatLevelEnum.PERSON.ToString(),
|
|
|
|
|
Name = TaskStatLevelEnum.PERSON.GetDescription(),
|
|
|
|
|
Total = personList.Sum(t => t.Total),
|
|
|
|
|
SortNo = (int)TaskStatLevelEnum.PERSON,
|
|
|
|
|
ActionKey = TaskStatLevelEnum.PERSON.ToString()
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
personList.GroupBy(t => t.Status)
|
|
|
|
|
.Select(t => new { Key = t.Key, Total = t.ToList().Sum(p => p.Total) })
|
|
|
|
|
.ToList().ForEach(t =>
|
|
|
|
|
{
|
|
|
|
|
Key = TaskStatLevelEnum.PERSON.ToString(),
|
|
|
|
|
Name = TaskStatLevelEnum.PERSON.GetDescription(),
|
|
|
|
|
Total = personList.Sum(t => t.Total),
|
|
|
|
|
SortNo = (int)TaskStatLevelEnum.PERSON,
|
|
|
|
|
ActionKey = TaskStatLevelEnum.PERSON.ToString()
|
|
|
|
|
});
|
|
|
|
|
TaskStatusEnum currEnum = (TaskStatusEnum)System.Enum.Parse(typeof(TaskStatusEnum), t.Key);
|
|
|
|
|
|
|
|
|
|
personList.GroupBy(t => t.Status)
|
|
|
|
|
.Select(t => new { Key = t.Key, Total = t.ToList().Sum(p => p.Total) })
|
|
|
|
|
.ToList().ForEach(t =>
|
|
|
|
|
resultInfo.LevelNext.Add(new TaskUserStatItemNext
|
|
|
|
|
{
|
|
|
|
|
TaskStatusEnum currEnum = (TaskStatusEnum)System.Enum.Parse(typeof(TaskStatusEnum), t.Key);
|
|
|
|
|
|
|
|
|
|
resultInfo.LevelNext.Add(new TaskUserStatItemNext
|
|
|
|
|
{
|
|
|
|
|
TopKey = TaskStatLevelEnum.PERSON.ToString(),
|
|
|
|
|
Key = currEnum.ToString(),
|
|
|
|
|
Name = currEnum.GetDescription(),
|
|
|
|
|
Total = t.Total,
|
|
|
|
|
SortNo = (int)currEnum,
|
|
|
|
|
ActionKey = $"{TaskStatLevelEnum.PERSON.ToString()}#{currEnum.ToString()}"
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
TopKey = TaskStatLevelEnum.PERSON.ToString(),
|
|
|
|
|
Key = currEnum.ToString(),
|
|
|
|
|
Name = currEnum.GetDescription(),
|
|
|
|
|
Total = t.Total,
|
|
|
|
|
SortNo = (int)currEnum,
|
|
|
|
|
ActionKey = $"{TaskStatLevelEnum.PERSON.ToString()}#{currEnum.ToString()}"
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
personList.GroupBy(t => new { t.Status, t.TaskType })
|
|
|
|
|
.Select(t => new { Key = t.Key, Total = t.ToList().Sum(p => p.Total) })
|
|
|
|
|
.ToList().ForEach(t =>
|
|
|
|
|
{
|
|
|
|
|
TaskBusiTypeEnum currEnum = (TaskBusiTypeEnum)System.Enum.Parse(typeof(TaskBusiTypeEnum), t.Key.TaskType);
|
|
|
|
|
|
|
|
|
|
resultInfo.LevelTree.Add(new TaskUserStatItemTree
|
|
|
|
|
{
|
|
|
|
|
TopKey = TaskStatLevelEnum.PERSON.ToString(),
|
|
|
|
|
NextKey = t.Key.Status,
|
|
|
|
|
Key = currEnum.ToString(),
|
|
|
|
|
Name = currEnum.GetDescription(),
|
|
|
|
|
Total = t.Total,
|
|
|
|
|
SortNo = (int)currEnum,
|
|
|
|
|
ActionKey = $"{TaskStatLevelEnum.PERSON.ToString()}#{t.Key.Status}#{currEnum.ToString()}"
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
personList.GroupBy(t => new { t.Status, t.TaskType })
|
|
|
|
|
.Select(t => new { Key = t.Key, Total = t.ToList().Sum(p => p.Total) })
|
|
|
|
|
.ToList().ForEach(t =>
|
|
|
|
|
{
|
|
|
|
|
TaskBusiTypeEnum currEnum = (TaskBusiTypeEnum)System.Enum.Parse(typeof(TaskBusiTypeEnum), t.Key.TaskType);
|
|
|
|
|
|
|
|
|
|
resultInfo.LevelTree.Add(new TaskUserStatItemTree
|
|
|
|
|
{
|
|
|
|
|
TopKey = TaskStatLevelEnum.PERSON.ToString(),
|
|
|
|
|
NextKey = t.Key.Status,
|
|
|
|
|
Key = currEnum.ToString(),
|
|
|
|
|
Name = currEnum.GetDescription(),
|
|
|
|
|
Total = t.Total,
|
|
|
|
|
SortNo = (int)currEnum,
|
|
|
|
|
ActionKey = $"{TaskStatLevelEnum.PERSON.ToString()}#{t.Key.Status}#{currEnum.ToString()}"
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
#region 公共
|
|
|
|
|
if (publicList.Count > 0)
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
#region 公共
|
|
|
|
|
if (publicList.Count > 0)
|
|
|
|
|
{
|
|
|
|
|
resultInfo.LevelTop.Add(new TaskUserStatItem
|
|
|
|
|
{
|
|
|
|
|
resultInfo.LevelTop.Add(new TaskUserStatItem
|
|
|
|
|
Key = TaskStatLevelEnum.PUBLIC.ToString(),
|
|
|
|
|
Name = TaskStatLevelEnum.PUBLIC.GetDescription(),
|
|
|
|
|
Total = publicList.Sum(t => t.Total),
|
|
|
|
|
SortNo = (int)TaskStatLevelEnum.PUBLIC,
|
|
|
|
|
ActionKey = TaskStatLevelEnum.PUBLIC.ToString()
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
publicList.GroupBy(t => t.Status)
|
|
|
|
|
.Select(t => new { Key = t.Key, Total = t.ToList().Sum(p => p.Total) })
|
|
|
|
|
.ToList().ForEach(t =>
|
|
|
|
|
{
|
|
|
|
|
Key = TaskStatLevelEnum.PUBLIC.ToString(),
|
|
|
|
|
Name = TaskStatLevelEnum.PUBLIC.GetDescription(),
|
|
|
|
|
Total = publicList.Sum(t => t.Total),
|
|
|
|
|
SortNo = (int)TaskStatLevelEnum.PUBLIC,
|
|
|
|
|
ActionKey = TaskStatLevelEnum.PUBLIC.ToString()
|
|
|
|
|
});
|
|
|
|
|
TaskStatusEnum currEnum = (TaskStatusEnum)System.Enum.Parse(typeof(TaskStatusEnum), t.Key);
|
|
|
|
|
|
|
|
|
|
publicList.GroupBy(t => t.Status)
|
|
|
|
|
.Select(t => new { Key = t.Key, Total = t.ToList().Sum(p => p.Total) })
|
|
|
|
|
.ToList().ForEach(t =>
|
|
|
|
|
resultInfo.LevelNext.Add(new TaskUserStatItemNext
|
|
|
|
|
{
|
|
|
|
|
TaskStatusEnum currEnum = (TaskStatusEnum)System.Enum.Parse(typeof(TaskStatusEnum), t.Key);
|
|
|
|
|
|
|
|
|
|
resultInfo.LevelNext.Add(new TaskUserStatItemNext
|
|
|
|
|
{
|
|
|
|
|
TopKey = TaskStatLevelEnum.PUBLIC.ToString(),
|
|
|
|
|
Key = currEnum.ToString(),
|
|
|
|
|
Name = currEnum.GetDescription(),
|
|
|
|
|
Total = t.Total,
|
|
|
|
|
SortNo = (int)currEnum,
|
|
|
|
|
ActionKey = $"{TaskStatLevelEnum.PUBLIC.ToString()}#{currEnum.ToString()}"
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
TopKey = TaskStatLevelEnum.PUBLIC.ToString(),
|
|
|
|
|
Key = currEnum.ToString(),
|
|
|
|
|
Name = currEnum.GetDescription(),
|
|
|
|
|
Total = t.Total,
|
|
|
|
|
SortNo = (int)currEnum,
|
|
|
|
|
ActionKey = $"{TaskStatLevelEnum.PUBLIC.ToString()}#{currEnum.ToString()}"
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
publicList.GroupBy(t => new { t.Status, t.TaskType })
|
|
|
|
|
.Select(t => new { Key = t.Key, Total = t.ToList().Sum(p => p.Total) })
|
|
|
|
|
.ToList().ForEach(t =>
|
|
|
|
|
{
|
|
|
|
|
TaskBusiTypeEnum currEnum = (TaskBusiTypeEnum)System.Enum.Parse(typeof(TaskBusiTypeEnum), t.Key.TaskType);
|
|
|
|
|
|
|
|
|
|
resultInfo.LevelTree.Add(new TaskUserStatItemTree
|
|
|
|
|
{
|
|
|
|
|
TopKey = TaskStatLevelEnum.PUBLIC.ToString(),
|
|
|
|
|
NextKey = t.Key.Status,
|
|
|
|
|
Key = currEnum.ToString(),
|
|
|
|
|
Name = currEnum.GetDescription(),
|
|
|
|
|
Total = t.Total,
|
|
|
|
|
SortNo = (int)currEnum,
|
|
|
|
|
ActionKey = $"{TaskStatLevelEnum.PUBLIC.ToString()}#{t.Key.Status}#{currEnum.ToString()}"
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
publicList.GroupBy(t => new { t.Status, t.TaskType })
|
|
|
|
|
.Select(t => new { Key = t.Key, Total = t.ToList().Sum(p => p.Total) })
|
|
|
|
|
.ToList().ForEach(t =>
|
|
|
|
|
{
|
|
|
|
|
TaskBusiTypeEnum currEnum = (TaskBusiTypeEnum)System.Enum.Parse(typeof(TaskBusiTypeEnum), t.Key.TaskType);
|
|
|
|
|
|
|
|
|
|
resultInfo.LevelTree.Add(new TaskUserStatItemTree
|
|
|
|
|
{
|
|
|
|
|
TopKey = TaskStatLevelEnum.PUBLIC.ToString(),
|
|
|
|
|
NextKey = t.Key.Status,
|
|
|
|
|
Key = currEnum.ToString(),
|
|
|
|
|
Name = currEnum.GetDescription(),
|
|
|
|
|
Total = t.Total,
|
|
|
|
|
SortNo = (int)currEnum,
|
|
|
|
|
ActionKey = $"{TaskStatLevelEnum.PUBLIC.ToString()}#{t.Key.Status}#{currEnum.ToString()}"
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|