From f4b672c5d092cbb7413b11eb1bcacea1fe1ee5ce 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: Fri, 5 Jun 2026 16:32:29 +0800 Subject: [PATCH] =?UTF-8?q?=E9=A6=96=E9=A1=B5=E5=9B=BE=E8=A1=A8=E4=BC=98?= =?UTF-8?q?=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Services/BI/BIHomeService.cs | 107 ++++++++++++++++-- APT.MS.Data/Mapping/T4/T4Map.cs | 1 + APT.MS.Domain/Entities/FO/T_FO_FIRE_JOB.cs | 2 + .../Controllers/Api/BIController.cs | 2 +- .../Controllers/Api/FMController.cs | 36 +++++- .../Api/BIController/BIHomeController.cs | 26 ++--- .../BIStatiscialAnalysisController.cs | 38 +++---- 7 files changed, 165 insertions(+), 47 deletions(-) diff --git a/APT.BaseData.Services/Services/BI/BIHomeService.cs b/APT.BaseData.Services/Services/BI/BIHomeService.cs index dc5f7a8..4279c35 100644 --- a/APT.BaseData.Services/Services/BI/BIHomeService.cs +++ b/APT.BaseData.Services/Services/BI/BIHomeService.cs @@ -1,14 +1,16 @@ -using APT.Infrastructure.Core; -using System; -using APT.Infrastructure.Api; -using APT.MS.Domain.Enums; +using APT.BaseData.Domain.Entities.FM; +using APT.BaseData.Domain.Enums; using APT.BaseData.Domain.IServices.BI; +using APT.Infrastructure.Api; +using APT.Infrastructure.Core; using APT.MS.Domain.Entities.BI; -using System.Collections.Generic; -using APT.BaseData.Domain.Entities.FM; using APT.MS.Domain.Entities.BS; -using System.Linq.Expressions; +using APT.MS.Domain.Entities.SK; +using APT.MS.Domain.Enums; +using System; +using System.Collections.Generic; using System.Linq; +using System.Linq.Expressions; namespace APT.BaseData.Services.Services.BI { @@ -71,13 +73,12 @@ namespace APT.BaseData.Services.Services.BI /// 查询部门 /// 提前月份 /// - public IEnumerable GetHomeCorrect(Guid? OrgID, List listDep, int? MonthBefo = 5) + public IEnumerable GetHomeCorrectOld(Guid? OrgID, List listDep, int? MonthBefo = 5) { if (listDep == null || listDep.Count < 1) { return new List(); } - DateTime dtMin = DateTime.Now.AddMonths(-1 * MonthBefo.Value); List listDepID = listDep.Select(e => e.ID).ToList(); @@ -116,10 +117,94 @@ namespace APT.BaseData.Services.Services.BI catch { } } + return listReason; + } + + /// + /// 查询首页的隐患整改情况 月度 + /// + /// + /// 查询部门 + /// 提前月份 + /// + public IEnumerable GetHomeCorrect(Guid? OrgID, List listDep, int? MonthBefo = 5) + { + if (listDep == null || listDep.Count < 1) + { + return new List(); + } + var temps= new List(); + var fiter = new BaseFilter(); + fiter.OrgId = OrgID; + fiter.IgnoreDataRule = true; + var hiddens = this.GetEntities(t => t.APPLY_DEPARTMENT_ID != null && t.CREATE_TIME.Value.Year == DateTime.Now.Year, fiter); + if (hiddens != null && hiddens.Any()) + { + var groups = hiddens.GroupBy(t => new { t.APPLY_DEPARTMENT_ID,t.CREATE_TIME.Value.Month }).ToList(); + foreach (var group in groups) + { + T_BI_HOME_BSRISKREASON home = new T_BI_HOME_BSRISKREASON(); + home.DEPARTMENT_TYPE = (FMDepartmentType)listDep.FirstOrDefault(t=>t.ID == group.Key.APPLY_DEPARTMENT_ID)?.DEPARTMENT_TYPE; + home.TYPE = BSCaculateType.RiskCorrect; + home.YEAR = DateTime.Now.Year; + home.MONTH = group.Key.Month; + home.DEPARTMENT_ID = (Guid)group.Key.APPLY_DEPARTMENT_ID; + home.SOURCEVAL = 20; + var finishQty = hiddens.Count(t => t.APPLY_DEPARTMENT_ID == group.Key.APPLY_DEPARTMENT_ID && t.CREATE_TIME.Value.Month == group.Key.Month && t.STATUS == Domain.Enums.PF.PFStandardStatus.Archived); + var totalQty = hiddens.Count(t => t.APPLY_DEPARTMENT_ID == group.Key.APPLY_DEPARTMENT_ID && t.CREATE_TIME.Value.Month == group.Key.Month); + home.PERCENT = totalQty==0? 0 : (decimal)Math.Round(100.00 * finishQty / totalQty, 2); + temps.Add(home); + } + foreach (var item in hiddens) + { + T_BI_HOME_BSRISKREASON home = new T_BI_HOME_BSRISKREASON(); + home.DEPARTMENT_TYPE = (FMDepartmentType)listDep.FirstOrDefault(t => t.ID == item.APPLY_DEPARTMENT_ID)?.DEPARTMENT_TYPE; + home.TYPE = BSCaculateType.RiskCorrect; + home.YEAR = item.CREATE_TIME.Value.Year; + home.MONTH = item.CREATE_TIME.Value.Month; + home.DEPARTMENT_ID = (Guid)item.APPLY_DEPARTMENT_ID; + home.SOURCEVAL = item.STATUS != Domain.Enums.PF.PFStandardStatus.Archived ? 15:item.MODIFY_TIME>item.COMPLETE_DATE?10:5; + temps.Add(home); + } + } + DateTime dtMin = DateTime.Now.AddMonths(-1 * MonthBefo.Value); + + List listDepID = listDep.Select(e => e.ID).ToList(); + + //Expression> expression = e => e.TYPE == BSCaculateType.RiskCorrect; + //if (dtMin.Year == DateTime.Now.Year) + //{ + // expression = expression.And(e => e.YEAR == dtMin.Year && e.MONTH >= dtMin.Month); + //} + //else + //{ + // expression = expression.And(e => ((e.YEAR == dtMin.Year && e.MONTH >= dtMin.Month) || e.YEAR > dtMin.Year)); + //} + //if (listDepID.Count > 1) + // expression = expression.And(e => listDepID.Contains(e.DEPARTMENT_ID)); + //else + // expression = expression.And(e => e.DEPARTMENT_ID == listDepID[0]); + + //BaseFilter filterR = new BaseFilter(); + //filterR.OrgId = OrgID; + //filterR.Orders.Add(new DataOrder() { Field = "DEPARTMENT_ID", Order = DbOrder.ASC }); + //filterR.Orders.Add(new DataOrder() { Field = "SOURCEVAL", Order = DbOrder.ASC });// 直接按枚举值 排序 NUMS + //filterR.Orders.Add(new DataOrder() { Field = "YEAR", Order = DbOrder.ASC });// 直接按枚举值 排序 NUMS + //filterR.Orders.Add(new DataOrder() { Field = "MONTH", Order = DbOrder.ASC });// 直接按枚举值 排序 NUMS + //IEnumerable listReason = GetOrderEntities(expression, filterR); + var listReason = temps.OrderBy(t => t.DEPARTMENT_ID).ThenBy(m => m.SOURCEVAL).ThenBy(n => n.MONTH).ToList(); + foreach (var item in listReason) + { + try + { + item.SOURCENAME = ((BSCorrectType)item.SOURCEVAL).GetDescription();//wyw pp item.SOURCEVAL=0 + item.DEPARTMENTNAME = listDep.First(e => e.ID == item.DEPARTMENT_ID).NAME; + } + catch { } + } + return listReason; } - - /// /// 查询首页的隐患整改情况 年度 方法使用前提 先执行一下12个月的 整改情况 /// diff --git a/APT.MS.Data/Mapping/T4/T4Map.cs b/APT.MS.Data/Mapping/T4/T4Map.cs index cb60786..7687019 100644 --- a/APT.MS.Data/Mapping/T4/T4Map.cs +++ b/APT.MS.Data/Mapping/T4/T4Map.cs @@ -1327,6 +1327,7 @@ builder.Property(t => t.COMPLETED_CONDITION).HasMaxLength(200); builder.HasOne(t => t.Nav_DispatchUser).WithMany().HasForeignKey(t => t.DISPATCH_USER_ID).OnDelete(DeleteBehavior.Restrict); builder.Property(t => t.COMPLETED_CONTENT).HasMaxLength(200); builder.Ignore(t => t.PUBLISH); +builder.Ignore(t => t.IS_OVERTIME); } } #endregion diff --git a/APT.MS.Domain/Entities/FO/T_FO_FIRE_JOB.cs b/APT.MS.Domain/Entities/FO/T_FO_FIRE_JOB.cs index ed2b302..b7827b8 100644 --- a/APT.MS.Domain/Entities/FO/T_FO_FIRE_JOB.cs +++ b/APT.MS.Domain/Entities/FO/T_FO_FIRE_JOB.cs @@ -250,5 +250,7 @@ namespace APT.MS.Domain.Entities.FO [Description("是否节假日")] public bool IS_HOLIDAY { get; set; } = false; + [DataFieldIngore] + public int IS_OVERTIME { get; set; } } } diff --git a/APT.MicroApi/APT.PP.WebApi/Controllers/Api/BIController.cs b/APT.MicroApi/APT.PP.WebApi/Controllers/Api/BIController.cs index baa4544..caf4863 100644 --- a/APT.MicroApi/APT.PP.WebApi/Controllers/Api/BIController.cs +++ b/APT.MicroApi/APT.PP.WebApi/Controllers/Api/BIController.cs @@ -131,7 +131,7 @@ namespace APT.SC.WebApi.Controllers.Api.BI biSafeFinish.TEAM_ID = team.ID; biSafeFinish.TEAM_NAME = team.NAME; biSafeFinish.TEAM_CHARGE_USER = team.Nav_ChargePerson.NAME; - biSafeFinish.DEPARTMENT_NAME = team.Nav_Department.Nav_Parent.Nav_Parent.NAME; + biSafeFinish.DEPARTMENT_NAME = team?.Nav_Department?.Nav_Parent?.Nav_Parent?.NAME; selectFilter.SelectField = new string[] { "ID", "PRE_MEETING_STATUS", "OVERTIME" }; var fo01a = GetEntities(t => t.TEAM_ID == team.ID && t.MEETING_TIME > filterTime[i], selectFilter); biSafeFinish.FO01_TOTAL = fo01a.Count(); diff --git a/APT.MicroApi/APT.PP.WebApi/Controllers/Api/FMController.cs b/APT.MicroApi/APT.PP.WebApi/Controllers/Api/FMController.cs index d8b6524..472e3d6 100644 --- a/APT.MicroApi/APT.PP.WebApi/Controllers/Api/FMController.cs +++ b/APT.MicroApi/APT.PP.WebApi/Controllers/Api/FMController.cs @@ -894,10 +894,13 @@ namespace APT.PP.WebApi.Controllers.Api.PP baseFilter.SelectField = new string[] { "ID", "IS_PUBLISH", "DEPARTMENT_ID", "CREATE_TIME", "IS_OVERTIME" }; //指定字段,包括导航属性 var jobInfos = GetEntities(i => i.CREATE_TIME >= startTime && i.IS_DELETED == false && i.DEPARTMENT_ID != null, baseFilter).ToList(); var jobIds = jobInfos.Select(t => t.ID).ToList(); - //baseFilter.SelectField = new string[] { "ID", "STATUS", "APPLY_DEPARTMENT_ID", "CREATE_TIME", "IS_OVERTIME" }; - //var fireJobIds = GetEntities(i => i.CREATE_TIME >= startTime && i.IS_DELETED == false && i.APPLY_DEPARTMENT_ID != null, baseFilter).Select(t => t.ID).ToList(); + baseFilter.SelectField = new string[] { "ID", "STATUS", "APPLY_DEPARTMENT_ID", "CREATE_TIME", "IS_OVERTIME" }; + var fireJobInfos = GetEntities(i => i.CREATE_TIME >= startTime && i.IS_DELETED == false && i.APPLY_DEPARTMENT_ID != null, baseFilter).ToList(); + var fireJobIds = fireJobInfos.Select(t => t.ID).ToList(); + jobIds.AddRange(fireJobIds); baseFilter.SelectField = new string[] { "ID", "NOTICE_STATUS", "CREATE_TIME", "SOURCE_DATA_ID" }; //指定字段,包括导航属性 var tasks = this.GetEntities(t => t.IS_DELETED == false && t.CREATE_TIME >= startTime && t.NOTICE_STATUS == 2 && jobIds.Contains((Guid)t.SOURCE_DATA_ID), baseFilter).ToList(); + List jobs = new List(); foreach (var item in jobInfos) { var task = tasks.FirstOrDefault(t => t.SOURCE_DATA_ID == item.ID); @@ -905,11 +908,31 @@ namespace APT.PP.WebApi.Controllers.Api.PP item.IS_OVERTIME = 0; else item.IS_OVERTIME = 1; + JobInfo job = new JobInfo(); + job.CREATE_TIME = item.CREATE_TIME; + job.IS_OVERTIME = item.IS_OVERTIME; + job.DEPARTMENT_ID = item.DEPARTMENT_ID; + job.IS_PUBLISH = item.IS_PUBLISH; + jobs.Add(job); + } + foreach (var item in fireJobInfos) + { + var task = tasks.FirstOrDefault(t => t.SOURCE_DATA_ID == item.ID); + if (task == null) + item.IS_OVERTIME = 0; + else + item.IS_OVERTIME = 1; + JobInfo job = new JobInfo(); + job.CREATE_TIME = item.CREATE_TIME; + job.IS_OVERTIME = item.IS_OVERTIME; + job.DEPARTMENT_ID = item.APPLY_DEPARTMENT_ID; + job.IS_PUBLISH = item.STATUS== PFStandardStatus.Archived?5:0; + jobs.Add(job); } for (DateTime i = startTime; i <= endTime; i = i.AddMonths(i.Month - i.Month + 1).AddDays(1 - i.Day)) { 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 = jobInfos.Where(t => t.CREATE_TIME >= i && t.CREATE_TIME <= monthEnd).ToList(); + var preTemp = jobs.Where(t => t.CREATE_TIME >= i && t.CREATE_TIME <= monthEnd).ToList(); var results = preTemp.GroupBy(m => m.DEPARTMENT_ID). Select(group => new { @@ -2901,6 +2924,13 @@ namespace APT.PP.WebApi.Controllers.Api.PP public string DEPARTMENT_NAME { get; set; } public Guid ContentID { get; set; } } + public class JobInfo + { + public Guid? DEPARTMENT_ID { get; set; } + public int IS_PUBLISH { get; set; } + public int IS_OVERTIME { get; set; } + public DateTime? CREATE_TIME { get; set; } + } } 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 2161bf2..9714447 100644 --- a/APT.MicroApi/APT.SC.WebApi/Controllers/Api/BIController/BIHomeController.cs +++ b/APT.MicroApi/APT.SC.WebApi/Controllers/Api/BIController/BIHomeController.cs @@ -536,9 +536,8 @@ namespace APT.SC.WebApi.Controllers.Api.BI return result; }); - } - - + } + /// /// 查询所有数据 /// @@ -551,11 +550,11 @@ namespace APT.SC.WebApi.Controllers.Api.BI { //按生产单元 获取数据 HomeResult result = new HomeResult(); - if (string.IsNullOrEmpty(filter.Keyword)) - { - return result; - } - int MineType = int.Parse(filter.Keyword); + //if (string.IsNullOrEmpty(filter.Keyword)) + //{ + // return result; + //} + //int MineType = int.Parse(filter.Keyword); //根据 日期 yyyyMMddHH MineType 获取信息 Redis信息 @@ -580,7 +579,7 @@ namespace APT.SC.WebApi.Controllers.Api.BI { foreach (var item in listHomeRedis) { - if (item.MineType == MineType) + //if (item.MineType == MineType) { if (dtNow.ToString("yyyyMMddHH") == item.yyyyMMddHH) { @@ -608,9 +607,9 @@ namespace APT.SC.WebApi.Controllers.Api.BI //BaseFilter filterD = new BaseFilter(); //filterD.SelectField = new List { "ID", "NAME", "DEPARTMENT_TYPE", "PARENT_ID", "MineType" }; - //var listDep1MineType = GetEntities(t => t.MineType.HasValue && t.MineType == MineType && t.DEPARTMENT_TYPE == 10, filterD, null);//部门就可以了 因为都相向 统计了 + //var listDep1MineType = GetEntities(t => t.MineType.HasValue && t.MineType == MineType && t.DEPARTMENT_TYPE == 10, filterD, null); - var listDep1MineType = GetEntities(t => t.MineType.HasValue && t.MineType == MineType && t.DEPARTMENT_TYPE == 10, null, null);//部门就可以了 因为都相向 统计了 + var listDep1MineType = GetEntities(t =>t.CATEGORY == BaseData.Domain.Enums.FMCATEGORY.ACTURE && t.ENABLE_STATUS == 0, null, null); #endregion @@ -1169,7 +1168,7 @@ namespace APT.SC.WebApi.Controllers.Api.BI List ListSafeCheckYearMonthT = BIHomeService.GetHomeCheckCountMonth(filter.OrgId, listDep.ToList(), befoMonth).ToList(); var listCheckTypeIDT = ListSafeCheckYearMonthT.Select(e => e.SOURCEID).Distinct().ToList(); - var enums = GetEntity(e => e.VALUE == MineType && e.CODE == "BSMineTypeEnum"); + var enums = GetEntity(e => e.CODE == "BSMineTypeEnum"); if (enums != null) { var listTypeMine = GetEntities(e => e.MINETYPE_ENUMS_ID == enums.ID, null, null); @@ -1276,7 +1275,7 @@ namespace APT.SC.WebApi.Controllers.Api.BI listHomeRedis.Add(new HomeResultMineType() { - MineType = MineType, + //MineType = MineType, yyyyMMddHH = dtNow.ToString("yyyyMMddHH"), result = result }); @@ -1291,6 +1290,7 @@ namespace APT.SC.WebApi.Controllers.Api.BI return result; }); } + /// /// 首页 安全检查次数统计明细(BI054HomeDetail) 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 b6a0f58..62e2428 100644 --- a/APT.MicroApi/APT.SC.WebApi/Controllers/Api/BIController/BIStatiscialAnalysisController.cs +++ b/APT.MicroApi/APT.SC.WebApi/Controllers/Api/BIController/BIStatiscialAnalysisController.cs @@ -9860,7 +9860,7 @@ namespace APT.SC.WebApi.Controllers.Api.BIController { return SafeExecute>(() => { - var departmentType = 3; + var departmentType = 5; List completionLists = new List(); List completionSorts = new List(); if (string.IsNullOrEmpty(filter.Keyword)) @@ -9872,7 +9872,7 @@ namespace APT.SC.WebApi.Controllers.Api.BIController departmentType = departmentInfo.DEPARTMENT_TYPE; var orgId = APT.Infrastructure.Api.AppContext.CurrentSession.OrgId.Value; var completions = GetEntities(t => !t.IS_DELETED, new BaseFilter(orgId)).ToList(); - if (departmentType == 3) + if (departmentType == 5) { completionLists = completions.Where(m => m.SHOP_DEPARTMENT_ID != null).GroupBy(t => new { t.SHOP_DEPARTMENT_ID, t.SHOP_DEPARTMENT_NAME }).Select(group => new GroupbyDepartmentId { @@ -9884,7 +9884,7 @@ namespace APT.SC.WebApi.Controllers.Api.BIController }).ToList(); } - if (departmentType == 0) + if (departmentType == 10) { completionLists = completions.Where(m => m.SHOP_DEPARTMENT_ID != null && m.DEPARTMENT_ID == Guid.Parse(filter.Keyword.ToString())).GroupBy(t => new { t.SHOP_DEPARTMENT_ID, t.SHOP_DEPARTMENT_NAME }).Select(group => new GroupbyDepartmentId { @@ -9895,7 +9895,7 @@ namespace APT.SC.WebApi.Controllers.Api.BIController TotalCount = group.Where(i => i.SHOP_DEPARTMENT_ID == group.Key.SHOP_DEPARTMENT_ID).Sum(m => m.TOTAL_COUNT), }).ToList(); } - if (departmentType == 1) + if (departmentType == 15) { completionLists = completions.Where(m => m.TEAM_ID != null && m.SHOP_DEPARTMENT_ID == Guid.Parse(filter.Keyword.ToString())).GroupBy(t => new { t.TEAM_ID, t.TEAM_NAME }).Select(group => new GroupbyDepartmentId { @@ -9906,7 +9906,7 @@ namespace APT.SC.WebApi.Controllers.Api.BIController TotalCount = group.Where(i => i.TEAM_ID == group.Key.TEAM_ID).Sum(m => m.TOTAL_COUNT), }).ToList(); } - if (departmentType == 2) + if (departmentType == 20) { completionLists = completions.Where(m => m.TEAM_ID != null && m.SHOP_DEPARTMENT_ID == departmentInfo.PARENT_ID).GroupBy(t => new { t.TEAM_ID, t.TEAM_NAME }).Select(group => new GroupbyDepartmentId { @@ -9967,17 +9967,17 @@ namespace APT.SC.WebApi.Controllers.Api.BIController { var orgId = APT.Infrastructure.Api.AppContext.CurrentSession.OrgId.Value; List completionSorts = new List(); - if (string.IsNullOrEmpty(filter.Keyword)) - return completionSorts; - int MineType = 0; - try - { - MineType = int.Parse(filter.Keyword.ToString()); - } - catch - { - MineType = 30; - } + //if (string.IsNullOrEmpty(filter.Keyword)) + // return completionSorts; + //int MineType = 0; + //try + //{ + // MineType = int.Parse(filter.Keyword.ToString()); + //} + //catch + //{ + // MineType = 30; + //} #region 判断 从Redis中获取数据 有就直接返回到前端 没有就按原来的进行搜索 最后再判断存入Redis中 var redisCode = string.Format(RedisCacheKey.HomeJobCompletion, APT.Infrastructure.Api.AppContext.CurrentSession.OrgId); @@ -9995,7 +9995,7 @@ namespace APT.SC.WebApi.Controllers.Api.BIController { foreach (var item in listHomeRedis) { - if (item.MineType == MineType) + //if (item.MineType == MineType) { if (dtNow.ToString("yyyyMMddHH") == item.yyyyMMddHH) { @@ -10022,7 +10022,7 @@ namespace APT.SC.WebApi.Controllers.Api.BIController var departmentIds = new List(); List completionLists = new List(); - var departmentInfo = this.GetEntities(t => t.MineType == int.Parse(filter.Keyword.ToString()) && t.ENABLE_STATUS == 0, new BaseFilter(orgId)); + var departmentInfo = this.GetEntities(t => t.ENABLE_STATUS == 0, new BaseFilter(orgId)); if (departmentInfo == null || !departmentInfo.Any()) return completionSorts; else @@ -10110,7 +10110,7 @@ namespace APT.SC.WebApi.Controllers.Api.BIController listHomeRedis.Add(new HomeResultMineType() { - MineType = MineType, + //MineType = MineType, yyyyMMddHH = dtNow.ToString("yyyyMMddHH"), result = completionSorts1 });