From 77496f7125898e2ecbba1680000c7956e7d1d884 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BD=95=E7=BE=8E=E8=8D=A3?= <10755671+mei-rong-he@user.noreply.gitee.com> Date: Thu, 9 Jul 2026 13:50:51 +0800 Subject: [PATCH] =?UTF-8?q?=E9=A6=96=E9=A1=B5=E5=9B=BE=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/Api/FMController.cs | 525 +++++++++++------- .../Api/BIController/BIController.cs | 13 +- .../Api/BIController/BIHomeController.cs | 401 +++++++------ .../BIStatiscialAnalysisController.cs | 362 ++++++++---- 4 files changed, 795 insertions(+), 506 deletions(-) diff --git a/APT.MicroApi/APT.PP.WebApi/Controllers/Api/FMController.cs b/APT.MicroApi/APT.PP.WebApi/Controllers/Api/FMController.cs index f639dcc..95567d9 100644 --- a/APT.MicroApi/APT.PP.WebApi/Controllers/Api/FMController.cs +++ b/APT.MicroApi/APT.PP.WebApi/Controllers/Api/FMController.cs @@ -272,7 +272,7 @@ namespace APT.PP.WebApi.Controllers.Api.PP var monthEnd = Convert.ToDateTime(i.AddMonths(i.Month - i.Month + 1).AddDays(1 - i.Day - 1).ToString().Replace("0:00:00", "23:59:59")); var preTemp = preShiftMeetingTemp.Where(t => t.CREATE_TIME >= i && t.CREATE_TIME <= monthEnd).ToList(); var preShiftMeeting = preTemp. - GroupBy(m => new { m.TEAM_ID, TeamName = m.Nav_Team.NAME, m.DEPARTMENT_ID }). + GroupBy(m => new { m.TEAM_ID, TeamName = m.Nav_Team.NAME }). Select(group => new { group.Key, @@ -282,51 +282,77 @@ namespace APT.PP.WebApi.Controllers.Api.PP onTimeCount = group.Where(i => i.PRE_MEETING_STATUS == FOPreMeetingStatusEnum.归档 && i.OVERTIME == FOISOVERTIME.超时).Count(), overTimeCount = group.Where(i => i.PRE_MEETING_STATUS == FOPreMeetingStatusEnum.归档 && i.OVERTIME == FOISOVERTIME.超时).Count() }).ToList(); - foreach (var item in preShiftMeeting) - { - var deparId = teams.FirstOrDefault(t => t.ID == item.Key.TEAM_ID)?.DEPARTMENT_ID; - var departInfo = departments.FirstOrDefault(t => t.ID == deparId); //GetDepartmentId((Guid)item.Key.DEPARTMENT_ID); - T_FM_DEPARTMENT_COMPLETION completion = new T_FM_DEPARTMENT_COMPLETION(); - completion.MONTH = i; - completion.MONTHStr = i.Year + "年" + i.Month + "月"; - completion.TOTAL_COUNT = item.totalCount; - completion.WAITTING_COUNT = item.waitingCount; - completion.FINISH_COUNT = item.finishCount; - completion.ONTIME_COUNT = item.onTimeCount; - completion.OVERTIME_COUNT = item.overTimeCount; - completion.FORM_NAME = "班前会议"; - completion.ORG_ID = filter.GetOrgId(); - completion.START_TIME = i; - completion.END_TIME = monthEnd; - if (departInfo != null) - { - if (departInfo.DEPARTMENT_TYPE == 10) - { - completion.DEPARTMENT_ID = item.Key.TEAM_ID; - completion.DEPARTMENT_NAME = item.Key.TeamName; - } - if (departInfo.DEPARTMENT_TYPE == 15) - { - completion.DEPARTMENT_ID = departInfo?.PARENT_ID; - completion.DEPARTMENT_NAME = departInfo?.Nav_Parent?.NAME; - completion.SHOP_DEPARTMENT_ID = item.Key.TEAM_ID; - completion.SHOP_DEPARTMENT_NAME = item.Key.TeamName; - } - if (departInfo.DEPARTMENT_TYPE == 20) - { - completion.DEPARTMENT_ID = departInfo?.Nav_Parent?.PARENT_ID; - completion.DEPARTMENT_NAME = departInfo?.Nav_Parent?.Nav_Parent?.NAME; - completion.SHOP_DEPARTMENT_ID = departInfo?.PARENT_ID; - completion.SHOP_DEPARTMENT_NAME = departInfo?.Nav_Parent?.NAME; - completion.TEAM_ID = item.Key.TEAM_ID; - completion.TEAM_NAME = item.Key.TeamName; - } + if (preShiftMeeting.Any()) + { + foreach (var item in preShiftMeeting) + { + var deparId = teams.FirstOrDefault(t => t.ID == item.Key.TEAM_ID)?.DEPARTMENT_ID; + var departInfo = departments.FirstOrDefault(t => t.ID == deparId); //GetDepartmentId((Guid)item.Key.DEPARTMENT_ID); + T_FM_DEPARTMENT_COMPLETION completion = new T_FM_DEPARTMENT_COMPLETION(); + completion.MONTH = i; + completion.MONTHStr = i.Year + "年" + i.Month + "月"; + completion.TOTAL_COUNT = item.totalCount; + completion.WAITTING_COUNT = item.waitingCount; + completion.FINISH_COUNT = item.finishCount; + completion.ONTIME_COUNT = item.onTimeCount; + completion.OVERTIME_COUNT = item.overTimeCount; + completion.FORM_NAME = "班前会议"; + completion.ORG_ID = filter.GetOrgId(); + completion.START_TIME = i; + completion.END_TIME = monthEnd; + if (departInfo != null) + { + if (departInfo.DEPARTMENT_TYPE == 10 || departInfo.DEPARTMENT_TYPE == 5) + { + completion.DEPARTMENT_ID = item.Key.TEAM_ID; + completion.DEPARTMENT_NAME = item.Key.TeamName; + completion.SHOP_DEPARTMENT_ID = null; + completion.SHOP_DEPARTMENT_NAME = null; + completion.TEAM_ID = null; + completion.TEAM_NAME = null; + } + if (departInfo.DEPARTMENT_TYPE == 15) + { + completion.DEPARTMENT_ID = departInfo?.PARENT_ID; + completion.DEPARTMENT_NAME = departInfo?.Nav_Parent?.NAME; + completion.SHOP_DEPARTMENT_ID = item.Key.TEAM_ID; + completion.SHOP_DEPARTMENT_NAME = item.Key.TeamName; + completion.TEAM_ID = null; + completion.TEAM_NAME = null; + } + if (departInfo.DEPARTMENT_TYPE == 20) + { + completion.DEPARTMENT_ID = departInfo?.Nav_Parent?.PARENT_ID; + completion.DEPARTMENT_NAME = departInfo?.Nav_Parent?.Nav_Parent?.NAME; + completion.SHOP_DEPARTMENT_ID = departInfo?.PARENT_ID; + completion.SHOP_DEPARTMENT_NAME = departInfo?.Nav_Parent?.NAME; + completion.TEAM_ID = departInfo.ID; + completion.TEAM_NAME = departInfo.NAME; + } + } + completions.Add(completion); } + } + else + { + + T_FM_DEPARTMENT_COMPLETION completion = new T_FM_DEPARTMENT_COMPLETION(); + completion.MONTH = i; + completion.MONTHStr = i.Year + "年" + i.Month + "月"; + completion.TOTAL_COUNT = 0; + completion.WAITTING_COUNT = 0; + completion.FINISH_COUNT = 0; + completion.ONTIME_COUNT = 0; + completion.OVERTIME_COUNT = 0; + completion.FORM_NAME = "班前会议"; + completion.ORG_ID = filter.GetOrgId(); + completion.START_TIME = i; + completion.END_TIME = monthEnd; completions.Add(completion); } var currentTemp = currentShiftTemp.Where(t => t.CREATE_TIME >= i && t.CREATE_TIME <= monthEnd).ToList(); var currentShift = currentTemp. - GroupBy(m => new { m.CLASS_TEAM_ID, TeamName = m.Nav_Team.NAME, m.DEPARTMENT_ID }). + GroupBy(m => new { m.CLASS_TEAM_ID, TeamName = m.Nav_Team.NAME }). Select(group => new { group.Key, @@ -336,57 +362,83 @@ namespace APT.PP.WebApi.Controllers.Api.PP onTimeCount = group.Where(i => (i.SHIFT_STATUS == (int)FOShiftStatusEnum.归档 || i.SHIFT_STATUS == (int)FOShiftStatusEnum.审批归档) && i.OVERTIME == FOISOVERTIME.未超时).Count(), overTimeCount = group.Where(i => (i.SHIFT_STATUS == (int)FOShiftStatusEnum.归档 || i.SHIFT_STATUS == (int)FOShiftStatusEnum.审批归档) && i.OVERTIME == FOISOVERTIME.超时).Count() }).ToList(); - foreach (var item in currentShift) - { - var deparId = teams.FirstOrDefault(t => t.ID == item.Key.CLASS_TEAM_ID)?.DEPARTMENT_ID; - var departInfo = departments.FirstOrDefault(t => t.ID == deparId); //GetDepartmentId((Guid)item.Key.DEPARTMENT_ID); - T_FM_DEPARTMENT_COMPLETION completion = new T_FM_DEPARTMENT_COMPLETION(); - //completion.DEPARTMENT_ID = departInfo?.Nav_Parent?.PARENT_ID; - //completion.DEPARTMENT_NAME = departInfo?.Nav_Parent?.Nav_Parent?.NAME; - //completion.SHOP_DEPARTMENT_ID = departInfo?.PARENT_ID; - //completion.SHOP_DEPARTMENT_NAME = departInfo?.Nav_Parent?.NAME; - completion.MONTH = i; - completion.MONTHStr = i.Year + "年" + i.Month + "月"; - //completion.TEAM_ID = item.Key.CLASS_TEAM_ID; - //completion.TEAM_NAME = item.Key.TeamName; - completion.TOTAL_COUNT = item.totalCount; - completion.WAITTING_COUNT = item.waitingCount; - completion.FINISH_COUNT = item.finishCount; - completion.ONTIME_COUNT = item.onTimeCount; - completion.OVERTIME_COUNT = item.overTimeCount; - completion.FORM_NAME = "岗位当班"; - completion.ORG_ID = filter.GetOrgId(); - completion.START_TIME = i; - completion.END_TIME = monthEnd; - if (departInfo != null) - { - if (departInfo.DEPARTMENT_TYPE == 10) - { - completion.DEPARTMENT_ID = item.Key.CLASS_TEAM_ID; - completion.DEPARTMENT_NAME = item.Key.TeamName; - } - if (departInfo.DEPARTMENT_TYPE == 15) - { - completion.DEPARTMENT_ID = departInfo?.PARENT_ID; - completion.DEPARTMENT_NAME = departInfo?.Nav_Parent?.NAME; - completion.SHOP_DEPARTMENT_ID = item.Key.CLASS_TEAM_ID; - completion.SHOP_DEPARTMENT_NAME = item.Key.TeamName; - } - if (departInfo.DEPARTMENT_TYPE == 20) - { - completion.DEPARTMENT_ID = departInfo?.Nav_Parent?.PARENT_ID; - completion.DEPARTMENT_NAME = departInfo?.Nav_Parent?.Nav_Parent?.NAME; - completion.SHOP_DEPARTMENT_ID = departInfo?.PARENT_ID; - completion.SHOP_DEPARTMENT_NAME = departInfo?.Nav_Parent?.NAME; - completion.TEAM_ID = item.Key.CLASS_TEAM_ID; - completion.TEAM_NAME = item.Key.TeamName; - } + if (currentShift.Any()) + { + foreach (var item in currentShift) + { + var deparId = teams.FirstOrDefault(t => t.ID == item.Key.CLASS_TEAM_ID)?.DEPARTMENT_ID; + var departInfo = departments.FirstOrDefault(t => t.ID == deparId); //GetDepartmentId((Guid)item.Key.DEPARTMENT_ID); + T_FM_DEPARTMENT_COMPLETION completion = new T_FM_DEPARTMENT_COMPLETION(); + //completion.DEPARTMENT_ID = departInfo?.Nav_Parent?.PARENT_ID; + //completion.DEPARTMENT_NAME = departInfo?.Nav_Parent?.Nav_Parent?.NAME; + //completion.SHOP_DEPARTMENT_ID = departInfo?.PARENT_ID; + //completion.SHOP_DEPARTMENT_NAME = departInfo?.Nav_Parent?.NAME; + completion.MONTH = i; + completion.MONTHStr = i.Year + "年" + i.Month + "月"; + //completion.TEAM_ID = item.Key.CLASS_TEAM_ID; + //completion.TEAM_NAME = item.Key.TeamName; + completion.TOTAL_COUNT = item.totalCount; + completion.WAITTING_COUNT = item.waitingCount; + completion.FINISH_COUNT = item.finishCount; + completion.ONTIME_COUNT = item.onTimeCount; + completion.OVERTIME_COUNT = item.overTimeCount; + completion.FORM_NAME = "岗位当班"; + completion.ORG_ID = filter.GetOrgId(); + completion.START_TIME = i; + completion.END_TIME = monthEnd; + if (departInfo != null) + { + if (departInfo.DEPARTMENT_TYPE == 10 || departInfo.DEPARTMENT_TYPE == 5) + { + completion.DEPARTMENT_ID = item.Key.CLASS_TEAM_ID; + completion.DEPARTMENT_NAME = item.Key.TeamName; + completion.SHOP_DEPARTMENT_ID = null; + completion.SHOP_DEPARTMENT_NAME = null; + completion.TEAM_ID = null; + completion.TEAM_NAME = null; + } + if (departInfo.DEPARTMENT_TYPE == 15) + { + completion.DEPARTMENT_ID = departInfo?.PARENT_ID; + completion.DEPARTMENT_NAME = departInfo?.Nav_Parent?.NAME; + completion.SHOP_DEPARTMENT_ID = item.Key.CLASS_TEAM_ID; + completion.SHOP_DEPARTMENT_NAME = item.Key.TeamName; + completion.TEAM_ID = null; + completion.TEAM_NAME = null; + } + if (departInfo.DEPARTMENT_TYPE == 20) + { + completion.DEPARTMENT_ID = departInfo?.Nav_Parent?.PARENT_ID; + completion.DEPARTMENT_NAME = departInfo?.Nav_Parent?.Nav_Parent?.NAME; + completion.SHOP_DEPARTMENT_ID = departInfo?.PARENT_ID; + completion.SHOP_DEPARTMENT_NAME = departInfo?.Nav_Parent?.NAME; + completion.TEAM_ID = departInfo.ID; + completion.TEAM_NAME = departInfo.NAME; + } + } + completions.Add(completion); } + } + else + { + + T_FM_DEPARTMENT_COMPLETION completion = new T_FM_DEPARTMENT_COMPLETION(); + completion.MONTH = i; + completion.MONTHStr = i.Year + "年" + i.Month + "月"; + completion.TOTAL_COUNT = 0; + completion.WAITTING_COUNT = 0; + completion.FINISH_COUNT = 0; + completion.ONTIME_COUNT = 0; + completion.OVERTIME_COUNT = 0; + completion.FORM_NAME = "岗位当班"; + completion.ORG_ID = filter.GetOrgId(); + completion.START_TIME = i; + completion.END_TIME = monthEnd; completions.Add(completion); } var changeTemp = changeShiftTemp.Where(t => t.CREATE_TIME >= i && t.CREATE_TIME <= monthEnd).ToList(); var changeShift = changeTemp. - GroupBy(m => new { m.TEAM_ID, TeamName = m.Nav_Team.NAME, m.DEPARTMENT_ID }). + GroupBy(m => new { m.TEAM_ID, TeamName = m.Nav_Team.NAME }). Select(group => new { group.Key, @@ -396,57 +448,84 @@ namespace APT.PP.WebApi.Controllers.Api.PP onTimeCount = group.Where(i => i.SHIFT_STATUS == (int)FOChangeShiftStatusEnum.归档 && i.OVERTIME == FOISOVERTIME.未超时).Count(), overTimeCount = group.Where(i => i.SHIFT_STATUS == (int)FOChangeShiftStatusEnum.归档 && i.OVERTIME == FOISOVERTIME.超时).Count() }).ToList(); - foreach (var item in changeShift) - { - var deparId = teams.FirstOrDefault(t => t.ID == item.Key.TEAM_ID)?.DEPARTMENT_ID; - var departInfo = departments.FirstOrDefault(t => t.ID == deparId); //GetDepartmentId((Guid)item.Key.DEPARTMENT_ID); - T_FM_DEPARTMENT_COMPLETION completion = new T_FM_DEPARTMENT_COMPLETION(); - //completion.DEPARTMENT_ID = departInfo?.Nav_Parent?.PARENT_ID; - //completion.DEPARTMENT_NAME = departInfo?.Nav_Parent?.Nav_Parent?.NAME; - //completion.SHOP_DEPARTMENT_ID = departInfo?.PARENT_ID; - //completion.SHOP_DEPARTMENT_NAME = departInfo?.Nav_Parent?.NAME; - completion.MONTH = i; - completion.MONTHStr = i.Year + "年" + i.Month + "月"; - //completion.TEAM_ID = item.Key.TEAM_ID; - //completion.TEAM_NAME = item.Key.TeamName; - completion.TOTAL_COUNT = item.totalCount; - completion.WAITTING_COUNT = item.waitingCount; - completion.FINISH_COUNT = item.finishCount; - completion.ONTIME_COUNT = item.onTimeCount; - completion.OVERTIME_COUNT = item.overTimeCount; - completion.FORM_NAME = "岗位交接班"; - completion.ORG_ID = filter.GetOrgId(); - completion.START_TIME = i; - completion.END_TIME = monthEnd; - if (departInfo != null) - { - if (departInfo.DEPARTMENT_TYPE == 10) - { - completion.DEPARTMENT_ID = item.Key.TEAM_ID; - completion.DEPARTMENT_NAME = item.Key.TeamName; - } - if (departInfo.DEPARTMENT_TYPE == 15) - { - completion.DEPARTMENT_ID = departInfo?.PARENT_ID; - completion.DEPARTMENT_NAME = departInfo?.Nav_Parent?.NAME; - completion.SHOP_DEPARTMENT_ID = item.Key.TEAM_ID; - completion.SHOP_DEPARTMENT_NAME = item.Key.TeamName; - } - if (departInfo.DEPARTMENT_TYPE == 20) - { - completion.DEPARTMENT_ID = departInfo?.Nav_Parent?.PARENT_ID; - completion.DEPARTMENT_NAME = departInfo?.Nav_Parent?.Nav_Parent?.NAME; - completion.SHOP_DEPARTMENT_ID = departInfo?.PARENT_ID; - completion.SHOP_DEPARTMENT_NAME = departInfo?.Nav_Parent?.NAME; - completion.TEAM_ID = item.Key.TEAM_ID; - completion.TEAM_NAME = item.Key.TeamName; - } - } + if (changeShift.Any()) + { + foreach (var item in changeShift) + { + var deparId = teams.FirstOrDefault(t => t.ID == item.Key.TEAM_ID)?.DEPARTMENT_ID; + var departInfo = departments.FirstOrDefault(t => t.ID == deparId); //GetDepartmentId((Guid)item.Key.DEPARTMENT_ID); + T_FM_DEPARTMENT_COMPLETION completion = new T_FM_DEPARTMENT_COMPLETION(); + //completion.DEPARTMENT_ID = departInfo?.Nav_Parent?.PARENT_ID; + //completion.DEPARTMENT_NAME = departInfo?.Nav_Parent?.Nav_Parent?.NAME; + //completion.SHOP_DEPARTMENT_ID = departInfo?.PARENT_ID; + //completion.SHOP_DEPARTMENT_NAME = departInfo?.Nav_Parent?.NAME; + completion.MONTH = i; + completion.MONTHStr = i.Year + "年" + i.Month + "月"; + //completion.TEAM_ID = item.Key.TEAM_ID; + //completion.TEAM_NAME = item.Key.TeamName; + completion.TOTAL_COUNT = item.totalCount; + completion.WAITTING_COUNT = item.waitingCount; + completion.FINISH_COUNT = item.finishCount; + completion.ONTIME_COUNT = item.onTimeCount; + completion.OVERTIME_COUNT = item.overTimeCount; + completion.FORM_NAME = "岗位交接班"; + completion.ORG_ID = filter.GetOrgId(); + completion.START_TIME = i; + completion.END_TIME = monthEnd; + if (departInfo != null) + { + if (departInfo.DEPARTMENT_TYPE == 10 || departInfo.DEPARTMENT_TYPE == 5) + { + completion.DEPARTMENT_ID = item.Key.TEAM_ID; + completion.DEPARTMENT_NAME = item.Key.TeamName; + completion.SHOP_DEPARTMENT_ID = null; + completion.SHOP_DEPARTMENT_NAME = null; + completion.TEAM_ID = null; + completion.TEAM_NAME = null; + } + if (departInfo.DEPARTMENT_TYPE == 15) + { + completion.DEPARTMENT_ID = departInfo?.PARENT_ID; + completion.DEPARTMENT_NAME = departInfo?.Nav_Parent?.NAME; + completion.SHOP_DEPARTMENT_ID = item.Key.TEAM_ID; + completion.SHOP_DEPARTMENT_NAME = item.Key.TeamName; + completion.TEAM_ID = null; + completion.TEAM_NAME = null; + } + if (departInfo.DEPARTMENT_TYPE == 20) + { + completion.DEPARTMENT_ID = departInfo?.Nav_Parent?.PARENT_ID; + completion.DEPARTMENT_NAME = departInfo?.Nav_Parent?.Nav_Parent?.NAME; + completion.SHOP_DEPARTMENT_ID = departInfo?.PARENT_ID; + completion.SHOP_DEPARTMENT_NAME = departInfo?.Nav_Parent?.NAME; + completion.TEAM_ID = departInfo.ID; + completion.TEAM_NAME = departInfo.NAME; + } + } + completions.Add(completion); + } + } + else + { + + T_FM_DEPARTMENT_COMPLETION completion = new T_FM_DEPARTMENT_COMPLETION(); + completion.MONTH = i; + completion.MONTHStr = i.Year + "年" + i.Month + "月"; + completion.TOTAL_COUNT = 0; + completion.WAITTING_COUNT = 0; + completion.FINISH_COUNT = 0; + completion.ONTIME_COUNT = 0; + completion.OVERTIME_COUNT = 0; + completion.FORM_NAME = "岗位交接班"; + completion.ORG_ID = filter.GetOrgId(); + completion.START_TIME = i; + completion.END_TIME = monthEnd; completions.Add(completion); } + var teamTemp = teamActivityTemp.Where(t => t.CREATE_TIME >= i && t.CREATE_TIME <= monthEnd).ToList(); var teamActivity = teamTemp. - GroupBy(m => new { m.TEAM_ID, TeamName = m.Nav_Taem.NAME, m.Nav_Taem.DEPARTMENT_ID }). + GroupBy(m => new { m.TEAM_ID, TeamName = m.Nav_Taem.NAME }). Select(group => new { group.Key, @@ -456,28 +535,77 @@ namespace APT.PP.WebApi.Controllers.Api.PP onTimeCount = group.Where(i => i.TA_STATUS == (int)FOTeamActivityState.已归档 && i.OVERTIME == FOISOVERTIME.未超时).Count(), overTimeCount = group.Where(i => i.TA_STATUS == (int)FOTeamActivityState.已归档 && i.OVERTIME == FOISOVERTIME.超时).Count() }).ToList(); - foreach (var item in teamActivity) - { - var deparId = teams.FirstOrDefault(t => t.ID == item.Key.TEAM_ID)?.DEPARTMENT_ID; - var departInfo = departments.FirstOrDefault(t => t.ID == deparId); //GetDepartmentId((Guid)item.Key.DEPARTMENT_ID); - T_FM_DEPARTMENT_COMPLETION completion = new T_FM_DEPARTMENT_COMPLETION(); - completion.DEPARTMENT_ID = departInfo?.Nav_Parent?.PARENT_ID; - completion.DEPARTMENT_NAME = departInfo?.Nav_Parent?.Nav_Parent?.NAME; - completion.SHOP_DEPARTMENT_ID = departInfo?.PARENT_ID; - completion.SHOP_DEPARTMENT_NAME = departInfo?.Nav_Parent?.NAME; - completion.MONTH = i; - completion.MONTHStr = i.Year + "年" + i.Month + "月"; - completion.TEAM_ID = item.Key.TEAM_ID; - completion.TEAM_NAME = item.Key.TeamName; - completion.TOTAL_COUNT = item.totalCount; - completion.WAITTING_COUNT = item.waitingCount; - completion.FINISH_COUNT = item.finishCount; - completion.ONTIME_COUNT = item.onTimeCount; - completion.OVERTIME_COUNT = item.overTimeCount; - completion.FORM_NAME = "班组安全活动记录"; - completion.ORG_ID = filter.GetOrgId(); - completion.START_TIME = i; - completion.END_TIME = monthEnd; + if (teamActivity.Any()) + { + foreach (var item in teamActivity) + { + var deparId = teams.FirstOrDefault(t => t.ID == item.Key.TEAM_ID)?.DEPARTMENT_ID; + var departInfo = departments.FirstOrDefault(t => t.ID == deparId); //GetDepartmentId((Guid)item.Key.DEPARTMENT_ID); + T_FM_DEPARTMENT_COMPLETION completion = new T_FM_DEPARTMENT_COMPLETION(); + //completion.DEPARTMENT_ID = departInfo?.Nav_Parent?.PARENT_ID; + //completion.DEPARTMENT_NAME = departInfo?.Nav_Parent?.Nav_Parent?.NAME; + //completion.SHOP_DEPARTMENT_ID = departInfo?.PARENT_ID; + //completion.SHOP_DEPARTMENT_NAME = departInfo?.Nav_Parent?.NAME; + completion.MONTH = i; + completion.MONTHStr = i.Year + "年" + i.Month + "月"; + //completion.TEAM_ID = item.Key.TEAM_ID; + //completion.TEAM_NAME = item.Key.TeamName; + completion.TOTAL_COUNT = item.totalCount; + completion.WAITTING_COUNT = item.waitingCount; + completion.FINISH_COUNT = item.finishCount; + completion.ONTIME_COUNT = item.onTimeCount; + completion.OVERTIME_COUNT = item.overTimeCount; + completion.FORM_NAME = "班组安全活动记录"; + completion.ORG_ID = filter.GetOrgId(); + completion.START_TIME = i; + completion.END_TIME = monthEnd; + if (departInfo != null) + { + if (departInfo.DEPARTMENT_TYPE == 10 || departInfo.DEPARTMENT_TYPE == 5) + { + completion.DEPARTMENT_ID = item.Key.TEAM_ID; + completion.DEPARTMENT_NAME = item.Key.TeamName; + completion.SHOP_DEPARTMENT_ID = null; + completion.SHOP_DEPARTMENT_NAME = null; + completion.TEAM_ID = null; + completion.TEAM_NAME = null; + } + if (departInfo.DEPARTMENT_TYPE == 15) + { + completion.DEPARTMENT_ID = departInfo?.PARENT_ID; + completion.DEPARTMENT_NAME = departInfo?.Nav_Parent?.NAME; + completion.SHOP_DEPARTMENT_ID = item.Key.TEAM_ID; + completion.SHOP_DEPARTMENT_NAME = item.Key.TeamName; + completion.TEAM_ID = null; + completion.TEAM_NAME = null; + } + if (departInfo.DEPARTMENT_TYPE == 20) + { + completion.DEPARTMENT_ID = departInfo?.Nav_Parent?.PARENT_ID; + completion.DEPARTMENT_NAME = departInfo?.Nav_Parent?.Nav_Parent?.NAME; + completion.SHOP_DEPARTMENT_ID = departInfo?.PARENT_ID; + completion.SHOP_DEPARTMENT_NAME = departInfo?.Nav_Parent?.NAME; + completion.TEAM_ID = departInfo.ID; + completion.TEAM_NAME = departInfo.NAME; + } + } + completions.Add(completion); + } + } + else { + + T_FM_DEPARTMENT_COMPLETION completion = new T_FM_DEPARTMENT_COMPLETION(); + completion.MONTH = i; + completion.MONTHStr = i.Year + "年" + i.Month + "月"; + completion.TOTAL_COUNT = 0; + completion.WAITTING_COUNT = 0; + completion.FINISH_COUNT = 0; + completion.ONTIME_COUNT = 0; + completion.OVERTIME_COUNT = 0; + completion.FORM_NAME = "班组安全活动记录"; + completion.ORG_ID = filter.GetOrgId(); + completion.START_TIME = i; + completion.END_TIME = monthEnd; completions.Add(completion); } } @@ -888,6 +1016,7 @@ namespace APT.PP.WebApi.Controllers.Api.PP List completions = new List(); BaseFilter baseFilter = new BaseFilter(filter.GetOrgId()); + baseFilter.IgnoreDataRule = true; var startTime = Convert.ToDateTime(DateTime.Now.AddMonths(-11).Year + "-" + DateTime.Now.AddMonths(-11).Month + "-01 00:00:00"); var endTime = Convert.ToDateTime(DateTime.Now.Year + "-" + DateTime.Now.Month + "-" + DateTime.Now.Day + " 23:59:59"); baseFilter.SelectField = new string[] { "ID", "NAME", "DEPARTMENT_TYPE", "Nav_Parent.NAME", "Nav_Parent.Nav_Parent", "PARENT_ID" }; @@ -948,44 +1077,62 @@ namespace APT.PP.WebApi.Controllers.Api.PP onTimeCount = group.Where(i => i.IS_OVERTIME == 0 && i.IS_PUBLISH == 5).Count(), overFinishCount = group.Where(i => i.IS_OVERTIME == 1 && i.IS_PUBLISH == 5).Count() }).ToList(); - foreach (var item in results) - { + if (results.Any()) + { + foreach (var item in results) + { + T_FM_WORK_TICKET_COMPLETION completion = new T_FM_WORK_TICKET_COMPLETION(); + completion.MONTH = i; + completion.MONTHStr = i.Year + "年" + i.Month + "月"; + completion.TOTAL_COUNT = item.totalCount; + completion.FINISH_COUNT = item.finishCount; + completion.OVER_FINISH_COUNT = item.overFinishCount; + completion.WAITTING_COUNT = item.waitingCount; + completion.ONTIME_COUNT = item.onTimeCount; + completion.ORG_ID = filter.GetOrgId(); + completion.START_TIME = i; + completion.END_TIME = monthEnd; + var departInfo = departments.FirstOrDefault(t => t.ID == item.departmetId); + if (departInfo != null) + { + if (departInfo.DEPARTMENT_TYPE == 10 || departInfo.DEPARTMENT_TYPE == 5) + { + completion.DEPARTMENT_ID = item.departmetId; + completion.DEPARTMENT_NAME = departInfo?.NAME; + } + if (departInfo.DEPARTMENT_TYPE == 15) + { + completion.DEPARTMENT_ID = departInfo?.PARENT_ID; + completion.DEPARTMENT_NAME = departInfo?.Nav_Parent?.NAME; + completion.SHOP_DEPARTMENT_ID = item.departmetId; + completion.SHOP_DEPARTMENT_NAME = departInfo?.NAME; + } + if (departInfo.DEPARTMENT_TYPE == 20) + { + completion.DEPARTMENT_ID = departInfo?.Nav_Parent?.PARENT_ID; + completion.DEPARTMENT_NAME = departInfo?.Nav_Parent?.Nav_Parent?.NAME; + completion.SHOP_DEPARTMENT_ID = departInfo?.PARENT_ID; + completion.SHOP_DEPARTMENT_NAME = departInfo?.Nav_Parent?.NAME; + completion.TEAM_ID = item.departmetId; + completion.TEAM_NAME = departInfo?.NAME; + } + } + completions.Add(completion); + } + } + else + { T_FM_WORK_TICKET_COMPLETION completion = new T_FM_WORK_TICKET_COMPLETION(); completion.MONTH = i; completion.MONTHStr = i.Year + "年" + i.Month + "月"; - completion.TOTAL_COUNT = item.totalCount; - completion.FINISH_COUNT = item.finishCount; - completion.OVER_FINISH_COUNT = item.overFinishCount; - completion.WAITTING_COUNT = item.waitingCount; - completion.ONTIME_COUNT = item.onTimeCount; + completion.TOTAL_COUNT = 0; + completion.FINISH_COUNT = 0; + completion.OVER_FINISH_COUNT = 0; + completion.WAITTING_COUNT =0; + completion.ONTIME_COUNT = 0; completion.ORG_ID = filter.GetOrgId(); completion.START_TIME = i; - completion.END_TIME = monthEnd; - var departInfo = departments.FirstOrDefault(t => t.ID == item.departmetId); - if (departInfo != null) - { - if (departInfo.DEPARTMENT_TYPE == 10|| departInfo.DEPARTMENT_TYPE == 5) - { - completion.DEPARTMENT_ID = item.departmetId; - completion.DEPARTMENT_NAME = departInfo?.NAME; - } - if (departInfo.DEPARTMENT_TYPE == 15) - { - completion.DEPARTMENT_ID = departInfo?.PARENT_ID; - completion.DEPARTMENT_NAME = departInfo?.Nav_Parent?.NAME; - completion.SHOP_DEPARTMENT_ID = item.departmetId; - completion.SHOP_DEPARTMENT_NAME = departInfo?.NAME; - } - if (departInfo.DEPARTMENT_TYPE == 20) - { - completion.DEPARTMENT_ID = departInfo?.Nav_Parent?.PARENT_ID; - completion.DEPARTMENT_NAME = departInfo?.Nav_Parent?.Nav_Parent?.NAME; - completion.SHOP_DEPARTMENT_ID = departInfo?.PARENT_ID; - completion.SHOP_DEPARTMENT_NAME = departInfo?.Nav_Parent?.NAME; - completion.TEAM_ID = item.departmetId; - completion.TEAM_NAME = departInfo?.NAME; - } - } + completion.END_TIME = monthEnd; completions.Add(completion); } } diff --git a/APT.MicroApi/APT.SC.WebApi/Controllers/Api/BIController/BIController.cs b/APT.MicroApi/APT.SC.WebApi/Controllers/Api/BIController/BIController.cs index 4db80ac..2cfba0f 100644 --- a/APT.MicroApi/APT.SC.WebApi/Controllers/Api/BIController/BIController.cs +++ b/APT.MicroApi/APT.SC.WebApi/Controllers/Api/BIController/BIController.cs @@ -759,13 +759,22 @@ namespace APT.SC.WebApi.Controllers.Api.BI riskFilter.SelectField = new string[] { "EVALUATE_LEVEL", "CREATE_TIME", "PRODUCTION_UNIT_ID", "TYPE_ID", "AREA_ID", "ID" }; IEnumerable allrisk = null; allrisk = GetEntities(t => t.ENABLE_STATUS == 0 && t.PRODUCTION_UNIT_ID != null, riskFilter); + var libTempIds = allrisk.Select(t => t.ID); + var details = GetEntities(t => libTempIds.Contains(t.ENTERPRISE_LIBRARY_ID), new BaseFilter(filter.GetOrgId())); + //var departs = GetEntities(t => libIds.Contains(t.ENTERPRISE_LIBRARY_ID), new BaseFilter(filter.GetOrgId())); + //var depIds = departs.Select(t=>t.DEPARTMENT_ID).Distinct(); + var libDetailIds = allrisk.Select(t => t.ID); + var detailContents = GetEntities(t => libDetailIds.Contains(t.ENTERPRISE_LIBRARY_DETAIL_ID), new BaseFilter(filter.GetOrgId())); + var libDetailContentIds = detailContents.Select(t => t.ID); + var detailContentChecks = GetEntities(t => libDetailContentIds.Contains(t.ENTERPRISE_LIBRARY_DETAIL_CONTENT_ID), new BaseFilter(filter.GetOrgId())); + var checkIds = detailContentChecks.Select(t => t.CHECK_TYPE_ID).Distinct(); var hazardFilter = new BaseFilter(filter.GetOrgId()); riskPerformanceData riskPerformanceData = new riskPerformanceData(); List item3s = new List(); - var distinctType = GetEntities(t => t.IS_DELETED == false, new BaseFilter(filter.GetOrgId())); + var distinctType = GetEntities(t => checkIds.Contains(t.ID), new BaseFilter(filter.GetOrgId())); var departments = GetEntities(t => t.ENABLE_STATUS == 0, new BaseFilter(filter.GetOrgId())); var distinctArea = GetEntities(t => t.IS_DELETED == false, new BaseFilter(filter.GetOrgId())); - var distinctTeamDepartment = GetEntities(t => t.DEPARTMENT_TYPE == 20, new BaseFilter(filter.GetOrgId())); + var distinctTeamDepartment = departments.Where(t => t.DEPARTMENT_TYPE == 20); #region 1 PerformanceModel CHARTFXDJ1 = new PerformanceModel(); CHARTFXDJ1.NAME = new List { "重大风险", "较大风险", "一般风险", "低风险" }; diff --git a/APT.MicroApi/APT.SC.WebApi/Controllers/Api/BIController/BIHomeController.cs b/APT.MicroApi/APT.SC.WebApi/Controllers/Api/BIController/BIHomeController.cs index 1203d56..4f3295e 100644 --- a/APT.MicroApi/APT.SC.WebApi/Controllers/Api/BIController/BIHomeController.cs +++ b/APT.MicroApi/APT.SC.WebApi/Controllers/Api/BIController/BIHomeController.cs @@ -9,11 +9,14 @@ using APT.MS.Domain.Entities.BI; using APT.MS.Domain.Entities.HM; using APT.MS.Domain.Entities.SC.BI; using APT.MS.Domain.Entities.SK; +using APT.MS.Domain.Enums; using APT.MS.Domain.Enums.SK; using APT.SC.WebApi.Controllers.Api.BIController; using APT.Utility; using log4net.Core; using Microsoft.AspNetCore.Mvc; +using NPOI.POIFS.Properties; +using NPOI.SS.Formula.Functions; using Org.BouncyCastle.Utilities; using System; using System.Collections.Generic; @@ -1514,7 +1517,8 @@ namespace APT.SC.WebApi.Controllers.Api.BI // } // } //} - var checkIds = hiddens.Select(t => t.CHECK_TYPE_ID).Distinct().ToList(); + var checkNotices = GetEntities(e => e.APPLY_DEPARTMENT_ID.HasValue && e.CREATE_TIME.HasValue && e.CREATE_TIME.Value.Year == dtNow.Year && e.Nav_CheckType!=null && !e.Nav_CheckType.NAME.Contains("岗位排查"), newFilter); + var checkIds = checkNotices.Select(t => t.CHECK_TYPE_ID).Distinct().ToList(); //var loginDepart = this.GetEntity(t => t.ID == APT.Infrastructure.Api.AppContext.CurrentSession.DepartmentID); var listCheckType = GetEntities(e => checkIds.Contains(e.ID), null, "Nav_ProductionUnit").ToList(); //if (loginDepart != null) @@ -1562,7 +1566,7 @@ namespace APT.SC.WebApi.Controllers.Api.BI { monthEnd = dtNow; } - var listPerChearch = hiddens.Where(t => t.CREATE_TIME >= monthStart && t.CREATE_TIME <= monthEnd); + var listPerChearch = checkNotices.Where(t => t.CREATE_TIME >= monthStart && t.CREATE_TIME <= monthEnd); HomeSafeCheckCountMonth modelper = new HomeSafeCheckCountMonth(); modelper.Total = listPerChearch.Count(); modelper.listSOURCENAME = listCheckTypeNAME; @@ -2160,7 +2164,6 @@ namespace APT.SC.WebApi.Controllers.Api.BI //BSCorrectType List enums = DataHelper.GetEnum("BSCorrectType"); - List listName = new List(); List listVal = new List(); foreach (var item in enums) @@ -2342,15 +2345,15 @@ namespace APT.SC.WebApi.Controllers.Api.BI var newFilter = new BaseFilter(orgId); newFilter.IgnoreDataRule = true; var startTime = dtNow.AddMonths(-11); - var hiddens = GetEntities(e => e.APPLY_DEPARTMENT_ID.HasValue && e.CREATE_TIME.HasValue && e.CREATE_TIME >= startTime, newFilter); - - + var checkNotices = GetEntities(e => e.APPLY_DEPARTMENT_ID.HasValue && e.CREATE_TIME.HasValue && e.CREATE_TIME >= startTime && e.Nav_CheckType!=null && !e.Nav_CheckType.NAME.Contains("岗位排查"), newFilter); + var noticeIds = checkNotices.Select(t => t.ID).ToList(); + var checkRecords = GetEntities(e => e.SECURITY_INSPECTION_NOTICE_ID.HasValue && noticeIds.Contains((Guid)e.SECURITY_INSPECTION_NOTICE_ID), newFilter); var currentTime = Convert.ToDateTime(startTime.Year + "-" + startTime.Month + "-01 00:00:00"); List ListSafeCheckYearMonth = new List(); //int befoMonth = 11;//计算 12 个月 就是提前 11个月 //List ListSafeCheckYearMonthT = BIHomeService.GetHomeCheckCountMonth(filter.OrgId, listDep1MineType.ToList(), befoMonth).ToList(); - var listCheckTypeIDT = hiddens.Select(e => e.CHECK_TYPE_ID).Distinct().ToList(); + var listCheckTypeIDT = checkNotices.Select(e => e.CHECK_TYPE_ID).Distinct().ToList(); //if (enums == null) //{ // enums = GetEntity(e => e.VALUE == MineType && e.CODE == "BSMineTypeEnum"); @@ -2421,7 +2424,7 @@ namespace APT.SC.WebApi.Controllers.Api.BI { monthEnd = dtNow; } - var listPerChearch = hiddens.Where(t => t.CREATE_TIME >= monthStart && t.CREATE_TIME <= monthEnd); + var listPerChearch = checkNotices.Where(t => t.CREATE_TIME >= monthStart && t.CREATE_TIME <= monthEnd); HomeSafeCheckCountMonth modelper = new HomeSafeCheckCountMonth(); modelper.Total = listPerChearch.Count(); modelper.listSOURCENAME = listCheckTypeNAME; @@ -2461,122 +2464,65 @@ namespace APT.SC.WebApi.Controllers.Api.BI List listCheckDepCountCJ = new List(); List listCheckDepCountBZ = new List(); - List listName = new List() { "按时整改隐患", "超期整改隐患", "未整改隐患", "隐患整改率" }; + List listName = new List() { "计划检查次数", "实际检查次数" }; List listCheckTypeCount = null; DetailSafeCheckCountDepartment modelCountDep = null; int checkTypeCount = listCheckTypeID.Count; foreach (var item in listDepCJ) { - modelCountDep = new DetailSafeCheckCountDepartment(); - modelCountDep.listName = listName; - modelCountDep.PARENT_ID = item.PARENT_ID.Value; - modelCountDep.Department_ID = item.ID; - modelCountDep.NUM = item.NUM; - modelCountDep.RowCount = listDepBZ.Where(e => e.PARENT_ID.HasValue && e.PARENT_ID.Value == item.ID).Count(); - modelCountDep.DepartmentName = item.NAME; - modelCountDep.DepartmentType = item.DEPARTMENT_TYPE; - listCheckTypeCount = new List(); - var alls = hiddens.Where(t => t.APPLY_DEPARTMENT_ID == item.ID); - var onTimes = alls.Where(t => t.STATUS == BaseData.Domain.Enums.PF.PFStandardStatus.Archived && t.COMPLETE_DATE <= t.RECITIFY_TIME); - if (onTimes.Any()) + var parentIds = listDepBZ.Where(e => e.PARENT_ID.HasValue && e.PARENT_ID.Value == item.ID).Select(t => t.ID).ToList(); + var alls = checkNotices.Where(t => t.APPLY_DEPARTMENT_ID == item.ID || parentIds.Contains((Guid)t.APPLY_DEPARTMENT_ID)).ToList(); + if (alls.Count() > 0) { - listCheckTypeCount.Add(onTimes.Count()); - } - else - { - listCheckTypeCount.Add(0); - } - var overTimes = alls.Where(t => t.STATUS == BaseData.Domain.Enums.PF.PFStandardStatus.Archived && t.COMPLETE_DATE > t.RECITIFY_TIME); - if (overTimes.Any()) - { - listCheckTypeCount.Add(overTimes.Count()); - } - else - { - listCheckTypeCount.Add(0); - } - var noTimes = alls.Where(t => t.STATUS != BaseData.Domain.Enums.PF.PFStandardStatus.Archived); - if (noTimes.Any()) - { - listCheckTypeCount.Add(noTimes.Count()); - } - else - { - listCheckTypeCount.Add(0); - } - if (alls.Any()) - { - var val = onTimes.Count() + overTimes.Count(); + modelCountDep = new DetailSafeCheckCountDepartment(); + modelCountDep.listName = listName; + modelCountDep.PARENT_ID = item.PARENT_ID.Value; + modelCountDep.Department_ID = item.ID; + modelCountDep.NUM = item.NUM; + //modelCountDep.RowCount = listDepBZ.Where(e => e.PARENT_ID.HasValue && e.PARENT_ID.Value == item.ID).Count(); + modelCountDep.DepartmentName = item.NAME; + modelCountDep.DepartmentType = item.DEPARTMENT_TYPE; + listCheckTypeCount = new List(); var count = alls.Count(); - var rate = count == 0 ? 0 : (int)(100.00 * val / count); - listCheckTypeCount.Add(rate); + listCheckTypeCount.Add(count); + var ids = alls.Select(t => t.ID).ToList(); + var countAct = checkRecords.Count(t => ids.Contains((Guid)t.SECURITY_INSPECTION_NOTICE_ID)); + listCheckTypeCount.Add(countAct); + modelCountDep.listCount = listCheckTypeCount; + listCheckDepCountCJ.Add(modelCountDep); } - else - { - listCheckTypeCount.Add(100); - } - modelCountDep.listCount = listCheckTypeCount; - listCheckDepCountCJ.Add(modelCountDep); + } foreach (var item in listDepBZ) { - modelCountDep = new DetailSafeCheckCountDepartment(); - modelCountDep.listName = listName; - modelCountDep.PARENT_ID = item.PARENT_ID.Value; - modelCountDep.Department_ID = item.ID; - modelCountDep.NUM = item.NUM; - modelCountDep.RowCount = 1; - modelCountDep.DepartmentName = item.NAME; - modelCountDep.DepartmentType = item.DEPARTMENT_TYPE; - listCheckTypeCount = new List(); - var alls = hiddens.Where(t => t.APPLY_DEPARTMENT_ID == item.ID); - var onTimes = alls.Where(t => t.STATUS == BaseData.Domain.Enums.PF.PFStandardStatus.Archived && t.COMPLETE_DATE <= t.RECITIFY_TIME); - if (onTimes.Any()) + var alls = checkNotices.Where(t => t.APPLY_DEPARTMENT_ID == item.ID).ToList(); + var count = alls.Count(); + if (count > 0) { - listCheckTypeCount.Add(onTimes.Count()); + modelCountDep = new DetailSafeCheckCountDepartment(); + modelCountDep.listName = listName; + modelCountDep.PARENT_ID = item.PARENT_ID.Value; + modelCountDep.Department_ID = item.ID; + modelCountDep.NUM = item.NUM; + modelCountDep.RowCount = 1; + modelCountDep.DepartmentName = item.NAME; + modelCountDep.DepartmentType = item.DEPARTMENT_TYPE; + listCheckTypeCount = new List(); + listCheckTypeCount.Add(count); + var ids = alls.Select(t => t.ID).ToList(); + var countAct = checkRecords.Count(t => ids.Contains((Guid)t.SECURITY_INSPECTION_NOTICE_ID)); + listCheckTypeCount.Add(countAct); + modelCountDep.listCount = listCheckTypeCount; + listCheckDepCountBZ.Add(modelCountDep); } - else - { - listCheckTypeCount.Add(0); - } - var overTimes = alls.Where(t => t.STATUS == BaseData.Domain.Enums.PF.PFStandardStatus.Archived && t.COMPLETE_DATE > t.RECITIFY_TIME); - if (overTimes.Any()) - { - listCheckTypeCount.Add(overTimes.Count()); - } - else - { - listCheckTypeCount.Add(0); - } - var noTimes = alls.Where(t => t.STATUS != BaseData.Domain.Enums.PF.PFStandardStatus.Archived); - if (noTimes.Any()) - { - listCheckTypeCount.Add(noTimes.Count()); - } - else - { - listCheckTypeCount.Add(0); - } - if (alls.Any()) - { - var val = onTimes.Count() + overTimes.Count(); - var count = alls.Count(); - var rate = count == 0 ? 0 : (int)(100.00 * val / count); - listCheckTypeCount.Add(rate); - } - else - { - listCheckTypeCount.Add(100); - } - modelCountDep.listCount = listCheckTypeCount; - listCheckDepCountBZ.Add(modelCountDep); } //result.ListSafeCheckCountDepartmentBZ = listCheckDepCountBZ; foreach (var item in listCheckDepCountCJ) { item.listChild = listCheckDepCountBZ.Where(e => e.PARENT_ID == item.Department_ID).OrderBy(e => e.NUM).ToList(); + item.RowCount = item.listChild.Count(); } #endregion @@ -2826,115 +2772,147 @@ namespace APT.SC.WebApi.Controllers.Api.BI int All = 0; foreach (var item in listDepCJ) { - modelCountDep = new DetailSafeCheckCountDepartment(); - modelCountDep.listName = listName; - modelCountDep.PARENT_ID = item.PARENT_ID.Value; - modelCountDep.Department_ID = item.ID; - modelCountDep.NUM = item.NUM; - modelCountDep.RowCount = listDepBZ.Where(e => e.PARENT_ID.HasValue && e.PARENT_ID.Value == item.ID).Count(); - modelCountDep.DepartmentName = item.NAME; - modelCountDep.DepartmentType = item.DEPARTMENT_TYPE; - listCheckTypeCount = new List(); - var alls = hiddens.Where(t => t.APPLY_DEPARTMENT_ID == item.ID); - var onTimes = alls.Where(t => t.STATUS == BaseData.Domain.Enums.PF.PFStandardStatus.Archived && t.COMPLETE_DATE <= t.RECITIFY_TIME); - if (onTimes.Any()) + var classIds = listDepBZ.Where(e => e.PARENT_ID.HasValue && e.PARENT_ID.Value == item.ID).Select(t => t.ID); + var alls = hiddens.Where(t => t.APPLY_DEPARTMENT_ID == item.ID || classIds.Contains((Guid)t.APPLY_DEPARTMENT_ID)); + if (alls.Count() > 0) { - listCheckTypeCount.Add(onTimes.Count()); - } - else - { - listCheckTypeCount.Add(0); - } - var overTimes = alls.Where(t => t.STATUS == BaseData.Domain.Enums.PF.PFStandardStatus.Archived && t.COMPLETE_DATE > t.RECITIFY_TIME); - if (overTimes.Any()) - { - listCheckTypeCount.Add(overTimes.Count()); - } - else - { - listCheckTypeCount.Add(0); - } - var noTimes = alls.Where(t => t.STATUS != BaseData.Domain.Enums.PF.PFStandardStatus.Archived); - if (noTimes.Any()) - { - listCheckTypeCount.Add(noTimes.Count()); - } - else - { - listCheckTypeCount.Add(0); - } - if (alls.Any()) - { - var val = onTimes.Count() + overTimes.Count(); - var count = alls.Count(); - var rate = count == 0 ? 0 : (int)(10000.00 * val / count); - listCheckTypeCount.Add(rate); - } - else - { - listCheckTypeCount.Add(10000); - } - modelCountDep.listCount = listCheckTypeCount; - listCheckDepCountCJ.Add(modelCountDep); - } + modelCountDep = new DetailSafeCheckCountDepartment(); + modelCountDep.listName = listName; + modelCountDep.PARENT_ID = item.PARENT_ID.Value; + modelCountDep.Department_ID = item.ID; + modelCountDep.NUM = item.NUM; + //modelCountDep.RowCount = listDepBZ.Where(e => e.PARENT_ID.HasValue && e.PARENT_ID.Value == item.ID).Count(); + modelCountDep.DepartmentName = item.NAME; + modelCountDep.DepartmentType = item.DEPARTMENT_TYPE; + listCheckTypeCount = new List(); + modelCountDep.TotalCount = alls.Count(); + var onTimes = alls.Where(t => t.STATUS == BaseData.Domain.Enums.PF.PFStandardStatus.Archived && t.COMPLETE_DATE <= t.RECITIFY_TIME); + if (onTimes.Any()) + { + listCheckTypeCount.Add(onTimes.Count()); + } + else + { + listCheckTypeCount.Add(0); + } + modelCountDep.OnCount = onTimes.Count(); + var overTimes = alls.Where(t => t.STATUS == BaseData.Domain.Enums.PF.PFStandardStatus.Archived && t.COMPLETE_DATE > t.RECITIFY_TIME); + if (overTimes.Any()) + { + listCheckTypeCount.Add(overTimes.Count()); + } + else + { + listCheckTypeCount.Add(0); + } + modelCountDep.OverCount = overTimes.Count(); + var noTimes = alls.Where(t => t.STATUS != BaseData.Domain.Enums.PF.PFStandardStatus.Archived); + if (noTimes.Any()) + { + listCheckTypeCount.Add(noTimes.Count()); + } + else + { + listCheckTypeCount.Add(0); + } + modelCountDep.NoCount = noTimes.Count(); + if (alls.Any()) + { + var val = onTimes.Count() + overTimes.Count(); + var count = alls.Count(); + var rate = count == 0 ? 0 : (int)(10000.00 * val / count); + listCheckTypeCount.Add(rate); + } + else + { + listCheckTypeCount.Add(10000); + } + modelCountDep.listCount = listCheckTypeCount; + listCheckDepCountCJ.Add(modelCountDep); + } + + } + //listCheckDepCountCJ = listCheckDepCountCJ.Where(t => t.TotalCount != 0).ToList(); + var departIds = listCheckDepCountCJ.Select(t => t.Department_ID).Distinct().ToList(); + listDepBZ = listDepBZ.Where(t => t.PARENT_ID != null && departIds.Contains((Guid)t.PARENT_ID)).ToList(); foreach (var item in listDepBZ) { - modelCountDep = new DetailSafeCheckCountDepartment(); - modelCountDep.listName = listName; - modelCountDep.PARENT_ID = item.PARENT_ID.Value; - modelCountDep.Department_ID = item.ID; - modelCountDep.NUM = item.NUM; - modelCountDep.RowCount = 1; - modelCountDep.DepartmentName = item.NAME; - modelCountDep.DepartmentType = item.DEPARTMENT_TYPE; - listCheckTypeCount = new List(); var alls = hiddens.Where(t => t.APPLY_DEPARTMENT_ID == item.ID); - var onTimes = alls.Where(t => t.STATUS == BaseData.Domain.Enums.PF.PFStandardStatus.Archived && t.COMPLETE_DATE <= t.RECITIFY_TIME); - if (onTimes.Any()) + if (alls.Count() > 0) { - listCheckTypeCount.Add(onTimes.Count()); - } - else - { - listCheckTypeCount.Add(0); - } - var overTimes = alls.Where(t => t.STATUS == BaseData.Domain.Enums.PF.PFStandardStatus.Archived && t.COMPLETE_DATE > t.RECITIFY_TIME); - if (overTimes.Any()) - { - listCheckTypeCount.Add(overTimes.Count()); - } - else - { - listCheckTypeCount.Add(0); - } - var noTimes = alls.Where(t => t.STATUS != BaseData.Domain.Enums.PF.PFStandardStatus.Archived); - if (noTimes.Any()) - { - listCheckTypeCount.Add(noTimes.Count()); - } - else - { - listCheckTypeCount.Add(0); - } - if (alls.Any()) - { - var val = onTimes.Count() + overTimes.Count(); - var count = alls.Count(); - var rate = count == 0 ? 0 : (int)(10000.00 * val / count); - listCheckTypeCount.Add(rate); - } - else - { - listCheckTypeCount.Add(10000); - } - modelCountDep.listCount = listCheckTypeCount; - listCheckDepCountBZ.Add(modelCountDep); - } + modelCountDep = new DetailSafeCheckCountDepartment(); + modelCountDep.listName = listName; + modelCountDep.PARENT_ID = item.PARENT_ID.Value; + modelCountDep.Department_ID = item.ID; + modelCountDep.NUM = item.NUM; + modelCountDep.RowCount = 1; + modelCountDep.DepartmentName = item.NAME; + modelCountDep.DepartmentType = item.DEPARTMENT_TYPE; + listCheckTypeCount = new List(); + modelCountDep.TotalCount = alls.Count(); + var onTimes = alls.Where(t => t.STATUS == BaseData.Domain.Enums.PF.PFStandardStatus.Archived && t.COMPLETE_DATE <= t.RECITIFY_TIME); + if (onTimes.Any()) + { + listCheckTypeCount.Add(onTimes.Count()); + } + else + { + listCheckTypeCount.Add(0); + } + modelCountDep.OnCount = onTimes.Count(); + var overTimes = alls.Where(t => t.STATUS == BaseData.Domain.Enums.PF.PFStandardStatus.Archived && t.COMPLETE_DATE > t.RECITIFY_TIME); + if (overTimes.Any()) + { + listCheckTypeCount.Add(overTimes.Count()); + } + else + { + listCheckTypeCount.Add(0); + } + modelCountDep.OverCount = overTimes.Count(); + var noTimes = alls.Where(t => t.STATUS != BaseData.Domain.Enums.PF.PFStandardStatus.Archived); + if (noTimes.Any()) + { + listCheckTypeCount.Add(noTimes.Count()); + } + else + { + listCheckTypeCount.Add(0); + } + modelCountDep.NoCount = noTimes.Count(); + if (alls.Any()) + { + var val = onTimes.Count() + overTimes.Count(); + var count = alls.Count(); + var rate = count == 0 ? 0 : (int)(10000.00 * val / count); + listCheckTypeCount.Add(rate); + } + else + { + listCheckTypeCount.Add(10000); + } + modelCountDep.listCount = listCheckTypeCount; + listCheckDepCountBZ.Add(modelCountDep); + } + } + //listCheckDepCountBZ = listCheckDepCountBZ.Where(t => t.TotalCount != 0).ToList(); foreach (var item in listCheckDepCountCJ) { item.listChild = listCheckDepCountBZ.Where(e => e.PARENT_ID == item.Department_ID).OrderBy(e => e.NUM).ToList(); + item.listCount = new List(); + var onTime = item.listChild.Sum(t => t.OnCount) + item.OnCount; + item.listCount.Add(onTime); + var overTime = item.listChild.Sum(t => t.OverCount) + item.OverCount; + item.listCount.Add(overTime); + var noTime = item.listChild.Sum(t => t.NoCount) + item.NoCount; + item.listCount.Add(noTime); + var val = onTime + overTime; + var count = item.TotalCount; + var rate = count == 0 ? 0 : (int)(10000.00 * val / count); + item.listCount.Add(rate); + item.RowCount = item.listChild.Count(); } //result.ListSafeCheckYearMonth = listCheckDepCountCJ; @@ -3351,7 +3329,22 @@ namespace APT.SC.WebApi.Controllers.Api.BI /// 父项 /// public DetailSafeCheckCountDepartment Parent { get; set; } - + /// + /// 总数 + /// + public int TotalCount { get; set; } + /// + /// 总数 + /// + public int OnCount { get; set; } + /// + /// 总数 + /// + public int OverCount { get; set; } + /// + /// 总数 + /// + public int NoCount { get; set; } } /// diff --git a/APT.MicroApi/APT.SC.WebApi/Controllers/Api/BIController/BIStatiscialAnalysisController.cs b/APT.MicroApi/APT.SC.WebApi/Controllers/Api/BIController/BIStatiscialAnalysisController.cs index 799b980..4c14fc0 100644 --- a/APT.MicroApi/APT.SC.WebApi/Controllers/Api/BIController/BIStatiscialAnalysisController.cs +++ b/APT.MicroApi/APT.SC.WebApi/Controllers/Api/BIController/BIStatiscialAnalysisController.cs @@ -27,6 +27,7 @@ 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.SC.WebApi.Controllers.Api.BI; using APT.Utility; using Castle.Core.Internal; using ICSharpCode.SharpZipLib.Core; @@ -122,7 +123,8 @@ namespace APT.SC.WebApi.Controllers.Api.BIController public int shopDoneCount { get; set; } public int shopOntimeCount { get; set; } public double shopDoneRate { get; set; } - public double shopOverDoneRate { get; set; } + public double shopOverDoneRate { get; set; } + public int shopUndoneCount { get; set; } public Guid? teamId { get; set; } public string teamName { get; set; } public int teamTotalCount { get; set; } @@ -9689,9 +9691,10 @@ namespace APT.SC.WebApi.Controllers.Api.BIController departmentIds = departmentInfo.Select(t => t.ID).ToList(); BaseFilter baseFilter = new BaseFilter(orgId); baseFilter.SelectField = new string[] { "ID", "DEPARTMENT_ID" }; - var teams = GetEntities(t => !t.IS_DELETED && departmentIds.Contains(t.DEPARTMENT_ID.Value), baseFilter); - var teamIds = teams.Select(t => t.ID); + //var teams = GetEntities(t => !t.IS_DELETED && departmentIds.Contains(t.DEPARTMENT_ID.Value), baseFilter); + //var teamIds = teams.Select(t => t.ID); var completions = GetEntities(t => !t.IS_DELETED, new BaseFilter(orgId)).ToList(); + //var teamIds = completions.Select(t => t.TEAM_ID); if (!string.IsNullOrEmpty(filter.Parameter2)) { DateTime startTime = Convert.ToDateTime(filter.Parameter2); @@ -9702,9 +9705,9 @@ namespace APT.SC.WebApi.Controllers.Api.BIController DateTime endTime = Convert.ToDateTime(filter.Parameter3); completions = completions.Where(t => t.MONTH <= endTime).ToList(); } - if (teamIds != null && teamIds.Any()) + //if (teamIds != null && teamIds.Any()) { - completionLists = completions.Where(m => m.TEAM_ID != null && teamIds.Contains(m.TEAM_ID.Value)).GroupBy(t => new { t.TEAM_ID, t.TEAM_NAME }).Select(group => new GroupbyDepartmentId + completionLists = completions.Where(m => m.TEAM_ID != null).GroupBy(t => new { t.TEAM_ID, t.TEAM_NAME }).Select(group => new GroupbyDepartmentId { departmentId = group.Key.TEAM_ID, departmentName = group.Key.TEAM_NAME, @@ -9774,16 +9777,29 @@ namespace APT.SC.WebApi.Controllers.Api.BIController //if (string.IsNullOrEmpty(filter.Keyword)) // return ret; //var departmentInfo = this.GetEntities(t => t.PRODUCTION_UNIT_ID == Guid.Parse(filter.Keyword.ToString()), new BaseFilter(orgId)); - var departmentInfo = this.GetEntities(t => t.ENABLE_STATUS == 0 && t.CATEGORY == FMCATEGORY.ACTURE, new BaseFilter(orgId)); + var completions = GetEntities(t => !t.IS_DELETED, new BaseFilter(orgId)).ToList(); + var deptIds = completions.Where(t => t.DEPARTMENT_ID != null).Select(t => (Guid)t.DEPARTMENT_ID).Distinct().ToList(); + departmentIds.AddRange(deptIds); + var shopIds = completions.Where(t => t.SHOP_DEPARTMENT_ID != null).Select(t => (Guid)t.SHOP_DEPARTMENT_ID).Distinct().ToList(); + departmentIds.AddRange(shopIds); + var classIds = completions.Where(t => t.TEAM_ID != null).Select(t => (Guid)t.TEAM_ID).Distinct().ToList(); + departmentIds.AddRange(classIds); + var departmentInfo = this.GetEntities(t => t.ENABLE_STATUS == 0 && t.CATEGORY == FMCATEGORY.ACTURE, new BaseFilter(orgId), "Nav_Parent"); + if (departmentIds != null && departmentIds.Any()) + { + departmentInfo = departmentInfo.Where(t => departmentIds.Contains(t.ID)).ToList(); + } if (departmentInfo == null || !departmentInfo.Any()) return ret; else - departmentIds = departmentInfo.Select(t => t.ID).ToList(); - BaseFilter baseFilter = new BaseFilter(orgId); - baseFilter.SelectField = new string[] { "ID", "DEPARTMENT_ID" }; - var teams = GetEntities(t => !t.IS_DELETED && departmentIds.Contains(t.DEPARTMENT_ID.Value), baseFilter); - var teamIds = teams.Select(t => t.ID); - var completions = GetEntities(t => !t.IS_DELETED && t.TEAM_ID != null && teamIds.Contains(t.TEAM_ID.Value), new BaseFilter(orgId)).ToList(); + departmentIds = departmentInfo.Select(t => t.ID).Distinct().ToList(); + List listDepBM = new List(); + List listDepCJ = new List(); + List listDepBZ = new List(); + listDepBM = departmentInfo.Where(e => e.DEPARTMENT_TYPE == 10).OrderBy(e => e.NUM).ToList(); + listDepCJ = departmentInfo.Where(e => e.DEPARTMENT_TYPE == 15).OrderBy(e => e.NUM).ToList(); + listDepBZ = departmentInfo.Where(e => e.DEPARTMENT_TYPE == 20).OrderBy(e => e.NUM).ToList(); + //var completions = GetEntities(t => !t.IS_DELETED && t.TEAM_ID != null && teamIds.Contains(t.TEAM_ID.Value), new BaseFilter(orgId)).ToList(); if (completions != null && completions.Any()) { completionSorts = completions.GroupBy(t => new { t.MONTH, t.MONTHStr }).Select(group => new T_FM_DEPARTMENT_COMPLETION @@ -9793,8 +9809,25 @@ namespace APT.SC.WebApi.Controllers.Api.BIController FINISH_COUNT = group.Where(i => i.MONTH == group.Key.MONTH).Sum(m => m.FINISH_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), - }).ToList(); - completionLists = completions.GroupBy(t => new { t.TEAM_ID, t.TEAM_NAME, t.SHOP_DEPARTMENT_ID, t.SHOP_DEPARTMENT_NAME }).Select(group => new GroupbyDepartmentCompletion + }).ToList(); + if (completionSorts != null && completionSorts.Any()) + { + foreach (var item in completionSorts) + { + if (item.TOTAL_COUNT == 0) + { + item.FINISH_RATE = 0; + item.NORMAL_FINISH_RATE = 0; + } + else + { + item.FINISH_RATE = Math.Round((double)item.FINISH_COUNT / (double)item.TOTAL_COUNT * 100, 2); + item.NORMAL_FINISH_RATE = Math.Round((double)item.ONTIME_COUNT / (double)item.TOTAL_COUNT * 100, 2); + } + } + ret.rateData = completionSorts.OrderBy(t => t.MONTH).ToList(); + } + completionLists = completions.Where(t=>t.TEAM_ID!=null).GroupBy(t => new { t.TEAM_ID, t.TEAM_NAME, t.SHOP_DEPARTMENT_ID, t.SHOP_DEPARTMENT_NAME }).Select(group => new GroupbyDepartmentCompletion { shopId = group.Key.SHOP_DEPARTMENT_ID, shopName = group.Key.SHOP_DEPARTMENT_NAME, @@ -9804,51 +9837,127 @@ namespace APT.SC.WebApi.Controllers.Api.BIController 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), 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), 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), - }).ToList(); - } - if (completionSorts != null && completionSorts.Any()) - { - foreach (var item in completionSorts) - { - if (item.TOTAL_COUNT == 0) - { - item.FINISH_RATE = 0; - item.NORMAL_FINISH_RATE = 0; - } - else - { - item.FINISH_RATE = Math.Round((double)item.FINISH_COUNT / (double)item.TOTAL_COUNT * 100, 2); - item.NORMAL_FINISH_RATE = Math.Round((double)item.ONTIME_COUNT / (double)item.TOTAL_COUNT * 100, 2); - } - } - ret.rateData = completionSorts.OrderBy(t => t.MONTH).ToList(); - } + }).ToList(); + + //completionLists = completions.Where(t => t.TEAM_ID != null).GroupBy(t => new { t.TEAM_ID, t.TEAM_NAME }).Select(group => new GroupbyDepartmentCompletion + //{ + // shopId = group.FirstOrDefault(i => i.TEAM_ID == group.Key.TEAM_ID)?.DEPARTMENT_ID, + // shopName = group.FirstOrDefault(i => i.TEAM_ID == group.Key.TEAM_ID)?.DEPARTMENT_NAME, + // teamId = group.Key.TEAM_ID, + // teamName = group.Key.TEAM_NAME, + // teamDoneCount = group.Where(i => i.TEAM_ID == group.Key.TEAM_ID).Sum(m => m.FINISH_COUNT), + // teamOntimeCount = group.Where(i => i.TEAM_ID == group.Key.TEAM_ID).Sum(m => m.ONTIME_COUNT), + // teamUndoneCount = group.Where(i => i.TEAM_ID == group.Key.TEAM_ID).Sum(m => m.WAITTING_COUNT), + // teamTotalCount = group.Where(i => i.TEAM_ID == group.Key.TEAM_ID).Sum(m => m.TOTAL_COUNT), + //}).ToList(); + //var shopCompletionLists = completions.Where(t => t.SHOP_DEPARTMENT_ID != null).GroupBy(t => new { t.SHOP_DEPARTMENT_ID, t.SHOP_DEPARTMENT_NAME }).Select(group => new GroupbyDepartmentCompletion + //{ + + // shopId = group.FirstOrDefault(i => i.SHOP_DEPARTMENT_ID == group.Key.SHOP_DEPARTMENT_ID)?.DEPARTMENT_ID, + // shopName = group.FirstOrDefault(i => i.SHOP_DEPARTMENT_ID == group.Key.SHOP_DEPARTMENT_ID)?.DEPARTMENT_NAME, + // teamId = group.Key.SHOP_DEPARTMENT_ID, + // teamName = group.Key.SHOP_DEPARTMENT_NAME, + // teamDoneCount = group.Where(i => i.SHOP_DEPARTMENT_ID == group.Key.SHOP_DEPARTMENT_ID && i.TEAM_ID == null).Sum(m => m.FINISH_COUNT), + // teamOntimeCount = group.Where(i => i.SHOP_DEPARTMENT_ID == group.Key.SHOP_DEPARTMENT_ID && i.TEAM_ID == null).Sum(m => m.ONTIME_COUNT), + // teamUndoneCount = group.Where(i => i.SHOP_DEPARTMENT_ID == group.Key.SHOP_DEPARTMENT_ID && i.TEAM_ID == null).Sum(m => m.WAITTING_COUNT), + // teamTotalCount = group.Where(i => i.SHOP_DEPARTMENT_ID == group.Key.SHOP_DEPARTMENT_ID && i.TEAM_ID == null).Sum(m => m.TOTAL_COUNT), + //}).ToList(); + //completionLists.AddRange(shopCompletionLists); + //var deptCompletionLists = completions.Where(t => t.DEPARTMENT_ID != null).GroupBy(t => new { t.DEPARTMENT_ID, t.DEPARTMENT_NAME }).Select(group => new GroupbyDepartmentCompletion + //{ + // shopId = group.Key.DEPARTMENT_ID, + // shopName = group.Key.DEPARTMENT_NAME, + // teamId = group.Key.DEPARTMENT_ID, + // teamName = group.Key.DEPARTMENT_NAME, + // shopDoneCount = group.Where(i => i.DEPARTMENT_ID == group.Key.DEPARTMENT_ID).Sum(m => m.FINISH_COUNT), + // shopOntimeCount = group.Where(i => i.DEPARTMENT_ID == group.Key.DEPARTMENT_ID).Sum(m => m.ONTIME_COUNT), + // shopTotalCount = group.Where(i => i.DEPARTMENT_ID == group.Key.DEPARTMENT_ID).Sum(m => m.TOTAL_COUNT), + //}).ToList(); + //completionLists.AddRange(deptCompletionLists); + //foreach (var item in listDepBM) + //{ + // var modelCountDep = new GroupbyDepartmentCompletion(); + // modelCountDep.shopId = item.ID; + // modelCountDep.shopName = item.NAME; + // modelCountDep.teamId = item.ID; + // modelCountDep.teamName = item.NAME; + // modelCountDep.shopDoneCount = completions.Where(e => (e.DEPARTMENT_ID.HasValue && e.DEPARTMENT_ID.Value == item.ID) || (e.SHOP_DEPARTMENT_ID.HasValue && e.SHOP_DEPARTMENT_ID == item.ID)).Sum(m=>m.FINISH_COUNT); + // modelCountDep.shopOntimeCount = completions.Where(e => (e.DEPARTMENT_ID.HasValue && e.DEPARTMENT_ID.Value == item.ID) ||(e.SHOP_DEPARTMENT_ID.HasValue && e.SHOP_DEPARTMENT_ID == item.ID)).Sum(m => m.FINISH_COUNT); + // modelCountDep.shopTotalCount = completions.Where(e => (e.DEPARTMENT_ID.HasValue && e.DEPARTMENT_ID.Value == item.ID) || (e.SHOP_DEPARTMENT_ID.HasValue && e.SHOP_DEPARTMENT_ID == item.ID)).Sum(m => m.TOTAL_COUNT); + // if (modelCountDep.shopTotalCount != 0) + // { + // completionLists.Add(modelCountDep); + // } + // completionLists.Add(modelCountDep); + // var cjIds = departmentInfo.Where(e => e.PARENT_ID.HasValue && e.PARENT_ID.Value == item.ID).Select(t => t.ID).ToList(); + // var tempbzIds = departmentInfo.Where(e => e.PARENT_ID.HasValue && cjIds.Contains(e.PARENT_ID.Value)).Select(t => t.ID).ToList(); + // cjIds.AddRange(tempbzIds); + // if (cjIds.Distinct().Any()) + // { + // foreach (var item2 in cjIds) + // { + // var first = departmentInfo.FirstOrDefault(t => t.ID == item2); + // var modelCountDepChild = new GroupbyDepartmentCompletion(); + // modelCountDepChild.shopId = item.ID; + // modelCountDepChild.shopName = item.NAME; + // modelCountDepChild.teamId = item2; + // modelCountDepChild.teamName = first?.NAME; + // if (first.DEPARTMENT_TYPE == 15) + // { + // modelCountDepChild.teamDoneCount = completions.Where(e => e.SHOP_DEPARTMENT_ID.HasValue && e.SHOP_DEPARTMENT_ID.Value == item2).Sum(m => m.FINISH_COUNT); + // modelCountDepChild.teamOntimeCount = completions.Where(e => e.SHOP_DEPARTMENT_ID.HasValue && e.SHOP_DEPARTMENT_ID.Value == item2).Sum(m => m.FINISH_COUNT); + // modelCountDepChild.teamTotalCount = completions.Where(e => e.SHOP_DEPARTMENT_ID.HasValue && e.SHOP_DEPARTMENT_ID.Value == item2).Sum(m => m.TOTAL_COUNT); + // } + // else + // { + // modelCountDepChild.teamDoneCount = completions.Where(e => e.TEAM_ID.HasValue && e.TEAM_ID.Value == item2).Sum(m => m.FINISH_COUNT); + // modelCountDepChild.teamOntimeCount = completions.Where(e => e.TEAM_ID.HasValue && e.TEAM_ID.Value == item2).Sum(m => m.FINISH_COUNT); + // modelCountDepChild.teamTotalCount = completions.Where(e => e.TEAM_ID.HasValue && e.TEAM_ID.Value == item2).Sum(m => m.TOTAL_COUNT); + + // } + // if (modelCountDepChild.teamTotalCount != 0) + // { + // completionLists.Add(modelCountDepChild); + // } + // } + // } + //} + //} + if (completionLists != null && completionLists.Any()) { foreach (var item in completionLists) - { - 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.shopTotalCount = completionLists.Where(i => i.shopId == item.shopId).Sum(m => m.teamTotalCount); - if (item.shopTotalCount == 0) - { - item.shopDoneRate = 0; - item.shopOverDoneRate = 0; - } - else - { - item.shopDoneRate = Math.Round((double)item.shopDoneCount / (double)item.shopTotalCount * 100, 2); - item.shopOverDoneRate = Math.Round((double)item.shopOntimeCount / (double)item.shopTotalCount * 100, 2); - } - if (item.teamTotalCount == 0) - { - item.teamDoneRate = 0; - item.teamOverDoneRate = 0; - } - else - { - item.teamDoneRate = Math.Round((double)item.teamDoneCount / (double)item.teamTotalCount * 100, 2); - item.teamOverDoneRate = Math.Round((double)item.teamOntimeCount / (double)item.teamTotalCount * 100, 2); + //{ + // if (item.shopTotalCount == 0) + // { + + + // } + // else + { + 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.shopTotalCount = completionLists.Where(i => i.shopId == item.shopId).Sum(m => m.teamTotalCount); + if (item.shopTotalCount == 0) + { + item.shopDoneRate = 0; + item.shopOverDoneRate = 0; + } + else + { + item.shopDoneRate = Math.Round((double)item.shopDoneCount / (double)item.shopTotalCount * 100, 2); + item.shopOverDoneRate = Math.Round((double)item.shopOntimeCount / (double)item.shopTotalCount * 100, 2); + } + if (item.teamTotalCount == 0) + { + item.teamDoneRate = 0; + item.teamOverDoneRate = 0; + } + else + { + item.teamDoneRate = Math.Round((double)item.teamDoneCount / (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(); @@ -10033,11 +10142,11 @@ namespace APT.SC.WebApi.Controllers.Api.BIController var completions = GetEntities(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 => t.ENABLE_STATUS == 0 && t.CATEGORY == FMCATEGORY.ACTURE, new BaseFilter(orgId)); + //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 => t.ENABLE_STATUS == 0 && ((t.DEPARTMENT_STATUS == 2 && t.DEPARTMENT_TYPE==5)||t.DEPARTMENT_TYPE==10) && t.CATEGORY == FMCATEGORY.ACTURE, new BaseFilter(orgId)); if (departmentIds != null && departmentIds.Any()) { //departmentInfo = departmentInfo.Where(t => t.PRODUCTION_UNIT_ID == loginDepart.PRODUCTION_UNIT_ID).ToList(); @@ -10270,19 +10379,41 @@ namespace APT.SC.WebApi.Controllers.Api.BIController 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), }).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.Where(t=>t.TEAM_ID!=null).GroupBy(t => new {t.TEAM_ID, t.TEAM_NAME}).Select(group => new GroupbyDepartmentCompletion { - deptId = group.Where(i => i.TEAM_ID == group.Key.TEAM_ID && i.SHOP_DEPARTMENT_ID == group.Key.SHOP_DEPARTMENT_ID).FirstOrDefault().DEPARTMENT_ID, - deptName = group.Where(i => i.TEAM_ID == group.Key.TEAM_ID && i.SHOP_DEPARTMENT_ID == group.Key.SHOP_DEPARTMENT_ID).FirstOrDefault().DEPARTMENT_NAME, - shopId = group.Key.SHOP_DEPARTMENT_ID, - shopName = group.Key.SHOP_DEPARTMENT_NAME, + shopId = group.FirstOrDefault(i => i.TEAM_ID == group.Key.TEAM_ID)?.DEPARTMENT_ID, + shopName = group.FirstOrDefault(i => i.TEAM_ID == group.Key.TEAM_ID)?.DEPARTMENT_NAME, teamId = group.Key.TEAM_ID, 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), - 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), - 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), - 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), + teamDoneCount = group.Where(i => i.TEAM_ID == group.Key.TEAM_ID).Sum(m => m.FINISH_COUNT), + teamOntimeCount = group.Where(i => i.TEAM_ID == group.Key.TEAM_ID).Sum(m => m.ONTIME_COUNT), + teamUndoneCount = group.Where(i => i.TEAM_ID == group.Key.TEAM_ID).Sum(m => m.WAITTING_COUNT), + teamTotalCount = group.Where(i => i.TEAM_ID == group.Key.TEAM_ID).Sum(m => m.TOTAL_COUNT), + }).ToList(); + var shopCompletionLists = completions.Where(t => t.SHOP_DEPARTMENT_ID != null).GroupBy(t => new {t.SHOP_DEPARTMENT_ID, t.SHOP_DEPARTMENT_NAME }).Select(group => new GroupbyDepartmentCompletion + { + + shopId = group.FirstOrDefault(i => i.SHOP_DEPARTMENT_ID == group.Key.SHOP_DEPARTMENT_ID)?.DEPARTMENT_ID, + shopName = group.FirstOrDefault(i => i.SHOP_DEPARTMENT_ID == group.Key.SHOP_DEPARTMENT_ID)?.DEPARTMENT_NAME, + teamId = group.Key.SHOP_DEPARTMENT_ID, + teamName = group.Key.SHOP_DEPARTMENT_NAME, + teamDoneCount = group.Where(i => i.SHOP_DEPARTMENT_ID == group.Key.SHOP_DEPARTMENT_ID && i.TEAM_ID == null).Sum(m => m.FINISH_COUNT), + teamOntimeCount = group.Where(i => i.SHOP_DEPARTMENT_ID == group.Key.SHOP_DEPARTMENT_ID && i.TEAM_ID == null).Sum(m => m.ONTIME_COUNT), + teamUndoneCount = group.Where(i => i.SHOP_DEPARTMENT_ID == group.Key.SHOP_DEPARTMENT_ID && i.TEAM_ID == null).Sum(m => m.WAITTING_COUNT), + teamTotalCount = group.Where(i => i.SHOP_DEPARTMENT_ID == group.Key.SHOP_DEPARTMENT_ID && i.TEAM_ID == null).Sum(m => m.TOTAL_COUNT), }).ToList(); + completionLists.AddRange(shopCompletionLists); + var deptCompletionLists = completions.Where(t => t.DEPARTMENT_ID != null).GroupBy(t => new { t.DEPARTMENT_ID, t.DEPARTMENT_NAME}).Select(group => new GroupbyDepartmentCompletion + { + shopId = group.Key.DEPARTMENT_ID, + shopName = group.Key.DEPARTMENT_NAME, + teamId = group.Key.DEPARTMENT_ID, + teamName = group.Key.DEPARTMENT_NAME, + shopDoneCount = group.Where(i => i.DEPARTMENT_ID == group.Key.DEPARTMENT_ID).Sum(m => m.FINISH_COUNT), + shopOntimeCount = group.Where(i => i.DEPARTMENT_ID == group.Key.DEPARTMENT_ID).Sum(m => m.ONTIME_COUNT), + shopTotalCount = group.Where(i => i.DEPARTMENT_ID == group.Key.DEPARTMENT_ID).Sum(m => m.TOTAL_COUNT), + }).ToList(); + completionLists.AddRange(deptCompletionLists); } if (completionSorts != null && completionSorts.Any()) { @@ -10301,56 +10432,65 @@ namespace APT.SC.WebApi.Controllers.Api.BIController } ret.rateData = completionSorts.OrderBy(t => t.MONTH).ToList(); } + List result = new List(); if (completionLists != null && completionLists.Any()) { foreach (var item in completionLists) { - if (string.IsNullOrEmpty(item.shopName)) + if (string.IsNullOrEmpty(item.teamName) ||(item.teamName == item.shopName && item.teamTotalCount == 0)) { - item.shopName = item.deptName; + + // item.teamId = item.shopId; + // item.teamName = item.shopName; + // item.teamDoneCount = completionLists.Where(i => i.shopId == item.shopId && i.teamId == null).Sum(m => m.shopDoneCount); + // item.teamOntimeCount = completionLists.Where(i => i.shopId == item.shopId && i.teamId == null).Sum(m => m.shopOntimeCount); + // item.teamTotalCount = completionLists.Where(i => i.shopId == item.shopId && i.teamId == null).Sum(m => m.shopTotalCount); } - if (string.IsNullOrEmpty(item.teamName)) + else { - item.teamName = item.shopName; + //if (string.IsNullOrEmpty(item.teamName)) + //{ + // item.teamName = item.shopName; + //} + item.shopDoneCount = completionLists.Where(i => i.shopId == item.shopId).Sum(m => m.shopDoneCount); + item.shopOntimeCount = completionLists.Where(i => i.shopId == item.shopId).Sum(m => m.shopOntimeCount); + item.shopTotalCount = completionLists.Where(i => i.shopId == item.shopId).Sum(m => m.shopTotalCount); + + //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) + { + item.shopDoneRate = 0; + item.shopOverDoneRate = 0; + } + else + { + item.shopDoneRate = Math.Round((double)item.shopDoneCount / (double)item.shopTotalCount * 100, 2); + item.shopOverDoneRate = Math.Round((double)item.shopOntimeCount / (double)item.shopTotalCount * 100, 2); + } + if (item.teamTotalCount == 0) + { + item.teamDoneRate = 0; + item.teamOverDoneRate = 0; + } + else + { + item.teamDoneRate = Math.Round((double)item.teamDoneCount / (double)item.teamTotalCount * 100, 2); + item.teamOverDoneRate = Math.Round((double)item.teamOntimeCount / (double)item.teamTotalCount * 100, 2); + } + result.Add(item); } - //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.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); - //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) - { - item.shopDoneRate = 0; - item.shopOverDoneRate = 0; - } - else - { - item.shopDoneRate = Math.Round((double)item.shopDoneCount / (double)item.shopTotalCount * 100, 2); - item.shopOverDoneRate = Math.Round((double)item.shopOntimeCount / (double)item.shopTotalCount * 100, 2); - } - if (item.teamTotalCount == 0) - { - item.teamDoneRate = 0; - item.teamOverDoneRate = 0; - } - else - { - item.teamDoneRate = Math.Round((double)item.teamDoneCount / (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 = result.OrderBy(t => t.shopName).ThenByDescending(m => m.teamOverDoneRate).ToList(); } return ret; });