1338 lines
		
	
	
		
			59 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
		
		
			
		
	
	
			1338 lines
		
	
	
		
			59 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| 
								 | 
							
								using APT.BaseData.Domain.Entities.FM;
							 | 
						|||
| 
								 | 
							
								using APT.Infrastructure.Core;
							 | 
						|||
| 
								 | 
							
								using Microsoft.AspNetCore.Mvc;
							 | 
						|||
| 
								 | 
							
								using APT.Infrastructure.Api;
							 | 
						|||
| 
								 | 
							
								using System.Collections.Generic;
							 | 
						|||
| 
								 | 
							
								using System.Linq.Expressions;
							 | 
						|||
| 
								 | 
							
								using System;
							 | 
						|||
| 
								 | 
							
								using System.Linq;
							 | 
						|||
| 
								 | 
							
								using APT.BaseData.Domain.ApiModel;
							 | 
						|||
| 
								 | 
							
								using Ubiety.Dns.Core;
							 | 
						|||
| 
								 | 
							
								using System.Security.AccessControl;
							 | 
						|||
| 
								 | 
							
								using APT.MS.Domain.Entities.FO;
							 | 
						|||
| 
								 | 
							
								using APT.BaseData.Domain.Entities;
							 | 
						|||
| 
								 | 
							
								using APT.MS.Domain.Enums;
							 | 
						|||
| 
								 | 
							
								using APT.MS.Domain.Entities.BI;
							 | 
						|||
| 
								 | 
							
								using static APT.MS.Domain.Enums.BI.BIEnums;
							 | 
						|||
| 
								 | 
							
								using APT.Utility;
							 | 
						|||
| 
								 | 
							
								using APT.MS.Domain.Entities.BS;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								namespace APT.SC.WebApi.Controllers.Api.BI
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
								    /// <summary>
							 | 
						|||
| 
								 | 
							
								    ///  年度监测汇总
							 | 
						|||
| 
								 | 
							
								    /// </summary>
							 | 
						|||
| 
								 | 
							
								    [Route("api/BI/BISafe")]
							 | 
						|||
| 
								 | 
							
								    public class BISafeController : AuthorizeApiController<T_BI_BSSAFECHECK>
							 | 
						|||
