From 1214395152601333cbb46d45f61b347afbd54505 Mon Sep 17 00:00:00 2001 From: wyw <571921741@qq.com> Date: Wed, 20 Mar 2024 17:35:08 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- APT.MS.Data/Mapping/T4/T4Map.cs | 6 + .../Entities/SC/MEETING/T_SC_MT_MEETING.cs | 7 + APT.MS.Domain/Enums/BS/BSEnums.cs | 197 ++- APT.MS.Domain/Enums/SC/SCEnmus.cs | 302 +++- .../APT.PP.WebApi/APT.PP.WebApi.csproj | 4 + .../Controllers/Api/FMController.cs | 1541 +++++++++-------- .../Controllers/Api/SCController.cs | 24 +- APT.MicroApi/APT.PP.WebApi/Program.cs | 21 +- .../Api/MTController/SCMTMeetingController.cs | 192 +- 9 files changed, 1481 insertions(+), 813 deletions(-) diff --git a/APT.MS.Data/Mapping/T4/T4Map.cs b/APT.MS.Data/Mapping/T4/T4Map.cs index f60a1b6..c91278a 100644 --- a/APT.MS.Data/Mapping/T4/T4Map.cs +++ b/APT.MS.Data/Mapping/T4/T4Map.cs @@ -210,6 +210,7 @@ builder.Property(t => t.DEMAND).HasMaxLength(500); builder.Ignore(t => t.QUESTION_LEVEL_SHOW); builder.Ignore(t => t.Nav_Main); builder.Ignore(t => t.SERIOUS_RISK); +builder.Ignore(t => t.LastDateSystem); } } #endregion @@ -380,6 +381,10 @@ builder.HasOne(t => t.Nav_CheckProjectProjectCategory).WithMany().HasForeignKey( builder.HasOne(t => t.Nav_CheckProjectCategory).WithMany().HasForeignKey(t => t.CHECK_PROJECT_CATEGORY_ID).OnDelete(DeleteBehavior.Restrict); builder.Property(t => t.CHECKCONTENT).HasMaxLength(500); builder.HasOne(t => t.Nav_Contents).WithMany().HasForeignKey(t => t.CHECK_CONTENTS_ID).OnDelete(DeleteBehavior.Restrict); +builder.Property(t => t.DESCRIBE).HasMaxLength(500); +builder.Ignore(t => t.CHECK_TYPE_ID); +builder.Ignore(t => t.CHECK_TYPE_LEVEL_ID); +builder.Ignore(t => t.SUBMIT_STATUS); } } #endregion @@ -4124,6 +4129,7 @@ builder.Ignore(t => t.STATUSSHOW); builder.HasOne(t => t.Nav_Approve).WithMany().HasForeignKey(t => t.APPROVE_ID).OnDelete(DeleteBehavior.Restrict); builder.HasOne(t => t.Nav_Enums).WithMany().HasForeignKey(t => t.CheckLevel_ENUMS_ID).OnDelete(DeleteBehavior.Restrict); builder.Ignore(t => t.IS_OVERTIME); +builder.Ignore(t => t.CONTENT32); } } #endregion diff --git a/APT.MS.Domain/Entities/SC/MEETING/T_SC_MT_MEETING.cs b/APT.MS.Domain/Entities/SC/MEETING/T_SC_MT_MEETING.cs index 81d0c63..5855a3c 100644 --- a/APT.MS.Domain/Entities/SC/MEETING/T_SC_MT_MEETING.cs +++ b/APT.MS.Domain/Entities/SC/MEETING/T_SC_MT_MEETING.cs @@ -305,5 +305,12 @@ namespace APT.MS.Domain.Entities.SC /// [Description("是否已经发送短信")] public bool IS_SENDED { get; set; } + + /// + /// 会议内容(普通会议显示再此,为了显示做关联) + /// + [Description("会议内容")] + [DataFieldIngore] + public string CONTENT32 { get; set; } } } \ No newline at end of file diff --git a/APT.MS.Domain/Enums/BS/BSEnums.cs b/APT.MS.Domain/Enums/BS/BSEnums.cs index dbbd20c..5e86536 100644 --- a/APT.MS.Domain/Enums/BS/BSEnums.cs +++ b/APT.MS.Domain/Enums/BS/BSEnums.cs @@ -217,7 +217,7 @@ namespace APT.MS.Domain.Enums UserAdd = 20, /// - /// 危险源辨识触发 30 + /// 危险源辨识触发 30 ???ToHM062_HM102 /// [Description("危险源辨识触发")] HazardsAdd = 30, @@ -246,8 +246,203 @@ namespace APT.MS.Domain.Enums [Description("标准化系统评审意见")] ToOG034Edit = 70, + /// + /// 安全生产方针征集表 72 + /// + [Description("安全生产方针征集表")] + ToPT014 = 72, + + /// + /// 认可与奖励上报表 74 + /// + [Description("认可与奖励上报表")] + ToOG028 = 74, + + /// + /// 风险评价小组成立 76 + /// + [Description("风险评价小组成立")] + ToHM134 = 76, + + //设备设施维修计划讨论 + //设备设施维修工作方案讨论 + //安全投入论证 + + /// + /// 应急机构成立及人员任命 84 + /// + [Description("应急机构成立及人员任命")] + ToOG010 = 84, + + //成立矿山救护队 + + ///// + ///// 潜在紧急事件讨论 88 + ///// + //[Description("潜在紧急事件讨论")] + //ToCM018 = 88, + + /// + /// 应急能力评估 90 + /// + [Description("应急能力评估")] + ToCM026 = 90, + + /// + /// 应急演练计划讨论 92 + /// + [Description("应急演练计划讨论")] + ToCM002 = 92, + + //应急演练方案讨论 + + /// + /// 事故事件上报表 96 + /// + [Description("事故事件上报表")] + ToAE006 = 96, + + /// + /// 事故调查小组成员表 98 + /// + [Description("事故调查小组成员表")] + ToAE008 = 98, + + /// + /// 事故事件调查结果填报 99 + /// + [Description("事故事件调查结果填报")] + ToAE010 = 99, + + /// + /// 勘察记录表 100 + /// + [Description("勘察记录表")] + ToAE018 = 100, + + //事故事件统计分析 + //事故事件回顾 + + /// + /// 安全检查任务制定 106 + /// + [Description("安全检查任务制定")] + ToBS032 = 106, + + /// + /// 《危险源/风险辨识任务》和《职业危害辨识任务》 108 + /// + [Description("《危险源/风险辨识任务》和《职业危害辨识任务》")] + ToHM062_HM102 = 108, + + /// + /// 触发今日提醒:消息类型:文件上传;消息内容:请上传下年度生产作业计划至文件库 110 + /// + [Description("触发今日提醒:消息类型:文件上传;消息内容:请上传下年度生产作业计划至文件库")] + ToNotice = 110, + + /// + /// 变化识别评估表 112 + /// + [Description("变化识别评估表")] + ToPR023 = 112, + + /// + /// 变化识别评估表 113 + /// + [Description("变化识别评估表")] + PR023ToMeet = 113, + + /// + /// 变化识别评估表 112 + /// + [Description("安全生产法律法规更新与融入")] + ToLR010 = 120, + + /// + /// 员工意见征集表 112 + /// + [Description("员工意见征集表")] + ToOG060 = 122, + + /// + /// 安全标准化内部评价计划 114 + /// + [Description("安全标准化内部评价计划")] + ToPE027 = 124, + + //尾矿-勘察文件评审 + //尾矿-安全评价文件评审 + + /// + /// 回采计划 130 + /// + [Description("回采计划")] + ToTL014 = 130, + + //尾矿-回采安全预评价文件评审 + //尾矿-闭库安全现状评价文件评审 + /// + /// 作业任务识别 136 + /// + [Description("作业任务识别")] + ToHM104 = 136, + + /// + /// 安全生产责任制签订 138 + /// + [Description("安全生产责任制签订")] + ToOG002 = 138, + + //安全评价文件审核 + + /// + /// 内部设计文件审核表 142 + /// + [Description("内部设计文件审核表")] + ToPR002 = 142, + + /// + /// 应急预案修订记录 144 + /// + [Description("应急预案修订记录")] + ToSC067 = 144, + + //勘察文件审核(尾矿) + //勘察文件审核(露天矿山) + + /// + /// 内部设计文件审核表 150 + /// + [Description("内部设计文件审核表")] + ToPR002_2 = 150, + + //回采勘察文件审核(尾矿) + //回采安全预评价文件审核(尾矿) + + /// + /// 内部设计文件审核表 156 + /// + [Description("内部设计文件审核表")] + ToPR002_3 = 156, + + //闭库安全现状评价文件审核(尾矿) + + /// + /// 内部设计文件审核表 156 + /// + [Description("内部设计文件审核表")] + ToPR002_4 = 160, + + //所有的制度文件审核会 + + /// + /// 文件审核表 170 + /// + [Description("文件审核表")] + ToWJSH =170, } /// diff --git a/APT.MS.Domain/Enums/SC/SCEnmus.cs b/APT.MS.Domain/Enums/SC/SCEnmus.cs index c6bcfbb..064e123 100644 --- a/APT.MS.Domain/Enums/SC/SCEnmus.cs +++ b/APT.MS.Domain/Enums/SC/SCEnmus.cs @@ -386,6 +386,9 @@ namespace APT.MS.Domain.Enums /// /// 会议关联文本 各自添加 各自处理 + /// 12-52 普通会议 + /// 60-80 文件评审会 + /// 90-112 文件审核会 /// public enum ConnToOther { @@ -394,6 +397,272 @@ namespace APT.MS.Domain.Enums /// [Description("安全生产标准化系统评审")] ToOG034EditName = 10, + + + /// + /// 安全生产方针讨论 12 + /// + [Description("安全生产方针讨论")] + 安全生产方针讨论 = 12, + + /// + /// 认可与奖励评价 14 + /// + [Description("认可与奖励评价")] + 认可与奖励评价 = 14, + + /// + /// 风险评价小组成立 16 + /// + [Description("风险评价小组成立")] + 风险评价小组成立 = 16, + + /// + /// 设备设施维修计划讨论 18 + /// + [Description("设备设施维修计划讨论")] + 设备设施维修计划讨论 = 18, + + /// + /// 设备设施维修工作方案讨论 20 + /// + [Description("设备设施维修工作方案讨论")] + 设备设施维修工作方案讨论 = 20, + + /// + /// 安全投入论证 22 + /// + [Description("安全投入论证")] + 安全投入论证 = 22, + + /// + /// 应急机构成立及人员任命 24 + /// + [Description("应急机构成立及人员任命")] + 应急机构成立及人员任命 = 24, + + /// + /// 成立矿山救护队 26 + /// + [Description("成立矿山救护队")] + 成立矿山救护队 = 26, + + /// + /// 潜在紧急事件讨论 28 + /// + [Description("潜在紧急事件讨论")] + 潜在紧急事件讨论 = 28, + + /// + /// 应急能力评估 30 + /// + [Description("应急能力评估")] + 应急能力评估 = 30, + + /// + /// 应急演练计划讨论 32 + /// + [Description("应急演练计划讨论")] + 应急演练计划讨论 = 32, + + /// + /// 应急演练方案讨论 34 + /// + [Description("应急演练方案讨论")] + 应急演练方案讨论 = 34, + + /// + /// 事故调查小组成立 36 + /// + [Description("事故调查小组成立")] + 事故调查小组成立 = 36, + + /// + /// 事故调查讨论 38 + /// + [Description("事故调查讨论")] + 事故调查讨论 = 38, + + /// + /// 调查报告讨论 40 + /// + [Description("调查报告讨论")] + 调查报告讨论 = 40, + + /// + /// 事故事件统计分析 42 + /// + [Description("事故事件统计分析")] + 事故事件统计分析 = 42, + + /// + /// 事故事件回顾 44 + /// + [Description("事故事件回顾")] + 事故事件回顾 = 44, + + /// + /// 安全检查表的回顾与更新 46 + /// + [Description("安全检查表的回顾与更新")] + 安全检查表的回顾与更新 = 46, + + /// + /// 危险源辨识与风险评价回顾 48 + /// + [Description("危险源辨识与风险评价回顾")] + 危险源辨识与风险评价回顾 = 48, + + /// + /// 年度生产作业计划讨论会 50 + /// + [Description("年度生产作业计划讨论会")] + 年度生产作业计划讨论会 = 50, + + /// + /// 变化管理讨论 52 + /// + [Description("变化管理讨论")] + 变化管理讨论 = 52, + + /// + /// 法律法规更新评审会 60 + /// + [Description("法律法规更新评审会")] + 法律法规更新评审会 = 60, + + /// + /// 合理化建议评审会 62 + /// + [Description("合理化建议评审会")] + 合理化建议评审会 = 62, + + /// + /// 安全标准化评审会 64 + /// + [Description("安全标准化评审会")] + 安全标准化评审会 = 64, + + /// + /// 尾矿-勘察文件评审 66 + /// + [Description("尾矿-勘察文件评审")] + 尾矿勘察文件评审 = 66, + + /// + /// 尾矿-安全评价文件评审 68 + /// + [Description("尾矿-安全评价文件评审")] + 尾矿安全评价文件评审 = 68, + + /// + /// 回采勘察文件评审 70 + /// + [Description("回采勘察文件评审")] + 回采勘察文件评审 = 70, + + /// + /// 尾矿-回采安全预评价文件评审 72 + /// + [Description("尾矿-回采安全预评价文件评审")] + 尾矿回采安全预评价文件评审 = 72, + + /// + /// 尾矿-闭库安全现状评价文件评审 74 + /// + [Description("尾矿-闭库安全现状评价文件评审")] + 尾矿闭库安全现状评价文件评审 = 74, + + /// + /// 许可作业范围评审会 76 + /// + [Description("许可作业范围评审会")] + 许可作业范围评审会 = 76, + + /// + /// 安全生产责任制评审会 78 + /// + [Description("安全生产责任制评审会")] + 安全生产责任制评审会 = 78, + + /// + /// 尾矿-防震技术论证报告评审会 80 + /// + [Description("尾矿-防震技术论证报告评审会")] + 尾矿防震技术论证报告评审会 = 80, + + + /// + /// 安全评价文件审核 90 + /// + [Description("安全评价文件审核")] + 安全评价文件审核 = 90, + + /// + /// 设计文件审核(露天矿山/选厂) 92 + /// + [Description("设计文件审核(露天矿山/选厂)")] + 设计文件审核_露天矿山选厂 = 92, + + /// + /// 应急预案审核 94 + /// + [Description("应急预案审核")] + 应急预案审核 = 94, + + /// + /// 勘察文件审核(尾矿) 96 + /// + [Description("勘察文件审核(尾矿)")] + 勘察文件审核_尾矿 = 96, + + /// + /// 勘察文件审核(露天矿山) 98 + /// + [Description("勘察文件审核(露天矿山)")] + 勘察文件审核_露天矿山 = 98, + + /// + /// 设计文件审核(尾矿) 100 + /// + [Description("设计文件审核(尾矿)")] + 设计文件审核_尾矿 = 100, + + /// + /// 回采勘察文件审核(尾矿) 102 + /// + [Description("回采勘察文件审核(尾矿)")] + 回采勘察文件审核_尾矿 = 102, + + /// + /// 回采安全预评价文件审核(尾矿) 104 + /// + [Description("回采安全预评价文件审核(尾矿)")] + 回采安全预评价文件审核_尾矿 = 104, + + /// + /// 回采设计文件审核(尾矿) 106 + /// + [Description("回采设计文件审核(尾矿)")] + 回采设计文件审核_尾矿 = 106, + + /// + /// 闭库安全现状评价文件审核(尾矿) 108 + /// + [Description("闭库安全现状评价文件审核(尾矿)")] + 闭库安全现状评价文件审核_尾矿 = 108, + + /// + /// 闭库安全现状评价文件审核(尾矿) 110 + /// + [Description("闭库安全现状评价文件审核(尾矿)")] + 闭库设计文件审核_尾矿 = 110, + + /// + /// 所有的制度文件审核会 112 + /// + [Description("所有的制度文件审核会")] + 所有的制度文件审核会 = 112, } #endregion @@ -621,10 +890,39 @@ namespace APT.MS.Domain.Enums /// public enum SOURCETYPE { + ///// + ///// 事故事件上报 5 + ///// + //[Description("事故事件上报")] + /// - /// 事故事件上报 5 + /// 事故调查小组成员 5 + /// + [Description("事故调查小组成员")] + AE008ToMeet = 5, + + /// + /// 事故事件上报 10 /// [Description("事故事件上报")] - EventReport = 5, + AE006ToMeet = 10, + + /// + /// 勘察记录表 15 + /// + [Description("勘察记录表")] + AE018ToMeet = 15, + + /// + /// 变化识别评估 20 + /// + [Description("变化识别评估")] + PR023ToMeet = 20, + + /// + /// 安全生产方针征集表 25 + /// + [Description("安全生产方针征集表")] + PT014ToMeet =25, } } diff --git a/APT.MicroApi/APT.PP.WebApi/APT.PP.WebApi.csproj b/APT.MicroApi/APT.PP.WebApi/APT.PP.WebApi.csproj index 25c74dd..e6975d1 100644 --- a/APT.MicroApi/APT.PP.WebApi/APT.PP.WebApi.csproj +++ b/APT.MicroApi/APT.PP.WebApi/APT.PP.WebApi.csproj @@ -91,12 +91,16 @@ + + + + diff --git a/APT.MicroApi/APT.PP.WebApi/Controllers/Api/FMController.cs b/APT.MicroApi/APT.PP.WebApi/Controllers/Api/FMController.cs index 57b0a15..e987cd1 100644 --- a/APT.MicroApi/APT.PP.WebApi/Controllers/Api/FMController.cs +++ b/APT.MicroApi/APT.PP.WebApi/Controllers/Api/FMController.cs @@ -32,6 +32,7 @@ using MySqlX.XDevAPI.Common; using System.Threading.Tasks; using NPOI.SS.Formula.Functions; using APT.WebApi.Models; +using Microsoft.Extensions.Logging; namespace APT.PP.WebApi.Controllers.Api.PP { @@ -45,12 +46,14 @@ namespace APT.PP.WebApi.Controllers.Api.PP IFMNotificationTaskService NotificationTaskService { get; set; } IPFCodeRuleService CodeRuleService { get; set; } IFMNoticeService FMNoticeService { get; set; } + private readonly ILogger Logger; - public FMController(IFMNotificationTaskService notificationTaskService, IPFCodeRuleService codeRuleService, IFMNoticeService noticeService) + public FMController(IFMNotificationTaskService notificationTaskService, IPFCodeRuleService codeRuleService, IFMNoticeService noticeService, ILogger logger) { NotificationTaskService = notificationTaskService; this.CodeRuleService = codeRuleService; FMNoticeService = noticeService; + Logger = logger; } /// /// 完成情况统计 @@ -1498,525 +1501,542 @@ namespace APT.PP.WebApi.Controllers.Api.PP { return SafeExecute(() => { - int caculate = 6; - if (!string.IsNullOrEmpty(filter.Parameter1)) + try { + int caculate = 6; + if (!string.IsNullOrEmpty(filter.Parameter1)) + { + try + { + caculate = int.Parse(filter.Parameter1); //接收来自页面的参数 + } + catch + { + caculate = 6; + } + } + + DateTime dtMin = Convert.ToDateTime(DateTime.Now.AddMonths(-1 * (caculate - 1)).ToString("yyyy-MM-01 00:00:00")); + + BaseFilter filterD = new BaseFilter(); + filterD.SelectField = new List { "ID", "NAME", "DEPARTMENT_TYPE", "PARENT_ID" }; + IEnumerable listDep = null; try { - caculate = int.Parse(filter.Parameter1); //接收来自页面的参数 + //可能会报错 + listDep = GetEntities(e => !e.IS_DELETED && e.ENABLE_STATUS == 0, filterD, null); } - catch + catch { } + + if ((listDep == null || !listDep.Any())) { - caculate = 6; + return true; //如果 没有部门 或者 为设置隐患原因 一般不会这样 } - } - DateTime dtMin = Convert.ToDateTime(DateTime.Now.AddMonths(-1 * (caculate - 1)).ToString("yyyy-MM-01 00:00:00")); + //隐患已上报 统计 有没有处理 处理的及时性 + var dtSubmitContent = GetEntities(e => e.DEPARTMENT_ID.HasValue && e.CREATE_TIME.HasValue && e.CREATE_TIME.Value >= dtMin, null, null); - BaseFilter filterD = new BaseFilter(); - filterD.SelectField = new List { "ID", "NAME", "DEPARTMENT_TYPE", "PARENT_ID" }; - var listDep = GetEntities(e => !e.IS_DELETED && e.ENABLE_STATUS == 0, filterD, null); - - if ((listDep == null || !listDep.Any())) - { - return true; //如果 没有部门 或者 为设置隐患原因 一般不会这样 - } - - //隐患已上报 统计 有没有处理 处理的及时性 - var dtSubmitContent = GetEntities(e => e.DEPARTMENT_ID.HasValue && e.CREATE_TIME.HasValue && e.CREATE_TIME.Value >= dtMin, null, null); - - var listDetailID = dtSubmitContent.Where(e => e.SAFE_CHECK_DETAIL_ID.HasValue).Select(e => e.SAFE_CHECK_DETAIL_ID.Value); - Expression> expression = e => !e.IS_DELETED && e.CHECKRESULT.HasValue && e.CHECKRESULT.Value == 20 && e.CREATE_TIME.HasValue && e.CREATE_TIME.Value >= dtMin && e.DEPARTMENT_ID.HasValue; - if (listDetailID != null && listDetailID.Any()) - { - expression = expression.And(e => !listDetailID.Contains(e.ID)); - } - var listCheck = GetEntities(expression, null, null);//隐患未上报 也就是 未整改的 - - //string strCorrectType = DataHelper.EnumToString("BSCorrectType"); - //var listCorrectType = strCorrectType.Split(','); - //List listEnumVal = new List(); - //List listEnumName = new List(); - //foreach (var item in listCorrectType) - //{ - // var perEnum = item.Split(':'); - // if (perEnum != null && perEnum.Length == 2) - // { - // listEnumVal.Add(int.Parse(perEnum[0])); - // listEnumName.Add(perEnum[1]); - // } - //} - - //枚举动态无效 因为要根据枚举值 做搜索 - string CODE = DateTime.Now.ToString("yyyyMMddHHmmss"); - List listEnumVal = new List { 5, 10, 15, 20 }; - List listEnumName = new List { "按时整改隐患", "超期整改隐患", "未整改隐患", "隐患整改率" }; - - var taskSync = GetEntity(filter.Keyword);//跑批待办 - if (taskSync.SYNC_PARAM != null) - { - taskSync.SYNC_PARAM = ""; - } - taskSync.UPDATE_SUCCES_TIME = DateTime.Now; - - //组织 各隐患原因 数量 - - int perVal = 0; - int perCount = 0;//组织对应数量 - int perCountNot = 0;//组织对应数量 - int perSubCount = 0;//组织对应下级数量 - int depNum = 0; - // 子班组 + 本组织 - List listSubDepID = new List(); - DateTime MODIFY_TIME = DateTime.Now.AddMinutes(1); - int enumsCount = listEnumVal.Count; - BSCaculateType CaculateType = BSCaculateType.RiskCorrect; - var year = dtMin.Year; - //更新近期 信息 - var listResult = GetEntities(e => e.YEAR >= year && e.TYPE == CaculateType, null, null).ToList(); - - //List> listDicDate = new List>(); - List listYear = new List(); - List listMonth = new List(); - List listDtMin = new List(); - DateTime dtTemp = DateTime.Now; - for (int i = 0; i < caculate; i++) - { - dtTemp = dtMin.AddMonths(i); - listYear.Add(dtTemp.Year); - listMonth.Add(dtTemp.Month); - listDtMin.Add(dtTemp); - } - - DateTime dtPerMin = DateTime.Now; - DateTime dtPerMax = DateTime.Now; - - //班组 - depNum = 0; - var depB = listDep.Where(e => e.DEPARTMENT_TYPE == 2).OrderBy(e => e.NUM); - foreach (var itemD in depB) - { - depNum++; - for (int i = 0; i < enumsCount; i++)//listEnumVal.Count; + var listDetailID = dtSubmitContent.Where(e => e.SAFE_CHECK_DETAIL_ID.HasValue).Select(e => e.SAFE_CHECK_DETAIL_ID.Value); + Expression> expression = e => !e.IS_DELETED && e.CHECKRESULT.HasValue && e.CHECKRESULT.Value == 20 && e.CREATE_TIME.HasValue && e.CREATE_TIME.Value >= dtMin && e.DEPARTMENT_ID.HasValue; + if (listDetailID != null && listDetailID.Any()) { - perVal = listEnumVal[i]; //{ 5, 10, 15, 20 }; { "按时整改隐患", "超期整改隐患", "未整改隐患", "隐患整改率" }; - switch (perVal) - { - case 5: - for (int j = 0; j < caculate; j++) - { - var perME = listResult.FirstOrDefault(e => e.DEPARTMENT_ID == itemD.ID && e.SOURCEVAL == perVal && e.YEAR == listYear[j] && e.MONTH == listMonth[j]); - if (perME == null) - { - perME = GetRiskReason(itemD.DEPARTMENT_TYPE, listYear[j], itemD.ID, Guid.Empty, 1, filter.OrgId, perVal, listMonth[j], CaculateType);//如果没有 就新建对象 - listResult.Add(perME);//地址引用 应该是支持 - } - perCount = dtSubmitContent.Where(e => e.ISFINISHINTTIME.HasValue && e.ISFINISHINTTIME.Value && e.DEPARTMENT_ID.Value == itemD.ID && e.CREATE_TIME.HasValue && e.CREATE_TIME.Value.Year == listYear[j] && e.CREATE_TIME.Value.Month == listMonth[j]).Count();//某组织 年 月 按时整改隐患 - perME.DEPARTMENT_TYPE = (FMDepartmentType)itemD.DEPARTMENT_TYPE; - perME.NUMD = depNum; - perME.COUNT = perCount; - perME.CODE = CODE; - } - break; - case 10: - for (int j = 0; j < caculate; j++) - { - var perME = listResult.FirstOrDefault(e => e.DEPARTMENT_ID == itemD.ID && e.SOURCEVAL == perVal && e.YEAR == listYear[j] && e.MONTH == listMonth[j]); - if (perME == null) - { - perME = GetRiskReason(2, listYear[j], itemD.ID, Guid.Empty, 2, filter.OrgId, perVal, listMonth[j], CaculateType);//如果没有 就新建对象 - listResult.Add(perME);//地址引用 应该是支持 - } - perCount = dtSubmitContent.Where(e => e.ISFINISHINTTIME.HasValue && !e.ISFINISHINTTIME.Value && e.DEPARTMENT_ID.Value == itemD.ID && e.CREATE_TIME.HasValue && e.CREATE_TIME.Value.Year == listYear[j] && e.CREATE_TIME.Value.Month == listMonth[j]).Count();//某组织 年 月 按时整改隐患 - perME.DEPARTMENT_TYPE = FMDepartmentType.班组; - perME.NUMD = depNum; - perME.COUNT = perCount; - perME.CODE = CODE; - } - break; - case 15: - for (int j = 0; j < caculate; j++) - { - var perME = listResult.FirstOrDefault(e => e.DEPARTMENT_ID == itemD.ID && e.SOURCEVAL == perVal && e.YEAR == listYear[j] && e.MONTH == listMonth[j]); - if (perME == null) - { - perME = GetRiskReason(2, listYear[j], itemD.ID, Guid.Empty, 3, filter.OrgId, perVal, listMonth[j], CaculateType);//如果没有 就新建对象 - listResult.Add(perME);//地址引用 应该是支持 - } - perCount = dtSubmitContent.Where(e => !e.ISFINISHINTTIME.HasValue && e.DEPARTMENT_ID.Value == itemD.ID && e.CREATE_TIME.HasValue && e.CREATE_TIME.Value.Year == listYear[j] && e.CREATE_TIME.Value.Month == listMonth[j]).Count();//某组织 年 月 按时整改隐患 - perCountNot = 0; - if (listCheck != null && listCheck.Any()) - { - perCountNot = listCheck.Where(e => !e.IS_DELETED && e.DEPARTMENT_ID.HasValue && e.DEPARTMENT_ID.Value == itemD.ID && e.CREATE_TIME.HasValue && e.CREATE_TIME.Value.Year == listYear[j] && e.CREATE_TIME.Value.Month == listMonth[j]).Count(); - } - - perME.DEPARTMENT_TYPE = FMDepartmentType.班组; - perME.NUMD = depNum; - perME.COUNT = perCount + perCountNot; - perME.CODE = CODE; - } - break; - case 20://整改率 后续统一计算 - break; - default: - break; - } + expression = expression.And(e => !listDetailID.Contains(e.ID)); } - } + var listCheck = GetEntities(expression, null, null);//隐患未上报 也就是 未整改的 - //车间 - depNum = 0; - var depC = listDep.Where(e => e.DEPARTMENT_TYPE == 1).OrderBy(e => e.NUM); - foreach (var itemD in depC) - { - depNum++; - listSubDepID = listDep.Where(e => e.PARENT_ID.HasValue && e.PARENT_ID.Value == itemD.ID).Select(e => e.ID).ToList(); - for (int i = 0; i < enumsCount; i++)//listEnumVal.Count; + //string strCorrectType = DataHelper.EnumToString("BSCorrectType"); + //var listCorrectType = strCorrectType.Split(','); + //List listEnumVal = new List(); + //List listEnumName = new List(); + //foreach (var item in listCorrectType) + //{ + // var perEnum = item.Split(':'); + // if (perEnum != null && perEnum.Length == 2) + // { + // listEnumVal.Add(int.Parse(perEnum[0])); + // listEnumName.Add(perEnum[1]); + // } + //} + + //枚举动态无效 因为要根据枚举值 做搜索 + string CODE = DateTime.Now.ToString("yyyyMMddHHmmss"); + List listEnumVal = new List { 5, 10, 15, 20 }; + List listEnumName = new List { "按时整改隐患", "超期整改隐患", "未整改隐患", "隐患整改率" }; + + var taskSync = GetEntity(filter.Keyword);//跑批待办 + if (taskSync.SYNC_PARAM != null) { - perVal = listEnumVal[i]; //{ 5, 10, 15, 20 }; { "按时整改隐患", "超期整改隐患", "未整改隐患", "隐患整改率" }; - switch (perVal) - { - case 5: - for (int j = 0; j < caculate; j++) - { - var perME = listResult.FirstOrDefault(e => e.DEPARTMENT_ID == itemD.ID && e.SOURCEVAL == perVal && e.YEAR == listYear[j] && e.MONTH == listMonth[j]); - if (perME == null) - { - perME = GetRiskReason(itemD.DEPARTMENT_TYPE, listYear[j], itemD.ID, Guid.Empty, 1, filter.OrgId, perVal, listMonth[j], CaculateType);//如果没有 就新建对象 - listResult.Add(perME);//地址引用 应该是支持 - } - perCount = dtSubmitContent.Where(e => e.ISFINISHINTTIME.HasValue && e.ISFINISHINTTIME.Value && e.DEPARTMENT_ID.Value == itemD.ID && e.CREATE_TIME.HasValue && e.CREATE_TIME.Value.Year == listYear[j] && e.CREATE_TIME.Value.Month == listMonth[j]).Count();//某组织 年 月 按时整改隐患 - - perSubCount = 0;//每次清零 后相加 - if (listSubDepID != null && listSubDepID.Any()) - { - //子项数据求和 - var listThisChange = listResult.Where(e => e.CODE == CODE && e.SOURCEVAL == perVal && e.YEAR == listYear[j] && e.MONTH == listMonth[j] && listSubDepID.Contains(e.DEPARTMENT_ID)); - if (listThisChange != null && listThisChange.Any()) - { - perSubCount = listThisChange.Sum(e => e.COUNT); - } - } - - perME.DEPARTMENT_TYPE = (FMDepartmentType)itemD.DEPARTMENT_TYPE; - perME.NUMD = depNum; - perME.COUNT = perCount + perSubCount; - perME.CODE = CODE; - } - break; - case 10: - for (int j = 0; j < caculate; j++) - { - var perME = listResult.FirstOrDefault(e => e.DEPARTMENT_ID == itemD.ID && e.SOURCEVAL == perVal && e.YEAR == listYear[j] && e.MONTH == listMonth[j]); - if (perME == null) - { - perME = GetRiskReason(itemD.DEPARTMENT_TYPE, listYear[j], itemD.ID, Guid.Empty, 2, filter.OrgId, perVal, listMonth[j], CaculateType);//如果没有 就新建对象 - listResult.Add(perME);//地址引用 应该是支持 - } - perCount = dtSubmitContent.Where(e => e.ISFINISHINTTIME.HasValue && !e.ISFINISHINTTIME.Value && e.DEPARTMENT_ID.Value == itemD.ID && e.CREATE_TIME.HasValue && e.CREATE_TIME.Value.Year == listYear[j] && e.CREATE_TIME.Value.Month == listMonth[j]).Count();//某组织 年 月 按时整改隐患 - - perSubCount = 0;//每次清零 后相加 - if (listSubDepID != null && listSubDepID.Any()) - { - //子项数据求和 - var listThisChange = listResult.Where(e => e.CODE == CODE && e.SOURCEVAL == perVal && e.YEAR == listYear[j] && e.MONTH == listMonth[j] && listSubDepID.Contains(e.DEPARTMENT_ID)); - if (listThisChange != null && listThisChange.Any()) - { - perSubCount = listThisChange.Sum(e => e.COUNT); - } - } - - perME.DEPARTMENT_TYPE = (FMDepartmentType)itemD.DEPARTMENT_TYPE; - perME.NUMD = depNum; - perME.COUNT = perCount + perSubCount; - perME.CODE = CODE; - } - break; - case 15: - for (int j = 0; j < caculate; j++) - { - var perME = listResult.FirstOrDefault(e => e.DEPARTMENT_ID == itemD.ID && e.SOURCEVAL == perVal && e.YEAR == listYear[j] && e.MONTH == listMonth[j]); - if (perME == null) - { - perME = GetRiskReason(itemD.DEPARTMENT_TYPE, listYear[j], itemD.ID, Guid.Empty, 3, filter.OrgId, perVal, listMonth[j], CaculateType);//如果没有 就新建对象 - listResult.Add(perME);//地址引用 应该是支持 - } - perCount = dtSubmitContent.Where(e => !e.ISFINISHINTTIME.HasValue && e.DEPARTMENT_ID.Value == itemD.ID && e.CREATE_TIME.HasValue && e.CREATE_TIME.Value.Year == listYear[j] && e.CREATE_TIME.Value.Month == listMonth[j]).Count();//某组织 年 月 按时整改隐患 - perCountNot = 0; - if (listCheck != null && listCheck.Any()) - { - perCountNot = listCheck.Where(e => !e.IS_DELETED && e.DEPARTMENT_ID.HasValue && e.DEPARTMENT_ID.Value == itemD.ID && e.CREATE_TIME.HasValue && e.CREATE_TIME.Value.Year == listYear[j] && e.CREATE_TIME.Value.Month == listMonth[j]).Count(); - } - - perSubCount = 0;//每次清零 后相加 - if (listSubDepID != null && listSubDepID.Any()) - { - //子项数据求和 - var listThisChange = listResult.Where(e => e.CODE == CODE && e.SOURCEVAL == perVal && e.YEAR == listYear[j] && e.MONTH == listMonth[j] && listSubDepID.Contains(e.DEPARTMENT_ID)); - if (listThisChange != null && listThisChange.Any()) - { - perSubCount = listThisChange.Sum(e => e.COUNT); - } - } - - perME.DEPARTMENT_TYPE = (FMDepartmentType)itemD.DEPARTMENT_TYPE; - perME.NUMD = depNum; - perME.COUNT = perCount + perSubCount + perCountNot; - perME.CODE = CODE; - } - break; - case 20://整改率 后续统一计算 - break; - default: - break; - } + taskSync.SYNC_PARAM = ""; } - } + taskSync.UPDATE_SUCCES_TIME = DateTime.Now; - //部门 - depNum = 0; - var depBM = listDep.Where(e => e.DEPARTMENT_TYPE == 0).OrderBy(e => e.NUM); - foreach (var itemD in depBM) - { - depNum++; - listSubDepID = listDep.Where(e => e.PARENT_ID.HasValue && e.PARENT_ID.Value == itemD.ID).Select(e => e.ID).ToList(); - for (int i = 0; i < enumsCount; i++)//listEnumVal.Count; - { - perVal = listEnumVal[i]; //{ 5, 10, 15, 20 }; { "按时整改隐患", "超期整改隐患", "未整改隐患", "隐患整改率" }; - switch (perVal) - { - case 5: - for (int j = 0; j < caculate; j++) - { - var perME = listResult.FirstOrDefault(e => e.DEPARTMENT_ID == itemD.ID && e.SOURCEVAL == perVal && e.YEAR == listYear[j] && e.MONTH == listMonth[j]); - if (perME == null) - { - perME = GetRiskReason(itemD.DEPARTMENT_TYPE, listYear[j], itemD.ID, Guid.Empty, 1, filter.OrgId, perVal, listMonth[j], CaculateType);//如果没有 就新建对象 - listResult.Add(perME);//地址引用 应该是支持 - } - perCount = dtSubmitContent.Where(e => e.ISFINISHINTTIME.HasValue && e.ISFINISHINTTIME.Value && e.DEPARTMENT_ID.Value == itemD.ID && e.CREATE_TIME.HasValue && e.CREATE_TIME.Value.Year == listYear[j] && e.CREATE_TIME.Value.Month == listMonth[j]).Count();//某组织 年 月 按时整改隐患 + //组织 各隐患原因 数量 - perSubCount = 0;//每次清零 后相加 - if (listSubDepID != null && listSubDepID.Any()) - { - //子项数据求和 - var listThisChange = listResult.Where(e => e.CODE == CODE && e.SOURCEVAL == perVal && e.YEAR == listYear[j] && e.MONTH == listMonth[j] && listSubDepID.Contains(e.DEPARTMENT_ID)); - if (listThisChange != null && listThisChange.Any()) - { - perSubCount = listThisChange.Sum(e => e.COUNT); - } - } + int perVal = 0; + int perCount = 0;//组织对应数量 + int perCountNot = 0;//组织对应数量 + int perSubCount = 0;//组织对应下级数量 + int depNum = 0; + // 子班组 + 本组织 + List listSubDepID = new List(); + DateTime MODIFY_TIME = DateTime.Now.AddMinutes(1); + int enumsCount = listEnumVal.Count; + BSCaculateType CaculateType = BSCaculateType.RiskCorrect; + var year = dtMin.Year; + //更新近期 信息 + var listResult = GetEntities(e => e.YEAR >= year && e.TYPE == CaculateType, null, null).ToList(); - perME.DEPARTMENT_TYPE = (FMDepartmentType)itemD.DEPARTMENT_TYPE; - perME.NUMD = depNum; - perME.COUNT = perCount + perSubCount; - perME.CODE = CODE; - } - break; - case 10: - for (int j = 0; j < caculate; j++) - { - var perME = listResult.FirstOrDefault(e => e.DEPARTMENT_ID == itemD.ID && e.SOURCEVAL == perVal && e.YEAR == listYear[j] && e.MONTH == listMonth[j]); - if (perME == null) - { - perME = GetRiskReason(itemD.DEPARTMENT_TYPE, listYear[j], itemD.ID, Guid.Empty, 2, filter.OrgId, perVal, listMonth[j], CaculateType);//如果没有 就新建对象 - listResult.Add(perME);//地址引用 应该是支持 - } - perCount = dtSubmitContent.Where(e => e.ISFINISHINTTIME.HasValue && !e.ISFINISHINTTIME.Value && e.DEPARTMENT_ID.Value == itemD.ID && e.CREATE_TIME.HasValue && e.CREATE_TIME.Value.Year == listYear[j] && e.CREATE_TIME.Value.Month == listMonth[j]).Count();//某组织 年 月 按时整改隐患 - - perSubCount = 0;//每次清零 后相加 - if (listSubDepID != null && listSubDepID.Any()) - { - //子项数据求和 - var listThisChange = listResult.Where(e => e.CODE == CODE && e.SOURCEVAL == perVal && e.YEAR == listYear[j] && e.MONTH == listMonth[j] && listSubDepID.Contains(e.DEPARTMENT_ID)); - if (listThisChange != null && listThisChange.Any()) - { - perSubCount = listThisChange.Sum(e => e.COUNT); - } - } - - perME.DEPARTMENT_TYPE = (FMDepartmentType)itemD.DEPARTMENT_TYPE; - perME.NUMD = depNum; - perME.COUNT = perCount + perSubCount; - perME.CODE = CODE; - } - break; - case 15: - for (int j = 0; j < caculate; j++) - { - var perME = listResult.FirstOrDefault(e => e.DEPARTMENT_ID == itemD.ID && e.SOURCEVAL == perVal && e.YEAR == listYear[j] && e.MONTH == listMonth[j]); - if (perME == null) - { - perME = GetRiskReason(itemD.DEPARTMENT_TYPE, listYear[j], itemD.ID, Guid.Empty, 3, filter.OrgId, perVal, listMonth[j], CaculateType);//如果没有 就新建对象 - listResult.Add(perME);//地址引用 应该是支持 - } - perCount = dtSubmitContent.Where(e => !e.ISFINISHINTTIME.HasValue && e.DEPARTMENT_ID.Value == itemD.ID && e.CREATE_TIME.HasValue && e.CREATE_TIME.Value.Year == listYear[j] && e.CREATE_TIME.Value.Month == listMonth[j]).Count();//某组织 年 月 按时整改隐患 - perCountNot = 0; - if (listCheck != null && listCheck.Any()) - { - perCountNot = listCheck.Where(e => !e.IS_DELETED && e.DEPARTMENT_ID.HasValue && e.DEPARTMENT_ID.Value == itemD.ID && e.CREATE_TIME.HasValue && e.CREATE_TIME.Value.Year == listYear[j] && e.CREATE_TIME.Value.Month == listMonth[j]).Count(); - } - - perSubCount = 0;//每次清零 后相加 - if (listSubDepID != null && listSubDepID.Any()) - { - //子项数据求和 - var listThisChange = listResult.Where(e => e.CODE == CODE && e.SOURCEVAL == perVal && e.YEAR == listYear[j] && e.MONTH == listMonth[j] && listSubDepID.Contains(e.DEPARTMENT_ID)); - if (listThisChange != null && listThisChange.Any()) - { - perSubCount = listThisChange.Sum(e => e.COUNT); - } - } - perME.DEPARTMENT_TYPE = (FMDepartmentType)itemD.DEPARTMENT_TYPE; - perME.NUMD = depNum; - perME.COUNT = perCount + perCountNot + perSubCount; - perME.CODE = CODE; - } - break; - case 20://整改率 后续统一计算 - break; - default: - break; - } - } - } - - //公司 为了 格式 懒得改 统计所有 - depNum = 0; - var depG = listDep.Where(e => e.DEPARTMENT_TYPE == 3 && !e.PARENT_ID.HasValue); - foreach (var itemD in depG) - { - depNum++; - for (int i = 0; i < enumsCount; i++)//listEnumVal.Count; - { - perVal = listEnumVal[i]; //{ 5, 10, 15, 20 }; { "按时整改隐患", "超期整改隐患", "未整改隐患", "隐患整改率" }; - switch (perVal) - { - case 5: - for (int j = 0; j < caculate; j++) - { - var perME = listResult.FirstOrDefault(e => e.SOURCEVAL == perVal && e.YEAR == listYear[j] && e.MONTH == listMonth[j] && e.DEPARTMENT_ID == itemD.ID); - if (perME == null) - { - perME = GetRiskReason(itemD.DEPARTMENT_TYPE, listYear[j], itemD.ID, Guid.Empty, 1, filter.OrgId, perVal, listMonth[j], CaculateType);//如果没有 就新建对象 - listResult.Add(perME);//地址引用 应该是支持 - } - perCount = dtSubmitContent.Where(e => e.ISFINISHINTTIME.HasValue && e.ISFINISHINTTIME.Value && e.CREATE_TIME.HasValue && e.CREATE_TIME.Value.Year == listYear[j] && e.CREATE_TIME.Value.Month == listMonth[j]).Count();//某组织 年 月 按时整改隐患 - perME.DEPARTMENT_TYPE = (FMDepartmentType)itemD.DEPARTMENT_TYPE; - perME.NUMD = depNum; - perME.COUNT = perCount; - perME.CODE = CODE; - } - break; - case 10: - for (int j = 0; j < caculate; j++) - { - var perME = listResult.FirstOrDefault(e => e.SOURCEVAL == perVal && e.YEAR == listYear[j] && e.MONTH == listMonth[j] && e.DEPARTMENT_ID == itemD.ID); - if (perME == null) - { - perME = GetRiskReason(itemD.DEPARTMENT_TYPE, listYear[j], itemD.ID, Guid.Empty, 2, filter.OrgId, perVal, listMonth[j], CaculateType);//如果没有 就新建对象 - listResult.Add(perME);//地址引用 应该是支持 - } - perCount = dtSubmitContent.Where(e => e.ISFINISHINTTIME.HasValue && !e.ISFINISHINTTIME.Value && e.CREATE_TIME.HasValue && e.CREATE_TIME.Value.Year == listYear[j] && e.CREATE_TIME.Value.Month == listMonth[j]).Count();//某组织 年 月 按时整改隐患 - perME.DEPARTMENT_TYPE = (FMDepartmentType)itemD.DEPARTMENT_TYPE; - perME.NUMD = depNum; - perME.COUNT = perCount; - perME.CODE = CODE; - } - break; - case 15: - for (int j = 0; j < caculate; j++) - { - var perME = listResult.FirstOrDefault(e => e.SOURCEVAL == perVal && e.YEAR == listYear[j] && e.MONTH == listMonth[j] && e.DEPARTMENT_ID == itemD.ID); - if (perME == null) - { - perME = GetRiskReason(itemD.DEPARTMENT_TYPE, listYear[j], itemD.ID, Guid.Empty, 3, filter.OrgId, perVal, listMonth[j], CaculateType);//如果没有 就新建对象 - listResult.Add(perME);//地址引用 应该是支持 - } - perCount = dtSubmitContent.Where(e => !e.ISFINISHINTTIME.HasValue && e.CREATE_TIME.HasValue && e.CREATE_TIME.Value.Year == listYear[j] && e.CREATE_TIME.Value.Month == listMonth[j]).Count();//某组织 年 月 按时整改隐患 - perCountNot = 0; - if (listCheck != null && listCheck.Any()) - { - perCountNot = listCheck.Where(e => !e.IS_DELETED && e.CREATE_TIME.HasValue && e.CREATE_TIME.Value.Year == listYear[j] && e.CREATE_TIME.Value.Month == listMonth[j]).Count(); - } - - perSubCount = 0;//每次清零 后相加 - if (listSubDepID != null && listSubDepID.Any()) - { - //子项数据求和 - var listThisChange = listResult.Where(e => e.CODE == CODE && e.SOURCEVAL == perVal && e.YEAR == listYear[j] && e.MONTH == listMonth[j] && listSubDepID.Contains(e.DEPARTMENT_ID)); - if (listThisChange != null && listThisChange.Any()) - { - perSubCount = listThisChange.Sum(e => e.COUNT); - } - } - perME.DEPARTMENT_TYPE = (FMDepartmentType)itemD.DEPARTMENT_TYPE; - perME.NUMD = depNum; - perME.COUNT = perCount + perCountNot + perSubCount; - perME.CODE = CODE; - } - break; - case 20://整改率 后续统一计算 - break; - default: - break; - } - } - } - - int all = 0;//已完成 - int finish = 0; - //计算 放在 最后 隐患整改率 组织 + 年 + 月 (按时+超期 / 按时+超期+未整改隐患) - foreach (var itemD in listDep) - { + //List> listDicDate = new List>(); + List listYear = new List(); + List listMonth = new List(); + List listDtMin = new List(); + DateTime dtTemp = DateTime.Now; for (int i = 0; i < caculate; i++) { - var listDYM = listResult.Where(e => e.DEPARTMENT_ID == itemD.ID && e.YEAR == listYear[i] && e.MONTH == listMonth[i]); - - finish = 0; - all = listDYM.Sum(e => e.COUNT);//所有总和 - if (all > 0) - finish = listDYM.Where(e => e.SOURCEVAL != 15).Sum(e => e.COUNT);//按时+超期 - - var perME = listResult.FirstOrDefault(e => e.DEPARTMENT_ID == itemD.ID && e.SOURCEVAL == perVal && e.YEAR == listYear[i] && e.MONTH == listMonth[i]); - if (perME == null) - { - perME = GetRiskReason(itemD.DEPARTMENT_TYPE, listYear[i], itemD.ID, Guid.Empty, 4, filter.OrgId, perVal, listMonth[i], CaculateType);//如果没有 就新建对象 - listResult.Add(perME);//地址引用 应该是支持 - } - - depNum = 0; - foreach (var item in listDYM) - { - if (depNum != 0) - break; - depNum = item.NUMD; - } - perME.DEPARTMENT_TYPE = (FMDepartmentType)itemD.DEPARTMENT_TYPE; - perME.NUMD = depNum; - perME.COUNT = 0; - perME.CODE = CODE; - - if (all == 0) - perME.PERCENT = 100; - else if (finish == 0) - perME.PERCENT = 0; - else - perME.PERCENT = (decimal)Math.Round(100.00 * finish / all, 2); + dtTemp = dtMin.AddMonths(i); + listYear.Add(dtTemp.Year); + listMonth.Add(dtTemp.Month); + listDtMin.Add(dtTemp); } - } - //找本次有修改的 - var UpdateResult = listResult.Where(e => e.CODE == CODE); - taskSync.TASK_END_TIME = DateTime.Now; + DateTime dtPerMin = DateTime.Now; + DateTime dtPerMax = DateTime.Now; - this.UnifiedCommit(() => - { - if (taskSync != null) //跑批信息 + //班组 + depNum = 0; + var depB = listDep.Where(e => e.DEPARTMENT_TYPE == 2).OrderBy(e => e.NUM); + foreach (var itemD in depB) + { + depNum++; + for (int i = 0; i < enumsCount; i++)//listEnumVal.Count; + { + perVal = listEnumVal[i]; //{ 5, 10, 15, 20 }; { "按时整改隐患", "超期整改隐患", "未整改隐患", "隐患整改率" }; + switch (perVal) + { + case 5: + for (int j = 0; j < caculate; j++) + { + var perME = listResult.FirstOrDefault(e => e.DEPARTMENT_ID == itemD.ID && e.SOURCEVAL == perVal && e.YEAR == listYear[j] && e.MONTH == listMonth[j]); + if (perME == null) + { + perME = GetRiskReason(itemD.DEPARTMENT_TYPE, listYear[j], itemD.ID, Guid.Empty, 1, filter.OrgId, perVal, listMonth[j], CaculateType);//如果没有 就新建对象 + listResult.Add(perME);//地址引用 应该是支持 + } + perCount = dtSubmitContent.Where(e => e.ISFINISHINTTIME.HasValue && e.ISFINISHINTTIME.Value && e.DEPARTMENT_ID.Value == itemD.ID && e.CREATE_TIME.HasValue && e.CREATE_TIME.Value.Year == listYear[j] && e.CREATE_TIME.Value.Month == listMonth[j]).Count();//某组织 年 月 按时整改隐患 + perME.DEPARTMENT_TYPE = (FMDepartmentType)itemD.DEPARTMENT_TYPE; + perME.NUMD = depNum; + perME.COUNT = perCount; + perME.CODE = CODE; + } + break; + case 10: + for (int j = 0; j < caculate; j++) + { + var perME = listResult.FirstOrDefault(e => e.DEPARTMENT_ID == itemD.ID && e.SOURCEVAL == perVal && e.YEAR == listYear[j] && e.MONTH == listMonth[j]); + if (perME == null) + { + perME = GetRiskReason(2, listYear[j], itemD.ID, Guid.Empty, 2, filter.OrgId, perVal, listMonth[j], CaculateType);//如果没有 就新建对象 + listResult.Add(perME);//地址引用 应该是支持 + } + perCount = dtSubmitContent.Where(e => e.ISFINISHINTTIME.HasValue && !e.ISFINISHINTTIME.Value && e.DEPARTMENT_ID.Value == itemD.ID && e.CREATE_TIME.HasValue && e.CREATE_TIME.Value.Year == listYear[j] && e.CREATE_TIME.Value.Month == listMonth[j]).Count();//某组织 年 月 按时整改隐患 + perME.DEPARTMENT_TYPE = FMDepartmentType.班组; + perME.NUMD = depNum; + perME.COUNT = perCount; + perME.CODE = CODE; + } + break; + case 15: + for (int j = 0; j < caculate; j++) + { + var perME = listResult.FirstOrDefault(e => e.DEPARTMENT_ID == itemD.ID && e.SOURCEVAL == perVal && e.YEAR == listYear[j] && e.MONTH == listMonth[j]); + if (perME == null) + { + perME = GetRiskReason(2, listYear[j], itemD.ID, Guid.Empty, 3, filter.OrgId, perVal, listMonth[j], CaculateType);//如果没有 就新建对象 + listResult.Add(perME);//地址引用 应该是支持 + } + perCount = dtSubmitContent.Where(e => !e.ISFINISHINTTIME.HasValue && e.DEPARTMENT_ID.Value == itemD.ID && e.CREATE_TIME.HasValue && e.CREATE_TIME.Value.Year == listYear[j] && e.CREATE_TIME.Value.Month == listMonth[j]).Count();//某组织 年 月 按时整改隐患 + perCountNot = 0; + if (listCheck != null && listCheck.Any()) + { + perCountNot = listCheck.Where(e => !e.IS_DELETED && e.DEPARTMENT_ID.HasValue && e.DEPARTMENT_ID.Value == itemD.ID && e.CREATE_TIME.HasValue && e.CREATE_TIME.Value.Year == listYear[j] && e.CREATE_TIME.Value.Month == listMonth[j]).Count(); + } + + perME.DEPARTMENT_TYPE = FMDepartmentType.班组; + perME.NUMD = depNum; + perME.COUNT = perCount + perCountNot; + perME.CODE = CODE; + } + break; + case 20://整改率 后续统一计算 + break; + default: + break; + } + } + } + + //车间 + depNum = 0; + var depC = listDep.Where(e => e.DEPARTMENT_TYPE == 1).OrderBy(e => e.NUM); + foreach (var itemD in depC) + { + depNum++; + listSubDepID = listDep.Where(e => e.PARENT_ID.HasValue && e.PARENT_ID.Value == itemD.ID).Select(e => e.ID).ToList(); + for (int i = 0; i < enumsCount; i++)//listEnumVal.Count; + { + perVal = listEnumVal[i]; //{ 5, 10, 15, 20 }; { "按时整改隐患", "超期整改隐患", "未整改隐患", "隐患整改率" }; + switch (perVal) + { + case 5: + for (int j = 0; j < caculate; j++) + { + var perME = listResult.FirstOrDefault(e => e.DEPARTMENT_ID == itemD.ID && e.SOURCEVAL == perVal && e.YEAR == listYear[j] && e.MONTH == listMonth[j]); + if (perME == null) + { + perME = GetRiskReason(itemD.DEPARTMENT_TYPE, listYear[j], itemD.ID, Guid.Empty, 1, filter.OrgId, perVal, listMonth[j], CaculateType);//如果没有 就新建对象 + listResult.Add(perME);//地址引用 应该是支持 + } + perCount = dtSubmitContent.Where(e => e.ISFINISHINTTIME.HasValue && e.ISFINISHINTTIME.Value && e.DEPARTMENT_ID.Value == itemD.ID && e.CREATE_TIME.HasValue && e.CREATE_TIME.Value.Year == listYear[j] && e.CREATE_TIME.Value.Month == listMonth[j]).Count();//某组织 年 月 按时整改隐患 + + perSubCount = 0;//每次清零 后相加 + if (listSubDepID != null && listSubDepID.Any()) + { + //子项数据求和 + var listThisChange = listResult.Where(e => e.CODE == CODE && e.SOURCEVAL == perVal && e.YEAR == listYear[j] && e.MONTH == listMonth[j] && listSubDepID.Contains(e.DEPARTMENT_ID)); + if (listThisChange != null && listThisChange.Any()) + { + perSubCount = listThisChange.Sum(e => e.COUNT); + } + } + + perME.DEPARTMENT_TYPE = (FMDepartmentType)itemD.DEPARTMENT_TYPE; + perME.NUMD = depNum; + perME.COUNT = perCount + perSubCount; + perME.CODE = CODE; + } + break; + case 10: + for (int j = 0; j < caculate; j++) + { + var perME = listResult.FirstOrDefault(e => e.DEPARTMENT_ID == itemD.ID && e.SOURCEVAL == perVal && e.YEAR == listYear[j] && e.MONTH == listMonth[j]); + if (perME == null) + { + perME = GetRiskReason(itemD.DEPARTMENT_TYPE, listYear[j], itemD.ID, Guid.Empty, 2, filter.OrgId, perVal, listMonth[j], CaculateType);//如果没有 就新建对象 + listResult.Add(perME);//地址引用 应该是支持 + } + perCount = dtSubmitContent.Where(e => e.ISFINISHINTTIME.HasValue && !e.ISFINISHINTTIME.Value && e.DEPARTMENT_ID.Value == itemD.ID && e.CREATE_TIME.HasValue && e.CREATE_TIME.Value.Year == listYear[j] && e.CREATE_TIME.Value.Month == listMonth[j]).Count();//某组织 年 月 按时整改隐患 + + perSubCount = 0;//每次清零 后相加 + if (listSubDepID != null && listSubDepID.Any()) + { + //子项数据求和 + var listThisChange = listResult.Where(e => e.CODE == CODE && e.SOURCEVAL == perVal && e.YEAR == listYear[j] && e.MONTH == listMonth[j] && listSubDepID.Contains(e.DEPARTMENT_ID)); + if (listThisChange != null && listThisChange.Any()) + { + perSubCount = listThisChange.Sum(e => e.COUNT); + } + } + + perME.DEPARTMENT_TYPE = (FMDepartmentType)itemD.DEPARTMENT_TYPE; + perME.NUMD = depNum; + perME.COUNT = perCount + perSubCount; + perME.CODE = CODE; + } + break; + case 15: + for (int j = 0; j < caculate; j++) + { + var perME = listResult.FirstOrDefault(e => e.DEPARTMENT_ID == itemD.ID && e.SOURCEVAL == perVal && e.YEAR == listYear[j] && e.MONTH == listMonth[j]); + if (perME == null) + { + perME = GetRiskReason(itemD.DEPARTMENT_TYPE, listYear[j], itemD.ID, Guid.Empty, 3, filter.OrgId, perVal, listMonth[j], CaculateType);//如果没有 就新建对象 + listResult.Add(perME);//地址引用 应该是支持 + } + perCount = dtSubmitContent.Where(e => !e.ISFINISHINTTIME.HasValue && e.DEPARTMENT_ID.Value == itemD.ID && e.CREATE_TIME.HasValue && e.CREATE_TIME.Value.Year == listYear[j] && e.CREATE_TIME.Value.Month == listMonth[j]).Count();//某组织 年 月 按时整改隐患 + perCountNot = 0; + if (listCheck != null && listCheck.Any()) + { + perCountNot = listCheck.Where(e => !e.IS_DELETED && e.DEPARTMENT_ID.HasValue && e.DEPARTMENT_ID.Value == itemD.ID && e.CREATE_TIME.HasValue && e.CREATE_TIME.Value.Year == listYear[j] && e.CREATE_TIME.Value.Month == listMonth[j]).Count(); + } + + perSubCount = 0;//每次清零 后相加 + if (listSubDepID != null && listSubDepID.Any()) + { + //子项数据求和 + var listThisChange = listResult.Where(e => e.CODE == CODE && e.SOURCEVAL == perVal && e.YEAR == listYear[j] && e.MONTH == listMonth[j] && listSubDepID.Contains(e.DEPARTMENT_ID)); + if (listThisChange != null && listThisChange.Any()) + { + perSubCount = listThisChange.Sum(e => e.COUNT); + } + } + + perME.DEPARTMENT_TYPE = (FMDepartmentType)itemD.DEPARTMENT_TYPE; + perME.NUMD = depNum; + perME.COUNT = perCount + perSubCount + perCountNot; + perME.CODE = CODE; + } + break; + case 20://整改率 后续统一计算 + break; + default: + break; + } + } + } + + //部门 + depNum = 0; + var depBM = listDep.Where(e => e.DEPARTMENT_TYPE == 0).OrderBy(e => e.NUM); + foreach (var itemD in depBM) + { + depNum++; + listSubDepID = listDep.Where(e => e.PARENT_ID.HasValue && e.PARENT_ID.Value == itemD.ID).Select(e => e.ID).ToList(); + for (int i = 0; i < enumsCount; i++)//listEnumVal.Count; + { + perVal = listEnumVal[i]; //{ 5, 10, 15, 20 }; { "按时整改隐患", "超期整改隐患", "未整改隐患", "隐患整改率" }; + switch (perVal) + { + case 5: + for (int j = 0; j < caculate; j++) + { + var perME = listResult.FirstOrDefault(e => e.DEPARTMENT_ID == itemD.ID && e.SOURCEVAL == perVal && e.YEAR == listYear[j] && e.MONTH == listMonth[j]); + if (perME == null) + { + perME = GetRiskReason(itemD.DEPARTMENT_TYPE, listYear[j], itemD.ID, Guid.Empty, 1, filter.OrgId, perVal, listMonth[j], CaculateType);//如果没有 就新建对象 + listResult.Add(perME);//地址引用 应该是支持 + } + perCount = dtSubmitContent.Where(e => e.ISFINISHINTTIME.HasValue && e.ISFINISHINTTIME.Value && e.DEPARTMENT_ID.Value == itemD.ID && e.CREATE_TIME.HasValue && e.CREATE_TIME.Value.Year == listYear[j] && e.CREATE_TIME.Value.Month == listMonth[j]).Count();//某组织 年 月 按时整改隐患 + + perSubCount = 0;//每次清零 后相加 + if (listSubDepID != null && listSubDepID.Any()) + { + //子项数据求和 + var listThisChange = listResult.Where(e => e.CODE == CODE && e.SOURCEVAL == perVal && e.YEAR == listYear[j] && e.MONTH == listMonth[j] && listSubDepID.Contains(e.DEPARTMENT_ID)); + if (listThisChange != null && listThisChange.Any()) + { + perSubCount = listThisChange.Sum(e => e.COUNT); + } + } + + perME.DEPARTMENT_TYPE = (FMDepartmentType)itemD.DEPARTMENT_TYPE; + perME.NUMD = depNum; + perME.COUNT = perCount + perSubCount; + perME.CODE = CODE; + } + break; + case 10: + for (int j = 0; j < caculate; j++) + { + var perME = listResult.FirstOrDefault(e => e.DEPARTMENT_ID == itemD.ID && e.SOURCEVAL == perVal && e.YEAR == listYear[j] && e.MONTH == listMonth[j]); + if (perME == null) + { + perME = GetRiskReason(itemD.DEPARTMENT_TYPE, listYear[j], itemD.ID, Guid.Empty, 2, filter.OrgId, perVal, listMonth[j], CaculateType);//如果没有 就新建对象 + listResult.Add(perME);//地址引用 应该是支持 + } + perCount = dtSubmitContent.Where(e => e.ISFINISHINTTIME.HasValue && !e.ISFINISHINTTIME.Value && e.DEPARTMENT_ID.Value == itemD.ID && e.CREATE_TIME.HasValue && e.CREATE_TIME.Value.Year == listYear[j] && e.CREATE_TIME.Value.Month == listMonth[j]).Count();//某组织 年 月 按时整改隐患 + + perSubCount = 0;//每次清零 后相加 + if (listSubDepID != null && listSubDepID.Any()) + { + //子项数据求和 + var listThisChange = listResult.Where(e => e.CODE == CODE && e.SOURCEVAL == perVal && e.YEAR == listYear[j] && e.MONTH == listMonth[j] && listSubDepID.Contains(e.DEPARTMENT_ID)); + if (listThisChange != null && listThisChange.Any()) + { + perSubCount = listThisChange.Sum(e => e.COUNT); + } + } + + perME.DEPARTMENT_TYPE = (FMDepartmentType)itemD.DEPARTMENT_TYPE; + perME.NUMD = depNum; + perME.COUNT = perCount + perSubCount; + perME.CODE = CODE; + } + break; + case 15: + for (int j = 0; j < caculate; j++) + { + var perME = listResult.FirstOrDefault(e => e.DEPARTMENT_ID == itemD.ID && e.SOURCEVAL == perVal && e.YEAR == listYear[j] && e.MONTH == listMonth[j]); + if (perME == null) + { + perME = GetRiskReason(itemD.DEPARTMENT_TYPE, listYear[j], itemD.ID, Guid.Empty, 3, filter.OrgId, perVal, listMonth[j], CaculateType);//如果没有 就新建对象 + listResult.Add(perME);//地址引用 应该是支持 + } + perCount = dtSubmitContent.Where(e => !e.ISFINISHINTTIME.HasValue && e.DEPARTMENT_ID.Value == itemD.ID && e.CREATE_TIME.HasValue && e.CREATE_TIME.Value.Year == listYear[j] && e.CREATE_TIME.Value.Month == listMonth[j]).Count();//某组织 年 月 按时整改隐患 + perCountNot = 0; + if (listCheck != null && listCheck.Any()) + { + perCountNot = listCheck.Where(e => !e.IS_DELETED && e.DEPARTMENT_ID.HasValue && e.DEPARTMENT_ID.Value == itemD.ID && e.CREATE_TIME.HasValue && e.CREATE_TIME.Value.Year == listYear[j] && e.CREATE_TIME.Value.Month == listMonth[j]).Count(); + } + + perSubCount = 0;//每次清零 后相加 + if (listSubDepID != null && listSubDepID.Any()) + { + //子项数据求和 + var listThisChange = listResult.Where(e => e.CODE == CODE && e.SOURCEVAL == perVal && e.YEAR == listYear[j] && e.MONTH == listMonth[j] && listSubDepID.Contains(e.DEPARTMENT_ID)); + if (listThisChange != null && listThisChange.Any()) + { + perSubCount = listThisChange.Sum(e => e.COUNT); + } + } + perME.DEPARTMENT_TYPE = (FMDepartmentType)itemD.DEPARTMENT_TYPE; + perME.NUMD = depNum; + perME.COUNT = perCount + perCountNot + perSubCount; + perME.CODE = CODE; + } + break; + case 20://整改率 后续统一计算 + break; + default: + break; + } + } + } + + //公司 为了 格式 懒得改 统计所有 + depNum = 0; + var depG = listDep.Where(e => e.DEPARTMENT_TYPE == 3 && !e.PARENT_ID.HasValue); + foreach (var itemD in depG) + { + depNum++; + for (int i = 0; i < enumsCount; i++)//listEnumVal.Count; + { + perVal = listEnumVal[i]; //{ 5, 10, 15, 20 }; { "按时整改隐患", "超期整改隐患", "未整改隐患", "隐患整改率" }; + switch (perVal) + { + case 5: + for (int j = 0; j < caculate; j++) + { + var perME = listResult.FirstOrDefault(e => e.SOURCEVAL == perVal && e.YEAR == listYear[j] && e.MONTH == listMonth[j] && e.DEPARTMENT_ID == itemD.ID); + if (perME == null) + { + perME = GetRiskReason(itemD.DEPARTMENT_TYPE, listYear[j], itemD.ID, Guid.Empty, 1, filter.OrgId, perVal, listMonth[j], CaculateType);//如果没有 就新建对象 + listResult.Add(perME);//地址引用 应该是支持 + } + perCount = dtSubmitContent.Where(e => e.ISFINISHINTTIME.HasValue && e.ISFINISHINTTIME.Value && e.CREATE_TIME.HasValue && e.CREATE_TIME.Value.Year == listYear[j] && e.CREATE_TIME.Value.Month == listMonth[j]).Count();//某组织 年 月 按时整改隐患 + perME.DEPARTMENT_TYPE = (FMDepartmentType)itemD.DEPARTMENT_TYPE; + perME.NUMD = depNum; + perME.COUNT = perCount; + perME.CODE = CODE; + } + break; + case 10: + for (int j = 0; j < caculate; j++) + { + var perME = listResult.FirstOrDefault(e => e.SOURCEVAL == perVal && e.YEAR == listYear[j] && e.MONTH == listMonth[j] && e.DEPARTMENT_ID == itemD.ID); + if (perME == null) + { + perME = GetRiskReason(itemD.DEPARTMENT_TYPE, listYear[j], itemD.ID, Guid.Empty, 2, filter.OrgId, perVal, listMonth[j], CaculateType);//如果没有 就新建对象 + listResult.Add(perME);//地址引用 应该是支持 + } + perCount = dtSubmitContent.Where(e => e.ISFINISHINTTIME.HasValue && !e.ISFINISHINTTIME.Value && e.CREATE_TIME.HasValue && e.CREATE_TIME.Value.Year == listYear[j] && e.CREATE_TIME.Value.Month == listMonth[j]).Count();//某组织 年 月 按时整改隐患 + perME.DEPARTMENT_TYPE = (FMDepartmentType)itemD.DEPARTMENT_TYPE; + perME.NUMD = depNum; + perME.COUNT = perCount; + perME.CODE = CODE; + } + break; + case 15: + for (int j = 0; j < caculate; j++) + { + var perME = listResult.FirstOrDefault(e => e.SOURCEVAL == perVal && e.YEAR == listYear[j] && e.MONTH == listMonth[j] && e.DEPARTMENT_ID == itemD.ID); + if (perME == null) + { + perME = GetRiskReason(itemD.DEPARTMENT_TYPE, listYear[j], itemD.ID, Guid.Empty, 3, filter.OrgId, perVal, listMonth[j], CaculateType);//如果没有 就新建对象 + listResult.Add(perME);//地址引用 应该是支持 + } + perCount = dtSubmitContent.Where(e => !e.ISFINISHINTTIME.HasValue && e.CREATE_TIME.HasValue && e.CREATE_TIME.Value.Year == listYear[j] && e.CREATE_TIME.Value.Month == listMonth[j]).Count();//某组织 年 月 按时整改隐患 + perCountNot = 0; + if (listCheck != null && listCheck.Any()) + { + perCountNot = listCheck.Where(e => !e.IS_DELETED && e.CREATE_TIME.HasValue && e.CREATE_TIME.Value.Year == listYear[j] && e.CREATE_TIME.Value.Month == listMonth[j]).Count(); + } + + perSubCount = 0;//每次清零 后相加 + if (listSubDepID != null && listSubDepID.Any()) + { + //子项数据求和 + var listThisChange = listResult.Where(e => e.CODE == CODE && e.SOURCEVAL == perVal && e.YEAR == listYear[j] && e.MONTH == listMonth[j] && listSubDepID.Contains(e.DEPARTMENT_ID)); + if (listThisChange != null && listThisChange.Any()) + { + perSubCount = listThisChange.Sum(e => e.COUNT); + } + } + perME.DEPARTMENT_TYPE = (FMDepartmentType)itemD.DEPARTMENT_TYPE; + perME.NUMD = depNum; + perME.COUNT = perCount + perCountNot + perSubCount; + perME.CODE = CODE; + } + break; + case 20://整改率 后续统一计算 + break; + default: + break; + } + } + } + + int all = 0;//已完成 + int finish = 0; + //计算 放在 最后 隐患整改率 组织 + 年 + 月 (按时+超期 / 按时+超期+未整改隐患) + foreach (var itemD in listDep) + { + for (int i = 0; i < caculate; i++) + { + var listDYM = listResult.Where(e => e.DEPARTMENT_ID == itemD.ID && e.YEAR == listYear[i] && e.MONTH == listMonth[i]); + + finish = 0; + all = listDYM.Sum(e => e.COUNT);//所有总和 + if (all > 0) + finish = listDYM.Where(e => e.SOURCEVAL != 15).Sum(e => e.COUNT);//按时+超期 + + var perME = listResult.FirstOrDefault(e => e.DEPARTMENT_ID == itemD.ID && e.SOURCEVAL == perVal && e.YEAR == listYear[i] && e.MONTH == listMonth[i]); + if (perME == null) + { + perME = GetRiskReason(itemD.DEPARTMENT_TYPE, listYear[i], itemD.ID, Guid.Empty, 4, filter.OrgId, perVal, listMonth[i], CaculateType);//如果没有 就新建对象 + listResult.Add(perME);//地址引用 应该是支持 + } + + depNum = 0; + foreach (var item in listDYM) + { + if (depNum != 0) + break; + depNum = item.NUMD; + } + perME.DEPARTMENT_TYPE = (FMDepartmentType)itemD.DEPARTMENT_TYPE; + perME.NUMD = depNum; + perME.COUNT = 0; + perME.CODE = CODE; + + if (all == 0) + perME.PERCENT = 100; + else if (finish == 0) + perME.PERCENT = 0; + else + perME.PERCENT = (decimal)Math.Round(100.00 * finish / all, 2); + } + } + + //找本次有修改的 + var UpdateResult = listResult.Where(e => e.CODE == CODE); + taskSync.TASK_END_TIME = DateTime.Now; + + this.UnifiedCommit(() => + { + if (taskSync != null) //跑批信息 UpdateEntityNoCommit(taskSync); - if (UpdateResult != null && UpdateResult.Any()) - BantchSaveEntityNoCommit(UpdateResult); - }); + if (UpdateResult != null && UpdateResult.Any()) + BantchSaveEntityNoCommit(UpdateResult); + }); + } + catch (Exception ex) + { + if (!string.IsNullOrEmpty(ex.StackTrace)) + Logger.LogError("错误日志:[StackTrace]" + ex.StackTrace); + else + Logger.LogError("【" + HttpContext.Request.Path + "】错误日志:[Message]" + ex.Message); + Logger.LogError("filter:" + filter.ToJson()); + } return true; }); } @@ -2066,318 +2086,329 @@ namespace APT.PP.WebApi.Controllers.Api.PP { return SafeExecute(() => { - int caculate = 6; - if (!string.IsNullOrEmpty(filter.Parameter1)) + try { - try + int caculate = 6; + if (!string.IsNullOrEmpty(filter.Parameter1)) { - caculate = int.Parse(filter.Parameter1); //接收来自页面的参数 - } - catch - { - caculate = 6; - } - } - - DateTime dtMin = Convert.ToDateTime(DateTime.Now.AddMonths(-1 * (caculate - 1)).ToString("yyyy-MM-01 00:00:00")); - //按生产单元区分 安全检查 每种检查的数量 - - BaseFilter filterD = new BaseFilter(); - filterD.SelectField = new List { "ID", "NAME", "DEPARTMENT_TYPE", "PARENT_ID" }; - var listDep = GetEntities(e => !e.IS_DELETED && e.ENABLE_STATUS == 0, filterD, null); - - if ((listDep == null || !listDep.Any())) - { - return true; //如果 没有部门 或者 为设置隐患原因 一般不会这样 - } - - BaseFilter filterC = new BaseFilter(); - filterC.SelectField = new List { "ID", "DEPARTMENTID", "CREATE_TIME", "ENABLE_STATUS", "STATUSPLAN", "CHECK_TYPE_ID" }; - filterC.IgnoreDataRule = true; - //隐患已上报 统计 有没有处理 处理的及时性 - var dtSafeCheck = GetEntities(e => e.CHECK_TYPE_ID.HasValue && e.DEPARTMENTID.HasValue && e.CREATE_TIME.HasValue && e.ENABLE_STATUS == 0 && e.CREATE_TIME.Value >= dtMin, filterC, null); //&& e.STATUSPLAN > 0 - - if ((dtSafeCheck == null || !dtSafeCheck.Any())) - { - return true; //如果没有检查信息 - } - - - - BaseFilter filterCT = new BaseFilter(); - filterCT.SelectField = new List { "ID", "NAME", "IS_DELETED", "ENABLE_STATUS" }; - var listCheckTypeAll = GetEntities(null, filterCT, null);// - - if ((listCheckTypeAll == null || !listCheckTypeAll.Any())) - { - return true; //如果没有检查信息 - } - - - - //枚举动态无效 因为要根据枚举值 做搜索 - string CODE = DateTime.Now.ToString("yyyyMMddHHmmss"); - //List listEnumVal = new List { 5, 10, 15, 20 }; - //List listEnumName = new List { "按时整改隐患", "超期整改隐患", "未整改隐患", "隐患整改率" }; - - var taskSync = GetEntity(filter.Keyword);//跑批待办 - if (taskSync.SYNC_PARAM != null) - { - taskSync.SYNC_PARAM = ""; - } - taskSync.UPDATE_SUCCES_TIME = DateTime.Now; - - //数据类型 - BSCaculateType CaculateType = BSCaculateType.SafeCheck; - //组织 各隐患原因 数量 - - //int perVal = 0; - Guid perSOURCEID = Guid.Empty; - int perCount = 0;//组织对应数量 - int perSubCount = 0;//组织对应下级数量 - int depNum = 0; - int NUMS = 0; - // 子班组 + 本组织 - List listSubDepID = new List(); - var year = dtMin.Year; - //更新近期 信息 - var listResult = GetEntities(e => e.YEAR >= year && e.TYPE == CaculateType, null, null).ToList(); - //List> listDicDate = new List>(); - - List listYear = new List(); - List listMonth = new List(); - List listDtMin = new List(); - DateTime dtTemp = DateTime.Now; - for (int i = 0; i < caculate; i++) - { - dtTemp = dtMin.AddMonths(i); - listYear.Add(dtTemp.Year); - listMonth.Add(dtTemp.Month); - listDtMin.Add(dtTemp); - } - - DateTime dtPerMin = DateTime.Now; - DateTime dtPerMax = DateTime.Now; - - T_BS_SAFE_CHECK check = null; - //班组 - depNum = 0; - NUMS = 0; - Guid GUIDZY = new Guid("2897B8B6-FAC2-432B-8324-0208ADB893A8"); - var depB = listDep.Where(e => e.DEPARTMENT_TYPE == 2).OrderBy(e => e.NUM); - foreach (var itemD in depB) - { - depNum++; - foreach (var itemCT in listCheckTypeAll) - { - NUMS++; - perSOURCEID = itemCT.ID; - check = dtSafeCheck.FirstOrDefault(e => e.CHECK_TYPE_ID == perSOURCEID && e.DEPARTMENTID == itemD.ID); - if (check == null) + try { - continue;//如果没数据 就过 + caculate = int.Parse(filter.Parameter1); //接收来自页面的参数 } - for (int j = 0; j < caculate; j++) + catch { - var perME = listResult.FirstOrDefault(e => e.DEPARTMENT_ID == itemD.ID && e.SOURCEID == perSOURCEID && e.YEAR == listYear[j] && e.MONTH == listMonth[j]); - if (perME == null) - { - perME = GetRiskReason(itemD.DEPARTMENT_TYPE, listYear[j], itemD.ID, perSOURCEID, NUMS, filter.OrgId, 0, listMonth[j], CaculateType);//如果没有 就新建对象 - listResult.Add(perME);//地址引用 应该是支持 - } - if (GUIDZY == perME.ID) - { - - } - perCount = dtSafeCheck.Where(e => e.DEPARTMENTID.Value == itemD.ID && e.CHECK_TYPE_ID.HasValue && e.CHECK_TYPE_ID == perSOURCEID && e.CREATE_TIME.HasValue && e.CREATE_TIME.Value.Year == listYear[j] && e.CREATE_TIME.Value.Month == listMonth[j]).Count();//某组织 年 月 按时整改隐患 - perME.DEPARTMENT_TYPE = (FMDepartmentType)itemD.DEPARTMENT_TYPE; - perME.NUMD = depNum; - perME.COUNT = perCount; - perME.CODE = CODE; + caculate = 6; } } - } - //车间 - depNum = 0; - NUMS = 0; - var depC = listDep.Where(e => e.DEPARTMENT_TYPE == 1).OrderBy(e => e.NUM); - foreach (var itemD in depC) - { - depNum++; - listSubDepID = listDep.Where(e => e.PARENT_ID.HasValue && e.PARENT_ID.Value == itemD.ID).Select(e => e.ID).ToList(); + DateTime dtMin = Convert.ToDateTime(DateTime.Now.AddMonths(-1 * (caculate - 1)).ToString("yyyy-MM-01 00:00:00")); + //按生产单元区分 安全检查 每种检查的数量 - foreach (var itemCT in listCheckTypeAll) + BaseFilter filterD = new BaseFilter(); + filterD.SelectField = new List { "ID", "NAME", "DEPARTMENT_TYPE", "PARENT_ID" }; + var listDep = GetEntities(e => !e.IS_DELETED && e.ENABLE_STATUS == 0, filterD, null); + + if ((listDep == null || !listDep.Any())) { - NUMS++; - perSOURCEID = itemCT.ID; - check = dtSafeCheck.FirstOrDefault(e => e.CHECK_TYPE_ID == perSOURCEID && e.DEPARTMENTID == itemD.ID); - if (check == null) + return true; //如果 没有部门 或者 为设置隐患原因 一般不会这样 + } + + BaseFilter filterC = new BaseFilter(); + filterC.SelectField = new List { "ID", "DEPARTMENTID", "CREATE_TIME", "ENABLE_STATUS", "STATUSPLAN", "CHECK_TYPE_ID" }; + filterC.IgnoreDataRule = true; + //隐患已上报 统计 有没有处理 处理的及时性 + var dtSafeCheck = GetEntities(e => e.CHECK_TYPE_ID.HasValue && e.DEPARTMENTID.HasValue && e.CREATE_TIME.HasValue && e.ENABLE_STATUS == 0 && e.CREATE_TIME.Value >= dtMin, filterC, null); //&& e.STATUSPLAN > 0 + + if ((dtSafeCheck == null || !dtSafeCheck.Any())) + { + return true; //如果没有检查信息 + } + + + + BaseFilter filterCT = new BaseFilter(); + filterCT.SelectField = new List { "ID", "NAME", "IS_DELETED", "ENABLE_STATUS" }; + var listCheckTypeAll = GetEntities(null, filterCT, null);// + + if ((listCheckTypeAll == null || !listCheckTypeAll.Any())) + { + return true; //如果没有检查信息 + } + + + + //枚举动态无效 因为要根据枚举值 做搜索 + string CODE = DateTime.Now.ToString("yyyyMMddHHmmss"); + //List listEnumVal = new List { 5, 10, 15, 20 }; + //List listEnumName = new List { "按时整改隐患", "超期整改隐患", "未整改隐患", "隐患整改率" }; + + var taskSync = GetEntity(filter.Keyword);//跑批待办 + if (taskSync.SYNC_PARAM != null) + { + taskSync.SYNC_PARAM = ""; + } + taskSync.UPDATE_SUCCES_TIME = DateTime.Now; + + //数据类型 + BSCaculateType CaculateType = BSCaculateType.SafeCheck; + //组织 各隐患原因 数量 + + //int perVal = 0; + Guid perSOURCEID = Guid.Empty; + int perCount = 0;//组织对应数量 + int perSubCount = 0;//组织对应下级数量 + int depNum = 0; + int NUMS = 0; + // 子班组 + 本组织 + List listSubDepID = new List(); + var year = dtMin.Year; + //更新近期 信息 + var listResult = GetEntities(e => e.YEAR >= year && e.TYPE == CaculateType, null, null).ToList(); + //List> listDicDate = new List>(); + + List listYear = new List(); + List listMonth = new List(); + List listDtMin = new List(); + DateTime dtTemp = DateTime.Now; + for (int i = 0; i < caculate; i++) + { + dtTemp = dtMin.AddMonths(i); + listYear.Add(dtTemp.Year); + listMonth.Add(dtTemp.Month); + listDtMin.Add(dtTemp); + } + + DateTime dtPerMin = DateTime.Now; + DateTime dtPerMax = DateTime.Now; + + T_BS_SAFE_CHECK check = null; + //班组 + depNum = 0; + NUMS = 0; + Guid GUIDZY = new Guid("2897B8B6-FAC2-432B-8324-0208ADB893A8"); + var depB = listDep.Where(e => e.DEPARTMENT_TYPE == 2).OrderBy(e => e.NUM); + foreach (var itemD in depB) + { + depNum++; + foreach (var itemCT in listCheckTypeAll) { - if (listSubDepID != null && listSubDepID.Any()) + NUMS++; + perSOURCEID = itemCT.ID; + check = dtSafeCheck.FirstOrDefault(e => e.CHECK_TYPE_ID == perSOURCEID && e.DEPARTMENTID == itemD.ID); + if (check == null) { - check = dtSafeCheck.FirstOrDefault(e => e.CHECK_TYPE_ID == perSOURCEID && listSubDepID.Contains(e.DEPARTMENTID.Value)); - if (check == null) + continue;//如果没数据 就过 + } + for (int j = 0; j < caculate; j++) + { + var perME = listResult.FirstOrDefault(e => e.DEPARTMENT_ID == itemD.ID && e.SOURCEID == perSOURCEID && e.YEAR == listYear[j] && e.MONTH == listMonth[j]); + if (perME == null) + { + perME = GetRiskReason(itemD.DEPARTMENT_TYPE, listYear[j], itemD.ID, perSOURCEID, NUMS, filter.OrgId, 0, listMonth[j], CaculateType);//如果没有 就新建对象 + listResult.Add(perME);//地址引用 应该是支持 + } + if (GUIDZY == perME.ID) + { + + } + perCount = dtSafeCheck.Where(e => e.DEPARTMENTID.Value == itemD.ID && e.CHECK_TYPE_ID.HasValue && e.CHECK_TYPE_ID == perSOURCEID && e.CREATE_TIME.HasValue && e.CREATE_TIME.Value.Year == listYear[j] && e.CREATE_TIME.Value.Month == listMonth[j]).Count();//某组织 年 月 按时整改隐患 + perME.DEPARTMENT_TYPE = (FMDepartmentType)itemD.DEPARTMENT_TYPE; + perME.NUMD = depNum; + perME.COUNT = perCount; + perME.CODE = CODE; + } + } + } + + //车间 + depNum = 0; + NUMS = 0; + var depC = listDep.Where(e => e.DEPARTMENT_TYPE == 1).OrderBy(e => e.NUM); + foreach (var itemD in depC) + { + depNum++; + listSubDepID = listDep.Where(e => e.PARENT_ID.HasValue && e.PARENT_ID.Value == itemD.ID).Select(e => e.ID).ToList(); + + foreach (var itemCT in listCheckTypeAll) + { + NUMS++; + perSOURCEID = itemCT.ID; + check = dtSafeCheck.FirstOrDefault(e => e.CHECK_TYPE_ID == perSOURCEID && e.DEPARTMENTID == itemD.ID); + if (check == null) + { + if (listSubDepID != null && listSubDepID.Any()) + { + check = dtSafeCheck.FirstOrDefault(e => e.CHECK_TYPE_ID == perSOURCEID && listSubDepID.Contains(e.DEPARTMENTID.Value)); + if (check == null) + { + continue; + } + } + else { continue; } } - else - { - continue; - } - } - for (int j = 0; j < caculate; j++) - { - var perME = listResult.FirstOrDefault(e => e.DEPARTMENT_ID == itemD.ID && e.SOURCEID == perSOURCEID && e.YEAR == listYear[j] && e.MONTH == listMonth[j]); - if (perME == null) + for (int j = 0; j < caculate; j++) { - perME = GetRiskReason(itemD.DEPARTMENT_TYPE, listYear[j], itemD.ID, perSOURCEID, NUMS, filter.OrgId, 0, listMonth[j], CaculateType);//如果没有 就新建对象 - listResult.Add(perME);//地址引用 应该是支持 - } - perCount = dtSafeCheck.Where(e => e.DEPARTMENTID.Value == itemD.ID && e.CHECK_TYPE_ID.HasValue && e.CHECK_TYPE_ID == perSOURCEID && e.CREATE_TIME.HasValue && e.CREATE_TIME.Value.Year == listYear[j] && e.CREATE_TIME.Value.Month == listMonth[j]).Count();//某组织 年 月 按时整改隐患 - - perSubCount = 0;//每次清零 后相加 - if (listSubDepID != null && listSubDepID.Any()) - { - //子项数据求和 - var listThisChange = listResult.Where(e => e.CODE == CODE && e.SOURCEID == perSOURCEID && e.YEAR == listYear[j] && e.MONTH == listMonth[j] && listSubDepID.Contains(e.DEPARTMENT_ID)); - if (listThisChange != null && listThisChange.Any()) + var perME = listResult.FirstOrDefault(e => e.DEPARTMENT_ID == itemD.ID && e.SOURCEID == perSOURCEID && e.YEAR == listYear[j] && e.MONTH == listMonth[j]); + if (perME == null) { - perSubCount = listThisChange.Sum(e => e.COUNT); + perME = GetRiskReason(itemD.DEPARTMENT_TYPE, listYear[j], itemD.ID, perSOURCEID, NUMS, filter.OrgId, 0, listMonth[j], CaculateType);//如果没有 就新建对象 + listResult.Add(perME);//地址引用 应该是支持 } - } + perCount = dtSafeCheck.Where(e => e.DEPARTMENTID.Value == itemD.ID && e.CHECK_TYPE_ID.HasValue && e.CHECK_TYPE_ID == perSOURCEID && e.CREATE_TIME.HasValue && e.CREATE_TIME.Value.Year == listYear[j] && e.CREATE_TIME.Value.Month == listMonth[j]).Count();//某组织 年 月 按时整改隐患 - perME.DEPARTMENT_TYPE = (FMDepartmentType)itemD.DEPARTMENT_TYPE; - perME.NUMD = depNum; - perME.COUNT = perCount + perSubCount; - perME.CODE = CODE; + perSubCount = 0;//每次清零 后相加 + if (listSubDepID != null && listSubDepID.Any()) + { + //子项数据求和 + var listThisChange = listResult.Where(e => e.CODE == CODE && e.SOURCEID == perSOURCEID && e.YEAR == listYear[j] && e.MONTH == listMonth[j] && listSubDepID.Contains(e.DEPARTMENT_ID)); + if (listThisChange != null && listThisChange.Any()) + { + perSubCount = listThisChange.Sum(e => e.COUNT); + } + } + + perME.DEPARTMENT_TYPE = (FMDepartmentType)itemD.DEPARTMENT_TYPE; + perME.NUMD = depNum; + perME.COUNT = perCount + perSubCount; + perME.CODE = CODE; + } } } - } - //部门 - depNum = 0; - NUMS = 0; - var depBM = listDep.Where(e => e.DEPARTMENT_TYPE == 0).OrderBy(e => e.NUM); - foreach (var itemD in depBM) - { - depNum++; - listSubDepID = listDep.Where(e => e.PARENT_ID.HasValue && e.PARENT_ID.Value == itemD.ID).Select(e => e.ID).ToList(); - foreach (var itemCT in listCheckTypeAll) + //部门 + depNum = 0; + NUMS = 0; + var depBM = listDep.Where(e => e.DEPARTMENT_TYPE == 0).OrderBy(e => e.NUM); + foreach (var itemD in depBM) { - NUMS++; - perSOURCEID = itemCT.ID; - check = dtSafeCheck.FirstOrDefault(e => e.CHECK_TYPE_ID == perSOURCEID && e.DEPARTMENTID == itemD.ID); - if (check == null) + depNum++; + listSubDepID = listDep.Where(e => e.PARENT_ID.HasValue && e.PARENT_ID.Value == itemD.ID).Select(e => e.ID).ToList(); + foreach (var itemCT in listCheckTypeAll) { - if (listSubDepID != null && listSubDepID.Any()) + NUMS++; + perSOURCEID = itemCT.ID; + check = dtSafeCheck.FirstOrDefault(e => e.CHECK_TYPE_ID == perSOURCEID && e.DEPARTMENTID == itemD.ID); + if (check == null) { - check = dtSafeCheck.FirstOrDefault(e => e.CHECK_TYPE_ID == perSOURCEID && listSubDepID.Contains(e.DEPARTMENTID.Value)); - if (check == null) + if (listSubDepID != null && listSubDepID.Any()) + { + check = dtSafeCheck.FirstOrDefault(e => e.CHECK_TYPE_ID == perSOURCEID && listSubDepID.Contains(e.DEPARTMENTID.Value)); + if (check == null) + { + continue; + } + } + else { continue; } } - else - { - continue; - } - } - for (int j = 0; j < caculate; j++) - { - var perME = listResult.FirstOrDefault(e => e.DEPARTMENT_ID == itemD.ID && e.SOURCEID == perSOURCEID && e.YEAR == listYear[j] && e.MONTH == listMonth[j]); - if (perME == null) + for (int j = 0; j < caculate; j++) { - perME = GetRiskReason(itemD.DEPARTMENT_TYPE, listYear[j], itemD.ID, perSOURCEID, NUMS, filter.OrgId, 0, listMonth[j], CaculateType);//如果没有 就新建对象 - listResult.Add(perME);//地址引用 应该是支持 - } - perCount = dtSafeCheck.Where(e => e.DEPARTMENTID.Value == itemD.ID && e.CHECK_TYPE_ID.HasValue && e.CHECK_TYPE_ID == perSOURCEID && e.CREATE_TIME.HasValue && e.CREATE_TIME.Value.Year == listYear[j] && e.CREATE_TIME.Value.Month == listMonth[j]).Count();//某组织 年 月 按时整改隐患 - - perSubCount = 0;//每次清零 后相加 - if (listSubDepID != null && listSubDepID.Any()) - { - //子项数据求和 - var listThisChange = listResult.Where(e => e.CODE == CODE && e.SOURCEID == perSOURCEID && e.YEAR == listYear[j] && e.MONTH == listMonth[j] && listSubDepID.Contains(e.DEPARTMENT_ID)); - if (listThisChange != null && listThisChange.Any()) + var perME = listResult.FirstOrDefault(e => e.DEPARTMENT_ID == itemD.ID && e.SOURCEID == perSOURCEID && e.YEAR == listYear[j] && e.MONTH == listMonth[j]); + if (perME == null) { - perSubCount = listThisChange.Sum(e => e.COUNT); + perME = GetRiskReason(itemD.DEPARTMENT_TYPE, listYear[j], itemD.ID, perSOURCEID, NUMS, filter.OrgId, 0, listMonth[j], CaculateType);//如果没有 就新建对象 + listResult.Add(perME);//地址引用 应该是支持 } - } + perCount = dtSafeCheck.Where(e => e.DEPARTMENTID.Value == itemD.ID && e.CHECK_TYPE_ID.HasValue && e.CHECK_TYPE_ID == perSOURCEID && e.CREATE_TIME.HasValue && e.CREATE_TIME.Value.Year == listYear[j] && e.CREATE_TIME.Value.Month == listMonth[j]).Count();//某组织 年 月 按时整改隐患 - perME.DEPARTMENT_TYPE = (FMDepartmentType)itemD.DEPARTMENT_TYPE; - perME.NUMD = depNum; - perME.COUNT = perCount + perSubCount; - perME.CODE = CODE; + perSubCount = 0;//每次清零 后相加 + if (listSubDepID != null && listSubDepID.Any()) + { + //子项数据求和 + var listThisChange = listResult.Where(e => e.CODE == CODE && e.SOURCEID == perSOURCEID && e.YEAR == listYear[j] && e.MONTH == listMonth[j] && listSubDepID.Contains(e.DEPARTMENT_ID)); + if (listThisChange != null && listThisChange.Any()) + { + perSubCount = listThisChange.Sum(e => e.COUNT); + } + } + + perME.DEPARTMENT_TYPE = (FMDepartmentType)itemD.DEPARTMENT_TYPE; + perME.NUMD = depNum; + perME.COUNT = perCount + perSubCount; + perME.CODE = CODE; + } } } - } - //公司 为了 格式 懒得改 统计所有 - depNum = 0; - NUMS = 0; - var depG = listDep.Where(e => e.DEPARTMENT_TYPE == 3 && !e.PARENT_ID.HasValue); - foreach (var itemD in depG) - { - depNum++; - listSubDepID = listDep.Where(e => e.PARENT_ID.HasValue && e.PARENT_ID.Value == itemD.ID).Select(e => e.ID).ToList(); - foreach (var itemCT in listCheckTypeAll) + //公司 为了 格式 懒得改 统计所有 + depNum = 0; + NUMS = 0; + var depG = listDep.Where(e => e.DEPARTMENT_TYPE == 3 && !e.PARENT_ID.HasValue); + foreach (var itemD in depG) { - NUMS++; - perSOURCEID = itemCT.ID; - check = dtSafeCheck.FirstOrDefault(e => e.CHECK_TYPE_ID == perSOURCEID); - if (check == null) + depNum++; + listSubDepID = listDep.Where(e => e.PARENT_ID.HasValue && e.PARENT_ID.Value == itemD.ID).Select(e => e.ID).ToList(); + foreach (var itemCT in listCheckTypeAll) { - if (listSubDepID != null && listSubDepID.Any()) + NUMS++; + perSOURCEID = itemCT.ID; + check = dtSafeCheck.FirstOrDefault(e => e.CHECK_TYPE_ID == perSOURCEID); + if (check == null) { - check = dtSafeCheck.FirstOrDefault(e => e.CHECK_TYPE_ID == perSOURCEID && listSubDepID.Contains(e.DEPARTMENTID.Value)); - if (check == null) + if (listSubDepID != null && listSubDepID.Any()) + { + check = dtSafeCheck.FirstOrDefault(e => e.CHECK_TYPE_ID == perSOURCEID && listSubDepID.Contains(e.DEPARTMENTID.Value)); + if (check == null) + { + continue; + } + } + else { continue; } } - else - { - continue; - } - } - for (int j = 0; j < caculate; j++) - { - var perME = listResult.FirstOrDefault(e => e.SOURCEID == perSOURCEID && e.YEAR == listYear[j] && e.MONTH == listMonth[j] && e.DEPARTMENT_ID == itemD.ID); - if (perME == null) + for (int j = 0; j < caculate; j++) { - perME = GetRiskReason(itemD.DEPARTMENT_TYPE, listYear[j], itemD.ID, perSOURCEID, NUMS, filter.OrgId, 0, listMonth[j], CaculateType);//如果没有 就新建对象 - listResult.Add(perME);//地址引用 应该是支持 - } + var perME = listResult.FirstOrDefault(e => e.SOURCEID == perSOURCEID && e.YEAR == listYear[j] && e.MONTH == listMonth[j] && e.DEPARTMENT_ID == itemD.ID); + if (perME == null) + { + perME = GetRiskReason(itemD.DEPARTMENT_TYPE, listYear[j], itemD.ID, perSOURCEID, NUMS, filter.OrgId, 0, listMonth[j], CaculateType);//如果没有 就新建对象 + listResult.Add(perME);//地址引用 应该是支持 + } - if (GUIDZY == perME.ID) - { + if (GUIDZY == perME.ID) + { + } + perCount = dtSafeCheck.Where(e => e.CREATE_TIME.HasValue && e.CHECK_TYPE_ID.HasValue && e.CHECK_TYPE_ID == perSOURCEID && e.CREATE_TIME.Value.Year == listYear[j] && e.CREATE_TIME.Value.Month == listMonth[j]).Count();//某组织 年 月 按时整改隐患 + perME.DEPARTMENT_TYPE = (FMDepartmentType)itemD.DEPARTMENT_TYPE; + perME.NUMD = depNum; + perME.COUNT = perCount; + perME.CODE = CODE; } - perCount = dtSafeCheck.Where(e => e.CREATE_TIME.HasValue && e.CHECK_TYPE_ID.HasValue && e.CHECK_TYPE_ID == perSOURCEID && e.CREATE_TIME.Value.Year == listYear[j] && e.CREATE_TIME.Value.Month == listMonth[j]).Count();//某组织 年 月 按时整改隐患 - perME.DEPARTMENT_TYPE = (FMDepartmentType)itemD.DEPARTMENT_TYPE; - perME.NUMD = depNum; - perME.COUNT = perCount; - perME.CODE = CODE; } } + + //找本次有修改的 + var UpdateResult = listResult.Where(e => e.CODE == CODE); + taskSync.TASK_END_TIME = DateTime.Now; + var ccc = listResult.Where(e => e.ID == GUIDZY); + + this.UnifiedCommit(() => + { + if (taskSync != null) //跑批信息 + UpdateEntityNoCommit(taskSync); + if (UpdateResult != null && UpdateResult.Any()) + BantchSaveEntityNoCommit(UpdateResult); + }); } - - //找本次有修改的 - var UpdateResult = listResult.Where(e => e.CODE == CODE); - taskSync.TASK_END_TIME = DateTime.Now; - var ccc = listResult.Where(e => e.ID == GUIDZY); - - this.UnifiedCommit(() => + catch (Exception ex) { - if (taskSync != null) //跑批信息 - UpdateEntityNoCommit(taskSync); - if (UpdateResult != null && UpdateResult.Any()) - BantchSaveEntityNoCommit(UpdateResult); - }); + if (!string.IsNullOrEmpty(ex.StackTrace)) + Logger.LogError("错误日志:[StackTrace]" + ex.StackTrace); + else + Logger.LogError("【" + HttpContext.Request.Path + "】错误日志:[Message]" + ex.Message); + Logger.LogError("filter:" + filter.ToJson()); + } return true; }); } diff --git a/APT.MicroApi/APT.PP.WebApi/Controllers/Api/SCController.cs b/APT.MicroApi/APT.PP.WebApi/Controllers/Api/SCController.cs index ac7a2ee..bd58e68 100644 --- a/APT.MicroApi/APT.PP.WebApi/Controllers/Api/SCController.cs +++ b/APT.MicroApi/APT.PP.WebApi/Controllers/Api/SCController.cs @@ -872,19 +872,19 @@ namespace APT.PP.WebApi.Controllers.Api.PP bool isChange = false; - foreach (var item in listMtBegin) - { - switch (item.SOURCETYPE) - { - case SOURCETYPE.EventReport: + //foreach (var item in listMtBegin) + //{ + // switch (item.SOURCETYPE) + // { + // case SOURCETYPE.EventReport: - if (!isChange) - isChange = true; - break; - default: - break; - } - } + // if (!isChange) + // isChange = true; + // break; + // default: + // break; + // } + //} #endregion diff --git a/APT.MicroApi/APT.PP.WebApi/Program.cs b/APT.MicroApi/APT.PP.WebApi/Program.cs index f974213..3f3df01 100644 --- a/APT.MicroApi/APT.PP.WebApi/Program.cs +++ b/APT.MicroApi/APT.PP.WebApi/Program.cs @@ -1,6 +1,8 @@ using Microsoft.AspNetCore; using Microsoft.AspNetCore.Hosting; using Autofac.Extensions.DependencyInjection; +using Microsoft.Extensions.Hosting; +using Serilog; namespace APT.RB.WebApi { @@ -8,12 +10,27 @@ namespace APT.RB.WebApi { public static void Main(string[] args) { - CreateWebHostBuilder(args).Build().Run(); + Log.Logger = new LoggerConfiguration() + .MinimumLevel.Override("Microsoft", Serilog.Events.LogEventLevel.Error) + .WriteTo.File("logInfo/log-.txt", rollingInterval: RollingInterval.Month) + .CreateLogger(); + try + { + CreateWebHostBuilder(args).Build().Run(); + } + catch (System.Exception ex) + { + Log.Fatal(ex, "Host terminated unexpectedly"); + } + finally + { + Log.CloseAndFlush(); + } } public static IWebHostBuilder CreateWebHostBuilder(string[] args) => WebHost.CreateDefaultBuilder(args) .ConfigureServices(services => services.AddAutofac()) - .UseStartup(); + .UseStartup().UseSerilog();//wyw } } diff --git a/APT.MicroApi/APT.SC.WebApi/Controllers/Api/MTController/SCMTMeetingController.cs b/APT.MicroApi/APT.SC.WebApi/Controllers/Api/MTController/SCMTMeetingController.cs index 18499a4..9f575e0 100644 --- a/APT.MicroApi/APT.SC.WebApi/Controllers/Api/MTController/SCMTMeetingController.cs +++ b/APT.MicroApi/APT.SC.WebApi/Controllers/Api/MTController/SCMTMeetingController.cs @@ -26,16 +26,14 @@ namespace APT.SC.WebApi.Controllers.Api.SC IFMUserService FMUserService { get; set; } IPFApproveCallBackService ApproveCallBackService { get; set; } IPFCodeRuleService PFCodeRuleService { get; set; } - IPFCodeRuleService CodeRuleService { get; set; } IFMNotificationTaskService FMNotificActionTaskService { get; set; } IFMNoticeService FMNoticeService { get; set; } - public SCMTMeetingController(IFMUserService fMUserService, IFMFlowPermitService mFlowPermitService, IPFApproveCallBackService approveCallBackService, IPFCodeRuleService pFCodeRuleService, IPFCodeRuleService codeRuleService, IFMNotificationTaskService fMNotificActionTaskService, IFMNoticeService noticeService) + public SCMTMeetingController(IFMUserService fMUserService, IFMFlowPermitService mFlowPermitService, IPFApproveCallBackService approveCallBackService, IPFCodeRuleService pFCodeRuleService, IFMNotificationTaskService fMNotificActionTaskService, IFMNoticeService noticeService) { FMUserService = fMUserService; MFlowPermitService = mFlowPermitService; ApproveCallBackService = approveCallBackService; PFCodeRuleService = pFCodeRuleService; - CodeRuleService = codeRuleService; FMNotificActionTaskService = fMNotificActionTaskService; FMNoticeService = noticeService; } @@ -247,6 +245,7 @@ namespace APT.SC.WebApi.Controllers.Api.SC { throw new Exception("请选择会议类型!"); } + if (entity.Nav_Department == null) { entity.Nav_Department = GetEntity(entity.DEPARTMENT_ID); @@ -695,21 +694,23 @@ namespace APT.SC.WebApi.Controllers.Api.SC } if (entity.CREACTTYPE == null) - { entity.CREACTTYPE = CREACTTYPEEnum.UserAdd; - } + + if (string.IsNullOrEmpty(entity.CODE)) + entity.CODE = "HY" + DateTime.Now.ToString("yyyyMMddHHmm"); #region 判断对接模块 修改 CREACTTYPE == CREACTTYPEEnum. - if (entity.CREACTTYPE == CREACTTYPEEnum.System || entity.CREACTTYPE == CREACTTYPEEnum.UserAdd) + if ((entity.CREACTTYPE == CREACTTYPEEnum.System || entity.CREACTTYPE == CREACTTYPEEnum.UserAdd) && !string.IsNullOrEmpty(entity.CONTENT32)) { - //非特殊触发 - if (!string.IsNullOrEmpty(entity.CONTENT) && entity.CONTENT.Contains(ConnToOther.ToOG034EditName.GetDescription())) + //普通会议、文件审核会、文件评审会 会议内容是选择的 + //安委会、基层安全会 会议内容输入 + CREACTTYPEEnum? CREACTTYPE = GetCREACTTYPE(entity.MEETINGTYPE, entity.CONTENT32);//根据会议内容 触发对应表单 + if (CREACTTYPE != null) { - entity.CREACTTYPE = CREACTTYPEEnum.ToOG034Edit; + entity.CREACTTYPE = CREACTTYPE; } } - #endregion #region 短信发送 @@ -777,39 +778,14 @@ namespace APT.SC.WebApi.Controllers.Api.SC // 审批完 回调方法 SC/SCMTMeeting/MeetingNoticeBack - #region 隔离事务 怕受影响 - - try - { - if (entity.CREACTTYPE == CREACTTYPEEnum.System || entity.CREACTTYPE == CREACTTYPEEnum.UserAdd) - { - if (contentName != null && contentName.Any()) - { - var connentName = GetEntity(e => e.NAME == ConnToOther.ToOG034EditName.GetDescription()); - if (connentName != null) - { - var check = contentName.FirstOrDefault(e => e.CONTENTNAME_ID == connentName.ID); - if (check != null) - { - entity.CREACTTYPE = CREACTTYPEEnum.ToOG034Edit; - this.UnifiedCommit(() => - { - if (entity != null) - UpdateEntityNoCommit(entity); - }); - } - } - } - } - } - catch { } - - #endregion - if (entity.IS_SEND) { - //短信发送 - FMNoticeService.SendMsg(NOTICETYPE.Meeting, entity.ID); + try + { + //短信发送 + FMNoticeService.SendMsg(NOTICETYPE.Meeting, entity.ID); + } + catch { } } } else @@ -821,8 +797,142 @@ namespace APT.SC.WebApi.Controllers.Api.SC }); } + /// + /// 根据检查内容 返回会议生成方式 + /// + /// + /// + /// + private CREACTTYPEEnum? GetCREACTTYPE(SCMEETINGTYPE MEETINGTYPE, string CONTENT) + { + if (string.IsNullOrEmpty(CONTENT)) + return null; + switch (MEETINGTYPE) + { + case SCMEETINGTYPE.Ordinary: + if (CONTENT.Contains(ConnToOther.ToOG034EditName.GetDescription())) + return CREACTTYPEEnum.ToOG034Edit; + if (CONTENT.Contains(ConnToOther.安全生产方针讨论.GetDescription())) + return CREACTTYPEEnum.ToPT014; + if (CONTENT.Contains(ConnToOther.认可与奖励评价.GetDescription())) + return CREACTTYPEEnum.ToOG028; + if (CONTENT.Contains(ConnToOther.风险评价小组成立.GetDescription())) + return CREACTTYPEEnum.ToHM134; + if (CONTENT.Contains(ConnToOther.设备设施维修计划讨论.GetDescription())) + return null; + if (CONTENT.Contains(ConnToOther.设备设施维修工作方案讨论.GetDescription())) + return null; + if (CONTENT.Contains(ConnToOther.安全投入论证.GetDescription())) + return null; + if (CONTENT.Contains(ConnToOther.应急机构成立及人员任命.GetDescription())) + return CREACTTYPEEnum.ToOG010; + if (CONTENT.Contains(ConnToOther.成立矿山救护队.GetDescription())) + return null; + if (CONTENT.Contains(ConnToOther.潜在紧急事件讨论.GetDescription())) + return CREACTTYPEEnum.ToCM018; + if (CONTENT.Contains(ConnToOther.应急能力评估.GetDescription())) + return CREACTTYPEEnum.ToCM026; + if (CONTENT.Contains(ConnToOther.应急演练计划讨论.GetDescription())) + return CREACTTYPEEnum.ToCM002; + if (CONTENT.Contains(ConnToOther.应急演练方案讨论.GetDescription())) + return CREACTTYPEEnum.ToWJSH; + //if (CONTENT.Contains(ConnToOther.事故调查小组成立.GetDescription())) + // return CREACTTYPEEnum.ToAE006; + //if (CONTENT.Contains(ConnToOther.事故调查讨论.GetDescription())) + // return CREACTTYPEEnum.ToAE008; + //if (CONTENT.Contains(ConnToOther.调查报告讨论.GetDescription())) + // return CREACTTYPEEnum.ToAE018; + + //事故事件与会议关联总体流程 + //事故事件上报[AE006] => 审批 => 触发【事故调查小组成立】会议 => 【事故调查小组成员AE008】表单=> 触发【事故调查讨论】会议 => 【勘察记录表 AE018】表单 => 触发【调查报告讨论】会议 => 【事故事件调查结果填报表AE010】 + if (CONTENT.Contains(ConnToOther.事故调查小组成立.GetDescription())) + return CREACTTYPEEnum.ToAE008; + if (CONTENT.Contains(ConnToOther.事故调查讨论.GetDescription())) + return CREACTTYPEEnum.ToAE018; + if (CONTENT.Contains(ConnToOther.调查报告讨论.GetDescription())) + return CREACTTYPEEnum.ToAE010; + + + if (CONTENT.Contains(ConnToOther.事故事件统计分析.GetDescription())) + return null; + if (CONTENT.Contains(ConnToOther.事故事件回顾.GetDescription())) + return null; + if (CONTENT.Contains(ConnToOther.安全检查表的回顾与更新.GetDescription())) + return CREACTTYPEEnum.ToBS032; + if (CONTENT.Contains(ConnToOther.危险源辨识与风险评价回顾.GetDescription())) + return CREACTTYPEEnum.ToHM062_HM102; + if (CONTENT.Contains(ConnToOther.年度生产作业计划讨论会.GetDescription())) + return CREACTTYPEEnum.ToNotice; + if (CONTENT.Contains(ConnToOther.变化管理讨论.GetDescription())) + return CREACTTYPEEnum.ToPR023; + + break; + case SCMEETINGTYPE.FileAudit: + + if (CONTENT.Contains(ConnToOther.法律法规更新评审会.GetDescription())) + return CREACTTYPEEnum.ToLR010; + if (CONTENT.Contains(ConnToOther.合理化建议评审会.GetDescription())) + return CREACTTYPEEnum.ToOG060; + if (CONTENT.Contains(ConnToOther.安全标准化评审会.GetDescription())) + return CREACTTYPEEnum.ToPE027; + if (CONTENT.Contains(ConnToOther.尾矿勘察文件评审.GetDescription())) + return CREACTTYPEEnum.ToWJSH; + if (CONTENT.Contains(ConnToOther.尾矿安全评价文件评审.GetDescription())) + return CREACTTYPEEnum.ToWJSH; + if (CONTENT.Contains(ConnToOther.回采勘察文件评审.GetDescription())) + return CREACTTYPEEnum.ToTL014; + if (CONTENT.Contains(ConnToOther.尾矿回采安全预评价文件评审.GetDescription())) + return CREACTTYPEEnum.ToWJSH; + if (CONTENT.Contains(ConnToOther.尾矿闭库安全现状评价文件评审.GetDescription())) + return CREACTTYPEEnum.ToWJSH; + if (CONTENT.Contains(ConnToOther.许可作业范围评审会.GetDescription())) + return CREACTTYPEEnum.ToHM104; + if (CONTENT.Contains(ConnToOther.安全生产责任制评审会.GetDescription())) + return CREACTTYPEEnum.ToOG002; + if (CONTENT.Contains(ConnToOther.尾矿防震技术论证报告评审会.GetDescription())) + return CREACTTYPEEnum.ToWJSH; + break; + + case SCMEETINGTYPE.FileReView: + if (CONTENT.Contains(ConnToOther.安全评价文件审核.GetDescription())) + return CREACTTYPEEnum.ToWJSH; + if (CONTENT.Contains(ConnToOther.设计文件审核_露天矿山选厂.GetDescription())) + return CREACTTYPEEnum.ToPR002; + if (CONTENT.Contains(ConnToOther.应急预案审核.GetDescription())) + return CREACTTYPEEnum.ToSC067; + if (CONTENT.Contains(ConnToOther.勘察文件审核_尾矿.GetDescription())) + return CREACTTYPEEnum.ToWJSH; + if (CONTENT.Contains(ConnToOther.勘察文件审核_露天矿山.GetDescription())) + return CREACTTYPEEnum.ToWJSH; + if (CONTENT.Contains(ConnToOther.设计文件审核_尾矿.GetDescription())) + return CREACTTYPEEnum.ToPR002_2; + if (CONTENT.Contains(ConnToOther.回采勘察文件审核_尾矿.GetDescription())) + return CREACTTYPEEnum.ToWJSH; + if (CONTENT.Contains(ConnToOther.回采安全预评价文件审核_尾矿.GetDescription())) + return CREACTTYPEEnum.ToWJSH; + if (CONTENT.Contains(ConnToOther.回采设计文件审核_尾矿.GetDescription())) + return CREACTTYPEEnum.ToPR002_3; + if (CONTENT.Contains(ConnToOther.闭库安全现状评价文件审核_尾矿.GetDescription())) + return CREACTTYPEEnum.ToWJSH; + if (CONTENT.Contains(ConnToOther.闭库设计文件审核_尾矿.GetDescription())) + return CREACTTYPEEnum.ToPR002_4; + if (CONTENT.Contains(ConnToOther.所有的制度文件审核会.GetDescription())) + return null; + break; + + case SCMEETINGTYPE.SafetyBoard: + break; + case SCMEETINGTYPE.BasicSecurity: + break; + default: + break; + } + + return null; + } + /// /// 发送短信 ///