1298 lines
		
	
	
		
			75 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			1298 lines
		
	
	
		
			75 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
using APT.BaseData.Domain.Entities.FM;
 | 
						|
using APT.BaseData.Domain.IServices.FM;
 | 
						|
using APT.Infrastructure.Core;
 | 
						|
using APT.MS.Domain.Entities.SE;
 | 
						|
using APT.MS.Domain.Enums;
 | 
						|
using APT.Utility;
 | 
						|
using Microsoft.AspNetCore.Mvc;
 | 
						|
using System.Collections.Generic;
 | 
						|
using System.Linq;
 | 
						|
using System;
 | 
						|
using APT.MS.Domain.Entities.FO;
 | 
						|
using APT.MS.Domain.Entities.SC.PT;
 | 
						|
using APT.BaseData.Domain.Entities;
 | 
						|
using APT.MS.Domain.Entities.SC;
 | 
						|
using System.Linq.Expressions;
 | 
						|
using APT.BaseData.Domain.Enums;
 | 
						|
using System.Net.WebSockets;
 | 
						|
using Microsoft.CodeAnalysis.Differencing;
 | 
						|
using Org.BouncyCastle.Crypto.Modes.Gcm;
 | 
						|
using NPOI.SS.Formula.Functions;
 | 
						|
using APT.BaseData.Domain.Enums.PF;
 | 
						|
using APT.BaseData.Domain.ApiModel.PF;
 | 
						|
using System.Reflection.Metadata;
 | 
						|
using System.Threading.Tasks;
 | 
						|
using APT.WebApi.Models;
 | 
						|
using log4net.Filter;
 | 
						|
using APT.MS.Domain.Entities.SC.PE;
 | 
						|
using APT.PP.WebApi.Controllers.Api.PP;
 | 
						|
using System.ComponentModel.Design;
 | 
						|
using System.Threading;
 | 
						|
using APT.MS.Domain.Entities.BS;
 | 
						|
using System.Collections;
 | 
						|
 | 
						|