| 
								 | 
							
								    {
							 | 
						|||
| 
								 | 
							
								        //IBIBSSafeCheckService BIBSSafeCheckService { get; set; }
							 | 
						|||
| 
								 | 
							
								        //public BISafeController(IBIBSSafeCheckService bIBSSafeCheckService)
							 | 
						|||
| 
								 | 
							
								        //{
							 | 
						|||
| 
								 | 
							
								        //    BIBSSafeCheckService = bIBSSafeCheckService;
							 | 
						|||
| 
								 | 
							
								        //}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        /// <summary>
							 | 
						|||
| 
								 | 
							
								        /// 显示
							 | 
						|||
| 
								 | 
							
								        /// </summary>
							 | 
						|||
| 
								 | 
							
								        /// <param name="filter"></param>
							 | 
						|||
| 
								 | 
							
								        /// <returns></returns>
							 | 
						|||
| 
								 | 
							
								        [HttpPost, Route("GetShow")]
							 | 
						|||
| 
								 | 
							
								        public JsonActionResult<BISafe> GetShow([FromBody] KeywordFilter filter)
							 | 
						|||
| 
								 | 
							
								        {
							 | 
						|||
| 
								 | 
							
								            return SafeExecute<BISafe>(() =>
							 | 
						|||
| 
								 | 
							
								            {
							 | 
						|||
| 
								 | 
							
								                BISafe result = new BISafe();
							 | 
						|||
| 
								 | 
							
								                string Parameter1 = string.Empty;
							 | 
						|||
| 
								 | 
							
								                string Parameter2 = string.Empty;
							 | 
						|||
| 
								 | 
							
								                if (filter.FilterGroup.Rules.Count == 2)
							 | 
						|||
| 
								 | 
							
								                {
							 | 
						|||
| 
								 | 
							
								                    foreach (var item in filter.FilterGroup.Rules)
							 | 
						|||
| 
								 | 
							
								                    {
							 | 
						|||
| 
								 | 
							
								                        if (item.Field == "Parameter1")
							 | 
						|||
| 
								 | 
							
								                        {
							 | 
						|||
| 
								 | 
							
								                            Parameter1 = item.Value.ToString();
							 | 
						|||
| 
								 | 
							
								                        }
							 | 
						|||
| 
								 | 
							
								                        else if (item.Field == "Parameter2")
							 | 
						|||
| 
								 | 
							
								                        {
							 | 
						|||
| 
								 | 
							
								                            if (item.Value == null)
							 | 
						|||
| 
								 | 
							
								                            {
							 | 
						|||
| 
								 | 
							
								                                throw new Exception("参数2为空!");
							 | 
						|||
| 
								 | 
							
								                            }
							 | 
						|||
| 
								 | 
							
								                            else
							 | 
						|||
| 
								 | 
							
								                            {
							 | 
						|||
| 
								 | 
							
								                                Parameter2 = item.Value.ToString();
							 | 
						|||
| 
								 | 
							
								                            }
							 | 
						|||
| 
								 | 
							
								                        }
							 | 
						|||
| 
								 | 
							
								                    }
							 | 
						|||
| 
								 | 
							
								                }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                if (!string.IsNullOrEmpty(Parameter1) || !string.IsNullOrEmpty(Parameter2))
							 | 
						|||
| 
								 | 
							
								                {
							 | 
						|||
| 
								 | 
							
								                    string Code = "BI002_BSSAFECHECK"; //编码
							 | 
						|||
| 
								 | 
							
								                    FilterTimeType? timeType = null;
							 | 
						|||
| 
								 | 
							
								                    BSMineTypeEditEnum? mineType = null;
							 | 
						|||
| 
								 | 
							
								                    try
							 | 
						|||
| 
								 | 
							
								                    {
							 | 
						|||
| 
								 | 
							
								                        timeType = (FilterTimeType)(int.Parse(Parameter1));
							 | 
						|||
| 
								 | 
							
								                    }
							 | 
						|||
| 
								 | 
							
								                    catch { }
							 | 
						|||
| 
								 | 
							
								                    try
							 | 
						|||
| 
								 | 
							
								                    {
							 | 
						|||
| 
								 | 
							
								                        mineType = (BSMineTypeEditEnum)(int.Parse(Parameter2));
							 | 
						|||
| 
								 | 
							
								                    }
							 | 
						|||
| 
								 | 
							
								                    catch { }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                    if (timeType != null && mineType != null)
							 | 
						|||
| 
								 | 
							
								                    {
							 | 
						|||
| 
								 | 
							
								                        var listSafeCheck = GetEntities<T_BI_BSSAFECHECK>(e => e.ORG_ID == filter.OrgId.Value && e.TimeType == timeType.Value && e.MineType == mineType.Value, null).OrderBy(e => e.TEAMNAME).ToList();
							 | 
						|||
| 
								 | 
							
								                        var listCheckType = GetEntities<T_BI_BSCHECKTYPE>(e => e.ORG_ID == filter.OrgId.Value && e.TimeType == timeType.Value && e.MineType == mineType.Value, null).OrderBy(e => e.name).ToList();
							 | 
						|||
| 
								 | 
							
								                        var summary = GetEntity<T_BI_SUMMARY>(e => e.ORG_ID == filter.OrgId.Value && e.TimeType == timeType.Value && e.MineType == mineType.Value && e.CODE == Code);
							 | 
						|||
| 
								 | 
							
								                        result.listSafeCheck = listSafeCheck;
							 | 
						|||
| 
								 | 
							
								                        result.listCheckType = listCheckType;
							 | 
						|||
| 
								 | 
							
								                        result.summary = summary;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                    }
							 | 
						|||
| 
								 | 
							
								                }
							 | 
						|||
| 
								 | 
							
								                return result;
							 | 
						|||
| 
								 | 
							
								            });
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        #region      安全检查绩效报表
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        #region    主界面与各弹窗的方法
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        /// <summary>
							 | 
						|||
| 
								 | 
							
								        /// 显示  
							 | 
						|||
| 
								 | 
							
								        /// </summary>
							 | 
						|||
| 
								 | 
							
								        /// <param name="filter"></param>
							 | 
						|||
| 
								 | 
							
								        /// <returns></returns>
							 | 
						|||
| 
								 | 
							
								        [HttpPost, Route("GetBI056Main")]
							 | 
						|||
| 
								 | 
							
								        public JsonActionResult<ModelBI056Main> GetBI056Main([FromBody] KeywordFilter filter)
							 | 
						|||
| 
								 | 
							
								        {
							 | 
						|||
| 
								 | 
							
								            return SafeExecute<ModelBI056Main>(() =>
							 | 
						|||
| 
								 | 
							
								            {
							 | 
						|||
| 
								 | 
							
								                ModelBI056Main result = new ModelBI056Main();
							 | 
						|||
| 
								 | 
							
								                DateTime dtStart = Convert.ToDateTime(DateTime.Now.Year.ToString() + "-01-01 00:00:00");
							 | 
						|||
| 
								 | 
							
								                DateTime? dtEnd = null;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                #region  enmusLevel=> lisLevelOrder   enmusMineType=>lisMineTypeOrder 
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                //var enmus = GetEntities<T_FM_ENUMS>(e => !e.IS_DELETED, null, "ID", "VALUE", "NUM", "CODE", "NAME");
							 | 
						|||
| 
								 | 
							
								                var enmus = GetEntities<T_FM_ENUMS>(e => !e.IS_DELETED, null, null);
							 | 
						|||
| 
								 | 
							
								                if (enmus == null || !enmus.Any())
							 | 
						|||
| 
								 | 
							
								                    throw new Exception("获取生成单元、组织层级等枚举信息失败!");
							 | 
						|||
| 
								 | 
							
								                List<string> lisLevelOrder = new List<string>();
							 | 
						|||
| 
								 | 
							
								                List<string> lisMineTypeOrder = new List<string>();
							 | 
						|||
| 
								 | 
							
								                var enmusLevel = enmus.Where(e => e.CODE == "HMLevleEnum").OrderBy(e => e.NUM).ToList();
							 | 
						|||
| 
								 | 
							
								                var enmusMineType = enmus.Where(e => e.CODE == "BSMineTypeEnum").OrderBy(e => e.NUM).ToList();
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                if (enmusLevel == null || !enmusLevel.Any())
							 | 
						|||
| 
								 | 
							
								                    throw new Exception("获取组织层级枚举信息失败!");
							 | 
						|||
| 
								 | 
							
								                else
							 | 
						|||
| 
								 | 
							
								                {
							 | 
						|||
| 
								 | 
							
								                    foreach (var item in enmusLevel)
							 | 
						|||
| 
								 | 
							
								                    {
							 | 
						|||
| 
								 | 
							
								                        lisLevelOrder.Add(item.NAME);
							 | 
						|||
| 
								 | 
							
								                    }
							 | 
						|||
| 
								 | 
							
								                }
							 | 
						|||
| 
								 | 
							
								                if (enmusMineType == null || !enmusMineType.Any())
							 | 
						|||
| 
								 | 
							
								                    throw new Exception("获取生成单元枚举信息失败!");
							 | 
						|||
| 
								 | 
							
								                else
							 | 
						|||
| 
								 | 
							
								                {
							 | 
						|||
| 
								 | 
							
								                    foreach (var item in enmusMineType)
							 | 
						|||
| 
								 | 
							
								                    {
							 | 
						|||
| 
								 | 
							
								                        lisMineTypeOrder.Add(item.NAME);
							 | 
						|||
| 
								 | 
							
								                    }
							 | 
						|||
| 
								 | 
							
								                }
							 | 
						|||
| 
								 | 
							
								                #endregion
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                #region 改良版 listSafeCheck 所有的符合条件的检查信息
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                Expression<Func<T_BS_SAFE_CHECK, bool>> expression = e => !e.IS_DELETED && e.CHECKOBJECT.HasValue && e.CHECK_TYPE_LEVEL_ID.HasValue && e.CHECKTIME.HasValue && dtStart <= e.CHECKTIME.Value;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                if (dtEnd.HasValue)
							 | 
						|||
| 
								 | 
							
								                    expression = expression.And(e => e.CHECKTIME.HasValue && dtEnd.Value >= e.CHECKTIME.Value);
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                BaseFilter filterSearch = new BaseFilter(filter.OrgId);
							 | 
						|||
| 
								 | 
							
								                filterSearch.IgnoreDataRule = true;
							 | 
						|||
| 
								 | 
							
								                filterSearch.Include.Add("Nav_CheckTypeLevel");
							 | 
						|||
| 
								 | 
							
								                filterSearch.SelectField = new List<string>() { "ID", "CHECKOBJECT", "CHECK_TYPE_ID", "IS_DELETED", "CHECKTIME", "Nav_CheckTypeLevel.CheckLevel_ENUMS_ID" };
							 | 
						|||
| 
								 | 
							
								                //var listSafeCheck = GetEntities(expression, null, "Nav_CheckTypeLevel");
							 | 
						|||
| 
								 | 
							
								                var listSafeCheck = GetEntities(expression, filterSearch, "Nav_CheckTypeLevel");
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                #endregion
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                #region    1_1 改良版
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                List<List<int>> listCheckCount = new List<List<int>>();
							 | 
						|||
| 
								 | 
							
								                List<int> listCheckLevelCount = null;
							 | 
						|||
| 
								 | 
							
								                foreach (var item in enmusLevel)
							 | 
						|||
| 
								 | 
							
								                {
							 | 
						|||
| 
								 | 
							
								                    //mineTypeName: ["露天矿", "选矿厂", "尾矿库", "职能部门"],
							 | 
						|||
| 
								 | 
							
								                    //legendName: ["公司级", "部门级", "车间级", "班组级"],
							 | 
						|||
| 
								 | 
							
								                    //checkCount: [[3, 3, 3, 3], [12, 12, 12, 6], [24, 24, 24, 12], [90, 90, 120, 36]],
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                    listCheckLevelCount = new List<int>();
							 | 
						|||
| 
								 | 
							
								                    //选矿 10,  尾矿  20, 矿山  30,  地下矿  40,
							 | 
						|||
| 
								 | 
							
								                    foreach (var itemMine in enmusMineType)
							 | 
						|||
| 
								 | 
							
								                    {
							 | 
						|||
| 
								 | 
							
								                        int count = listSafeCheck.Where(e => e.CHECKOBJECT == itemMine.VALUE && e.Nav_CheckTypeLevel.CheckLevel_ENUMS_ID == item.ID).Count();
							 | 
						|||
| 
								 | 
							
								                        listCheckLevelCount.Add(count);
							 | 
						|||
| 
								 | 
							
								                    }
							 | 
						|||
| 
								 | 
							
								                    listCheckCount.Add(listCheckLevelCount);
							 | 
						|||
| 
								 | 
							
								                }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                //数据组装
							 | 
						|||
| 
								 | 
							
								                result.Count1_1 = listCheckCount;
							 | 
						|||
| 
								 | 
							
								                result.lisMineTypeOrder = lisMineTypeOrder;
							 | 
						|||
| 
								 | 
							
								                result.lisLevelOrder = lisLevelOrder;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                #endregion
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                #region  3_1 改良版
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                List<List<int>> listCheckTypeCount = new List<List<int>>();
							 | 
						|||
| 
								 | 
							
								                List<int> listCheckTypeCountPer = null;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                var listCheckType = GetEntities<T_BS_CHECK_TYPE>(e => !e.IS_DELETED, null).OrderBy(e => e.PARENT_ID).ThenBy(e => e.NUM);
							 | 
						|||
| 
								 | 
							
								                List<string> listCheckTypeName = new List<string>();
							 | 
						|||
| 
								 | 
							
								                List<Guid> listCheckTypeID = new List<Guid>();
							 | 
						|||
| 
								 | 
							
								                Dictionary<Guid, List<Guid>> dicParent = new Dictionary<Guid, List<Guid>>();
							 | 
						|||
| 
								 | 
							
								                List<Guid> listSum = new List<Guid>();
							 | 
						|||
| 
								 | 
							
								                Guid guidParent = Guid.Empty;
							 | 
						|||
| 
								 | 
							
								                foreach (var item in listCheckType)
							 | 
						|||
| 
								 | 
							
								                {
							 | 
						|||
| 
								 | 
							
								                    if (item.PARENT_ID.HasValue)
							 | 
						|||
| 
								 | 
							
								                    {
							 | 
						|||
| 
								 | 
							
								                        if (!listCheckTypeName.Contains(item.NAME))
							 | 
						|||
| 
								 | 
							
								                        {
							 | 
						|||
| 
								 | 
							
								                            listCheckTypeName.Add(item.NAME);
							 | 
						|||
| 
								 | 
							
								                            listCheckTypeID.Add(item.ID);
							 | 
						|||
| 
								 | 
							
								                            guidParent = item.PARENT_ID.Value;
							 | 
						|||
| 
								 | 
							
								                        }
							 | 
						|||
| 
								 | 
							
								                        listSum.Add(item.ID);
							 | 
						|||
| 
								 | 
							
								                    }
							 | 
						|||
| 
								 | 
							
								                    else
							 | 
						|||
| 
								 | 
							
								                    {
							 | 
						|||
| 
								 | 
							
								                        listCheckTypeName.Add(item.NAME);
							 | 
						|||
| 
								 | 
							
								                        listCheckTypeID.Add(item.ID);
							 | 
						|||
| 
								 | 
							
								                    }
							 | 
						|||
| 
								 | 
							
								                }
							 | 
						|||
| 
								 | 
							
								                listSum.Add(guidParent);//有些人直接定义 综合检查
							 | 
						|||
| 
								 | 
							
								                dicParent.Add(guidParent, listSum);
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                foreach (var item in enmusMineType)
							 | 
						|||
| 
								 | 
							
								                {
							 | 
						|||
| 
								 | 
							
								                    listCheckTypeCountPer = new List<int>();
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                    foreach (var itemCheckType in listCheckTypeID)
							 | 
						|||
| 
								 | 
							
								                    {
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                        //检查类型
							 | 
						|||
| 
								 | 
							
								                        if (itemCheckType == guidParent)
							 | 
						|||
| 
								 | 
							
								                        {
							 | 
						|||
| 
								 | 
							
								                            int count = listSafeCheck.Where(e => e.CHECKOBJECT == item.VALUE && listSum.Contains(e.CHECK_TYPE_ID.Value)).Count();
							 | 
						|||
| 
								 | 
							
								                            listCheckTypeCountPer.Add(count);
							 | 
						|||
| 
								 | 
							
								                        }
							 | 
						|||
| 
								 | 
							
								                        else
							 | 
						|||
| 
								 | 
							
								                        {
							 | 
						|||
| 
								 | 
							
								                            int count = listSafeCheck.Where(e => e.CHECKOBJECT == item.VALUE && e.CHECK_TYPE_ID == itemCheckType).Count();
							 | 
						|||
| 
								 | 
							
								                            listCheckTypeCountPer.Add(count);
							 | 
						|||
| 
								 | 
							
								                        }
							 | 
						|||
| 
								 | 
							
								                    }
							 | 
						|||
| 
								 | 
							
								                    listCheckTypeCount.Add(listCheckTypeCountPer);
							 | 
						|||
| 
								 | 
							
								                }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                //数据组装
							 | 
						|||
| 
								 | 
							
								                result.Count3_1 = listCheckTypeCount;
							 | 
						|||
| 
								 | 
							
								                result.lisCheckTypeName = listCheckTypeName;
							 | 
						|||
| 
								 | 
							
								                #endregion
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                #region      隐患  1_2    2_1    2_2    3_2    
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                Expression<Func<T_BS_RISK_SUBMIT_CONTENT, bool>> expression2_2 = e => !e.IS_DELETED && e.CREATE_TIME.HasValue && e.CREATE_TIME.Value >= dtStart  && e.RiskContentState.HasValue && !e.IS_DELETED;// && (e.RiskContentState.Value == 60 || e.RiskContentState.Value == 80)&& e.DESCREPTION != null
							 | 
						|||
| 
								 | 
							
								                if (dtEnd.HasValue)
							 | 
						|||
| 
								 | 
							
								                    expression2_2 = expression2_2.And(e => e.CREATE_TIME.HasValue && dtEnd.Value >= e.CREATE_TIME.Value);
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                var listContent = GetEntities(expression2_2, null, "Nav_Submit");
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                #region    1_2   各生产单元 隐患数
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                List<int> listRiskMineCount1_2 = new List<int>();
							 | 
						|||
| 
								 | 
							
								                foreach (var item in enmusMineType)
							 | 
						|||
| 
								 | 
							
								                {
							 | 
						|||
| 
								 | 
							
								                    listRiskMineCount1_2.Add(listContent.Where(e => e.Nav_Submit != null && e.Nav_Submit.CHECKOBJECT.HasValue && e.Nav_Submit.CHECKOBJECT.Value == (BSMineTypeEnum)item.VALUE).Count());
							 | 
						|||
| 
								 | 
							
								                }
							 | 
						|||
| 
								 | 
							
								                result.listRiskMineCount1_2 = listRiskMineCount1_2;
							 | 
						|||
| 
								 | 
							
								                #endregion
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                #region     2_1 月度  已完成 未完成 整改率
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                List<int> listMonth = new List<int>() { 1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 12 };
							 | 
						|||
| 
								 | 
							
								                if (dtStart.Year > DateTime.Now.Year)
							 | 
						|||
| 
								 | 
							
								                {
							 | 
						|||
| 
								 | 
							
								                    listMonth.Clear();
							 | 
						|||
| 
								 | 
							
								                }
							 | 
						|||
| 
								 | 
							
								                else if (dtStart.Year == DateTime.Now.Year)
							 | 
						|||
| 
								 | 
							
								                {
							 | 
						|||
| 
								 | 
							
								                    listMonth = listMonth.Where(e => e <= DateTime.Now.Month).OrderBy(e => e).ToList();
							 | 
						|||
| 
								 | 
							
								                }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                List<int> listFinish2_1 = new List<int>();
							 | 
						|||
| 
								 | 
							
								                List<int> listNotFinish2_1 = new List<int>();
							 | 
						|||
| 
								 | 
							
								                List<decimal> listFinish2_1Percent = new List<decimal>();
							 | 
						|||
| 
								 | 
							
								                foreach (var item in listMonth)
							 | 
						|||
| 
								 | 
							
								                {
							 | 
						|||
| 
								 | 
							
								                    listFinish2_1.Add(listContent.Where(e => e.CREATE_TIME.HasValue && e.CREATE_TIME.Value.Month == item && (e.RiskContentState.Value == 60 || e.RiskContentState.Value == 80)).Count());
							 | 
						|||
| 
								 | 
							
								                    listNotFinish2_1.Add(listContent.Where(e => e.CREATE_TIME.HasValue && e.CREATE_TIME.Value.Month == item && e.RiskContentState.Value != 60 && e.RiskContentState.Value != 80).Count());
							 | 
						|||
| 
								 | 
							
								                }
							 | 
						|||
| 
								 | 
							
								                for (int i = 0; i < listMonth.Count; i++)
							 | 
						|||
| 
								 | 
							
								                {
							 | 
						|||
| 
								 | 
							
								                    if (listNotFinish2_1[i] == 0)
							 | 
						|||
| 
								 | 
							
								                    {
							 | 
						|||
| 
								 | 
							
								                        listFinish2_1Percent.Add(100);
							 | 
						|||
| 
								 | 
							
								                    }
							 | 
						|||
| 
								 | 
							
								                    else if (listFinish2_1[i] == 0)
							 | 
						|||
| 
								 | 
							
								                    {
							 | 
						|||
| 
								 | 
							
								                        listFinish2_1Percent.Add(0);
							 | 
						|||
| 
								 | 
							
								                    }
							 | 
						|||
| 
								 | 
							
								                    else
							 | 
						|||
| 
								 | 
							
								                    {
							 | 
						|||
| 
								 | 
							
								                        listFinish2_1Percent.Add((decimal)Math.Round((listFinish2_1[i] * 100.0 / (listNotFinish2_1[i] + listFinish2_1[i])), 2));
							 | 
						|||
| 
								 | 
							
								                    }
							 | 
						|||
| 
								 | 
							
								                }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                //result.listMonth = listMonth;
							 | 
						|||
| 
								 | 
							
								                result.listFinish2_1 = listFinish2_1;
							 | 
						|||
| 
								 | 
							
								                result.listNotFinish2_1 = listNotFinish2_1;
							 | 
						|||
| 
								 | 
							
								                result.listFinish2_1Percent = listFinish2_1Percent;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                #endregion
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                #region   2_2  隐患Top
							 | 
						|||
| 
								 | 
							
								                var query = listContent.GroupBy(e => e.DESCREPTION).Select(e => new
							 | 
						|||
| 
								 | 
							
								                {
							 | 
						|||
| 
								 | 
							
								                    DESCREPTION = e.Key,
							 | 
						|||
| 
								 | 
							
								                    Count = e.Count()
							 | 
						|||
| 
								 | 
							
								                }).OrderByDescending(e => e.Count).Take(6);
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                if (query != null && query.Any())
							 | 
						|||
| 
								 | 
							
								                {
							 | 
						|||
| 
								 | 
							
								                    List<string> ListDescreption2_2 = new List<string>();
							 | 
						|||
| 
								 | 
							
								                    List<int> Count2_2 = new List<int>();
							 | 
						|||
| 
								 | 
							
								                    foreach (var item in query)
							 | 
						|||
| 
								 | 
							
								                    {
							 | 
						|||
| 
								 | 
							
								                        Count2_2.Add(item.Count);
							 | 
						|||
| 
								 | 
							
								                        ListDescreption2_2.Add(item.DESCREPTION);
							 | 
						|||
| 
								 | 
							
								                    }
							 | 
						|||
| 
								 | 
							
								                    result.Count2_2 = Count2_2;
							 | 
						|||
| 
								 | 
							
								                    result.ListDescreption2_2 = ListDescreption2_2;
							 | 
						|||
| 
								 | 
							
								                }
							 | 
						|||
| 
								 | 
							
								                else
							 | 
						|||
| 
								 | 
							
								                {
							 | 
						|||
| 
								 | 
							
								                    result.Count2_2 = new List<int>();
							 | 
						|||
| 
								 | 
							
								                    result.ListDescreption2_2 = new List<string>();
							 | 
						|||
| 
								 | 
							
								                }
							 | 
						|||
| 
								 | 
							
								                #endregion
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                #region    3_2 检查类型隐患统计
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                List<List<int>> listRiskMoneCheckType = new List<List<int>>();
							 | 
						|||
| 
								 | 
							
								                foreach (var item in enmusMineType)
							 | 
						|||
| 
								 | 
							
								                {
							 | 
						|||
| 
								 | 
							
								                    listCheckTypeCountPer = new List<int>();
							 | 
						|||
| 
								 | 
							
								                    foreach (var itemCheckType in listCheckTypeID)
							 | 
						|||
| 
								 | 
							
								                    {
							 | 
						|||
| 
								 | 
							
								                        //检查类型
							 | 
						|||
| 
								 | 
							
								                        if (itemCheckType == guidParent)
							 | 
						|||
| 
								 | 
							
								                        {
							 | 
						|||
| 
								 | 
							
								                            int count = listContent.Where(e => e.Nav_Submit != null && e.Nav_Submit.CHECK_TYPE_ID.HasValue && e.Nav_Submit.CHECKOBJECT.HasValue && e.Nav_Submit.CHECKOBJECT == (BSMineTypeEnum)item.VALUE && listSum.Contains(e.Nav_Submit.CHECK_TYPE_ID.Value)).Count();
							 | 
						|||
| 
								 | 
							
								                            listCheckTypeCountPer.Add(count);
							 | 
						|||
| 
								 | 
							
								                        }
							 | 
						|||
| 
								 | 
							
								                        else
							 | 
						|||
| 
								 | 
							
								                        {
							 | 
						|||
| 
								 | 
							
								                            int count = listContent.Where(e => e.Nav_Submit != null && e.Nav_Submit.CHECK_TYPE_ID.HasValue && e.Nav_Submit.CHECKOBJECT.HasValue && e.Nav_Submit.CHECKOBJECT == (BSMineTypeEnum)item.VALUE && e.Nav_Submit.CHECK_TYPE_ID == itemCheckType).Count();
							 | 
						|||
| 
								 | 
							
								                            listCheckTypeCountPer.Add(count);
							 | 
						|||
| 
								 | 
							
								                        }
							 | 
						|||
| 
								 | 
							
								                    }
							 | 
						|||
| 
								 | 
							
								                    listRiskMoneCheckType.Add(listCheckTypeCountPer);
							 | 
						|||
| 
								 | 
							
								                }
							 | 
						|||
| 
								 | 
							
								                result.Count3_2 = listRiskMoneCheckType;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                #endregion
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                #endregion
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                return result;
							 | 
						|||
| 
								 | 
							
								            });
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        //#region     旧版直接查询 count
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        ///// <summary>
							 | 
						|||
| 
								 | 
							
								        ///// 显示  
							 | 
						|||
| 
								 | 
							
								        ///// </summary>
							 | 
						|||
| 
								 | 
							
								        ///// <param name="filter"></param>
							 | 
						|||
| 
								 | 
							
								        ///// <returns></returns>
							 | 
						|||
| 
								 | 
							
								        //[HttpPost, Route("GetBI056Main")]
							 | 
						|||
| 
								 | 
							
								        //public JsonActionResult<ModelBI056Main> GetBI056Main([FromBody] KeywordFilter filter)
							 | 
						|||
| 
								 | 
							
								        //{
							 | 
						|||
| 
								 | 
							
								        //    return SafeExecute<ModelBI056Main>(() =>
							 | 
						|||
| 
								 | 
							
								        //    {
							 | 
						|||
| 
								 | 
							
								        //        ModelBI056Main result = new ModelBI056Main();
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        //        DateTime dtStart = Convert.ToDateTime(DateTime.Now.Year.ToString() + "-01-01 00:00:00");
							 | 
						|||
| 
								 | 
							
								        //        DateTime? dtEnd = null;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        //        #region  enmusLevel=> lisLevelOrder   enmusMineType=>lisMineTypeOrder 
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        //        //var enmus = GetEntities<T_FM_ENUMS>(e => !e.IS_DELETED, null, "ID", "VALUE", "NUM", "CODE", "NAME");
							 | 
						|||
| 
								 | 
							
								        //        var enmus = GetEntities<T_FM_ENUMS>(e => !e.IS_DELETED, null, null);
							 | 
						|||
| 
								 | 
							
								        //        if (enmus == null || !enmus.Any())
							 | 
						|||
| 
								 | 
							
								        //            throw new Exception("获取生成单元、组织层级等枚举信息失败!");
							 | 
						|||
| 
								 | 
							
								        //        List<string> lisLevelOrder = new List<string>();
							 | 
						|||
| 
								 | 
							
								        //        List<string> lisMineTypeOrder = new List<string>();
							 | 
						|||
| 
								 | 
							
								        //        var enmusLevel = enmus.Where(e => e.CODE == "HMLevleEnum").OrderBy(e => e.NUM).ToList();
							 | 
						|||
| 
								 | 
							
								        //        var enmusMineType = enmus.Where(e => e.CODE == "BSMineTypeEnum").OrderBy(e => e.NUM).ToList();
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        //        if (enmusLevel == null || !enmusLevel.Any())
							 | 
						|||
| 
								 | 
							
								        //            throw new Exception("获取组织层级枚举信息失败!");
							 | 
						|||
| 
								 | 
							
								        //        else
							 | 
						|||
| 
								 | 
							
								        //        {
							 | 
						|||
| 
								 | 
							
								        //            foreach (var item in enmusLevel)
							 | 
						|||
| 
								 | 
							
								        //            {
							 | 
						|||
| 
								 | 
							
								        //                lisLevelOrder.Add(item.NAME);
							 | 
						|||
| 
								 | 
							
								        //            }
							 | 
						|||
| 
								 | 
							
								        //        }
							 | 
						|||
| 
								 | 
							
								        //        if (enmusMineType == null || !enmusMineType.Any())
							 | 
						|||
| 
								 | 
							
								        //            throw new Exception("获取生成单元枚举信息失败!");
							 | 
						|||
| 
								 | 
							
								        //        else
							 | 
						|||
| 
								 | 
							
								        //        {
							 | 
						|||
| 
								 | 
							
								        //            foreach (var item in enmusMineType)
							 | 
						|||
| 
								 | 
							
								        //            {
							 | 
						|||
| 
								 | 
							
								        //                lisMineTypeOrder.Add(item.NAME);
							 | 
						|||
| 
								 | 
							
								        //            }
							 | 
						|||
| 
								 | 
							
								        //        }
							 | 
						|||
| 
								 | 
							
								        //        #endregion
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        //        #region    1_1   listCheckCount(List<List<int>>)
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        //        Expression<Func<T_BS_SAFE_CHECK, bool>> expression = e => !e.IS_DELETED && e.CHECKOBJECT.HasValue && e.CHECK_TYPE_LEVEL_ID.HasValue && e.CHECKTIME.HasValue && dtStart <= e.CHECKTIME.Value;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        //        if (dtEnd.HasValue)
							 | 
						|||
| 
								 | 
							
								        //            expression = expression.And(e => e.CHECKTIME.HasValue && dtEnd.Value >= e.CHECKTIME.Value);
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        //        //BSMineTypeEditEnum  选矿 10,  尾矿  20, 矿山  30,  地下矿  40,
							 | 
						|||
| 
								 | 
							
								        //        //FMDepartmentType    层级 3公司级 0部门级 1车间级 2班组级
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        //        //expression 不能组合 
							 | 
						|||
| 
								 | 
							
								        //        //公司级 部门级 车间级 班组级 用filter过滤 
							 | 
						|||
| 
								 | 
							
								        //        BaseFilter filterSearch1_1 = new BaseFilter(filter.OrgId);
							 | 
						|||
| 
								 | 
							
								        //        filterSearch1_1.IgnoreDataRule = true;
							 | 
						|||
| 
								 | 
							
								        //        filterSearch1_1.Include.Add("Nav_CheckTypeLevel");
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        //        FilterGroup filterGroup = new FilterGroup();
							 | 
						|||
| 
								 | 
							
								        //        filterGroup.IsAnd = true;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        //        FilterRule filterGroupRule = new FilterRule();
							 | 
						|||
| 
								 | 
							
								        //        filterGroupRule.Field = "Nav_CheckTypeLevel.CheckLevel_ENUMS_ID";
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        //        FilterRule filterGroupMineRule = new FilterRule();
							 | 
						|||
| 
								 | 
							
								        //        filterGroupMineRule.Field = "CHECKOBJECT";
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        //        List<List<int>> listCheckCount = new List<List<int>>();
							 | 
						|||
| 
								 | 
							
								        //        List<int> listCheckLevelCount = null;
							 | 
						|||
| 
								 | 
							
								        //        foreach (var item in enmusLevel)
							 | 
						|||
| 
								 | 
							
								        //        {
							 | 
						|||
| 
								 | 
							
								        //            //mineTypeName: ["露天矿", "选矿厂", "尾矿库", "职能部门"],
							 | 
						|||
| 
								 | 
							
								        //            //legendName: ["公司级", "部门级", "车间级", "班组级"],
							 | 
						|||
| 
								 | 
							
								        //            //checkCount: [[3, 3, 3, 3], [12, 12, 12, 6], [24, 24, 24, 12], [90, 90, 120, 36]],
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        //            listCheckLevelCount = new List<int>();
							 | 
						|||
| 
								 | 
							
								        //            //选矿 10,  尾矿  20, 矿山  30,  地下矿  40,
							 | 
						|||
| 
								 | 
							
								        //            foreach (var itemMine in enmusMineType)
							 | 
						|||
| 
								 | 
							
								        //            {
							 | 
						|||
| 
								 | 
							
								        //                if (filterGroup.Rules != null && filterGroup.Rules.Any())
							 | 
						|||
| 
								 | 
							
								        //                    filterGroup.Rules.Clear();
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        //                filterGroupRule.Value = item.ID;
							 | 
						|||
| 
								 | 
							
								        //                filterGroup.Rules.Add(filterGroupRule);
							 | 
						|||
| 
								 | 
							
								        //                filterGroupMineRule.Value = itemMine.VALUE;
							 | 
						|||
| 
								 | 
							
								        //                filterGroup.Rules.Add(filterGroupMineRule);
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        //                filterSearch1_1.FilterGroup = filterGroup;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        //                int count = GetCount(expression, filterSearch1_1);
							 | 
						|||
| 
								 | 
							
								        //                listCheckLevelCount.Add(count);
							 | 
						|||
| 
								 | 
							
								        //            }
							 | 
						|||
| 
								 | 
							
								        //            listCheckCount.Add(listCheckLevelCount);
							 | 
						|||
| 
								 | 
							
								        //        }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        //        //数据组装
							 | 
						|||
| 
								 | 
							
								        //        result.Count1_1 = listCheckCount;
							 | 
						|||
| 
								 | 
							
								        //        result.lisMineTypeOrder = lisMineTypeOrder;
							 | 
						|||
| 
								 | 
							
								        //        result.lisLevelOrder = lisLevelOrder;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        //        #endregion
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        //        #region 3_1
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        //        List<List<int>> listCheckTypeCount = new List<List<int>>();
							 | 
						|||
| 
								 | 
							
								        //        List<int> listCheckTypeCountPer = null;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        //        var listCheckType = GetEntities<T_BS_CHECK_TYPE>(e => !e.IS_DELETED, null).OrderBy(e => e.PARENT_ID).ThenBy(e => e.NUM);
							 | 
						|||
| 
								 | 
							
								        //        List<string> listCheckTypeName = new List<string>();
							 | 
						|||
| 
								 | 
							
								        //        List<Guid> listCheckTypeID = new List<Guid>();
							 | 
						|||
| 
								 | 
							
								        //        Dictionary<Guid, List<Guid>> dicParent = new Dictionary<Guid, List<Guid>>();
							 | 
						|||
| 
								 | 
							
								        //        List<Guid> listSum = new List<Guid>();
							 | 
						|||
| 
								 | 
							
								        //        Guid guidParent = Guid.Empty;
							 | 
						|||
| 
								 | 
							
								        //        foreach (var item in listCheckType)
							 | 
						|||
| 
								 | 
							
								        //        {
							 | 
						|||
| 
								 | 
							
								        //            if (item.PARENT_ID.HasValue)
							 | 
						|||
| 
								 | 
							
								        //            {
							 | 
						|||
| 
								 | 
							
								        //                if (!listCheckTypeName.Contains(item.NAME))
							 | 
						|||
| 
								 | 
							
								        //                {
							 | 
						|||
| 
								 | 
							
								        //                    listCheckTypeName.Add(item.NAME);
							 | 
						|||
| 
								 | 
							
								        //                    listCheckTypeID.Add(item.ID);
							 | 
						|||
| 
								 | 
							
								        //                    guidParent = item.PARENT_ID.Value;
							 | 
						|||
| 
								 | 
							
								        //                }
							 | 
						|||
| 
								 | 
							
								        //                listSum.Add(item.ID);
							 | 
						|||
| 
								 | 
							
								        //            }
							 | 
						|||
| 
								 | 
							
								        //            else
							 | 
						|||
| 
								 | 
							
								        //            {
							 | 
						|||
| 
								 | 
							
								        //                listCheckTypeName.Add(item.NAME);
							 | 
						|||
| 
								 | 
							
								        //                listCheckTypeID.Add(item.ID);
							 | 
						|||
| 
								 | 
							
								        //            }
							 | 
						|||
| 
								 | 
							
								        //        }
							 | 
						|||
| 
								 | 
							
								        //        listSum.Add(guidParent);//有些人直接定义 综合检查
							 | 
						|||
| 
								 | 
							
								        //        dicParent.Add(guidParent, listSum);
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        //        Expression<Func<T_BS_SAFE_CHECK, bool>> expression3_1 = e => !e.IS_DELETED && e.CHECKOBJECT.HasValue && e.CHECK_TYPE_ID.HasValue && e.CHECKTIME.HasValue && dtStart <= e.CHECKTIME.Value;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        //        if (dtEnd.HasValue)
							 | 
						|||
| 
								 | 
							
								        //            expression3_1 = expression3_1.And(e => e.CHECKTIME.HasValue && dtEnd.Value >= e.CHECKTIME.Value);
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        //        Expression<Func<T_BS_SAFE_CHECK, bool>> expression3_1_Contains = expression3_1.And(e => listSum.Contains(e.CHECK_TYPE_ID.Value));
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        //        BaseFilter filterSearch3_1 = new BaseFilter(filter.OrgId);
							 | 
						|||
| 
								 | 
							
								        //        filterSearch3_1.IgnoreDataRule = true;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        //        filterGroupRule = new FilterRule();
							 | 
						|||
| 
								 | 
							
								        //        filterGroupRule.Field = "CHECK_TYPE_ID";
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        //        filterGroupMineRule = new FilterRule();
							 | 
						|||
| 
								 | 
							
								        //        filterGroupMineRule.Field = "CHECKOBJECT";
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        //        foreach (var item in enmusMineType)
							 | 
						|||
| 
								 | 
							
								        //        {
							 | 
						|||
| 
								 | 
							
								        //            listCheckTypeCountPer = new List<int>();
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        //            foreach (var itemCheckType in listCheckTypeID)
							 | 
						|||
| 
								 | 
							
								        //            {
							 | 
						|||
| 
								 | 
							
								        //                if (filterGroup.Rules != null && filterGroup.Rules.Any())
							 | 
						|||
| 
								 | 
							
								        //                    filterGroup.Rules.Clear();
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        //                //检查类型
							 | 
						|||
| 
								 | 
							
								        //                if (itemCheckType == guidParent)
							 | 
						|||
| 
								 | 
							
								        //                {
							 | 
						|||
| 
								 | 
							
								        //                    //报错  expression3_1 => expression3_1_Contains
							 | 
						|||
| 
								 | 
							
								        //                    //filterGroupRule.Operate = FilterOperate.Contains;
							 | 
						|||
| 
								 | 
							
								        //                    //filterGroupRule.Value = listSum;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        //                    //生产单元
							 | 
						|||
| 
								 | 
							
								        //                    filterGroupMineRule.Value = item.VALUE;
							 | 
						|||
| 
								 | 
							
								        //                    filterGroup.Rules.Add(filterGroupMineRule);
							 | 
						|||
| 
								 | 
							
								        //                    filterSearch3_1.FilterGroup = filterGroup;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        //                    int count = GetCount(expression3_1_Contains, filterSearch3_1);
							 | 
						|||
| 
								 | 
							
								        //                    listCheckTypeCountPer.Add(count);
							 | 
						|||
| 
								 | 
							
								        //                }
							 | 
						|||
| 
								 | 
							
								        //                else
							 | 
						|||
| 
								 | 
							
								        //                {
							 | 
						|||
| 
								 | 
							
								        //                    filterGroupRule.Value = itemCheckType;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        //                    filterGroup.Rules.Add(filterGroupRule);
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        //                    //生产单元
							 | 
						|||
| 
								 | 
							
								        //                    filterGroupMineRule.Value = item.VALUE;
							 | 
						|||
| 
								 | 
							
								        //                    filterGroup.Rules.Add(filterGroupMineRule);
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        //                    filterSearch3_1.FilterGroup = filterGroup;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        //                    int count = GetCount(expression3_1, filterSearch3_1);
							 | 
						|||
| 
								 | 
							
								        //                    listCheckTypeCountPer.Add(count);
							 | 
						|||
| 
								 | 
							
								        //                }
							 | 
						|||
| 
								 | 
							
								        //                //filterGroup.Rules.Add(filterGroupRule);
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        //                ////生产单元
							 | 
						|||
| 
								 | 
							
								        //                //filterGroupMineRule.Value = item.VALUE;
							 | 
						|||
| 
								 | 
							
								        //                //filterGroup.Rules.Add(filterGroupMineRule);
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        //                //filterSearch3_1.FilterGroup = filterGroup;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        //                //int count = GetCount(expression3_1, filterSearch3_1);
							 | 
						|||
| 
								 | 
							
								        //                //listCheckTypeCountPer.Add(count);
							 | 
						|||
| 
								 | 
							
								        //            }
							 | 
						|||
| 
								 | 
							
								        //            listCheckTypeCount.Add(listCheckTypeCountPer);
							 | 
						|||
| 
								 | 
							
								        //        }
							 | 
						|||
| 
								 | 
							
								        //        result.Count3_1 = listCheckTypeCount;
							 | 
						|||
| 
								 | 
							
								        //        result.lisCheckTypeName = listCheckTypeName;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        //        #endregion
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        //        return result;
							 | 
						|||
| 
								 | 
							
								        //    });
							 | 
						|||
| 
								 | 
							
								        //}
							 | 
						|||
| 
								 | 
							
								        //#endregion
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        #region    各弹窗方法
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        #region      1_1  GetBI056_1_1
							 | 
						|||
| 
								 | 
							
								        /// <summary>
							 | 
						|||
| 
								 | 
							
								        /// 显示
							 | 
						|||
| 
								 | 
							
								        /// </summary>
							 | 
						|||
| 
								 | 
							
								        /// <param name="filter"></param>
							 | 
						|||
| 
								 | 
							
								        /// <returns></returns>
							 | 
						|||
| 
								 | 
							
								        [HttpPost, Route("GetBI056_1_1")]
							 | 
						|||
| 
								 | 
							
								        public JsonActionResult<ModelBI056_1_1> GetBI056_1_1([FromBody] KeywordFilter filter)
							 | 
						|||
| 
								 | 
							
								        {
							 | 
						|||
| 
								 | 
							
								            return SafeExecute<ModelBI056_1_1>(() =>
							 | 
						|||
| 
								 | 
							
								            {
							 | 
						|||
| 
								 | 
							
								                ModelBI056_1_1 result = new ModelBI056_1_1();
							 | 
						|||
| 
								 | 
							
								                int year = DateTime.Now.Year;
							 | 
						|||
| 
								 | 
							
								                int month = DateTime.Now.Month;
							 | 
						|||
| 
								 | 
							
								                List<int> listMonth = null;
							 | 
						|||
| 
								 | 
							
								                DateTime dtStart = Convert.ToDateTime(DateTime.Now.Year.ToString() + "-01-01 00:00:00");
							 | 
						|||
| 
								 | 
							
								                DateTime? dtEnd = null;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                if (!string.IsNullOrEmpty(filter.Keyword))
							 | 
						|||
| 
								 | 
							
								                {
							 | 
						|||
| 
								 | 
							
								                    var season = int.Parse(filter.Keyword);
							 | 
						|||
| 
								 | 
							
								                    switch (season)
							 | 
						|||
| 
								 | 
							
								                    {
							 | 
						|||
| 
								 | 
							
								                        case 1:
							 | 
						|||
| 
								 | 
							
								                            listMonth = new List<int>() { 1, 2, 3 };
							 | 
						|||
| 
								 | 
							
								                            break;
							 | 
						|||
| 
								 | 
							
								                        case 2:
							 | 
						|||
| 
								 | 
							
								                            listMonth = new List<int>() { 4, 5, 6 };
							 | 
						|||
| 
								 | 
							
								                            break;
							 | 
						|||
| 
								 | 
							
								                        case 3:
							 | 
						|||
| 
								 | 
							
								                            listMonth = new List<int>() { 7, 8, 9 };
							 | 
						|||
| 
								 | 
							
								                            break;
							 | 
						|||
| 
								 | 
							
								                        case 4:
							 | 
						|||
| 
								 | 
							
								                            listMonth = new List<int>() { 10, 11, 12 };
							 | 
						|||
| 
								 | 
							
								                            break;
							 | 
						|||
| 
								 | 
							
								                        default:
							 | 
						|||
| 
								 | 
							
								                            break;
							 | 
						|||
| 
								 | 
							
								                    }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                    dtStart = dtStart.AddMonths(3 * (season - 1));
							 | 
						|||
| 
								 | 
							
								                    dtEnd = dtStart.AddMonths(3).AddSeconds(-1);
							 | 
						|||
| 
								 | 
							
								                }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                #region  enmusLevel=> lisLevelOrder   enmusMineType=>lisMineTypeOrder 
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                var enmus = GetEntities<T_FM_ENUMS>(e => !e.IS_DELETED, null, null);
							 | 
						|||
| 
								 | 
							
								                if (enmus == null || !enmus.Any())
							 | 
						|||
| 
								 | 
							
								                    throw new Exception("获取生成单元、组织层级等枚举信息失败!");
							 | 
						|||
| 
								 | 
							
								                List<string> lisLevelOrder = new List<string>();
							 | 
						|||
| 
								 | 
							
								                List<string> lisMineTypeOrder = new List<string>();
							 | 
						|||
| 
								 | 
							
								                var enmusLevel = enmus.Where(e => e.CODE == "HMLevleEnum").OrderBy(e => e.NUM).ToList();
							 | 
						|||
| 
								 | 
							
								                var enmusMineType = enmus.Where(e => e.CODE == "BSMineTypeEnum").OrderBy(e => e.NUM).ToList();
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                if (enmusLevel == null || !enmusLevel.Any())
							 | 
						|||
| 
								 | 
							
								                    throw new Exception("获取组织层级枚举信息失败!");
							 | 
						|||
| 
								 | 
							
								                else
							 | 
						|||
| 
								 | 
							
								                {
							 | 
						|||
| 
								 | 
							
								                    foreach (var item in enmusLevel)
							 | 
						|||
| 
								 | 
							
								                    {
							 | 
						|||
| 
								 | 
							
								                        lisLevelOrder.Add(item.NAME);
							 | 
						|||
| 
								 | 
							
								                    }
							 | 
						|||
| 
								 | 
							
								                }
							 | 
						|||
| 
								 | 
							
								                if (enmusMineType == null || !enmusMineType.Any())
							 | 
						|||
| 
								 | 
							
								                    throw new Exception("获取生成单元枚举信息失败!");
							 | 
						|||
| 
								 | 
							
								                else
							 | 
						|||
| 
								 | 
							
								                {
							 | 
						|||
| 
								 | 
							
								                    foreach (var item in enmusMineType)
							 | 
						|||
| 
								 | 
							
								                    {
							 | 
						|||
| 
								 | 
							
								                        lisMineTypeOrder.Add(item.NAME);
							 | 
						|||
| 
								 | 
							
								                    }
							 | 
						|||
| 
								 | 
							
								                }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                #endregion
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                List<List<int>> listResult = new List<List<int>>();
							 | 
						|||
| 
								 | 
							
								                List<int> listResultPer = null;
							 | 
						|||
| 
								 | 
							
								                int count = 0;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                #region 改良版 listSafeCheck 所有的符合条件的检查信息
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                Expression<Func<T_BS_SAFE_CHECK, bool>> expression = e => !e.IS_DELETED && e.CHECKOBJECT.HasValue && e.CHECK_TYPE_LEVEL_ID.HasValue && e.CHECKTIME.HasValue && dtStart <= e.CHECKTIME.Value;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                if (dtEnd.HasValue)
							 | 
						|||
| 
								 | 
							
								                    expression = expression.And(e => e.CHECKTIME.HasValue && dtEnd.Value >= e.CHECKTIME.Value);
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                BaseFilter filterSearch = new BaseFilter(filter.OrgId);
							 | 
						|||
| 
								 | 
							
								                filterSearch.IgnoreDataRule = true;
							 | 
						|||
| 
								 | 
							
								                filterSearch.Include.Add("Nav_CheckTypeLevel");
							 | 
						|||
| 
								 | 
							
								                filterSearch.SelectField = new List<string>() { "ID", "CHECKOBJECT", "CHECK_TYPE_ID", "IS_DELETED", "CHECKTIME", "Nav_CheckTypeLevel.CheckLevel_ENUMS_ID" };
							 | 
						|||
| 
								 | 
							
								                //var listSafeCheck = GetEntities(expression, null, "Nav_CheckTypeLevel");
							 | 
						|||
| 
								 | 
							
								                var listSafeCheck = GetEntities(expression, filterSearch, "Nav_CheckTypeLevel");
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                #endregion
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                foreach (var item in enmusLevel)
							 | 
						|||
| 
								 | 
							
								                {
							 | 
						|||
| 
								 | 
							
								                    listResultPer = new List<int>();
							 | 
						|||
| 
								 | 
							
								                    foreach (var itemMonth in listMonth)
							 | 
						|||
| 
								 | 
							
								                    {
							 | 
						|||
| 
								 | 
							
								                        if (itemMonth > month && dtStart.Year == year)//同年 如果月份 大于当前月   直接跳出计算
							 | 
						|||
| 
								 | 
							
								                        {
							 | 
						|||
| 
								 | 
							
								                            break;
							 | 
						|||
| 
								 | 
							
								                        }
							 | 
						|||
| 
								 | 
							
								                        //层级 各 生产单元  几月到几月 安全检查数量
							 | 
						|||
| 
								 | 
							
								                        foreach (var itemMine in enmusMineType)
							 | 
						|||
| 
								 | 
							
								                        {
							 | 
						|||
| 
								 | 
							
								                            count = listSafeCheck.Where(e => e.CHECKOBJECT == itemMine.VALUE && e.Nav_CheckTypeLevel.CheckLevel_ENUMS_ID == item.ID && e.CHECKTIME.Value.Month == itemMonth).Count();
							 | 
						|||
| 
								 | 
							
								                            listResultPer.Add(count);
							 | 
						|||
| 
								 | 
							
								                        }
							 | 
						|||
| 
								 | 
							
								                    }
							 | 
						|||
| 
								 | 
							
								                    listResult.Add(listResultPer);
							 | 
						|||
| 
								 | 
							
								                }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                //数据组装
							 | 
						|||
| 
								 | 
							
								                result.Count = listResult;
							 | 
						|||
| 
								 | 
							
								                result.lisMineTypeOrder = lisMineTypeOrder;
							 | 
						|||
| 
								 | 
							
								                result.lisLevelOrder = lisLevelOrder;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                return result;
							 | 
						|||
| 
								 | 
							
								            });
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        #endregion
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        #region   1_2  GetBI056_1_2
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        /// <summary>
							 | 
						|||
| 
								 | 
							
								        /// 显示
							 | 
						|||
| 
								 | 
							
								        /// </summary>
							 | 
						|||
| 
								 | 
							
								        /// <param name="filter"></param>
							 | 
						|||
| 
								 | 
							
								        /// <returns></returns>
							 | 
						|||
| 
								 | 
							
								        [HttpPost, Route("GetBI056_1_2")]
							 | 
						|||
| 
								 | 
							
								        public JsonActionResult<ModelBI056_1_2> GetBI056_1_2([FromBody] KeywordFilter filter)
							 | 
						|||
| 
								 | 
							
								        {
							 | 
						|||
| 
								 | 
							
								            return SafeExecute<ModelBI056_1_2>(() =>
							 | 
						|||
| 
								 | 
							
								            {
							 | 
						|||
| 
								 | 
							
								                ModelBI056_1_2 result = new ModelBI056_1_2();
							 | 
						|||
| 
								 | 
							
								                DateTime dtStart = Convert.ToDateTime(DateTime.Now.Year.ToString() + "-01-01 00:00:00");
							 | 
						|||
| 
								 | 
							
								                DateTime? dtEnd = null;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                List<string> lisMineTypeOrder = new List<string>();
							 | 
						|||
| 
								 | 
							
								                var enmusMineType = GetEntities<T_FM_ENUMS>(e => !e.IS_DELETED && e.CODE == "BSMineTypeEnum", null, null).OrderBy(e => e.NUM).ToList();
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                if (enmusMineType == null || !enmusMineType.Any())
							 | 
						|||
| 
								 | 
							
								                    throw new Exception("获取生成单元枚举信息失败!");
							 | 
						|||
| 
								 | 
							
								                else
							 | 
						|||
| 
								 | 
							
								                {
							 | 
						|||
| 
								 | 
							
								                    foreach (var item in enmusMineType)
							 | 
						|||
| 
								 | 
							
								                    {
							 | 
						|||
| 
								 | 
							
								                        lisMineTypeOrder.Add(item.NAME);
							 | 
						|||
| 
								 | 
							
								                    }
							 | 
						|||
| 
								 | 
							
								                }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                List<int> listMonth = new List<int>() { 1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 12 };
							 | 
						|||
| 
								 | 
							
								                if (dtStart.Year > DateTime.Now.Year)
							 | 
						|||
| 
								 | 
							
								                {
							 | 
						|||
| 
								 | 
							
								                    listMonth.Clear();
							 | 
						|||
| 
								 | 
							
								                }
							 | 
						|||
| 
								 | 
							
								                else if (dtStart.Year == DateTime.Now.Year)
							 | 
						|||
| 
								 | 
							
								                {
							 | 
						|||
| 
								 | 
							
								                    listMonth = listMonth.Where(e => e <= DateTime.Now.Month).OrderBy(e => e).ToList();
							 | 
						|||
| 
								 | 
							
								                }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                List<List<int>> ListCount = new List<List<int>>();
							 | 
						|||
| 
								 | 
							
								                Expression<Func<T_BS_RISK_SUBMIT_CONTENT, bool>> expression = e => !e.IS_DELETED  && e.CREATE_TIME.HasValue && e.CREATE_TIME.Value >= dtStart;//&& e.DESCREPTION != null
							 | 
						|||
| 
								 | 
							
								                if (dtEnd.HasValue)
							 | 
						|||
| 
								 | 
							
								                    expression = expression.And(e => e.CREATE_TIME.HasValue && dtEnd.Value >= e.CREATE_TIME.Value);
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                var listContent = GetEntities(expression, null, "Nav_Submit");
							 | 
						|||
| 
								 | 
							
								                BSMineTypeEnum? mineType = null;
							 | 
						|||
| 
								 | 
							
								                List<int> ListCountPer = null;
							 | 
						|||
| 
								 | 
							
								                foreach (var item in enmusMineType)
							 | 
						|||
| 
								 | 
							
								                {
							 | 
						|||
| 
								 | 
							
								                    mineType = (BSMineTypeEnum)item.VALUE;
							 | 
						|||
| 
								 | 
							
								                    ListCountPer = new List<int>();
							 | 
						|||
| 
								 | 
							
								                    foreach (var itemMonth in listMonth)
							 | 
						|||
| 
								 | 
							
								                    {
							 | 
						|||
| 
								 | 
							
								                        ListCountPer.Add(listContent.Count(e => e.Nav_Submit.CHECKOBJECT.HasValue && e.Nav_Submit.CHECKOBJECT.Value == mineType && e.CREATE_TIME.Value.Month == itemMonth));
							 | 
						|||
| 
								 | 
							
								                    }
							 | 
						|||
| 
								 | 
							
								                    ListCount.Add(ListCountPer);
							 | 
						|||
| 
								 | 
							
								                }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                //数据组装
							 | 
						|||
| 
								 | 
							
								                result.lisMineTypeOrder = lisMineTypeOrder;
							 | 
						|||
| 
								 | 
							
								                result.ListCount = ListCount;
							 | 
						|||
| 
								 | 
							
								                return result;
							 | 
						|||
| 
								 | 
							
								            });
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        #endregion
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        #region   2_1  GetBI056_2_1
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        /// <summary>
							 | 
						|||
| 
								 | 
							
								        /// 显示
							 | 
						|||
| 
								 | 
							
								        /// </summary>
							 | 
						|||
| 
								 | 
							
								        /// <param name="filter"></param>
							 | 
						|||
| 
								 | 
							
								        /// <returns></returns>
							 | 
						|||
| 
								 | 
							
								        [HttpPost, Route("GetBI056_2_1")]
							 | 
						|||
| 
								 | 
							
								        public JsonActionResult<ModelBI056_2_1> GetBI056_2_1([FromBody] KeywordFilter filter)
							 | 
						|||
| 
								 | 
							
								        {
							 | 
						|||
| 
								 | 
							
								            return SafeExecute<ModelBI056_2_1>(() =>
							 | 
						|||
| 
								 | 
							
								            {
							 | 
						|||
| 
								 | 
							
								                ModelBI056_2_1 result = new ModelBI056_2_1();
							 | 
						|||
| 
								 | 
							
								                DateTime dtStart = Convert.ToDateTime(DateTime.Now.Year.ToString() + "-01-01 00:00:00");
							 | 
						|||
| 
								 | 
							
								                DateTime? dtEnd = null;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                List<string> lisMineTypeOrder = new List<string>();
							 | 
						|||
| 
								 | 
							
								                var enmusMineType = GetEntities<T_FM_ENUMS>(e => !e.IS_DELETED && e.CODE == "BSMineTypeEnum", null, null).OrderBy(e => e.NUM).ToList();
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                if (enmusMineType == null || !enmusMineType.Any())
							 | 
						|||
| 
								 | 
							
								                    throw new Exception("获取生成单元枚举信息失败!");
							 | 
						|||
| 
								 | 
							
								                else
							 | 
						|||
| 
								 | 
							
								                {
							 | 
						|||
| 
								 | 
							
								                    foreach (var item in enmusMineType)
							 | 
						|||
| 
								 | 
							
								                    {
							 | 
						|||
| 
								 | 
							
								                        lisMineTypeOrder.Add(item.NAME);
							 | 
						|||
| 
								 | 
							
								                    }
							 | 
						|||
| 
								 | 
							
								                }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                Expression<Func<T_BS_RISK_SUBMIT_CONTENT, bool>> expression2_2 = e => !e.IS_DELETED && e.CREATE_TIME.HasValue && e.CREATE_TIME.Value >= dtStart  && e.RiskContentState.HasValue && !e.IS_DELETED;//&& e.DESCREPTION != null
							 | 
						|||
| 
								 | 
							
								                if (dtEnd.HasValue)
							 | 
						|||
| 
								 | 
							
								                    expression2_2 = expression2_2.And(e => e.CREATE_TIME.HasValue && dtEnd.Value >= e.CREATE_TIME.Value);
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                var listContent = GetEntities(expression2_2, null, "Nav_Submit");
							 | 
						|||
| 
								 | 
							
								                List<int> listMonth = new List<int>() { 1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 12 };
							 | 
						|||
| 
								 | 
							
								                if (dtStart.Year > DateTime.Now.Year)
							 | 
						|||
| 
								 | 
							
								                {
							 | 
						|||
| 
								 | 
							
								                    listMonth.Clear();
							 | 
						|||
| 
								 | 
							
								                }
							 | 
						|||
| 
								 | 
							
								                else if (dtStart.Year == DateTime.Now.Year)
							 | 
						|||
| 
								 | 
							
								                {
							 | 
						|||
| 
								 | 
							
								                    listMonth = listMonth.Where(e => e <= DateTime.Now.Month).OrderBy(e => e).ToList();
							 | 
						|||
| 
								 | 
							
								                }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                List<int> listFinishPer2_1 = null;
							 | 
						|||
| 
								 | 
							
								                List<int> listNotFinishPer2_1 = null;
							 | 
						|||
| 
								 | 
							
								                List<decimal> listFinishPer2_1Percent = null;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                List<List<int>> listFinish2_1 = new List<List<int>>();
							 | 
						|||
| 
								 | 
							
								                List<List<int>> listNotFinish2_1 = new List<List<int>>();
							 | 
						|||
| 
								 | 
							
								                List<List<decimal>> listFinish2_1Percent = new List<List<decimal>>();
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                BSMineTypeEnum? CHECKOBJECT = null;
							 | 
						|||
| 
								 | 
							
								                foreach (var itemEnums in enmusMineType)
							 | 
						|||
| 
								 | 
							
								                {
							 | 
						|||
| 
								 | 
							
								                    CHECKOBJECT = (BSMineTypeEnum)itemEnums.VALUE;
							 | 
						|||
| 
								 | 
							
								                    listFinishPer2_1 = new List<int>();
							 | 
						|||
| 
								 | 
							
								                    listNotFinishPer2_1 = new List<int>();
							 | 
						|||
| 
								 | 
							
								                    listFinishPer2_1Percent = new List<decimal>();
							 | 
						|||
| 
								 | 
							
								                    foreach (var item in listMonth)
							 | 
						|||
| 
								 | 
							
								                    {
							 | 
						|||
| 
								 | 
							
								                        listFinishPer2_1.Add(listContent.Count(e => e.Nav_Submit.CHECKOBJECT.HasValue && e.Nav_Submit.CHECKOBJECT.Value == CHECKOBJECT && e.CREATE_TIME.HasValue && e.CREATE_TIME.Value.Month == item && (e.RiskContentState.Value == 60 || e.RiskContentState.Value == 80)));
							 | 
						|||
| 
								 | 
							
								                        listNotFinishPer2_1.Add(listContent.Count(e => e.Nav_Submit.CHECKOBJECT.HasValue && e.Nav_Submit.CHECKOBJECT.Value == CHECKOBJECT && e.CREATE_TIME.HasValue && e.CREATE_TIME.Value.Month == item && e.RiskContentState.Value != 60 && e.RiskContentState.Value != 80));
							 | 
						|||
| 
								 | 
							
								                    }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                    for (int i = 0; i < listMonth.Count; i++)
							 | 
						|||
| 
								 | 
							
								                    {
							 | 
						|||
| 
								 | 
							
								                        if (listNotFinishPer2_1[i] == 0)
							 | 
						|||
| 
								 | 
							
								                        {
							 | 
						|||
| 
								 | 
							
								                            listFinishPer2_1Percent.Add(100);
							 | 
						|||
| 
								 | 
							
								                        }
							 | 
						|||
| 
								 | 
							
								                        else if (listFinishPer2_1[i] == 0)
							 | 
						|||
| 
								 | 
							
								                        {
							 | 
						|||
| 
								 | 
							
								                            listFinishPer2_1Percent.Add(0);
							 | 
						|||
| 
								 | 
							
								                        }
							 | 
						|||
| 
								 | 
							
								                        else
							 | 
						|||
| 
								 | 
							
								                        {
							 | 
						|||
| 
								 | 
							
								                            listFinishPer2_1Percent.Add((decimal)Math.Round((listFinishPer2_1[i] * 100.0 / (listNotFinishPer2_1[i] + listFinishPer2_1[i])), 2));
							 | 
						|||
| 
								 | 
							
								                        }
							 | 
						|||
| 
								 | 
							
								                    }
							 | 
						|||
| 
								 | 
							
								                    listFinish2_1.Add(listFinishPer2_1);
							 | 
						|||
| 
								 | 
							
								                    listNotFinish2_1.Add(listNotFinishPer2_1);
							 | 
						|||
| 
								 | 
							
								                    listFinish2_1Percent.Add(listFinishPer2_1Percent);
							 | 
						|||
| 
								 | 
							
								                }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                result.lisMineTypeOrder = lisMineTypeOrder;
							 | 
						|||
| 
								 | 
							
								                result.listFinish2_1 = listFinish2_1;
							 | 
						|||
| 
								 | 
							
								                result.listNotFinish2_1 = listNotFinish2_1;
							 | 
						|||
| 
								 | 
							
								                result.listFinish2_1Percent = listFinish2_1Percent;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                return result;
							 | 
						|||
| 
								 | 
							
								            });
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        #endregion
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        #region   2_2  GetBI056_2_2
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        /// <summary>
							 | 
						|||
| 
								 | 
							
								        /// 显示
							 | 
						|||
| 
								 | 
							
								        /// </summary>
							 | 
						|||
| 
								 | 
							
								        /// <param name="filter"></param>
							 | 
						|||
| 
								 | 
							
								        /// <returns></returns>
							 | 
						|||
| 
								 | 
							
								        [HttpPost, Route("GetBI056_2_2")]
							 | 
						|||
| 
								 | 
							
								        public JsonActionResult<ModelBI056_2_2> GetBI056_2_2([FromBody] KeywordFilter filter)
							 | 
						|||
| 
								 | 
							
								        {
							 | 
						|||
| 
								 | 
							
								            return SafeExecute<ModelBI056_2_2>(() =>
							 | 
						|||
| 
								 | 
							
								            {
							 | 
						|||
| 
								 | 
							
								                ModelBI056_2_2 result = new ModelBI056_2_2();
							 | 
						|||
| 
								 | 
							
								                DateTime dtStart = Convert.ToDateTime(DateTime.Now.Year.ToString() + "-01-01 00:00:00");
							 | 
						|||
| 
								 | 
							
								                DateTime? dtEnd = null;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                List<string> lisMineTypeOrder = new List<string>();
							 | 
						|||
| 
								 | 
							
								                var enmusMineType = GetEntities<T_FM_ENUMS>(e => !e.IS_DELETED && e.CODE == "BSMineTypeEnum", null, null).OrderBy(e => e.NUM).ToList();
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                if (enmusMineType == null || !enmusMineType.Any())
							 | 
						|||
| 
								 | 
							
								                    throw new Exception("获取生成单元枚举信息失败!");
							 | 
						|||
| 
								 | 
							
								                else
							 | 
						|||
| 
								 | 
							
								                {
							 | 
						|||
| 
								 | 
							
								                    foreach (var item in enmusMineType)
							 | 
						|||
| 
								 | 
							
								                    {
							 | 
						|||
| 
								 | 
							
								                        lisMineTypeOrder.Add(item.NAME);
							 | 
						|||
| 
								 | 
							
								                    }
							 | 
						|||
| 
								 | 
							
								                }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                List<List<int>> ListCount = new List<List<int>>();
							 | 
						|||
| 
								 | 
							
								                List<List<string>> ListDescreption = new List<List<string>>();
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                Expression<Func<T_BS_RISK_SUBMIT_CONTENT, bool>> expression2_2 = e => !e.IS_DELETED  && e.CREATE_TIME.HasValue && e.CREATE_TIME.Value >= dtStart;//&& e.DESCREPTION != null&& e.RiskContentState.HasValue && (e.RiskContentState.Value == 60 || e.RiskContentState.Value == 80)
							 | 
						|||
| 
								 | 
							
								                if (dtEnd.HasValue)
							 | 
						|||
| 
								 | 
							
								                    expression2_2 = expression2_2.And(e => e.CREATE_TIME.HasValue && dtEnd.Value >= e.CREATE_TIME.Value);
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                BSMineTypeEnum? mineType = null;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                List<int> ListCountPer = null;
							 | 
						|||
| 
								 | 
							
								                List<string> ListDescreptionPer = null;
							 | 
						|||
| 
								 | 
							
								                foreach (var item in enmusMineType)
							 | 
						|||
| 
								 | 
							
								                {
							 | 
						|||
| 
								 | 
							
								                    mineType = (BSMineTypeEnum)item.VALUE;
							 | 
						|||
| 
								 | 
							
								                    Expression<Func<T_BS_RISK_SUBMIT_CONTENT, bool>> expression2_2Mine = expression2_2.And(e => e.Nav_Submit.CHECKOBJECT.HasValue && e.Nav_Submit.CHECKOBJECT.Value == mineType);
							 | 
						|||
| 
								 | 
							
								                    var listContent = GetEntities(expression2_2Mine, null, "Nav_Submit");
							 | 
						|||
| 
								 | 
							
								                    var query = listContent.GroupBy(e => e.DESCREPTION).Select(e => new
							 | 
						|||
| 
								 | 
							
								                    {
							 | 
						|||
| 
								 | 
							
								                        DESCREPTION = e.Key,
							 | 
						|||
| 
								 | 
							
								                        Count = e.Count()
							 | 
						|||
| 
								 | 
							
								                    }).OrderByDescending(e => e.Count).Take(6);
							 | 
						|||
| 
								 | 
							
								                    ListCountPer = new List<int>();
							 | 
						|||
| 
								 | 
							
								                    ListDescreptionPer = new List<string>();
							 | 
						|||
| 
								 | 
							
								                    if (query != null && query.Any())
							 | 
						|||
| 
								 | 
							
								                    {
							 | 
						|||
| 
								 | 
							
								                        foreach (var itemVal in query)
							 | 
						|||
| 
								 | 
							
								                        {
							 | 
						|||
| 
								 | 
							
								                            ListCountPer.Add(itemVal.Count);
							 | 
						|||
| 
								 | 
							
								                            ListDescreptionPer.Add(itemVal.DESCREPTION);
							 | 
						|||
| 
								 | 
							
								                        }
							 | 
						|||
| 
								 | 
							
								                    }
							 | 
						|||
| 
								 | 
							
								                    ListCount.Add(ListCountPer);
							 | 
						|||
| 
								 | 
							
								                    ListDescreption.Add(ListDescreptionPer);
							 | 
						|||
| 
								 | 
							
								                }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                //数据组装
							 | 
						|||
| 
								 | 
							
								                result.lisMineTypeOrder = lisMineTypeOrder;
							 | 
						|||
| 
								 | 
							
								                result.ListCount = ListCount;
							 | 
						|||
| 
								 | 
							
								                result.ListDescreption = ListDescreption;
							 | 
						|||
| 
								 | 
							
								                return result;
							 | 
						|||
| 
								 | 
							
								            });
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        #endregion
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        #region    3_1  GetBI056_3_1
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        /// <summary>
							 | 
						|||
| 
								 | 
							
								        /// 各生产单元 各月 各检查类型数量
							 | 
						|||
| 
								 | 
							
								        /// </summary>
							 | 
						|||
| 
								 | 
							
								        /// <param name="filter"></param>
							 | 
						|||
| 
								 | 
							
								        /// <returns></returns>
							 | 
						|||
| 
								 | 
							
								        [HttpPost, Route("GetBI056_3_1")]
							 | 
						|||
| 
								 | 
							
								        public JsonActionResult<ModelBI056_3_1> GetBI056_3_1([FromBody] KeywordFilter filter)
							 | 
						|||
| 
								 | 
							
								        {
							 | 
						|||
| 
								 | 
							
								            return SafeExecute<ModelBI056_3_1>(() =>
							 | 
						|||
| 
								 | 
							
								            {
							 | 
						|||
| 
								 | 
							
								                ModelBI056_3_1 result = new ModelBI056_3_1();
							 | 
						|||
| 
								 | 
							
								                DateTime dtStart = Convert.ToDateTime(DateTime.Now.Year.ToString() + "-01-01 00:00:00");
							 | 
						|||
| 
								 | 
							
								                DateTime? dtEnd = null;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                var enmusMineType = GetEntities<T_FM_ENUMS>(e => !e.IS_DELETED && e.CODE == "BSMineTypeEnum", null, null).OrderBy(e => e.NUM).ToList();
							 | 
						|||
| 
								 | 
							
								                List<string> lisMineTypeOrder = new List<string>();
							 | 
						|||
| 
								 | 
							
								                if (enmusMineType == null || !enmusMineType.Any())
							 | 
						|||
| 
								 | 
							
								                    throw new Exception("获取生成单元枚举信息失败!");
							 | 
						|||
| 
								 | 
							
								                else
							 | 
						|||
| 
								 | 
							
								                {
							 | 
						|||
| 
								 | 
							
								                    foreach (var item in enmusMineType)
							 | 
						|||
| 
								 | 
							
								                    {
							 | 
						|||
| 
								 | 
							
								                        lisMineTypeOrder.Add(item.NAME);
							 | 
						|||
| 
								 | 
							
								                    }
							 | 
						|||
| 
								 | 
							
								                }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                var listCheckType = GetEntities<T_BS_CHECK_TYPE>(e => !e.IS_DELETED, null, "Nav_ListMineType").OrderBy(e => e.PARENT_ID).ThenBy(e => e.NUM).ToList();
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                Dictionary<Guid, List<Guid>> dicParent = new Dictionary<Guid, List<Guid>>();
							 | 
						|||
| 
								 | 
							
								                List<Guid> listSum = new List<Guid>();
							 | 
						|||
| 
								 | 
							
								                Guid guidParent = Guid.Empty;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                foreach (var item in listCheckType)
							 | 
						|||
| 
								 | 
							
								                {
							 | 
						|||
| 
								 | 
							
								                    if (item.PARENT_ID.HasValue)
							 | 
						|||
| 
								 | 
							
								                    {
							 | 
						|||
| 
								 | 
							
								                        if (guidParent != Guid.Empty)
							 | 
						|||
| 
								 | 
							
								                        {
							 | 
						|||
| 
								 | 
							
								                            guidParent = item.PARENT_ID.Value;
							 | 
						|||
| 
								 | 
							
								                        }
							 | 
						|||
| 
								 | 
							
								                        listSum.Add(item.ID);
							 | 
						|||
| 
								 | 
							
								                    }
							 | 
						|||
| 
								 | 
							
								                }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                listSum.Add(guidParent);//有些人直接定义 综合检查
							 | 
						|||
| 
								 | 
							
								                dicParent.Add(guidParent, listSum);
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                List<List<T_BS_CHECK_TYPE>> listCheckTypes = new List<List<T_BS_CHECK_TYPE>>();
							 | 
						|||
| 
								 | 
							
								                foreach (var item in enmusMineType)
							 | 
						|||
| 
								 | 
							
								                {
							 | 
						|||
| 
								 | 
							
								                    listCheckTypes.Add(listCheckType.Where(e => e.Nav_ListMineType.Where(e => e.MINETYPE_ENUMS_ID == item.ID).Any()).ToList());
							 | 
						|||
| 
								 | 
							
								                }
							 | 
						|||
| 
								 | 
							
								                List<List<string>> lisMineCheckTypeOrder = new List<List<string>>();
							 | 
						|||
| 
								 | 
							
								                List<string> lisMineCheckTypeOrderPer = null;
							 | 
						|||
| 
								 | 
							
								                foreach (var item in listCheckTypes)
							 | 
						|||
| 
								 | 
							
								                {
							 | 
						|||
| 
								 | 
							
								                    lisMineCheckTypeOrderPer = new List<string>();
							 | 
						|||
| 
								 | 
							
								                    foreach (var itemCheckType in item)
							 | 
						|||
| 
								 | 
							
								                    {
							 | 
						|||
| 
								 | 
							
								                        lisMineCheckTypeOrderPer.Add(itemCheckType.NAME);
							 | 
						|||
| 
								 | 
							
								                    }
							 | 
						|||
| 
								 | 
							
								                    lisMineCheckTypeOrder.Add(lisMineCheckTypeOrderPer);
							 | 
						|||
| 
								 | 
							
								                }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                #region 改良版 listSafeCheck 所有的符合条件的检查信息
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                Expression<Func<T_BS_SAFE_CHECK, bool>> expression = e => !e.IS_DELETED && e.CHECKOBJECT.HasValue && e.CHECK_TYPE_LEVEL_ID.HasValue && e.CHECKTIME.HasValue && dtStart <= e.CHECKTIME.Value;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                if (dtEnd.HasValue)
							 | 
						|||
| 
								 | 
							
								                    expression = expression.And(e => e.CHECKTIME.HasValue && dtEnd.Value >= e.CHECKTIME.Value);
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                BaseFilter filterSearch = new BaseFilter(filter.OrgId);
							 | 
						|||
| 
								 | 
							
								                filterSearch.IgnoreDataRule = true;
							 | 
						|||
| 
								 | 
							
								                filterSearch.Include.Add("Nav_CheckTypeLevel");
							 | 
						|||
| 
								 | 
							
								                filterSearch.SelectField = new List<string>() { "ID", "CHECKOBJECT", "CHECK_TYPE_ID", "IS_DELETED", "CHECKTIME", "Nav_CheckTypeLevel.CheckLevel_ENUMS_ID" };
							 | 
						|||
| 
								 | 
							
								                //var listSafeCheck = GetEntities(expression, null, "Nav_CheckTypeLevel");
							 | 
						|||
| 
								 | 
							
								                var listSafeCheck = GetEntities(expression, filterSearch, "Nav_CheckTypeLevel");
							 | 
						|||
| 
								 | 
							
								                #endregion
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                #region  3_1 改良版
							 | 
						|||
| 
								 | 
							
								                List<List<List<int>>> listCheckTypeMonthCount = new List<List<List<int>>>();
							 | 
						|||
| 
								 | 
							
								                List<List<int>> listCheckTypeCount = null;
							 | 
						|||
| 
								 | 
							
								                List<int> listCheckTypeCountPer = null;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                List<int> listMonth = new List<int>() { 1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 12 };
							 | 
						|||
| 
								 | 
							
								                if (dtStart.Year > DateTime.Now.Year)
							 | 
						|||
| 
								 | 
							
								                {
							 | 
						|||
| 
								 | 
							
								                    listMonth.Clear();
							 | 
						|||
| 
								 | 
							
								                }
							 | 
						|||
| 
								 | 
							
								                else if (dtStart.Year == DateTime.Now.Year)
							 | 
						|||
| 
								 | 
							
								                {
							 | 
						|||
| 
								 | 
							
								                    listMonth = listMonth.Where(e => e <= DateTime.Now.Month).OrderBy(e => e).ToList();
							 | 
						|||
| 
								 | 
							
								                }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                var enmusMineTypeCount = enmusMineType.Count();
							 | 
						|||
| 
								 | 
							
								                for (int i = 0; i < enmusMineTypeCount; i++)
							 | 
						|||
| 
								 | 
							
								                {
							 | 
						|||
| 
								 | 
							
								                    listCheckTypeCount = new List<List<int>>();
							 | 
						|||
| 
								 | 
							
								                    int MineCheckTypeCount = listCheckTypes[i].Count;
							 | 
						|||
| 
								 | 
							
								                    for (int j = 0; j < MineCheckTypeCount; j++)
							 | 
						|||
| 
								 | 
							
								                    {
							 | 
						|||
| 
								 | 
							
								                        listCheckTypeCountPer = new List<int>();
							 | 
						|||
| 
								 | 
							
								                        foreach (int itemMonth in listMonth)
							 | 
						|||
| 
								 | 
							
								                        {
							 | 
						|||
| 
								 | 
							
								                            //检查类型
							 | 
						|||
| 
								 | 
							
								                            if (listCheckTypes[i][j].ID == guidParent)
							 | 
						|||
| 
								 | 
							
								                            {
							 | 
						|||
| 
								 | 
							
								                                int count = listSafeCheck.Where(e => e.CHECKOBJECT == enmusMineType[i].VALUE && e.CHECKTIME.Value.Month == itemMonth && listSum.Contains(e.CHECK_TYPE_ID.Value)).Count();
							 | 
						|||
| 
								 | 
							
								                                listCheckTypeCountPer.Add(count);
							 | 
						|||
| 
								 | 
							
								                            }
							 | 
						|||
| 
								 | 
							
								                            else
							 | 
						|||
| 
								 | 
							
								                            {
							 | 
						|||
| 
								 | 
							
								                                int count = listSafeCheck.Where(e => e.CHECKOBJECT == enmusMineType[i].VALUE && e.CHECKTIME.Value.Month == itemMonth && e.CHECK_TYPE_ID == listCheckTypes[i][j].ID).Count();
							 | 
						|||
| 
								 | 
							
								                                listCheckTypeCountPer.Add(count);
							 | 
						|||
| 
								 | 
							
								                            }
							 | 
						|||
| 
								 | 
							
								                        }
							 | 
						|||
| 
								 | 
							
								                        listCheckTypeCount.Add(listCheckTypeCountPer);
							 | 
						|||
| 
								 | 
							
								                    }
							 | 
						|||
| 
								 | 
							
								                    listCheckTypeMonthCount.Add(listCheckTypeCount);
							 | 
						|||
| 
								 | 
							
								                }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                //数据组装
							 | 
						|||
| 
								 | 
							
								                result.lisMineTypeOrder = lisMineTypeOrder;
							 | 
						|||
| 
								 | 
							
								                result.lisMineCheckTypeOrder = lisMineCheckTypeOrder;
							 | 
						|||
| 
								 | 
							
								                result.Count3_1 = listCheckTypeMonthCount;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                #endregion
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                return result;
							 | 
						|||
| 
								 | 
							
								            });
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        #endregion
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        #region    3_2  GetBI056_3_2
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        /// <summary>
							 | 
						|||
| 
								 | 
							
								        /// 各生产单元 各月 各检查类型数量
							 | 
						|||
| 
								 | 
							
								        /// </summary>
							 | 
						|||
| 
								 | 
							
								        /// <param name="filter"></param>
							 | 
						|||
| 
								 | 
							
								        /// <returns></returns>
							 | 
						|||
| 
								 | 
							
								        [HttpPost, Route("GetBI056_3_2")]
							 | 
						|||
| 
								 | 
							
								        public JsonActionResult<ModelBI056_3_2> GetBI056_3_2([FromBody] KeywordFilter filter)
							 | 
						|||
| 
								 | 
							
								        {
							 | 
						|||
| 
								 | 
							
								            return SafeExecute<ModelBI056_3_2>(() =>
							 | 
						|||
| 
								 | 
							
								            {
							 | 
						|||
| 
								 | 
							
								                ModelBI056_3_2 result = new ModelBI056_3_2();
							 | 
						|||
| 
								 | 
							
								                DateTime dtStart = Convert.ToDateTime(DateTime.Now.Year.ToString() + "-01-01 00:00:00");
							 | 
						|||
| 
								 | 
							
								                DateTime? dtEnd = null;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                List<int> listMonth = new List<int>() { 1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 12 };
							 | 
						|||
| 
								 | 
							
								                if (dtStart.Year > DateTime.Now.Year)
							 | 
						|||
| 
								 | 
							
								                {
							 | 
						|||
| 
								 | 
							
								                    listMonth.Clear();
							 | 
						|||
| 
								 | 
							
								                }
							 | 
						|||
| 
								 | 
							
								                else if (dtStart.Year == DateTime.Now.Year)
							 | 
						|||
| 
								 | 
							
								                {
							 | 
						|||
| 
								 | 
							
								                    listMonth = listMonth.Where(e => e <= DateTime.Now.Month).OrderBy(e => e).ToList();
							 | 
						|||
| 
								 | 
							
								                }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                var enmusMineType = GetEntities<T_FM_ENUMS>(e => !e.IS_DELETED && e.CODE == "BSMineTypeEnum", null, null).OrderBy(e => e.NUM).ToList();
							 | 
						|||
| 
								 | 
							
								                List<string> lisMineTypeOrder = new List<string>();
							 | 
						|||
| 
								 | 
							
								                if (enmusMineType == null || !enmusMineType.Any())
							 | 
						|||
| 
								 | 
							
								                    throw new Exception("获取生成单元枚举信息失败!");
							 | 
						|||
| 
								 | 
							
								                else
							 | 
						|||
| 
								 | 
							
								                {
							 | 
						|||
| 
								 | 
							
								                    foreach (var item in enmusMineType)
							 | 
						|||
| 
								 | 
							
								                    {
							 | 
						|||
| 
								 | 
							
								                        lisMineTypeOrder.Add(item.NAME);
							 | 
						|||
| 
								 | 
							
								                    }
							 | 
						|||
| 
								 | 
							
								                }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                var listCheckType = GetEntities<T_BS_CHECK_TYPE>(e => !e.IS_DELETED, null, "Nav_ListMineType").OrderBy(e => e.PARENT_ID).ThenBy(e => e.NUM);
							 | 
						|||
| 
								 | 
							
								                List<string> listCheckTypeName = new List<string>();
							 | 
						|||
| 
								 | 
							
								                List<Guid> listCheckTypeID = new List<Guid>();
							 | 
						|||
| 
								 | 
							
								                Dictionary<Guid, List<Guid>> dicParent = new Dictionary<Guid, List<Guid>>();
							 | 
						|||
| 
								 | 
							
								                List<Guid> listSum = new List<Guid>();
							 | 
						|||
| 
								 | 
							
								                Guid guidParent = Guid.Empty;
							 | 
						|||
| 
								 | 
							
								                foreach (var item in listCheckType)
							 | 
						|||
| 
								 | 
							
								                {
							 | 
						|||
| 
								 | 
							
								                    if (item.PARENT_ID.HasValue)
							 | 
						|||
| 
								 | 
							
								                    {
							 | 
						|||
| 
								 | 
							
								                        if (!listCheckTypeName.Contains(item.NAME))
							 | 
						|||
| 
								 | 
							
								                        {
							 | 
						|||
| 
								 | 
							
								                            listCheckTypeName.Add(item.NAME);
							 | 
						|||
| 
								 | 
							
								                            listCheckTypeID.Add(item.ID);
							 | 
						|||
| 
								 | 
							
								                            guidParent = item.PARENT_ID.Value;
							 | 
						|||
| 
								 | 
							
								                        }
							 | 
						|||
| 
								 | 
							
								                        listSum.Add(item.ID);
							 | 
						|||
| 
								 | 
							
								                    }
							 | 
						|||
| 
								 | 
							
								                    else
							 | 
						|||
| 
								 | 
							
								                    {
							 | 
						|||
| 
								 | 
							
								                        listCheckTypeName.Add(item.NAME);
							 | 
						|||
| 
								 | 
							
								                        listCheckTypeID.Add(item.ID);
							 | 
						|||
| 
								 | 
							
								                    }
							 | 
						|||
| 
								 | 
							
								                }
							 | 
						|||
| 
								 | 
							
								                listSum.Add(guidParent);//有些人直接定义 综合检查
							 | 
						|||
| 
								 | 
							
								                dicParent.Add(guidParent, listSum);
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                List<List<T_BS_CHECK_TYPE>> listCheckTypes = new List<List<T_BS_CHECK_TYPE>>();
							 | 
						|||
| 
								 | 
							
								                foreach (var item in enmusMineType)
							 | 
						|||
| 
								 | 
							
								                {
							 | 
						|||
| 
								 | 
							
								                    listCheckTypes.Add(listCheckType.Where(e => e.Nav_ListMineType.Where(e => e.MINETYPE_ENUMS_ID == item.ID).Any()).ToList());
							 | 
						|||
| 
								 | 
							
								                }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                Expression<Func<T_BS_RISK_SUBMIT_CONTENT, bool>> expression = e => !e.IS_DELETED && e.CREATE_TIME.HasValue && e.CREATE_TIME.Value >= dtStart  && e.RiskContentState.HasValue && !e.IS_DELETED;
							 | 
						|||
| 
								 | 
							
								                if (dtEnd.HasValue)
							 | 
						|||
| 
								 | 
							
								                    expression = expression.And(e => e.CREATE_TIME.HasValue && dtEnd.Value >= e.CREATE_TIME.Value);
							 | 
						|||
| 
								 | 
							
								                var listContent = GetEntities(expression, null, "Nav_Submit").ToList();
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                List<List<string>> lisMineCheckTypeOrder = new List<List<string>>();
							 | 
						|||
| 
								 | 
							
								                List<string> lisMineCheckTypeOrderPer = null;
							 | 
						|||
| 
								 | 
							
								                foreach (var item in listCheckTypes)
							 | 
						|||
| 
								 | 
							
								                {
							 | 
						|||
| 
								 | 
							
								                    lisMineCheckTypeOrderPer = new List<string>();
							 | 
						|||
| 
								 | 
							
								                    foreach (var itemCheckType in item)
							 | 
						|||
| 
								 | 
							
								                    {
							 | 
						|||
| 
								 | 
							
								                        lisMineCheckTypeOrderPer.Add(itemCheckType.NAME);
							 | 
						|||
| 
								 | 
							
								                    }
							 | 
						|||
| 
								 | 
							
								                    lisMineCheckTypeOrder.Add(lisMineCheckTypeOrderPer);
							 | 
						|||
| 
								 | 
							
								                }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                List<List<List<int>>> listRisk = new List<List<List<int>>>();
							 | 
						|||
| 
								 | 
							
								                List<List<int>> listRiskMoneCheckType = null;
							 | 
						|||
| 
								 | 
							
								                List<int> listCheckTypeCountPer = null;
							 | 
						|||
| 
								 | 
							
								                int MintTypeIndex = -1;
							 | 
						|||
| 
								 | 
							
								                foreach (var item in enmusMineType)
							 | 
						|||
| 
								 | 
							
								                {
							 | 
						|||
| 
								 | 
							
								                    MintTypeIndex++;
							 | 
						|||
| 
								 | 
							
								                    listRiskMoneCheckType = new List<List<int>>();
							 | 
						|||
| 
								 | 
							
								                    foreach (var itemCheckType in listCheckTypes[MintTypeIndex])
							 | 
						|||
| 
								 | 
							
								                    {
							 | 
						|||
| 
								 | 
							
								                        listCheckTypeCountPer = new List<int>();
							 | 
						|||
| 
								 | 
							
								                        foreach (var itemMonth in listMonth)
							 | 
						|||
| 
								 | 
							
								                        {
							 | 
						|||
| 
								 | 
							
								                            //检查类型
							 | 
						|||
| 
								 | 
							
								                            if (itemCheckType.ID == guidParent)
							 | 
						|||
| 
								 | 
							
								                            {
							 | 
						|||
| 
								 | 
							
								                                int count = listContent.Count(e => e.Nav_Submit != null && e.Nav_Submit.CHECK_TYPE_ID.HasValue && listSum.Contains(e.Nav_Submit.CHECK_TYPE_ID.Value) && e.CREATE_TIME.HasValue && e.CREATE_TIME.Value.Month == itemMonth && e.Nav_Submit.CHECKOBJECT.HasValue && e.Nav_Submit.CHECKOBJECT == (BSMineTypeEnum)item.VALUE && listSum.Contains(e.Nav_Submit.CHECK_TYPE_ID.Value));
							 | 
						|||
| 
								 | 
							
								                                listCheckTypeCountPer.Add(count);
							 | 
						|||
| 
								 | 
							
								                            }
							 | 
						|||
| 
								 | 
							
								                            else
							 | 
						|||
| 
								 | 
							
								                            {
							 | 
						|||
| 
								 | 
							
								                                int count = listContent.Count(e => e.Nav_Submit != null && e.Nav_Submit.CHECK_TYPE_ID.HasValue && e.Nav_Submit.CHECK_TYPE_ID == itemCheckType.ID && e.CREATE_TIME.HasValue && e.CREATE_TIME.Value.Month == itemMonth && e.Nav_Submit.CHECKOBJECT.HasValue && e.Nav_Submit.CHECKOBJECT == (BSMineTypeEnum)item.VALUE && e.Nav_Submit.CHECK_TYPE_ID == itemCheckType.ID);
							 | 
						|||
| 
								 | 
							
								                                listCheckTypeCountPer.Add(count);
							 | 
						|||
| 
								 | 
							
								                            }
							 | 
						|||
| 
								 | 
							
								                        }
							 | 
						|||
| 
								 | 
							
								                        listRiskMoneCheckType.Add(listCheckTypeCountPer);
							 | 
						|||
| 
								 | 
							
								                    }
							 | 
						|||
| 
								 | 
							
								                    listRisk.Add(listRiskMoneCheckType);
							 | 
						|||
| 
								 | 
							
								                }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                result.lisMineTypeOrder = lisMineTypeOrder;
							 | 
						|||
| 
								 | 
							
								                result.lisMineCheckType = lisMineCheckTypeOrder;
							 | 
						|||
| 
								 | 
							
								                result.Count3_1 = listRisk;
							 | 
						|||
| 
								 | 
							
								                return result;
							 | 
						|||
| 
								 | 
							
								            });
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        #endregion
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        #endregion
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        #endregion
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        #region     model
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        public class ModelBI056Main
							 | 
						|||
| 
								 | 
							
								        {
							 | 
						|||
| 
								 | 
							
								            public List<string> lisMineTypeOrder { get; set; }
							 | 
						|||
| 
								 | 
							
								            public List<string> lisLevelOrder { get; set; }
							 | 
						|||
| 
								 | 
							
								            public List<List<int>> Count1_1 { get; set; }
							 | 
						|||
| 
								 | 
							
								            public List<int> listRiskMineCount1_2 { get; set; }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								            public List<int> listFinish2_1 { get; set; }
							 | 
						|||
| 
								 | 
							
								            public List<int> listMonth { get; set; }
							 | 
						|||
| 
								 | 
							
								            public List<int> listNotFinish2_1 { get; set; }
							 | 
						|||
| 
								 | 
							
								            public List<decimal> listFinish2_1Percent { get; set; }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								            public List<string> ListDescreption2_2 { get; set; }
							 | 
						|||
| 
								 | 
							
								            public List<int> Count2_2 { get; set; }
							 | 
						|||
| 
								 | 
							
								            public List<List<int>> Count3_1 { get; set; }
							 | 
						|||
| 
								 | 
							
								            public List<string> lisCheckTypeName { get; set; }
							 | 
						|||
| 
								 | 
							
								            public List<List<int>> Count3_2 { get; set; }
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        public class ModelBI056_1_1
							 | 
						|||
| 
								 | 
							
								        {
							 | 
						|||
| 
								 | 
							
								            public List<string> lisMineTypeOrder { get; set; }
							 | 
						|||
| 
								 | 
							
								            public List<string> lisLevelOrder { get; set; }
							 | 
						|||
| 
								 | 
							
								            public List<List<int>> Count { get; set; }
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        public class ModelBI056_1_2
							 | 
						|||
| 
								 | 
							
								        {
							 | 
						|||
| 
								 | 
							
								            public List<string> lisMineTypeOrder { get; set; }
							 | 
						|||
| 
								 | 
							
								            public List<List<int>> ListCount { get; set; }
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        public class ModelBI056_2_1
							 | 
						|||
| 
								 | 
							
								        {
							 | 
						|||
| 
								 | 
							
								            public List<string> lisMineTypeOrder { get; set; }
							 | 
						|||
| 
								 | 
							
								            public List<List<int>> listFinish2_1 { get; set; }
							 | 
						|||
| 
								 | 
							
								            public List<List<int>> listNotFinish2_1 { get; set; }
							 | 
						|||
| 
								 | 
							
								            public List<List<decimal>> listFinish2_1Percent { get; set; }
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								        public class ModelBI056_2_2
							 | 
						|||
| 
								 | 
							
								        {
							 | 
						|||
| 
								 | 
							
								            public List<string> lisMineTypeOrder { get; set; }
							 | 
						|||
| 
								 | 
							
								            public List<List<int>> ListCount { get; set; }
							 | 
						|||
| 
								 | 
							
								            public List<List<string>> ListDescreption { get; set; }
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        public class ModelBI056_3_1
							 | 
						|||
| 
								 | 
							
								        {
							 | 
						|||
| 
								 | 
							
								            /// <summary>
							 | 
						|||
| 
								 | 
							
								            /// 生产单元
							 | 
						|||
| 
								 | 
							
								            /// </summary>
							 | 
						|||
| 
								 | 
							
								            public List<string> lisMineTypeOrder { get; set; }
							 | 
						|||
| 
								 | 
							
								            /// <summary>
							 | 
						|||
| 
								 | 
							
								            /// 生产单元 检查类型
							 | 
						|||
| 
								 | 
							
								            /// </summary>
							 | 
						|||
| 
								 | 
							
								            public List<List<string>> lisMineCheckTypeOrder { get; set; }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								            /// <summary>
							 | 
						|||
| 
								 | 
							
								            /// 检查数量
							 | 
						|||
| 
								 | 
							
								            /// </summary>
							 | 
						|||
| 
								 | 
							
								            public List<List<List<int>>> Count3_1 { get; set; }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        public class ModelBI056_3_2
							 | 
						|||
| 
								 | 
							
								        {
							 | 
						|||
| 
								 | 
							
								            /// <summary>
							 | 
						|||
| 
								 | 
							
								            /// 生产单元
							 | 
						|||
| 
								 | 
							
								            /// </summary>
							 | 
						|||
| 
								 | 
							
								            public List<string> lisMineTypeOrder { get; set; }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								            /// <summary>
							 | 
						|||
| 
								 | 
							
								            /// 生产单元 检查类型
							 | 
						|||
| 
								 | 
							
								            /// </summary>
							 | 
						|||
| 
								 | 
							
								            public List<List<string>> lisMineCheckType { get; set; }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								            /// <summary>
							 | 
						|||
| 
								 | 
							
								            /// 检查数量
							 | 
						|||
| 
								 | 
							
								            /// </summary>
							 | 
						|||
| 
								 | 
							
								            public List<List<List<int>>> Count3_1 { get; set; }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        #endregion
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        #endregion
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								    public class BISafe
							 | 
						|||
| 
								 | 
							
								    {
							 | 
						|||
| 
								 | 
							
								        public List<T_BI_BSSAFECHECK> listSafeCheck { get; set; }
							 | 
						|||
| 
								 | 
							
								        public List<T_BI_BSCHECKTYPE> listCheckType { get; set; }
							 | 
						|||
| 
								 | 
							
								        public T_BI_SUMMARY summary { get; set; }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								}
							 |