diff --git a/APT.MS.Domain/Entities/SC/BI/11T_BI_SAFETASK_FINISH.cs b/APT.MS.Domain/Entities/SC/BI/11T_BI_SAFETASK_FINISH.cs index 894e228..edabd47 100644 --- a/APT.MS.Domain/Entities/SC/BI/11T_BI_SAFETASK_FINISH.cs +++ b/APT.MS.Domain/Entities/SC/BI/11T_BI_SAFETASK_FINISH.cs @@ -1,6 +1,7 @@  using APT.BaseData.Domain.Entities.FM; using APT.Infrastructure.Core; +using APT.MS.Domain.Enums; using APT.MS.Domain.Enums.BI; using System; using System.Collections.Generic; @@ -141,6 +142,22 @@ namespace APT.MS.Domain.Entities.BI /// 结束时间 /// [Description("结束时间")] - public DateTime ENDTIME { get; set; } + public DateTime ENDTIME { get; set; } + + /// + /// 表单名称 + /// + [Description("表单名称")] + public string FORM_NAME { get; set; } + /// + /// 表单状态 + /// + [Description("表单状态")] + public string FORM_STATUS { get; set; } + /// + /// 是否超时 + /// + [Description("是否超时")] + public FOISOVERTIME OVERTIME { 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 ef0d69c..909d770 100644 --- a/APT.MicroApi/APT.SC.WebApi/Controllers/Api/BIController/BIStatiscialAnalysisController.cs +++ b/APT.MicroApi/APT.SC.WebApi/Controllers/Api/BIController/BIStatiscialAnalysisController.cs @@ -52,6 +52,7 @@ using System.Net.NetworkInformation; using System.Runtime.CompilerServices; using System.Threading.Tasks; using static APT.SC.WebApi.Controllers.Api.BI.BIKanBanController; +using static NPOI.HSSF.Util.HSSFColor; namespace APT.SC.WebApi.Controllers.Api.BIController { @@ -9737,31 +9738,24 @@ namespace APT.SC.WebApi.Controllers.Api.BIController 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 = GetClassCompletion(orgId);// GetEntities(t => !t.IS_DELETED, new BaseFilter(orgId)).ToList(); - //var teamIds = completions.Select(t => t.TEAM_ID); + 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 startTime = Convert.ToDateTime(DateTime.Now.AddMonths(-5).Year + "-" + DateTime.Now.AddMonths(-5).Month + "-01 00:00:00"); + var endTime = Convert.ToDateTime(DateTime.Now.Year + "-" + DateTime.Now.Month + "-" + DateTime.Now.Day + " 23:59:59"); if (!string.IsNullOrEmpty(filter.Parameter2)) { - DateTime startTime = Convert.ToDateTime(filter.Parameter2); - completions = completions.Where(t => t.MONTH >= startTime).ToList(); - } - else - { - var startTime = Convert.ToDateTime(DateTime.Now.Year + "-" + DateTime.Now.AddMonths(-5).Month + "-01 00:00:00"); - completions = completions.Where(t => t.MONTH >= startTime).ToList(); + startTime = Convert.ToDateTime(filter.Parameter2); + //completions = completions.Where(t => t.MONTH >= startTime).ToList(); } if (!string.IsNullOrEmpty(filter.Parameter3)) { - DateTime endTime = Convert.ToDateTime(filter.Parameter3); - completions = completions.Where(t => t.MONTH <= endTime).ToList(); - } - else - { - var endTime = Convert.ToDateTime(DateTime.Now.Year + "-" + DateTime.Now.Month + "-" + DateTime.Now.Day + " 23:59:59"); - completions = completions.Where(t => t.MONTH <= endTime).ToList(); + endTime = Convert.ToDateTime(filter.Parameter3); + //completions = completions.Where(t => t.MONTH <= endTime).ToList(); } + var completions = GetClassCompletion(orgId,startTime, endTime);// GetEntities(t => !t.IS_DELETED, new BaseFilter(orgId)).ToList(); + //var teamIds = completions.Select(t => t.TEAM_ID); + //if (teamIds != null && teamIds.Any()) { completionLists = completions.Where(m => m.TEAM_ID != null).GroupBy(t => new { t.TEAM_ID, t.TEAM_NAME }).Select(group => new GroupbyDepartmentId @@ -9800,11 +9794,39 @@ namespace APT.SC.WebApi.Controllers.Api.BIController item.CALC = tempCalc; } } - List completionSorts1 = completionSorts.OrderByDescending(t => t.CALC).Take(8).ToList(); + if (!string.IsNullOrEmpty(filter.Keyword)) + { + if (filter.Keyword == "10") + { + var departId = departmentInfo.FirstOrDefault(t => t.NAME == "选矿部")?.ID; + if (departId != null) + { + List parentIds = new List(); + parentIds.Add((Guid)departId); + List allIds = new List(); + GetDepartmentIds(orgId, parentIds, ref allIds); + completionSorts = completionSorts.Where(t => t.TEAM_ID != null && allIds.Contains((Guid)t.TEAM_ID)).ToList(); + } + } + if (filter.Keyword == "30") + { + var departId = departmentInfo.FirstOrDefault(t => t.NAME == "矿山部")?.ID; + if (departId != null) + { + List parentIds = new List(); + parentIds.Add((Guid)departId); + List allIds = new List(); + GetDepartmentIds(orgId, parentIds, ref allIds); + completionSorts = completionSorts.Where(t => t.TEAM_ID != null && allIds.Contains((Guid)t.TEAM_ID)).ToList(); + } + } + } + //List completionSorts1 = completionSorts.OrderByDescending(t => t.CALC).Take(8).ToList(); + List completionSorts1 = completionSorts.Where(m=>m.CALC!=0).OrderByDescending(t => t.CALC).ToList(); if (!string.IsNullOrEmpty(filter.Parameter1)) { var param = int.Parse(filter.Parameter1.ToString()); - completionSorts1 = completionSorts.OrderByDescending(t => t.CALC).Take(param).ToList(); + completionSorts1 = completionSorts1.OrderByDescending(t => t.CALC).Take(param).ToList(); } int i = 1; foreach (var item in completionSorts1) @@ -9855,7 +9877,19 @@ 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 completions = GetClassCompletion(orgId);//GetEntities(t => !t.IS_DELETED, new BaseFilter(orgId)).ToList(); + var startTime = Convert.ToDateTime(DateTime.Now.AddMonths(-5).Year + "-" + DateTime.Now.AddMonths(-5).Month + "-01 00:00:00"); + var endTime = Convert.ToDateTime(DateTime.Now.Year + "-" + DateTime.Now.Month + "-" + DateTime.Now.Day + " 23:59:59"); + if (!string.IsNullOrEmpty(filter.Parameter2)) + { + startTime = Convert.ToDateTime(filter.Parameter2); + //completions = completions.Where(t => t.MONTH >= startTime).ToList(); + } + if (!string.IsNullOrEmpty(filter.Parameter3)) + { + endTime = Convert.ToDateTime(filter.Parameter3); + //completions = completions.Where(t => t.MONTH <= endTime).ToList(); + } + var completions = GetClassCompletion(orgId, startTime, endTime);//GetEntities(t => !t.IS_DELETED, new BaseFilter(orgId)).ToList(); var departmentInfos = this.GetEntities(t => t.ENABLE_STATUS == 0 && t.CATEGORY == FMCATEGORY.ACTURE, new BaseFilter(orgId), "Nav_Parent"); //List listDepBM = new List(); @@ -10013,17 +10047,16 @@ namespace APT.SC.WebApi.Controllers.Api.BIController } /// - /// 返回所有下级部门节点 + /// 返回班前会议、班组活动记录 /// /// /// /// - public List GetClassCompletion(Guid orgId) + public List GetClassCompletion(Guid orgId,DateTime startTime, DateTime endTime) { List completions = new List(); BaseFilter baseFilter = new BaseFilter(orgId); - var startTime = Convert.ToDateTime(DateTime.Now.AddMonths(-5).Year + "-" + DateTime.Now.AddMonths(-5).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", "PARENT_ID" }; var departments = GetEntities(t => !t.IS_DELETED && t.ENABLE_STATUS == 0, baseFilter); baseFilter.SelectField = new string[] { "ID", "DEPARTMENT_ID" }; @@ -12617,6 +12650,195 @@ namespace APT.SC.WebApi.Controllers.Api.BIController } return result; } + /// + /// 查询所有数据 + /// + /// 过滤实体 + /// + [HttpPost, Route("GetSafeEntities")] + public JsonActionResult> GetSafeEntities([FromBody] KeywordFilter filter) + { + return SafeExecute>(() => + { + List completions = new List(); + var startTime = Convert.ToDateTime(DateTime.Now.AddMonths(-1).Year + "-" + DateTime.Now.AddMonths(-1).Month + "-01 00:00:00"); + var endTime = Convert.ToDateTime(DateTime.Now.Year + "-" + DateTime.Now.Month + "-" + DateTime.Now.Day + " 23:59:59"); + if (!string.IsNullOrEmpty(filter.Parameter2)) + { + startTime = Convert.ToDateTime(filter.Parameter2); + //completions = completions.Where(t => t.MONTH >= startTime).ToList(); + } + if (!string.IsNullOrEmpty(filter.Parameter3)) + { + endTime = Convert.ToDateTime(filter.Parameter3); + //completions = completions.Where(t => t.MONTH <= endTime).ToList(); + } + BaseFilter baseFilter = new BaseFilter(filter.OrgId); + baseFilter.SelectField = new string[] { "ID", "NAME", "DEPARTMENT_TYPE", "Nav_Parent.NAME", "PARENT_ID" }; + var departments = GetEntities(t => !t.IS_DELETED && t.ENABLE_STATUS == 0, baseFilter); + var allInfos = GetSafeTaskFinish(filter.OrgId.Value, startTime, endTime); + var teamIds = allInfos.Select(t => t.TEAM_ID).Distinct().ToList(); + if (teamIds != null && teamIds.Any()) + { + foreach (var item in teamIds) + { + var first = departments.FirstOrDefault(t => t.ID == item); + var biSafeFinish = new T_BI_SAFETASK_FINISH(); + biSafeFinish.ORG_ID = filter.OrgId.Value; + biSafeFinish.TEAM_ID = item; + biSafeFinish.TEAM_NAME = first?.NAME; + var parentInfo = departments.FirstOrDefault(t => t.ID == first?.PARENT_ID); + if (parentInfo != null) + { + if (parentInfo.DEPARTMENT_TYPE == 15) + { + var parentUp = departments.FirstOrDefault(t => t.ID == parentInfo.PARENT_ID); + if (parentUp != null) + { + //biSafeFinish.shopId = parentUp.ID; + biSafeFinish.DEPARTMENT_NAME = parentUp.NAME; + } + } + else + { + //biSafeFinish.shopId = parentInfo.ID; + biSafeFinish.DEPARTMENT_NAME = parentInfo.NAME; + } + } + biSafeFinish.FO01_TOTAL = allInfos.Count(t => t.TEAM_ID == item && t.FORM_NAME=="班前会议"); + biSafeFinish.FO01_FINISH = allInfos.Count(t => t.TEAM_ID == item && t.FORM_NAME == "班前会议" && t.FORM_STATUS == "归档" && t.OVERTIME != FOISOVERTIME.超时); + biSafeFinish.FO01_UNFINISH = allInfos.Count(t => t.TEAM_ID == item && t.FORM_NAME == "班前会议" && t.FORM_STATUS != "归档"); + biSafeFinish.FO01_OVERTIME = allInfos.Count(t => t.TEAM_ID == item && t.FORM_NAME == "班前会议" && t.FORM_STATUS == "归档" && t.OVERTIME == FOISOVERTIME.超时); + biSafeFinish.FO02_TOTAL = allInfos.Count(t => t.TEAM_ID == item && t.FORM_NAME == "岗位当班记录"); + biSafeFinish.FO02_FINISH = allInfos.Count(t => t.TEAM_ID == item && t.FORM_NAME == "岗位当班记录" && t.FORM_STATUS == "归档" && t.OVERTIME != FOISOVERTIME.超时); + biSafeFinish.FO02_UNFINISH = allInfos.Count(t => t.TEAM_ID == item && t.FORM_NAME == "岗位当班记录" && t.FORM_STATUS != "归档"); + biSafeFinish.FO02_OVERTIME = allInfos.Count(t => t.TEAM_ID == item && t.FORM_NAME == "岗位当班记录" && t.FORM_STATUS == "归档" && t.OVERTIME == FOISOVERTIME.超时); + biSafeFinish.FO03_TOTAL = allInfos.Count(t => t.TEAM_ID == item && t.FORM_NAME == "岗位交接班"); + biSafeFinish.FO03_FINISH = allInfos.Count(t => t.TEAM_ID == item && t.FORM_NAME == "岗位交接班" && t.FORM_STATUS == "归档" && t.OVERTIME != FOISOVERTIME.超时); + biSafeFinish.FO03_UNFINISH = allInfos.Count(t => t.TEAM_ID == item && t.FORM_NAME == "岗位交接班" && t.FORM_STATUS != "归档"); + biSafeFinish.FO03_OVERTIME = allInfos.Count(t => t.TEAM_ID == item && t.FORM_NAME == "岗位交接班" && t.FORM_STATUS == "归档" && t.OVERTIME == FOISOVERTIME.超时); + completions.Add(biSafeFinish); + } + } + return completions; + }); + } + /// + /// 返回班前会议、班组活动记录 + /// + /// + /// + /// + public List GetSafeTaskFinish(Guid orgId,DateTime startTime, DateTime endTime) + { + List completions = new List(); + BaseFilter baseFilter = new BaseFilter(orgId); + baseFilter.SelectField = new string[] { "ID", "DEPARTMENT_ID" }; + var teams = GetEntities(t => !t.IS_DELETED && t.ENABLE_STATUS == 0, baseFilter); + baseFilter.SelectField = new string[] { "TEAM_ID", "Nav_Team.NAME", "PRE_MEETING_STATUS", "DEPARTMENT_ID", "OVERTIME", "CREATE_TIME", "Nav_User.DEPARTMENT_ID" }; //指定字段,包括导航属性 + var preShiftMeetingTemp = GetEntities(i => i.CREATE_TIME >= startTime && i.CREATE_TIME<= endTime && i.IS_DELETED == false, baseFilter).ToList(); + baseFilter.SelectField = new string[] { "CLASS_TEAM_ID", "Nav_Team.NAME", "SHIFT_STATUS", "DEPARTMENT_ID", "OVERTIME", "CREATE_TIME", "Nav_Editor.DEPARTMENT_ID" }; //指定字段,包括导航属性 + var currentShiftTemp = GetEntities(i => i.CREATE_TIME >= startTime && i.CREATE_TIME <= endTime && i.IS_DELETED == false, baseFilter).ToList(); + baseFilter.SelectField = new string[] { "TEAM_ID", "Nav_Team.NAME", "SHIFT_STATUS", "DEPARTMENT_ID", "OVERTIME", "CREATE_TIME", "Nav_Editor.DEPARTMENT_ID" }; //指定字段,包括导航属性 + var changeShiftTemp = GetEntities(i => i.CREATE_TIME >= startTime && i.CREATE_TIME <= endTime && i.IS_DELETED == false, baseFilter).ToList(); + //baseFilter.SelectField = new string[] { "TEAM_ID", "Nav_Taem.NAME", "TA_STATUS", "Nav_Taem.DEPARTMENT_ID", "OVERTIME", "CREATE_TIME", "Nav_MainUser.DEPARTMENT_ID" }; //指定字段,包括导航属性 + //var teamActivityTemp = GetEntities(i => i.CREATE_TIME >= startTime && i.IS_DELETED == false, baseFilter).ToList(); + + baseFilter.SelectField = new string[] { "SOURCE_DATA_ID" }; + var allnoticeTask = GetEntities(t => t.NOTICE_STATUS == 2 && t.CREATE_TIME >= startTime && t.CREATE_TIME <= endTime, baseFilter); + foreach (var item in preShiftMeetingTemp) + { + if (item.TEAM_ID == null) + { + item.TEAM_ID = item.Nav_User?.DEPARTMENT_ID; + } + else + { + var deparId = teams.FirstOrDefault(t => t.ID == item.TEAM_ID)?.DEPARTMENT_ID; + item.TEAM_ID = deparId; + } + var isOver = allnoticeTask.Where(t => t.SOURCE_DATA_ID == item.ID); + if (isOver.Any()) + { + item.OVERTIME = FOISOVERTIME.超时; + } + else + { + item.OVERTIME = FOISOVERTIME.未超时; + } + var biSafeFinish = new T_BI_SAFETASK_FINISH(); + biSafeFinish.ORG_ID = orgId; + biSafeFinish.TEAM_ID = (Guid)item.TEAM_ID; + biSafeFinish.FORM_NAME = "班前会议"; + biSafeFinish.OVERTIME = item.OVERTIME; + biSafeFinish.FORM_STATUS = item.PRE_MEETING_STATUS.GetDescription(); + completions.Add(biSafeFinish); + //biSafeFinish.TEAM_CHARGE_USER = team.Nav_ChargePerson.NAME; + //biSafeFinish.FO01_TOTAL = fo01a.Count(); + //biSafeFinish.FO01_FINISH = fo01a.Count(t => t.PRE_MEETING_STATUS == FOPreMeetingStatusEnum.归档 && t.OVERTIME != FOISOVERTIME.超时); + //biSafeFinish.FO01_UNFINISH = fo01a.Count(t => t.PRE_MEETING_STATUS < FOPreMeetingStatusEnum.归档); + //biSafeFinish.FO01_OVERTIME = fo01a.Count(t => t.OVERTIME == FOISOVERTIME.超时); + } + foreach (var item in currentShiftTemp) + { + if (item.CLASS_TEAM_ID == null) + { + item.CLASS_TEAM_ID = item.Nav_Editor?.DEPARTMENT_ID; + } + else + { + var deparId = teams.FirstOrDefault(t => t.ID == item.CLASS_TEAM_ID)?.DEPARTMENT_ID; + item.CLASS_TEAM_ID = deparId; + } + var isOver = allnoticeTask.Where(t => t.SOURCE_DATA_ID == item.ID); + if (isOver.Any()) + { + item.OVERTIME = FOISOVERTIME.超时; + } + else + { + item.OVERTIME = FOISOVERTIME.未超时; + } + var biSafeFinish = new T_BI_SAFETASK_FINISH(); + biSafeFinish.ORG_ID = orgId; + biSafeFinish.TEAM_ID = (Guid)item.CLASS_TEAM_ID; + biSafeFinish.FORM_NAME = "岗位当班记录"; + biSafeFinish.OVERTIME = item.OVERTIME; + biSafeFinish.FORM_STATUS = Enum.GetName(typeof(FOShiftStatusEnum), item.SHIFT_STATUS); + completions.Add(biSafeFinish); + } + foreach (var item in changeShiftTemp) + { + if (item.TEAM_ID == null) + { + item.TEAM_ID = item.Nav_Editor?.DEPARTMENT_ID; + } + else + { + var deparId = teams.FirstOrDefault(t => t.ID == item.TEAM_ID)?.DEPARTMENT_ID; + item.TEAM_ID = deparId; + } + var isOver = allnoticeTask.Where(t => t.SOURCE_DATA_ID == item.ID); + if (isOver.Any()) + { + item.OVERTIME = FOISOVERTIME.超时; + } + else + { + item.OVERTIME = FOISOVERTIME.未超时; + } + + var biSafeFinish = new T_BI_SAFETASK_FINISH(); + biSafeFinish.ORG_ID = orgId; + biSafeFinish.TEAM_ID = (Guid)item.TEAM_ID; + biSafeFinish.FORM_NAME = "岗位交接班"; + biSafeFinish.OVERTIME = item.OVERTIME; + biSafeFinish.FORM_STATUS = Enum.GetName(typeof(FOChangeShiftStatusEnum), item.SHIFT_STATUS); + completions.Add(biSafeFinish); + } + + return completions; + } public class JobInfo { public Guid? DEPARTMENT_ID { get; set; }