998 lines
		
	
	
		
			49 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			998 lines
		
	
	
		
			49 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
using APT.BaseData.Domain.Entities.FM;
 | 
						||
using APT.BaseData.Domain.Enums;
 | 
						||
using APT.BaseData.Domain.IServices;
 | 
						||
using APT.BaseData.Domain.IServices.FM;
 | 
						||
using APT.Infrastructure.Core;
 | 
						||
using APT.MS.Domain.Entities.BI;
 | 
						||
using APT.MS.Domain.Entities.BS;
 | 
						||
using APT.MS.Domain.Enums;
 | 
						||
using APT.Utility;
 | 
						||
using APT.WebApi.Models;
 | 
						||
using Microsoft.AspNetCore.Mvc;
 | 
						||
using System;
 | 
						||
using System.Collections.Generic;
 | 
						||
using System.Linq;
 | 
						||
using System.Linq.Expressions;
 | 
						||
 | 
						||
namespace APT.PP.WebApi.Controllers.Api.PP
 | 
						||
{
 | 
						||
    [Route("api/PP/BISAFE")]
 | 
						||
    [TypeFilter(typeof(CustomActionFilterAttribute))]
 | 
						||
    public partial class BISAFEController : AuthorizeApiController<T_BI_BSSAFECHECK>
 | 
						||
    {
 | 
						||
        IBIBSSafeCheckService SafeCheckService { get; set; }
 | 
						||
        IFMSyncLogDetailService SyncLogDetailService { get; set; }
 | 
						||
 | 
						||
        public BISAFEController(IBIBSSafeCheckService safeCheckService, IFMSyncLogDetailService syncLogDetailService)
 | 
						||
        {
 | 
						||
            SafeCheckService = safeCheckService;
 | 
						||
            SyncLogDetailService = syncLogDetailService;
 | 
						||
        }
 | 
						||
 | 
						||
        /// <summary>
 | 
						||
        /// 
 | 
						||
        /// </summary>
 | 
						||
        /// <param name="filter"></param>
 | 
						||
        /// <returns></returns>
 | 
						||
        [HttpPost, Route("AddSafeInfo")]
 | 
						||
        public JsonActionResult<bool> AddSafeInfo([FromBody] KeywordFilter filter)
 | 
						||
        {
 | 
						||
            return SafeExecute<bool>(() =>
 | 
						||
            {
 | 
						||
                DateTime dtNow = DateTime.Now;
 | 
						||
                DateTime dtRun = DateTime.Now;
 | 
						||
                if (!string.IsNullOrEmpty(filter.Parameter1))
 | 
						||
                {
 | 
						||
                    try
 | 
						||
                    {
 | 
						||
                        //接收来自页面的参数
 | 
						||
                        DateTime deParm = Convert.ToDateTime(filter.Parameter1);
 | 
						||
                        dtRun = deParm;
 | 
						||
                    }
 | 
						||
                    catch { }
 | 
						||
                }
 | 
						||
 | 
						||
                //获取 model
 | 
						||
                List<T_BI_BSSAFECHECK> listSafeCheck = new List<T_BI_BSSAFECHECK>();
 | 
						||
                List<T_BI_BSCHECKTYPE> listCheckType = new List<T_BI_BSCHECKTYPE>();
 | 
						||
                List<T_BI_SUMMARY> listSummary = new List<T_BI_SUMMARY>();
 | 
						||
                T_BI_RUNLOG modelLog = new T_BI_RUNLOG();
 | 
						||
 | 
						||
                string Code = "BI002_BSSAFECHECK"; //编码
 | 
						||
                bool result = SafeCheckService.SafeCheckGet(filter.OrgId.Value, dtRun, ref listSafeCheck, ref listCheckType, ref listSummary, ref modelLog);
 | 
						||
 | 
						||
                List<Guid> listIDSafeCheck = new List<Guid>();
 | 
						||
                List<Guid> listIDCheckType = new List<Guid>();
 | 
						||
                List<Guid> listIDSummary = new List<Guid>();
 | 
						||
 | 
						||
                #region    查找旧数据
 | 
						||
 | 
						||
                var IlistCheck = this.GetEntities<T_BI_BSSAFECHECK>(e => e.ORG_ID == filter.OrgId.Value, null);
 | 
						||
                if (IlistCheck != null && IlistCheck.Any())
 | 
						||
                {
 | 
						||
                    listIDSafeCheck = IlistCheck.Select(x => x.ID).ToList();
 | 
						||
                }
 | 
						||
 | 
						||
                var IlistCheckType = this.GetEntities<T_BI_BSCHECKTYPE>(e => e.ORG_ID == filter.OrgId.Value, null);
 | 
						||
                if (IlistCheckType != null && IlistCheckType.Any())
 | 
						||
                {
 | 
						||
                    listIDCheckType = IlistCheckType.Select(x => x.ID).ToList();
 | 
						||
                }
 | 
						||
 | 
						||
                var IlistSummary = this.GetEntities<T_BI_SUMMARY>(e => e.ORG_ID == filter.OrgId.Value && e.CODE == Code, null);
 | 
						||
                if (IlistSummary != null && IlistSummary.Any())
 | 
						||
                {
 | 
						||
                    listIDSummary = IlistSummary.Select(x => x.ID).ToList();
 | 
						||
                }
 | 
						||
 | 
						||
                #endregion
 | 
						||
 | 
						||
                T_FM_SYNC_TASK task = null;
 | 
						||
                task = GetEntity<T_FM_SYNC_TASK>(filter.Keyword);
 | 
						||
                if (task != null)
 | 
						||
                {
 | 
						||
                    task.CURR_TASK_START_TIME = dtNow;//上次同步结束时间
 | 
						||
                    task.UPDATE_SUCCES_TIME = DateTime.Now;//上次同步结束时间
 | 
						||
                    task.SYNC_PARAM = "";//清空参数
 | 
						||
                }
 | 
						||
 | 
						||
                this.UnifiedCommit(() =>
 | 
						||
                {
 | 
						||
                    if (task != null)
 | 
						||
                        UpdateEntityNoCommit(task);//跑批信息
 | 
						||
                    if (modelLog != null)//日志
 | 
						||
                        UpdateEntityNoCommit(modelLog);
 | 
						||
 | 
						||
                    //删除旧数据
 | 
						||
                    if (listIDSafeCheck.Count > 0)
 | 
						||
                        BantchDeleteEntity<T_BI_BSSAFECHECK>(listIDSafeCheck);
 | 
						||
                    if (listIDCheckType.Count > 0)
 | 
						||
                        BantchDeleteEntity<T_BI_BSCHECKTYPE>(listIDCheckType);
 | 
						||
                    if (listIDSummary.Count > 0)
 | 
						||
                        BantchDeleteEntity<T_BI_SUMMARY>(listIDSummary);
 | 
						||
 | 
						||
                    //插入新数据
 | 
						||
                    if (listSafeCheck != null && listSafeCheck.Count > 0)
 | 
						||
                        BantchSaveEntityNoCommit(listSafeCheck);
 | 
						||
                    if (listCheckType != null && listCheckType.Count > 0)
 | 
						||
                        BantchSaveEntityNoCommit(listCheckType);
 | 
						||
                    if (listSummary != null && listSummary.Count > 0)
 | 
						||
                        BantchSaveEntityNoCommit(listSummary);
 | 
						||
                });
 | 
						||
 | 
						||
                int Count = ((listIDSafeCheck != null && listIDSafeCheck.Any()) ? listIDSafeCheck.Count : 0) + ((listIDCheckType != null && listIDCheckType.Any()) ? listIDCheckType.Count : 0) + ((listIDSummary != null && listIDSummary.Any()) ? listIDSummary.Count : 0) + ((listSafeCheck != null && listSafeCheck.Any()) ? listSafeCheck.Count : 0) + ((listCheckType != null && listCheckType.Any()) ? listCheckType.Count : 0) + ((listSummary != null && listSummary.Any()) ? listSummary.Count : 0);
 | 
						||
                SyncLogDetailService.InsertSyncLogDetail(HttpContext.Items, HttpContext.TraceIdentifier, filter.OrgId, Count, filter.Parameter1, SyncLogType.BSCreateCheckPlanSet);
 | 
						||
 | 
						||
                return true;
 | 
						||
            });
 | 
						||
        }
 | 
						||
 | 
						||
 | 
						||
 | 
						||
        /// <summary>
 | 
						||
        /// 年度安全检查情况综合统计分析
 | 
						||
        /// BI051
 | 
						||
        /// </summary>
 | 
						||
        /// <param name="filter"></param>
 | 
						||
        /// <returns></returns>
 | 
						||
        [HttpPost, Route("AddSafeInfoYear")]
 | 
						||
        public JsonActionResult<bool> AddSafeInfoYear([FromBody] KeywordFilter filter)
 | 
						||
        {
 | 
						||
            return SafeExecute<bool>(() =>
 | 
						||
            {
 | 
						||
                DateTime dtNow = DateTime.Now;
 | 
						||
                int caculateMonth = 3;//计算月份数 动态配置
 | 
						||
                GetParmInfo(filter.Parameter1, out dtNow, out caculateMonth);
 | 
						||
 | 
						||
                #region    1 年度 计划检查数 按时已办数 超时已办数 未完成数 完成率 及时完成率
 | 
						||
 | 
						||
                List<T_BI_SUMMARY> listSummery = new List<T_BI_SUMMARY>();//计算值
 | 
						||
 | 
						||
                IEnumerable<T_BI_SUMMARY> listSummary = GetEntities<T_BI_SUMMARY>(e => e.CODE == "BI051_BSCOMPANYYEAR", null, null);
 | 
						||
 | 
						||
                T_BI_SUMMARY summery = null;
 | 
						||
                if (listSummary != null && listSummary.Any())
 | 
						||
                {
 | 
						||
                    summery = listSummary.FirstOrDefault(e => e.PART == 1);
 | 
						||
                }
 | 
						||
                if (summery == null)
 | 
						||
                {
 | 
						||
                    summery = new T_BI_SUMMARY();
 | 
						||
                    summery.ID = Guid.NewGuid();
 | 
						||
                    summery.CODE = "BI051_BSCOMPANYYEAR";
 | 
						||
                    summery.PART = 1;
 | 
						||
                    summery.NUM = 1;
 | 
						||
                    summery.ORG_ID = filter.OrgId;
 | 
						||
 | 
						||
                    summery.Parameter1 = "计划检查数";
 | 
						||
                    summery.Parameter2 = "按时已办";
 | 
						||
                    summery.Parameter3 = "超时已办";
 | 
						||
                    summery.Parameter4 = "未完成数";
 | 
						||
                    summery.Parameter5 = "完成率";
 | 
						||
                    summery.Parameter6 = "及时完成率";
 | 
						||
                }
 | 
						||
 | 
						||
                DateTime dtYearBegin = Convert.ToDateTime(dtNow.Year + "-01-01 00:00:00");
 | 
						||
 | 
						||
                summery.Count1 = GetCount<T_BS_SAFE_CHECK>(e => e.CREATE_TIME.HasValue && e.CREATE_TIME >= dtYearBegin && !e.IS_DELETED && e.ENABLE_STATUS == 0, null);//计划检查数
 | 
						||
 | 
						||
 | 
						||
                summery.Count2 = GetCount<T_BS_SAFE_CHECK>(e => e.CREATE_TIME.HasValue && e.CREATE_TIME >= dtYearBegin && e.ISFINISHINTTIME && !e.IS_DELETED && e.ENABLE_STATUS == 0, null);//按时已办
 | 
						||
 | 
						||
                summery.Count3 = GetCount<T_BS_SAFE_CHECK>(e => e.CREATE_TIME.HasValue && e.CREATE_TIME >= dtYearBegin && !e.ISFINISHINTTIME && e.STATECHECK == STATECHECK.Archived && !e.IS_DELETED && e.ENABLE_STATUS == 0, null);//完成 未及时完成
 | 
						||
 | 
						||
                summery.Count4 = GetCount<T_BS_SAFE_CHECK>(e => e.CREATE_TIME.HasValue && e.CREATE_TIME >= dtYearBegin && e.STATECHECK != STATECHECK.Archived && !e.IS_DELETED && e.ENABLE_STATUS == 0, null);//未完成数
 | 
						||
                if (summery.Count1 < 1)
 | 
						||
                {
 | 
						||
                    summery.Parameter7 = "100%";//完成率
 | 
						||
                    summery.Parameter8 = "100%";//及时完成率
 | 
						||
                }
 | 
						||
                else
 | 
						||
                {
 | 
						||
                    summery.Parameter7 = Math.Round(100.0 * (summery.Count2 + summery.Count3) / summery.Count1, 2) + "%";//完成率
 | 
						||
                    summery.Parameter8 = Math.Round(100.0 * summery.Count2 / summery.Count1, 2) + "%";//及时完成率
 | 
						||
                }
 | 
						||
                #endregion
 | 
						||
 | 
						||
                #region   2 年度每个层级对应的安全检查记录
 | 
						||
 | 
						||
                var listLevel = GetEntities<T_FM_ENUMS>(e => e.CODE == "HMLevleEnum", null, null).OrderBy(e => e.NUM).ToList();
 | 
						||
 | 
						||
                List<T_BS_CHECK_TYPE_LEVEL> listCheckTypeLevel = null;
 | 
						||
                var iListCheckTypeLevel = GetEntities<T_BS_CHECK_TYPE_LEVEL>(e => !e.IS_DELETED, null, null);
 | 
						||
                if (iListCheckTypeLevel != null && iListCheckTypeLevel.Any())
 | 
						||
                {
 | 
						||
                    listCheckTypeLevel = iListCheckTypeLevel.ToList();
 | 
						||
                }
 | 
						||
 | 
						||
                #region  查表 建表 按 公司 部门 车间 班组 的顺序  ROW_NO 0 => 3
 | 
						||
 | 
						||
                List<T_BI_BSSAFECHECK_YEAR> listLastYearInfo = null;
 | 
						||
                List<T_BI_BSSAFECHECK_YEAR> listYearInfo = null;
 | 
						||
                var iListYearInfo = GetEntities<T_BI_BSSAFECHECK_YEAR>(e => e.YEAR == dtNow.Year, null, null);
 | 
						||
                if (iListYearInfo == null || !iListYearInfo.Any())
 | 
						||
                {
 | 
						||
                    listYearInfo = new List<T_BI_BSSAFECHECK_YEAR>();
 | 
						||
                    for (int i = 0; i < listLevel.Count; i++)
 | 
						||
                    {
 | 
						||
                        listYearInfo.Add(new T_BI_BSSAFECHECK_YEAR()
 | 
						||
                        {
 | 
						||
                            ID = Guid.NewGuid(),
 | 
						||
                            MineType = BSMineTypeEnum.All,
 | 
						||
                            YEAR = dtNow.Year,
 | 
						||
                            //LEVEL = (FMDepartmentType)i,
 | 
						||
                            LEVEL = (FMDepartmentType)listLevel[i].VALUE,
 | 
						||
                            NAME = listLevel[i].NAME,
 | 
						||
                            ROW_NO = i,
 | 
						||
                            COUNTJANUARY = null,
 | 
						||
                            COUNTFEBRUARY = null,
 | 
						||
                            COUNTMARCH = null,
 | 
						||
                            COUNTAPRIL = null,
 | 
						||
                            COUNTMAY = null,
 | 
						||
                            COUNTJUNE = null,
 | 
						||
                            COUNTJULY = null,
 | 
						||
                            COUNTAUGUST = null,
 | 
						||
                            COUNTSEPTEMBER = null,
 | 
						||
                            COUNTOCTOBER = null,
 | 
						||
                            COUNTNOVEMBER = null,
 | 
						||
                            COUNTDECEMBER = null,
 | 
						||
                            COUNTTOTAL = null,
 | 
						||
                            IS_DELETED = false,
 | 
						||
                            ORG_ID = filter.OrgId,
 | 
						||
                            //ENTITY_ORG_TPYE = ,
 | 
						||
                            //FORM_ID = ,
 | 
						||
                            //FLOW_STATUS = ,
 | 
						||
                            //FLOW_SEND_STATUS = ,
 | 
						||
                            //FLOW_ID = ,
 | 
						||
                            CREATE_TIME = dtNow,
 | 
						||
                            MODIFY_TIME = dtNow,
 | 
						||
                            //CREATER_ID = ,
 | 
						||
                            //MODIFIER_ID = ,
 | 
						||
                        });
 | 
						||
                    }
 | 
						||
                }
 | 
						||
                else
 | 
						||
                {
 | 
						||
                    listYearInfo = iListYearInfo.OrderBy(e => e.ROW_NO).ToList();
 | 
						||
                }
 | 
						||
 | 
						||
 | 
						||
                #endregion
 | 
						||
 | 
						||
                //如果是 1号 跑上个月和本月的数据
 | 
						||
                //否则  跑本月的数据
 | 
						||
                //枚举 的 value 和  组织枚举的值匹配
 | 
						||
 | 
						||
                List<T_BS_SAFE_CHECK> listSafeCheck = null;
 | 
						||
                DateTime dtNow01 = Convert.ToDateTime(dtNow.ToString("yyyy-MM-01 00:00:00"));
 | 
						||
                if (dtNow.Date.Day == 1)
 | 
						||
                {
 | 
						||
                    DateTime dtNow_01 = dtNow01.AddMonths(-1);
 | 
						||
                    if (dtNow_01.Year != dtNow01.Year)
 | 
						||
                    {
 | 
						||
                        iListYearInfo = GetEntities<T_BI_BSSAFECHECK_YEAR>(e => e.YEAR == dtNow_01.Year, null, null);
 | 
						||
                        if (iListYearInfo != null)
 | 
						||
                        {
 | 
						||
                            listLastYearInfo = iListYearInfo.ToList();
 | 
						||
                        }
 | 
						||
                    }
 | 
						||
                    var iList = GetEntities<T_BS_SAFE_CHECK>(e => e.CREATE_TIME.HasValue && e.CREATE_TIME >= dtNow_01 && e.CREATE_TIME < dtNow01, null, null);
 | 
						||
                    if (iList != null && iList.Any())
 | 
						||
                    {
 | 
						||
                        listSafeCheck = iList.ToList();
 | 
						||
                    }
 | 
						||
                    //赋值
 | 
						||
 | 
						||
                    if (listLastYearInfo == null)
 | 
						||
                    {
 | 
						||
                        SetVal(listSafeCheck, listLevel, listCheckTypeLevel, dtNow_01.Month, ref listYearInfo);
 | 
						||
                    }
 | 
						||
                    else if (dtNow_01.Year == dtNow01.Year)
 | 
						||
                    {
 | 
						||
                        SetVal(listSafeCheck, listLevel, listCheckTypeLevel, dtNow_01.Month, ref listLastYearInfo);
 | 
						||
                    }
 | 
						||
                }
 | 
						||
                DateTime dtNow31 = dtNow01.AddMonths(1);
 | 
						||
                var iListMonth = GetEntities<T_BS_SAFE_CHECK>(e => e.CREATE_TIME.HasValue && e.CREATE_TIME >= dtNow01 && e.CREATE_TIME < dtNow31, null, null);
 | 
						||
                if (iListMonth != null && iListMonth.Any())
 | 
						||
                {
 | 
						||
                    listSafeCheck = iListMonth.ToList();
 | 
						||
                }
 | 
						||
 | 
						||
                SetVal(listSafeCheck, listLevel, listCheckTypeLevel, dtNow01.Month, ref listYearInfo);
 | 
						||
 | 
						||
                #endregion
 | 
						||
 | 
						||
 | 
						||
                #region   3  安全检查隐患整改统计图  更新当前时间 对应前 3月的数据
 | 
						||
 | 
						||
 | 
						||
                List<T_BI_BSCHECKTYPE_YEAR> listModel = new List<T_BI_BSCHECKTYPE_YEAR>();
 | 
						||
                IEnumerable<T_BI_BSCHECKTYPE_YEAR> listModelDel = null;//需要删除的旧数据
 | 
						||
                IEnumerable<T_BI_BSCHECKTYPE_YEAR> listModelDelLast = null;//需要删除的旧数据
 | 
						||
 | 
						||
 | 
						||
                T_BI_BSCHECKTYPE_YEAR modelYM = null;
 | 
						||
                for (int i = 0; i < caculateMonth; i++)
 | 
						||
                {
 | 
						||
                    DateTime dt = dtNow;
 | 
						||
                    if (i > 0)
 | 
						||
                    {
 | 
						||
                        dt = Convert.ToDateTime(dtNow.ToString("yyyy-MM-01 00:00:00"));
 | 
						||
                        dt = dt.AddMonths(-1 * (i - 1)).AddSeconds(-1);
 | 
						||
                    }
 | 
						||
                    modelYM = new T_BI_BSCHECKTYPE_YEAR();
 | 
						||
                    modelYM.ORG_ID = filter.OrgId.Value;
 | 
						||
                    SetVal(dt, filter.OrgId.Value, ref modelYM);
 | 
						||
                    listModel.Add(modelYM);
 | 
						||
                }
 | 
						||
 | 
						||
                //listModel 判断年份 计算数据 不够的去数据库查找  
 | 
						||
 | 
						||
                T_BI_SUMMARY summery3 = null;
 | 
						||
                if (listSummary != null && listSummary.Any())
 | 
						||
                    summery3 = listSummary.FirstOrDefault(e => e.PART == 3);
 | 
						||
 | 
						||
                if (summery3 == null)
 | 
						||
                {
 | 
						||
                    summery3 = new T_BI_SUMMARY();
 | 
						||
                    summery3.ID = Guid.NewGuid();
 | 
						||
                    summery3.CODE = "BI051_BSCOMPANYYEAR";
 | 
						||
                    summery3.PART = 3;
 | 
						||
                    summery3.NUM = 1;
 | 
						||
                    summery3.ORG_ID = filter.OrgId;
 | 
						||
 | 
						||
 | 
						||
                    summery3.Parameter1 = "隐患数";
 | 
						||
                    summery3.Parameter2 = "超整改数";
 | 
						||
                    summery3.Parameter3 = "按期整改数";
 | 
						||
                    summery3.Parameter4 = "整改率";
 | 
						||
                }
 | 
						||
                else
 | 
						||
                {
 | 
						||
                    summery3.Count1 = 0;
 | 
						||
                    summery3.Count2 = 0;
 | 
						||
                    summery3.Count3 = 0;
 | 
						||
                }
 | 
						||
 | 
						||
                foreach (var item in listModel)
 | 
						||
                {
 | 
						||
                    if (item.YEAR == dtNow.Year)
 | 
						||
                    {
 | 
						||
                        summery3.Count1 += (item.INTTIMECOUNT + item.OUTTIMECOUNT + item.NOTFINISHCOUN);
 | 
						||
                        summery3.Count2 += item.OUTTIMECOUNT;
 | 
						||
                        summery3.Count3 += item.INTTIMECOUNT;
 | 
						||
                    }
 | 
						||
                }
 | 
						||
 | 
						||
 | 
						||
                if (dtNow.Month >= caculateMonth)
 | 
						||
                {
 | 
						||
                    //如果月份小于 往后计算月份 再从数据库中 拉取
 | 
						||
                    var listCaculate = GetEntities<T_BI_BSCHECKTYPE_YEAR>(e => e.YEAR == dtNow.Year && e.MONTH < (dtNow.Month - caculateMonth), null, null);
 | 
						||
                    if (listCaculate != null && listCaculate.Any())
 | 
						||
                    {
 | 
						||
                        foreach (var item in listCaculate)
 | 
						||
                        {
 | 
						||
                            summery3.Count1 += (item.INTTIMECOUNT + item.OUTTIMECOUNT + item.NOTFINISHCOUN);
 | 
						||
                            summery3.Count2 += item.OUTTIMECOUNT;
 | 
						||
                            summery3.Count3 += item.INTTIMECOUNT;
 | 
						||
                        }
 | 
						||
                    }
 | 
						||
 | 
						||
                    listModelDel = GetEntities<T_BI_BSCHECKTYPE_YEAR>(e => e.MineType == BSMineTypeEnum.All && e.YEAR == dtNow.Year && e.MONTH < dtNow.Month && e.MONTH >= (dtNow.Month - caculateMonth), null);//需要删除的数据
 | 
						||
                }
 | 
						||
                else
 | 
						||
                {
 | 
						||
                    listModelDelLast = GetEntities<T_BI_BSCHECKTYPE_YEAR>(e => e.MineType == BSMineTypeEnum.All && e.YEAR == dtNow.Year - 1 && e.MONTH > (12 - (caculateMonth - dtNow.Month)), null);//需要删除的数据
 | 
						||
                }
 | 
						||
                if (summery3.Count1 < 1)
 | 
						||
                {
 | 
						||
                    summery3.Parameter7 = "100%";
 | 
						||
                }
 | 
						||
                else
 | 
						||
                {
 | 
						||
                    summery3.Parameter7 = Math.Round(100.0 * (summery3.Count2 + summery3.Count3) / summery3.Count1, 2).ToString() + "%";
 | 
						||
                }
 | 
						||
 | 
						||
                listSummery.Add(summery);
 | 
						||
                listSummery.Add(summery3);
 | 
						||
                #endregion
 | 
						||
 | 
						||
 | 
						||
                #region   4 安全检查隐患整改率
 | 
						||
 | 
						||
                #endregion
 | 
						||
 | 
						||
                T_FM_SYNC_TASK task = GetEntity<T_FM_SYNC_TASK>(filter.Keyword);
 | 
						||
                if (task != null)
 | 
						||
                {
 | 
						||
                    task.CURR_TASK_START_TIME = dtNow;//上次同步结束时间
 | 
						||
                    task.UPDATE_SUCCES_TIME = DateTime.Now;//上次同步结束时间
 | 
						||
                    task.SYNC_PARAM = "";//清空参数
 | 
						||
                }
 | 
						||
 | 
						||
                this.UnifiedCommit(() =>
 | 
						||
                {
 | 
						||
                    if (task != null)
 | 
						||
                        UpdateEntityNoCommit(task);//跑批信息
 | 
						||
                    if (listYearInfo != null && listYearInfo.Count > 0)
 | 
						||
                        BantchSaveEntityNoCommit(listYearInfo);
 | 
						||
                    if (listLastYearInfo != null && listLastYearInfo.Count > 0)
 | 
						||
                        BantchSaveEntityNoCommit(listLastYearInfo);
 | 
						||
 | 
						||
 | 
						||
                    if (listModel != null && listModel.Any())//添加新的数据
 | 
						||
                        BantchSaveEntityNoCommit(listModel);
 | 
						||
                    if (listModelDel != null && listModelDel.Any()) //删除旧数据
 | 
						||
                        BantchSaveEntityNoCommit(listModelDel);
 | 
						||
                    if (listModelDelLast != null && listModelDelLast.Any()) //删除旧数据
 | 
						||
                        BantchSaveEntityNoCommit(listModelDelLast);
 | 
						||
                    if (listSummery != null && listSummery.Any())//计算值合并入库
 | 
						||
                        BantchSaveEntityNoCommit(listSummery);
 | 
						||
 | 
						||
                });
 | 
						||
 | 
						||
                int Count = ((listYearInfo != null && listYearInfo.Any()) ? listYearInfo.Count : 0) + ((listLastYearInfo != null && listLastYearInfo.Any()) ? listLastYearInfo.Count : 0) + ((listModel != null && listModel.Any()) ? listModel.Count : 0) + ((listModelDel != null && listModelDel.Any()) ? listModelDel.Count() : 0) + ((listModelDelLast != null && listModelDelLast.Any()) ? listModelDelLast.Count() : 0) + ((listSummery != null && listSummery.Any()) ? listSummery.Count() : 0);
 | 
						||
                SyncLogDetailService.InsertSyncLogDetail(HttpContext.Items, HttpContext.TraceIdentifier, filter.OrgId, Count, filter.Parameter1, SyncLogType.BSCreateCheckPlanSet);
 | 
						||
 | 
						||
                //this.UnifiedCommit(() =>
 | 
						||
                //{
 | 
						||
                //    if (task != null)
 | 
						||
                //        UpdateEntityNoCommit(task);//跑批信息
 | 
						||
                //    if (modelLog != null)//日志
 | 
						||
                //        UpdateEntityNoCommit(modelLog);
 | 
						||
                //    //删除旧数据
 | 
						||
                //    if (listIDSafeCheck.Count > 0)
 | 
						||
                //        BantchDeleteEntity<T_BI_BSSAFECHECK>(listIDSafeCheck);
 | 
						||
                //    if (listIDCheckType.Count > 0)
 | 
						||
                //        BantchDeleteEntity<T_BI_BSCHECKTYPE>(listIDCheckType);
 | 
						||
                //    if (listIDSummary.Count > 0)
 | 
						||
                //        BantchDeleteEntity<T_BI_SUMMARY>(listIDSummary);
 | 
						||
                //    //插入新数据
 | 
						||
                //    if (listSafeCheck != null && listSafeCheck.Count > 0)
 | 
						||
                //        BantchSaveEntityNoCommit(listSafeCheck);
 | 
						||
                //    if (listCheckType != null && listCheckType.Count > 0)
 | 
						||
                //        BantchSaveEntityNoCommit(listCheckType);
 | 
						||
                //    if (listSummary != null && listSummary.Count > 0)
 | 
						||
                //        BantchSaveEntityNoCommit(listSummary);
 | 
						||
                //});
 | 
						||
                return true;
 | 
						||
            });
 | 
						||
        }
 | 
						||
 | 
						||
        /// <summary>
 | 
						||
        /// 给 listModel 赋月份值更新合计 
 | 
						||
        /// </summary>
 | 
						||
        /// <param name="listCheckMonth"></param>
 | 
						||
        /// <param name="listELevel"></param>
 | 
						||
        /// <param name="listCheckTypeLevel"></param>
 | 
						||
        /// <param name="month"></param>
 | 
						||
        /// <param name="listYearInfo"></param>
 | 
						||
        private void SetVal(List<T_BS_SAFE_CHECK> listCheckMonth, List<T_FM_ENUMS> listELevel, List<T_BS_CHECK_TYPE_LEVEL> listCheckTypeLevel, int month, ref List<T_BI_BSSAFECHECK_YEAR> listYearInfo)
 | 
						||
        {
 | 
						||
            if (listCheckMonth == null || listCheckMonth.Count < 1 || listYearInfo == null || listYearInfo.Count < 1 || listELevel == null || listELevel.Count < 1 && listCheckTypeLevel == null || listCheckTypeLevel.Count < 1 || month < 1 || month > 12)
 | 
						||
            {
 | 
						||
                return;
 | 
						||
            }
 | 
						||
 | 
						||
            foreach (var item in listYearInfo)
 | 
						||
            {
 | 
						||
                int count = 0;
 | 
						||
                T_FM_ENUMS enumsL = listELevel.FirstOrDefault(e => e.VALUE == (int)item.LEVEL);
 | 
						||
                if (enumsL != null)
 | 
						||
                {
 | 
						||
                    var listTypeLevel = listCheckTypeLevel.Where(e => e.CheckLevel_ENUMS_ID == enumsL.ID);
 | 
						||
                    if (listTypeLevel != null && listTypeLevel.Any())
 | 
						||
                    {
 | 
						||
                        List<Guid> listTypeLevelID = listTypeLevel.Select(e => e.ID).ToList();
 | 
						||
                        var listLevel = listCheckMonth.FindAll(e => e.CHECK_TYPE_LEVEL_ID.HasValue && listTypeLevelID.Contains(e.CHECK_TYPE_LEVEL_ID.Value));
 | 
						||
                        if (listLevel != null && listLevel.Any())
 | 
						||
                        {
 | 
						||
                            count = listLevel.Count;
 | 
						||
                        }
 | 
						||
                    }
 | 
						||
                }
 | 
						||
 | 
						||
                switch (month)
 | 
						||
                {
 | 
						||
                    case 1:
 | 
						||
                        item.COUNTJANUARY = count;
 | 
						||
                        break;
 | 
						||
                    case 2:
 | 
						||
                        item.COUNTFEBRUARY = count;
 | 
						||
                        break;
 | 
						||
                    case 3:
 | 
						||
                        item.COUNTMARCH = count;
 | 
						||
                        break;
 | 
						||
                    case 4:
 | 
						||
                        item.COUNTAPRIL = count;
 | 
						||
                        break;
 | 
						||
                    case 5:
 | 
						||
                        item.COUNTMAY = count;
 | 
						||
                        break;
 | 
						||
                    case 6:
 | 
						||
                        item.COUNTJUNE = count;
 | 
						||
                        break;
 | 
						||
                    case 7:
 | 
						||
                        item.COUNTJULY = count;
 | 
						||
                        break;
 | 
						||
                    case 8:
 | 
						||
                        item.COUNTAUGUST = count;
 | 
						||
                        break;
 | 
						||
                    case 9:
 | 
						||
                        item.COUNTSEPTEMBER = count;
 | 
						||
                        break;
 | 
						||
                    case 10:
 | 
						||
                        item.COUNTOCTOBER = count;
 | 
						||
                        break;
 | 
						||
                    case 11:
 | 
						||
                        item.COUNTNOVEMBER = count;
 | 
						||
                        break;
 | 
						||
                    case 12:
 | 
						||
                        item.COUNTDECEMBER = count;
 | 
						||
                        break;
 | 
						||
                    default:
 | 
						||
                        break;
 | 
						||
                }
 | 
						||
                item.COUNTTOTAL = (item.COUNTJANUARY.HasValue ? item.COUNTJANUARY.Value : 0) + (item.COUNTFEBRUARY.HasValue ? item.COUNTFEBRUARY.Value : 0) + (item.COUNTMARCH.HasValue ? item.COUNTMARCH.Value : 0) + (item.COUNTAPRIL.HasValue ? item.COUNTAPRIL.Value : 0) + (item.COUNTMAY.HasValue ? item.COUNTMAY.Value : 0) + (item.COUNTJUNE.HasValue ? item.COUNTJUNE.Value : 0) + (item.COUNTJULY.HasValue ? item.COUNTJULY.Value : 0) + (item.COUNTAUGUST.HasValue ? item.COUNTAUGUST.Value : 0) + (item.COUNTSEPTEMBER.HasValue ? item.COUNTSEPTEMBER.Value : 0) + (item.COUNTOCTOBER.HasValue ? item.COUNTOCTOBER.Value : 0) + (item.COUNTNOVEMBER.HasValue ? item.COUNTNOVEMBER.Value : 0) + (item.COUNTDECEMBER.HasValue ? item.COUNTDECEMBER.Value : 0);
 | 
						||
 | 
						||
            }
 | 
						||
 | 
						||
        }
 | 
						||
 | 
						||
        /// <summary>
 | 
						||
        /// 安全检查隐患整改统计图(近12个月)
 | 
						||
        /// </summary>
 | 
						||
        /// <param name="dtMax"></param>
 | 
						||
        /// <param name="ORG_ID"></param>
 | 
						||
        /// <param name="typeYearMonth"></param>
 | 
						||
        /// <param name="MineType"></param>
 | 
						||
        private void SetVal(DateTime dtMax, Guid ORG_ID, ref T_BI_BSCHECKTYPE_YEAR typeYearMonth, BSMineTypeEnum MineType = BSMineTypeEnum.All)
 | 
						||
        {
 | 
						||
            typeYearMonth = GetEntity<T_BI_BSCHECKTYPE_YEAR>(e => e.MineType == MineType && e.YEAR == dtMax.Year && e.MONTH == dtMax.Month);
 | 
						||
            if (typeYearMonth == null)
 | 
						||
            {
 | 
						||
                //最好有 code 但是之前没有就没有了 0406 修改
 | 
						||
                typeYearMonth = new T_BI_BSCHECKTYPE_YEAR();
 | 
						||
                typeYearMonth.YEAR = dtMax.Year;
 | 
						||
                typeYearMonth.MONTH = dtMax.Month;
 | 
						||
                typeYearMonth.MineType = MineType;
 | 
						||
                typeYearMonth.ORG_ID = ORG_ID;
 | 
						||
            }
 | 
						||
 | 
						||
            DateTime dtMin = Convert.ToDateTime(dtMax.ToString("yyyy-MM-01 00:00:00"));
 | 
						||
            Expression<Func<T_BS_RISK_SUBMIT_CONTENT, bool>> expression = e => !e.IS_DELETED && e.ISFINISHINTTIME.HasValue && e.ISFINISHINTTIME.Value && e.CREATE_TIME.HasValue && dtMin < e.CREATE_TIME.Value && e.CREATE_TIME.Value < dtMax;//按期整改
 | 
						||
            Expression<Func<T_BS_RISK_SUBMIT_CONTENT, bool>> expression2 = e => !e.IS_DELETED && e.OKDATE.HasValue && e.LastDateUser.HasValue && e.OKDATE.Value > e.LastDateUser.Value && e.CREATE_TIME.HasValue && dtMin < e.CREATE_TIME.Value && e.CREATE_TIME.Value < dtMax;//超期整改
 | 
						||
            Expression<Func<T_BS_RISK_SUBMIT_CONTENT, bool>> expression3 = e => !e.IS_DELETED && !e.OKDATE.HasValue && e.CREATE_TIME.HasValue && dtMin < e.CREATE_TIME.Value && e.CREATE_TIME.Value < dtMax;//未完成
 | 
						||
 | 
						||
 | 
						||
            if (MineType != BSMineTypeEnum.All)
 | 
						||
            {
 | 
						||
                int iMineType = (int)MineType;
 | 
						||
                expression = expression.And(e => e.Nav_SafeCheck.CHECKOBJECT.HasValue && e.Nav_SafeCheck.CHECKOBJECT.Value == iMineType);
 | 
						||
                expression2 = expression2.And(e => e.Nav_SafeCheck.CHECKOBJECT.HasValue && e.Nav_SafeCheck.CHECKOBJECT.Value == iMineType);
 | 
						||
                expression3 = expression3.And(e => e.Nav_SafeCheck.CHECKOBJECT.HasValue && e.Nav_SafeCheck.CHECKOBJECT.Value == iMineType);
 | 
						||
            }
 | 
						||
            BaseFilter filter = null;
 | 
						||
            if (MineType != BSMineTypeEnum.All)
 | 
						||
            {
 | 
						||
                filter = new BaseFilter();
 | 
						||
                filter.DataRule.Add("Nav_SafeCheck");
 | 
						||
            }
 | 
						||
            typeYearMonth.INTTIMECOUNT = GetCount<T_BS_RISK_SUBMIT_CONTENT>(expression, filter);//按期整改
 | 
						||
            typeYearMonth.OUTTIMECOUNT = GetCount<T_BS_RISK_SUBMIT_CONTENT>(expression2, filter);//超期整改
 | 
						||
            typeYearMonth.NOTFINISHCOUN = GetCount<T_BS_RISK_SUBMIT_CONTENT>(expression3, filter);//未完成
 | 
						||
            typeYearMonth.ALLCOUNT = typeYearMonth.INTTIMECOUNT + typeYearMonth.OUTTIMECOUNT + typeYearMonth.NOTFINISHCOUN;
 | 
						||
            if (typeYearMonth.ALLCOUNT == 0)
 | 
						||
            {
 | 
						||
                typeYearMonth.FINISHPERCENT = 100;
 | 
						||
            }
 | 
						||
            else if (typeYearMonth.INTTIMECOUNT + typeYearMonth.OUTTIMECOUNT == 0)
 | 
						||
            {
 | 
						||
                typeYearMonth.FINISHPERCENT = 0;
 | 
						||
            }
 | 
						||
            else
 | 
						||
            {
 | 
						||
                typeYearMonth.FINISHPERCENT = Math.Round(Convert.ToDecimal(100.0 * (typeYearMonth.INTTIMECOUNT + typeYearMonth.OUTTIMECOUNT) / (typeYearMonth.INTTIMECOUNT + typeYearMonth.OUTTIMECOUNT + typeYearMonth.NOTFINISHCOUN)), 2);
 | 
						||
            }
 | 
						||
        }
 | 
						||
 | 
						||
 | 
						||
        #region     部门级年度安全检查情况综合统计分析
 | 
						||
 | 
						||
        /// <summary>
 | 
						||
        /// 部门级年度安全检查情况综合统计分析
 | 
						||
        /// </summary>
 | 
						||
        /// <param name="filter"></param>
 | 
						||
        /// <returns></returns>
 | 
						||
        [HttpPost, Route("AddDepartmentSafeInfoYear")]
 | 
						||
        public JsonActionResult<bool> AddDepartmentSafeInfoYear([FromBody] KeywordFilter filter)
 | 
						||
        {
 | 
						||
            return SafeExecute<bool>(() =>
 | 
						||
            {
 | 
						||
                DateTime dtNow = DateTime.Now;
 | 
						||
                int caculateMonth = 3;//计算月份数 动态配置
 | 
						||
 | 
						||
                GetParmInfo(filter.Parameter1, out dtNow, out caculateMonth);
 | 
						||
 | 
						||
                var listCheckObjectT = GetEntities<T_BS_SAFE_CHECK>(e => e.CHECKOBJECT.HasValue && e.CHECKOBJECT.Value > 0 && e.CREATE_TIME.HasValue && e.CREATE_TIME.Value.Year == dtNow.Year, null, null).Select(e => e.CHECKOBJECT.Value).GroupBy(e => e);//排除全公司
 | 
						||
 | 
						||
                if (listCheckObjectT == null || !listCheckObjectT.Any())
 | 
						||
                {
 | 
						||
                    return true;
 | 
						||
                }
 | 
						||
 | 
						||
                List<int> listCheckObject = new List<int>();//矿山 选矿 尾矿 
 | 
						||
                listCheckObjectT.ForEach(e => listCheckObject.Add(e.Key));
 | 
						||
 | 
						||
                List<T_BI_SUMMARY> listSummery = null;
 | 
						||
                IEnumerable<T_BI_SUMMARY> IlistSummary = null;
 | 
						||
                T_BI_SUMMARY summery = null;
 | 
						||
                DateTime dtYearBegin = Convert.ToDateTime(dtNow.Year + "-01-01 00:00:00");
 | 
						||
                List<Guid> listCheckTypeId = null;
 | 
						||
                List<Guid> listCheckTypeIdOrder = null;
 | 
						||
                //检查区域 检查类型 的安全检查
 | 
						||
                IEnumerable<T_BS_SAFE_CHECK> IlistCheckTypeOCT = null;
 | 
						||
                T_BI_BSSAFECHECKTYPE_YEAR modelCheckTypeResult = null;
 | 
						||
                List<T_BI_BSSAFECHECKTYPE_YEAR> listCheckTypeResult = new List<T_BI_BSSAFECHECKTYPE_YEAR>();
 | 
						||
 | 
						||
 | 
						||
                T_FM_SYNC_TASK task = GetEntity<T_FM_SYNC_TASK>(filter.Keyword);
 | 
						||
                if (task != null)
 | 
						||
                {
 | 
						||
                    task.CURR_TASK_START_TIME = dtNow;//上次同步结束时间
 | 
						||
                    task.UPDATE_SUCCES_TIME = DateTime.Now;//上次同步结束时间
 | 
						||
                    task.SYNC_PARAM = "";//清空参数
 | 
						||
                }
 | 
						||
                List<T_BS_CHECK_TYPE> ListCheckType = GetEntities<T_BS_CHECK_TYPE>(e => true
 | 
						||
                    , null, null).OrderBy(e => e.NUM).ToList();
 | 
						||
                int ROW_NO = 0;
 | 
						||
                foreach (var item in listCheckObject)
 | 
						||
                {
 | 
						||
                    //每种类型分开计算
 | 
						||
 | 
						||
                    listSummery = new List<T_BI_SUMMARY>();
 | 
						||
                    #region    1 年度 计划检查数 按时已办数 超时已办数 未完成数 完成率 及时完成率
 | 
						||
 | 
						||
                    IlistSummary = GetEntities<T_BI_SUMMARY>(e => (int)e.MineType == item && e.CODE == "BI052_BSSafeCheckYear", null, null);
 | 
						||
 | 
						||
                    if (IlistSummary != null && IlistSummary.Any())
 | 
						||
                    {
 | 
						||
                        summery = IlistSummary.FirstOrDefault(e => e.PART == 1 && e.MineType == (BSMineTypeEditEnum)item);
 | 
						||
                    }
 | 
						||
                    if (summery == null)
 | 
						||
                    {
 | 
						||
                        summery = new T_BI_SUMMARY();
 | 
						||
                        summery.ID = Guid.NewGuid();
 | 
						||
                        summery.CODE = "BI052_BSSafeCheckYear";
 | 
						||
                        summery.PART = 1;
 | 
						||
                        summery.NUM = 1;
 | 
						||
                        summery.ORG_ID = filter.OrgId;
 | 
						||
                        summery.MineType = (BSMineTypeEditEnum)item;
 | 
						||
 | 
						||
                        summery.Parameter1 = "计划检查数";
 | 
						||
                        summery.Parameter2 = "按时已办";
 | 
						||
                        summery.Parameter3 = "超时已办";
 | 
						||
                        summery.Parameter4 = "未完成数";
 | 
						||
                        summery.Parameter5 = "完成率";
 | 
						||
                        summery.Parameter6 = "及时完成率";
 | 
						||
                        summery.Parameter9 = summery.MineType.GetDescription();// "矿山部";
 | 
						||
                    }
 | 
						||
 | 
						||
                    summery.Count1 = GetCount<T_BS_SAFE_CHECK>(e => !e.IS_DELETED && e.ENABLE_STATUS == 0 && e.CHECKOBJECT.HasValue && e.CHECKOBJECT.Value == item && e.CREATE_TIME.HasValue && e.CREATE_TIME >= dtYearBegin, null);//计划检查数
 | 
						||
 | 
						||
                    summery.Count2 = GetCount<T_BS_SAFE_CHECK>(e => !e.IS_DELETED && e.CHECKOBJECT.HasValue && e.CHECKOBJECT.Value == item && e.ENABLE_STATUS == 0 && e.CREATE_TIME.HasValue && e.CREATE_TIME >= dtYearBegin && e.ISFINISHINTTIME, null);//按时已办
 | 
						||
 | 
						||
                    summery.Count3 = GetCount<T_BS_SAFE_CHECK>(e => !e.IS_DELETED && e.ENABLE_STATUS == 0 && e.CHECKOBJECT.HasValue && e.CHECKOBJECT.Value == item && e.CREATE_TIME.HasValue && e.CREATE_TIME >= dtYearBegin && !e.ISFINISHINTTIME && e.STATECHECK == STATECHECK.Archived, null);//完成 未及时完成
 | 
						||
 | 
						||
                    summery.Count4 = GetCount<T_BS_SAFE_CHECK>(e => !e.IS_DELETED && e.ENABLE_STATUS == 0 && e.CHECKOBJECT.HasValue && e.CHECKOBJECT.Value == item && e.CREATE_TIME.HasValue && e.CREATE_TIME >= dtYearBegin && e.STATECHECK != STATECHECK.Archived, null);//未完成数
 | 
						||
 | 
						||
                    if (summery.Count1 < 1)
 | 
						||
                    {
 | 
						||
                        summery.Parameter7 = "100%";
 | 
						||
                        summery.Parameter8 = "100%";
 | 
						||
                    }
 | 
						||
                    else
 | 
						||
                    {
 | 
						||
                        summery.Parameter7 = Math.Round(100.0 * (summery.Count2 + summery.Count3) / summery.Count1, 2) + "%";//完成率
 | 
						||
                        summery.Parameter8 = Math.Round(100.0 * summery.Count2 / summery.Count1, 2) + "%";//及时完成率
 | 
						||
                    }
 | 
						||
 | 
						||
 | 
						||
                    #endregion
 | 
						||
 | 
						||
                    #region   2 年度每个层级对应的安全检查记录
 | 
						||
 | 
						||
                    var listCheckTypeYear = GetEntities<T_BI_BSSAFECHECKTYPE_YEAR>(e => e.YEAR == dtNow.Year && (int)e.MineType == item, null, null);
 | 
						||
 | 
						||
                    var listCheckTypeYearT = GetEntities<T_BS_SAFE_CHECK>(e => !e.IS_DELETED && e.CHECKOBJECT.HasValue && e.CHECKOBJECT.Value == item && e.CHECK_TYPE_ID.HasValue && e.CREATE_TIME.HasValue && e.CREATE_TIME.Value.Year == dtNow.Year, null, null);//检查区域全公司
 | 
						||
 | 
						||
                    if (listCheckTypeYearT == null || !listCheckTypeYearT.Any())
 | 
						||
                    {
 | 
						||
                        continue;//今年这个检查区域没安全检查
 | 
						||
                    }
 | 
						||
 | 
						||
                    var listCheckTypeT = listCheckTypeYearT.Select(e => e.CHECK_TYPE_ID.Value).GroupBy(e => e);
 | 
						||
                    listCheckTypeId = new List<Guid>();
 | 
						||
                    listCheckTypeIdOrder = new List<Guid>();
 | 
						||
                    listCheckTypeT.ForEach(e => listCheckTypeId.Add(e.Key));
 | 
						||
 | 
						||
                    for (int i = 0; i < ListCheckType.Count; i++)
 | 
						||
                    {
 | 
						||
                        if (listCheckTypeId.Contains(ListCheckType[i].ID))
 | 
						||
                            listCheckTypeIdOrder.Add(ListCheckType[i].ID);
 | 
						||
                    }
 | 
						||
 | 
						||
                    //安全检查隐患整改率
 | 
						||
                    List<T_BI_BSCHECKTYPE_YEAR> listModel = null;
 | 
						||
                    IEnumerable<T_BI_BSCHECKTYPE_YEAR> listModelDel = null;//需要删除的旧数据
 | 
						||
                    IEnumerable<T_BI_BSCHECKTYPE_YEAR> listModelDelLast = null;//需要删除的旧数据
 | 
						||
                    ROW_NO = 0;
 | 
						||
                    foreach (var itemT in listCheckTypeIdOrder)
 | 
						||
                    {
 | 
						||
                        IlistCheckTypeOCT = listCheckTypeYearT.Where(e => e.CHECKOBJECT.Value == item && e.CHECK_TYPE_ID.Value == itemT);//检查区域 检查类型 
 | 
						||
                        #region   数据查找或者初始化
 | 
						||
 | 
						||
                        modelCheckTypeResult = listCheckTypeYear.FirstOrDefault(e => e.CHECK_TYPE_ID == itemT);
 | 
						||
 | 
						||
                        if (modelCheckTypeResult == null)
 | 
						||
                        {
 | 
						||
                            modelCheckTypeResult = new T_BI_BSSAFECHECKTYPE_YEAR();
 | 
						||
                            modelCheckTypeResult.ID = Guid.NewGuid();
 | 
						||
                            modelCheckTypeResult.ORG_ID = filter.OrgId;
 | 
						||
                            modelCheckTypeResult.YEAR = dtNow.Year;
 | 
						||
                            modelCheckTypeResult.CHECK_TYPE_ID = itemT;
 | 
						||
                            modelCheckTypeResult.MineType = (BSMineTypeEnum)item;
 | 
						||
                            modelCheckTypeResult.CREATE_TIME = DateTime.Now;
 | 
						||
                            modelCheckTypeResult.NAME = ListCheckType.FirstOrDefault(e => e.ID == itemT)?.NAME;
 | 
						||
                            modelCheckTypeResult.ROW_NO = ROW_NO;
 | 
						||
                            ROW_NO++;
 | 
						||
                        }
 | 
						||
                        #endregion
 | 
						||
 | 
						||
                        #region     赋值 月份没到 不赋值
 | 
						||
 | 
						||
                        modelCheckTypeResult.COUNTJANUARY = IlistCheckTypeOCT.Where(e => e.CREATE_TIME.Value.Month == 1).Count();
 | 
						||
                        if (dtNow.Month >= 2)
 | 
						||
                            modelCheckTypeResult.COUNTFEBRUARY = IlistCheckTypeOCT.Where(e => e.CREATE_TIME.Value.Month == 2).Count();
 | 
						||
                        if (dtNow.Month >= 3)
 | 
						||
                            modelCheckTypeResult.COUNTMARCH = IlistCheckTypeOCT.Where(e => e.CREATE_TIME.Value.Month == 3).Count();
 | 
						||
                        if (dtNow.Month >= 4)
 | 
						||
                            modelCheckTypeResult.COUNTAPRIL = IlistCheckTypeOCT.Where(e => e.CREATE_TIME.Value.Month == 4).Count();
 | 
						||
                        if (dtNow.Month >= 5)
 | 
						||
                            modelCheckTypeResult.COUNTMAY = IlistCheckTypeOCT.Where(e => e.CREATE_TIME.Value.Month == 5).Count();
 | 
						||
                        if (dtNow.Month >= 6)
 | 
						||
                            modelCheckTypeResult.COUNTJUNE = IlistCheckTypeOCT.Where(e => e.CREATE_TIME.Value.Month == 6).Count();
 | 
						||
                        if (dtNow.Month >= 7)
 | 
						||
                            modelCheckTypeResult.COUNTJULY = IlistCheckTypeOCT.Where(e => e.CREATE_TIME.Value.Month == 7).Count();
 | 
						||
                        if (dtNow.Month >= 8)
 | 
						||
                            modelCheckTypeResult.COUNTAUGUST = IlistCheckTypeOCT.Where(e => e.CREATE_TIME.Value.Month == 8).Count();
 | 
						||
                        if (dtNow.Month >= 9)
 | 
						||
                            modelCheckTypeResult.COUNTSEPTEMBER = IlistCheckTypeOCT.Where(e => e.CREATE_TIME.Value.Month == 9).Count();
 | 
						||
                        if (dtNow.Month >= 10)
 | 
						||
                            modelCheckTypeResult.COUNTOCTOBER = IlistCheckTypeOCT.Where(e => e.CREATE_TIME.Value.Month == 10).Count();
 | 
						||
                        if (dtNow.Month >= 11)
 | 
						||
                            modelCheckTypeResult.COUNTNOVEMBER = IlistCheckTypeOCT.Where(e => e.CREATE_TIME.Value.Month == 11).Count();
 | 
						||
                        if (dtNow.Month == 12)
 | 
						||
                            modelCheckTypeResult.COUNTDECEMBER = IlistCheckTypeOCT.Where(e => e.CREATE_TIME.Value.Month == 12).Count();
 | 
						||
 | 
						||
                        modelCheckTypeResult.COUNTTOTAL = IlistCheckTypeOCT.Count();
 | 
						||
 | 
						||
                        listCheckTypeResult.Add(modelCheckTypeResult);//检查类型每月检查数量 入库 
 | 
						||
                        #endregion
 | 
						||
                    }
 | 
						||
 | 
						||
                    #endregion
 | 
						||
 | 
						||
                    #region   3  安全检查隐患整改统计图  更新当前时间 对应前 3月的数据
 | 
						||
 | 
						||
                    listModel = new List<T_BI_BSCHECKTYPE_YEAR>();
 | 
						||
                    T_BI_BSCHECKTYPE_YEAR modelYM = null;
 | 
						||
 | 
						||
                    for (int i = 0; i < caculateMonth; i++)
 | 
						||
                    {
 | 
						||
                        DateTime dt = dtNow;
 | 
						||
                        if (i > 0)
 | 
						||
                        {
 | 
						||
                            dt = Convert.ToDateTime(dtNow.ToString("yyyy-MM-01 00:00:00"));
 | 
						||
                            dt = dt.AddMonths(-1 * (i - 1)).AddSeconds(-1);
 | 
						||
                        }
 | 
						||
                        modelYM = new T_BI_BSCHECKTYPE_YEAR();
 | 
						||
                        modelYM.ORG_ID = filter.OrgId.Value;
 | 
						||
 | 
						||
                        SetVal(dt, filter.OrgId.Value, ref modelYM, (BSMineTypeEnum)item);
 | 
						||
 | 
						||
                        listModel.Add(modelYM);
 | 
						||
                    }
 | 
						||
 | 
						||
                    //listModel 判断年份 计算数据 不够的去数据库查找  
 | 
						||
 | 
						||
                    T_BI_SUMMARY summery3 = null;
 | 
						||
 | 
						||
                    #region    隐患整改查询 统计 
 | 
						||
 | 
						||
                    if (IlistSummary != null && IlistSummary.Any())
 | 
						||
                        summery3 = IlistSummary.FirstOrDefault(e => e.PART == 3 && e.MineType == (BSMineTypeEditEnum)item);
 | 
						||
 | 
						||
                    //初始化
 | 
						||
                    if (summery3 == null)
 | 
						||
                    {
 | 
						||
                        summery3 = new T_BI_SUMMARY();
 | 
						||
                        summery3.ID = Guid.NewGuid();
 | 
						||
                        summery3.CODE = "BI052_BSSafeCheckYear";
 | 
						||
                        summery3.PART = 3;
 | 
						||
                        summery3.NUM = 1;
 | 
						||
                        summery3.ORG_ID = filter.OrgId;
 | 
						||
                        summery3.MineType = (BSMineTypeEditEnum)item;
 | 
						||
 | 
						||
                        summery3.Parameter1 = "隐患数";
 | 
						||
                        summery3.Parameter2 = "超整改数";
 | 
						||
                        summery3.Parameter3 = "按期整改数";
 | 
						||
                        summery3.Parameter4 = "整改率";
 | 
						||
                    }
 | 
						||
                    else
 | 
						||
                    {
 | 
						||
                        summery3.Count1 = 0;
 | 
						||
                        summery3.Count2 = 0;
 | 
						||
                        summery3.Count3 = 0;
 | 
						||
                    }
 | 
						||
 | 
						||
                    #region    数据统计
 | 
						||
 | 
						||
                    foreach (var itemTY in listModel)
 | 
						||
                    {
 | 
						||
                        if (itemTY.YEAR == dtNow.Year)
 | 
						||
                        {
 | 
						||
                            summery3.Count1 += (itemTY.INTTIMECOUNT + itemTY.OUTTIMECOUNT + itemTY.NOTFINISHCOUN);
 | 
						||
                            summery3.Count2 += itemTY.OUTTIMECOUNT;
 | 
						||
                            summery3.Count3 += itemTY.INTTIMECOUNT;
 | 
						||
                        }
 | 
						||
                    }
 | 
						||
 | 
						||
                    if (dtNow.Month >= caculateMonth)
 | 
						||
                    {
 | 
						||
                        //如果月份小于 往后计算月份 再从数据库中 拉取
 | 
						||
                        var listCaculate = GetEntities<T_BI_BSCHECKTYPE_YEAR>(e => e.YEAR == dtNow.Year && e.MONTH < (dtNow.Month - caculateMonth), null, null);
 | 
						||
                        if (listCaculate != null && listCaculate.Any())
 | 
						||
                        {
 | 
						||
                            foreach (var itemTT in listCaculate)
 | 
						||
                            {
 | 
						||
                                summery3.Count1 += (itemTT.INTTIMECOUNT + itemTT.OUTTIMECOUNT + itemTT.NOTFINISHCOUN);
 | 
						||
                                summery3.Count2 += itemTT.OUTTIMECOUNT;
 | 
						||
                                summery3.Count3 += itemTT.INTTIMECOUNT;
 | 
						||
                            }
 | 
						||
                        }
 | 
						||
 | 
						||
                        listModelDel = GetEntities<T_BI_BSCHECKTYPE_YEAR>(e => e.MineType == (BSMineTypeEnum)item && e.YEAR == dtNow.Year && e.MONTH < dtNow.Month && e.MONTH >= (dtNow.Month - caculateMonth), null);//需要删除的数据
 | 
						||
                    }
 | 
						||
                    else
 | 
						||
                    {
 | 
						||
                        listModelDelLast = GetEntities<T_BI_BSCHECKTYPE_YEAR>(e => e.MineType == (BSMineTypeEnum)item && e.YEAR == dtNow.Year - 1 && e.MONTH > (12 - (caculateMonth - dtNow.Month)), null);//需要删除的数据
 | 
						||
                    }
 | 
						||
 | 
						||
                    if (summery3.Count1 < 1)
 | 
						||
                    {
 | 
						||
 | 
						||
                        summery3.Parameter7 = "100%";
 | 
						||
                    }
 | 
						||
                    else
 | 
						||
                    {
 | 
						||
                        summery3.Parameter7 = Math.Round(100.0 * (summery3.Count2 + summery3.Count3) / summery3.Count1, 2).ToString() + "%";
 | 
						||
                    }
 | 
						||
 | 
						||
                    #endregion
 | 
						||
 | 
						||
                    #endregion
 | 
						||
 | 
						||
                    listSummery.Add(summery3);
 | 
						||
 | 
						||
                    #endregion
 | 
						||
 | 
						||
                    listSummery.Add(summery);
 | 
						||
                    List<Guid> listDelID = null;
 | 
						||
                    List<Guid> listDelIDLast = null;
 | 
						||
                    if (listModelDel != null && listModelDel.Any())
 | 
						||
                    {
 | 
						||
                        listDelID = listModelDel.Select(e => e.ID).ToList();
 | 
						||
                    }
 | 
						||
                    if (listModelDelLast != null && listModelDelLast.Any())
 | 
						||
                    {
 | 
						||
                        listDelIDLast = listModelDelLast.Select(e => e.ID).ToList();
 | 
						||
                    }
 | 
						||
                    this.UnifiedCommit(() =>
 | 
						||
                    {
 | 
						||
                        if (task != null)
 | 
						||
                            UpdateEntityNoCommit(task);//跑批信息
 | 
						||
                        if (listCheckTypeResult != null && listCheckTypeResult.Any()) //年度 检查类型 每个月有多少数据
 | 
						||
                            BantchSaveEntityNoCommit(listCheckTypeResult);
 | 
						||
                        if (listSummery != null && listSummery.Any())//1 3 汇总信息
 | 
						||
                            BantchSaveEntityNoCommit(listSummery);
 | 
						||
 | 
						||
                        if (listModel != null && listModel.Any())//添加新的数据
 | 
						||
                            BantchSaveEntityNoCommit(listModel);
 | 
						||
                        if (listDelID != null && listDelID.Any()) //删除旧数据
 | 
						||
                            BantchDeleteEntityNoCommit<T_BI_BSSAFECHECKTYPE_YEAR>(listDelID);
 | 
						||
                        if (listDelIDLast != null && listDelIDLast.Any()) //删除旧数据
 | 
						||
                            BantchDeleteEntityNoCommit<T_BI_BSSAFECHECKTYPE_YEAR>(listDelIDLast);
 | 
						||
                    });
 | 
						||
                    summery = null;
 | 
						||
                    task = null;
 | 
						||
 | 
						||
                    int Count = ((listCheckTypeResult != null && listCheckTypeResult.Any()) ? listCheckTypeResult.Count : 0) + ((listSummery != null && listSummery.Any()) ? listSummery.Count : 0) + ((listModel != null && listModel.Any()) ? listModel.Count : 0) + ((listDelID != null && listDelID.Any()) ? listDelID.Count() : 0) + ((listDelIDLast != null && listDelIDLast.Any()) ? listDelIDLast.Count() : 0);
 | 
						||
                    SyncLogDetailService.InsertSyncLogDetail(HttpContext.Items, HttpContext.TraceIdentifier, filter.OrgId, Count, filter.Parameter1, SyncLogType.BSCreateCheckPlanSet);
 | 
						||
 | 
						||
                }
 | 
						||
                return true;
 | 
						||
            });
 | 
						||
        }
 | 
						||
 | 
						||
 | 
						||
 | 
						||
        #endregion
 | 
						||
 | 
						||
        /// <summary>
 | 
						||
        /// 获取 传参
 | 
						||
        /// </summary>
 | 
						||
        /// <param name="parm"></param>
 | 
						||
        /// <param name="dtNow"></param>
 | 
						||
        /// <param name="caculateMonth"></param>
 | 
						||
        private void GetParmInfo(string parm, out DateTime dtNow, out int caculateMonth)
 | 
						||
        {
 | 
						||
            dtNow = DateTime.Now;
 | 
						||
            caculateMonth = 3;
 | 
						||
            if (!string.IsNullOrEmpty(parm))
 | 
						||
            {
 | 
						||
                if (parm.Contains("|"))
 | 
						||
                {
 | 
						||
                    List<string> listParm = parm.Split("|").ToList();
 | 
						||
                    foreach (var item in listParm)
 | 
						||
                    {
 | 
						||
                        if (item.Contains("caculateMonth"))
 | 
						||
                        {
 | 
						||
                            try
 | 
						||
                            {
 | 
						||
                                caculateMonth = int.Parse(item.Replace(" ", "").Split("=")[1]);
 | 
						||
                            }
 | 
						||
                            catch
 | 
						||
                            {
 | 
						||
                                caculateMonth = 3;
 | 
						||
                            }
 | 
						||
                        }
 | 
						||
                        else
 | 
						||
                        {
 | 
						||
                            try
 | 
						||
                            {
 | 
						||
                                dtNow = Convert.ToDateTime(item);  //接收来自页面的参数
 | 
						||
                            }
 | 
						||
                            catch { dtNow = DateTime.Now; }
 | 
						||
                        }
 | 
						||
                    }
 | 
						||
                }
 | 
						||
                else
 | 
						||
                {
 | 
						||
                    if (parm.Contains("caculateMonth"))
 | 
						||
                    {
 | 
						||
                        try
 | 
						||
                        {
 | 
						||
                            caculateMonth = int.Parse(parm.Replace(" ", "").Split("=")[1]);
 | 
						||
                        }
 | 
						||
                        catch
 | 
						||
                        {
 | 
						||
                            caculateMonth = 3;
 | 
						||
                        }
 | 
						||
                    }
 | 
						||
                    else
 | 
						||
                    {
 | 
						||
                        try
 | 
						||
                        {
 | 
						||
                            dtNow = Convert.ToDateTime(parm);  //接收来自页面的参数
 | 
						||
                        }
 | 
						||
                        catch { dtNow = DateTime.Now; }
 | 
						||
                    }
 | 
						||
                }
 | 
						||
            }
 | 
						||
        }
 | 
						||
    }
 | 
						||
}
 |