| 
									
										
										
										
											2021-04-30 10:28:37 +08:00
										 |  |  |  | using System; | 
					
						
							|  |  |  |  | using System.Collections.Generic; | 
					
						
							|  |  |  |  | using System.Linq; | 
					
						
							|  |  |  |  | using System.Text; | 
					
						
							|  |  |  |  | using System.Threading.Tasks; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | namespace BLL | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  |     /// <summary> | 
					
						
							|  |  |  |  |     ///  | 
					
						
							|  |  |  |  |     /// </summary> | 
					
						
							|  |  |  |  |    public static class AnalyseResourceService | 
					
						
							|  |  |  |  |     { | 
					
						
							|  |  |  |  |         public static List<Model.SpResourceCollection> GetListResourceCollection(List<string> unitIdList, string userName, DateTime? startTime, DateTime? endTime) | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             var resourceCollections = new List<Model.SpResourceCollection>(); | 
					
						
							|  |  |  |  |             var units = BLL.UnitService.GetUnitDropDownList(); | 
					
						
							|  |  |  |  |             if (unitIdList.Count() > 0) | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |                 units = units.Where(x => unitIdList.Contains(x.UnitId)).ToList(); | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  |             ///本单位 | 
					
						
							|  |  |  |  |             string thisUnitId = BLL.Const.UnitId_CWCEC; | 
					
						
							| 
									
										
										
										
											2023-05-09 19:56:06 +08:00
										 |  |  |  |             //var unitThis = BLL.Const.UnitId_CWCEC; | 
					
						
							| 
									
										
										
										
											2021-04-30 10:28:37 +08:00
										 |  |  |  |             //if (unitThis != null) | 
					
						
							|  |  |  |  |             //{ | 
					
						
							|  |  |  |  |             //    thisUnitId = unitThis.UnitId; | 
					
						
							|  |  |  |  |             //} | 
					
						
							|  |  |  |  |             if (units.Count() > 0) | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |                 foreach (var unitItem in units) | 
					
						
							|  |  |  |  |                 { | 
					
						
							|  |  |  |  |                     List<string> userNameList = new List<string>(); | 
					
						
							|  |  |  |  |                     ////法律法规 | 
					
						
							|  |  |  |  |                     var LawRegulationList = from x in Funs.DB.Law_LawRegulationList | 
					
						
							|  |  |  |  |                                             where (x.UnitId == unitItem.UnitId || (x.UnitId == null && unitItem.UnitId == thisUnitId)) && (!startTime.HasValue || x.CompileDate >= startTime) && (!endTime.HasValue || x.CompileDate <= endTime) | 
					
						
							|  |  |  |  |                                             select x; | 
					
						
							|  |  |  |  |                     if (!string.IsNullOrEmpty(userName)) | 
					
						
							|  |  |  |  |                     { | 
					
						
							|  |  |  |  |                         LawRegulationList = LawRegulationList.Where(x => x.CompileMan.Contains(userName)); | 
					
						
							|  |  |  |  |                     } | 
					
						
							|  |  |  |  |                     ////取上传人 姓名列表 | 
					
						
							|  |  |  |  |                     var nameList1 = LawRegulationList.Select(x => x.CompileMan).Distinct(); | 
					
						
							|  |  |  |  |                     if (nameList1.Count() > 0) | 
					
						
							|  |  |  |  |                     { | 
					
						
							|  |  |  |  |                         userNameList.AddRange(nameList1); | 
					
						
							|  |  |  |  |                     } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |                     ////标准规范 | 
					
						
							|  |  |  |  |                     var HSSEStandardsList = from x in Funs.DB.Law_HSSEStandardsList | 
					
						
							|  |  |  |  |                                             where (x.UnitId == unitItem.UnitId || (x.UnitId == null && unitItem.UnitId == thisUnitId)) && (!startTime.HasValue || x.CompileDate >= startTime) && (!endTime.HasValue || x.CompileDate <= endTime) | 
					
						
							|  |  |  |  |                                             select x; | 
					
						
							|  |  |  |  |                     if (!string.IsNullOrEmpty(userName)) | 
					
						
							|  |  |  |  |                     { | 
					
						
							|  |  |  |  |                         HSSEStandardsList = HSSEStandardsList.Where(x => x.CompileMan.Contains(userName)); | 
					
						
							|  |  |  |  |                     } | 
					
						
							|  |  |  |  |                     ////取上传人 姓名列表 | 
					
						
							|  |  |  |  |                     var nameList2 = HSSEStandardsList.Select(x => x.CompileMan).Distinct(); | 
					
						
							|  |  |  |  |                     if (nameList2.Count() > 0) | 
					
						
							|  |  |  |  |                     { | 
					
						
							|  |  |  |  |                         userNameList.AddRange(nameList2); | 
					
						
							|  |  |  |  |                     } | 
					
						
							|  |  |  |  |                     ////规章制度 | 
					
						
							|  |  |  |  |                     var RulesRegulations = from x in Funs.DB.Law_RulesRegulations | 
					
						
							|  |  |  |  |                                            where (x.UnitId == unitItem.UnitId || (x.UnitId == null && unitItem.UnitId == thisUnitId)) && (!startTime.HasValue || x.CompileDate >= startTime) && (!endTime.HasValue || x.CompileDate <= endTime) | 
					
						
							|  |  |  |  |                                            select x; | 
					
						
							|  |  |  |  |                     if (!string.IsNullOrEmpty(userName)) | 
					
						
							|  |  |  |  |                     { | 
					
						
							|  |  |  |  |                         RulesRegulations = RulesRegulations.Where(x => x.CompileMan.Contains(userName)); | 
					
						
							|  |  |  |  |                     } | 
					
						
							|  |  |  |  |                     var nameList3 = RulesRegulations.Select(x => x.CompileMan).Distinct(); | 
					
						
							|  |  |  |  |                     if (nameList3.Count() > 0) | 
					
						
							|  |  |  |  |                     { | 
					
						
							|  |  |  |  |                         userNameList.AddRange(nameList3); | 
					
						
							|  |  |  |  |                     } | 
					
						
							|  |  |  |  |                     ////管理规定 | 
					
						
							|  |  |  |  |                     var ManageRule = from x in Funs.DB.Law_ManageRule | 
					
						
							|  |  |  |  |                                      where (x.UnitId == unitItem.UnitId || (x.UnitId == null && unitItem.UnitId == thisUnitId)) && (!startTime.HasValue || x.CompileDate >= startTime) && (!endTime.HasValue || x.CompileDate <= endTime) | 
					
						
							|  |  |  |  |                                      select x; | 
					
						
							|  |  |  |  |                     if (!string.IsNullOrEmpty(userName)) | 
					
						
							|  |  |  |  |                     { | 
					
						
							|  |  |  |  |                         ManageRule = ManageRule.Where(x => x.CompileMan.Contains(userName)); | 
					
						
							|  |  |  |  |                     } | 
					
						
							|  |  |  |  |                     var nameList4 = ManageRule.Select(x => x.CompileMan).Distinct(); | 
					
						
							|  |  |  |  |                     if (nameList4.Count() > 0) | 
					
						
							|  |  |  |  |                     { | 
					
						
							|  |  |  |  |                         userNameList.AddRange(nameList4); | 
					
						
							|  |  |  |  |                     } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |                     ////培训教材 | 
					
						
							|  |  |  |  |                     var TrainingItem = from x in Funs.DB.Training_TrainingItem | 
					
						
							|  |  |  |  |                                        where (x.UnitId == unitItem.UnitId || (x.UnitId == null && unitItem.UnitId == thisUnitId)) && (!startTime.HasValue || x.CompileDate >= startTime) && (!endTime.HasValue || x.CompileDate <= endTime) | 
					
						
							|  |  |  |  |                                        select x; | 
					
						
							|  |  |  |  |                     if (!string.IsNullOrEmpty(userName)) | 
					
						
							|  |  |  |  |                     { | 
					
						
							|  |  |  |  |                         TrainingItem = TrainingItem.Where(x => x.CompileMan.Contains(userName)); | 
					
						
							|  |  |  |  |                     } | 
					
						
							|  |  |  |  |                     var nameList5 = TrainingItem.Select(x => x.CompileMan).Distinct(); | 
					
						
							|  |  |  |  |                     if (nameList5.Count() > 0) | 
					
						
							|  |  |  |  |                     { | 
					
						
							|  |  |  |  |                         userNameList.AddRange(nameList5); | 
					
						
							|  |  |  |  |                     } | 
					
						
							|  |  |  |  |                     ////安全试题库 | 
					
						
							|  |  |  |  |                     var TrainTestDBItem = from x in Funs.DB.Training_TrainTestDBItem | 
					
						
							|  |  |  |  |                                           where (x.UnitId == unitItem.UnitId || (x.UnitId == null && unitItem.UnitId == thisUnitId)) && (!startTime.HasValue || x.CompileDate >= startTime) && (!endTime.HasValue || x.CompileDate <= endTime) | 
					
						
							|  |  |  |  |                                           select x; | 
					
						
							|  |  |  |  |                     if (!string.IsNullOrEmpty(userName)) | 
					
						
							|  |  |  |  |                     { | 
					
						
							|  |  |  |  |                         TrainTestDBItem = TrainTestDBItem.Where(x => x.CompileMan.Contains(userName)); | 
					
						
							|  |  |  |  |                     } | 
					
						
							|  |  |  |  |                     var nameList6 = TrainTestDBItem.Select(x => x.CompileMan).Distinct(); | 
					
						
							|  |  |  |  |                     if (nameList6.Count() > 0) | 
					
						
							|  |  |  |  |                     { | 
					
						
							|  |  |  |  |                         userNameList.AddRange(nameList6); | 
					
						
							|  |  |  |  |                     } | 
					
						
							|  |  |  |  |                     ////事故案例库 | 
					
						
							|  |  |  |  |                     var AccidentCaseItem = from x in Funs.DB.EduTrain_AccidentCaseItem | 
					
						
							|  |  |  |  |                                            where (x.UnitId == unitItem.UnitId || (x.UnitId == null && unitItem.UnitId == thisUnitId)) && (!startTime.HasValue || x.CompileDate >= startTime) && (!endTime.HasValue || x.CompileDate <= endTime) | 
					
						
							|  |  |  |  |                                            select x; | 
					
						
							|  |  |  |  |                     if (!string.IsNullOrEmpty(userName)) | 
					
						
							|  |  |  |  |                     { | 
					
						
							|  |  |  |  |                         AccidentCaseItem = AccidentCaseItem.Where(x => x.CompileMan.Contains(userName)); | 
					
						
							|  |  |  |  |                     } | 
					
						
							|  |  |  |  |                     ////取上传人 姓名列表 | 
					
						
							|  |  |  |  |                     var nameList7 = AccidentCaseItem.Select(x => x.CompileMan).Distinct(); | 
					
						
							|  |  |  |  |                     if (nameList7.Count() > 0) | 
					
						
							|  |  |  |  |                     { | 
					
						
							|  |  |  |  |                         userNameList.AddRange(nameList7); | 
					
						
							|  |  |  |  |                     } | 
					
						
							|  |  |  |  |                     ////应知应会库 | 
					
						
							|  |  |  |  |                     var KnowledgeDB = from x in Funs.DB.Training_KnowledgeItem | 
					
						
							|  |  |  |  |                                       where (x.UnitId == unitItem.UnitId || (x.UnitId == null && unitItem.UnitId == thisUnitId)) && (!startTime.HasValue || x.CompileDate >= startTime) && (!endTime.HasValue || x.CompileDate <= endTime) | 
					
						
							|  |  |  |  |                                       select x; | 
					
						
							|  |  |  |  |                     if (!string.IsNullOrEmpty(userName)) | 
					
						
							|  |  |  |  |                     { | 
					
						
							|  |  |  |  |                         KnowledgeDB = KnowledgeDB.Where(x => x.CompileMan.Contains(userName)); | 
					
						
							|  |  |  |  |                     } | 
					
						
							|  |  |  |  |                     ////取上传人 姓名列表 | 
					
						
							|  |  |  |  |                     var nameList8 = KnowledgeDB.Select(x => x.CompileMan).Distinct(); | 
					
						
							|  |  |  |  |                     if (nameList8.Count() > 0) | 
					
						
							|  |  |  |  |                     { | 
					
						
							|  |  |  |  |                         userNameList.AddRange(nameList8); | 
					
						
							|  |  |  |  |                     } | 
					
						
							|  |  |  |  |                     ////危险源 | 
					
						
							|  |  |  |  |                     var HazardList = from x in Funs.DB.Technique_HazardList | 
					
						
							|  |  |  |  |                                      where (x.UnitId == unitItem.UnitId || (x.UnitId == null && unitItem.UnitId == thisUnitId)) && (!startTime.HasValue || x.CompileDate >= startTime) && (!endTime.HasValue || x.CompileDate <= endTime) | 
					
						
							|  |  |  |  |                                      select x; | 
					
						
							|  |  |  |  |                     if (!string.IsNullOrEmpty(userName)) | 
					
						
							|  |  |  |  |                     { | 
					
						
							|  |  |  |  |                         HazardList = HazardList.Where(x => x.CompileMan.Contains(userName)); | 
					
						
							|  |  |  |  |                     } | 
					
						
							|  |  |  |  |                     ////取上传人 姓名列表 | 
					
						
							|  |  |  |  |                     var nameList9 = HazardList.Select(x => x.CompileMan).Distinct(); | 
					
						
							|  |  |  |  |                     if (nameList9.Count() > 0) | 
					
						
							|  |  |  |  |                     { | 
					
						
							|  |  |  |  |                         userNameList.AddRange(nameList9); | 
					
						
							|  |  |  |  |                     } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |                     ////安全隐患 | 
					
						
							|  |  |  |  |                     var Rectify = from x in Funs.DB.Technique_RectifyItem | 
					
						
							|  |  |  |  |                                   where (x.UnitId == unitItem.UnitId || (x.UnitId == null && unitItem.UnitId == thisUnitId)) && (!startTime.HasValue || x.CompileDate >= startTime) && (!endTime.HasValue || x.CompileDate <= endTime) | 
					
						
							|  |  |  |  |                                   select x; | 
					
						
							|  |  |  |  |                     if (!string.IsNullOrEmpty(userName)) | 
					
						
							|  |  |  |  |                     { | 
					
						
							|  |  |  |  |                         Rectify = Rectify.Where(x => x.CompileMan.Contains(userName)); | 
					
						
							|  |  |  |  |                     } | 
					
						
							|  |  |  |  |                     ////取上传人 姓名列表 | 
					
						
							|  |  |  |  |                     var nameList10 = Rectify.Select(x => x.CompileMan).Distinct(); | 
					
						
							|  |  |  |  |                     if (nameList10.Count() > 0) | 
					
						
							|  |  |  |  |                     { | 
					
						
							|  |  |  |  |                         userNameList.AddRange(nameList10); | 
					
						
							|  |  |  |  |                     } | 
					
						
							|  |  |  |  |                     ////HAZOP管理 | 
					
						
							|  |  |  |  |                     var HAZOP = from x in Funs.DB.Technique_HAZOP | 
					
						
							|  |  |  |  |                                 where (x.UnitId == unitItem.UnitId || (x.UnitId == null && unitItem.UnitId == thisUnitId)) && (!startTime.HasValue || x.CompileDate >= startTime) && (!endTime.HasValue || x.CompileDate <= endTime) | 
					
						
							|  |  |  |  |                                 select x; | 
					
						
							|  |  |  |  |                     if (!string.IsNullOrEmpty(userName)) | 
					
						
							|  |  |  |  |                     { | 
					
						
							|  |  |  |  |                         HAZOP = HAZOP.Where(x => x.CompileMan.Contains(userName)); | 
					
						
							|  |  |  |  |                     } | 
					
						
							|  |  |  |  |                     ////取上传人 姓名列表 | 
					
						
							|  |  |  |  |                     var nameList11 = HAZOP.Select(x => x.CompileMan).Distinct(); | 
					
						
							|  |  |  |  |                     if (nameList11.Count() > 0) | 
					
						
							|  |  |  |  |                     { | 
					
						
							|  |  |  |  |                         userNameList.AddRange(nameList11); | 
					
						
							|  |  |  |  |                     } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |                     ////AppraiseCount管理 | 
					
						
							|  |  |  |  |                     var Appraise = from x in Funs.DB.Technique_Appraise | 
					
						
							|  |  |  |  |                                    where (x.UnitId == unitItem.UnitId || (x.UnitId == null && unitItem.UnitId == thisUnitId)) && (!startTime.HasValue || x.CompileDate >= startTime) && (!endTime.HasValue || x.CompileDate <= endTime) | 
					
						
							|  |  |  |  |                                    select x; | 
					
						
							|  |  |  |  |                     if (!string.IsNullOrEmpty(userName)) | 
					
						
							|  |  |  |  |                     { | 
					
						
							|  |  |  |  |                         Appraise = Appraise.Where(x => x.CompileMan.Contains(userName)); | 
					
						
							|  |  |  |  |                     } | 
					
						
							|  |  |  |  |                     ////取上传人 姓名列表 | 
					
						
							|  |  |  |  |                     var nameListAppraise = Appraise.Select(x => x.CompileMan).Distinct(); | 
					
						
							|  |  |  |  |                     if (nameListAppraise.Count() > 0) | 
					
						
							|  |  |  |  |                     { | 
					
						
							|  |  |  |  |                         userNameList.AddRange(nameListAppraise); | 
					
						
							|  |  |  |  |                     } | 
					
						
							|  |  |  |  |                     ////安全专家 | 
					
						
							|  |  |  |  |                     var Expert = from x in Funs.DB.Technique_Expert | 
					
						
							|  |  |  |  |                                  where (x.UnitId == unitItem.UnitId || (x.UnitId == null && unitItem.UnitId == thisUnitId)) && (!startTime.HasValue || x.CompileDate >= startTime) && (!endTime.HasValue || x.CompileDate <= endTime) | 
					
						
							|  |  |  |  |                                  select x; | 
					
						
							|  |  |  |  |                     if (!string.IsNullOrEmpty(userName)) | 
					
						
							|  |  |  |  |                     { | 
					
						
							|  |  |  |  |                         Expert = Expert.Where(x => x.CompileMan.Contains(userName)); | 
					
						
							|  |  |  |  |                     } | 
					
						
							|  |  |  |  |                     ////取上传人 姓名列表 | 
					
						
							|  |  |  |  |                     var nameList12 = Expert.Select(x => x.CompileMan).Distinct(); | 
					
						
							|  |  |  |  |                     if (nameList12.Count() > 0) | 
					
						
							|  |  |  |  |                     { | 
					
						
							|  |  |  |  |                         userNameList.AddRange(nameList12); | 
					
						
							|  |  |  |  |                     } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |                     ////应急预案 | 
					
						
							|  |  |  |  |                     var Emergency = from x in Funs.DB.Technique_Emergency | 
					
						
							|  |  |  |  |                                     where (x.UnitId == unitItem.UnitId || (x.UnitId == null && unitItem.UnitId == thisUnitId)) && (!startTime.HasValue || x.CompileDate >= startTime) && (!endTime.HasValue || x.CompileDate <= endTime) | 
					
						
							|  |  |  |  |                                     select x; | 
					
						
							|  |  |  |  |                     if (!string.IsNullOrEmpty(userName)) | 
					
						
							|  |  |  |  |                     { | 
					
						
							|  |  |  |  |                         Emergency = Emergency.Where(x => x.CompileMan.Contains(userName)); | 
					
						
							|  |  |  |  |                     } | 
					
						
							|  |  |  |  |                     ////取上传人 姓名列表 | 
					
						
							|  |  |  |  |                     var nameList13 = Emergency.Select(x => x.CompileMan).Distinct(); | 
					
						
							|  |  |  |  |                     if (nameList13.Count() > 0) | 
					
						
							|  |  |  |  |                     { | 
					
						
							|  |  |  |  |                         userNameList.AddRange(nameList13); | 
					
						
							|  |  |  |  |                     } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |                     ////专项方案 | 
					
						
							|  |  |  |  |                     var SpecialScheme = from x in Funs.DB.Technique_SpecialScheme | 
					
						
							|  |  |  |  |                                         where (x.UnitId == unitItem.UnitId || (x.UnitId == null && unitItem.UnitId == thisUnitId)) && (!startTime.HasValue || x.CompileDate >= startTime) && (!endTime.HasValue || x.CompileDate <= endTime) | 
					
						
							|  |  |  |  |                                         select x; | 
					
						
							|  |  |  |  |                     if (!string.IsNullOrEmpty(userName)) | 
					
						
							|  |  |  |  |                     { | 
					
						
							|  |  |  |  |                         SpecialScheme = SpecialScheme.Where(x => x.CompileMan.Contains(userName)); | 
					
						
							|  |  |  |  |                     } | 
					
						
							|  |  |  |  |                     ////取上传人 姓名列表 | 
					
						
							|  |  |  |  |                     var nameList14 = SpecialScheme.Select(x => x.CompileMan).Distinct(); | 
					
						
							|  |  |  |  |                     if (nameList14.Count() > 0) | 
					
						
							|  |  |  |  |                     { | 
					
						
							|  |  |  |  |                         userNameList.AddRange(nameList14); | 
					
						
							|  |  |  |  |                     } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |                     if (userNameList.Count() > 0) | 
					
						
							|  |  |  |  |                     { | 
					
						
							|  |  |  |  |                         userNameList = userNameList.Distinct().ToList(); | 
					
						
							|  |  |  |  |                         foreach (var userItem in userNameList) | 
					
						
							|  |  |  |  |                         { | 
					
						
							|  |  |  |  |                             Model.SpResourceCollection spItem = new Model.SpResourceCollection | 
					
						
							|  |  |  |  |                             { | 
					
						
							|  |  |  |  |                                 UnitName = unitItem.UnitName, | 
					
						
							|  |  |  |  |                                 UserName = userItem, | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |                                 ////法律法规 | 
					
						
							|  |  |  |  |                                 LawRegulationCount = LawRegulationList.Where(x => x.CompileMan == userItem).Count() | 
					
						
							|  |  |  |  |                             }; | 
					
						
							|  |  |  |  |                             int LawRegulationPass = LawRegulationList.Where(x => x.CompileMan == userItem && x.IsPass == true).Count(); | 
					
						
							|  |  |  |  |                             spItem.TotalCount += spItem.LawRegulationCount; | 
					
						
							|  |  |  |  |                             spItem.TotalUsedCount += LawRegulationPass; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |                             ////标准规范 | 
					
						
							|  |  |  |  |                             spItem.HSSEStandardListCount = HSSEStandardsList.Where(x => x.CompileMan == userItem).Count(); | 
					
						
							|  |  |  |  |                             int HSSEStandardListPass = HSSEStandardsList.Where(x => x.CompileMan == userItem && x.IsPass == true).Count(); | 
					
						
							|  |  |  |  |                             spItem.TotalCount += spItem.HSSEStandardListCount; | 
					
						
							|  |  |  |  |                             spItem.TotalUsedCount += HSSEStandardListPass; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |                             ////规章制度 | 
					
						
							|  |  |  |  |                             spItem.RulesRegulationsCount = RulesRegulations.Where(x => x.CompileMan == userItem).Count(); | 
					
						
							|  |  |  |  |                             int RulesRegulationsPass = RulesRegulations.Where(x => x.CompileMan == userItem && x.IsPass == true).Count(); | 
					
						
							|  |  |  |  |                             spItem.TotalCount += spItem.RulesRegulationsCount; | 
					
						
							|  |  |  |  |                             spItem.TotalUsedCount += RulesRegulationsPass; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |                             ////管理规定 | 
					
						
							|  |  |  |  |                             spItem.ManageRuleCount = ManageRule.Where(x => x.CompileMan == userItem).Count(); | 
					
						
							|  |  |  |  |                             int ManageRulePass = ManageRule.Where(x => x.CompileMan == userItem && x.IsPass == true).Count(); | 
					
						
							|  |  |  |  |                             spItem.TotalCount += spItem.ManageRuleCount; | 
					
						
							|  |  |  |  |                             spItem.TotalUsedCount += ManageRulePass; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |                             ////培训教材 | 
					
						
							|  |  |  |  |                             spItem.TrainDBCount = TrainingItem.Where(x => x.CompileMan == userItem).Count(); | 
					
						
							|  |  |  |  |                             int TrainingItemPass = TrainingItem.Where(x => x.CompileMan == userItem && x.IsPass == true).Count(); | 
					
						
							|  |  |  |  |                             spItem.TotalCount += spItem.TrainDBCount; | 
					
						
							|  |  |  |  |                             spItem.TotalUsedCount += TrainingItemPass; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |                             ////安全试题库 | 
					
						
							|  |  |  |  |                             spItem.TrainTestDBCount = TrainTestDBItem.Where(x => x.CompileMan == userItem).Count(); | 
					
						
							|  |  |  |  |                             int TrainTestDBItemPass = TrainTestDBItem.Where(x => x.CompileMan == userItem && x.IsPass == true).Count(); | 
					
						
							|  |  |  |  |                             spItem.TotalCount += spItem.TrainTestDBCount; | 
					
						
							|  |  |  |  |                             spItem.TotalUsedCount += TrainTestDBItemPass; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |                             ////事故案例库 | 
					
						
							|  |  |  |  |                             spItem.AccidentCaseCount = AccidentCaseItem.Where(x => x.CompileMan == userItem).Count(); | 
					
						
							|  |  |  |  |                             int AccidentCaseItemPass = AccidentCaseItem.Where(x => x.CompileMan == userItem && x.IsPass == true).Count(); | 
					
						
							|  |  |  |  |                             spItem.TotalCount += spItem.AccidentCaseCount; | 
					
						
							|  |  |  |  |                             spItem.TotalUsedCount += AccidentCaseItemPass; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |                             ////应知应会库 | 
					
						
							|  |  |  |  |                             spItem.KnowledgeDBCount = KnowledgeDB.Where(x => x.CompileMan == userItem).Count(); | 
					
						
							|  |  |  |  |                             int KnowledgeDBPass = KnowledgeDB.Where(x => x.CompileMan == userItem && x.IsPass == true).Count(); | 
					
						
							|  |  |  |  |                             spItem.TotalCount += spItem.KnowledgeDBCount; | 
					
						
							|  |  |  |  |                             spItem.TotalUsedCount += KnowledgeDBPass; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |                             ////危险源 | 
					
						
							|  |  |  |  |                             spItem.HazardListCount = HazardList.Where(x => x.CompileMan == userItem).Count(); | 
					
						
							|  |  |  |  |                             int HazardListPass = HazardList.Where(x => x.CompileMan == userItem && x.IsPass == true).Count(); | 
					
						
							|  |  |  |  |                             spItem.TotalCount += spItem.HazardListCount; | 
					
						
							|  |  |  |  |                             spItem.TotalUsedCount += HazardListPass; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |                             ////安全隐患 | 
					
						
							|  |  |  |  |                             spItem.RectifyCount = Rectify.Where(x => x.CompileMan == userItem).Count(); | 
					
						
							|  |  |  |  |                             int RectifyPass = Rectify.Where(x => x.CompileMan == userItem && x.IsPass == true).Count(); | 
					
						
							|  |  |  |  |                             spItem.TotalCount += spItem.RectifyCount; | 
					
						
							|  |  |  |  |                             spItem.TotalUsedCount += RectifyPass; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |                             ////HAZOP管理 | 
					
						
							|  |  |  |  |                             spItem.HAZOPCount = HAZOP.Where(x => x.CompileMan == userItem).Count(); | 
					
						
							|  |  |  |  |                             int HAZOPPass = HAZOP.Where(x => x.CompileMan == userItem && x.IsPass == true).Count(); | 
					
						
							|  |  |  |  |                             spItem.TotalCount += spItem.HAZOPCount; | 
					
						
							|  |  |  |  |                             spItem.TotalUsedCount += HAZOPPass; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |                             ////AppraiseCount管理 | 
					
						
							|  |  |  |  |                             spItem.AppraiseCount = Appraise.Where(x => x.CompileMan == userItem).Count(); | 
					
						
							|  |  |  |  |                             int AppraisePass = Appraise.Where(x => x.CompileMan == userItem && x.IsPass == true).Count(); | 
					
						
							|  |  |  |  |                             spItem.TotalCount += spItem.AppraiseCount; | 
					
						
							|  |  |  |  |                             spItem.TotalUsedCount += AppraisePass; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |                             ////安全专家 | 
					
						
							|  |  |  |  |                             spItem.ExpertCount = Expert.Where(x => x.CompileMan == userItem).Count(); | 
					
						
							|  |  |  |  |                             int ExpertPass = Expert.Where(x => x.CompileMan == userItem && x.IsPass == true).Count(); | 
					
						
							|  |  |  |  |                             spItem.TotalCount += spItem.ExpertCount; | 
					
						
							|  |  |  |  |                             spItem.TotalUsedCount += ExpertPass; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |                             ////应急预案 | 
					
						
							|  |  |  |  |                             spItem.EmergencyCount = Emergency.Where(x => x.CompileMan == userItem).Count(); | 
					
						
							|  |  |  |  |                             int EmergencyPass = Emergency.Where(x => x.CompileMan == userItem && x.IsPass == true).Count(); | 
					
						
							|  |  |  |  |                             spItem.TotalCount += spItem.EmergencyCount; | 
					
						
							|  |  |  |  |                             spItem.TotalUsedCount += EmergencyPass; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |                             ////专项方案 | 
					
						
							|  |  |  |  |                             spItem.SpecialSchemeCount = SpecialScheme.Where(x => x.CompileMan == userItem).Count(); | 
					
						
							|  |  |  |  |                             int SpecialSchemePass = SpecialScheme.Where(x => x.CompileMan == userItem && x.IsPass == true).Count(); | 
					
						
							|  |  |  |  |                             spItem.TotalCount += spItem.SpecialSchemeCount; | 
					
						
							|  |  |  |  |                             spItem.TotalUsedCount += SpecialSchemePass; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |                             string rate = string.Empty; | 
					
						
							|  |  |  |  |                             if (spItem.TotalCount > 0) | 
					
						
							|  |  |  |  |                             { | 
					
						
							|  |  |  |  |                                 decimal totalUsedRate = Convert.ToDecimal(spItem.TotalUsedCount) / Convert.ToDecimal(spItem.TotalCount); | 
					
						
							|  |  |  |  |                                 totalUsedRate = Math.Round(totalUsedRate * 100, 2, MidpointRounding.AwayFromZero); | 
					
						
							|  |  |  |  |                                 if (totalUsedRate == 1) | 
					
						
							|  |  |  |  |                                 { | 
					
						
							|  |  |  |  |                                     rate = "100.00"; | 
					
						
							|  |  |  |  |                                 } | 
					
						
							|  |  |  |  |                                 else | 
					
						
							|  |  |  |  |                                 { | 
					
						
							|  |  |  |  |                                     rate = totalUsedRate.ToString(); | 
					
						
							|  |  |  |  |                                 } | 
					
						
							|  |  |  |  |                             } | 
					
						
							|  |  |  |  |                             else | 
					
						
							|  |  |  |  |                             { | 
					
						
							|  |  |  |  |                                 rate = "0"; | 
					
						
							|  |  |  |  |                             } | 
					
						
							|  |  |  |  |                             spItem.TotalUsedRate = rate + "%"; | 
					
						
							|  |  |  |  |                             resourceCollections.Add(spItem); | 
					
						
							|  |  |  |  |                         } | 
					
						
							|  |  |  |  |                     } | 
					
						
							|  |  |  |  |                     else | 
					
						
							|  |  |  |  |                     { | 
					
						
							|  |  |  |  |                         Model.SpResourceCollection spResourceCollection = new Model.SpResourceCollection | 
					
						
							|  |  |  |  |                         { | 
					
						
							|  |  |  |  |                             UnitName = unitItem.UnitName | 
					
						
							|  |  |  |  |                         }; | 
					
						
							|  |  |  |  |                         resourceCollections.Add(spResourceCollection); | 
					
						
							|  |  |  |  |                     } | 
					
						
							|  |  |  |  |                 } | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |             return resourceCollections; | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | } |