789 lines
		
	
	
		
			47 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			789 lines
		
	
	
		
			47 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
using APT.BaseData.Domain.Entities;
 | 
						||
using APT.BaseData.Domain.Entities.FM;
 | 
						||
using APT.BaseData.Domain.Enums.PF;
 | 
						||
using APT.BaseData.Domain.IServices.FM;
 | 
						||
using APT.Infrastructure.Core;
 | 
						||
using APT.MS.Domain.Entities.SK;
 | 
						||
using APT.MS.Domain.Entities.WB;
 | 
						||
using APT.Utility;
 | 
						||
using APT.WebApi.Models;
 | 
						||
using Microsoft.AspNetCore.Mvc;
 | 
						||
using System;
 | 
						||
using System.Collections.Generic;
 | 
						||
using System.Linq;
 | 
						||
using System.Linq.Expressions;
 | 
						||
using APT.BaseData.Domain.Enums;
 | 
						||
using APT.MS.Domain.Enums;
 | 
						||
 | 
						||
namespace APT.PP.WebApi.Controllers.Api
 | 
						||
{
 | 
						||
    [Route("api/PP/WBController")]
 | 
						||
    [TypeFilter(typeof(CustomActionFilterAttribute))]
 | 
						||
    public class WBController : AuthorizeApiController<T_FM_BASE_CONFIG>
 | 
						||
    {
 | 
						||
        IFMNotificationTaskService NotificationTaskService { get; set; }
 | 
						||
 | 
						||
        public WBController(IFMNotificationTaskService notificationTaskService)
 | 
						||
        {
 | 
						||
            NotificationTaskService = notificationTaskService;
 | 
						||
        }
 | 
						||
 | 
						||
        /// <summary>
 | 
						||
        /// 判断跑批时间是否符合
 | 
						||
        /// </summary>
 | 
						||
        /// <param name="RUNSETTIME"></param>
 | 
						||
        /// <param name="dtNow"></param>
 | 
						||
        /// <param name="minAdvance"></param>
 | 
						||
        /// <param name="minLaster"></param>
 | 
						||
        /// <returns></returns>
 | 
						||
        private bool ISTimeOK(DateTime? RUNSETTIME, DateTime dtNow, int minAdvance, int minLaster)
 | 
						||
        {
 | 
						||
            if (RUNSETTIME == null)
 | 
						||
            {
 | 
						||
                return false;
 | 
						||
            }
 | 
						||
 | 
						||
            if (RUNSETTIME != null)
 | 
						||
            {
 | 
						||
                if (minAdvance != 0 || minLaster != 0)
 | 
						||
                {
 | 
						||
                    //DateTime dtSetTime = Convert.ToDateTime(dtNow.ToString("yyyy") + RUNSETTIME.Value.ToString("-MM-dd HH:mm:ss"));
 | 
						||
                    DateTime dtSetTime = Convert.ToDateTime(dtNow.ToString("yyyy-MM-dd") + RUNSETTIME.Value.ToString(" HH:mm:ss"));
 | 
						||
                    if (minAdvance > 0 && minLaster > 0)
 | 
						||
                    {
 | 
						||
                        if (dtNow.AddMinutes(-1 * minAdvance) <= dtSetTime && dtSetTime <= dtNow.AddMinutes(minLaster))
 | 
						||
                        {
 | 
						||
                            return true;
 | 
						||
                        }
 | 
						||
                    }
 | 
						||
                    else if (minAdvance > 0)
 | 
						||
                    {
 | 
						||
                        if (dtNow.AddMinutes(-1 * minAdvance) <= dtSetTime && dtSetTime <= dtNow)
 | 
						||
                        {
 | 
						||
                            //如果设置时间小于当前时间  并且 设置使劲按大于 当前时间大于当前时间往前偏移分钟数
 | 
						||
                            return true;
 | 
						||
                        }
 | 
						||
                    }
 | 
						||
                    else
 | 
						||
                    {
 | 
						||
                        if (dtNow <= dtSetTime && dtSetTime <= dtNow.AddMinutes(minLaster))
 | 
						||
                        {
 | 
						||
                            //如果 设置时间大于当前时间 并且设置时间小于当前时间往后偏移分钟数
 | 
						||
                            return true;
 | 
						||
                        }
 | 
						||
                    }
 | 
						||
                }
 | 
						||
                else
 | 
						||
                {
 | 
						||
                    if (RUNSETTIME.Value.ToString("HH:mm") == dtNow.ToString("HH:mm"))
 | 
						||
                    {
 | 
						||
                        return true;
 | 
						||
                    }
 | 
						||
                }
 | 
						||
            }
 | 
						||
            return false;
 | 
						||
        }
 | 
						||
 | 
						||
 | 
						||
        /// <summary>
 | 
						||
        /// 创建安全检查记录
 | 
						||
        /// </summary>
 | 
						||
        /// <param name="pageFilter"></param>
 | 
						||
        /// <returns></returns>
 | 
						||
        [HttpPost, Route("createSafeCheckRecord")]
 | 
						||
        public JsonActionResult<bool> createSafeCheckRecord([FromBody] KeywordFilter filter)
 | 
						||
        {
 | 
						||
            return SafeExecute<bool>(() =>
 | 
						||
            {
 | 
						||
                try
 | 
						||
                {
 | 
						||
                    DateTime time = DateTime.Now.AddHours(1);
 | 
						||
                    T_FM_SYNC_TASK task = null;
 | 
						||
                    bool isUpdate = false;
 | 
						||
                    if (!string.IsNullOrEmpty(filter.Parameter1))
 | 
						||
                    {
 | 
						||
                        try
 | 
						||
                        {
 | 
						||
                            //接收来自页面的参数
 | 
						||
                            DateTime deParm = Convert.ToDateTime(filter.Parameter1);
 | 
						||
                            time = deParm;
 | 
						||
                        }
 | 
						||
                        catch { }
 | 
						||
                    }
 | 
						||
 | 
						||
                    task = GetEntity<T_FM_SYNC_TASK>(filter.Keyword);
 | 
						||
                    DateTime CURR_TASK_START_TIME = DateTime.Now;
 | 
						||
                    if (task != null)
 | 
						||
                    {
 | 
						||
                        task.CURR_TASK_START_TIME = CURR_TASK_START_TIME;//上次同步结束时间
 | 
						||
                        task.UPDATE_SUCCES_TIME = DateTime.Now;//上次同步结束时间
 | 
						||
                        task.SYNC_PARAM = "";//清空参数
 | 
						||
                    }
 | 
						||
 | 
						||
                    #region    创建 安全检查记录
 | 
						||
 | 
						||
                    List<T_FM_NOTIFICATION_TASK> tasks = new List<T_FM_NOTIFICATION_TASK>();
 | 
						||
                    List<T_WB_SAFE_CHECK_RECORD> records = null;
 | 
						||
                    List<T_WB_SAFE_CHECK_RECORD_DETAIL> recorddetails = null;
 | 
						||
                    BaseFilter basefilter = new BaseFilter(filter.OrgId);
 | 
						||
                    basefilter.Include = new string[] { "Nav_Details" };
 | 
						||
                    //var notices = GetEntities<T_WB_SAFE_CHECK_TASK>(t => t.CHECK_TIME <= time && t.STATUS == PFStandardStatus.Reading, basefilter);
 | 
						||
                    var notices = GetEntities<T_WB_SAFE_CHECK_TASK>(t => t.CHECK_TIME <= time && !t.ISSENDRECORD, basefilter);
 | 
						||
                    if (notices != null && notices.Any())
 | 
						||
                    {
 | 
						||
                        records = new List<T_WB_SAFE_CHECK_RECORD>();
 | 
						||
                        recorddetails = new List<T_WB_SAFE_CHECK_RECORD_DETAIL>();
 | 
						||
                        T_FM_NOTIFICATION_TASK taskCheck = null;
 | 
						||
                        IEnumerable<Guid> listUserID = null;
 | 
						||
                        IEnumerable<T_FM_USER> listUser = null;
 | 
						||
                        foreach (var item in notices)
 | 
						||
                        {
 | 
						||
                            listUserID = item.Nav_Details.Where(e => e.USER_ID.HasValue).Select(e => e.USER_ID.Value).Distinct();
 | 
						||
                            listUser = GetEntities<T_FM_USER>(e => listUserID.Contains(e.ID), null, null);
 | 
						||
 | 
						||
                            item.STATUS = PFStandardStatus.Archived;
 | 
						||
                            var record = new T_WB_SAFE_CHECK_RECORD();
 | 
						||
                            record.ID = Guid.NewGuid();
 | 
						||
                            record.ORG_ID = filter.GetOrgId();
 | 
						||
                            record.TASK_ID = item.ID;
 | 
						||
                            record.DEPARTMENT_ID = item.DEPARTMENT_ID;
 | 
						||
                            records.Add(record);
 | 
						||
                            foreach (var detail in item.Nav_Details)
 | 
						||
                            {
 | 
						||
                                if (!detail.MineType.HasValue || !detail.USER_ID.HasValue)
 | 
						||
                                {
 | 
						||
                                    continue;
 | 
						||
                                }
 | 
						||
                                var recorddetail = new T_WB_SAFE_CHECK_RECORD_DETAIL();
 | 
						||
                                recorddetail.ID = Guid.NewGuid();
 | 
						||
                                recorddetail.PARENT_ID = record.ID;
 | 
						||
                                recorddetail.ORG_ID = filter.GetOrgId();
 | 
						||
                                recorddetail.MineType = detail.MineType.Value;
 | 
						||
                                recorddetail.AREA_ID = detail.AREA_ID;//recorddetail.AREA = detail.AREA;
 | 
						||
                                recorddetail.CHECK_CONTENT = detail.CHECK_CONTENT;
 | 
						||
                                recorddetail.CHECK_BASIS = detail.CHECK_BASIS;
 | 
						||
                                recorddetail.ROW_NUM = detail.ROW_NUM;
 | 
						||
                                recorddetail.PROJECT_ID = item.PROJECT_ID;
 | 
						||
                                recorddetail.USER_ID = detail.USER_ID.Value;
 | 
						||
                                recorddetail.TASK_DETAIL_ID = detail.ID;
 | 
						||
                                recorddetails.Add(recorddetail);
 | 
						||
 | 
						||
                                taskCheck = tasks.FirstOrDefault(e => e.USER_ID == detail.USER_ID && e.SOURCE_DATA_ID == record.ID);
 | 
						||
                                if (taskCheck == null)
 | 
						||
                                {
 | 
						||
                                    tasks.Add(NotificationTaskService.InsertUserNoticeTaskModel("外包工程安全检查记录", record.ID, filter.GetOrgId(), detail.USER_ID.Value, listUser.FirstOrDefault(e => e.ID == detail.USER_ID.Value)?.NAME, DateTime.Now, DateTime.Now.AddDays(7), 1, "WB031"));
 | 
						||
                                }
 | 
						||
                            }
 | 
						||
                            item.Nav_Details = null;
 | 
						||
                            item.ISSENDRECORD = true;
 | 
						||
                        }
 | 
						||
                    }
 | 
						||
                    UnifiedCommit(() =>
 | 
						||
                    {
 | 
						||
                        if (notices != null && notices.Any())
 | 
						||
                            BantchSaveEntityNoCommit(notices);
 | 
						||
                        if (tasks != null && tasks.Any())
 | 
						||
                            BantchSaveEntityNoCommit(tasks);
 | 
						||
                        if (records != null && records.Any())
 | 
						||
                            BantchSaveEntityNoCommit(records);
 | 
						||
                        if (recorddetails != null && recorddetails.Any())
 | 
						||
                            BantchSaveEntityNoCommit(recorddetails);
 | 
						||
                        if (!isUpdate && task != null)
 | 
						||
                        {
 | 
						||
                            UpdateEntityNoCommit(task);
 | 
						||
                            isUpdate = true;
 | 
						||
                        }
 | 
						||
                    });
 | 
						||
 | 
						||
                    #endregion
 | 
						||
 | 
						||
 | 
						||
                    #region     按计划触发检查任务制定待办
 | 
						||
 | 
						||
                    //按部门岗位 触发 待办
 | 
						||
                    //T_WB_SAFE_CHECK_TASK
 | 
						||
 | 
						||
                    filter.Parameter1 = " ENABLE_STATUS = false ";
 | 
						||
                    Expression<Func<T_WB_CHECK_TYPE_ENUM, bool>> expression = e => e.IS_DELETED == false && e.ENABLE_STATUS == 0;//&& e.DEPARTMENT_ID.HasValue;
 | 
						||
 | 
						||
                    List<T_WB_CHECK_TYPE_ENUM> listPlanSet = this.GetOrderEntities(expression, filter, new string[] { "Nav_CheckType" }).ToList();
 | 
						||
 | 
						||
                    List<T_WB_CHECK_TYPE_ENUM> listPlanSetRund = new List<T_WB_CHECK_TYPE_ENUM>();
 | 
						||
 | 
						||
                    if (listPlanSet.Count < 1)
 | 
						||
                    {
 | 
						||
                        return true;//没找到审批信息
 | 
						||
                    }
 | 
						||
 | 
						||
                    T_FM_USER User = GetEntity<T_FM_USER>(e => e.CODE.StartsWith("admin") && e.ENABLE_STATUS == 0);
 | 
						||
                    if (User == null)
 | 
						||
                    {
 | 
						||
                        User = GetEntity<T_FM_USER>(e => e.ID == listPlanSet[0].CREATER_ID.Value);//随便取一个不影响信息
 | 
						||
                    }
 | 
						||
 | 
						||
                    int min = 5;//按设置时间 可以提前5分钟执行跑批生成代办任务
 | 
						||
 | 
						||
                    List<DateTime> listEndTime = new List<DateTime>();
 | 
						||
                    #region   获取时间符合的设置
 | 
						||
 | 
						||
                    //5 单次 每天10,  每周20,  每月30, 每季40,
 | 
						||
                    for (int i = 0; i < listPlanSet.Count; i++)
 | 
						||
                    {
 | 
						||
                        //if (listPlanSet[i].CHECKTIME != null)
 | 
						||
                        //{
 | 
						||
                        if (ISTimeOK(listPlanSet[i].RUNSETTIME, time, min, min))//设置时间往前后各偏移 5 分钟 判断跑批
 | 
						||
                        {
 | 
						||
                            switch (listPlanSet[i].PLANCHECKFREQUENCY)
 | 
						||
                            {
 | 
						||
                                case BSPLANCHECKFREQUENCYEnum.None: //每年   0
 | 
						||
                                    #region    单次检查 时间对   月 日对才加入
 | 
						||
 | 
						||
                                    if (!string.IsNullOrEmpty(listPlanSet[i].RUNDATA))//05-01,10-01
 | 
						||
                                    {
 | 
						||
                                        List<string> listMMdd = listPlanSet[i].RUNDATA.Split(",").ToList();
 | 
						||
                                        if (listPlanSet[i].RUNDATA.Contains("-"))
 | 
						||
                                        {
 | 
						||
                                            for (int j = 0; j < listMMdd.Count; j++)
 | 
						||
                                            {
 | 
						||
                                                try
 | 
						||
                                                {
 | 
						||
                                                    if (!string.IsNullOrEmpty(listMMdd[j]) && (Convert.ToDateTime(time.Year.ToString() + ("-") + listMMdd[j]) == Convert.ToDateTime(time.ToString("yyyy-MM-dd")) || Convert.ToDateTime(time.Year.ToString() + "-" + listMMdd[j]) == Convert.ToDateTime(time.ToString("yyyy-M-d"))))
 | 
						||
                                                    {
 | 
						||
                                                        listEndTime.Add(Convert.ToDateTime(time.Date.Year + "-12-31 23:59:59"));
 | 
						||
                                                        listPlanSetRund.Add(listPlanSet[i]);
 | 
						||
                                                        break;
 | 
						||
                                                    }
 | 
						||
                                                }
 | 
						||
                                                catch { }
 | 
						||
                                            }
 | 
						||
                                        }
 | 
						||
                                        else if (listPlanSet[i].RUNDATA.Contains("/"))
 | 
						||
                                        {
 | 
						||
                                            for (int j = 0; j < listMMdd.Count; j++)
 | 
						||
                                            {
 | 
						||
                                                try
 | 
						||
                                                {
 | 
						||
                                                    if (!string.IsNullOrEmpty(listMMdd[j]) && (Convert.ToDateTime(time.Year.ToString("yyyy/") + listMMdd[j]) == Convert.ToDateTime(time.ToString("yyyy/MM/dd")) || Convert.ToDateTime(time.Year.ToString("yyyy/") + listMMdd[j]) == Convert.ToDateTime(time.ToString("yyyy/M/d"))))
 | 
						||
                                                    {
 | 
						||
                                                        listEndTime.Add(Convert.ToDateTime(time.Date.Year + "-12-31 23:59:59"));
 | 
						||
                                                        listPlanSetRund.Add(listPlanSet[i]);
 | 
						||
                                                        break;
 | 
						||
                                                    }
 | 
						||
                                                }
 | 
						||
                                                catch { }
 | 
						||
                                            }
 | 
						||
                                        }
 | 
						||
                                    }
 | 
						||
                                    #endregion
 | 
						||
                                    break;
 | 
						||
                                case BSPLANCHECKFREQUENCYEnum.Date:// 10:
 | 
						||
 | 
						||
                                    //每日天执行 时间匹配就添加
 | 
						||
                                    //if (listPlanSet[i].Nav_CheckTypeLevel.Nav_Enums.NAME != "班组级" || (listPlanSet[i].Nav_CheckTypeLevel.Nav_Enums.NAME == "班组级" && listPlanSet[i].CHECKTIME.HasValue))
 | 
						||
                                    //{
 | 
						||
                                    listPlanSetRund.Add(listPlanSet[i]);//如果是班组级 跳过(另外一个跑批)
 | 
						||
                                    listEndTime.Add(time.Date.AddDays(1).AddSeconds(-1));
 | 
						||
                                    //}
 | 
						||
                                    break;
 | 
						||
                                case BSPLANCHECKFREQUENCYEnum.Week:// 20:
 | 
						||
                                    if (listPlanSet[i].WEEKDATA != null && (int)time.DayOfWeek == listPlanSet[i].WEEKDATA.Value)
 | 
						||
                                    {
 | 
						||
                                        //星期匹配   DateTime.Now.DayOfWeek Thursday    (int)DateTime.Now.DayOfWeek 4
 | 
						||
                                        listPlanSetRund.Add(listPlanSet[i]);
 | 
						||
                                        listEndTime.Add(time.Date.AddDays(7 - listPlanSet[i].WEEKDATA.Value).AddSeconds(-1));
 | 
						||
                                    }
 | 
						||
                                    break;
 | 
						||
                                case BSPLANCHECKFREQUENCYEnum.Month:// 30:
 | 
						||
                                    if (listPlanSet[i].DATA != null && listPlanSet[i].DATA.Value == time.Day)
 | 
						||
                                    {
 | 
						||
                                        //日匹配  (季度是季度第一月的某日 刚好也符合)
 | 
						||
                                        listPlanSetRund.Add(listPlanSet[i]);
 | 
						||
                                        listEndTime.Add(Convert.ToDateTime(time.ToString("yyyy-MM-01 00:00:00")).AddMonths(1).AddSeconds(-1));
 | 
						||
                                    }
 | 
						||
                                    break;
 | 
						||
                                case BSPLANCHECKFREQUENCYEnum.Quarter:// 40:
 | 
						||
                                    if (listPlanSet[i].DATA != null && listPlanSet[i].DATA.Value == time.Day && (time.Month == 1 || time.Month == 4 || time.Month == 7 || time.Month == 10))
 | 
						||
                                    {
 | 
						||
                                        //日匹配  (季度是季度第一月的某日 刚好也符合)
 | 
						||
                                        listPlanSetRund.Add(listPlanSet[i]);
 | 
						||
                                        if (time.Month <= 3)
 | 
						||
                                        {
 | 
						||
                                            listEndTime.Add(Convert.ToDateTime("yyyy-03-31 23:59:59"));
 | 
						||
                                        }
 | 
						||
                                        else if (time.Month <= 6)
 | 
						||
                                        {
 | 
						||
                                            listEndTime.Add(Convert.ToDateTime("yyyy-06-30 23:59:59"));
 | 
						||
                                        }
 | 
						||
                                        else if (time.Month <= 9)
 | 
						||
                                        {
 | 
						||
                                            listEndTime.Add(Convert.ToDateTime("yyyy-09-30 23:59:59"));
 | 
						||
                                        }
 | 
						||
                                        else if (time.Month <= 12)
 | 
						||
                                        {
 | 
						||
                                            listEndTime.Add(Convert.ToDateTime("yyyy-12-31 23:59:59"));
 | 
						||
                                        }
 | 
						||
                                    }
 | 
						||
                                    break;
 | 
						||
                                case BSPLANCHECKFREQUENCYEnum.HalfYear:// 50:
 | 
						||
                                    if (listPlanSet[i].DATA != null && listPlanSet[i].DATA.Value == time.Day && (time.Month == 1 || time.Month == 7))
 | 
						||
                                    {
 | 
						||
                                        //日匹配  (季度是季度第一月的某日 刚好也符合)
 | 
						||
                                        listPlanSetRund.Add(listPlanSet[i]);
 | 
						||
                                        if (time.Month < 7)
 | 
						||
                                        {
 | 
						||
                                            listEndTime.Add(Convert.ToDateTime("yyyy-06-30 23:59:59"));
 | 
						||
                                        }
 | 
						||
                                        else
 | 
						||
                                        {
 | 
						||
                                            listEndTime.Add(Convert.ToDateTime("yyyy-12-31 23:59:59"));
 | 
						||
                                        }
 | 
						||
                                    }
 | 
						||
                                    break;
 | 
						||
                                case BSPLANCHECKFREQUENCYEnum.Year:// 60:
 | 
						||
                                    if (listPlanSet[i].DATA != null && listPlanSet[i].DATA.Value == time.Day && time.Month == 1)
 | 
						||
                                    {
 | 
						||
                                        //日匹配  (季度是季度第一月的某日 刚好也符合)
 | 
						||
                                        listPlanSetRund.Add(listPlanSet[i]);
 | 
						||
                                        listEndTime.Add(Convert.ToDateTime("yyyy-12-31 23:59:59"));
 | 
						||
                                    }
 | 
						||
                                    break;
 | 
						||
                                default:
 | 
						||
                                    break;
 | 
						||
                            }
 | 
						||
                        }
 | 
						||
                        //}
 | 
						||
                        //else
 | 
						||
                        //{
 | 
						||
                        //    //只有每个季度执行的没有明确时间
 | 
						||
                        //    if (listPlanSet[i].PLANCHECKFREQUENCY == 40 && listPlanSet[i].DATA != null && listPlanSet[i].DATA.Value == dtNow.Day)
 | 
						||
                        //    {
 | 
						||
                        //        listPlanSetRund.Add(listPlanSet[i]);
 | 
						||
                        //    }
 | 
						||
                        //}
 | 
						||
                    }
 | 
						||
 | 
						||
                    #endregion
 | 
						||
 | 
						||
                    if (listPlanSetRund.Count > 0)
 | 
						||
                    {
 | 
						||
                        #region 跑批添加数据
 | 
						||
 | 
						||
                        string formCode = "WB029";
 | 
						||
                        DateTime dtFirst = Convert.ToDateTime(time.ToString("yyyy-MM-dd 00:00:00"));
 | 
						||
                        // 系统生成10  用户主动创建20   今天 生成的
 | 
						||
                        List<T_WB_SAFE_CHECK_TASK> listSafeCheck = this.GetOrderEntities<T_WB_SAFE_CHECK_TASK>(e => e.CREACTTYPE == CREACTTYPEEnum.System && e.CREATE_TIME >= dtFirst, filter).ToList();
 | 
						||
                        List<T_WB_SAFE_CHECK> listCheck = this.GetOrderEntities<T_WB_SAFE_CHECK>(e => e.PLAN_SET_ID.HasValue && e.CREATE_TIME >= dtFirst, filter).ToList();
 | 
						||
                        Guid CHECK_PLAN_SETL_ID = Guid.Empty;
 | 
						||
                        T_WB_SAFE_CHECK_TASK modelCheck = null;
 | 
						||
                        T_WB_SAFE_CHECK modelSafeCheck = null;
 | 
						||
                        List<T_WB_SAFE_CHECK_TASK> listSafeCheckAdd = new List<T_WB_SAFE_CHECK_TASK>(); //需要插入数据库的安检记录
 | 
						||
                        List<T_FM_USER> listFMUserNotice = null;//每项设置的通知人员(中间表)
 | 
						||
                        List<T_WB_PROJECT_INPUT> listProject = null;//每项设置的通知人员(中间表)
 | 
						||
                        List<T_WB_PROJECT_INPUT> listProjectSafe = null;//每项设置的通知人员(中间表)
 | 
						||
 | 
						||
                        List<T_WB_SAFE_CHECK> listCheckAdd = new List<T_WB_SAFE_CHECK>(); //检查记录WB027
 | 
						||
 | 
						||
 | 
						||
                        List<int> listCheckObject = new List<int>();
 | 
						||
 | 
						||
                        for (int i = 0; i < listPlanSetRund.Count; i++)
 | 
						||
                        {
 | 
						||
 | 
						||
                            listSafeCheckAdd = new List<T_WB_SAFE_CHECK_TASK>();
 | 
						||
                            listCheckAdd = new List<T_WB_SAFE_CHECK>();
 | 
						||
 | 
						||
                            var noticeTitles = new List<string>();
 | 
						||
                            var noticeDataIds = new List<Guid>();
 | 
						||
                            var noticeUserIds = new List<Guid>();
 | 
						||
                            var noticeUserNames = new List<string>();
 | 
						||
 | 
						||
                            CHECK_PLAN_SETL_ID = listPlanSetRund[i].ID;
 | 
						||
                            modelCheck = listSafeCheck.FirstOrDefault(e => e.PLAN_SET_ID == CHECK_PLAN_SETL_ID);
 | 
						||
                            if (modelCheck != null)
 | 
						||
                                continue;//有添加检查信息
 | 
						||
 | 
						||
                            modelSafeCheck = listCheck.FirstOrDefault(e => e.PLAN_SET_ID == CHECK_PLAN_SETL_ID);
 | 
						||
                            if (modelSafeCheck != null)
 | 
						||
                                continue;  //有添加检查记录信息
 | 
						||
 | 
						||
                            #region    获取通知人员   部门岗位 取人
 | 
						||
 | 
						||
                            if (listPlanSetRund[i].IS_SCENE_USERID)
 | 
						||
                            {
 | 
						||
                                if (listProject == null)
 | 
						||
                                {
 | 
						||
                                    //所有项目 对应的建设项目现场负责人
 | 
						||
                                    listProject = GetEntities<T_WB_PROJECT_INPUT>(e => e.SCENE_USER_ID != Guid.Empty, null, "Nav_SceneUser").ToList();
 | 
						||
                                }
 | 
						||
                            }
 | 
						||
                            else if (listPlanSetRund[i].IS_SAFE)
 | 
						||
                            {
 | 
						||
                                if (listProjectSafe == null)
 | 
						||
                                {
 | 
						||
                                    //所有项目 对应的建设项目现场负责人
 | 
						||
                                    listProjectSafe = GetEntities<T_WB_PROJECT_INPUT>(e => e.USER_ID_SAFE.HasValue && e.USER_ID_SAFE != Guid.Empty, null, "Nav_UserSafe").ToList();
 | 
						||
                                }
 | 
						||
                            }
 | 
						||
                            else if (listPlanSetRund[i].USER_ID.HasValue)
 | 
						||
                            {
 | 
						||
                                listFMUserNotice = new List<T_FM_USER>();
 | 
						||
                                listFMUserNotice = GetEntities<T_FM_USER>(e => e.ID == listPlanSetRund[i].USER_ID.Value && e.ENABLE_STATUS == 0 && e.PERSON_ID.HasValue, null, "Nav_Person").ToList();
 | 
						||
                            }
 | 
						||
                            else
 | 
						||
                            {
 | 
						||
                                listFMUserNotice = new List<T_FM_USER>();
 | 
						||
                                listFMUserNotice = GetEntities<T_FM_USER>(e => e.DEPARTMENT_ID.HasValue && e.DEPARTMENT_ID.Value == listPlanSetRund[i].DEPARTMENT_ID && e.ENABLE_STATUS == 0 && e.PERSON_ID.HasValue && e.Nav_Person.POST_ID.HasValue && e.Nav_Person.POST_ID.Value == listPlanSetRund[i].POST_ID, null, "Nav_Person").ToList();
 | 
						||
                            }
 | 
						||
                            if (listPlanSetRund[i].IS_SCENE_USERID)
 | 
						||
                            {
 | 
						||
                                if (listProject == null || listProject.Count < 1)
 | 
						||
                                {
 | 
						||
                                    continue;  //没有找到通知人员信息
 | 
						||
                                }
 | 
						||
                                for (int j = 0; j < listProject.Count; j++)
 | 
						||
                                {
 | 
						||
                                    #region     model 添加
 | 
						||
 | 
						||
                                    T_WB_SAFE_CHECK_TASK modelRun = new T_WB_SAFE_CHECK_TASK();
 | 
						||
                                    modelRun.ID = Guid.NewGuid();
 | 
						||
                                    modelRun.ORG_ID = filter.GetOrgId();
 | 
						||
                                    modelRun.NAME = listPlanSetRund[i].Nav_CheckType.NAME + "-制定(" + time.ToString("MMdd") + ")";
 | 
						||
                                    modelRun.CODE = time.ToString("yyyyMMddHHmm") + i.ToString() + j.ToString();
 | 
						||
                                    //modelRun.PROJECT_ID= listPlanSetRund[i].
 | 
						||
                                    modelRun.CHECK_TYPE_ID = listPlanSetRund[i].CHECK_TYPE_ID.Value;
 | 
						||
                                    modelRun.MineType = listPlanSetRund[i].MineType;
 | 
						||
                                    modelRun.PLAN_SET_ID = listPlanSetRund[i].ID;
 | 
						||
                                    modelRun.CREACTTYPE = CREACTTYPEEnum.System;// 10;//系统生成
 | 
						||
                                    modelRun.CREATER_ID = listProject[j].Nav_SceneUser.ID;//安全检查的创建人 就是通知人
 | 
						||
                                    modelRun.USERID_DOPLAN = listProject[j].Nav_SceneUser.ID;//制表人
 | 
						||
                                    modelRun.DEPARTMENTID = listPlanSetRund[i].DEPARTMENT_ID;//检查部门(公司/部门/车间/班组 ID)
 | 
						||
                                    modelRun.STATUS = (int)HMAuditStatusEnmu.草稿;
 | 
						||
                                    modelRun.ISSENDRECORD = false;
 | 
						||
                                    modelRun.LIMITDATETIME = listEndTime[i];
 | 
						||
                                    modelRun.PROJECT_ID = listProject[j].ID;
 | 
						||
                                    modelRun.DEPARTMENTID = listProject[j].DEPARTMENT_ID;
 | 
						||
 | 
						||
                                    listSafeCheckAdd.Add(modelRun);
 | 
						||
                                    noticeDataIds.Add(modelRun.ID);
 | 
						||
                                    noticeUserIds.Add(listProject[j].Nav_SceneUser.ID);
 | 
						||
                                    noticeUserNames.Add(listProject[j].Nav_SceneUser.NAME);
 | 
						||
                                    noticeTitles.Add("【外包工程】" + modelRun.NAME);//每天的 加上日期 
 | 
						||
 | 
						||
                                    #endregion
 | 
						||
                                }
 | 
						||
                            }
 | 
						||
                            else if (listPlanSetRund[i].IS_SAFE)
 | 
						||
                            {
 | 
						||
                                //WB027
 | 
						||
                                if (listProjectSafe == null || listProjectSafe.Count < 1)
 | 
						||
                                {
 | 
						||
                                    continue;  //没有找到通知人员信息
 | 
						||
                                }
 | 
						||
                                for (int j = 0; j < listProjectSafe.Count; j++)
 | 
						||
                                {
 | 
						||
                                    #region     model 添加
 | 
						||
 | 
						||
                                    T_WB_SAFE_CHECK modelRunRecord = new T_WB_SAFE_CHECK();
 | 
						||
                                    modelRunRecord.ID = Guid.NewGuid();
 | 
						||
                                    modelRunRecord.ORG_ID = filter.GetOrgId();
 | 
						||
                                    modelRunRecord.PLAN_SET_ID = listPlanSetRund[i].ID;
 | 
						||
                                    modelRunRecord.CODE = time.ToString("yyyyMMddHHmm") + i.ToString() + j.ToString();
 | 
						||
                                    modelRunRecord.NAME = listPlanSetRund[i].Nav_CheckType.NAME + "-记录(" + time.ToString("MMdd") + ")";
 | 
						||
                                    modelRunRecord.CREATER_ID = listProjectSafe[j].USER_ID_SAFE.Value;//安全检查的创建人 就是通知人
 | 
						||
                                    modelRunRecord.MODIFIER_ID = listProjectSafe[j].USER_ID_SAFE.Value;//安全检查的创建人 就是通知人
 | 
						||
                                    modelRunRecord.CREATE_TIME = DateTime.Now;
 | 
						||
                                    modelRunRecord.CHECK_TYPE_ID = listPlanSetRund[i].CHECK_TYPE_ID.Value;
 | 
						||
                                    //modelRunRecord.MineType = listPlanSetRund[i].MineType;
 | 
						||
                                    //modelRunRecord.CREACTTYPE = CREACTTYPEEnum.System;// 10;//系统生成
 | 
						||
                                    //modelRunRecord.USERID_DOPLAN = listProjectSafe[j].Nav_SceneUser.ID;//制表人
 | 
						||
                                    //modelRunRecord.DEPARTMENTID = listPlanSetRund[i].DEPARTMENT_ID;//检查部门(公司/部门/车间/班组 ID)
 | 
						||
                                    //modelRunRecord.LIMITDATETIME = listEndTime[i];
 | 
						||
                                    modelRunRecord.CHECK_TIME = dtFirst;
 | 
						||
                                    modelRunRecord.CHECK_CATEGORY = WBCHECKCATAGORY.自查;
 | 
						||
                                    modelRunRecord.STATUS = (int)HMAuditStatusEnmu.草稿;
 | 
						||
                                    modelRunRecord.PROJECT_ID = listProjectSafe[j].ID;
 | 
						||
                                    modelRunRecord.DEPARTMENT_ID = listProjectSafe[j].DEPARTMENT_ID;
 | 
						||
 | 
						||
                                    listCheckAdd.Add(modelRunRecord);
 | 
						||
                                    noticeDataIds.Add(modelRunRecord.ID);
 | 
						||
                                    noticeUserIds.Add(listProjectSafe[j].Nav_UserSafe.ID);
 | 
						||
                                    noticeUserNames.Add(listProjectSafe[j].Nav_UserSafe.NAME);
 | 
						||
                                    noticeTitles.Add(modelRunRecord.NAME);//每天的 加上日期 
 | 
						||
 | 
						||
                                    #endregion
 | 
						||
                                }
 | 
						||
                            }
 | 
						||
                            else
 | 
						||
                            {
 | 
						||
                                if (listFMUserNotice.Count < 1)
 | 
						||
                                {
 | 
						||
                                    continue;  //没有找到通知人员信息
 | 
						||
                                }
 | 
						||
 | 
						||
                                for (int j = 0; j < listFMUserNotice.Count; j++)
 | 
						||
                                {
 | 
						||
                                    #region     model 添加
 | 
						||
 | 
						||
                                    T_WB_SAFE_CHECK_TASK modelRun = new T_WB_SAFE_CHECK_TASK();
 | 
						||
                                    modelRun.ID = Guid.NewGuid();
 | 
						||
                                    modelRun.ORG_ID = filter.GetOrgId();
 | 
						||
                                    modelRun.NAME = listPlanSetRund[i].Nav_CheckType.NAME + "-制定(" + time.ToString("MMdd") + ")";
 | 
						||
                                    modelRun.CODE = time.ToString("yyyyMMddHHmm") + i.ToString() + j.ToString();
 | 
						||
                                    //modelRun.PROJECT_ID= listPlanSetRund[i].
 | 
						||
                                    modelRun.CHECK_TYPE_ID = listPlanSetRund[i].CHECK_TYPE_ID.Value;
 | 
						||
                                    modelRun.MineType = listPlanSetRund[i].MineType;
 | 
						||
                                    modelRun.PLAN_SET_ID = listPlanSetRund[i].ID;
 | 
						||
                                    modelRun.CREACTTYPE = CREACTTYPEEnum.System;// 10;//系统生成
 | 
						||
                                    modelRun.CREATER_ID = listFMUserNotice[j].ID;//安全检查的创建人 就是通知人
 | 
						||
                                    modelRun.USERID_DOPLAN = listFMUserNotice[j].ID;//制表人
 | 
						||
                                    modelRun.DEPARTMENTID = listPlanSetRund[i].DEPARTMENT_ID;//检查部门(公司/部门/车间/班组 ID)
 | 
						||
                                    modelRun.STATUS = (int)HMAuditStatusEnmu.草稿;
 | 
						||
                                    modelRun.ISSENDRECORD = false;
 | 
						||
                                    modelRun.LIMITDATETIME = listEndTime[i];
 | 
						||
                                    listSafeCheckAdd.Add(modelRun);
 | 
						||
                                    noticeDataIds.Add(modelRun.ID);
 | 
						||
                                    noticeUserIds.Add(listFMUserNotice[j].ID);
 | 
						||
                                    noticeUserNames.Add(listFMUserNotice[j].NAME);
 | 
						||
                                    noticeTitles.Add("【外包工程】" + modelRun.NAME);//每天的 加上日期 
 | 
						||
 | 
						||
                                    #endregion
 | 
						||
                                }
 | 
						||
                            }
 | 
						||
 | 
						||
                            #endregion
 | 
						||
 | 
						||
                            ////超时时间设置
 | 
						||
                            if (noticeTitles.Count > 0)
 | 
						||
                            {
 | 
						||
                                #region    安全检查数据
 | 
						||
 | 
						||
                                if (task != null)
 | 
						||
                                {
 | 
						||
                                    task.UPDATE_SUCCES_TIME = DateTime.Now;
 | 
						||
                                }
 | 
						||
                                if (listPlanSetRund[i].IS_SAFE)
 | 
						||
                                {
 | 
						||
                                    formCode = "WB027";//检查记录
 | 
						||
                                }
 | 
						||
                                else
 | 
						||
                                {
 | 
						||
                                    formCode = "WB029";//检查任务
 | 
						||
                                }
 | 
						||
 | 
						||
                                NotificationTaskService.SendNotificationTask(noticeTitles, noticeDataIds, filter.GetOrgId(), noticeUserIds, noticeUserNames, DateTime.Now, listEndTime[i], 0, formCode, () =>
 | 
						||
                                {
 | 
						||
                                    if (listSafeCheckAdd != null && listSafeCheckAdd.Any() && listSafeCheckAdd.Count() > 0)
 | 
						||
                                        this.BantchAddEntityNoCommit(listSafeCheckAdd);
 | 
						||
                                    if (listCheckAdd != null && listCheckAdd.Any() && listCheckAdd.Count() > 0)
 | 
						||
                                        this.BantchAddEntityNoCommit(listCheckAdd);
 | 
						||
                                    if (!isUpdate && task != null)
 | 
						||
                                    {
 | 
						||
                                        UpdateEntityNoCommit(task);
 | 
						||
                                        isUpdate = true;
 | 
						||
                                    }
 | 
						||
                                });
 | 
						||
 | 
						||
                                #endregion
 | 
						||
                            }
 | 
						||
                        }
 | 
						||
                        #endregion
 | 
						||
                    }
 | 
						||
 | 
						||
                    #endregion
 | 
						||
 | 
						||
 | 
						||
                    #region 证书、人员信息 到期 提前7天触发今日提醒   1、给外包现场安全负责人 2、给 外包工程 建设项目现场负责人
 | 
						||
 | 
						||
                    DateTime dtWarm = time.Date.AddDays(8).AddSeconds(-1);
 | 
						||
                    var listWarm = GetEntities<T_WB_REGISTER_3>(e => e.VALID_TIME.HasValue && e.VALID_TIME >= time.Date && e.VALID_TIME <= dtWarm && (!e.MODIFY_TIME.HasValue || e.MODIFY_TIME.Value.Date != time.Date), null);
 | 
						||
                    var listWarm2 = GetEntities<T_WB_REGISTER_2>(e => e.VALID_DATE.HasValue && e.VALID_DATE >= time.Date && e.VALID_DATE <= dtWarm && (!e.MODIFY_TIME.HasValue || e.MODIFY_TIME.Value.Date != time.Date), null);
 | 
						||
                    var listWarm4 = GetEntities<T_WB_REGISTER_4>(e => e.DATE_LIMIT.HasValue && e.DATE_LIMIT >= time.Date && e.DATE_LIMIT <= dtWarm && (!e.MODIFY_TIME.HasValue || e.MODIFY_TIME.Value.Date != time.Date), null);
 | 
						||
 | 
						||
                    if ((listWarm.Any() && listWarm.Count() > 0) || (listWarm2.Any() && listWarm2.Count() > 0) || (listWarm4.Any() && listWarm4.Count() > 0))
 | 
						||
                    {
 | 
						||
                        List<T_FM_NOTIFICATION_TASK> listTaskWarm = new List<T_FM_NOTIFICATION_TASK>();
 | 
						||
                        DateTime dtTaskEnd = NotificationTaskService.GetTaskEndTime(FMTASKTYPE.Default, filter.OrgId.Value, null, null, null);
 | 
						||
                        List<Guid> listRegistID = new List<Guid>();
 | 
						||
                        if (listWarm.Any() && listWarm.Count() > 0)
 | 
						||
                        {
 | 
						||
                            listRegistID = listWarm.Select(e => e.PARENT_ID).Distinct().ToList();
 | 
						||
                        }
 | 
						||
                        if (listWarm2.Any() && listWarm2.Count() > 0)
 | 
						||
                        {
 | 
						||
                            listRegistID.AddRange(listWarm2.Select(e => e.PARENT_ID).Distinct().ToList());
 | 
						||
                        }
 | 
						||
                        if (listWarm4.Any() && listWarm4.Count() > 0)
 | 
						||
                        {
 | 
						||
                            listRegistID.AddRange(listWarm4.Select(e => e.PARENT_ID).Distinct().ToList());
 | 
						||
                        }
 | 
						||
 | 
						||
 | 
						||
                        var listRegister = GetEntities<T_WB_REGISTER>(e => e.STATUS == PFStandardStatus.Archived && e.ENABLE_STATUS == FMEnableStatusEnum.启用 && listRegistID.Contains(e.ID), null, "Nav_Project.Nav_SceneUser");
 | 
						||
                        if (listRegister != null && listRegister.Count() > 0)
 | 
						||
                        {
 | 
						||
                            var listPhone = listRegister.Select(e => e.Nav_Project.WB_USER_PHONE);
 | 
						||
                            var listProjID = listRegister.Select(e => e.PROJECT_ID);
 | 
						||
                            var listUserWBAQY = GetEntities<T_FM_USER>(e => e.ENABLE_STATUS == 0 && e.PROJECT_ID.HasValue && listProjID.Contains(e.PROJECT_ID.Value) && listPhone.Contains(e.PHONE), null, null);
 | 
						||
                            T_FM_USER UserAQ = null;
 | 
						||
                            if (listUserWBAQY != null && listUserWBAQY.Any())
 | 
						||
                            {
 | 
						||
                                foreach (var item in listRegister)
 | 
						||
                                {
 | 
						||
                                    UserAQ = listUserWBAQY.FirstOrDefault(e => e.PHONE == item.Nav_Project.WB_USER_PHONE);
 | 
						||
                                    if (UserAQ != null)
 | 
						||
                                    {
 | 
						||
                                        string Warm = string.Empty;
 | 
						||
                                        if (listWarm != null && listWarm.Any())
 | 
						||
                                        {
 | 
						||
                                            var listWarmPer = listWarm.Where(e => e.PARENT_ID == item.ID);
 | 
						||
                                            if (listWarmPer != null && listWarmPer.Count() > 0)
 | 
						||
                                            {
 | 
						||
                                                Warm = "资质即将到期提醒:";
 | 
						||
                                                foreach (var itemP in listWarmPer)
 | 
						||
                                                {
 | 
						||
                                                    Warm += "【" + itemP.CERTIFICATE_NAME + "】到期日期:" + itemP.VALID_TIME.Value.ToString("yyyy-MM-dd") + ",";
 | 
						||
                                                }
 | 
						||
                                                Warm = Warm.Substring(0, Warm.Length - 1);
 | 
						||
                                            }
 | 
						||
                                        }
 | 
						||
                                        if (listWarm2 != null && listWarm2.Any())
 | 
						||
                                        {
 | 
						||
                                            var listWarmPer = listWarm2.Where(e => e.PARENT_ID == item.ID);
 | 
						||
                                            if (listWarmPer != null && listWarmPer.Count() > 0)
 | 
						||
                                            {
 | 
						||
                                                Warm += ((Warm.Length > 0 ? "," : "") + "人员证书即将到期提醒:");
 | 
						||
                                                foreach (var itemP in listWarmPer)
 | 
						||
                                                {
 | 
						||
                                                    Warm += (itemP.NAME + " 【" + itemP.CERTIFICATE_NAME + "】到期日期:" + itemP.VALID_DATE.Value.ToString("yyyy-MM-dd") + ",");
 | 
						||
                                                }
 | 
						||
                                                Warm = Warm.Substring(0, Warm.Length - 1);
 | 
						||
                                            }
 | 
						||
                                        }
 | 
						||
 | 
						||
                                        if (listWarm4 != null && listWarm4.Any())
 | 
						||
                                        {
 | 
						||
                                            var listWarmPer = listWarm4.Where(e => e.PARENT_ID == item.ID);
 | 
						||
                                            if (listWarmPer != null && listWarmPer.Count() > 0)
 | 
						||
                                            {
 | 
						||
                                                Warm += ((Warm.Length > 0 ? "," : "") + "设备设施检测报告有效期即将到期提醒:");
 | 
						||
                                                foreach (var itemP in listWarmPer)
 | 
						||
                                                {
 | 
						||
                                                    Warm += (itemP.NAME + " 【" + itemP.NAME + "】到期日期:" + itemP.DATE_LIMIT.Value.ToString("yyyy-MM-dd") + ",");
 | 
						||
                                                }
 | 
						||
                                                Warm = Warm.Substring(0, Warm.Length - 1);
 | 
						||
                                            }
 | 
						||
                                        }
 | 
						||
 | 
						||
                                        //外包安全员
 | 
						||
                                        listTaskWarm.Add(NotificationTaskService.InsertUserNoticeTaskModel(Warm, Guid.Empty, item.ORG_ID, UserAQ.ID, UserAQ.NAME, DateTime.Now, dtTaskEnd, 2, ""));
 | 
						||
                                        //建设项目现场负责人
 | 
						||
                                        listTaskWarm.Add(NotificationTaskService.InsertUserNoticeTaskModel("【外包单位:" + item.Nav_Project.UNIT_NAME + "】" + Warm, Guid.Empty, item.ORG_ID, item.Nav_Project.SCENE_USER_ID, item.Nav_Project.Nav_SceneUser.NAME, DateTime.Now, dtTaskEnd, 2, ""));
 | 
						||
                                    }
 | 
						||
                                }
 | 
						||
                            }
 | 
						||
                        }
 | 
						||
 | 
						||
                        if (listTaskWarm != null && listTaskWarm.Count() > 0)
 | 
						||
                        {
 | 
						||
                            if (listWarm != null && listWarm.Count() > 0)
 | 
						||
                            {
 | 
						||
                                foreach (var item in listWarm)
 | 
						||
                                {
 | 
						||
                                    item.MODIFY_TIME = (time > DateTime.Now ? time : DateTime.Now);
 | 
						||
                                }
 | 
						||
                            }
 | 
						||
                            if (listWarm2 != null && listWarm2.Count() > 0)
 | 
						||
                            {
 | 
						||
                                foreach (var item in listWarm2)
 | 
						||
                                {
 | 
						||
                                    item.MODIFY_TIME = (time > DateTime.Now ? time : DateTime.Now);
 | 
						||
                                }
 | 
						||
                            }
 | 
						||
                            if (listWarm4 != null && listWarm4.Count() > 0)
 | 
						||
                            {
 | 
						||
                                foreach (var item in listWarm4)
 | 
						||
                                {
 | 
						||
                                    item.MODIFY_TIME = (time > DateTime.Now ? time : DateTime.Now);
 | 
						||
                                }
 | 
						||
                            }
 | 
						||
 | 
						||
                            UnifiedCommit(() =>
 | 
						||
                            {
 | 
						||
                                this.BantchAddEntityNoCommit(listTaskWarm);
 | 
						||
                                if (listWarm != null && listWarm.Count() > 0)
 | 
						||
                                    BantchSaveEntityNoCommit(listWarm);
 | 
						||
                                if (listWarm2 != null && listWarm2.Count() > 0)
 | 
						||
                                    BantchSaveEntityNoCommit(listWarm2);
 | 
						||
                                if (!isUpdate && task != null)
 | 
						||
                                {
 | 
						||
                                    UpdateEntityNoCommit(task);
 | 
						||
                                    isUpdate = true;
 | 
						||
                                }
 | 
						||
                            });
 | 
						||
                        }
 | 
						||
                    }
 | 
						||
 | 
						||
                    #endregion
 | 
						||
 | 
						||
 | 
						||
                    #region     如果培训结束时间到了 还有人 还在考试  那么结束此单 给老师发送 考试确认单 WB048
 | 
						||
 | 
						||
                    ////触发讲师确认  
 | 
						||
                    //task = NotificationTaskService.InsertUserNoticeTaskModel(Record.Nav_Parent.Nav_Project.UNIT_NAME + "安全培训记录结果确认", Record.ID, Record.ORG_ID, (Guid)Record.Nav_Parent.USER_ID, Record.Nav_Parent.Nav_User.NAME, DateTime.Now, DateTime.Now.AddDays(7), 1, "WB048");
 | 
						||
 | 
						||
                    var listRecord = GetEntities<T_WB_OUTSOURCE_TRAIN_RECORD>(e => !e.IS_DELETED && !e.ISEND && !e.ISEND && e.END_TIME.HasValue && e.END_TIME.Value <= time, null, "Nav_Parent.Nav_Project", "Nav_Parent.Nav_User");
 | 
						||
                    if (listRecord != null && listRecord.Any())
 | 
						||
                    {
 | 
						||
                        var listRecordID = listRecord.Select(e => e.ID);
 | 
						||
                        //外包单位培训/答题   WB008_OPERATE 
 | 
						||
                        var listRecordUser = GetEntities<T_WB_OUTSOURCE_TRAIN_RECORD_USERS>(e => e.DEAL_STATUS == 0 && listRecordID.Contains(e.PARENT_ID), null, null);
 | 
						||
                        List<T_FM_NOTIFICATION_TASK> listTask048 = new List<T_FM_NOTIFICATION_TASK>();
 | 
						||
                        List<Guid> listRecordUserID = new List<Guid>();
 | 
						||
                        foreach (var item in listRecordUser)
 | 
						||
                        {
 | 
						||
                            item.SIGN_STATUS = FOUserShiftStatusEnum.待处理;//FOUserShiftStatusEnum.已处理;  考试 待老师 确认 后 也是需要再次确认
 | 
						||
                            item.DEAL_STATUS = ExamStatusEnum.超期不能处理;//.已处理 ;
 | 
						||
                            item.MODIFY_TIME = DateTime.Now;
 | 
						||
                            listRecordUserID.Add(item.ID);
 | 
						||
                        }
 | 
						||
                        var listTNE = GetEntities<T_FM_NOTIFICATION_TASK>(e => e.SOURCE_FORMCODE == "WB008_OPERATE" && e.SOURCE_DATA_ID.HasValue && listRecordUserID.Contains(e.SOURCE_DATA_ID.Value), null, null);
 | 
						||
                        foreach (var item in listTNE)
 | 
						||
                        {
 | 
						||
                            item.NOTICE_STATUS = (int)FMNoticeStatusEnum.超时无需办理;
 | 
						||
                            item.TASK_DT = DateTime.Now;
 | 
						||
                        }
 | 
						||
                        listTask048.AddRange(listTNE);
 | 
						||
                        foreach (var item in listRecord)
 | 
						||
                        {
 | 
						||
                            item.MODIFY_TIME = DateTime.Now;
 | 
						||
                            item.ISEND = true;
 | 
						||
                            item.STATUS = SETrainNotifyStatus.通知中;//.签到完成;//API SavePapers 
 | 
						||
                            listTask048.Add(NotificationTaskService.InsertUserNoticeTaskModel(item.Nav_Parent.Nav_Project.UNIT_NAME + "安全培训记录结果确认", item.ID, item.ORG_ID, (Guid)item.Nav_Parent.USER_ID, item.Nav_Parent.Nav_User.NAME, DateTime.Now, DateTime.Now.AddDays(7), 1, "WB048"));
 | 
						||
                        }
 | 
						||
 | 
						||
                        UnifiedCommit(() =>
 | 
						||
                        {
 | 
						||
                            BantchSaveEntityNoCommit(listRecord);
 | 
						||
                            if (listTask048 != null && listTask048.Count() > 0)
 | 
						||
                                BantchSaveEntityNoCommit(listTask048);
 | 
						||
                            if (listRecordUser != null && listRecordUser.Count() > 0)
 | 
						||
                                BantchSaveEntityNoCommit(listRecordUser);
 | 
						||
                        });
 | 
						||
                    }
 | 
						||
 | 
						||
                    #endregion
 | 
						||
 | 
						||
                }
 | 
						||
                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;
 | 
						||
            });
 | 
						||
        }
 | 
						||
    }
 | 
						||
}
 |