942 lines
		
	
	
		
			61 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
		
		
			
		
	
	
			942 lines
		
	
	
		
			61 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.SC.PE;
							 | 
						|||
| 
								 | 
							
								using APT.MS.Domain.Entities.SC.PT;
							 | 
						|||
| 
								 | 
							
								using APT.MS.Domain.Enums;
							 | 
						|||
| 
								 | 
							
								using APT.Utility;
							 | 
						|||
| 
								 | 
							
								using Microsoft.AspNetCore.Mvc;
							 | 
						|||
| 
								 | 
							
								using System.Collections.Generic;
							 | 
						|||
| 
								 | 
							
								using System;
							 | 
						|||
| 
								 | 
							
								using System.Linq;
							 | 
						|||
| 
								 | 
							
								using APT.MS.Domain.Entities.SC.PR;
							 | 
						|||
| 
								 | 
							
								using InfluxData.Net.InfluxDb.Models.Responses;
							 | 
						|||
| 
								 | 
							
								using NPOI.SS.Formula.Functions;
							 | 
						|||
| 
								 | 
							
								using APT.BaseData.Domain.ApiModel;
							 | 
						|||
| 
								 | 
							
								using APT.BaseData.Domain.Enums;
							 | 
						|||
| 
								 | 
							
								using APT.MS.Domain.Entities.SC;
							 | 
						|||
| 
								 | 
							
								using APT.BaseData.Services.Services.FM;
							 | 
						|||
| 
								 | 
							
								using APT.WebApi.Models;
							 | 
						|||
| 
								 | 
							
								namespace APT.PP.WebApi.Controllers.Api
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
								    /// <summary>
							 | 
						|||
| 
								 | 
							
								    /// 生产工艺
							 | 
						|||
| 
								 | 
							
								    /// </summary>
							 | 
						|||
| 
								 | 
							
								    [Route("api/PP/PRController")]
							 | 
						|||
| 
								 | 
							
								    [TypeFilter(typeof(CustomActionFilterAttribute))]
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								    public class PRController : AuthorizeApiController<T_FM_BASE_CONFIG>
							 | 
						|||
