综合报表
This commit is contained in:
parent
bd778dbefb
commit
3014219621
@ -23,6 +23,7 @@ using APT.MS.Domain.Entities.SC.PT;
|
||||
using APT.MS.Domain.Entities.SC.SC;
|
||||
using APT.MS.Domain.Entities.SE;
|
||||
using APT.MS.Domain.Enums;
|
||||
using APT.MS.Domain.Enums.SK;
|
||||
using APT.Utility;
|
||||
using Castle.Core.Internal;
|
||||
using ICSharpCode.SharpZipLib.Core;
|
||||
@ -337,9 +338,108 @@ namespace APT.SC.WebApi.Controllers.Api.BIController
|
||||
departmentIdPs.AddRange(listDepIDInt);
|
||||
GetDepartmentIds(orgId, listDepIDInt, ref departmentIdPs);
|
||||
}
|
||||
}
|
||||
}
|
||||
[HttpPost, Route("GetFormRunDay")]
|
||||
public JsonActionResult<List<T_BI_FORM_RUN_ANALYSIS>> GetFormRunDay([FromBody] KeywordFilter filter)
|
||||
{
|
||||
return SafeExecute<List<T_BI_FORM_RUN_ANALYSIS>>(() =>
|
||||
{
|
||||
//首页待办增加数量统计字段
|
||||
if (string.IsNullOrEmpty(filter.Parameter1))
|
||||
{
|
||||
throw new Exception("请先选择开始时间");
|
||||
}
|
||||
if (string.IsNullOrEmpty(filter.Parameter2))
|
||||
{
|
||||
throw new Exception("请先选择结束时间");
|
||||
}
|
||||
DateTime startTime = Convert.ToDateTime(filter.Parameter1);
|
||||
DateTime endTime = Convert.ToDateTime(filter.Parameter2);
|
||||
var diffTime = startTime.AddDays(32).Date;
|
||||
if (diffTime < endTime.Date)
|
||||
{
|
||||
throw new Exception("查询时间不能超过32天!");
|
||||
}
|
||||
List<T_BI_FORM_RUN_ANALYSIS> formAnalysis = new List<T_BI_FORM_RUN_ANALYSIS>();
|
||||
var newFilter = new BaseFilter(filter.OrgId);
|
||||
newFilter.IgnoreDataRule = true;
|
||||
newFilter.SelectField = new List<string> { "USER_ID", "NOTICE_STATUS", "TASK_ENDDT" };
|
||||
var tasks = this.GetEntities<T_FM_NOTIFICATION_TASK>(t => !t.IS_DELETED && t.CREATE_TIME >= startTime && t.CREATE_TIME <= endTime && t.NOTICE_TYPE != 2 && (t.NOTICE_STATUS == 0 || t.NOTICE_STATUS == 1 || t.NOTICE_STATUS == 2), newFilter).ToList();
|
||||
var userIds = tasks.Select(t => t.USER_ID).Distinct().ToList();
|
||||
var users = this.GetEntities<T_FM_USER>(t => t.ENABLE_STATUS == 0, new BaseFilter(filter.OrgId));
|
||||
var departments = this.GetEntities<T_FM_DEPARTMENT>(t => t.ENABLE_STATUS == 0, new BaseFilter(filter.OrgId), "Nav_Parent");
|
||||
if (tasks.Any())
|
||||
{
|
||||
foreach (var item in tasks)
|
||||
{
|
||||
var user = users.FirstOrDefault(t => t.ID == item.USER_ID);
|
||||
if (user != null)
|
||||
{
|
||||
item.DEPARTMENT_ID = user.DEPARTMENT_ID;
|
||||
item.DEPARTMENT_NAME = departments.FirstOrDefault(t => t.ID == user.DEPARTMENT_ID)?.NAME;
|
||||
}
|
||||
}
|
||||
var departs = departments.Where(t => t.DEPARTMENT_TYPE == 20).OrderBy(k => k.Nav_Parent?.NUM).ThenBy(m => m.NUM).ToList();
|
||||
if (!string.IsNullOrEmpty(filter.Keyword))
|
||||
{
|
||||
var type = filter.Keyword.ToString();
|
||||
switch (type)
|
||||
{
|
||||
case "0":
|
||||
departs = departments.Where(t => t.DEPARTMENT_TYPE == 10 || t.DEPARTMENT_STATUS == 2).OrderBy(m => m.PARENT_ID).ThenBy(k => k.NUM).ToList();
|
||||
break;
|
||||
case "1":
|
||||
departs = departments.Where(t => t.DEPARTMENT_TYPE == 15).OrderBy(k => k.Nav_Parent?.NUM).ThenBy(k => k.NUM).ToList();
|
||||
break;
|
||||
case "2":
|
||||
departs = departments.Where(t => t.DEPARTMENT_TYPE == 20).OrderBy(k => k.Nav_Parent?.NUM).ThenBy(k => k.NUM).ToList();
|
||||
break;
|
||||
case "3":
|
||||
departs = departments.Where(t => t.DEPARTMENT_TYPE == 5 && t.DEPARTMENT_STATUS != 2).OrderBy(m => m.PARENT_ID).ThenBy(k => k.NUM).ToList();
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (tasks.Any() && departs.Any())
|
||||
{
|
||||
tasks = tasks.Where(t => t.DEPARTMENT_ID != null).ToList();
|
||||
//var temp = tasks.GroupBy(t => t.DEPARTMENT_NAME).ToList();
|
||||
foreach (var item in departs)
|
||||
{
|
||||
var departIds = new List<Guid>();
|
||||
GetDepartmentIds(item.ORG_ID.Value, new List<Guid> { item.ID }, ref departIds);
|
||||
departIds.Add(item.ID);
|
||||
var count = tasks.Where(t => departIds.Contains((Guid)t.DEPARTMENT_ID)).Count();
|
||||
var finish = tasks.Count(t => t.NOTICE_STATUS == 1 && departIds.Contains((Guid)t.DEPARTMENT_ID));
|
||||
var overfinish = tasks.Count(t => t.NOTICE_STATUS == 2 && departIds.Contains((Guid)t.DEPARTMENT_ID));
|
||||
var overUnfinish = tasks.Count(t => t.NOTICE_STATUS == 0 && departIds.Contains((Guid)t.DEPARTMENT_ID) && t.TASK_ENDDT < DateTime.Now);
|
||||
var unfinish = tasks.Count(t => t.NOTICE_STATUS == 0 && departIds.Contains((Guid)t.DEPARTMENT_ID) && t.TASK_ENDDT >= DateTime.Now);
|
||||
count = count - unfinish;
|
||||
//var unfinish = count - finish - overfinish - overUnfinish;
|
||||
var temp1 = count == 0 ? 100 : (double)(finish + overfinish) / count * 100;
|
||||
var finishRate = temp1.ToString("0") + "%";
|
||||
var temp2 = count == 0 ? 100 : (double)finish / count * 100;
|
||||
var normalFinishRate = temp2.ToString("0") + "%";
|
||||
T_BI_FORM_RUN_ANALYSIS analysis = new T_BI_FORM_RUN_ANALYSIS();
|
||||
analysis.MOUDLE_NAME = item.NAME;
|
||||
analysis.ORG_ID = filter.OrgId;
|
||||
analysis.TOTAL_QTY = count;
|
||||
analysis.FINISH_QTY = finish;
|
||||
analysis.OVER_FINISH_QTY = overfinish;
|
||||
analysis.UNFINISH_QTY = unfinish;
|
||||
analysis.OVER_UNFINISH_QTY = overUnfinish;
|
||||
analysis.FINISH_RATE = finishRate;
|
||||
analysis.NORMAL_FINISH_RATE = normalFinishRate;
|
||||
formAnalysis.Add(analysis);
|
||||
}
|
||||
}
|
||||
}
|
||||
return formAnalysis;
|
||||
});
|
||||
}
|
||||
[HttpPost, Route("GetFormRunDayOld")]
|
||||
public JsonActionResult<List<T_BI_FORM_RUN_ANALYSIS>> GetFormRunDayOld([FromBody] KeywordFilter filter)
|
||||
{
|
||||
return SafeExecute<List<T_BI_FORM_RUN_ANALYSIS>>(() =>
|
||||
{
|
||||
@ -10356,7 +10456,7 @@ namespace APT.SC.WebApi.Controllers.Api.BIController
|
||||
}
|
||||
}
|
||||
List<DepartmentInfos> completionSorts1 = completionSorts.Where(t => t.DEPARTMENT_TYPE == 5).ToList();
|
||||
var temps = completionSorts.Where(t => t.DEPARTMENT_TYPE != 3).OrderBy(m => m.DEPARTMENT_TYPE).ToList();
|
||||
var temps = completionSorts.Where(t => t.DEPARTMENT_TYPE != 5).OrderBy(m => m.DEPARTMENT_TYPE).ToList();
|
||||
completionSorts1.AddRange(temps);
|
||||
ret.retData = completionSorts1;
|
||||
List<ApproveUserInfos> approveUsers = new List<ApproveUserInfos>();
|
||||
@ -10373,7 +10473,7 @@ namespace APT.SC.WebApi.Controllers.Api.BIController
|
||||
ApproveUserInfos info = new ApproveUserInfos();
|
||||
info.APPROVE_ROLE_NAME = role.NAME;
|
||||
info.DEPARTMENT_TYPE = role.DEPARTMENT_TYPE;
|
||||
info.DEPARTMENT_NAME = Enum.GetName(typeof(FMDepartmentType), role.DEPARTMENT_TYPE);
|
||||
info.DEPARTMENT_NAME = Enum.GetName(typeof(SKDepartmentTypeEnum), role.DEPARTMENT_TYPE);
|
||||
var users = userInfos.Where(t => t.APPROVE_ROLE_ID == role.ID).ToList();
|
||||
if (users != null && users.Any())
|
||||
{
|
||||
@ -10410,7 +10510,7 @@ namespace APT.SC.WebApi.Controllers.Api.BIController
|
||||
}
|
||||
}
|
||||
List<ApproveUserInfos> approveUsers1 = approveUsers.Where(t => t.DEPARTMENT_TYPE == 5).ToList();
|
||||
var tempApproves = approveUsers.Where(t => t.DEPARTMENT_TYPE != 3).OrderBy(m => m.DEPARTMENT_TYPE).ToList();
|
||||
var tempApproves = approveUsers.Where(t => t.DEPARTMENT_TYPE != 5).OrderBy(m => m.DEPARTMENT_TYPE).ToList();
|
||||
approveUsers1.AddRange(tempApproves);
|
||||
ret.retDataApprove = approveUsers1;
|
||||
return ret;
|
||||
@ -10876,7 +10976,9 @@ namespace APT.SC.WebApi.Controllers.Api.BIController
|
||||
{
|
||||
throw new Exception("请先选择部门或人员姓名");
|
||||
}
|
||||
var newFilter = new BaseFilter(pageFilter.OrgId);
|
||||
var newFilter = new BaseFilter(pageFilter.OrgId);
|
||||
newFilter.SelectField = new List<string> { "ID", "NAME","CODE", "ENABLE_STATUS", "DEPARTMENT_ID" };
|
||||
var users = GetEntities<T_FM_USER>(t => t.ENABLE_STATUS == 0, newFilter).ToList();
|
||||
DateTime startTime = Convert.ToDateTime(pageFilter.Parameter1 + " 00:00:00");
|
||||
DateTime endTime = Convert.ToDateTime(pageFilter.Parameter2 + " 23:59:59");
|
||||
var diffTime = startTime.AddDays(180).Date;
|
||||
@ -10886,11 +10988,11 @@ namespace APT.SC.WebApi.Controllers.Api.BIController
|
||||
}
|
||||
var outPartmentIds = new List<Guid>();
|
||||
Guid? departmentId = null;
|
||||
var result = new List<T_BI_NOTIFICATION_TASK_NEW>();
|
||||
var result = new List<T_FM_NOTIFICATION_TASK>();
|
||||
if (!string.IsNullOrEmpty(pageFilter.Keyword))
|
||||
{
|
||||
newFilter.SelectField = new List<string> { "ID", "DEPARTMENT_ID" };
|
||||
var user = GetEntity<T_FM_USER>(t => (t.NAME == pageFilter.Keyword.Trim() || t.CODE == pageFilter.Keyword.Trim()) && t.ENABLE_STATUS == 0, newFilter);
|
||||
var user = users.FirstOrDefault(t => (t.NAME == pageFilter.Keyword.Trim() || t.CODE == pageFilter.Keyword.Trim()) && t.ENABLE_STATUS == 0);
|
||||
if (user == null)
|
||||
{
|
||||
throw new Exception("该人员或工号不存在或已被禁用,请核对");
|
||||
@ -10900,8 +11002,8 @@ namespace APT.SC.WebApi.Controllers.Api.BIController
|
||||
throw new Exception("该部门与人员不匹配,请核对");
|
||||
}
|
||||
departmentId = user.DEPARTMENT_ID;
|
||||
newFilter.SelectField = new List<string> { "DEPARTMENT_NAME", "USER_NAME", "NOTICE_TITLE", "NOTICE_TYPE", "CREATE_TIME", "TASK_STARTDT", "NOTICE_STATUS", "TASK_ENDDT", "CLASS_DEPARTMENT_ID", "SHOP_DEPARTMENT_ID", "DEPT_DEPARTMENT_ID" };
|
||||
result = GetEntities<T_BI_NOTIFICATION_TASK_NEW>(s => s.USER_ID == user.ID && !s.IS_DELETED && s.NOTICE_TYPE != 2 && s.NOTICE_TYPE != 7 && s.TASK_STARTDT >= startTime && s.TASK_STARTDT <= endTime, newFilter).ToList();//wyw
|
||||
newFilter.SelectField = new List<string> { "USER_ID", "USER_NAME", "NOTICE_TITLE", "NOTICE_TYPE", "CREATE_TIME", "TASK_STARTDT", "NOTICE_STATUS", "TASK_ENDDT"};
|
||||
result = GetEntities<T_FM_NOTIFICATION_TASK>(s => s.USER_ID == user.ID && !s.IS_DELETED && s.NOTICE_TYPE != 2 && s.NOTICE_TYPE != 7 && s.TASK_STARTDT >= startTime && s.TASK_STARTDT <= endTime && (s.NOTICE_STATUS == 0 || s.NOTICE_STATUS == 1 || s.NOTICE_STATUS == 2), newFilter).ToList();//wyw
|
||||
}
|
||||
if (!string.IsNullOrEmpty(pageFilter.Parameter3) && string.IsNullOrEmpty(pageFilter.Keyword))
|
||||
{
|
||||
@ -10909,14 +11011,14 @@ namespace APT.SC.WebApi.Controllers.Api.BIController
|
||||
List<Guid> inputIds = new List<Guid>() { Guid.Parse(pageFilter.Parameter3) };
|
||||
GetDepartmentIds(APT.Infrastructure.Api.AppContext.CurrentSession.OrgId.Value, inputIds, ref outPartmentIds);
|
||||
outPartmentIds.Add(Guid.Parse(pageFilter.Parameter3));
|
||||
newFilter.SelectField = new List<string> { "ID" };
|
||||
var userIds = GetEntities<T_FM_USER>(t => outPartmentIds.Contains((Guid)t.DEPARTMENT_ID) && t.ENABLE_STATUS == 0, newFilter).Select(m => m.ID).ToList();
|
||||
newFilter.SelectField = new List<string> { "DEPARTMENT_NAME", "USER_NAME", "NOTICE_TITLE", "NOTICE_TYPE", "CREATE_TIME", "TASK_STARTDT", "NOTICE_STATUS", "TASK_ENDDT", "CLASS_DEPARTMENT_ID", "SHOP_DEPARTMENT_ID", "DEPT_DEPARTMENT_ID" };
|
||||
result = GetEntities<T_BI_NOTIFICATION_TASK_NEW>(s => !s.IS_DELETED && s.NOTICE_TYPE != 2 && s.NOTICE_TYPE != 7 && s.TASK_STARTDT >= startTime && s.TASK_STARTDT <= endTime && userIds.Contains((Guid)s.USER_ID), newFilter).ToList();//wyw
|
||||
var userIds = users.Where(t => outPartmentIds.Contains((Guid)t.DEPARTMENT_ID) && t.ENABLE_STATUS == 0).Select(m => m.ID).ToList();
|
||||
newFilter.SelectField = new List<string> { "USER_ID", "USER_NAME", "NOTICE_TITLE", "NOTICE_TYPE", "CREATE_TIME", "TASK_STARTDT", "NOTICE_STATUS", "TASK_ENDDT"};
|
||||
result = GetEntities<T_FM_NOTIFICATION_TASK>(s => !s.IS_DELETED && s.NOTICE_TYPE != 2 && s.NOTICE_TYPE != 7 && s.TASK_STARTDT >= startTime && s.TASK_STARTDT <= endTime && userIds.Contains((Guid)s.USER_ID) && (s.NOTICE_STATUS == 0 || s.NOTICE_STATUS == 1 || s.NOTICE_STATUS == 2), newFilter).ToList();//wyw
|
||||
}
|
||||
//var result = GetEntities<T_FM_NOTIFICATION_TASK>(s => s.TASK_STARTDT >= startTime && s.TASK_STARTDT <= endTime && s.USER_ID == user.ID && !s.IS_DELETED && s.NOTICE_TYPE != 2 && s.NOTICE_TYPE != 7, newFilter);
|
||||
if (result.Any())
|
||||
{
|
||||
{
|
||||
|
||||
//var newData = result.ToList();
|
||||
//ret.newData = newData;
|
||||
//ret.unfinishCount = newData.Where(s => s.NOTICE_STATUS == 0).Count();
|
||||
@ -10924,31 +11026,39 @@ namespace APT.SC.WebApi.Controllers.Api.BIController
|
||||
//ret.timeOverCount = newData.Where(s => s.NOTICE_STATUS == 2).Count();
|
||||
//ret.timeOverWaitCount = newData.Where(s => s.NOTICE_STATUS == 0 && s.TASK_ENDDT < DateTime.Now).Count();
|
||||
newFilter.SelectField = new List<string> { "ID", "NAME" };
|
||||
var departments = this.GetEntities<T_FM_DEPARTMENT>(t => outPartmentIds.Contains(t.ID) || departmentId == t.ID, newFilter);
|
||||
var departments = this.GetEntities<T_FM_DEPARTMENT>(t => outPartmentIds.Contains(t.ID) || departmentId == t.ID, newFilter);
|
||||
foreach (var item in result)
|
||||
{
|
||||
var user = users.FirstOrDefault(t => t.ID == item.USER_ID);
|
||||
if (user != null)
|
||||
{
|
||||
item.DEPARTMENT_ID = user.DEPARTMENT_ID;
|
||||
item.DEPARTMENT_NAME = departments.FirstOrDefault(t => t.ID == user.DEPARTMENT_ID)?.NAME;
|
||||
}
|
||||
}
|
||||
//wyw
|
||||
ret.newData = result;
|
||||
ret.unfinishCount = result.Where(s => s.NOTICE_STATUS == 0).Count();
|
||||
ret.doneCount = result.Where(s => s.NOTICE_STATUS == 1 || s.NOTICE_STATUS == 3 || s.NOTICE_STATUS == 9).Count();
|
||||
ret.timeOverCount = result.Where(s => s.NOTICE_STATUS == 2 || s.NOTICE_STATUS == 4).Count();
|
||||
ret.doneCount = result.Where(s => s.NOTICE_STATUS == 1).Count();
|
||||
ret.timeOverCount = result.Where(s => s.NOTICE_STATUS == 2).Count();
|
||||
ret.timeOverWaitCount = result.Where(s => s.NOTICE_STATUS == 0 && s.TASK_ENDDT < DateTime.Now).Count();
|
||||
|
||||
|
||||
ret.TotalCount = ret.doneCount + ret.unfinishCount + ret.timeOverCount;
|
||||
var currentMonth = startTime.Month;
|
||||
var currentDay = startTime.Day;
|
||||
for (DateTime i = startTime; i <= endTime; i = i.AddMonths(1))
|
||||
var currentTime = Convert.ToDateTime(startTime.Year + "-" + startTime.Month + "-01 00:00:00");
|
||||
for (DateTime i = currentTime; i <= endTime; i = i.AddMonths(1))
|
||||
{
|
||||
var monthStart = Convert.ToDateTime(i.Year + "-" + i.Month + "-01 00:00:00");
|
||||
var monthEnd = Convert.ToDateTime(monthStart.AddMonths(1).AddDays(-1).ToString().Replace("0:00:00", "23:59:59"));
|
||||
if (i.Date == startTime.Date)
|
||||
if (i.Date <= startTime.Date)
|
||||
{
|
||||
monthStart = startTime;
|
||||
}
|
||||
if (i.Date == endTime.Date)
|
||||
if (i.Date >= endTime.Date)
|
||||
{
|
||||
monthEnd = endTime;
|
||||
}
|
||||
var ksJantask = result.Where(t => t.TASK_STARTDT >= i && t.TASK_STARTDT <= monthEnd);
|
||||
var ksJantask = result.Where(t => t.TASK_STARTDT >= monthStart && t.TASK_STARTDT <= monthEnd);
|
||||
if (ksJantask.Any())
|
||||
{
|
||||
T_BI_DEPARTMENT_MONTH_RUN run = new T_BI_DEPARTMENT_MONTH_RUN();
|
||||
@ -10984,26 +11094,26 @@ namespace APT.SC.WebApi.Controllers.Api.BIController
|
||||
}
|
||||
ret.groupData = monthRuns.OrderByDescending(t => t.MONTH).ToList();
|
||||
ret.groupDataLine = monthRuns.ToList();
|
||||
var temps = result.Where(s => s.NOTICE_STATUS == 0).OrderBy(t => t.DEPT_DEPARTMENT_ID).ThenBy(m => m.SHOP_DEPARTMENT_ID).ThenBy(x => x.CLASS_DEPARTMENT_ID).ThenBy(y => y.USER_NAME).ToList();
|
||||
foreach (var item in temps)
|
||||
{
|
||||
if (item.CLASS_DEPARTMENT_ID != null)
|
||||
{
|
||||
item.DEPARTMENT_NAME = departments.FirstOrDefault(t => t.ID == item.CLASS_DEPARTMENT_ID)?.NAME;
|
||||
}
|
||||
else if (item.SHOP_DEPARTMENT_ID != null)
|
||||
{
|
||||
item.DEPARTMENT_NAME = departments.FirstOrDefault(t => t.ID == item.SHOP_DEPARTMENT_ID)?.NAME;
|
||||
}
|
||||
else if (item.DEPT_DEPARTMENT_ID != null)
|
||||
{
|
||||
item.DEPARTMENT_NAME = departments.FirstOrDefault(t => t.ID == item.DEPT_DEPARTMENT_ID)?.NAME;
|
||||
}
|
||||
else
|
||||
{
|
||||
item.DEPARTMENT_NAME = departments.FirstOrDefault(t => t.ID == departmentId)?.NAME;
|
||||
}
|
||||
}
|
||||
var temps = result.Where(s => s.NOTICE_STATUS == 0).OrderBy(y => y.USER_NAME).ToList();
|
||||
//foreach (var item in temps)
|
||||
//{
|
||||
// if (item.CLASS_DEPARTMENT_ID != null)
|
||||
// {
|
||||
// item.DEPARTMENT_NAME = departments.FirstOrDefault(t => t.ID == item.CLASS_DEPARTMENT_ID)?.NAME;
|
||||
// }
|
||||
// else if (item.SHOP_DEPARTMENT_ID != null)
|
||||
// {
|
||||
// item.DEPARTMENT_NAME = departments.FirstOrDefault(t => t.ID == item.SHOP_DEPARTMENT_ID)?.NAME;
|
||||
// }
|
||||
// else if (item.DEPT_DEPARTMENT_ID != null)
|
||||
// {
|
||||
// item.DEPARTMENT_NAME = departments.FirstOrDefault(t => t.ID == item.DEPT_DEPARTMENT_ID)?.NAME;
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// item.DEPARTMENT_NAME = departments.FirstOrDefault(t => t.ID == departmentId)?.NAME;
|
||||
// }
|
||||
//}
|
||||
ret.waitData = temps;
|
||||
}
|
||||
return ret;
|
||||
|
||||
Loading…
Reference in New Issue
Block a user