using APT.Infrastructure.Core; using System; using APT.Infrastructure.Api; using APT.MS.Domain.Enums; using APT.BaseData.Domain.IServices.BI; 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 System.Linq; namespace APT.BaseData.Services.Services.BI { public partial class BIHomeService : CommonService, IBIHomeService { public BIHomeService(IRepository repository) : base(repository) { } /// /// 查询首页的隐患原因 /// /// /// 查询部门 /// public IEnumerable GetHomeReasons(Guid? OrgID, List listDep) { if (listDep == null || listDep.Count < 1) { return new List(); } int year = DateTime.Now.Year; BaseFilter filter = new BaseFilter(); filter.OrgId = OrgID; filter.Order = DbOrder.ASC; filter.Sort = "NUM"; List listDepID = listDep.Select(e => e.ID).ToList(); var listModelReason = GetEntities(e => !e.IS_DELETED, filter); Expression> expression = e => e.YEAR == year && e.TYPE == BSCaculateType.RiskReason; 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.Order = DbOrder.ASC; //filterR.Sort = "NUMD"; filterR.Orders.Add(new DataOrder() { Field = "NUMD", Order = DbOrder.ASC }); filterR.Orders.Add(new DataOrder() { Field = "NUMS", Order = DbOrder.ASC }); IEnumerable listReason = GetOrderEntities(expression, filterR); foreach (var item in listReason) { item.SOURCENAME = listModelReason.First(e => e.ID == item.SOURCEID).NAME; item.DEPARTMENTNAME = listDep.First(e => e.ID == item.DEPARTMENT_ID).NAME; } return listReason; } /// /// 查询首页的隐患整改情况 月度 /// /// /// 查询部门 /// 提前月份 /// public IEnumerable GetHomeCorrect(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(); 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.Order = DbOrder.ASC; //filterR.Sort = "NUMD"; 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); foreach (var item in listReason) { item.SOURCENAME = ((BSCorrectType)item.SOURCEVAL).GetDescription(); item.DEPARTMENTNAME = listDep.First(e => e.ID == item.DEPARTMENT_ID).NAME; } return listReason; } /// /// 查询首页的隐患整改情况 年度 方法使用前提 先执行一下12个月的 整改情况 /// /// /// 查询部门 /// 提前月份 /// public IEnumerable GetHomeCorrectYear(Guid? OrgID, List listDep, int MonthBefo = 0) { if (listDep == null || listDep.Count < 1) { return new List(); } int year = DateTime.Now.Year; List listDepID = listDep.Select(e => e.ID).ToList(); Expression> expression = e => e.TYPE == BSCaculateType.RiskCorrect && e.SOURCEVAL != 20; if (MonthBefo == 0) { expression = expression.And(e => e.YEAR == year); } else { DateTime dtMin = DateTime.Now.AddMonths(-1 * MonthBefo); 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.Order = DbOrder.ASC; //filterR.Sort = "NUMD"; filterR.Orders.Add(new DataOrder() { Field = "DEPARTMENT_ID", Order = DbOrder.ASC }); filterR.Orders.Add(new DataOrder() { Field = "SOURCEVAL", Order = DbOrder.ASC });// 直接按枚举值 排序 NUMS IEnumerable listReason = GetOrderEntities(expression, filterR); foreach (var item in listReason) { item.SOURCENAME = ((BSCorrectType)item.SOURCEVAL).GetDescription(); item.DEPARTMENTNAME = listDep.First(e => e.ID == item.DEPARTMENT_ID).NAME; } return listReason; } /// /// 安全检查 月度 检查类型 数量 /// /// /// 查询部门 /// 提前月份 /// public IEnumerable GetHomeCheckCountMonth(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(); Expression> expression = e => e.TYPE == BSCaculateType.SafeCheck; 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.Order = DbOrder.ASC; //filterR.Sort = "NUMD"; filterR.Orders.Add(new DataOrder() { Field = "DEPARTMENT_ID", Order = DbOrder.ASC }); filterR.Orders.Add(new DataOrder() { Field = "SOURCEID", Order = DbOrder.ASC });// 直接按枚举值 排序 NUMS filterR.Orders.Add(new DataOrder() { Field = "MONTH", Order = DbOrder.ASC });// 直接按枚举值 排序 NUMS IEnumerable listReason = GetOrderEntities(expression, filterR); //foreach (var item in listReason) //{ // //item.SOURCENAME = ((BSCorrectType)item.SOURCEVAL).GetDescription(); // item.DEPARTMENTNAME = listDep.First(e => e.ID == item.DEPARTMENT_ID).NAME; //} return listReason; } } }