namespace APT.PP.WebApi.Controllers.Api
 | 
						|
{
 | 
						|
    /// <summary>
 | 
						|
    /// 方针与目标管理跑批任务
 | 
						|
    /// </summary>
 | 
						|
    [Route("api/PP/PTController")]
 | 
						|
    [TypeFilter(typeof(CustomActionFilterAttribute))]
 | 
						|
    public class PTController : AuthorizeApiController<T_FM_BASE_CONFIG>
 | 
						|
    {
 | 
						|
        IFMNotificationTaskService NotificationTaskService { get; set; }
 | 
						|
        public PTController(IFMNotificationTaskService notificationTaskService)
 | 
						|
        {
 | 
						|
            NotificationTaskService = notificationTaskService;
 | 
						|
        }
 | 
						|
 | 
						|
        [HttpPost, Route("MonitorSync")]
 | 
						|
        public JsonActionResult<bool> MonitorSync([FromBody] KeywordFilter filter)
 | 
						|
        {
 | 
						|
            return SafeExecute<bool>(() =>
 | 
						|
            {
 | 
						|
                try
 | 
						|
                {
 | 
						|
                    var dateTime = DateTime.Parse("2024-12-01");
 | 
						|
                    List<T_FM_NOTIFICATION_TASK> noticeList = new List<T_FM_NOTIFICATION_TASK>();
 | 
						|
                    Expression<Func<T_PT_MONITOR_ASSESSMENT, bool>> expression = e => e.IS_DELETED == false && e.STATUS == PFStandardStatus.Archived && e.CREATE_TIME >= dateTime;
 | 
						|
                    var monitors = this.GetEntities<T_PT_MONITOR_ASSESSMENT>(expression, filter,new string[] { "Nav_Details" });
 | 
						|
                    if (monitors != null && monitors.Any())
 | 
						|
                    {
 | 
						|
                        var monitor = monitors.Where(e => e.IS_DELETED == false && e.STATUS == PFStandardStatus.Archived && e.CREATE_TIME >= dateTime).ToList();
 | 
						|
                        var users = this.GetEntities<T_FM_USER>(t => t.ENABLE_STATUS == 0, new BaseFilter(filter.OrgId));
 | 
						|
                        foreach (var item in monitor) 
 | 
						|
                        {
 | 
						|
                            if (item.Nav_Details != null && item.Nav_Details.Any())
 | 
						|
                            {
 | 
						|
                                var userIds = item.Nav_Details.Where(t => t.USER_ID != null).Select(m =>(Guid)m.USER_ID).Distinct().ToList();
 | 
						|
                                var userNames = users.Where(t => userIds.Contains(t.ID)).Select(m => m.NAME).ToList();
 | 
						|
                                //发消息
 | 
						|
                                var notices = NotificationTaskService.InsertUserNoticeTaskModels("(月度)个人监测与考核记录-查阅", item.ID, item.ORG_ID, userIds, userNames, DateTime.Now,
 | 
						|
                                DateTime.Now.AddHours(24), (int)FMNoticeTypeEnum.消息, "PT029_SHOWPRINT");
 | 
						|
                                noticeList.AddRange(notices);
 | 
						|
                            }
 | 
						|
                        }
 | 
						|
                    }
 | 
						|
                    UnifiedCommit(() =>
 | 
						|
                    {
 | 
						|
                        if (noticeList != null && noticeList.Any())
 | 
						|
                            BantchAddEntityNoCommit(noticeList);
 | 
						|
                    });
 | 
						|
                }
 | 
						|
                catch (Exception ex)
 | 
						|
                {
 | 
						|
                    if (!string.IsNullOrEmpty(ex.StackTrace))
 | 
						|
                        throw new Exception("错误日志:[StackTrace]" + ex.StackTrace);
 | 
						|
                    else
 | 
						|
                        throw new Exception("【" + HttpContext.Request.Path + "】错误日志:[Message]" + ex.Message);
 | 
						|
                }
 | 
						|
                return true;
 | 
						|
            });
 | 
						|
        }
 | 
						|
        /// <summary>
 | 
						|
        /// 方针与目标模块所有跑批
 | 
						|
        /// </summary>
 | 
						|
        /// <returns></returns>
 | 
						|
        [HttpPost, Route("SafetyPolicySync")]
 | 
						|
        public JsonActionResult<bool> SafetyPolicySync([FromBody] KeywordFilter filter)
 | 
						|
        {
 | 
						|
            return SafeExecute<bool>(() =>
 | 
						|
            {
 | 
						|
                try
 | 
						|
                {
 | 
						|
                    //触发安全方针调查表
 | 
						|
                    CreateSafePolicy(filter);
 | 
						|
                    ////触发安全生产目标与指标制定
 | 
						|
                    CreateIndicatorFormulation(filter);
 | 
						|
                    ////触发安全生产方针征集表
 | 
						|
                    //CreateSafePolicyCollect(filter);
 | 
						|
                }
 | 
						|
                catch (Exception ex)
 | 
						|
                {
 | 
						|
                    if (!string.IsNullOrEmpty(ex.StackTrace))
 | 
						|
                        throw new Exception("错误日志:[StackTrace]" + ex.StackTrace);
 | 
						|
                    else
 | 
						|
                        throw new Exception("【" + HttpContext.Request.Path + "】错误日志:[Message]" + ex.Message);
 | 
						|
                }
 | 
						|
                return true;
 | 
						|
            });
 | 
						|
        }
 | 
						|
        /// <summary>
 | 
						|
        /// 触发安全生产方针征集表
 | 
						|
        /// </summary>
 | 
						|
        /// <returns></returns>
 | 
						|
        [HttpPost, Route("SafePolicyCollectSync")]
 | 
						|
        public JsonActionResult<bool> SafePolicyCollectSync([FromBody] KeywordFilter filter)
 | 
						|
        {
 | 
						|
            return SafeExecute<bool>(() =>
 | 
						|
            {
 | 
						|
                try
 | 
						|
                {
 | 
						|
                    ////触发安全生产方针征集表
 | 
						|
                    CreateSafePolicyCollect(filter);
 | 
						|
                }
 | 
						|
                catch (Exception ex)
 | 
						|
                {
 | 
						|
                    if (!string.IsNullOrEmpty(ex.StackTrace))
 | 
						|
                        throw new Exception("错误日志:[StackTrace]" + ex.StackTrace);
 | 
						|
                    else
 | 
						|
                        throw new Exception("【" + HttpContext.Request.Path + "】错误日志:[Message]" + ex.Message);
 | 
						|
                }
 | 
						|
                return true;
 | 
						|
            });
 | 
						|
        }
 | 
						|
        /// <summary>
 | 
						|
        /// 触发班组监测与考核记录表
 | 
						|
        /// </summary>
 | 
						|
        /// <param name="filter"></param>
 | 
						|
        [HttpPost, Route("MonitorAssessmentSync")]
 | 
						|
        public JsonActionResult<bool> MonitorAssessmentSync([FromBody] KeywordFilter filter)
 | 
						|
        {
 | 
						|
            return SafeExecute<bool>(() =>
 | 
						|
            {
 | 
						|
                try
 | 
						|
                {
 | 
						|
                    var dtNow = DateTime.Now;
 | 
						|
                    var month = dtNow.Month;
 | 
						|
                    var day = dtNow.Day;
 | 
						|
                    var time = dtNow.TimeOfDay;
 | 
						|
                    var week = dtNow.DayOfWeek;
 | 
						|
                    Expression<Func<T_PT_TIME_SET, bool>> expression = e => e.IS_DELETED == false && e.ENABLE_STATUS == 0;
 | 
						|
                    var timeSet = this.GetOrderEntities<T_PT_TIME_SET>(expression, filter).ToList();
 | 
						|
                    if (timeSet.Count < 1)
 | 
						|
                        return true;
 | 
						|
                    List<T_PT_TIME_SET> runList = new List<T_PT_TIME_SET>();
 | 
						|
                    List<T_PT_MONITOR_ASSESSMENT> monitorList = new List<T_PT_MONITOR_ASSESSMENT>();
 | 
						|
                    List<T_PT_MONITOR_ASSESSMENT_DETAIL> monitorDetailList = new List<T_PT_MONITOR_ASSESSMENT_DETAIL>();
 | 
						|
                    List<T_PT_MONITOR_ASSESSMENT_DETAIL_CONTENT> detailContentList = new List<T_PT_MONITOR_ASSESSMENT_DETAIL_CONTENT>();
 | 
						|
                    List<T_FM_NOTIFICATION_TASK> notices = new List<T_FM_NOTIFICATION_TASK>();
 | 
						|
 | 
						|
                    foreach (var item in timeSet)
 | 
						|
                    {
 | 
						|
                        switch (item.PLANCHECKFREQUENCY)
 | 
						|
                        {
 | 
						|
                            //case BSPLANCHECKFREQUENCYEnum.OneTime:
 | 
						|
                            case BSPLANCHECKFREQUENCYEnum.Year:
 | 
						|
                                if (item.MONTH == month && item.DATA == day)
 | 
						|
                                    runList.Add(item);
 | 
						|
                                break;
 | 
						|
                            case BSPLANCHECKFREQUENCYEnum.HalfYear:
 | 
						|
                                if ((item.MONTH == month && item.DATA == day) || ((item.MONTH + 6) == month && (item.DATA + 183) == day))
 | 
						|
                                    runList.Add(item);
 | 
						|
                                break;
 | 
						|
                            case BSPLANCHECKFREQUENCYEnum.Date:
 | 
						|
                                runList.Add(item);
 | 
						|
                                break;
 | 
						|
                            case BSPLANCHECKFREQUENCYEnum.Week:
 | 
						|
                                if (item.WEEKDATA != null && (int)item.WEEKDATA.Value == (int)week)
 | 
						|
                                    runList.Add(item);
 | 
						|
                                break;
 | 
						|
                            case BSPLANCHECKFREQUENCYEnum.Month:
 | 
						|
                                if (item.DATA == day)
 | 
						|
                                    runList.Add(item);
 | 
						|
                                break;
 | 
						|
                            case BSPLANCHECKFREQUENCYEnum.Quarter:
 | 
						|
                                if (item.MONTH == 1)
 | 
						|
                                {
 | 
						|
                                    if ((month == 1 || month == 4 || month == 7 || month == 10) && day == item.DATA)
 | 
						|
                                    {
 | 
						|
                                        runList.Add(item);
 | 
						|
                                    }
 | 
						|
                                }
 | 
						|
                                else if (item.MONTH == 2)
 | 
						|
                                {
 | 
						|
                                    if ((month == 2 || month == 5 || month == 8 || month == 11) && day == item.DATA)
 | 
						|
                                    {
 | 
						|
                                        runList.Add(item);
 | 
						|
                                    }
 | 
						|
                                }
 | 
						|
                                else if (item.MONTH == 3)
 | 
						|
                                {
 | 
						|
                                    if ((month == 3 || month == 6 || month == 9 || month == 12) && day == item.DATA)
 | 
						|
                                    {
 | 
						|
                                        runList.Add(item);
 | 
						|
                                    }
 | 
						|
                                }
 | 
						|
                                break;
 | 
						|
                            default:
 | 
						|
                                break;
 | 
						|
                        }
 | 
						|
                    }
 | 
						|
                    if (runList != null && runList.Any())
 | 
						|
                    {
 | 
						|
                        Expression<Func<T_FM_DEPARTMENT, bool>> departExpression = e => e.IS_DELETED == false && e.ENABLE_STATUS == 0;
 | 
						|
                        var departInfos = this.GetOrderEntities<T_FM_DEPARTMENT>(departExpression, filter, new string[] { "Nav_User" }).ToList();
 | 
						|
                        Expression<Func<T_FM_USER, bool>> userExpression = e => e.IS_DELETED == false && e.ENABLE_STATUS == 0;
 | 
						|
                        var userInfos = this.GetOrderEntities<T_FM_USER>(userExpression, filter, new string[] { "Nav_Department" }).ToList();
 | 
						|
                        Expression<Func<T_PT_ASSESSMENT_PLAN_AUDIT_TEMP_DETAIL, bool>> detailExpression = e => e.IS_DELETED == false;
 | 
						|
                        var tempDetails = this.GetOrderEntities<T_PT_ASSESSMENT_PLAN_AUDIT_TEMP_DETAIL>(detailExpression, filter, new string[] { "Nav_Contents" }).ToList();
 | 
						|
                        foreach (var item in runList)
 | 
						|
                        {
 | 
						|
                            var type = PTAssessmentCycleEnums.Year;
 | 
						|
                            switch (item.PLANCHECKFREQUENCY)
 | 
						|
                            {
 | 
						|
                                //case BSPLANCHECKFREQUENCYEnum.OneTime:
 | 
						|
                                case BSPLANCHECKFREQUENCYEnum.Year:
 | 
						|
                                    type = PTAssessmentCycleEnums.Year;
 | 
						|
                                    break;
 | 
						|
                                //case BSPLANCHECKFREQUENCYEnum.HalfYear:
 | 
						|
                                //    type = PTAssessmentCycleEnums.Year;
 | 
						|
                                //    break;
 | 
						|
                                case BSPLANCHECKFREQUENCYEnum.Date:
 | 
						|
                                    type = PTAssessmentCycleEnums.Day;
 | 
						|
                                    break;
 | 
						|
                                case BSPLANCHECKFREQUENCYEnum.Week:
 | 
						|
                                    type = PTAssessmentCycleEnums.Week;
 | 
						|
                                    break;
 | 
						|
                                case BSPLANCHECKFREQUENCYEnum.Month:
 | 
						|
                                    type = PTAssessmentCycleEnums.Month;
 | 
						|
                                    break;
 | 
						|
                                case BSPLANCHECKFREQUENCYEnum.Quarter:
 | 
						|
                                    type = PTAssessmentCycleEnums.Quarter;
 | 
						|
                                    break;
 | 
						|
                                default:
 | 
						|
                                    break;
 | 
						|
                            }
 | 
						|
                            var departType = -1;
 | 
						|
                            switch (item.DEPARTMENT_TYPE)
 | 
						|
                            {
 | 
						|
                                case FMDepartmentType.Company:
 | 
						|
                                    departType = 0;
 | 
						|
                                    break;
 | 
						|
                                case FMDepartmentType.Department:
 | 
						|
                                    departType = 1;
 | 
						|
                                    break;
 | 
						|
                                case FMDepartmentType.Workshop:
 | 
						|
                                    departType = 2;
 | 
						|
                                    break;
 | 
						|
                                case FMDepartmentType.Class:
 | 
						|
                                    departType = -1;
 | 
						|
                                    break;
 | 
						|
                                default:
 | 
						|
                                    departType = -1;
 | 
						|
                                    break;
 | 
						|
                            }
 | 
						|
                            monitorList.AddRange(CreateDepartMonitor(item, type, departInfos, userInfos, tempDetails, departType, ref notices));
 | 
						|
                        }
 | 
						|
                    }
 | 
						|
                    if (monitorList != null && monitorList.Any())
 | 
						|
                    {
 | 
						|
                        monitorList.ForEach(t =>
 | 
						|
                        {
 | 
						|
                            if (t.Nav_Details != null && t.Nav_Details.Any())
 | 
						|
                            {
 | 
						|
                                t.Nav_Details.ForEach(t1 =>
 | 
						|
                                {
 | 
						|
                                    if (t1.Nav_Contents != null && t1.Nav_Contents.Any())
 | 
						|
                                    {
 | 
						|
                                        detailContentList.AddRange(t1.Nav_Contents);
 | 
						|
                                        t1.Nav_Contents = null;
 | 
						|
                                    }
 | 
						|
                                });
 | 
						|
                                monitorDetailList.AddRange(t.Nav_Details);
 | 
						|
                                t.Nav_Details = null;
 | 
						|
                            }
 | 
						|
                        });
 | 
						|
                    }
 | 
						|
                    UnifiedCommit(() =>
 | 
						|
                    {
 | 
						|
                        if (monitorList != null && monitorList.Any())
 | 
						|
                            BantchAddEntityNoCommit(monitorList);
 | 
						|
                        if (monitorDetailList != null && monitorDetailList.Any())
 | 
						|
                            BantchAddEntityNoCommit(monitorDetailList);
 | 
						|
                        if (detailContentList != null && detailContentList.Any())
 | 
						|
                            BantchAddEntityNoCommit(detailContentList);
 | 
						|
                        if (notices != null && notices.Any())
 | 
						|
                            BantchAddEntityNoCommit(notices);
 | 
						|
                    });
 | 
						|
                }
 | 
						|
                catch (Exception ex)
 | 
						|
                {
 | 
						|
                    if (!string.IsNullOrEmpty(ex.StackTrace))
 | 
						|
                        throw new Exception("错误日志:[StackTrace]" + ex.StackTrace);
 | 
						|
                    else
 | 
						|
                        throw new Exception("【" + HttpContext.Request.Path + "】错误日志:[Message]" + ex.Message);
 | 
						|
                }
 | 
						|
                return true;
 | 
						|
            });
 | 
						|
        }
 | 
						|
 | 
						|
        /// <summary>
 | 
						|
        /// 触发班组监测与考核记录表(新)
 | 
						|
        /// </summary>
 | 
						|
        /// <param name="filter"></param>
 | 
						|
        [HttpPost, Route("MonitorAssessmentNewSync")]
 | 
						|
        public JsonActionResult<bool> MonitorAssessmentNewSync([FromBody] KeywordFilter filter)
 | 
						|
        {
 | 
						|
            return SafeExecute<bool>(() =>
 | 
						|
            {
 | 
						|
                try
 | 
						|
                {
 | 
						|
                    var dtNow = DateTime.Now;
 | 
						|
                    var year = dtNow.Year;
 | 
						|
                    var month = dtNow.Month;
 | 
						|
                    var day = dtNow.Day;
 | 
						|
                    var week = dtNow.DayOfWeek;
 | 
						|
                    filter.IgnoreDataRule = true;
 | 
						|
                    //var planAudits = this.GetEntities<T_PT_ASSESSMENT_PLAN_AUDIT>(e => e.STATUS == PFStandardStatus.Archived && e.IS_DELETED == false && e.YEAR == year.ToString(), filter, "Nav_User", "Nav_Details", "Nav_Details.Nav_Contents").GroupBy(m=>new { m.DEPARTMENT_ID,m.DEPARTMENT_TYPE }).Select(y=>y.OrderByDescending(t => t.CREATE_TIME).FirstOrDefault()).ToList();
 | 
						|
                    //if (planAudits.Count < 1)
 | 
						|
                    //{
 | 
						|
                    //    year = year - 1;
 | 
						|
                    //    planAudits = this.GetEntities<T_PT_ASSESSMENT_PLAN_AUDIT>(e => e.STATUS == PFStandardStatus.Archived && e.IS_DELETED == false && e.YEAR == year.ToString(), filter, "Nav_User", "Nav_Details", "Nav_Details.Nav_Contents").GroupBy(m => new { m.DEPARTMENT_ID,m.DEPARTMENT_TYPE}).Select(y => y.OrderByDescending(t => t.CREATE_TIME).FirstOrDefault()).ToList();
 | 
						|
                    //}
 | 
						|
                    //if (planAudits.Count < 1)
 | 
						|
                    //    return true;
 | 
						|
                    List<T_PT_MONITOR_ASSESSMENT> monitorList = new List<T_PT_MONITOR_ASSESSMENT>();
 | 
						|
                    List<T_PT_MONITOR_ASSESSMENT_DETAIL> monitorDetailList = new List<T_PT_MONITOR_ASSESSMENT_DETAIL>();
 | 
						|
                    List<T_PT_MONITOR_ASSESSMENT_USER> monitorUserList = new List<T_PT_MONITOR_ASSESSMENT_USER>();
 | 
						|
                    List<T_PT_MONITOR_ASSESSMENT_DETAIL_CONTENT> detailContentList = new List<T_PT_MONITOR_ASSESSMENT_DETAIL_CONTENT>();
 | 
						|
                    List<T_FM_NOTIFICATION_TASK> notices = new List<T_FM_NOTIFICATION_TASK>();
 | 
						|
                    var timeSet = GetEntities<T_PT_TIME_SET>(i => i.SET_TYPE == PTSetTypeEnum.MonitorAssessment && i.ENABLE_STATUS == 0, new BaseFilter(filter.OrgId)).ToList();
 | 
						|
                    if (timeSet.Count < 1)
 | 
						|
                        return true;
 | 
						|
                    bool isSend = false;var cycle = PTAssessmentCycleEnums.Year;
 | 
						|
                    var departments = this.GetEntities<T_FM_DEPARTMENT>(t => t.ENABLE_STATUS==0, new BaseFilter(filter.OrgId), "Nav_User").ToList();
 | 
						|
                    if (filter.OrgId.ToString() == "b043b28b-bbc3-c452-6052-4fba1457abfa")
 | 
						|
                    {
 | 
						|
                        var idList = new List<Guid>();
 | 
						|
                        var allIdList = new List<Guid>();
 | 
						|
                        var nameList = new List<string>();
 | 
						|
                        nameList.Add("安全环保管理部");
 | 
						|
                        nameList.Add("办公室");
 | 
						|
                        nameList.Add("设备能源部");
 | 
						|
                        nameList.Add("财务部");
 | 
						|
                        nameList.Add("企业管理部");
 | 
						|
                        nameList.Add("营销部");
 | 
						|
                        nameList.Add("技术管理部");
 | 
						|
                        nameList.Add("总经理班子");
 | 
						|
                        nameList.Add("矿山部");
 | 
						|
                        var depaerts = departments.Where(t => nameList.Contains(t.NAME)).ToList();
 | 
						|
                        if (depaerts.Any())
 | 
						|
                        {
 | 
						|
                            foreach (var item in depaerts)
 | 
						|
                            {
 | 
						|
                                allIdList.Add(item.ID);
 | 
						|
                                var depatIds = departments.Where(t => t.PARENT_ID == item.ID).Select(m => m.ID).ToList();
 | 
						|
                                if (depatIds.Any())
 | 
						|
                                {
 | 
						|
                                    idList.AddRange(depatIds);
 | 
						|
                                    allIdList.AddRange(depatIds);
 | 
						|
                                }
 | 
						|
                            }
 | 
						|
                        }
 | 
						|
                        if (idList.Any())
 | 
						|
                        {
 | 
						|
                            var depatIds = departments.Where(t => t.PARENT_ID != null && idList.Contains((Guid)t.PARENT_ID)).Select(m => m.ID).ToList();
 | 
						|
                            if (depatIds.Any())
 | 
						|
                            {
 | 
						|
                                allIdList.AddRange(depatIds);
 | 
						|
                            }
 | 
						|
                        }
 | 
						|
                        if (allIdList.Any())
 | 
						|
                        {
 | 
						|
                            departments = departments.Where(t => !allIdList.Contains(t.ID)).ToList();
 | 
						|
                        }
 | 
						|
                    }
 | 
						|
                    var users = this.GetEntities<T_FM_USER>(t => t.ENABLE_STATUS == 0, new BaseFilter(filter.OrgId)).ToList();
 | 
						|
                    var contents = this.GetEntities<T_PT_ASSESSMENT_PLAN_AUDIT_TEMP_DETAIL>(t => !t.IS_DELETED, new BaseFilter(filter.OrgId), "Nav_Contents").ToList();
 | 
						|
                    foreach (var set in timeSet)
 | 
						|
                    {
 | 
						|
                        switch (set.PLANCHECKFREQUENCY)
 | 
						|
                        {
 | 
						|
                            case BSPLANCHECKFREQUENCYEnum.Year:
 | 
						|
                                cycle = PTAssessmentCycleEnums.Year;
 | 
						|
                                if (set.MONTH == month && set.DATA == day)
 | 
						|
                                {
 | 
						|
                                    isSend = true;
 | 
						|
                                }
 | 
						|
                                break;
 | 
						|
                            case BSPLANCHECKFREQUENCYEnum.HalfYear:
 | 
						|
                                cycle = PTAssessmentCycleEnums.HalfYear;
 | 
						|
                                if ((set.MONTH == month && set.DATA == day) || ((set.MONTH + 6) == month && (set.DATA + 183) == day))
 | 
						|
                                {
 | 
						|
                                    isSend = true;
 | 
						|
                                }
 | 
						|
                                break;
 | 
						|
                            case BSPLANCHECKFREQUENCYEnum.Date:
 | 
						|
                                cycle = PTAssessmentCycleEnums.Day;
 | 
						|
                                isSend = true;
 | 
						|
                                break;
 | 
						|
                            case BSPLANCHECKFREQUENCYEnum.Week:
 | 
						|
                                cycle = PTAssessmentCycleEnums.Week;
 | 
						|
                                if (set.WEEKDATA != null && (int)set.WEEKDATA.Value == (int)week)
 | 
						|
                                {
 | 
						|
                                    isSend = true;
 | 
						|
                                }
 | 
						|
                                break;
 | 
						|
                            case BSPLANCHECKFREQUENCYEnum.Month:
 | 
						|
                                cycle = PTAssessmentCycleEnums.Month;
 | 
						|
                                if (set.DATA == day)
 | 
						|
                                {
 | 
						|
                                    isSend = true;
 | 
						|
                                }
 | 
						|
                                break;
 | 
						|
                            case BSPLANCHECKFREQUENCYEnum.Quarter:
 | 
						|
                                cycle = PTAssessmentCycleEnums.Quarter;
 | 
						|
                                if (set.MONTH == 1)
 | 
						|
                                {
 | 
						|
                                    if ((month == 1 || month == 4 || month == 7 || month == 10) && set.DATA == day)
 | 
						|
                                    {
 | 
						|
                                        isSend = true;
 | 
						|
                                    }
 | 
						|
                                }
 | 
						|
                                if (set.MONTH == 2)
 | 
						|
                                {
 | 
						|
                                    if ((month == 2 || month == 5 || month == 8 || month == 11) && set.DATA == day)
 | 
						|
                                    {
 | 
						|
                                        isSend = true;
 | 
						|
                                    }
 | 
						|
                                }
 | 
						|
                                if (set.MONTH == 3)
 | 
						|
                                {
 | 
						|
                                    if ((month == 3 || month == 6 || month == 9 || month == 12) && set.DATA == day)
 | 
						|
                                    {
 | 
						|
                                        isSend = true;
 | 
						|
                                    }
 | 
						|
                                }
 | 
						|
                                break;
 | 
						|
                            default:
 | 
						|
                                break;
 | 
						|
                        }
 | 
						|
                        if (isSend)
 | 
						|
                        {
 | 
						|
                            if (set.DEPARTMENT_TYPE == FMDepartmentType.Company)
 | 
						|
                            {
 | 
						|
                                var depart = departments.FirstOrDefault(t => t.NAME.Contains("安全环保") && t.DEPARTMENT_TYPE != 1 && t.DEPARTMENT_TYPE != 2);
 | 
						|
                                if (depart != null)
 | 
						|
                                {
 | 
						|
                                    var departList = departments.Where(t => t.DEPARTMENT_TYPE == 3 || t.DEPARTMENT_TYPE == 0).ToList();
 | 
						|
                                    var companyId = departList.FirstOrDefault(t => t.DEPARTMENT_TYPE == 3).ID;
 | 
						|
                                    var userIds = departList.Where(t => t.DEPARTMENT_TYPE != 3).Select(m => m.USER_ID).ToList();
 | 
						|
                                    var userList = users.Where(t => userIds.Contains(t.ID) || t.DEPARTMENT_ID == companyId).ToList();
 | 
						|
                                    if (!departList.Any() && !userList.Any())
 | 
						|
                                    {
 | 
						|
                                       
 | 
						|
                                    }
 | 
						|
                                    else 
 | 
						|
                                    {
 | 
						|
                                        monitorList.Add(CreateDepartMonitorNew(depart, departList, userList, contents, cycle, year.ToString(), ref notices));
 | 
						|
                                    }
 | 
						|
                                }
 | 
						|
                            }
 | 
						|
                            else if (set.DEPARTMENT_TYPE == FMDepartmentType.Class)
 | 
						|
                            {
 | 
						|
                                var departList = departments.Where(t => t.DEPARTMENT_TYPE == 2).ToList();
 | 
						|
                                if (departList.Any())
 | 
						|
                                {
 | 
						|
                                    foreach (var item in departList)
 | 
						|
                                    {
 | 
						|
                                        var userList = users.Where(t => t.DEPARTMENT_ID == item.ID && t.ID != item.USER_ID).ToList();
 | 
						|
                                        if (userList.Any())
 | 
						|
                                        {
 | 
						|
                                            monitorList.Add(CreateDepartMonitorNew(item, null, userList, contents, cycle, year.ToString(), ref notices));
 | 
						|
                                        }
 | 
						|
                                    }
 | 
						|
                                }
 | 
						|
                            }
 | 
						|
                            else
 | 
						|
                            {
 | 
						|
                                var departs = departments.Where(t => t.DEPARTMENT_TYPE == (int)set.DEPARTMENT_TYPE).ToList();
 | 
						|
                                if (departs.Any())
 | 
						|
                                {
 | 
						|
                                    foreach (var item in departs)
 | 
						|
                                    {
 | 
						|
                                        var departList = departments.Where(t => t.PARENT_ID == item.ID).ToList();
 | 
						|
                                        var childUserIds = departList.Select(t => t.USER_ID).ToList();
 | 
						|
                                        var userList = users.Where(t => t.DEPARTMENT_ID == item.ID || childUserIds.Contains(t.ID)).ToList();
 | 
						|
                                        if (!departList.Any() && !userList.Any())
 | 
						|
                                        {
 | 
						|
 | 
						|
                                        }
 | 
						|
                                        else
 | 
						|
                                        {
 | 
						|
                                            monitorList.Add(CreateDepartMonitorNew(item, departList, userList, contents, cycle, year.ToString(), ref notices));
 | 
						|
                                        }
 | 
						|
                                    }
 | 
						|
                                }
 | 
						|
                            }
 | 
						|
                            //年度
 | 
						|
                            //var dataYears = item.Nav_Details.Where(t => t.ASSESSMENT_CYCLE == PTAssessmentCycleEnums.Year && t.YEAR == year.ToString()).ToList();
 | 
						|
                            //if (dataYears.Count() > 0)
 | 
						|
                            //{
 | 
						|
                            //   monitorList.Add(CreateDepartMonitorNew(item, dataYears, PTAssessmentCycleEnums.Year, year.ToString(), ref notices));  
 | 
						|
                            //}
 | 
						|
                            ////上半年度
 | 
						|
                            //List<int> monthTemp = new List<int>() { 1, 2, 3, 4, 5, 6 };
 | 
						|
                            //var dataHalfYears = item.Nav_Details.Where(t => t.ASSESSMENT_CYCLE == PTAssessmentCycleEnums.HalfYear && t.YEAR == year.ToString() && monthTemp.Contains(t.CREATE_TIME.Value.Month)).ToList();
 | 
						|
                            //if (dataHalfYears.Count() > 0)
 | 
						|
                            //{
 | 
						|
                            //   monitorList.Add(CreateDepartMonitorNew(item, dataHalfYears, PTAssessmentCycleEnums.HalfYear, year.ToString(), ref notices));
 | 
						|
                            //}
 | 
						|
                            ////下半年度
 | 
						|
                            //monthTemp = new List<int>() { 7, 8, 9, 10, 11, 12 };
 | 
						|
                            //var dataHalfSecondYears = item.Nav_Details.Where(t => t.ASSESSMENT_CYCLE == PTAssessmentCycleEnums.HalfYear && t.YEAR == (year - 1).ToString() && monthTemp.Contains(t.CREATE_TIME.Value.Month)).ToList();
 | 
						|
                            //if (dataHalfSecondYears.Count() > 0)
 | 
						|
                            //{
 | 
						|
                            //    if (month == 1 && day == 1)
 | 
						|
                            //    {
 | 
						|
                            //        monitorList.Add(CreateDepartMonitorNew(item, dataHalfSecondYears, PTAssessmentCycleEnums.HalfYear, (year - 1).ToString(), ref notices));
 | 
						|
                            //    }
 | 
						|
                            //}
 | 
						|
                            ////季度(第四季度)
 | 
						|
                            //monthTemp = new List<int>() { 12 };
 | 
						|
                            //var dataThirdQuarterYears = item.Nav_Details.Where(t => t.ASSESSMENT_CYCLE == PTAssessmentCycleEnums.Quarter && t.YEAR == (year - 1).ToString() && monthTemp.Contains(t.CREATE_TIME.Value.Month)).ToList();
 | 
						|
                            //if (dataThirdQuarterYears.Count() > 0)
 | 
						|
                            //{
 | 
						|
                            //    if (month == 1 && day == 1)
 | 
						|
                            //    {
 | 
						|
                            //        monitorList.Add(CreateDepartMonitorNew(item, dataThirdQuarterYears, PTAssessmentCycleEnums.Quarter, (year - 1).ToString(), ref notices));
 | 
						|
                            //    }
 | 
						|
                            //}
 | 
						|
                            ////季度(第1、2、3季度)
 | 
						|
                            //var dataQuarterYears = item.Nav_Details.Where(t => t.ASSESSMENT_CYCLE == PTAssessmentCycleEnums.Quarter && t.YEAR == year.ToString() && monthTemp.Contains(t.CREATE_TIME.Value.Month)).ToList();
 | 
						|
                            //if (dataQuarterYears.Count() > 0)
 | 
						|
                            //{
 | 
						|
                            //    if ((month == 4 && day == 1) || (month == 7 && day == 1) || (month == 10 && (day == 28 || day == 29)))
 | 
						|
                            //    {
 | 
						|
                            //        monthTemp = new List<int>() { month - 1 };
 | 
						|
                            //        monitorList.Add(CreateDepartMonitorNew(item, dataQuarterYears, PTAssessmentCycleEnums.Quarter, year.ToString(), ref notices));
 | 
						|
                            //    }
 | 
						|
                            //}
 | 
						|
                            ////月度
 | 
						|
                            //monthTemp = new List<int>() { month - 1 };
 | 
						|
                            //var dataMonthYears = item.Nav_Details.Where(t => t.ASSESSMENT_CYCLE == PTAssessmentCycleEnums.Month && t.YEAR == year.ToString() && monthTemp.Contains(t.CREATE_TIME.Value.Month)).ToList();
 | 
						|
                            //if (dataMonthYears.Count() > 0)
 | 
						|
                            //{
 | 
						|
                            //    if (month != 1 && day == 1)
 | 
						|
                            //    {
 | 
						|
                            //        monitorList.Add(CreateDepartMonitorNew(item, dataMonthYears, PTAssessmentCycleEnums.Month, year.ToString(), ref notices));
 | 
						|
                            //    }
 | 
						|
                            //}
 | 
						|
                            ////月度(第十二月)
 | 
						|
                            //monthTemp = new List<int>() { 12 };
 | 
						|
                            //var dataLastMonthYears = item.Nav_Details.Where(t => t.ASSESSMENT_CYCLE == PTAssessmentCycleEnums.Month && t.YEAR == (year - 1).ToString() && monthTemp.Contains(t.CREATE_TIME.Value.Month)).ToList();
 | 
						|
                            //if (dataLastMonthYears.Count() > 0)
 | 
						|
                            //{
 | 
						|
                            //    if (month == 1 && day == 1)
 | 
						|
                            //    {
 | 
						|
                            //        monitorList.Add(CreateDepartMonitorNew(item, dataLastMonthYears, PTAssessmentCycleEnums.Month, (year - 1).ToString(), ref notices));
 | 
						|
                            //    }
 | 
						|
                            //}
 | 
						|
                        }
 | 
						|
                    }
 | 
						|
                    if (monitorList != null && monitorList.Any())
 | 
						|
                    {
 | 
						|
                        monitorList = monitorList.Where(t => t != null).ToList();
 | 
						|
                        monitorList.ForEach(t =>
 | 
						|
                        {
 | 
						|
                            if (t != null && t.Nav_Details != null && t.Nav_Details.Any())
 | 
						|
                            {
 | 
						|
                                t.Nav_Details.ForEach(t1 =>
 | 
						|
                                {
 | 
						|
                                    if (t1 != null && t1.Nav_Contents != null && t1.Nav_Contents.Any())
 | 
						|
                                    {
 | 
						|
                                        detailContentList.AddRange(t1.Nav_Contents);
 | 
						|
                                        t1.Nav_Contents = null;
 | 
						|
                                    }
 | 
						|
                                });
 | 
						|
                                monitorDetailList.AddRange(t.Nav_Details);
 | 
						|
                                t.Nav_Details = null;
 | 
						|
                            }
 | 
						|
                            if (t != null && t.Nav_MonitorUser != null && t.Nav_MonitorUser.Any())
 | 
						|
                            {
 | 
						|
                                monitorUserList.AddRange(t.Nav_MonitorUser);
 | 
						|
                                t.Nav_MonitorUser = null;
 | 
						|
                            }
 | 
						|
                        });
 | 
						|
                    }
 | 
						|
 | 
						|
                    UnifiedCommit(() =>
 | 
						|
                    {
 | 
						|
                        //if (planAuditList != null && planAuditList.Any())
 | 
						|
                        //    BantchSaveEntityNoCommit(planAuditList);
 | 
						|
                        if (monitorList != null && monitorList.Any())
 | 
						|
                            BantchSaveEntityNoCommit(monitorList);
 | 
						|
                        if (monitorDetailList != null && monitorDetailList.Any())
 | 
						|
                            BantchAddEntityNoCommit(monitorDetailList);
 | 
						|
                        if (monitorUserList != null && monitorUserList.Any())
 | 
						|
                            BantchAddEntityNoCommit(monitorUserList);
 | 
						|
                        if (detailContentList != null && detailContentList.Any())
 | 
						|
                            BantchAddEntityNoCommit(detailContentList);
 | 
						|
                        if (notices != null && notices.Any())
 | 
						|
                            BantchAddEntityNoCommit(notices);
 | 
						|
                    });
 | 
						|
                }
 | 
						|
                catch (Exception ex)
 | 
						|
                {
 | 
						|
                    if (!string.IsNullOrEmpty(ex.StackTrace))
 | 
						|
                        throw new Exception("错误日志:[StackTrace]" + ex.StackTrace);
 | 
						|
                    else
 | 
						|
                        throw new Exception("【" + HttpContext.Request.Path + "】错误日志:[Message]" + ex.Message);
 | 
						|
                }
 | 
						|
 | 
						|
                return true;
 | 
						|
            });
 | 
						|
        }
 | 
						|
 | 
						|
        /// <summary>
 | 
						|
        /// 触发年度监测汇总表
 | 
						|
        /// </summary>
 | 
						|
        /// <param name="filter"></param>
 | 
						|
        [HttpPost, Route("YearMonitorSummarySync")]
 | 
						|
        public JsonActionResult<bool> YearMonitorSummarySync([FromBody] KeywordFilter filter)
 | 
						|
        {
 | 
						|
            return SafeExecute<bool>(() =>
 | 
						|
            {
 | 
						|
                try
 | 
						|
                {
 | 
						|
                    var dtNow = DateTime.Now;
 | 
						|
                    var year = dtNow.Year;
 | 
						|
                    var month = dtNow.Month;
 | 
						|
                    var day = dtNow.Day;
 | 
						|
                    var time = dtNow.TimeOfDay;
 | 
						|
                    var week = dtNow.DayOfWeek;
 | 
						|
                    T_PT_ANNUAL_MONOTOR_SUMMARY summary = null;
 | 
						|
                    List<T_PT_ANNUAL_MONOTOR_SUMMARY_DETAIL> summaryDetailList = new List<T_PT_ANNUAL_MONOTOR_SUMMARY_DETAIL>();
 | 
						|
                    List<T_PT_ANNUAL_MONOTOR_SUMMARY_DETAIL_CONTENT> detailContentList = new List<T_PT_ANNUAL_MONOTOR_SUMMARY_DETAIL_CONTENT>();
 | 
						|
                    T_FM_NOTIFICATION_TASK notice = null;
 | 
						|
                    if (month == 1 && day == 15)
 | 
						|
                    {
 | 
						|
                        var userInfo = this.GetEntity<T_FM_USER>(t => t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME == "安环部负责人" && t.ENABLE_STATUS == 0);
 | 
						|
                        if (userInfo == null && filter.OrgId.ToString() == "3efd5276-632b-e379-9ff3-7a7546591fca")
 | 
						|
                        {
 | 
						|
                            userInfo = this.GetEntity<T_FM_USER>(t => t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME == "安环部安全员" && t.ENABLE_STATUS == 0);
 | 
						|
                        }
 | 
						|
                        if (userInfo != null)
 | 
						|
                        {
 | 
						|
                            Expression<Func<T_PT_MONITOR_ASSESSMENT, bool>> expression = e => e.IS_DELETED == false && e.YEAR == (year - 1).ToString() && e.ASSESSMENT_CYCLE == PTAssessmentCycleEnums.Quarter;
 | 
						|
                            var monitorAssessment = this.GetOrderEntities<T_PT_MONITOR_ASSESSMENT>(expression, filter).ToList();
 | 
						|
                            if (monitorAssessment.Count < 1)
 | 
						|
                                return true;
 | 
						|
                            summary = new T_PT_ANNUAL_MONOTOR_SUMMARY();
 | 
						|
                            summary.ORG_ID = filter.OrgId;
 | 
						|
                            summary.YEAR = (year - 1).ToString();
 | 
						|
                            summary.SET_TIME = dtNow;
 | 
						|
                            summary.STATUS = PFStandardStatus.Sign;
 | 
						|
                            Expression<Func<T_FM_DEPARTMENT, bool>> departExpression = e => e.IS_DELETED == false && e.ENABLE_STATUS == 0;
 | 
						|
                            var departmentIds = this.GetOrderEntities<T_FM_DEPARTMENT>(departExpression, filter).Select(t => new { t.ID, t.DEPARTMENT_TYPE }).Distinct().ToList();
 | 
						|
                            if (departmentIds != null && departmentIds.Any())
 | 
						|
                            {
 | 
						|
                                foreach (var department in departmentIds)
 | 
						|
                                {
 | 
						|
                                    T_PT_ANNUAL_MONOTOR_SUMMARY_DETAIL detail = new T_PT_ANNUAL_MONOTOR_SUMMARY_DETAIL();
 | 
						|
                                    detail.ORG_ID = filter.OrgId;
 | 
						|
                                    detail.MONITOR_SUMMARY_ID = summary.ID;
 | 
						|
                                    detail.DEPARTMENT_ID = department.ID;
 | 
						|
                                    detail.DEPARTMENT_TYPE = (FMDepartmentType)department.DEPARTMENT_TYPE;
 | 
						|
                                    summaryDetailList.Add(detail);
 | 
						|
                                }
 | 
						|
                            }
 | 
						|
                            Expression<Func<T_FM_USER, bool>> userExpression = e => e.IS_DELETED == false && e.ENABLE_STATUS == 0;
 | 
						|
                            var userIds = this.GetOrderEntities<T_FM_USER>(userExpression, filter, "Nav_Department").Where(m => m.DEPARTMENT_ID != null).Select(t => new { t.ID, t.DEPARTMENT_ID, DEPARTMENT_TYPE = t.Nav_Department.DEPARTMENT_TYPE }).Distinct().ToList();
 | 
						|
                            if (userIds != null && userIds.Any())
 | 
						|
                            {
 | 
						|
                                foreach (var user in userIds)
 | 
						|
                                {
 | 
						|
                                    T_PT_ANNUAL_MONOTOR_SUMMARY_DETAIL detail = new T_PT_ANNUAL_MONOTOR_SUMMARY_DETAIL();
 | 
						|
                                    detail.ORG_ID = filter.OrgId;
 | 
						|
                                    detail.MONITOR_SUMMARY_ID = summary.ID;
 | 
						|
                                    detail.DEPARTMENT_ID = user.DEPARTMENT_ID;
 | 
						|
                                    detail.USER_ID = user.ID;
 | 
						|
                                    detail.DEPARTMENT_TYPE = (FMDepartmentType)user.DEPARTMENT_TYPE;
 | 
						|
                                    summaryDetailList.Add(detail);
 | 
						|
                                }
 | 
						|
                            }
 | 
						|
                            if (departmentIds.Count() == 0 && userIds.Count() == 0)
 | 
						|
                                summary = null;
 | 
						|
                            if (summaryDetailList != null && summaryDetailList.Any())
 | 
						|
                            {
 | 
						|
                                var monitorIds = monitorAssessment.Select(t => t.ID).ToList();
 | 
						|
                                var monitorDetails = this.GetEntities<T_PT_MONITOR_ASSESSMENT_DETAIL>(t => monitorIds.Contains(t.MONITOR_ASSESSMENT_ID), new BaseFilter(filter.OrgId), "Nav_Contents").ToList();
 | 
						|
                                foreach (var summaryDetail in summaryDetailList)
 | 
						|
                                {
 | 
						|
                                    //第一季度
 | 
						|
                                    var firtstQuarter = monitorDetails.FirstOrDefault(t => t.DEPARTMENT_ID == summaryDetail.DEPARTMENT_ID && t.USER_ID == summaryDetail.USER_ID && t.CREATE_TIME.Value.Year == (year - 1) && t.CREATE_TIME.Value.Month == 4 && t.CREATE_TIME.Value.Day == 1);
 | 
						|
                                    if (firtstQuarter != null && firtstQuarter.Nav_Contents != null && firtstQuarter.Nav_Contents.Any())
 | 
						|
                                    {
 | 
						|
                                        summaryDetail.FIRST_SCORE = firtstQuarter.Nav_Contents.Where(m => m.RESULT_SCORE != null).Sum(t => t.RESULT_SCORE);
 | 
						|
                                        foreach (var c in firtstQuarter.Nav_Contents)
 | 
						|
                                        {
 | 
						|
                                            T_PT_ANNUAL_MONOTOR_SUMMARY_DETAIL_CONTENT content = new T_PT_ANNUAL_MONOTOR_SUMMARY_DETAIL_CONTENT();
 | 
						|
                                            content.ORG_ID = c.ORG_ID;
 | 
						|
                                            content.MONOTOR_SUMMARY_DETAIL_ID = summaryDetail.ID;
 | 
						|
                                            content.ROW_NO = c.ROW_NO;
 | 
						|
                                            content.METHOD = c.METHOD;
 | 
						|
                                            content.SCORE = c.SCORE;
 | 
						|
                                            content.NAME = c.NAME;
 | 
						|
                                            content.QUARTER_TYPE = PTQuarterTypeEnum.FirstQuarter;
 | 
						|
                                            detailContentList.Add(content);
 | 
						|
                                        }
 | 
						|
                                    }
 | 
						|
                                    //第二季度
 | 
						|
                                    var secondQuarter = monitorDetails.FirstOrDefault(t => t.DEPARTMENT_ID == summaryDetail.DEPARTMENT_ID && t.USER_ID == summaryDetail.USER_ID && t.CREATE_TIME.Value.Year == (year - 1) && t.CREATE_TIME.Value.Month == 7 && t.CREATE_TIME.Value.Day == 1);
 | 
						|
                                    if (secondQuarter != null && secondQuarter.Nav_Contents != null && secondQuarter.Nav_Contents.Any())
 | 
						|
                                    {
 | 
						|
                                        summaryDetail.SECOND_SCORE = secondQuarter.Nav_Contents.Where(m => m.RESULT_SCORE != null).Sum(t => t.RESULT_SCORE);
 | 
						|
                                        foreach (var c in secondQuarter.Nav_Contents)
 | 
						|
                                        {
 | 
						|
                                            T_PT_ANNUAL_MONOTOR_SUMMARY_DETAIL_CONTENT content = new T_PT_ANNUAL_MONOTOR_SUMMARY_DETAIL_CONTENT();
 | 
						|
                                            content.ORG_ID = c.ORG_ID;
 | 
						|
                                            content.MONOTOR_SUMMARY_DETAIL_ID = summaryDetail.ID;
 | 
						|
                                            content.ROW_NO = c.ROW_NO;
 | 
						|
                                            content.METHOD = c.METHOD;
 | 
						|
                                            content.SCORE = c.SCORE;
 | 
						|
                                            content.NAME = c.NAME;
 | 
						|
                                            content.QUARTER_TYPE = PTQuarterTypeEnum.SecondQuarter;
 | 
						|
                                            detailContentList.Add(content);
 | 
						|
                                        }
 | 
						|
                                    }
 | 
						|
                                    //第三季度
 | 
						|
                                    var thirdQuarter = monitorDetails.FirstOrDefault(t => t.DEPARTMENT_ID == summaryDetail.DEPARTMENT_ID && t.USER_ID == summaryDetail.USER_ID && t.CREATE_TIME.Value.Year == (year - 1) && t.CREATE_TIME.Value.Month == 10 && t.CREATE_TIME.Value.Day == 11);
 | 
						|
                                    if (thirdQuarter != null && thirdQuarter.Nav_Contents != null && thirdQuarter.Nav_Contents.Any())
 | 
						|
                                    {
 | 
						|
                                        summaryDetail.THIRD_SCORE = thirdQuarter.Nav_Contents.Where(m => m.RESULT_SCORE != null).Sum(t => t.RESULT_SCORE);
 | 
						|
                                        foreach (var c in thirdQuarter.Nav_Contents)
 | 
						|
                                        {
 | 
						|
                                            T_PT_ANNUAL_MONOTOR_SUMMARY_DETAIL_CONTENT content = new T_PT_ANNUAL_MONOTOR_SUMMARY_DETAIL_CONTENT();
 | 
						|
                                            content.ORG_ID = c.ORG_ID;
 | 
						|
                                            content.MONOTOR_SUMMARY_DETAIL_ID = summaryDetail.ID;
 | 
						|
                                            content.ROW_NO = c.ROW_NO;
 | 
						|
                                            content.METHOD = c.METHOD;
 | 
						|
                                            content.SCORE = c.SCORE;
 | 
						|
                                            content.NAME = c.NAME;
 | 
						|
                                            content.QUARTER_TYPE = PTQuarterTypeEnum.ThirdQuarter;
 | 
						|
                                            detailContentList.Add(content);
 | 
						|
                                        }
 | 
						|
                                    }
 | 
						|
                                    //第四季度
 | 
						|
                                    var fourthQuarter = monitorDetails.FirstOrDefault(t => t.DEPARTMENT_ID == summaryDetail.DEPARTMENT_ID && t.USER_ID == summaryDetail.USER_ID && t.CREATE_TIME.Value.Year == year && t.CREATE_TIME.Value.Month == 1 && t.CREATE_TIME.Value.Day == 1);
 | 
						|
                                    if (fourthQuarter != null && fourthQuarter.Nav_Contents != null && fourthQuarter.Nav_Contents.Any())
 | 
						|
                                    {
 | 
						|
                                        summaryDetail.FOURTH_SCORE = fourthQuarter.Nav_Contents.Where(m => m.RESULT_SCORE != null).Sum(t => t.RESULT_SCORE);
 | 
						|
                                        foreach (var c in fourthQuarter.Nav_Contents)
 | 
						|
                                        {
 | 
						|
                                            T_PT_ANNUAL_MONOTOR_SUMMARY_DETAIL_CONTENT content = new T_PT_ANNUAL_MONOTOR_SUMMARY_DETAIL_CONTENT();
 | 
						|
                                            content.ORG_ID = c.ORG_ID;
 | 
						|
                                            content.MONOTOR_SUMMARY_DETAIL_ID = summaryDetail.ID;
 | 
						|
                                            content.ROW_NO = c.ROW_NO;
 | 
						|
                                            content.METHOD = c.METHOD;
 | 
						|
                                            content.SCORE = c.SCORE;
 | 
						|
                                            content.NAME = c.NAME;
 | 
						|
                                            content.QUARTER_TYPE = PTQuarterTypeEnum.FourthQuarter;
 | 
						|
                                            detailContentList.Add(content);
 | 
						|
                                        }
 | 
						|
                                    }
 | 
						|
                                    //年度
 | 
						|
                                    summaryDetail.YEAR_SCORE = (summaryDetail.FIRST_SCORE ?? 0) + (summaryDetail.SECOND_SCORE ?? 0) + (summaryDetail.THIRD_SCORE ?? 0) + (summaryDetail.FOURTH_SCORE ?? 0);
 | 
						|
                                }
 | 
						|
                            }
 | 
						|
                            notice = NotificationTaskService.InsertUserNoticeTaskModel("年度监测汇总表", summary.ID, filter.GetOrgId(), userInfo.ID, userInfo.NAME, DateTime.Now, DateTime.Now.AddDays(30), (int)FMNoticeTypeEnum.消息, "PT036_SHOWPRINT");
 | 
						|
                        }
 | 
						|
                    }
 | 
						|
                    UnifiedCommit(() =>
 | 
						|
                    {
 | 
						|
                        if (summary != null)
 | 
						|
                            UpdateEntityNoCommit(summary);
 | 
						|
                        if (summaryDetailList != null && summaryDetailList.Any())
 | 
						|
                            BantchAddEntityNoCommit(summaryDetailList);
 | 
						|
                        if (detailContentList != null && detailContentList.Any())
 | 
						|
                            BantchAddEntityNoCommit(detailContentList);
 | 
						|
                        if (notice != null)
 | 
						|
                            UpdateEntityNoCommit(notice);
 | 
						|
                    });
 | 
						|
                }
 | 
						|
                catch (Exception ex)
 | 
						|
                {
 | 
						|
                    if (!string.IsNullOrEmpty(ex.StackTrace))
 | 
						|
                        throw new Exception("错误日志:[StackTrace]" + ex.StackTrace);
 | 
						|
                    else
 | 
						|
                        throw new Exception("【" + HttpContext.Request.Path + "】错误日志:[Message]" + ex.Message);
 | 
						|
                }
 | 
						|
                return true;
 | 
						|
            });
 | 
						|
        }
 | 
						|
        /// <summary>
 | 
						|
        /// 清除安全生产方针调查表待办
 | 
						|
        /// </summary>
 | 
						|
        /// <returns></returns>
 | 
						|
        [HttpPost, Route("DealSafePolicySync")]
 | 
						|
        public JsonActionResult<bool> DealSafePolicySync([FromBody] KeywordFilter filter)
 | 
						|
        {
 | 
						|
            return SafeExecute<bool>(() =>
 | 
						|
            {
 | 
						|
                try
 | 
						|
                {
 | 
						|
                    var miniTime = DateTime.Now.ToString("yyyy/MM/dd 00:00:00", System.Globalization.DateTimeFormatInfo.InvariantInfo);
 | 
						|
                    var maxTime = DateTime.Now.ToString("yyyy/MM/dd 23:59:59", System.Globalization.DateTimeFormatInfo.InvariantInfo);
 | 
						|
                    var tasks = new List<T_FM_NOTIFICATION_TASK>();
 | 
						|
                    var safetys = GetEntities<T_PT_SAFETY_POLICY_SURVEY>(i => i.COMPLETE_DATE >= Convert.ToDateTime(miniTime) && i.COMPLETE_DATE <= Convert.ToDateTime(maxTime) && i.IS_DEAL == 0, new BaseFilter(filter.OrgId));
 | 
						|
                    if (safetys != null && safetys.Any())
 | 
						|
                    {
 | 
						|
                        var createTime = safetys.FirstOrDefault().CREATE_TIME;
 | 
						|
                        safetys.ForEach(t =>
 | 
						|
                        {
 | 
						|
                            t.IS_DEAL = 1;
 | 
						|
                            if (t.CREATE_TIME < createTime)
 | 
						|
                                createTime = t.CREATE_TIME;
 | 
						|
                        });
 | 
						|
                        var safetyIds = safetys.Select(i => i.ID).ToList();
 | 
						|
                        tasks = this.GetEntities<T_FM_NOTIFICATION_TASK>(t => t.CREATE_TIME > createTime && safetyIds.Contains(t.SOURCE_DATA_ID.Value) && t.NOTICE_STATUS == 0, new BaseFilter(filter.OrgId)).ToList();
 | 
						|
                        if (tasks != null && tasks.Any())
 | 
						|
                        {
 | 
						|
                            tasks.ForEach(t =>
 | 
						|
                            {
 | 
						|
                                t.NOTICE_STATUS = 4;
 | 
						|
                            });
 | 
						|
                        }
 | 
						|
                    }
 | 
						|
                    UnifiedCommit(() =>
 | 
						|
                    {
 | 
						|
                        if (safetys != null && safetys.Any())
 | 
						|
                            BantchSaveEntityNoCommit(safetys);
 | 
						|
                        if (tasks != null && tasks.Any())
 | 
						|
                            BantchSaveEntityNoCommit(tasks);
 | 
						|
                    });
 | 
						|
                }
 | 
						|
                catch (Exception ex)
 | 
						|
                {
 | 
						|
                    if (!string.IsNullOrEmpty(ex.StackTrace))
 | 
						|
                        throw new Exception("错误日志:[StackTrace]" + ex.StackTrace);
 | 
						|
                    else
 | 
						|
                        throw new Exception("【" + HttpContext.Request.Path + "】错误日志:[Message]" + ex.Message);
 | 
						|
                }
 | 
						|
                return true;
 | 
						|
            });
 | 
						|
        }
 | 
						|
        /// <summary>
 | 
						|
        /// 触发安全生产方针征集表
 | 
						|
        /// </summary>
 | 
						|
        /// <param name="filter"></param>
 | 
						|
        private void CreateSafePolicyCollect([FromBody] KeywordFilter filter)
 | 
						|
        {
 | 
						|
            var miniTime = DateTime.Now.ToString("yyyy/MM/dd 00:00:00", System.Globalization.DateTimeFormatInfo.InvariantInfo);
 | 
						|
            var maxTime = DateTime.Now.ToString("yyyy/MM/dd 23:59:59", System.Globalization.DateTimeFormatInfo.InvariantInfo);
 | 
						|
            filter.IgnoreDataRule = true;
 | 
						|
            var safetyLists = GetEntities<T_PT_SAFETY_POLICY_SURVEY>(i => i.COMPLETE_DATE >= Convert.ToDateTime(miniTime) && i.COMPLETE_DATE <= Convert.ToDateTime(maxTime) && i.IS_RUN == 0, filter).ToList();
 | 
						|
            List<T_FM_NOTIFICATION_TASK> sendNotices = null;
 | 
						|
            //List<T_PT_SAFETY_POLICY_SURVEY> survey = null;
 | 
						|
            if (safetyLists != null && safetyLists.Any())
 | 
						|
            {
 | 
						|
                var userInfo = this.GetEntity<T_FM_USER>(t => t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME == "安环部负责人" && t.ENABLE_STATUS == 0);
 | 
						|
                if (userInfo == null && filter.OrgId.ToString() == "3efd5276-632b-e379-9ff3-7a7546591fca")
 | 
						|
                {
 | 
						|
                    userInfo = this.GetEntity<T_FM_USER>(t => t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME == "安环部安全员" && t.ENABLE_STATUS == 0);
 | 
						|
                }
 | 
						|
                if (userInfo != null)
 | 
						|
                {
 | 
						|
                    sendNotices = new List<T_FM_NOTIFICATION_TASK>();
 | 
						|
                    safetyLists.ForEach(t =>
 | 
						|
                    {
 | 
						|
                        t.IS_RUN = 1;
 | 
						|
                        //survey.Add(t);
 | 
						|
                        sendNotices.Add(NotificationTaskService.InsertUserNoticeTaskModel("安全生产方针征集表", t.ID, filter.GetOrgId(), userInfo.ID, userInfo.NAME, DateTime.Now, DateTime.Now.AddDays(30), (int)FMNoticeTypeEnum.消息, "PT014_SHOWPRINT"));
 | 
						|
                    });
 | 
						|
                }
 | 
						|
            }
 | 
						|
            UnifiedCommit(() =>
 | 
						|
            {
 | 
						|
                if (safetyLists != null && safetyLists.Any())
 | 
						|
                    BantchSaveEntityNoCommit(safetyLists);
 | 
						|
                if (sendNotices != null && sendNotices.Any())
 | 
						|
                    BantchAddEntityNoCommit(sendNotices);
 | 
						|
            });
 | 
						|
        }
 | 
						|
 | 
						|
        /// <summary>
 | 
						|
        /// 触发安全方针调查表
 | 
						|
        /// </summary>
 | 
						|
        /// <param name="filter"></param>
 | 
						|
        private void CreateSafePolicy([FromBody] KeywordFilter filter)
 | 
						|
        {
 | 
						|
            var dtNow = DateTime.Now;
 | 
						|
            var year = dtNow.Year;
 | 
						|
            var month = dtNow.Month;
 | 
						|
            var day = dtNow.Day;
 | 
						|
            var time = dtNow.TimeOfDay;
 | 
						|
            var week = dtNow.DayOfWeek;
 | 
						|
            T_FM_NOTIFICATION_TASK sendNotice = null;
 | 
						|
            T_PT_SAFETY_POLICY_SURVEY safety = null;
 | 
						|
            var newFilter = new BaseFilter(filter.OrgId);
 | 
						|
            newFilter.SelectField = new List<string> { "ID", "NAME" };
 | 
						|
            var userInfo = this.GetEntity<T_FM_USER>(t => t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME == "安环部负责人" && t.ENABLE_STATUS == 0, newFilter);
 | 
						|
            if (userInfo == null && filter.OrgId.ToString() == "3efd5276-632b-e379-9ff3-7a7546591fca")
 | 
						|
            {
 | 
						|
                userInfo = this.GetEntity<T_FM_USER>(t => t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME == "安环部安全员" && t.ENABLE_STATUS == 0);
 | 
						|
            }
 | 
						|
            if (userInfo != null)
 | 
						|
            {
 | 
						|
                bool isSend = false;
 | 
						|
                newFilter.SelectField = new List<string> { "PLANCHECKFREQUENCY", "MONTH", "DATA", "WEEKDATA" };
 | 
						|
                var timeSet = GetEntity<T_PT_TIME_SET>(i => i.SET_TYPE == PTSetTypeEnum.SafePolicy && i.ENABLE_STATUS == 0, newFilter);
 | 
						|
                if (timeSet != null && dtNow.Hour == 8)
 | 
						|
                {
 | 
						|
                    switch (timeSet.PLANCHECKFREQUENCY)
 | 
						|
                    {
 | 
						|
                        case BSPLANCHECKFREQUENCYEnum.Year:
 | 
						|
                            if (timeSet.MONTH == month && timeSet.DATA == day)
 | 
						|
                            {
 | 
						|
                                isSend = true;
 | 
						|
                            }
 | 
						|
                            break;
 | 
						|
                        case BSPLANCHECKFREQUENCYEnum.HalfYear:
 | 
						|
                            if ((timeSet.MONTH == month && timeSet.DATA == day) || ((timeSet.MONTH + 6) == month && (timeSet.DATA + 183) == day))
 | 
						|
                            {
 | 
						|
                                isSend = true;
 | 
						|
                            }
 | 
						|
                            break;
 | 
						|
                        case BSPLANCHECKFREQUENCYEnum.Date:
 | 
						|
                            isSend = true;
 | 
						|
                            break;
 | 
						|
                        case BSPLANCHECKFREQUENCYEnum.Week:
 | 
						|
                            if (timeSet.WEEKDATA != null && (int)timeSet.WEEKDATA.Value == (int)week)
 | 
						|
                                isSend = true;
 | 
						|
                            break;
 | 
						|
                        case BSPLANCHECKFREQUENCYEnum.Month:
 | 
						|
                            if (timeSet.DATA == day)
 | 
						|
                            {
 | 
						|
                                isSend = true;
 | 
						|
                            }
 | 
						|
                            break;
 | 
						|
                        case BSPLANCHECKFREQUENCYEnum.Quarter:
 | 
						|
                            if (timeSet.MONTH == 1)
 | 
						|
                            {
 | 
						|
                                if ((month == 1 || month == 4 || month == 7 || month == 10) && timeSet.DATA == day)
 | 
						|
                                    isSend = true;
 | 
						|
                            }
 | 
						|
                            if (timeSet.MONTH == 2)
 | 
						|
                            {
 | 
						|
                                if ((month == 2 || month == 5 || month == 8 || month == 11) && timeSet.DATA == day)
 | 
						|
                                    isSend = true;
 | 
						|
                            }
 | 
						|
                            if (timeSet.MONTH == 3)
 | 
						|
                            {
 | 
						|
                                if ((month == 3 || month == 6 || month == 9 || month == 12) && timeSet.DATA == day)
 | 
						|
                                    isSend = true;
 | 
						|
                            }
 | 
						|
                            break;
 | 
						|
                        default:
 | 
						|
                            break;
 | 
						|
                    }
 | 
						|
                }
 | 
						|
                if (isSend)
 | 
						|
                {
 | 
						|
                    var safe = this.GetEntity<T_PT_SAFETY_POLICY_SURVEY>(t => t.USER_ID == userInfo.ID && t.CREATE_TIME.Value.Date == dtNow.Date);
 | 
						|
                    if (safe == null)
 | 
						|
                    {
 | 
						|
                        safety = new T_PT_SAFETY_POLICY_SURVEY();
 | 
						|
                        safety.ORG_ID = filter.GetOrgId();
 | 
						|
                        safety.USER_ID = userInfo.ID;
 | 
						|
                        safety.DEPARTMENT_ID = userInfo.DEPARTMENT_ID;
 | 
						|
                        safety.YEAR = DateTime.Now.Year.ToString();
 | 
						|
                        sendNotice = NotificationTaskService.InsertUserNoticeTaskModel("安全生产方针调查表", safety.ID, filter.GetOrgId(), userInfo.ID, userInfo.NAME, DateTime.Now, DateTime.Now.AddDays(30), (int)FMNoticeTypeEnum.消息, "PT014");
 | 
						|
                    }
 | 
						|
                }
 | 
						|
            }
 | 
						|
            UnifiedCommit(() =>
 | 
						|
            {
 | 
						|
                if (safety != null)
 | 
						|
                    UpdateEntityNoCommit(safety);
 | 
						|
                if (sendNotice != null)
 | 
						|
                    UpdateEntityNoCommit(sendNotice);
 | 
						|
            });
 | 
						|
        }
 | 
						|
        /// <summary>
 | 
						|
        /// 触发安全生产目标与指标制定
 | 
						|
        /// </summary>
 | 
						|
        /// <param name="filter"></param>
 | 
						|
        private void CreateIndicatorFormulation([FromBody] KeywordFilter filter)
 | 
						|
        {
 | 
						|
            var dtNow = DateTime.Now;
 | 
						|
            var year = dtNow.Year;
 | 
						|
            var month = dtNow.Month;
 | 
						|
            var day = dtNow.Day;
 | 
						|
            var time = dtNow.TimeOfDay;
 | 
						|
            var week = dtNow.DayOfWeek;
 | 
						|
            T_FM_NOTIFICATION_TASK sendNotice = null;
 | 
						|
            T_PT_INDICATOR_FORMULATION indicator = null;
 | 
						|
            var newFilter = new BaseFilter(filter.OrgId);
 | 
						|
            newFilter.SelectField = new List<string> { "ID", "NAME" };
 | 
						|
            var userInfo = this.GetEntity<T_FM_USER>(t => t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME == "安环部负责人" && t.ENABLE_STATUS == 0, newFilter);
 | 
						|
            if (userInfo == null && filter.OrgId.ToString() == "3efd5276-632b-e379-9ff3-7a7546591fca")
 | 
						|
            {
 | 
						|
                userInfo = this.GetEntity<T_FM_USER>(t => t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME == "安环部安全员" && t.ENABLE_STATUS == 0);
 | 
						|
            }
 | 
						|
            if (userInfo != null)
 | 
						|
            {
 | 
						|
                bool isSend = false;
 | 
						|
                newFilter.SelectField = new List<string> { "PLANCHECKFREQUENCY", "MONTH", "DATA", "WEEKDATA" };
 | 
						|
                var timeSet = GetEntity<T_PT_TIME_SET>(i => i.SET_TYPE == PTSetTypeEnum.IndicatorForm && i.ENABLE_STATUS == 0, newFilter);
 | 
						|
                if (timeSet != null && dtNow.Hour == 8)
 | 
						|
                {
 | 
						|
                    switch (timeSet.PLANCHECKFREQUENCY)
 | 
						|
                    {
 | 
						|
                        case BSPLANCHECKFREQUENCYEnum.Year:
 | 
						|
                            if (timeSet.MONTH == month && timeSet.DATA == day)
 | 
						|
                            {
 | 
						|
                                isSend = true;
 | 
						|
                            }
 | 
						|
                            break;
 | 
						|
                        case BSPLANCHECKFREQUENCYEnum.HalfYear:
 | 
						|
                            if ((timeSet.MONTH == month && timeSet.DATA == day) || ((timeSet.MONTH + 6) == month && (timeSet.DATA + 183) == day))
 | 
						|
                            {
 | 
						|
                                isSend = true;
 | 
						|
                            }
 | 
						|
                            break;
 | 
						|
                        case BSPLANCHECKFREQUENCYEnum.Date:
 | 
						|
                            isSend = true;
 | 
						|
                            break;
 | 
						|
                        case BSPLANCHECKFREQUENCYEnum.Week:
 | 
						|
                            if (timeSet.WEEKDATA != null && (int)timeSet.WEEKDATA.Value == (int)week)
 | 
						|
                                isSend = true;
 | 
						|
                            break;
 | 
						|
                        case BSPLANCHECKFREQUENCYEnum.Month:
 | 
						|
                            if (timeSet.DATA == day)
 | 
						|
                            {
 | 
						|
                                isSend = true;
 | 
						|
                            }
 | 
						|
                            break;
 | 
						|
                        case BSPLANCHECKFREQUENCYEnum.Quarter:
 | 
						|
                            if (timeSet.MONTH == 1)
 | 
						|
                            {
 | 
						|
                                if ((month == 1 || month == 4 || month == 7 || month == 10) && timeSet.DATA == day)
 | 
						|
                                    isSend = true;
 | 
						|
                            }
 | 
						|
                            if (timeSet.MONTH == 2)
 | 
						|
                            {
 | 
						|
                                if ((month == 2 || month == 5 || month == 8 || month == 11) && timeSet.DATA == day)
 | 
						|
                                    isSend = true;
 | 
						|
                            }
 | 
						|
                            if (timeSet.MONTH == 3)
 | 
						|
                            {
 | 
						|
                                if ((month == 3 || month == 6 || month == 9 || month == 12) && timeSet.DATA == day)
 | 
						|
                                    isSend = true;
 | 
						|
                            }
 | 
						|
                            break;
 | 
						|
                        default:
 | 
						|
                            break;
 | 
						|
                    }
 | 
						|
                }
 | 
						|
                if (isSend)
 | 
						|
                {
 | 
						|
                    var safe = this.GetEntity<T_PT_INDICATOR_FORMULATION>(t => t.USER_ID == userInfo.ID && t.CREATE_TIME.Value.Date == dtNow.Date);
 | 
						|
                    if (safe == null)
 | 
						|
                    {
 | 
						|
                        indicator = new T_PT_INDICATOR_FORMULATION();
 | 
						|
                        indicator.ORG_ID = filter.GetOrgId();
 | 
						|
                        indicator.USER_ID = userInfo.ID;
 | 
						|
                        indicator.DEPARTMENT_ID = userInfo.DEPARTMENT_ID;
 | 
						|
                        indicator.YEAR = DateTime.Now.Year.ToString();
 | 
						|
                        indicator.NAME = "安全生产目标与指标制定";
 | 
						|
                        sendNotice = NotificationTaskService.InsertUserNoticeTaskModel("安全生产目标与指标制定表", indicator.ID, filter.GetOrgId(), userInfo.ID, userInfo.NAME, DateTime.Now, DateTime.Now.AddDays(30), (int)FMNoticeTypeEnum.消息, "PT017");
 | 
						|
                    }
 | 
						|
                }
 | 
						|
            }
 | 
						|
            UnifiedCommit(() =>
 | 
						|
            {
 | 
						|
                if (indicator != null)
 | 
						|
                    UpdateEntityNoCommit(indicator);
 | 
						|
                if (sendNotice != null)
 | 
						|
                    UpdateEntityNoCommit(sendNotice);
 | 
						|
            });
 | 
						|
        }
 | 
						|
        
 | 
						|
        /// <summary>
 | 
						|
        /// 触发班组监测与考核记录表
 | 
						|
        /// </summary>
 | 
						|
        /// <param name="item"></param>
 | 
						|
        /// <param name="type"></param>
 | 
						|
        /// <param name="departInfos"></param>
 | 
						|
        /// <param name="tempDetails"></param>
 | 
						|
        /// <param name="userInfos"></param>
 | 
						|
        /// <param name="departType"></param>
 | 
						|
        /// <param name="notices"></param>
 | 
						|
        private List<T_PT_MONITOR_ASSESSMENT> CreateDepartMonitor(T_PT_TIME_SET item, PTAssessmentCycleEnums type, List<T_FM_DEPARTMENT> departInfos, List<T_FM_USER> userInfos, List<T_PT_ASSESSMENT_PLAN_AUDIT_TEMP_DETAIL> tempDetails, int departType, ref List<T_FM_NOTIFICATION_TASK> notices)
 | 
						|
        {
 | 
						|
            var result = new List<T_PT_MONITOR_ASSESSMENT>();
 | 
						|
            var departAlls = departInfos.Where(t => t.DEPARTMENT_TYPE == (int)item.DEPARTMENT_TYPE).ToList();
 | 
						|
            if (departAlls != null && departAlls.Any())
 | 
						|
            {
 | 
						|
                //var userIds = departmentInfos.Select(t => t.USER_ID).Distinct().ToList();
 | 
						|
                foreach (var depart in departAlls)
 | 
						|
                {
 | 
						|
                    if (depart.USER_ID != null)
 | 
						|
                    {
 | 
						|
                        T_PT_MONITOR_ASSESSMENT newDepart = new T_PT_MONITOR_ASSESSMENT();
 | 
						|
                        newDepart.ORG_ID = depart.ORG_ID;
 | 
						|
                        newDepart.DEPARTMENT_TYPE = (FMDepartmentType)depart.DEPARTMENT_TYPE;
 | 
						|
                        newDepart.SET_TIME = DateTime.Now;
 | 
						|
                        newDepart.USER_ID = depart.USER_ID;
 | 
						|
                        newDepart.DEPARTMENT_ID = depart.ID;
 | 
						|
                        newDepart.YEAR = DateTime.Now.Year.ToString();
 | 
						|
                        newDepart.ASSESSMENT_CYCLE = type;
 | 
						|
                        var details = new List<T_PT_MONITOR_ASSESSMENT_DETAIL>();
 | 
						|
                        var departIds = departInfos.Where(t => t.DEPARTMENT_TYPE == departType && t.PARENT_ID == depart.ID).Select(t => t.ID).ToList();
 | 
						|
                        var userInfoTemps = userInfos.Where(t => t.DEPARTMENT_ID == depart.ID).ToList();
 | 
						|
                        var userIds = userInfoTemps.Select(t => t.ID).ToList();
 | 
						|
                        if (departIds.Any())
 | 
						|
                        {
 | 
						|
                            foreach (var department in departIds)
 | 
						|
                            {
 | 
						|
                                //细表
 | 
						|
                                T_PT_MONITOR_ASSESSMENT_DETAIL detail = new T_PT_MONITOR_ASSESSMENT_DETAIL();
 | 
						|
                                detail.ORG_ID = newDepart.ORG_ID;
 | 
						|
                                detail.DEPARTMENT_ID = department;
 | 
						|
                                detail.MONITOR_ASSESSMENT_ID = newDepart.ID;
 | 
						|
                                details.Add(detail);
 | 
						|
                            }
 | 
						|
                        }
 | 
						|
                        if (userInfoTemps.Any())
 | 
						|
                        {
 | 
						|
                            foreach (var user in userInfoTemps)
 | 
						|
                            {
 | 
						|
                                //细表
 | 
						|
                                T_PT_MONITOR_ASSESSMENT_DETAIL detail = new T_PT_MONITOR_ASSESSMENT_DETAIL();
 | 
						|
                                detail.ORG_ID = newDepart.ORG_ID;
 | 
						|
                                detail.DEPARTMENT_ID = user.DEPARTMENT_ID;
 | 
						|
                                detail.USER_ID = user.ID;
 | 
						|
                                detail.MONITOR_ASSESSMENT_ID = newDepart.ID;
 | 
						|
                                details.Add(detail);
 | 
						|
                            }
 | 
						|
                        }
 | 
						|
                        var temps = tempDetails.Where(t => (t.DEPARTMENT_ID != null && departIds.Contains(t.DEPARTMENT_ID.Value)) || (t.USER_ID != null && userIds.Contains(t.USER_ID.Value))).ToList();
 | 
						|
                        if (details != null && details.Any())
 | 
						|
                        {
 | 
						|
                            details.ForEach(t =>
 | 
						|
                            {
 | 
						|
                                var tempCurrent = tempDetails.FirstOrDefault(t1 => t1.DEPARTMENT_ID == t.DEPARTMENT_ID && t1.USER_ID == t.USER_ID && t1.YEAR == newDepart.YEAR);
 | 
						|
                                if (tempCurrent != null && tempCurrent.Nav_Contents != null && tempCurrent.Nav_Contents.Any())
 | 
						|
                                {
 | 
						|
                                    var contents = new List<T_PT_MONITOR_ASSESSMENT_DETAIL_CONTENT>();
 | 
						|
                                    tempCurrent.Nav_Contents.ForEach(t1 =>
 | 
						|
                                    {
 | 
						|
                                        T_PT_MONITOR_ASSESSMENT_DETAIL_CONTENT content = new T_PT_MONITOR_ASSESSMENT_DETAIL_CONTENT();
 | 
						|
                                        content.ORG_ID = t1.ORG_ID;
 | 
						|
                                        content.MONITOR_ASSESSMENT_DETAIL_ID = t.ID;
 | 
						|
                                        content.ROW_NO = t1.ROW_NO;
 | 
						|
                                        content.METHOD = t1.METHOD;
 | 
						|
                                        content.SCORE = t1.SCORE;
 | 
						|
                                        content.NAME = t1.NAME;
 | 
						|
                                        contents.Add(content);
 | 
						|
                                    });
 | 
						|
                                    t.Nav_Contents = contents;
 | 
						|
                                }
 | 
						|
                                //details.Add(t);
 | 
						|
                            });
 | 
						|
                            newDepart.Nav_Details = details;
 | 
						|
                        }
 | 
						|
                        result.Add(newDepart);
 | 
						|
                        var name = Enum.GetName(typeof(FMDepartmentType), depart.DEPARTMENT_TYPE);
 | 
						|
                        //发消息
 | 
						|
                        notices.Add(NotificationTaskService.InsertUserNoticeTaskModel(name + "监测与考核记录", newDepart.ID, newDepart.ORG_ID, newDepart.USER_ID.Value, depart?.Nav_User?.NAME, DateTime.Now,
 | 
						|
                        DateTime.Now.AddHours(24), (int)FMNoticeTypeEnum.消息, "PT029"));
 | 
						|
                    }
 | 
						|
                }
 | 
						|
            }
 | 
						|
            return result;
 | 
						|
        }
 | 
						|
 | 
						|
        /// <summary>
 | 
						|
        /// 触发班组监测与考核记录表
 | 
						|
        /// </summary>
 | 
						|
        /// <param name="depart"></param>
 | 
						|
        /// <param name="departments"></param>
 | 
						|
        /// <param name="users"></param>
 | 
						|
        /// <param name="contentList"></param>
 | 
						|
        /// <param name="notices"></param>
 | 
						|
        private T_PT_MONITOR_ASSESSMENT CreateDepartMonitorNew(T_FM_DEPARTMENT depart, List<T_FM_DEPARTMENT> departments, List<T_FM_USER> users, List<T_PT_ASSESSMENT_PLAN_AUDIT_TEMP_DETAIL> contentList, PTAssessmentCycleEnums cycle, string year, ref List<T_FM_NOTIFICATION_TASK> notices)
 | 
						|
        {
 | 
						|
            T_PT_MONITOR_ASSESSMENT monitor = null;
 | 
						|
            if (depart != null && depart.USER_ID != null)
 | 
						|
            {
 | 
						|
                monitor = new T_PT_MONITOR_ASSESSMENT();
 | 
						|
                monitor.ORG_ID = depart.ORG_ID;
 | 
						|
                monitor.DEPARTMENT_TYPE = (FMDepartmentType)depart.DEPARTMENT_TYPE;
 | 
						|
                monitor.SET_TIME = DateTime.Now;
 | 
						|
                monitor.USER_ID = depart.USER_ID;
 | 
						|
                monitor.DEPARTMENT_ID = depart.ID;
 | 
						|
                monitor.YEAR = year;
 | 
						|
                monitor.ASSESSMENT_CYCLE = cycle;
 | 
						|
                monitor.STATUS = PFStandardStatus.Draft;
 | 
						|
                var monitorUsers = new List<T_PT_MONITOR_ASSESSMENT_USER>();
 | 
						|
                T_PT_MONITOR_ASSESSMENT_USER user = new T_PT_MONITOR_ASSESSMENT_USER();
 | 
						|
                user.ORG_ID = depart.ORG_ID;
 | 
						|
                user.MONITOR_ASSESSMENT_ID = monitor.ID;
 | 
						|
                user.USER_ID = depart.USER_ID;
 | 
						|
                monitorUsers.Add(user);
 | 
						|
                monitor.Nav_MonitorUser = monitorUsers;
 | 
						|
                var monitorDetails = new List<T_PT_MONITOR_ASSESSMENT_DETAIL>();
 | 
						|
                if (departments != null && departments.Any())
 | 
						|
                {
 | 
						|
                    foreach (var d in departments)
 | 
						|
                    {
 | 
						|
                        T_PT_MONITOR_ASSESSMENT_DETAIL detail = new T_PT_MONITOR_ASSESSMENT_DETAIL();
 | 
						|
                        detail.ORG_ID = monitor.ORG_ID;
 | 
						|
                        detail.DEPARTMENT_ID = d.ID;
 | 
						|
                        detail.USER_ID = null;
 | 
						|
                        detail.MONITOR_ASSESSMENT_ID = monitor.ID;
 | 
						|
                        var con = contentList.FirstOrDefault(t => t.DEPARTMENT_ID == d.ID && t.USER_ID == null);
 | 
						|
                        if (con != null && con.Nav_Contents != null && con.Nav_Contents.Any())
 | 
						|
                        {
 | 
						|
                            var contents = new List<T_PT_MONITOR_ASSESSMENT_DETAIL_CONTENT>();
 | 
						|
                            foreach (var c in con.Nav_Contents)
 | 
						|
                            {
 | 
						|
                                T_PT_MONITOR_ASSESSMENT_DETAIL_CONTENT content = new T_PT_MONITOR_ASSESSMENT_DETAIL_CONTENT();
 | 
						|
                                content.ORG_ID = c.ORG_ID;
 | 
						|
                                content.MONITOR_ASSESSMENT_DETAIL_ID = detail.ID;
 | 
						|
                                content.ROW_NO = c.ROW_NO;
 | 
						|
                                content.METHOD = c.METHOD;
 | 
						|
                                content.SCORE = c.SCORE;
 | 
						|
                                content.NAME = c.NAME;
 | 
						|
                                contents.Add(content);
 | 
						|
                            }
 | 
						|
                            detail.Nav_Contents = contents;
 | 
						|
                        }
 | 
						|
                        monitorDetails.Add(detail);
 | 
						|
                    }
 | 
						|
                }
 | 
						|
                if (users != null && users.Any())
 | 
						|
                {
 | 
						|
                    foreach (var d in users)
 | 
						|
                    {
 | 
						|
                        T_PT_MONITOR_ASSESSMENT_DETAIL detail = new T_PT_MONITOR_ASSESSMENT_DETAIL();
 | 
						|
                        detail.ORG_ID = monitor.ORG_ID;
 | 
						|
                        detail.DEPARTMENT_ID = d.DEPARTMENT_ID;
 | 
						|
                        detail.USER_ID = d.ID;
 | 
						|
                        detail.MONITOR_ASSESSMENT_ID = monitor.ID;
 | 
						|
                        var con = contentList.FirstOrDefault(t => t.DEPARTMENT_ID == d.DEPARTMENT_ID && t.USER_ID == d.ID);
 | 
						|
                        if (con != null && con.Nav_Contents != null && con.Nav_Contents.Any())
 | 
						|
                        {
 | 
						|
                            var contents = new List<T_PT_MONITOR_ASSESSMENT_DETAIL_CONTENT>();
 | 
						|
                            foreach (var c in con.Nav_Contents)
 | 
						|
                            {
 | 
						|
                                T_PT_MONITOR_ASSESSMENT_DETAIL_CONTENT content = new T_PT_MONITOR_ASSESSMENT_DETAIL_CONTENT();
 | 
						|
                                content.ORG_ID = c.ORG_ID;
 | 
						|
                                content.MONITOR_ASSESSMENT_DETAIL_ID = detail.ID;
 | 
						|
                                content.ROW_NO = c.ROW_NO;
 | 
						|
                                content.METHOD = c.METHOD;
 | 
						|
                                content.SCORE = c.SCORE;
 | 
						|
                                content.NAME = c.NAME;
 | 
						|
                                contents.Add(content);
 | 
						|
                            }
 | 
						|
                            detail.Nav_Contents = contents;
 | 
						|
                        }
 | 
						|
                        monitorDetails.Add(detail);
 | 
						|
                    }
 | 
						|
                }
 | 
						|
                monitor.Nav_Details = monitorDetails;
 | 
						|
                var name = Enum.GetName(typeof(FMDepartmentType), depart.DEPARTMENT_TYPE);
 | 
						|
                var cycleName = monitor.ASSESSMENT_CYCLE.GetDescription();
 | 
						|
                //发消息
 | 
						|
                notices.Add(NotificationTaskService.InsertUserNoticeTaskModel("(" + cycleName + ")" + name + "监测与考核记录", monitor.ID, monitor.ORG_ID, depart.USER_ID.Value, depart?.Nav_User?.NAME, DateTime.Now,
 | 
						|
                DateTime.Now.AddDays(3), (int)FMNoticeTypeEnum.消息, "PT029"));
 | 
						|
            }
 | 
						|
            return monitor;
 | 
						|
        }
 | 
						|
    }
 | 
						|
}
 |