首页工作票

This commit is contained in:
何美荣 2026-06-30 18:00:47 +08:00
parent d44d3c46e2
commit 28971e678f
2 changed files with 67 additions and 22 deletions

View File

@ -960,7 +960,7 @@ namespace APT.PP.WebApi.Controllers.Api.PP
completion.END_TIME = monthEnd; completion.END_TIME = monthEnd;
if (departInfo != null) if (departInfo != null)
{ {
if (departInfo.DEPARTMENT_TYPE == 10) if (departInfo.DEPARTMENT_TYPE == 10|| departInfo.DEPARTMENT_TYPE == 5)
{ {
completion.DEPARTMENT_ID = item.departmetId; completion.DEPARTMENT_ID = item.departmetId;
completion.DEPARTMENT_NAME = departInfo?.NAME; completion.DEPARTMENT_NAME = departInfo?.NAME;

View File

@ -108,7 +108,14 @@ namespace APT.SC.WebApi.Controllers.Api.BIController
public string ISOVER_CREATE { get; set; } public string ISOVER_CREATE { get; set; }
} }
public class GroupbyDepartmentCompletion public class GroupbyDepartmentCompletion
{ {
public Guid? deptId { get; set; }
public string deptName { get; set; }
public int deptTotalCount { get; set; }
public int deptDoneCount { get; set; }
public int deptOntimeCount { get; set; }
public double deptDoneRate { get; set; }
public double deptOverDoneRate { get; set; }
public Guid? shopId { get; set; } public Guid? shopId { get; set; }
public string shopName { get; set; } public string shopName { get; set; }
public int shopTotalCount { get; set; } public int shopTotalCount { get; set; }
@ -10022,24 +10029,40 @@ namespace APT.SC.WebApi.Controllers.Api.BIController
var departmentIds = new List<Guid>(); var departmentIds = new List<Guid>();
List<GroupbyDepartmentId> completionLists = new List<GroupbyDepartmentId>(); List<GroupbyDepartmentId> completionLists = new List<GroupbyDepartmentId>();
var loginDepart = this.GetEntity<T_FM_DEPARTMENT>(t => t.ID == APT.Infrastructure.Api.AppContext.CurrentSession.DepartmentID); //var loginDepart = this.GetEntity<T_FM_DEPARTMENT>(t => t.ID == APT.Infrastructure.Api.AppContext.CurrentSession.DepartmentID);
var completions = GetEntities<T_FM_WORK_TICKET_COMPLETION>(t => !t.IS_DELETED, new BaseFilter(orgId)).ToList();
var deptIds = completions.Where(t => t.DEPARTMENT_ID != null).Select(t => (Guid)t.DEPARTMENT_ID).ToList();
departmentIds.AddRange(deptIds);
var shopIds = completions.Where(t => t.SHOP_DEPARTMENT_ID != null).Select(t => (Guid)t.SHOP_DEPARTMENT_ID).ToList();
departmentIds.AddRange(shopIds);
var classIds = completions.Where(t => t.TEAM_ID != null).Select(t => (Guid)t.TEAM_ID).ToList();
departmentIds.AddRange(classIds);
var departmentInfo = this.GetEntities<T_FM_DEPARTMENT>(t => t.ENABLE_STATUS == 0 && t.CATEGORY == FMCATEGORY.ACTURE, new BaseFilter(orgId)); var departmentInfo = this.GetEntities<T_FM_DEPARTMENT>(t => t.ENABLE_STATUS == 0 && t.CATEGORY == FMCATEGORY.ACTURE, new BaseFilter(orgId));
if (loginDepart != null) if (departmentIds != null && departmentIds.Any())
{ {
departmentInfo = departmentInfo.Where(t => t.PRODUCTION_UNIT_ID == loginDepart.PRODUCTION_UNIT_ID).ToList(); //departmentInfo = departmentInfo.Where(t => t.PRODUCTION_UNIT_ID == loginDepart.PRODUCTION_UNIT_ID).ToList();
departmentInfo = departmentInfo.Where(t => departmentIds.Contains(t.ID)).ToList();
} }
if (departmentInfo == null || !departmentInfo.Any()) if (departmentInfo == null || !departmentInfo.Any())
return completionSorts; return completionSorts;
else else
departmentIds = departmentInfo.Select(t => t.ID).ToList(); departmentIds = departmentInfo.Select(t => t.ID).ToList();
var completions = GetEntities<T_FM_WORK_TICKET_COMPLETION>(t => !t.IS_DELETED, new BaseFilter(orgId)).ToList();
if (departmentIds != null && departmentIds.Any()) if (departmentIds != null && departmentIds.Any())
{ {
foreach (var item in departmentIds) foreach (var item in departmentIds)
{ {
var depart = departmentInfo.FirstOrDefault(m => m.ID == item);
GroupbyDepartmentId de = new GroupbyDepartmentId(); GroupbyDepartmentId de = new GroupbyDepartmentId();
var com = completions.Where(m => m.TEAM_ID != null && m.TEAM_ID == item).ToList(); var com = completions.Where(m => m.TEAM_ID != null && m.TEAM_ID == item).ToList();
var depart = departmentInfo.FirstOrDefault(m => m.ID == item); if (depart.DEPARTMENT_TYPE == 10 || depart.DEPARTMENT_TYPE == 5)
{
com = completions.Where(m => m.DEPARTMENT_ID != null && m.DEPARTMENT_ID == item).ToList();
}
if (depart.DEPARTMENT_TYPE == 15)
{
com = completions.Where(m => m.SHOP_DEPARTMENT_ID != null && m.SHOP_DEPARTMENT_ID == item).ToList();
}
if (com.Count() == 0) if (com.Count() == 0)
{ {
de.departmentId = item; de.departmentId = item;
@ -10219,17 +10242,24 @@ namespace APT.SC.WebApi.Controllers.Api.BIController
List<T_FM_WORK_TICKET_COMPLETION> completionSorts = new List<T_FM_WORK_TICKET_COMPLETION>(); List<T_FM_WORK_TICKET_COMPLETION> completionSorts = new List<T_FM_WORK_TICKET_COMPLETION>();
//if (string.IsNullOrEmpty(filter.Keyword)) //if (string.IsNullOrEmpty(filter.Keyword))
// return ret; // return ret;
var loginDepart = this.GetEntity<T_FM_DEPARTMENT>(t => t.ID == APT.Infrastructure.Api.AppContext.CurrentSession.DepartmentID); var completions = GetEntities<T_FM_WORK_TICKET_COMPLETION>(t => !t.IS_DELETED, new BaseFilter(orgId)).ToList();
var departmentInfo = this.GetEntities<T_FM_DEPARTMENT>(t => t.ENABLE_STATUS == 0 && t.CATEGORY == FMCATEGORY.ACTURE, new BaseFilter(orgId)); var deptIds = completions.Where(t => t.DEPARTMENT_ID != null).Select(t => (Guid)t.DEPARTMENT_ID).ToList();
if (loginDepart != null) departmentIds.AddRange(deptIds);
var shopIds = completions.Where(t => t.SHOP_DEPARTMENT_ID != null).Select(t => (Guid)t.SHOP_DEPARTMENT_ID).ToList();
departmentIds.AddRange(shopIds);
var classIds = completions.Where(t => t.TEAM_ID != null).Select(t => (Guid)t.TEAM_ID).ToList();
departmentIds.AddRange(classIds);
var departmentInfo = this.GetEntities<T_FM_DEPARTMENT>(t => t.ENABLE_STATUS == 0 && t.CATEGORY == FMCATEGORY.ACTURE, new BaseFilter(orgId));
//var loginDepart = departmentInfo.FirstOrDefault(t => t.ID == APT.Infrastructure.Api.AppContext.CurrentSession.DepartmentID);
if (departmentIds != null && departmentIds.Any())
{ {
departmentInfo = departmentInfo.Where(t => t.PRODUCTION_UNIT_ID == loginDepart.PRODUCTION_UNIT_ID).ToList(); departmentInfo = departmentInfo.Where(t => departmentIds.Contains(t.ID)).ToList();
} }
if (departmentInfo == null || !departmentInfo.Any()) if (departmentInfo == null || !departmentInfo.Any())
return ret; return ret;
else else
departmentIds = departmentInfo.Select(t => t.ID).ToList(); departmentIds = departmentInfo.Select(t => t.ID).ToList();
var completions = GetEntities<T_FM_WORK_TICKET_COMPLETION>(t => !t.IS_DELETED && t.TEAM_ID != null && departmentIds.Contains(t.TEAM_ID.Value), new BaseFilter(orgId)).ToList();
if (completions != null && completions.Any()) if (completions != null && completions.Any())
{ {
completionSorts = completions.GroupBy(t => new { t.MONTH, t.MONTHStr }).Select(group => new T_FM_WORK_TICKET_COMPLETION completionSorts = completions.GroupBy(t => new { t.MONTH, t.MONTHStr }).Select(group => new T_FM_WORK_TICKET_COMPLETION
@ -10240,16 +10270,18 @@ namespace APT.SC.WebApi.Controllers.Api.BIController
ONTIME_COUNT = group.Where(i => i.MONTH == group.Key.MONTH).Sum(m => m.ONTIME_COUNT), ONTIME_COUNT = group.Where(i => i.MONTH == group.Key.MONTH).Sum(m => m.ONTIME_COUNT),
TOTAL_COUNT = group.Where(i => i.MONTH == group.Key.MONTH).Sum(m => m.TOTAL_COUNT), TOTAL_COUNT = group.Where(i => i.MONTH == group.Key.MONTH).Sum(m => m.TOTAL_COUNT),
}).ToList(); }).ToList();
completionLists = completions.GroupBy(t => new { t.TEAM_ID, t.TEAM_NAME, t.SHOP_DEPARTMENT_ID, t.SHOP_DEPARTMENT_NAME }).Select(group => new GroupbyDepartmentCompletion completionLists = completions.GroupBy(t => new {t.DEPARTMENT_ID,t.DEPARTMENT_NAME, t.TEAM_ID, t.TEAM_NAME, t.SHOP_DEPARTMENT_ID, t.SHOP_DEPARTMENT_NAME }).Select(group => new GroupbyDepartmentCompletion
{ {
deptId = group.Key.DEPARTMENT_ID,
deptName = group.Key.DEPARTMENT_NAME,
shopId = group.Key.SHOP_DEPARTMENT_ID, shopId = group.Key.SHOP_DEPARTMENT_ID,
shopName = group.Key.SHOP_DEPARTMENT_NAME, shopName = group.Key.SHOP_DEPARTMENT_NAME,
teamId = group.Key.TEAM_ID, teamId = group.Key.TEAM_ID,
teamName = group.Key.TEAM_NAME, teamName = group.Key.TEAM_NAME,
teamDoneCount = group.Where(i => i.TEAM_ID == group.Key.TEAM_ID && i.SHOP_DEPARTMENT_ID == group.Key.SHOP_DEPARTMENT_ID).Sum(m => m.FINISH_COUNT), teamDoneCount = group.Where(i =>i.DEPARTMENT_ID == group.Key.DEPARTMENT_ID && i.TEAM_ID == group.Key.TEAM_ID && i.SHOP_DEPARTMENT_ID == group.Key.SHOP_DEPARTMENT_ID).Sum(m => m.FINISH_COUNT),
teamOntimeCount = group.Where(i => i.TEAM_ID == group.Key.TEAM_ID && i.SHOP_DEPARTMENT_ID == group.Key.SHOP_DEPARTMENT_ID).Sum(m => m.ONTIME_COUNT), teamOntimeCount = group.Where(i => i.DEPARTMENT_ID == group.Key.DEPARTMENT_ID && i.TEAM_ID == group.Key.TEAM_ID && i.SHOP_DEPARTMENT_ID == group.Key.SHOP_DEPARTMENT_ID).Sum(m => m.ONTIME_COUNT),
teamUndoneCount = group.Where(i => i.TEAM_ID == group.Key.TEAM_ID && i.SHOP_DEPARTMENT_ID == group.Key.SHOP_DEPARTMENT_ID).Sum(m => m.WAITTING_COUNT), teamUndoneCount = group.Where(i => i.DEPARTMENT_ID == group.Key.DEPARTMENT_ID && i.TEAM_ID == group.Key.TEAM_ID && i.SHOP_DEPARTMENT_ID == group.Key.SHOP_DEPARTMENT_ID).Sum(m => m.WAITTING_COUNT),
teamTotalCount = group.Where(i => i.TEAM_ID == group.Key.TEAM_ID && i.SHOP_DEPARTMENT_ID == group.Key.SHOP_DEPARTMENT_ID).Sum(m => m.TOTAL_COUNT), teamTotalCount = group.Where(i => i.DEPARTMENT_ID == group.Key.DEPARTMENT_ID && i.TEAM_ID == group.Key.TEAM_ID && i.SHOP_DEPARTMENT_ID == group.Key.SHOP_DEPARTMENT_ID).Sum(m => m.TOTAL_COUNT),
}).ToList(); }).ToList();
} }
if (completionSorts != null && completionSorts.Any()) if (completionSorts != null && completionSorts.Any())
@ -10272,10 +10304,23 @@ namespace APT.SC.WebApi.Controllers.Api.BIController
if (completionLists != null && completionLists.Any()) if (completionLists != null && completionLists.Any())
{ {
foreach (var item in completionLists) foreach (var item in completionLists)
{ {
item.deptDoneCount = completionLists.Where(i => i.deptId == item.deptId).Sum(m => m.teamDoneCount);
item.deptOntimeCount = completionLists.Where(i => i.deptId == item.deptId).Sum(m => m.teamOntimeCount);
item.deptTotalCount = completionLists.Where(i => i.deptId == item.deptId).Sum(m => m.teamTotalCount);
item.shopDoneCount = completionLists.Where(i => i.shopId == item.shopId).Sum(m => m.teamDoneCount); item.shopDoneCount = completionLists.Where(i => i.shopId == item.shopId).Sum(m => m.teamDoneCount);
item.shopOntimeCount = completionLists.Where(i => i.shopId == item.shopId).Sum(m => m.teamOntimeCount); item.shopOntimeCount = completionLists.Where(i => i.shopId == item.shopId).Sum(m => m.teamOntimeCount);
item.shopTotalCount = completionLists.Where(i => i.shopId == item.shopId).Sum(m => m.teamTotalCount); item.shopTotalCount = completionLists.Where(i => i.shopId == item.shopId).Sum(m => m.teamTotalCount);
if (item.deptTotalCount == 0)
{
item.deptDoneRate = 0;
item.deptOverDoneRate = 0;
}
else
{
item.deptDoneRate = Math.Round((double)item.deptDoneCount / (double)item.deptTotalCount * 100, 2);
item.deptOverDoneRate = Math.Round((double)item.deptOntimeCount / (double)item.deptTotalCount * 100, 2);
}
if (item.shopTotalCount == 0) if (item.shopTotalCount == 0)
{ {
item.shopDoneRate = 0; item.shopDoneRate = 0;
@ -10297,7 +10342,7 @@ namespace APT.SC.WebApi.Controllers.Api.BIController
item.teamOverDoneRate = Math.Round((double)item.teamOntimeCount / (double)item.teamTotalCount * 100, 2); item.teamOverDoneRate = Math.Round((double)item.teamOntimeCount / (double)item.teamTotalCount * 100, 2);
} }
} }
ret.retData = completionLists.OrderBy(t => t.shopName).ThenByDescending(m => m.teamOverDoneRate).ToList(); ret.retData = completionLists.OrderBy(t => t.deptName).ThenBy(t => t.shopName).ThenByDescending(m => m.teamOverDoneRate).ToList();
} }
return ret; return ret;
}); });