| 
								 | 
							
								    {
							 | 
						|||
| 
								 | 
							
								        IFMNotificationTaskService NotificationTaskService { get; set; }
							 | 
						|||
| 
								 | 
							
								        IFMDepartmentService DepartmentService { get; set; }
							 | 
						|||
| 
								 | 
							
								        /// <summary>
							 | 
						|||
| 
								 | 
							
								        /// 生产工艺
							 | 
						|||
| 
								 | 
							
								        /// </summary>
							 | 
						|||
| 
								 | 
							
								        /// <param name="notificationTaskService"></param>
							 | 
						|||
| 
								 | 
							
								        public PRController(IFMNotificationTaskService notificationTaskService, IFMDepartmentService departmentService)
							 | 
						|||
| 
								 | 
							
								        {
							 | 
						|||
| 
								 | 
							
								            NotificationTaskService = notificationTaskService;
							 | 
						|||
| 
								 | 
							
								            DepartmentService = departmentService;
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								        /// <summary>
							 | 
						|||
| 
								 | 
							
								        /// 触发滑坡滚石监控处理
							 | 
						|||
| 
								 | 
							
								        /// </summary>
							 | 
						|||
| 
								 | 
							
								        /// <returns></returns>
							 | 
						|||
| 
								 | 
							
								        [HttpPost, Route("RollStoneSync")]
							 | 
						|||
| 
								 | 
							
								        public JsonActionResult<bool> RollStoneSync([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;
							 | 
						|||
| 
								 | 
							
								                    
							 | 
						|||
| 
								 | 
							
								                    List<T_FM_NOTIFICATION_TASK> sendNotices = new List<T_FM_NOTIFICATION_TASK>();
							 | 
						|||
| 
								 | 
							
								                    List<T_PR_LANDSLIDE_ROLLSTONE_MONITOR> stones = new List<T_PR_LANDSLIDE_ROLLSTONE_MONITOR>();
							 | 
						|||
| 
								 | 
							
								                    var newFilter = new BaseFilter(filter.OrgId);
							 | 
						|||
| 
								 | 
							
								                    newFilter.SelectField = new List<string> { "PLANCHECKFREQUENCY", "MONTH", "DATA", "POST_ID", "WEEKDATA", "RUNSETTIME", "USER_ID", "Nav_User", "DEPARTMENT_ID" };
							 | 
						|||
| 
								 | 
							
								                    var timeSets = GetEntities<T_PT_TIME_SET>(i => i.SET_TYPE == PTSetTypeEnum.RollStone && i.ENABLE_STATUS == 0, newFilter);
							 | 
						|||
| 
								 | 
							
								                    if (timeSets != null && timeSets.Any())
							 | 
						|||
| 
								 | 
							
								                    {
							 | 
						|||
| 
								 | 
							
								                        foreach (var timeSet in timeSets)
							 | 
						|||
| 
								 | 
							
								                        {
							 | 
						|||
| 
								 | 
							
								                            bool isSend = false;
							 | 
						|||
| 
								 | 
							
								                            if (timeSet != null)
							 | 
						|||
| 
								 | 
							
								                            {
							 | 
						|||
| 
								 | 
							
								                                switch (timeSet.PLANCHECKFREQUENCY)
							 | 
						|||
| 
								 | 
							
								                                {
							 | 
						|||
| 
								 | 
							
								                                    //case BSPLANCHECKFREQUENCYEnum.OneTime:
							 | 
						|||
| 
								 | 
							
								                                    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)
							 | 
						|||
| 
								 | 
							
								                            {
							 | 
						|||
| 
								 | 
							
								                                if (dtNow.Hour == timeSet.RUNSETTIME.Value.Hour)
							 | 
						|||
| 
								 | 
							
								                                {
							 | 
						|||
| 
								 | 
							
								                                    //newFilter.SelectField = new List<string> { "ID","USER_ID", "NAME" };
							 | 
						|||
| 
								 | 
							
								                                    //var userInfo = this.GetEntities<T_FM_PARAM_SET>(t => (t.NAME == "矿山现场班长" || t.NAME == "金宇现场班长") && t.USER_ID!=null, newFilter, "Nav_User");
							 | 
						|||
| 
								 | 
							
								                                    //if (userInfo != null && userInfo.Any())
							 | 
						|||
| 
								 | 
							
								                                    if (timeSet.POST_ID != null)
							 | 
						|||
| 
								 | 
							
								                                    {
							 | 
						|||
| 
								 | 
							
								                                        var userInfo = this.GetEntity<T_FM_USER>(t => t.Nav_Person != null && t.Nav_Person.POST_ID == timeSet.POST_ID && t.DEPARTMENT_ID == timeSet.DEPARTMENT_ID);
							 | 
						|||
| 
								 | 
							
								                                        //var user = userInfo.FirstOrDefault(m => m.USER_ID == t);
							 | 
						|||
| 
								 | 
							
								                                        if (userInfo != null)
							 | 
						|||
| 
								 | 
							
								                                        {
							 | 
						|||
| 
								 | 
							
								                                            T_PR_LANDSLIDE_ROLLSTONE_MONITOR stone = new T_PR_LANDSLIDE_ROLLSTONE_MONITOR();
							 | 
						|||
| 
								 | 
							
								                                            stone.ORG_ID = filter.GetOrgId();
							 | 
						|||
| 
								 | 
							
								                                            stone.USER_ID = userInfo.ID;
							 | 
						|||
| 
								 | 
							
								                                            stone.STATUS = PFStandardStatus.Draft;
							 | 
						|||
| 
								 | 
							
								                                            stones.Add(stone);
							 | 
						|||
| 
								 | 
							
								                                            sendNotices.Add(NotificationTaskService.InsertUserNoticeTaskModel("滑坡滚石监控处理记录表", stone.ID, filter.GetOrgId(), userInfo.ID, userInfo.NAME, DateTime.Now, DateTime.Now.AddDays(30), (int)FMNoticeTypeEnum.消息, "PR007"));
							 | 
						|||
| 
								 | 
							
								                                            //var userIds = userInfo.Select(t => t.USER_ID).Distinct().ToList();
							 | 
						|||
| 
								 | 
							
								                                            //if (userIds != null && userIds.Any())
							 | 
						|||
| 
								 | 
							
								                                            //{
							 | 
						|||
| 
								 | 
							
								                                            //    userIds.ForEach(t =>
							 | 
						|||
| 
								 | 
							
								                                            //    {
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                                            //    });
							 | 
						|||
| 
								 | 
							
								                                            //}
							 | 
						|||
| 
								 | 
							
								                                        }
							 | 
						|||
| 
								 | 
							
								                                    }
							 | 
						|||
| 
								 | 
							
								                                }
							 | 
						|||
| 
								 | 
							
								                            }
							 | 
						|||
| 
								 | 
							
								                        }
							 | 
						|||
| 
								 | 
							
								                    }
							 | 
						|||
| 
								 | 
							
								                    UnifiedCommit(() =>
							 | 
						|||
| 
								 | 
							
								                    {
							 | 
						|||
| 
								 | 
							
								                        if (stones != null && stones.Any())
							 | 
						|||
| 
								 | 
							
								                            BantchSaveEntityNoCommit(stones);
							 | 
						|||
| 
								 | 
							
								                        if (sendNotices != null && sendNotices.Any())
							 | 
						|||
| 
								 | 
							
								                            BantchSaveEntityNoCommit(sendNotices);
							 | 
						|||
| 
								 | 
							
								                    });
							 | 
						|||
| 
								 | 
							
								                }
							 | 
						|||
| 
								 | 
							
								                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("YearProductionPlanSync")]
							 | 
						|||
| 
								 | 
							
								        public JsonActionResult<bool> YearProductionPlanSync([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;
							 | 
						|||
| 
								 | 
							
								                    bool isSend = false;
							 | 
						|||
| 
								 | 
							
								                    List<T_FM_NOTIFICATION_TASK> sendNotices = new List<T_FM_NOTIFICATION_TASK>();
							 | 
						|||
| 
								 | 
							
								                    T_SC_MT_MEETING met = null;
							 | 
						|||
| 
								 | 
							
								                    var newFilter = new BaseFilter(filter.OrgId);
							 | 
						|||
| 
								 | 
							
								                    newFilter.SelectField = new List<string> { "PLANCHECKFREQUENCY", "MONTH", "DATA", "WEEKDATA", "RUNSETTIME", "USER_ID", "Nav_User", "DEPARTMENT_ID" };
							 | 
						|||
| 
								 | 
							
								                    var timeSet = GetEntity<T_PT_TIME_SET>(i => i.SET_TYPE == PTSetTypeEnum.YearProductionPlan && i.ENABLE_STATUS == 0, newFilter);
							 | 
						|||
| 
								 | 
							
								                    if (timeSet != null)
							 | 
						|||
| 
								 | 
							
								                    {
							 | 
						|||
| 
								 | 
							
								                        switch (timeSet.PLANCHECKFREQUENCY)
							 | 
						|||
| 
								 | 
							
								                        {
							 | 
						|||
| 
								 | 
							
								                            //case BSPLANCHECKFREQUENCYEnum.OneTime:
							 | 
						|||
| 
								 | 
							
								                            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 userInfo = this.GetEntity<T_FM_PARAM_SET>(t => t.NAME == "企管部负责人", "Nav_User");
							 | 
						|||
| 
								 | 
							
								                        if (timeSet.POST_ID != null)
							 | 
						|||
| 
								 | 
							
								                        {
							 | 
						|||
| 
								 | 
							
								                            var userInfo = this.GetEntity<T_FM_USER>(t => t.Nav_Person != null && t.Nav_Person.POST_ID == timeSet.POST_ID && t.DEPARTMENT_ID == timeSet.DEPARTMENT_ID);
							 | 
						|||
| 
								 | 
							
								                            if (userInfo != null)
							 | 
						|||
| 
								 | 
							
								                            {
							 | 
						|||
| 
								 | 
							
								                                met = new T_SC_MT_MEETING();
							 | 
						|||
| 
								 | 
							
								                                met.ORG_ID = timeSet.ORG_ID;
							 | 
						|||
| 
								 | 
							
								                                met.STATUS = PFStandardStatus.Draft;
							 | 
						|||
| 
								 | 
							
								                                met.MEETINGTYPE = SCMEETINGTYPE.Ordinary;
							 | 
						|||
| 
								 | 
							
								                                met.NAME = "年度作业计划讨论会";
							 | 
						|||
| 
								 | 
							
								                                met.CREACTTYPE = CREACTTYPEEnum.YearPlanAdd;
							 | 
						|||
| 
								 | 
							
								                                met.USER_ID_HOST = userInfo.ID;
							 | 
						|||
| 
								 | 
							
								                                met.USER_ID_ORIGINATOR = userInfo.ID;
							 | 
						|||
| 
								 | 
							
								                                met.DEPARTMENT_ID = timeSet.DEPARTMENT_ID.Value;
							 | 
						|||
| 
								 | 
							
								                                met.Nav_ListThemes = null;
							 | 
						|||
| 
								 | 
							
								                                met.Nav_ListMeetingContent = null;
							 | 
						|||
| 
								 | 
							
								                                met.Nav_ListPAll = null;
							 | 
						|||
| 
								 | 
							
								                                met.Nav_ListPReView = null;
							 | 
						|||
| 
								 | 
							
								                                met.Nav_Files = null;
							 | 
						|||
| 
								 | 
							
								                                met.Nav_FilesOfficialseal = null;
							 | 
						|||
| 
								 | 
							
								                                met.Nav_FilesRecord = null;
							 | 
						|||
| 
								 | 
							
								                                sendNotices.Add(NotificationTaskService.InsertUserNoticeTaskModel("年度作业计划讨论会", met.ID, filter.GetOrgId(), userInfo.ID, userInfo.NAME, DateTime.Now, DateTime.Now.AddDays(30), (int)FMNoticeTypeEnum.消息, "SC032"));
							 | 
						|||
| 
								 | 
							
								                                sendNotices.Add(NotificationTaskService.InsertUserNoticeTaskModel("请编制下年度作业计划并召开年度作业计划讨论会。", met.ID, filter.GetOrgId(), userInfo.ID, userInfo.NAME, DateTime.Now, DateTime.Now.AddDays(30), (int)FMNoticeTypeEnum.今日提醒, "PF135"));
							 | 
						|||
| 
								 | 
							
								                            }
							 | 
						|||
| 
								 | 
							
								                        }
							 | 
						|||
| 
								 | 
							
								                    }
							 | 
						|||
| 
								 | 
							
								                    UnifiedCommit(() =>
							 | 
						|||
| 
								 | 
							
								                    {
							 | 
						|||
| 
								 | 
							
								                        if (met != null)
							 | 
						|||
| 
								 | 
							
								                            UpdateEntityNoCommit(met);
							 | 
						|||
| 
								 | 
							
								                        if (sendNotices != null && sendNotices.Any())
							 | 
						|||
| 
								 | 
							
								                            BantchSaveEntityNoCommit(sendNotices);
							 | 
						|||
| 
								 | 
							
								                    });
							 | 
						|||
| 
								 | 
							
								                }
							 | 
						|||
| 
								 | 
							
								                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("MonthProductionPlanSync")]
							 | 
						|||
| 
								 | 
							
								        public JsonActionResult<bool> MonthProductionPlanSync([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;
							 | 
						|||
| 
								 | 
							
								                    bool isSend = false;
							 | 
						|||
| 
								 | 
							
								                    T_FM_NOTIFICATION_TASK sendNotice = null;
							 | 
						|||
| 
								 | 
							
								                    var newFilter = new BaseFilter(filter.OrgId);
							 | 
						|||
| 
								 | 
							
								                    newFilter.SelectField = new List<string> { "PLANCHECKFREQUENCY", "MONTH", "DATA", "WEEKDATA", "RUNSETTIME", "USER_ID", "Nav_User" };
							 | 
						|||
| 
								 | 
							
								                    var timeSet = GetEntity<T_PT_TIME_SET>(i => i.SET_TYPE == PTSetTypeEnum.MonthProductionPlan && i.ENABLE_STATUS == 0, newFilter);
							 | 
						|||
| 
								 | 
							
								                    if (timeSet != null)
							 | 
						|||
| 
								 | 
							
								                    {
							 | 
						|||
| 
								 | 
							
								                        switch (timeSet.PLANCHECKFREQUENCY)
							 | 
						|||
| 
								 | 
							
								                        {
							 | 
						|||
| 
								 | 
							
								                            //case BSPLANCHECKFREQUENCYEnum.OneTime:
							 | 
						|||
| 
								 | 
							
								                            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)
							 | 
						|||
| 
								 | 
							
								                    {
							 | 
						|||
| 
								 | 
							
								                        //newFilter.SelectField = new List<string> { "USER_ID" };
							 | 
						|||
| 
								 | 
							
								                        //var userInfo = this.GetEntity<T_FM_PARAM_SET>(t => t.NAME == "企管部负责人", newFilter, "Nav_User");
							 | 
						|||
| 
								 | 
							
								                        if (timeSet.POST_ID != null)
							 | 
						|||
| 
								 | 
							
								                        {
							 | 
						|||
| 
								 | 
							
								                            var userInfo = this.GetEntity<T_FM_USER>(t => t.Nav_Person != null && t.Nav_Person.POST_ID == timeSet.POST_ID && t.DEPARTMENT_ID == timeSet.DEPARTMENT_ID);
							 | 
						|||
| 
								 | 
							
								                            if (userInfo != null)
							 | 
						|||
| 
								 | 
							
								                            {
							 | 
						|||
| 
								 | 
							
								                                sendNotice = NotificationTaskService.InsertUserNoticeTaskModel("请上传下月度生产作业计划至文件库。", Guid.NewGuid(), filter.GetOrgId(), userInfo.ID, userInfo.NAME, DateTime.Now, DateTime.Now.AddDays(30), (int)FMNoticeTypeEnum.今日提醒, "PF135");
							 | 
						|||
| 
								 | 
							
								                            }
							 | 
						|||
| 
								 | 
							
								                        }
							 | 
						|||
| 
								 | 
							
								                    }
							 | 
						|||
| 
								 | 
							
								                    UnifiedCommit(() =>
							 | 
						|||
| 
								 | 
							
								                    {
							 | 
						|||
| 
								 | 
							
								                        if (sendNotice != null)
							 | 
						|||
| 
								 | 
							
								                            UpdateEntityNoCommit(sendNotice);
							 | 
						|||
| 
								 | 
							
								                    });
							 | 
						|||
| 
								 | 
							
								                }
							 | 
						|||
| 
								 | 
							
								                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("MapProcessSync")]
							 | 
						|||
| 
								 | 
							
								        public JsonActionResult<bool> MapProcessSync([FromBody] KeywordFilter filter)
							 | 
						|||
| 
								 | 
							
								        {
							 | 
						|||
| 
								 | 
							
								            return SafeExecute<bool>(() =>
							 | 
						|||
| 
								 | 
							
								            {
							 | 
						|||
| 
								 | 
							
								                try
							 | 
						|||
| 
								 | 
							
								                {
							 | 
						|||
| 
								 | 
							
								                    var dtNow = DateTime.Now;
							 | 
						|||
| 
								 | 
							
								                    List<T_FM_NOTIFICATION_TASK> sendNotices = new List<T_FM_NOTIFICATION_TASK>();
							 | 
						|||
| 
								 | 
							
								                    var newFilter = new BaseFilter(filter.OrgId);
							 | 
						|||
| 
								 | 
							
								                    newFilter.SelectField = new List<string> { "DEPARTMENT_ID", "TIME", "IS_RUN" };
							 | 
						|||
| 
								 | 
							
								                    var records = GetEntities<T_PR_MAP_PROCESS_RECORD>(i => i.TIME.Value.Month == dtNow.AddMonths(6).Month && i.IS_RUN == DisableStatusEnum.否, newFilter);
							 | 
						|||
| 
								 | 
							
								                    if (records != null && records.Any())
							 | 
						|||
| 
								 | 
							
								                    {
							 | 
						|||
| 
								 | 
							
								                        var departmentIds = records.Select(i => i.DEPARTMENT_ID).Distinct().ToList();
							 | 
						|||
| 
								 | 
							
								                        newFilter.SelectField = new List<string> { "ID", "USER_ID" };
							 | 
						|||
| 
								 | 
							
								                        var userInfos = GetEntities<T_FM_DEPARTMENT>(i => departmentIds.Contains(i.ID) && i.USER_ID.HasValue, newFilter, "Nav_User");
							 | 
						|||
| 
								 | 
							
								                        foreach (var item in records)
							 | 
						|||
| 
								 | 
							
								                        {
							 | 
						|||
| 
								 | 
							
								                            var userInfo = userInfos.FirstOrDefault(t => t.ID == item.DEPARTMENT_ID);
							 | 
						|||
| 
								 | 
							
								                            if (userInfo != null)
							 | 
						|||
| 
								 | 
							
								                            {
							 | 
						|||
| 
								 | 
							
								                                item.IS_RUN = DisableStatusEnum.是;
							 | 
						|||
| 
								 | 
							
								                                sendNotices.Add(NotificationTaskService.InsertUserNoticeTaskModel("请上传水文地质勘察报告。\n 请上传排土场检测报告或安全评价报告。", item.ID, filter.GetOrgId(), userInfo.USER_ID.Value, userInfo.Nav_User.NAME, DateTime.Now, DateTime.Now.AddDays(30), (int)FMNoticeTypeEnum.今日提醒, "PF135"));
							 | 
						|||
| 
								 | 
							
								                            }
							 | 
						|||
| 
								 | 
							
								                        }
							 | 
						|||
| 
								 | 
							
								                    }
							 | 
						|||
| 
								 | 
							
								                    UnifiedCommit(() =>
							 | 
						|||
| 
								 | 
							
								                    {
							 | 
						|||
| 
								 | 
							
								                        if (records != null && records.Any())
							 | 
						|||
| 
								 | 
							
								                            BantchSaveEntityNoCommit(records);
							 | 
						|||
| 
								 | 
							
								                        if (sendNotices != null && sendNotices.Any())
							 | 
						|||
| 
								 | 
							
								                            BantchSaveEntityNoCommit(sendNotices);
							 | 
						|||
| 
								 | 
							
								                    });
							 | 
						|||
| 
								 | 
							
								                }
							 | 
						|||
| 
								 | 
							
								                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("ProductionSync")]
							 | 
						|||
| 
								 | 
							
								        public JsonActionResult<bool> ProductionSync([FromBody] KeywordFilter filter)
							 | 
						|||
| 
								 | 
							
								        {
							 | 
						|||
| 
								 | 
							
								            return SafeExecute<bool>(() =>
							 | 
						|||
| 
								 | 
							
								            {
							 | 
						|||
| 
								 | 
							
								                try
							 | 
						|||
| 
								 | 
							
								                {
							 | 
						|||
| 
								 | 
							
								                    var dtNow = DateTime.Now;
							 | 
						|||
| 
								 | 
							
								                    var schedulingInfos = new List<T_FM_DEPARTMENT_SCHEDULING>();
							 | 
						|||
| 
								 | 
							
								                    var records = new List<T_PR_PRODUCTION_OPERATION_RECORD>();
							 | 
						|||
| 
								 | 
							
								                    var sendNotices = new List<T_FM_NOTIFICATION_TASK>();
							 | 
						|||
| 
								 | 
							
								                    var newFilter = new BaseFilter(filter.OrgId);
							 | 
						|||
| 
								 | 
							
								                    newFilter.SelectField = new List<string> { "DEPARTMENT_ID", "OPERATION_STEP_ID" };
							 | 
						|||
| 
								 | 
							
								                    var departmentStepLink = GetEntities<T_PR_DEPARTMENT_STEP_LINK>(i => true, newFilter);
							 | 
						|||
| 
								 | 
							
								                    if (departmentStepLink != null && departmentStepLink.Any())
							 | 
						|||
| 
								 | 
							
								                    {
							 | 
						|||
| 
								 | 
							
								                        var departmentIds = departmentStepLink.Select(i => i.DEPARTMENT_ID).Distinct().ToList();
							 | 
						|||
| 
								 | 
							
								                        newFilter.SelectField = new List<string> { "ID", "NAME", "USER_ID" };
							 | 
						|||
| 
								 | 
							
								                        var departInfos = GetEntities<T_FM_DEPARTMENT>(i => departmentIds.Contains(i.ID), newFilter);
							 | 
						|||
| 
								 | 
							
								                        newFilter.SelectField = new List<string> { "ID", "NAME", "DEPARTMENT_ID" };
							 | 
						|||
| 
								 | 
							
								                        var teamInfos = GetEntities<T_FM_TEAM>(i => departmentIds.Contains(i.DEPARTMENT_ID), newFilter);
							 | 
						|||
| 
								 | 
							
								                        if (teamInfos != null && teamInfos.Any())
							 | 
						|||
| 
								 | 
							
								                        {
							 | 
						|||
| 
								 | 
							
								                            var teamIds = teamInfos.Select(i => i.ID).ToList();
							 | 
						|||
| 
								 | 
							
								                            //newFilter.SelectField = new List<string> { "ID","DATE_TIME", "TEAM_ID", "START_TIME", "END_TIME" };
							 | 
						|||
| 
								 | 
							
								                            schedulingInfos = GetEntities<T_FM_DEPARTMENT_SCHEDULING>(i => i.TEAM_ID.HasValue && teamIds.Contains(i.TEAM_ID.Value) && i.DATE_TIME == dtNow.Date && i.IS_RUN == FMTureOrFalse.否 && i.END_TIME.Hour == dtNow.AddHours(1).Hour, new BaseFilter(filter.OrgId)).ToList();
							 | 
						|||
| 
								 | 
							
								                            if (schedulingInfos != null && schedulingInfos.Any())
							 | 
						|||
| 
								 | 
							
								                            {
							 | 
						|||
| 
								 | 
							
								                                var chargeIds = departInfos.Where(t => t.USER_ID != null).Select(i => i.USER_ID).Distinct().ToList();
							 | 
						|||
| 
								 | 
							
								                                newFilter.SelectField = new List<string> { "NAME", "ID" };
							 | 
						|||
| 
								 | 
							
								                                var userInfos = GetEntities<T_FM_USER>(i => chargeIds.Contains(i.ID) && i.ENABLE_STATUS == 0, newFilter);
							 | 
						|||
| 
								 | 
							
								                                foreach (var item in schedulingInfos)
							 | 
						|||
| 
								 | 
							
								                                {
							 | 
						|||
| 
								 | 
							
								                                    var teamInfo = teamInfos.FirstOrDefault(t => t.ID == item.TEAM_ID);
							 | 
						|||
| 
								 | 
							
								                                    var departInfo = departInfos.FirstOrDefault(t => t.ID == teamInfo?.DEPARTMENT_ID);
							 | 
						|||
| 
								 | 
							
								                                    var userInfo = userInfos.FirstOrDefault(t => t.ID == departInfo?.USER_ID);
							 | 
						|||
| 
								 | 
							
								                                    if (userInfo != null)
							 | 
						|||
| 
								 | 
							
								                                    {
							 | 
						|||
| 
								 | 
							
								                                        item.IS_RUN = FMTureOrFalse.是;
							 | 
						|||
| 
								 | 
							
								                                        var links = departmentStepLink.Where(t => t.DEPARTMENT_ID == teamInfo?.DEPARTMENT_ID).ToList();
							 | 
						|||
| 
								 | 
							
								                                        if (links != null && links.Any())
							 | 
						|||
| 
								 | 
							
								                                        {
							 | 
						|||
| 
								 | 
							
								                                            links.ForEach(t =>
							 | 
						|||
| 
								 | 
							
								                                            {
							 | 
						|||
| 
								 | 
							
								                                                T_PR_PRODUCTION_OPERATION_RECORD record = new T_PR_PRODUCTION_OPERATION_RECORD();
							 | 
						|||
| 
								 | 
							
								                                                record.ORG_ID = t.ORG_ID;
							 | 
						|||
| 
								 | 
							
								                                                record.OPERATION_STEP_ID = t.OPERATION_STEP_ID;
							 | 
						|||
| 
								 | 
							
								                                            //record.TIME = DateTime.Now;
							 | 
						|||
| 
								 | 
							
								                                            record.USER_ID = userInfo.ID;
							 | 
						|||
| 
								 | 
							
								                                                record.STATUS = PFStandardStatus.Draft;
							 | 
						|||
| 
								 | 
							
								                                                records.Add(record);
							 | 
						|||
| 
								 | 
							
								                                                sendNotices.Add(NotificationTaskService.InsertUserNoticeTaskModel("生产运行记录表", record.ID, filter.OrgId, userInfo.ID, userInfo.NAME, DateTime.Now, item.END_TIME.AddHours(1), (int)FMNoticeTypeEnum.消息, "PR019"));
							 | 
						|||
| 
								 | 
							
								                                            });
							 | 
						|||
| 
								 | 
							
								                                        }
							 | 
						|||
| 
								 | 
							
								                                    }
							 | 
						|||
| 
								 | 
							
								                                }
							 | 
						|||
| 
								 | 
							
								                            }
							 | 
						|||
| 
								 | 
							
								                        }
							 | 
						|||
| 
								 | 
							
								                    }
							 | 
						|||
| 
								 | 
							
								                    UnifiedCommit(() =>
							 | 
						|||
| 
								 | 
							
								                    {
							 | 
						|||
| 
								 | 
							
								                        if (schedulingInfos != null && schedulingInfos.Any())
							 | 
						|||
| 
								 | 
							
								                            BantchSaveEntityNoCommit(schedulingInfos);
							 | 
						|||
| 
								 | 
							
								                        if (records != null && records.Any())
							 | 
						|||
| 
								 | 
							
								                            BantchSaveEntityNoCommit(records);
							 | 
						|||
| 
								 | 
							
								                        if (sendNotices != null && sendNotices.Any())
							 | 
						|||
| 
								 | 
							
								                            BantchSaveEntityNoCommit(sendNotices);
							 | 
						|||
| 
								 | 
							
								                    });
							 | 
						|||
| 
								 | 
							
								                }
							 | 
						|||
| 
								 | 
							
								                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("ProductionRecordSync")]
							 | 
						|||
| 
								 | 
							
								        public JsonActionResult<bool> ProductionRecordSync([FromBody] KeywordFilter filter)
							 | 
						|||
| 
								 | 
							
								        {
							 | 
						|||
| 
								 | 
							
								            return SafeExecute<bool>(() =>
							 | 
						|||
| 
								 | 
							
								            {
							 | 
						|||
| 
								 | 
							
								                try
							 | 
						|||
| 
								 | 
							
								                {
							 | 
						|||
| 
								 | 
							
								                    var dtNow = DateTime.Now;
							 | 
						|||
| 
								 | 
							
								                    var schedulingInfos = new List<T_FM_DEPARTMENT_SCHEDULING>();
							 | 
						|||
| 
								 | 
							
								                    var sendNotices = new List<T_FM_NOTIFICATION_TASK>();
							 | 
						|||
| 
								 | 
							
								                    var expRecords = new List<T_PR_EXPERIMENTAL_OPERATION_RECORD>();
							 | 
						|||
| 
								 | 
							
								                    var labRecords = new List<T_PR_LABORATORY_OPERATION_RECORD>();
							 | 
						|||
| 
								 | 
							
								                    var dutyRecords = new List<T_PR_DUTY_OPERATION_RECORD>();
							 | 
						|||
| 
								 | 
							
								                    var tunRecords = new List<T_PR_TUNGPRE_OPERATION_RECORD>();
							 | 
						|||
| 
								 | 
							
								                    var conRecords = new List<T_PR_CONTROLROOM_OPERATION_RECORD>();
							 | 
						|||
| 
								 | 
							
								                    var sanRecords = new List<T_PR_SANDPUMP_OPERATION_RECORD>();
							 | 
						|||
| 
								 | 
							
								                    var thoRecords = new List<T_PR_THOUSANDPUMP_OPERATION_RECORD>();
							 | 
						|||
| 
								 | 
							
								                    var newFilter = new BaseFilter(filter.OrgId);
							 | 
						|||
| 
								 | 
							
								                    newFilter.SelectField = new List<string> { "DEPARTMENT_ID", "TEAM_ID" };
							 | 
						|||
| 
								 | 
							
								                    schedulingInfos = GetEntities<T_FM_DEPARTMENT_SCHEDULING>(i => i.DATE_TIME == dtNow.Date && i.END_TIME.Hour == dtNow.AddHours(1).Hour, new BaseFilter(filter.OrgId)).ToList();//&& i.START_TIME.Hour == dtNow.AddHours(1).Hour 
							 | 
						|||
| 
								 | 
							
								                    if (schedulingInfos != null && schedulingInfos.Any())
							 | 
						|||
| 
								 | 
							
								                    {
							 | 
						|||
| 
								 | 
							
								                        var teamIds = schedulingInfos.Select(i => i.TEAM_ID).Distinct().ToList();
							 | 
						|||
| 
								 | 
							
								                        newFilter.SelectField = new List<string> { "DEPARTMENT_ID" };
							 | 
						|||
| 
								 | 
							
								                        var teamInfos = GetEntities<T_FM_TEAM>(i => teamIds.Contains(i.ID), newFilter);
							 | 
						|||
| 
								 | 
							
								                        var departmentIds = teamInfos.Select(i => i.DEPARTMENT_ID).Distinct().ToList();
							 | 
						|||
| 
								 | 
							
								                        var allDepartInfos = GetEntities<T_FM_DEPARTMENT>(i => i.ENABLE_STATUS == 0 && i.USER_ID != null, new BaseFilter(filter.OrgId), "Nav_User");
							 | 
						|||
| 
								 | 
							
								                        var departInfos = allDepartInfos.Where(i => departmentIds.Contains(i.ID) && i.USER_ID != null).ToList();
							 | 
						|||
| 
								 | 
							
								                        if (departInfos != null && departInfos.Any())
							 | 
						|||
| 
								 | 
							
								                        {
							 | 
						|||
| 
								 | 
							
								                            var userIds = departInfos.Select(i => i.USER_ID).ToList();
							 | 
						|||
| 
								 | 
							
								                            //newFilter.SelectField = new List<string> { "NAME", "ID", "PERSON_ID" };
							 | 
						|||
| 
								 | 
							
								                            var userInfos = GetEntities<T_FM_USER>(i => userIds.Contains(i.ID) && i.ENABLE_STATUS == 0, new BaseFilter(filter.OrgId), "Nav_Person").ToList();
							 | 
						|||
| 
								 | 
							
								                            if (userInfos != null && userInfos.Any())
							 | 
						|||
| 
								 | 
							
								                            {
							 | 
						|||
| 
								 | 
							
								                                var postIds = userInfos.Where(t => t.Nav_Person != null).Select(m => m.Nav_Person.POST_ID).Distinct().ToList();
							 | 
						|||
| 
								 | 
							
								                                //newFilter.SelectField = new List<string> { "ID", "POST_ID" };
							 | 
						|||
| 
								 | 
							
								                                var postFormLinks = GetEntities<T_PR_POST_FORM_LINK>(i => postIds.Contains(i.POST_ID), new BaseFilter(filter.OrgId), "Nav_Codes", "Nav_Departments").ToList();
							 | 
						|||
| 
								 | 
							
								                                if (postFormLinks != null && postFormLinks.Any())
							 | 
						|||
| 
								 | 
							
								                                {
							 | 
						|||
| 
								 | 
							
								                                    foreach (var item in postFormLinks)
							 | 
						|||
| 
								 | 
							
								                                    {
							 | 
						|||
| 
								 | 
							
								                                        if (item.Nav_Codes != null && item.Nav_Codes.Any())
							 | 
						|||
| 
								 | 
							
								                                        {
							 | 
						|||
| 
								 | 
							
								                                            foreach (var code in item.Nav_Codes)
							 | 
						|||
| 
								 | 
							
								                                            {
							 | 
						|||
| 
								 | 
							
								                                                var name = ""; var recordId = Guid.NewGuid();
							 | 
						|||
| 
								 | 
							
								                                                switch (code.CODE)
							 | 
						|||
| 
								 | 
							
								                                                {
							 | 
						|||
| 
								 | 
							
								                                                    case "PR056":
							 | 
						|||
| 
								 | 
							
								                                                        name = "实验运行记录";
							 | 
						|||
| 
								 | 
							
								                                                        T_PR_EXPERIMENTAL_OPERATION_RECORD record = new T_PR_EXPERIMENTAL_OPERATION_RECORD();
							 | 
						|||
| 
								 | 
							
								                                                        record.CODE = DateTime.Now.Year.ToString().PadLeft(4, '0') + DateTime.Now.Month.ToString().PadLeft(2, '0') + DateTime.Now.Day.ToString().PadLeft(2, '0') + new Random().Next().ToString();
							 | 
						|||
| 
								 | 
							
								                                                        record.ORG_ID = code.ORG_ID;
							 | 
						|||
| 
								 | 
							
								                                                        recordId = record.ID;
							 | 
						|||
| 
								 | 
							
								                                                        expRecords.Add(record);
							 | 
						|||
| 
								 | 
							
								                                                        break;
							 | 
						|||
| 
								 | 
							
								                                                    case "PR058":
							 | 
						|||
| 
								 | 
							
								                                                        name = "化验运行记录";
							 | 
						|||
| 
								 | 
							
								                                                        T_PR_LABORATORY_OPERATION_RECORD record2 = new T_PR_LABORATORY_OPERATION_RECORD();
							 | 
						|||
| 
								 | 
							
								                                                        record2.ORG_ID = code.ORG_ID;
							 | 
						|||
| 
								 | 
							
								                                                        recordId = record2.ID;
							 | 
						|||
| 
								 | 
							
								                                                        labRecords.Add(record2);
							 | 
						|||
| 
								 | 
							
								                                                        break;
							 | 
						|||
| 
								 | 
							
								                                                    case "PR060":
							 | 
						|||
| 
								 | 
							
								                                                        name = "选矿一部值班运行记录";
							 | 
						|||
| 
								 | 
							
								                                                        T_PR_DUTY_OPERATION_RECORD record3 = new T_PR_DUTY_OPERATION_RECORD();
							 | 
						|||
| 
								 | 
							
								                                                        record3.ORG_ID = code.ORG_ID;
							 | 
						|||
| 
								 | 
							
								                                                        recordId = record3.ID;
							 | 
						|||
| 
								 | 
							
								                                                        dutyRecords.Add(record3);
							 | 
						|||
| 
								 | 
							
								                                                        break;
							 | 
						|||
| 
								 | 
							
								                                                    case "PR062":
							 | 
						|||
| 
								 | 
							
								                                                        name = "钨预选运行记录";
							 | 
						|||
| 
								 | 
							
								                                                        T_PR_TUNGPRE_OPERATION_RECORD record4 = new T_PR_TUNGPRE_OPERATION_RECORD();
							 | 
						|||
| 
								 | 
							
								                                                        record4.ORG_ID = code.ORG_ID;
							 | 
						|||
| 
								 | 
							
								                                                        recordId = record4.ID;
							 | 
						|||
| 
								 | 
							
								                                                        tunRecords.Add(record4);
							 | 
						|||
| 
								 | 
							
								                                                        break;
							 | 
						|||
| 
								 | 
							
								                                                    case "PR064":
							 | 
						|||
| 
								 | 
							
								                                                        name = "控制室运行记录";
							 | 
						|||
| 
								 | 
							
								                                                        T_PR_CONTROLROOM_OPERATION_RECORD record5 = new T_PR_CONTROLROOM_OPERATION_RECORD();
							 | 
						|||
| 
								 | 
							
								                                                        record5.ORG_ID = code.ORG_ID;
							 | 
						|||
| 
								 | 
							
								                                                        recordId = record5.ID;
							 | 
						|||
| 
								 | 
							
								                                                        conRecords.Add(record5);
							 | 
						|||
| 
								 | 
							
								                                                        break;
							 | 
						|||
| 
								 | 
							
								                                                    case "PR066":
							 | 
						|||
| 
								 | 
							
								                                                        name = "尾砂泵运行记录";
							 | 
						|||
| 
								 | 
							
								                                                        T_PR_SANDPUMP_OPERATION_RECORD record6 = new T_PR_SANDPUMP_OPERATION_RECORD();
							 | 
						|||
| 
								 | 
							
								                                                        record6.ORG_ID = code.ORG_ID;
							 | 
						|||
| 
								 | 
							
								                                                        recordId = record6.ID;
							 | 
						|||
| 
								 | 
							
								                                                        sanRecords.Add(record6);
							 | 
						|||
| 
								 | 
							
								                                                        break;
							 | 
						|||
| 
								 | 
							
								                                                    case "PR068":
							 | 
						|||
| 
								 | 
							
								                                                        name = "万吨砂泵运行记录";
							 | 
						|||
| 
								 | 
							
								                                                        T_PR_THOUSANDPUMP_OPERATION_RECORD record7 = new T_PR_THOUSANDPUMP_OPERATION_RECORD();
							 | 
						|||
| 
								 | 
							
								                                                        record7.ORG_ID = code.ORG_ID;
							 | 
						|||
| 
								 | 
							
								                                                        recordId = record7.ID;
							 | 
						|||
| 
								 | 
							
								                                                        thoRecords.Add(record7);
							 | 
						|||
| 
								 | 
							
								                                                        break;
							 | 
						|||
| 
								 | 
							
								                                                    default:
							 | 
						|||
| 
								 | 
							
								                                                        break;
							 | 
						|||
| 
								 | 
							
								                                                }
							 | 
						|||
| 
								 | 
							
								                                                if (item.Nav_Departments != null && item.Nav_Departments.Any())
							 | 
						|||
| 
								 | 
							
								                                                {
							 | 
						|||
| 
								 | 
							
								                                                    var departIds = item.Nav_Departments.Select(t => t.DEPARTMENT_ID).Distinct().ToList();
							 | 
						|||
| 
								 | 
							
								                                                    var sendUserIds = allDepartInfos.Where(t => departIds.Contains(t.ID) && t.USER_ID != null).ToList();
							 | 
						|||
| 
								 | 
							
								                                                    if (sendUserIds != null && sendUserIds.Any())
							 | 
						|||
| 
								 | 
							
								                                                    {
							 | 
						|||
| 
								 | 
							
								                                                        sendUserIds.ForEach(t =>
							 | 
						|||
| 
								 | 
							
								                                                        {
							 | 
						|||
| 
								 | 
							
								                                                            sendNotices.Add(NotificationTaskService.InsertUserNoticeTaskModel(name, recordId, filter.OrgId, t.USER_ID.Value, t.Nav_User.NAME, DateTime.Now, DateTime.Now.AddHours(1), (int)FMNoticeTypeEnum.消息, code.CODE));
							 | 
						|||
| 
								 | 
							
								                                                        });
							 | 
						|||
| 
								 | 
							
								                                                    }
							 | 
						|||
| 
								 | 
							
								                                                }
							 | 
						|||
| 
								 | 
							
								                                            }
							 | 
						|||
| 
								 | 
							
								                                        }
							 | 
						|||
| 
								 | 
							
								                                    }
							 | 
						|||
| 
								 | 
							
								                                }
							 | 
						|||
| 
								 | 
							
								                            }
							 | 
						|||
| 
								 | 
							
								                        }
							 | 
						|||
| 
								 | 
							
								                    }
							 | 
						|||
| 
								 | 
							
								                    UnifiedCommit(() =>
							 | 
						|||
| 
								 | 
							
								                    {
							 | 
						|||
| 
								 | 
							
								                    //if (schedulingInfos != null && schedulingInfos.Any())
							 | 
						|||
| 
								 | 
							
								                    //    BantchSaveEntityNoCommit(schedulingInfos);
							 | 
						|||
| 
								 | 
							
								                    if (sendNotices != null && sendNotices.Any())
							 | 
						|||
| 
								 | 
							
								                            BantchSaveEntityNoCommit(sendNotices);
							 | 
						|||
| 
								 | 
							
								                        if (expRecords != null && expRecords.Any())
							 | 
						|||
| 
								 | 
							
								                            BantchSaveEntityNoCommit(expRecords);
							 | 
						|||
| 
								 | 
							
								                        if (labRecords != null && labRecords.Any())
							 | 
						|||
| 
								 | 
							
								                            BantchSaveEntityNoCommit(labRecords);
							 | 
						|||
| 
								 | 
							
								                        if (dutyRecords != null && dutyRecords.Any())
							 | 
						|||
| 
								 | 
							
								                            BantchSaveEntityNoCommit(dutyRecords);
							 | 
						|||
| 
								 | 
							
								                        if (tunRecords != null && tunRecords.Any())
							 | 
						|||
| 
								 | 
							
								                            BantchSaveEntityNoCommit(tunRecords);
							 | 
						|||
| 
								 | 
							
								                        if (conRecords != null && conRecords.Any())
							 | 
						|||
| 
								 | 
							
								                            BantchSaveEntityNoCommit(conRecords);
							 | 
						|||
| 
								 | 
							
								                        if (sanRecords != null && sanRecords.Any())
							 | 
						|||
| 
								 | 
							
								                            BantchSaveEntityNoCommit(sanRecords);
							 | 
						|||
| 
								 | 
							
								                        if (thoRecords != null && thoRecords.Any())
							 | 
						|||
| 
								 | 
							
								                            BantchSaveEntityNoCommit(thoRecords);
							 | 
						|||
| 
								 | 
							
								                    });
							 | 
						|||
| 
								 | 
							
								                }
							 | 
						|||
| 
								 | 
							
								                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="orgId"></param>
							 | 
						|||
| 
								 | 
							
								        /// <param name="listDepIDInt"></param>
							 | 
						|||
| 
								 | 
							
								        /// <param name="departmentIdPs"></param>
							 | 
						|||
| 
								 | 
							
								        public void GetParentDepartmentIds(Guid orgId, List<Guid> listDepIDInt, ref List<Guid> departmentIdPs)
							 | 
						|||
| 
								 | 
							
								        {
							 | 
						|||
| 
								 | 
							
								            var listDep = GetEntities<T_FM_DEPARTMENT>(e => !e.IS_DELETED && listDepIDInt.Contains(e.ID), new BaseFilter(orgId));
							 | 
						|||
| 
								 | 
							
								            if (listDep != null && listDep.Any())
							 | 
						|||
| 
								 | 
							
								            {
							 | 
						|||
| 
								 | 
							
								                listDepIDInt = listDep.Where(t => t.PARENT_ID.HasValue).Select(e => e.PARENT_ID.Value).ToList();
							 | 
						|||
| 
								 | 
							
								                departmentIdPs.AddRange(listDepIDInt);
							 | 
						|||
| 
								 | 
							
								                GetParentDepartmentIds(orgId, listDepIDInt, ref departmentIdPs);
							 | 
						|||
| 
								 | 
							
								            }
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								        ///// <summary>
							 | 
						|||
| 
								 | 
							
								        ///// 触发生产运行记录表(选矿)
							 | 
						|||
| 
								 | 
							
								        ///// </summary>
							 | 
						|||
| 
								 | 
							
								        ///// <returns></returns>
							 | 
						|||
| 
								 | 
							
								        //[HttpPost, Route("ProductionRecordNewSync")]
							 | 
						|||
| 
								 | 
							
								        //public JsonActionResult<bool> ProductionRecordNewSync([FromBody] KeywordFilter filter)
							 | 
						|||
| 
								 | 
							
								        //{
							 | 
						|||
| 
								 | 
							
								        //    return SafeExecute<bool>(() =>
							 | 
						|||
| 
								 | 
							
								        //    {
							 | 
						|||
| 
								 | 
							
								        //        try
							 | 
						|||
| 
								 | 
							
								        //        {
							 | 
						|||
| 
								 | 
							
								        //            var dtNow = DateTime.Now;
							 | 
						|||
| 
								 | 
							
								        //            var schedulingInfos = new List<T_FM_DEPARTMENT_SCHEDULING>();
							 | 
						|||
| 
								 | 
							
								        //            var processInfos = new List<T_PR_PROCESS_FORM_XK>();
							 | 
						|||
| 
								 | 
							
								        //            var processDetailInfos = new List<T_PR_PROCESS_FORM_XK_DETAIL>();
							 | 
						|||
| 
								 | 
							
								        //            var sendNotices = new List<T_FM_NOTIFICATION_TASK>();
							 | 
						|||
| 
								 | 
							
								        //            var newFilter = new BaseFilter(filter.OrgId);
							 | 
						|||
| 
								 | 
							
								        //            newFilter.SelectField = new List<string> { "DEPARTMENT_ID", "TEAM_ID", "CLASS_ID", "Nav_Class" };
							 | 
						|||
| 
								 | 
							
								        //            schedulingInfos = GetEntities<T_FM_DEPARTMENT_SCHEDULING>(i => i.DATE_TIME == dtNow.Date && i.START_TIME.Hour == dtNow.AddHours(1).Hour, newFilter).ToList();//&& i.START_TIME.Hour <= dtNow.Hour && dtNow.Hour <= i.END_TIME.Hour
							 | 
						|||
| 
								 | 
							
								        //            if (schedulingInfos != null && schedulingInfos.Any())
							 | 
						|||
| 
								 | 
							
								        //            {
							 | 
						|||
| 
								 | 
							
								        //                var teamIds = schedulingInfos.Select(i => i.TEAM_ID).Distinct().ToList();
							 | 
						|||
| 
								 | 
							
								        //                newFilter.SelectField = new List<string> { "DEPARTMENT_ID" };
							 | 
						|||
| 
								 | 
							
								        //                var teamInfos = GetEntities<T_FM_TEAM>(i => teamIds.Contains(i.ID), newFilter);
							 | 
						|||
| 
								 | 
							
								        //                var departmentIds = teamInfos.Select(i => (Guid)i.DEPARTMENT_ID).Distinct().ToList();
							 | 
						|||
| 
								 | 
							
								        //                //取部门下的所有车间
							 | 
						|||
| 
								 | 
							
								        //                List<Guid> departmentIdInts = new List<Guid>();
							 | 
						|||
| 
								 | 
							
								        //                departmentIdInts.AddRange(departmentIds);
							 | 
						|||
| 
								 | 
							
								        //                List<Guid> departmentIdOuts = new List<Guid>();
							 | 
						|||
| 
								 | 
							
								        //                GetParentDepartmentIds(filter.OrgId.Value, departmentIdInts.ToList(), ref departmentIdOuts);
							 | 
						|||
| 
								 | 
							
								        //                departmentIdOuts.AddRange(departmentIds);
							 | 
						|||
| 
								 | 
							
								        //                departmentIdOuts = departmentIdOuts.Distinct().ToList();
							 | 
						|||
| 
								 | 
							
								        //                var departInfos = GetEntities<T_FM_DEPARTMENT>(i => i.ENABLE_STATUS == 0 && departmentIds.Contains(i.ID), new BaseFilter(filter.OrgId), "Nav_User");
							 | 
						|||
| 
								 | 
							
								        //                if (departInfos != null && departInfos.Any())
							 | 
						|||
| 
								 | 
							
								        //                {
							 | 
						|||
| 
								 | 
							
								        //                    var userInfos = GetEntities<T_FM_USER>(i => departmentIdOuts.Contains((Guid)i.DEPARTMENT_ID) && i.ENABLE_STATUS == 0, new BaseFilter(filter.OrgId), "Nav_Person").ToList();
							 | 
						|||
| 
								 | 
							
								        //                    if (userInfos != null && userInfos.Any())
							 | 
						|||
| 
								 | 
							
								        //                    {
							 | 
						|||
| 
								 | 
							
								        //                        var postIds = userInfos.Where(t => t.Nav_Person != null).Select(m => m.Nav_Person.POST_ID).Distinct().ToList();
							 | 
						|||
| 
								 | 
							
								        //                        var postFormLinks = GetEntities<T_PR_POST_FORM_LINK_XK>(i => postIds.Contains(i.POST_ID) && departmentIdOuts.Contains((Guid)i.DEPARTMENT_ID), new BaseFilter(filter.OrgId), "Nav_Params").ToList();
							 | 
						|||
| 
								 | 
							
								        //                        if (postFormLinks != null && postFormLinks.Any())
							 | 
						|||
| 
								 | 
							
								        //                        {
							 | 
						|||
| 
								 | 
							
								        //                            foreach (var item in postFormLinks)
							 | 
						|||
| 
								 | 
							
								        //                            {
							 | 
						|||
| 
								 | 
							
								        //                                var classTemp = teamInfos.FirstOrDefault(t => t.DEPARTMENT_ID == item.DEPARTMENT_ID);
							 | 
						|||
| 
								 | 
							
								        //                                var classData = schedulingInfos.FirstOrDefault(t => t.TEAM_ID == classTemp?.ID);
							 | 
						|||
| 
								 | 
							
								        //                                T_PR_PROCESS_FORM_XK process = new T_PR_PROCESS_FORM_XK();
							 | 
						|||
| 
								 | 
							
								        //                                process.POST_ID = item.POST_ID;
							 | 
						|||
| 
								 | 
							
								        //                                process.CODE = DateTime.Now.Year.ToString().PadLeft(4, '0') + DateTime.Now.Month.ToString().PadLeft(2, '0') + DateTime.Now.Day.ToString().PadLeft(2, '0') + new Random().Next().ToString();
							 | 
						|||
| 
								 | 
							
								        //                                process.NAME = item.NAME;
							 | 
						|||
| 
								 | 
							
								        //                                process.DEPARTMENT_ID = item.DEPARTMENT_ID;
							 | 
						|||
| 
								 | 
							
								        //                                process.ORG_ID = item.ORG_ID;
							 | 
						|||
| 
								 | 
							
								        //                                process.OPERATION_STEP_ID = item.OPERATION_STEP_ID;
							 | 
						|||
| 
								 | 
							
								        //                                process.CLASS = classData?.Nav_Class?.NAME;
							 | 
						|||
| 
								 | 
							
								        //                                processInfos.Add(process);
							 | 
						|||
| 
								 | 
							
								        //                                if (item.Nav_Params != null && item.Nav_Params.Any())
							 | 
						|||
| 
								 | 
							
								        //                                {
							 | 
						|||
| 
								 | 
							
								        //                                    foreach (var detail in item.Nav_Params)
							 | 
						|||
| 
								 | 
							
								        //                                    {
							 | 
						|||
| 
								 | 
							
								        //                                        T_PR_PROCESS_FORM_XK_DETAIL processDetail = new T_PR_PROCESS_FORM_XK_DETAIL();
							 | 
						|||
| 
								 | 
							
								        //                                        processDetail.POST_PROCESS_FORM_ID = process.ID;
							 | 
						|||
| 
								 | 
							
								        //                                        processDetail.ORG_ID = detail.ORG_ID;
							 | 
						|||
| 
								 | 
							
								        //                                        processDetail.NUM = detail.NUM;
							 | 
						|||
| 
								 | 
							
								        //                                        processDetail.NAME = detail.NAME;
							 | 
						|||
| 
								 | 
							
								        //                                        processDetail.PARAM = detail.PARAM;
							 | 
						|||
| 
								 | 
							
								        //                                        processDetail.UNIT = detail.UNIT;
							 | 
						|||
| 
								 | 
							
								        //                                        processDetailInfos.Add(processDetail);
							 | 
						|||
| 
								 | 
							
								        //                                    }
							 | 
						|||
| 
								 | 
							
								        //                                }
							 | 
						|||
| 
								 | 
							
								        //                                var user = userInfos.Where(t => t.DEPARTMENT_ID == item.DEPARTMENT_ID && t.Nav_Person != null && t.Nav_Person.POST_ID == item.POST_ID).ToList();
							 | 
						|||
| 
								 | 
							
								        //                                if (user != null && user.Any())
							 | 
						|||
| 
								 | 
							
								        //                                {
							 | 
						|||
| 
								 | 
							
								        //                                    var userIds = user.Select(t => t.ID).ToList();
							 | 
						|||
| 
								 | 
							
								        //                                    var userNames = user.Select(t => t.NAME).ToList();
							 | 
						|||
| 
								 | 
							
								        //                                    sendNotices.AddRange(NotificationTaskService.InsertUserNoticeTaskModels(item.NAME, process.ID, process.ORG_ID, userIds, userNames, DateTime.Now, DateTime.Now.AddHours(1), (int)FMNoticeTypeEnum.消息, "PR072"));
							 | 
						|||
| 
								 | 
							
								        //                                }
							 | 
						|||
| 
								 | 
							
								        //                            }
							 | 
						|||
| 
								 | 
							
								        //                        }
							 | 
						|||
| 
								 | 
							
								        //                    }
							 | 
						|||
| 
								 | 
							
								        //                }
							 | 
						|||
| 
								 | 
							
								        //            }
							 | 
						|||
| 
								 | 
							
								        //            UnifiedCommit(() =>
							 | 
						|||
| 
								 | 
							
								        //            {
							 | 
						|||
| 
								 | 
							
								        //                if (sendNotices != null && sendNotices.Any())
							 | 
						|||
| 
								 | 
							
								        //                    BantchSaveEntityNoCommit(sendNotices);
							 | 
						|||
| 
								 | 
							
								        //                if (processInfos != null && processInfos.Any())
							 | 
						|||
| 
								 | 
							
								        //                    BantchSaveEntityNoCommit(processInfos);
							 | 
						|||
| 
								 | 
							
								        //                if (processDetailInfos != null && processDetailInfos.Any())
							 | 
						|||
| 
								 | 
							
								        //                    BantchSaveEntityNoCommit(processDetailInfos);
							 | 
						|||
| 
								 | 
							
								        //            });
							 | 
						|||
| 
								 | 
							
								        //        }
							 | 
						|||
| 
								 | 
							
								        //        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("ProductionRecordNewSync")]
							 | 
						|||
| 
								 | 
							
								        public JsonActionResult<bool> ProductionRecordNewSync([FromBody] KeywordFilter filter)
							 | 
						|||
| 
								 | 
							
								        {
							 | 
						|||
| 
								 | 
							
								            return SafeExecute<bool>(() =>
							 | 
						|||
| 
								 | 
							
								            {
							 | 
						|||
| 
								 | 
							
								                try
							 | 
						|||
| 
								 | 
							
								                {
							 | 
						|||
| 
								 | 
							
								                    var dtNow = DateTime.Now;
							 | 
						|||
| 
								 | 
							
								                    if (filter.Parameter1 != null)
							 | 
						|||
| 
								 | 
							
								                    {
							 | 
						|||
| 
								 | 
							
								                        dtNow = DateTime.Parse(filter.Parameter1);
							 | 
						|||
| 
								 | 
							
								                    }
							 | 
						|||
| 
								 | 
							
								                    var schedulingInfos = new List<T_FM_DEPARTMENT_SCHEDULING>();
							 | 
						|||
| 
								 | 
							
								                    var processInfos = new List<T_PR_PROCESS_FORM_XK>();
							 | 
						|||
| 
								 | 
							
								                    var processDetailInfos = new List<T_PR_PROCESS_FORM_XK_DETAIL>();
							 | 
						|||
| 
								 | 
							
								                    var sendNotices = new List<T_FM_NOTIFICATION_TASK>();
							 | 
						|||
| 
								 | 
							
								                    var newFilter = new BaseFilter(filter.OrgId);
							 | 
						|||
| 
								 | 
							
								                    newFilter.SelectField = new List<string> { "DEPARTMENT_ID", "TEAM_ID", "CLASS_ID", "Nav_Class", "Nav_DepartmentSchedulingDetail.Nav_Person" };
							 | 
						|||
| 
								 | 
							
								                    schedulingInfos = GetEntities<T_FM_DEPARTMENT_SCHEDULING>(i => i.DATE_TIME == dtNow.Date && i.END_TIME.Hour == dtNow.AddHours(2).Hour, newFilter).ToList();//&& i.START_TIME.Hour <= dtNow.Hour && dtNow.Hour <= i.END_TIME.Hour
							 | 
						|||
| 
								 | 
							
								                    if (schedulingInfos != null && schedulingInfos.Any())
							 | 
						|||
| 
								 | 
							
								                    {
							 | 
						|||
| 
								 | 
							
								                        var teamIds = schedulingInfos.Select(i => i.TEAM_ID).Distinct().ToList();
							 | 
						|||
| 
								 | 
							
								                        newFilter.SelectField = new List<string> { "DEPARTMENT_ID","ID" };
							 | 
						|||
| 
								 | 
							
								                        var teamInfos = GetEntities<T_FM_TEAM>(i => teamIds.Contains(i.ID), newFilter);
							 | 
						|||
| 
								 | 
							
								                        var departmentIds = teamInfos.Select(i => (Guid)i.DEPARTMENT_ID).Distinct().ToList();
							 | 
						|||
| 
								 | 
							
								                        var personIds = new List<Guid>();
							 | 
						|||
| 
								 | 
							
								                        var personInfos = schedulingInfos.Where(m => m.Nav_DepartmentSchedulingDetail != null).Select(t=>t.Nav_DepartmentSchedulingDetail).ToList();
							 | 
						|||
| 
								 | 
							
								                        if (personInfos != null && personInfos.Any())
							 | 
						|||
| 
								 | 
							
								                        {
							 | 
						|||
| 
								 | 
							
								                            foreach (var item in personInfos)
							 | 
						|||
| 
								 | 
							
								                            {
							 | 
						|||
| 
								 | 
							
								                                var tempIds = item.Select(t => t.PERSON_ID).ToList();
							 | 
						|||
| 
								 | 
							
								                                personIds.AddRange(tempIds);
							 | 
						|||
| 
								 | 
							
								                            }
							 | 
						|||
| 
								 | 
							
								                        }
							 | 
						|||
| 
								 | 
							
								                        //取班组上的所有车间
							 | 
						|||
| 
								 | 
							
								                        List<Guid> departmentIdInts = new List<Guid>();
							 | 
						|||
| 
								 | 
							
								                        departmentIdInts.AddRange(departmentIds);
							 | 
						|||
| 
								 | 
							
								                        List<Guid> departmentIdOuts = new List<Guid>();
							 | 
						|||
| 
								 | 
							
								                        GetParentDepartmentIds(filter.OrgId.Value, departmentIdInts.ToList(), ref departmentIdOuts);
							 | 
						|||
| 
								 | 
							
								                        departmentIdOuts.AddRange(departmentIds);
							 | 
						|||
| 
								 | 
							
								                        departmentIdOuts = departmentIdOuts.Distinct().ToList();
							 | 
						|||
| 
								 | 
							
								                        var departInfos = GetEntities<T_FM_DEPARTMENT>(i => i.ENABLE_STATUS == 0 && departmentIds.Contains(i.ID), new BaseFilter(filter.OrgId), "Nav_User");
							 | 
						|||
| 
								 | 
							
								                        if (departInfos != null && departInfos.Any())
							 | 
						|||
| 
								 | 
							
								                        {
							 | 
						|||
| 
								 | 
							
								                            var userInfos = GetEntities<T_FM_USER>(i => departmentIdOuts.Contains((Guid)i.DEPARTMENT_ID) && i.PERSON_ID !=null && personIds.Contains((Guid)i.PERSON_ID) && i.ENABLE_STATUS == 0, new BaseFilter(filter.OrgId), "Nav_Person").ToList();
							 | 
						|||
| 
								 | 
							
								                            if (userInfos != null && userInfos.Any())
							 | 
						|||
| 
								 | 
							
								                            {
							 | 
						|||
| 
								 | 
							
								                                var postIds = userInfos.Where(t => t.Nav_Person != null).Select(m => m.Nav_Person.POST_ID).Distinct().ToList();
							 | 
						|||
| 
								 | 
							
								                                var postFormLinks = GetEntities<T_PR_POST_FORM_LINK_XK>(i => postIds.Contains(i.POST_ID) && departmentIdOuts.Contains((Guid)i.DEPARTMENT_ID), new BaseFilter(filter.OrgId), "Nav_Department", "Nav_Params").ToList();
							 | 
						|||
| 
								 | 
							
								                                if (postFormLinks != null && postFormLinks.Any())
							 | 
						|||
| 
								 | 
							
								                                {
							 | 
						|||
| 
								 | 
							
								                                    foreach (var item in postFormLinks)
							 | 
						|||
| 
								 | 
							
								                                    {
							 | 
						|||
| 
								 | 
							
								                                        var alldepartIds = new List<Guid>();
							 | 
						|||
| 
								 | 
							
								                                        var allteamIds = new List<Guid>();
							 | 
						|||
| 
								 | 
							
								                                        if (item!=null && item.Nav_Department!=null && item.Nav_Department.DEPARTMENT_TYPE == 3)
							 | 
						|||
| 
								 | 
							
								                                        {
							 | 
						|||
| 
								 | 
							
								                                            alldepartIds.Add((Guid)item.DEPARTMENT_ID);
							 | 
						|||
| 
								 | 
							
								                                            var dDepartIds = departInfos.Where(t => t.PARENT_ID == item.DEPARTMENT_ID).Select(m => m.ID).ToList();
							 | 
						|||
| 
								 | 
							
								                                            alldepartIds.AddRange(dDepartIds);
							 | 
						|||
| 
								 | 
							
								                                            var shopDepartIds = departInfos.Where(t => t.PARENT_ID!=null && dDepartIds.Contains((Guid)t.PARENT_ID)).Select(m => m.ID).ToList();
							 | 
						|||
| 
								 | 
							
								                                            alldepartIds.AddRange(shopDepartIds);
							 | 
						|||
| 
								 | 
							
								                                            var classDepartIds = departInfos.Where(t => t.PARENT_ID != null && shopDepartIds.Contains((Guid)t.PARENT_ID)).Select(m => m.ID).ToList();
							 | 
						|||
| 
								 | 
							
								                                            alldepartIds.AddRange(classDepartIds);
							 | 
						|||
| 
								 | 
							
								                                        }
							 | 
						|||
| 
								 | 
							
								                                        if (item != null && item.Nav_Department != null && item.Nav_Department.DEPARTMENT_TYPE == 0)
							 | 
						|||
| 
								 | 
							
								                                        {
							 | 
						|||
| 
								 | 
							
								                                            alldepartIds.Add((Guid)item.DEPARTMENT_ID);
							 | 
						|||
| 
								 | 
							
								                                            var shopDepartIds = departInfos.Where(t => t.PARENT_ID == item.DEPARTMENT_ID).Select(m => m.ID).ToList();
							 | 
						|||
| 
								 | 
							
								                                            alldepartIds.AddRange(shopDepartIds);
							 | 
						|||
| 
								 | 
							
								                                            var classDepartIds = departInfos.Where(t => t.PARENT_ID != null && shopDepartIds.Contains((Guid)t.PARENT_ID)).Select(m => m.ID).ToList();
							 | 
						|||
| 
								 | 
							
								                                            alldepartIds.AddRange(classDepartIds);
							 | 
						|||
| 
								 | 
							
								                                        }
							 | 
						|||
| 
								 | 
							
								                                        if (item != null && item.Nav_Department != null && item.Nav_Department.DEPARTMENT_TYPE == 1)
							 | 
						|||
| 
								 | 
							
								                                        {
							 | 
						|||
| 
								 | 
							
								                                            alldepartIds.Add((Guid)item.DEPARTMENT_ID);
							 | 
						|||
| 
								 | 
							
								                                            var classDepartIds = departInfos.Where(t => t.PARENT_ID == item.DEPARTMENT_ID).Select(m => m.ID).ToList();
							 | 
						|||
| 
								 | 
							
								                                            alldepartIds.AddRange(classDepartIds);
							 | 
						|||
| 
								 | 
							
								                                        }
							 | 
						|||
| 
								 | 
							
								                                        if (item != null && item.Nav_Department != null && item.Nav_Department.DEPARTMENT_TYPE == 2)
							 | 
						|||
| 
								 | 
							
								                                        {
							 | 
						|||
| 
								 | 
							
								                                            alldepartIds.Add((Guid)item.DEPARTMENT_ID);
							 | 
						|||
| 
								 | 
							
								                                        }
							 | 
						|||
| 
								 | 
							
								                                        allteamIds = teamInfos.Where(t => t.DEPARTMENT_ID!=null&& alldepartIds.Contains((Guid)t.DEPARTMENT_ID)).Select(m=>m.ID).ToList();
							 | 
						|||
| 
								 | 
							
								                                        if (allteamIds != null && allteamIds.Any())
							 | 
						|||
| 
								 | 
							
								                                        {
							 | 
						|||
| 
								 | 
							
								                                            foreach (var item2 in allteamIds)
							 | 
						|||
| 
								 | 
							
								                                            {
							 | 
						|||
| 
								 | 
							
								                                                var classTemp = teamInfos.FirstOrDefault(t => t.ID == item2);
							 | 
						|||
| 
								 | 
							
								                                                if (classTemp !=null)
							 | 
						|||
| 
								 | 
							
								                                                {
							 | 
						|||
| 
								 | 
							
								                                                    var user = userInfos.Where(t => t.DEPARTMENT_ID == classTemp?.DEPARTMENT_ID && t.Nav_Person != null && t.Nav_Person.POST_ID == item.POST_ID).ToList();
							 | 
						|||
| 
								 | 
							
								                                                    if (user != null && user.Any())
							 | 
						|||
| 
								 | 
							
								                                                    {
							 | 
						|||
| 
								 | 
							
								                                                        var classData = schedulingInfos.FirstOrDefault(t => t.TEAM_ID == item2);
							 | 
						|||
| 
								 | 
							
								                                                        T_PR_PROCESS_FORM_XK process = new T_PR_PROCESS_FORM_XK();
							 | 
						|||
| 
								 | 
							
								                                                        process.POST_ID = item.POST_ID;
							 | 
						|||
| 
								 | 
							
								                                                        process.CODE = DateTime.Now.Year.ToString().PadLeft(4, '0') + DateTime.Now.Month.ToString().PadLeft(2, '0') + DateTime.Now.Day.ToString().PadLeft(2, '0') + new Random().Next().ToString();
							 | 
						|||
| 
								 | 
							
								                                                        process.NAME = item.NAME;
							 | 
						|||
| 
								 | 
							
								                                                        process.DEPARTMENT_ID = classTemp?.DEPARTMENT_ID;
							 | 
						|||
| 
								 | 
							
								                                                        process.ORG_ID = item.ORG_ID;
							 | 
						|||
| 
								 | 
							
								                                                        process.OPERATION_STEP_ID = item.OPERATION_STEP_ID;
							 | 
						|||
| 
								 | 
							
								                                                        process.CLASS = classData?.Nav_Class?.NAME;
							 | 
						|||
| 
								 | 
							
								                                                        processInfos.Add(process);
							 | 
						|||
| 
								 | 
							
								                                                        if (item.Nav_Params != null && item.Nav_Params.Any())
							 | 
						|||
| 
								 | 
							
								                                                        {
							 | 
						|||
| 
								 | 
							
								                                                            foreach (var detail in item.Nav_Params)
							 | 
						|||
| 
								 | 
							
								                                                            {
							 | 
						|||
| 
								 | 
							
								                                                                T_PR_PROCESS_FORM_XK_DETAIL processDetail = new T_PR_PROCESS_FORM_XK_DETAIL();
							 | 
						|||
| 
								 | 
							
								                                                                processDetail.POST_PROCESS_FORM_ID = process.ID;
							 | 
						|||
| 
								 | 
							
								                                                                processDetail.ORG_ID = detail.ORG_ID;
							 | 
						|||
| 
								 | 
							
								                                                                processDetail.NUM = detail.NUM;
							 | 
						|||
| 
								 | 
							
								                                                                processDetail.NAME = detail.NAME;
							 | 
						|||
| 
								 | 
							
								                                                                processDetail.PARAM = detail.PARAM;
							 | 
						|||
| 
								 | 
							
								                                                                processDetail.UNIT = detail.UNIT;
							 | 
						|||
| 
								 | 
							
								                                                                processDetailInfos.Add(processDetail);
							 | 
						|||
| 
								 | 
							
								                                                            }
							 | 
						|||
| 
								 | 
							
								                                                        }
							 | 
						|||
| 
								 | 
							
								                                                        var userIds = user.Select(t => t.ID).ToList();
							 | 
						|||
| 
								 | 
							
								                                                        var userNames = user.Select(t => t.NAME).ToList();
							 | 
						|||
| 
								 | 
							
								                                                        sendNotices.AddRange(NotificationTaskService.InsertUserNoticeTaskModels(item.NAME, process.ID, process.ORG_ID, userIds, userNames, DateTime.Now, DateTime.Now.AddHours(4), (int)FMNoticeTypeEnum.消息, "PR072"));
							 | 
						|||
| 
								 | 
							
								                                                    }
							 | 
						|||
| 
								 | 
							
								                                                }
							 | 
						|||
| 
								 | 
							
								                                            }
							 | 
						|||
| 
								 | 
							
								                                        }
							 | 
						|||
| 
								 | 
							
								                                    }
							 | 
						|||
| 
								 | 
							
								                                }
							 | 
						|||
| 
								 | 
							
								                            }
							 | 
						|||
| 
								 | 
							
								                        }
							 | 
						|||
| 
								 | 
							
								                    }
							 | 
						|||
| 
								 | 
							
								                    UnifiedCommit(() =>
							 | 
						|||
| 
								 | 
							
								                    {
							 | 
						|||
| 
								 | 
							
								                        if (sendNotices != null && sendNotices.Any())
							 | 
						|||
| 
								 | 
							
								                            BantchSaveEntityNoCommit(sendNotices);
							 | 
						|||
| 
								 | 
							
								                        if (processInfos != null && processInfos.Any())
							 | 
						|||
| 
								 | 
							
								                            BantchSaveEntityNoCommit(processInfos);
							 | 
						|||
| 
								 | 
							
								                        if (processDetailInfos != null && processDetailInfos.Any())
							 | 
						|||
| 
								 | 
							
								                            BantchSaveEntityNoCommit(processDetailInfos);
							 | 
						|||
| 
								 | 
							
								                    });
							 | 
						|||
| 
								 | 
							
								                }
							 | 
						|||
| 
								 | 
							
								                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;
							 | 
						|||
| 
								 | 
							
								            });
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								}
							 |