834 lines
		
	
	
		
			46 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			834 lines
		
	
	
		
			46 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
using APT.BaseData.Domain.Entities.FM;
 | 
						|
using APT.BaseData.Domain.Entities;
 | 
						|
using APT.BaseData.Domain.IServices;
 | 
						|
using APT.BaseData.Domain.IServices.FM;
 | 
						|
using APT.Infrastructure.Core;
 | 
						|
using APT.MS.Domain.Entities.FO;
 | 
						|
using APT.MS.Domain.Enums;
 | 
						|
using APT.Utility;
 | 
						|
using Microsoft.AspNetCore.Mvc;
 | 
						|
using System;
 | 
						|
using System.Collections.Generic;
 | 
						|
using System.Linq;
 | 
						|
using APT.BaseData.Domain.Enums;
 | 
						|
using APT.MS.Domain.Entities.HM;
 | 
						|
using Microsoft.AspNetCore.JsonPatch.Operations;
 | 
						|
using System.Threading.Tasks;
 | 
						|
using System.Diagnostics.Eventing.Reader;
 | 
						|
using APT.BaseData.Services.Services.FM;
 | 
						|
using System.Linq.Expressions;
 | 
						|
using NPOI.SS.Formula.Functions;
 | 
						|
using APT.MS.Domain.Entities.SK;
 | 
						|
 | 
						|
namespace APT.FO.WebApi.Controllers.Api.FO
 | 
						|
{
 | 
						|
    [Route("api/FO/FOPreShiftMeetingRecord")]
 | 
						|
    public class PreShiftMeetingRecordController : AuthorizeApiController<T_FO_PRE_SHIFT_MEETING_RECORD>
 | 
						|
    {
 | 
						|
        IPFCodeRuleService CodeRuleService { get; set; }
 | 
						|
        IFMNotificationTaskService NotificationTaskService { get; set; }
 | 
						|
        IFMDepartmentService DepartmentService { get; set; }
 | 
						|
 | 
						|
        public PreShiftMeetingRecordController(IPFCodeRuleService coderuleService, IFMNotificationTaskService notificationTaskService, IFMDepartmentService departmentService)
 | 
						|
        {
 | 
						|
            CodeRuleService = coderuleService;
 | 
						|
            NotificationTaskService = notificationTaskService;
 | 
						|
            DepartmentService = departmentService;
 | 
						|
        }
 | 
						|
 | 
						|
        /// <summary>
 | 
						|
        /// 更新
 | 
						|
        /// </summary>
 | 
						|
        /// <param name="id"></param>
 | 
						|
        /// <returns></returns>
 | 
						|
        [HttpPost, Route("FullUpdate")]
 | 
						|
        public JsonActionResult<bool> FullUpdate([FromBody] T_FO_PRE_SHIFT_MEETING_RECORD entity)
 | 
						|
        {
 | 
						|
            return SafeExecute<bool>(() =>
 | 
						|
            {
 | 
						|
                var eye = "FO003_SHOWPRINT";
 | 
						|
                var edit = "FO003";
 | 
						|
                if (entity.ORG_ID.ToString() == "8b3c41aa-51b1-7ce9-1879-248a038c1b5c")
 | 
						|
                {
 | 
						|
                    eye = "FO003_SHOWPRINTJD";
 | 
						|
                    edit = "FO003_JD";
 | 
						|
                }
 | 
						|
                var taskEndTime = DateTime.Now.AddHours(24);
 | 
						|
                var users = entity.Nav_Users.Where(t => t.USER_ID != Guid.Empty);
 | 
						|
                var files = entity.Nav_Files;
 | 
						|
                entity.Nav_Users = null;
 | 
						|
                entity.Nav_Files = null;
 | 
						|
                var details = entity.Nav_Details;
 | 
						|
                entity.Nav_Details = null;
 | 
						|
                List<T_FO_PRE_SHIFT_MEETING_RECORD_DETAIL_POST> postList = new List<T_FO_PRE_SHIFT_MEETING_RECORD_DETAIL_POST>();
 | 
						|
                var oldUserIds = GetEntities<T_FO_PRE_SHIFT_MEETING_RECORD_USER>(t => t.PRE_SHIFT_MEETING_RECORD_ID == entity.ID,new BaseFilter(entity.ORG_ID)).Select(m => m.ID).ToList();
 | 
						|
                var userID = APT.Infrastructure.Api.AppContext.CurrentSession.UserID;
 | 
						|
                if (entity.TaskID != null && entity.TaskID != Guid.Empty)
 | 
						|
                {
 | 
						|
                    var currTask = GetEntity<T_FM_NOTIFICATION_TASK>(t => t.ID == entity.TaskID);
 | 
						|
                    if (currTask != null)
 | 
						|
                    {
 | 
						|
                        userID = currTask.USER_ID;
 | 
						|
                        taskEndTime = currTask.TASK_ENDDT;
 | 
						|
                    }
 | 
						|
                }
 | 
						|
                T_FM_NOTIFICATION_TASK finishNotice = null;
 | 
						|
                List<T_FM_NOTIFICATION_TASK> sendNotices = null;
 | 
						|
                if (entity.PRE_MEETING_STATUS >= FOPreMeetingStatusEnum.签到中)
 | 
						|
                {
 | 
						|
                    var taskId = entity.TaskID;
 | 
						|
                    if (taskId == Guid.Empty)
 | 
						|
                    {
 | 
						|
                        var task = GetEntity<T_FM_NOTIFICATION_TASK>(i => i.SOURCE_DATA_ID == entity.ID && i.USER_ID == userID
 | 
						|
                && i.NOTICE_STATUS == FMNoticeStatusEnum.未处理.GetInt() && i.SOURCE_FORMCODE == "FO003");
 | 
						|
                        if (task != null)
 | 
						|
                        {
 | 
						|
                            taskId = task.ID;
 | 
						|
                            taskEndTime = task.TASK_ENDDT;
 | 
						|
                        }
 | 
						|
                    }
 | 
						|
                    if (taskId != Guid.Empty)
 | 
						|
                    {
 | 
						|
                        finishNotice = NotificationTaskService.FOGetTaskFinishModel(taskId, entity.ID, eye);
 | 
						|
                    }
 | 
						|
                    UpdateEntity(finishNotice);
 | 
						|
                    throw new Exception("你已提交,请勿重复提交!");
 | 
						|
                }
 | 
						|
                if (entity.ORG_ID == Guid.Parse("8b3c41aa-51b1-7ce9-1879-248a038c1b5c"))
 | 
						|
                {
 | 
						|
                    if (string.IsNullOrEmpty(entity.TODAY_PLAN))
 | 
						|
                    {
 | 
						|
                        throw new Exception("请填写今日计划及关注点");
 | 
						|
                    }
 | 
						|
                    if (string.IsNullOrEmpty(entity.DANGER))
 | 
						|
                    {
 | 
						|
                        throw new Exception("请填写安全环保事项(危险识别)");
 | 
						|
                    }
 | 
						|
                    if (string.IsNullOrEmpty(entity.WELCOME))
 | 
						|
                    {
 | 
						|
                        entity.WELCOME = "/";
 | 
						|
                    }
 | 
						|
                    if (string.IsNullOrEmpty(entity.LEARNING))
 | 
						|
                    {
 | 
						|
                        entity.LEARNING = "/";
 | 
						|
                    }
 | 
						|
                    if (string.IsNullOrEmpty(entity.PRAISE))
 | 
						|
                    {
 | 
						|
                        entity.PRAISE = "/";
 | 
						|
                    }
 | 
						|
                    if (string.IsNullOrEmpty(entity.SHARE))
 | 
						|
                    {
 | 
						|
                        entity.SHARE = "/";
 | 
						|
                    }
 | 
						|
                    if (string.IsNullOrEmpty(entity.OTHER_CONTENT))
 | 
						|
                    {
 | 
						|
                        entity.OTHER_CONTENT = "/";
 | 
						|
                    }
 | 
						|
                    if (string.IsNullOrEmpty(entity.DIFFICULTY))
 | 
						|
                    {
 | 
						|
                        entity.DIFFICULTY = "/";
 | 
						|
                    }
 | 
						|
                }
 | 
						|
                if (string.IsNullOrEmpty(entity.JOB_CONTENT) && entity.ORG_ID != Guid.Parse("8b3c41aa-51b1-7ce9-1879-248a038c1b5c"))
 | 
						|
                {
 | 
						|
                    throw new Exception("请填写当班工作内容");
 | 
						|
                }
 | 
						|
                if (string.IsNullOrEmpty(entity.PROTECT_MEASURE) && entity.ORG_ID != Guid.Parse("8b3c41aa-51b1-7ce9-1879-248a038c1b5c"))
 | 
						|
                {
 | 
						|
                    throw new Exception("请填写注意事项及防护措施");
 | 
						|
                }
 | 
						|
                if (users == null || users.Count(t => t.IS_DELETED == false) == 0)
 | 
						|
                {
 | 
						|
                    throw new Exception("通知人员不能为空");
 | 
						|
                }
 | 
						|
                if (entity.DEPARTMENT_ID == null)
 | 
						|
                {
 | 
						|
                    var user = GetEntity<T_FM_USER>(t => t.ID == userID);
 | 
						|
                    if (user != null)
 | 
						|
                        entity.DEPARTMENT_ID = user.DEPARTMENT_ID;
 | 
						|
                }
 | 
						|
                if (entity.USER_ID == null)
 | 
						|
                {
 | 
						|
                    entity.USER_ID = userID;
 | 
						|
                }
 | 
						|
                var TeamName = "";
 | 
						|
                if (entity.TEAM_ID != null)
 | 
						|
                {
 | 
						|
                    TeamName = GetEntity<T_FM_TEAM>(entity.TEAM_ID.ToString()).NAME;
 | 
						|
                }
 | 
						|
                else
 | 
						|
                {
 | 
						|
                    var currTeam = GetEntity<T_FM_TEAM>(t => t.DEPARTMENT_ID == entity.DEPARTMENT_ID);
 | 
						|
                    entity.TEAM_ID = currTeam.ID;
 | 
						|
                    TeamName = currTeam.NAME;
 | 
						|
                }
 | 
						|
                if (entity.NAME == null)
 | 
						|
                {
 | 
						|
                    entity.NAME = DateTime.Now.Date.ToString("yyyyMMdd") + TeamName + "-班前会议";
 | 
						|
                }
 | 
						|
                var isRepeat = GetCount<T_FO_PRE_SHIFT_MEETING_RECORD>(t => t.NAME == entity.NAME && t.PRE_MEETING_STATUS > 0 && t.CLASS_ID == entity.CLASS_ID&&t.USER_ID==entity.USER_ID, new BaseFilter(entity.ORG_ID));
 | 
						|
                if (isRepeat > 0)
 | 
						|
                {
 | 
						|
                    throw new Exception("检测到班前会议数据重复,请联系管理员!");
 | 
						|
                }
 | 
						|
                if (details != null && details.Any())
 | 
						|
                {
 | 
						|
                    var detailFirst = details.FirstOrDefault(t => string.IsNullOrEmpty(t.QUOTA) && string.IsNullOrEmpty(t.PURPOSE) && string.IsNullOrEmpty(t.ACTUAL) && string.IsNullOrEmpty(t.RATE) && string.IsNullOrEmpty(t.REASON) && string.IsNullOrEmpty(t.IMPROVE));
 | 
						|
                    if (detailFirst != null && entity.ORG_ID == Guid.Parse("8b3c41aa-51b1-7ce9-1879-248a038c1b5c"))
 | 
						|
                    {
 | 
						|
                        throw new Exception("指标目标传入了空数据,请删除!");
 | 
						|
                    }
 | 
						|
                    foreach (var item in details)
 | 
						|
                    {
 | 
						|
                        item.ORG_ID = entity.ORG_ID;
 | 
						|
                        item.PRE_SHIFT_MEETING_RECORD_ID = entity.ID;
 | 
						|
                        if (item.Nav_DetailPosts != null && item.Nav_DetailPosts.Any())
 | 
						|
                        {
 | 
						|
                            foreach (var post in item.Nav_DetailPosts)
 | 
						|
                            {
 | 
						|
                                post.ORG_ID = entity.ORG_ID;
 | 
						|
                                post.PRE_SHIFT_MEETING_RECORD_DETAIL_ID = item.ID;
 | 
						|
                                postList.Add(post);
 | 
						|
                            }
 | 
						|
                        }
 | 
						|
                        item.Nav_DetailPosts = null;
 | 
						|
                    }
 | 
						|
                }
 | 
						|
                var detailIds = GetEntities<T_FO_PRE_SHIFT_MEETING_RECORD_DETAIL>(t => t.PRE_SHIFT_MEETING_RECORD_ID == entity.ID, new BaseFilter(entity.ORG_ID)).Select(m => m.ID).ToList();
 | 
						|
                var postIds = GetEntities<T_FO_PRE_SHIFT_MEETING_RECORD_DETAIL_POST>(t => detailIds.Contains(t.PRE_SHIFT_MEETING_RECORD_DETAIL_ID), new BaseFilter(entity.ORG_ID)).Select(m => m.ID).ToList(); ;
 | 
						|
                //20230913新增同步人员排班
 | 
						|
                List<T_FM_DEPARTMENT_SCHEDULING_DETAIL> addSchedulings = new List<T_FM_DEPARTMENT_SCHEDULING_DETAIL>();
 | 
						|
                List<Guid> delSchedulings = new List<Guid>();
 | 
						|
 | 
						|
                if (entity.DEPARTMENT_SCHEDULING_ID != null)
 | 
						|
                {
 | 
						|
                    var shiftClass = GetEntities<T_FM_DEPARTMENT_SCHEDULING_DETAIL>(t => t.DEPARTMENT_SCHEDULING_ID == entity.DEPARTMENT_SCHEDULING_ID, new BaseFilter(entity.ORG_ID), new string[] { "Nav_Person.Nav_User" });
 | 
						|
                    var delUsers = users.Where(t => t.IS_DELETED == true).Select(t => t.USER_ID);
 | 
						|
                    var addUsers = users.Where(t => t.CREATE_TIME > entity.CREATE_TIME).Select(t => t.USER_ID);
 | 
						|
                    foreach (var user in addUsers)
 | 
						|
                    {
 | 
						|
                        var addDetails = shiftClass.FirstOrDefault(t => t.Nav_Person.Nav_User.ID == user);
 | 
						|
                        if (addDetails == null)
 | 
						|
                        {
 | 
						|
                            T_FM_DEPARTMENT_SCHEDULING_DETAIL addScheduling = new T_FM_DEPARTMENT_SCHEDULING_DETAIL();
 | 
						|
                            addScheduling.PERSON_ID = (Guid)GetEntity<T_FM_USER>(t => t.ID == user).PERSON_ID;
 | 
						|
                            addScheduling.DEPARTMENT_SCHEDULING_ID = (Guid)entity.DEPARTMENT_SCHEDULING_ID;
 | 
						|
                            addScheduling.ORG_ID = entity.ORG_ID;
 | 
						|
                            addSchedulings.Add(addScheduling);
 | 
						|
                        }
 | 
						|
                    }
 | 
						|
                    delSchedulings = shiftClass.Where(t => delUsers.Contains(t.Nav_Person.Nav_User.ID)).Select(t => t.ID).ToList();
 | 
						|
                }
 | 
						|
                //附件保存
 | 
						|
                if (files != null && files.Any())
 | 
						|
                {
 | 
						|
                    files.ForEach(t =>
 | 
						|
                    {
 | 
						|
                        t.ORG_ID = entity.ORG_ID; t.PRE_SHIFT_MEETING_RECORD_ID = entity.ID;t.Nav_ImgFile = null;
 | 
						|
                    });
 | 
						|
                }
 | 
						|
                if (entity.RATE.Equals("SaveAndNotify"))
 | 
						|
                {
 | 
						|
                    if ((files == null || files.Count() == 0))//&& entity.ORG_ID != Guid.Parse("8b3c41aa-51b1-7ce9-1879-248a038c1b5c")
 | 
						|
                    {
 | 
						|
                        throw new Exception("请上传附件!");
 | 
						|
                    }
 | 
						|
                    var meetingTime = DateTime.Now;
 | 
						|
                    //meetingTime = DateTime.Parse("2023-06-15 06:30:00");
 | 
						|
                    if (entity.START_TIME != DateTime.MinValue)
 | 
						|
                    {
 | 
						|
                        if (entity.ORG_ID == Guid.Parse("8b3c41aa-51b1-7ce9-1879-248a038c1b5c"))
 | 
						|
                        {
 | 
						|
                            if (entity.START_TIME.AddMinutes(-30) >= meetingTime)
 | 
						|
                            {
 | 
						|
                                throw new Exception("班前会议需等到" + entity.START_TIME.AddMinutes(-30) + "后提交!");
 | 
						|
                            }
 | 
						|
                        }
 | 
						|
                        else
 | 
						|
                        {
 | 
						|
                            if (entity.START_TIME.AddMinutes(-15) >= meetingTime)
 | 
						|
                            {
 | 
						|
                                throw new Exception("班前会议需等到" + entity.START_TIME.AddMinutes(-15) + "后提交!");
 | 
						|
                            }
 | 
						|
                        }
 | 
						|
                    }
 | 
						|
                    else
 | 
						|
                    {
 | 
						|
                        entity.START_TIME = DateTime.Now;
 | 
						|
                    }
 | 
						|
                    entity.MEETING_TIME = meetingTime;
 | 
						|
                    entity.PRE_MEETING_STATUS = FOPreMeetingStatusEnum.签到中;
 | 
						|
                    //直接处理班组长已签到,并修改通知状态
 | 
						|
                    var chargeUser = users.Where(t => t.USER_ID == userID && t.DEAL_STATUS == (int)FOUserShiftStatusEnum.待处理);
 | 
						|
                    foreach (var user in chargeUser)
 | 
						|
                    {
 | 
						|
                        user.DEAL_STATUS = (int)FOUserShiftStatusEnum.已处理;
 | 
						|
                    }
 | 
						|
                    //新增的消息通知
 | 
						|
                    var title = TeamName + entity.MEETING_TIME.Date.ToString("yyyyMMdd") + "-班前会议签到";
 | 
						|
                    var noChargeUsers = users.Where(i => i.USER_ID != userID && i.IS_DELETED == false).Select(t => t.USER_ID);
 | 
						|
                    BaseFilter filter = new BaseFilter(entity.ORG_ID);
 | 
						|
                    filter.SelectField = new string[] { "ID", "NAME" };
 | 
						|
                    var allusers = GetEntities<T_FM_USER>(t => noChargeUsers.Contains(t.ID), filter);
 | 
						|
                    List<Guid> userIds = new List<Guid>();
 | 
						|
                    List<string> userNames = new List<string>();
 | 
						|
                    List<string> titles = new List<string>();
 | 
						|
                    List<Guid> dataIds = new List<Guid>();
 | 
						|
                    foreach (var user in noChargeUsers)
 | 
						|
                    {
 | 
						|
                        userIds.Add(user);
 | 
						|
                        userNames.Add(allusers.FirstOrDefault(t => t.ID == user).NAME);
 | 
						|
                    }
 | 
						|
                    if (noChargeUsers.Count() == 0)
 | 
						|
                    {
 | 
						|
                        entity.PRE_MEETING_STATUS = FOPreMeetingStatusEnum.归档;
 | 
						|
                    }
 | 
						|
                    var endTime = DateTime.Now.AddHours(2);
 | 
						|
                    if (entity.START_TIME != DateTime.MinValue)
 | 
						|
                    {
 | 
						|
                        endTime = entity.START_TIME.AddHours(2);
 | 
						|
                    }
 | 
						|
                    else
 | 
						|
                    {
 | 
						|
                        entity.START_TIME = DateTime.Now;
 | 
						|
                    }
 | 
						|
                    if (entity.END_TIME == DateTime.MinValue)
 | 
						|
                    {
 | 
						|
                        endTime = entity.START_TIME.AddHours(8);
 | 
						|
                    }
 | 
						|
                    if (DateTime.Now > taskEndTime)
 | 
						|
                    {
 | 
						|
                        endTime = DateTime.Now.AddHours(24);
 | 
						|
                    }
 | 
						|
                    sendNotices = NotificationTaskService.InsertUserNoticeTaskModels(title, entity.ID, entity.ORG_ID, userIds, userNames, DateTime.Now, endTime, (int)FMNoticeTypeEnum.消息, eye);
 | 
						|
                    var taskId = entity.TaskID;
 | 
						|
                    if (taskId == Guid.Empty)
 | 
						|
                    {
 | 
						|
                        var task = GetEntity<T_FM_NOTIFICATION_TASK>(i => i.SOURCE_DATA_ID == entity.ID && i.USER_ID == userID
 | 
						|
                && i.NOTICE_STATUS == FMNoticeStatusEnum.未处理.GetInt() && i.SOURCE_FORMCODE == edit);
 | 
						|
                        if (task != null)
 | 
						|
                        {
 | 
						|
                            taskId = task.ID;
 | 
						|
                        }
 | 
						|
                    }
 | 
						|
                    if (taskId != Guid.Empty)
 | 
						|
                    {
 | 
						|
                        finishNotice = NotificationTaskService.FOGetTaskFinishModel(taskId, entity.ID, eye);
 | 
						|
                    }
 | 
						|
                }
 | 
						|
                entity.Nav_User = null;
 | 
						|
                users.ForEach(t => t.Nav_User = null);
 | 
						|
                users.ForEach(t => t.ORG_ID = entity.ORG_ID);
 | 
						|
                users = users.Where(t => !t.IS_DELETED);
 | 
						|
                this.UnifiedCommit(() =>
 | 
						|
                {
 | 
						|
                    if (entity != null)
 | 
						|
                        UpdateEntityNoCommit(entity);
 | 
						|
                    if (oldUserIds != null && oldUserIds.Any())
 | 
						|
                        BantchDeleteEntityNoCommit<T_FO_PRE_SHIFT_MEETING_RECORD_USER>(oldUserIds);
 | 
						|
                    if (users!=null && users.Any())
 | 
						|
                        BantchSaveEntityNoCommit(users);
 | 
						|
                    if (detailIds != null && detailIds.Any())
 | 
						|
                        BantchDeleteEntityNoCommit<T_FO_PRE_SHIFT_MEETING_RECORD_DETAIL>(detailIds);
 | 
						|
                    if (postIds != null && postIds.Any())
 | 
						|
                        BantchDeleteEntityNoCommit<T_FO_PRE_SHIFT_MEETING_RECORD_DETAIL_POST>(postIds);
 | 
						|
                    if (details!=null &&details.Any())
 | 
						|
                        BantchSaveEntityNoCommit(details);
 | 
						|
                    if (postList != null && postList.Any())
 | 
						|
                        BantchSaveEntityNoCommit(postList);
 | 
						|
                    if (files != null && files.Any())
 | 
						|
                        BantchSaveEntityNoCommit(files);
 | 
						|
                    if (finishNotice != null)
 | 
						|
                        UpdateEntityNoCommit(finishNotice);
 | 
						|
                    if (sendNotices != null && sendNotices.Any())
 | 
						|
                        BantchAddEntityNoCommit(sendNotices);
 | 
						|
                    if (delSchedulings.Any())
 | 
						|
                        BantchDeleteEntityNoCommit<T_FM_DEPARTMENT_SCHEDULING_DETAIL>(delSchedulings);
 | 
						|
                    if (addSchedulings.Any())
 | 
						|
                        BantchAddEntityNoCommit(addSchedulings);
 | 
						|
                });
 | 
						|
                return true;
 | 
						|
            });
 | 
						|
        }
 | 
						|
        /// <summary>
 | 
						|
        /// 班前会议签到同意
 | 
						|
        /// </summary>
 | 
						|
        /// <param name="id"></param>
 | 
						|
        /// <returns></returns>
 | 
						|
        [HttpPost, Route("PersonalAgree")]
 | 
						|
        public JsonActionResult<bool> PersonalAgree([FromBody] T_FO_PRE_SHIFT_MEETING_RECORD entity)
 | 
						|
        {
 | 
						|
            return SafeExecute<bool>(() =>
 | 
						|
            {
 | 
						|
                var orgId = APT.Infrastructure.Api.AppContext.CurrentSession.OrgId;
 | 
						|
                var userID = APT.Infrastructure.Api.AppContext.CurrentSession.UserID;
 | 
						|
                if (entity.TaskID != null && entity.TaskID != Guid.Empty)
 | 
						|
                {
 | 
						|
                    var currTask = GetEntity<T_FM_NOTIFICATION_TASK>(t => t.ID == entity.TaskID);
 | 
						|
                    if (currTask != null)
 | 
						|
                    {
 | 
						|
                        userID = currTask.USER_ID;
 | 
						|
                    }
 | 
						|
                }
 | 
						|
                var users = GetEntities<T_FO_PRE_SHIFT_MEETING_RECORD_USER>(t => t.PRE_SHIFT_MEETING_RECORD_ID == entity.ID, new BaseFilter(orgId));
 | 
						|
                var currUsers = users.Where(t => t.USER_ID == userID);
 | 
						|
                foreach (var user in currUsers)
 | 
						|
                {
 | 
						|
                    user.DEAL_STATUS = (int)FOUserShiftStatusEnum.已处理;
 | 
						|
                    user.MODIFY_TIME = DateTime.Now;
 | 
						|
                }
 | 
						|
                T_FO_PRE_SHIFT_MEETING_RECORD model = null;
 | 
						|
                var todoCount = users.Count(t => t.DEAL_STATUS == 0);
 | 
						|
                if (todoCount == 0)
 | 
						|
                {
 | 
						|
                    model = GetEntity<T_FO_PRE_SHIFT_MEETING_RECORD>(entity.ID.ToString());
 | 
						|
                    model.PRE_MEETING_STATUS = FOPreMeetingStatusEnum.归档;
 | 
						|
                    model.IS_RUN = WFDisableStatusEnum.是;
 | 
						|
                }
 | 
						|
                T_FM_NOTIFICATION_TASK task = null;
 | 
						|
                if (entity.TaskID != Guid.Empty)
 | 
						|
                {
 | 
						|
                    task = NotificationTaskService.FOGetTaskFinishModel(entity.TaskID, entity.ID);
 | 
						|
                }
 | 
						|
                var eventRecords = new List<T_FO_JOB_EVENT_RECORD>();
 | 
						|
                var jobs = new List<T_FO_CRUCIAL_LICENSE_JOB>();
 | 
						|
                var notices = new List<T_FM_NOTIFICATION_TASK>();
 | 
						|
                var persons = new List<T_FO_JOB_EVENT_PERSON>();
 | 
						|
                var details = new List<T_FO_JOB_EVENT_DETAIL>();
 | 
						|
                var flows = new List<T_FO_JOB_EVENT_FLOW>();
 | 
						|
                var measures = new List<T_FO_JOB_EVENT_MEASURE>();
 | 
						|
                var jobDetails = new List<T_FO_CRUCIAL_LICENSE_SAFE_CONFIRM>();
 | 
						|
                var jobFlows = new List<T_FO_CRUCIAL_LICENSE_SAFE_MEASURE>();
 | 
						|
                var jobMeasures = new List<T_FO_CRUCIAL_LICENSE_DEAL_MEASURE>();
 | 
						|
                var temp = GetEntity<T_FO_PRE_SHIFT_MEETING_RECORD>(entity.ID.ToString());
 | 
						|
                var curentUser = users.Where(t => t.USER_ID == userID).ToList();
 | 
						|
                //查配置,有跑批触发的班组不触发
 | 
						|
                var isSend = true;
 | 
						|
                var jobFilter = new BaseFilter(orgId);
 | 
						|
                jobFilter.IgnoreDataRule = true;
 | 
						|
                jobFilter.SelectField = new List<string> { "NAME", "Nav_Departments" };
 | 
						|
                var paramSet = this.GetEntity<T_FM_PARAM_SET>(t => t.NAME == "一般作业", jobFilter);
 | 
						|
                if (paramSet != null)
 | 
						|
                {
 | 
						|
                    var departIds = paramSet.Nav_Departments.Select(m => m.DEPARTMENT_ID).Distinct().ToList();
 | 
						|
                    if (departIds != null && departIds.Any())
 | 
						|
                    {
 | 
						|
                        jobFilter.SelectField = new string[] { "ID", "DEPARTMENT_ID" };
 | 
						|
                        var teams = this.GetEntities<T_FM_TEAM>(t => departIds.Contains(t.DEPARTMENT_ID), jobFilter).ToList();
 | 
						|
                        var teamIds = teams.Select(t => t.ID).ToList();
 | 
						|
                        if (teamIds.Contains((Guid)temp.TEAM_ID))
 | 
						|
                        {
 | 
						|
                            isSend = false;
 | 
						|
                        }
 | 
						|
                    }
 | 
						|
                }
 | 
						|
                if (isSend)
 | 
						|
                {
 | 
						|
                    GetAutoNext(temp, curentUser, ref eventRecords, ref jobs, ref notices);
 | 
						|
                }
 | 
						|
                if (eventRecords != null && eventRecords.Any())
 | 
						|
                {
 | 
						|
                    eventRecords.ForEach(t =>
 | 
						|
                    {
 | 
						|
                        if (t.Nav_JobEventPerson != null && t.Nav_JobEventPerson.Any())
 | 
						|
                            persons.AddRange(t.Nav_JobEventPerson);
 | 
						|
                        if (t.Nav_Details != null && t.Nav_Details.Any())
 | 
						|
                            details.AddRange(t.Nav_Details);
 | 
						|
                        if (t.Nav_Flow != null && t.Nav_Flow.Any())
 | 
						|
                            flows.AddRange(t.Nav_Flow);
 | 
						|
                        if (t.Nav_Measure != null && t.Nav_Measure.Any())
 | 
						|
                            measures.AddRange(t.Nav_Measure);
 | 
						|
                    });
 | 
						|
                }
 | 
						|
                if (jobs != null && jobs.Any())
 | 
						|
                {
 | 
						|
                    jobs.ForEach(t =>
 | 
						|
                    {
 | 
						|
                        if (t.Nav_SafeConfirms != null && t.Nav_SafeConfirms.Any())
 | 
						|
                            jobDetails.AddRange(t.Nav_SafeConfirms);
 | 
						|
                        if (t.Nav_SafeMeasures != null && t.Nav_SafeMeasures.Any())
 | 
						|
                            jobFlows.AddRange(t.Nav_SafeMeasures);
 | 
						|
                        if (t.Nav_DealMeasures != null && t.Nav_DealMeasures.Any())
 | 
						|
                            jobMeasures.AddRange(t.Nav_DealMeasures);
 | 
						|
                    });
 | 
						|
                }
 | 
						|
                UnifiedCommit(() =>
 | 
						|
                {
 | 
						|
                    if (currUsers != null && currUsers.Any() && task != null)
 | 
						|
                    {
 | 
						|
                        BantchUpdateEntityNoCommit(currUsers, "DEAL_STATUS", "MODIFY_TIME");
 | 
						|
                        UpdateEntityNoCommit(task);
 | 
						|
                    }
 | 
						|
                    if (model != null)
 | 
						|
                    {
 | 
						|
                        UpdateEntityNoCommit(model, "PRE_MEETING_STATUS", "IS_RUN");
 | 
						|
                    }
 | 
						|
                    if (eventRecords != null && eventRecords.Any())
 | 
						|
                        BantchSaveEntityNoCommit(eventRecords);
 | 
						|
                    if (jobs != null && jobs.Any())
 | 
						|
                        BantchSaveEntityNoCommit(jobs);
 | 
						|
                    if (notices != null && notices.Any())
 | 
						|
                        this.BantchSaveEntityNoCommit(notices);
 | 
						|
                    if (persons != null && persons.Any())
 | 
						|
                    {
 | 
						|
                        persons = persons.Where(t => t.USER_ID != null && !t.IS_DELETED).ToList();
 | 
						|
                        this.BantchSaveEntityNoCommit(persons);
 | 
						|
                    }
 | 
						|
                    if (details != null && details.Any())
 | 
						|
                        this.BantchSaveEntityNoCommit(details);
 | 
						|
                    if (flows != null && flows.Any())
 | 
						|
                        this.BantchSaveEntityNoCommit(flows);
 | 
						|
                    if (measures != null && measures.Any())
 | 
						|
                        this.BantchSaveEntityNoCommit(measures);
 | 
						|
                    if (jobDetails != null && jobDetails.Any())
 | 
						|
                        this.BantchSaveEntityNoCommit(jobDetails);
 | 
						|
                    if (jobFlows != null && jobFlows.Any())
 | 
						|
                        this.BantchSaveEntityNoCommit(jobFlows);
 | 
						|
                    if (jobMeasures != null && jobMeasures.Any())
 | 
						|
                        this.BantchSaveEntityNoCommit(jobMeasures);
 | 
						|
                });
 | 
						|
                return true;
 | 
						|
            });
 | 
						|
        }
 | 
						|
        /// <summary>
 | 
						|
        /// 返回作业活动记录和关键许可工作票
 | 
						|
        /// <returns></returns>
 | 
						|
        private void GetAutoNext(T_FO_PRE_SHIFT_MEETING_RECORD model, List<T_FO_PRE_SHIFT_MEETING_RECORD_USER> modelUsers, ref List<T_FO_JOB_EVENT_RECORD> eventRecords, ref List<T_FO_CRUCIAL_LICENSE_JOB> jobs, ref List<T_FM_NOTIFICATION_TASK> notices)
 | 
						|
        {
 | 
						|
            //取排班中所有人
 | 
						|
            if (model != null && modelUsers != null && modelUsers.Any())
 | 
						|
            {
 | 
						|
                model.ORG_ID = APT.Infrastructure.Api.AppContext.CurrentSession.OrgId;
 | 
						|
                //人员
 | 
						|
                var userIds = modelUsers.Select(t => t.USER_ID).ToList();
 | 
						|
                //找出所有岗位
 | 
						|
                var users = this.GetEntities<T_FM_USER>(t => t.ENABLE_STATUS == (int)FMEnableStatusEnum.启用 && userIds.Contains(t.ID), new BaseFilter(model.ORG_ID), "Nav_Person");
 | 
						|
                var postionIds = users.Where(x => x.Nav_Person.POST_ID != null).Select(t => t.Nav_Person.POST_ID).Distinct().ToList();
 | 
						|
                if (postionIds.Any())
 | 
						|
                {
 | 
						|
                    //岗位对应的作业环节ID
 | 
						|
                    var links = this.GetEntities<T_HM_OPERATION_LINK_POST>(t => postionIds.Contains(t.POST_ID), new BaseFilter(model.ORG_ID), "Nav_OperationLink").ToList();
 | 
						|
                    var linkIds = links.Select(m => m.OPERATION_LINK_ID).Distinct().ToList();
 | 
						|
                    //作业库中取作业环节(周期为每日作业)
 | 
						|
                    var operationTemps = this.GetEntities<T_HM_OPERATION_LINK>(t => linkIds.Contains(t.ID) && t.STATUS == (int)STATUSEnum.启用 && t.CYCLE_TYPE == HMCycleTypeEnum.Day, new BaseFilter(model.ORG_ID), new string[] { "Nav_WorkPermitType", "Nav_OperationStep", "Nav_SafeConfirms", "Nav_SafeMeasures", "Nav_DealMeasures" }).Distinct().ToList();
 | 
						|
                    var operations = operationTemps.Where(x => x.Nav_OperationStep != null).GroupBy(t => new { t.Nav_OperationStep.NAME }).Select(w => w.OrderBy(m => m.CREATE_TIME).FirstOrDefault()).Distinct().ToList();
 | 
						|
                    if (operations != null && operations.Any())
 | 
						|
                    {
 | 
						|
                        //岗位对应多个作业环节
 | 
						|
                        foreach (var postId in postionIds)
 | 
						|
                        {
 | 
						|
                            var linkId = links.Where(t => t.POST_ID == postId).Select(m => m.OPERATION_LINK_ID).Distinct().ToList();
 | 
						|
                            var operation = operations.Where(t => linkId.Contains(t.ID)).Distinct().ToList();
 | 
						|
                            //多个作业环节判断关键许可一般
 | 
						|
                            if (operation != null && operation.Any())
 | 
						|
                            {
 | 
						|
                                //许可作业、非许可的关键任务
 | 
						|
                                var crucialAndLicenses = operation.Where(t => (t.Nav_WorkPermitType != null && t.Nav_WorkPermitType.NAME != "无") || (t.Nav_WorkPermitType != null && t.Nav_WorkPermitType.NAME == "无" && t.IS_IMPORTANT == (int)ISImportantEnum.是)).ToList();
 | 
						|
                                //非许可非关键的一般任务
 | 
						|
                                var ordinarys = operation.Where(t => (t.Nav_WorkPermitType == null || (t.Nav_WorkPermitType != null && t.Nav_WorkPermitType.NAME == "无")) && t.IS_IMPORTANT == (int)ISImportantEnum.否).Distinct().ToList();
 | 
						|
                                //触发关键许可作业票
 | 
						|
                                if (crucialAndLicenses != null && crucialAndLicenses.Any())
 | 
						|
                                {
 | 
						|
                                    //通知到该岗位的所有人
 | 
						|
                                    var noticesUserIds = users.Where(t => t.Nav_Person.POST_ID == postId).Select(m => m.ID).Distinct().ToList();
 | 
						|
                                    var UserNames = new List<string>();
 | 
						|
                                    var user = users.Where(t => noticesUserIds.Contains(t.ID));
 | 
						|
                                    foreach (var u in noticesUserIds)
 | 
						|
                                    {
 | 
						|
                                        var current = user.FirstOrDefault(t => t.ID == u);
 | 
						|
                                        UserNames.Add(current?.NAME);
 | 
						|
                                    }
 | 
						|
                                    //触发关键许可作业票
 | 
						|
                                    List<T_FO_CRUCIAL_LICENSE_JOB> job = InsertJob(model, crucialAndLicenses);
 | 
						|
                                    if (job != null && job.Any())
 | 
						|
                                    {
 | 
						|
                                        //发消息
 | 
						|
                                        List<T_FM_NOTIFICATION_TASK> notice = new List<T_FM_NOTIFICATION_TASK>();
 | 
						|
                                        //发消息
 | 
						|
                                        job.ForEach(t =>
 | 
						|
                                        {
 | 
						|
                                            if (t.OPERATION_STEP_ID != null)
 | 
						|
                                            {
 | 
						|
                                                var noticeTemp = NotificationTaskService.InsertUserNoticeTaskModels("关键许可作业票-" + t.Nav_OperationStep?.NAME + "(" + model.MEETING_TIME.Date.ToString("yyyyMMdd") + ")", t.ID, model.ORG_ID, noticesUserIds, UserNames, DateTime.Now,
 | 
						|
                                                model.END_TIME, (int)FMNoticeTypeEnum.消息, "FO017");
 | 
						|
                                                notice.AddRange(noticeTemp);
 | 
						|
                                                t.Nav_OperationStep = null;
 | 
						|
                                            }
 | 
						|
                                        });
 | 
						|
                                        notices.AddRange(notice);
 | 
						|
                                        jobs.AddRange(job);
 | 
						|
                                    }
 | 
						|
                                }
 | 
						|
                                if (ordinarys != null && ordinarys.Any())
 | 
						|
                                {
 | 
						|
                                    //通知到该岗位的所有人
 | 
						|
                                    var noticesUserIds = users.Where(t => t.Nav_Person.POST_ID == postId).Select(m => m.ID).Distinct().ToList();
 | 
						|
                                    var UserNames = new List<string>();
 | 
						|
                                    var user = users.Where(t => noticesUserIds.Contains(t.ID));
 | 
						|
                                    foreach (var u in noticesUserIds)
 | 
						|
                                    {
 | 
						|
                                        var current = user.FirstOrDefault(t => t.ID == u);
 | 
						|
                                        UserNames.Add(current?.NAME);
 | 
						|
                                    }
 | 
						|
                                    //触发一般作业活动记录表
 | 
						|
                                    List<T_FO_JOB_EVENT_RECORD> eventRecord = InsertEventRecord(model, ordinarys, noticesUserIds);
 | 
						|
                                    if (eventRecord != null && eventRecord.Any())
 | 
						|
                                    {
 | 
						|
                                        List<T_FM_NOTIFICATION_TASK> notice = new List<T_FM_NOTIFICATION_TASK>();
 | 
						|
                                        //发消息
 | 
						|
                                        eventRecord.ForEach(t =>
 | 
						|
                                        {
 | 
						|
                                            if (t.OPERATION_STEP_ID != null)
 | 
						|
                                            {
 | 
						|
                                                var noticeTemp = NotificationTaskService.InsertUserNoticeTaskModels("作业活动记录表(一般作业)-" + t.Nav_OperationStep?.NAME + "(" + model.MEETING_TIME.Date.ToString("yyyyMMdd") + ")", t.ID, model.ORG_ID, noticesUserIds, UserNames, DateTime.Now,
 | 
						|
                                                  model.END_TIME, (int)FMNoticeTypeEnum.消息, "FO015");
 | 
						|
                                                notice.AddRange(noticeTemp);
 | 
						|
                                                t.Nav_OperationStep = null;
 | 
						|
                                            }
 | 
						|
                                        });
 | 
						|
                                        notices.AddRange(notice);
 | 
						|
                                        eventRecords.AddRange(eventRecord);
 | 
						|
                                    }
 | 
						|
                                }
 | 
						|
                            }
 | 
						|
                        }
 | 
						|
                    }
 | 
						|
                }
 | 
						|
            }
 | 
						|
        }
 | 
						|
        /// <summary>
 | 
						|
        /// 作业活动记录表(一般)
 | 
						|
        /// </summary>
 | 
						|
        /// <param name="entity"></param>
 | 
						|
        /// <returns></returns>
 | 
						|
        private List<T_FO_JOB_EVENT_RECORD> InsertEventRecord(T_FO_PRE_SHIFT_MEETING_RECORD entity, List<T_HM_OPERATION_LINK> operations, List<Guid> noticesUserIds)
 | 
						|
        {
 | 
						|
            var records = new List<T_FO_JOB_EVENT_RECORD>();
 | 
						|
            if (operations != null && operations.Any())
 | 
						|
            {
 | 
						|
                //取审批流水码
 | 
						|
                var sysFilter = new SystemCodeFilter();
 | 
						|
                sysFilter.CodeType = (int)PFCodeRuleType.一般作业活动记录表编号;
 | 
						|
                sysFilter.Count = operations.Count;
 | 
						|
                sysFilter.OrgId = entity.ORG_ID;
 | 
						|
                var codes = CodeRuleService.NewGenSerial(sysFilter);
 | 
						|
                var codeList = codes.Split(new char[] { ',' });
 | 
						|
                var index = 0;
 | 
						|
                foreach (var stepName in operations)
 | 
						|
                {
 | 
						|
                    //var operationFirst = operations.FirstOrDefault(t => t.Nav_SafeConfirms.Count > 0 && t.Nav_SafeMeasures.Count > 0 && t.Nav_DealMeasures.Count > 0);
 | 
						|
                    T_FO_JOB_EVENT_RECORD record = new T_FO_JOB_EVENT_RECORD();
 | 
						|
                    //主表
 | 
						|
                    record.CODE = codeList[index];
 | 
						|
                    record.ORG_ID = entity.ORG_ID;
 | 
						|
                    record.OPERATION_STEP_ID = stepName?.OPERATION_STEP_ID;
 | 
						|
                    record.Nav_OperationStep = stepName?.Nav_OperationStep;
 | 
						|
                    record.SHIFT_MEETING_RECORD_ID = entity.ID;
 | 
						|
                    record.JOB_DATE = entity.START_TIME + "-" + entity.END_TIME;
 | 
						|
                    //作业人员表
 | 
						|
                    if (noticesUserIds != null && noticesUserIds.Any())
 | 
						|
                    {
 | 
						|
                        record.Nav_JobEventPerson = new List<T_FO_JOB_EVENT_PERSON>();
 | 
						|
                        noticesUserIds.ForEach(t =>
 | 
						|
                        {
 | 
						|
                            T_FO_JOB_EVENT_PERSON person = new T_FO_JOB_EVENT_PERSON();
 | 
						|
                            person.USER_ID = t;
 | 
						|
                            person.JOB_EVENT_RECORD_ID = record.ID;
 | 
						|
                            person.ORG_ID = entity.ORG_ID;
 | 
						|
                            record.Nav_JobEventPerson.Add(person);
 | 
						|
                        });
 | 
						|
                    }
 | 
						|
                    //作业前安全确认
 | 
						|
                    if (stepName != null && stepName.Nav_SafeConfirms != null && stepName.Nav_SafeConfirms.Any())
 | 
						|
                    {
 | 
						|
                        record.Nav_Details = new List<T_FO_JOB_EVENT_DETAIL>();
 | 
						|
                        stepName.Nav_SafeConfirms.ForEach(t =>
 | 
						|
                        {
 | 
						|
                            T_FO_JOB_EVENT_DETAIL detail = new T_FO_JOB_EVENT_DETAIL();
 | 
						|
                            detail.JOB_EVENT_RECORD_ID = record.ID;
 | 
						|
                            detail.SafeConfirmsStr = t.NAME;
 | 
						|
                            detail.IS_CONFIRM = false;
 | 
						|
                            detail.ORG_ID = t.ORG_ID;
 | 
						|
                            detail.NUM = t.NUM;
 | 
						|
                            record.Nav_Details.Add(detail);
 | 
						|
                        });
 | 
						|
                    }
 | 
						|
                    //作业流程及安全措施
 | 
						|
                    if (stepName != null && stepName.Nav_SafeMeasures != null && stepName.Nav_SafeMeasures.Any())
 | 
						|
                    {
 | 
						|
                        record.Nav_Flow = new List<T_FO_JOB_EVENT_FLOW>();
 | 
						|
                        stepName.Nav_SafeMeasures.ForEach(t =>
 | 
						|
                        {
 | 
						|
                            T_FO_JOB_EVENT_FLOW detail = new T_FO_JOB_EVENT_FLOW();
 | 
						|
                            detail.JOB_EVENT_RECORD_ID = record.ID;
 | 
						|
                            detail.SafeMeasuresStr = t.NAME;
 | 
						|
                            detail.IS_CONFIRM = false;
 | 
						|
                            detail.ORG_ID = t.ORG_ID;
 | 
						|
                            detail.NUM = t.NUM;
 | 
						|
                            record.Nav_Flow.Add(detail);
 | 
						|
                        });
 | 
						|
                    }
 | 
						|
                    //作业后处理措施
 | 
						|
                    if (stepName != null && stepName.Nav_DealMeasures != null && stepName.Nav_DealMeasures.Any())
 | 
						|
                    {
 | 
						|
                        record.Nav_Measure = new List<T_FO_JOB_EVENT_MEASURE>();
 | 
						|
                        stepName.Nav_DealMeasures.ForEach(t =>
 | 
						|
                        {
 | 
						|
                            T_FO_JOB_EVENT_MEASURE detail = new T_FO_JOB_EVENT_MEASURE();
 | 
						|
                            detail.JOB_EVENT_RECORD_ID = record.ID;
 | 
						|
                            detail.DealMeasuresStr = t.NAME;
 | 
						|
                            detail.IS_CONFIRM = false;
 | 
						|
                            detail.ORG_ID = t.ORG_ID;
 | 
						|
                            detail.NUM = t.NUM;
 | 
						|
                            record.Nav_Measure.Add(detail);
 | 
						|
                        });
 | 
						|
                    }
 | 
						|
                    records.Add(record);
 | 
						|
                    index++;
 | 
						|
                }
 | 
						|
            }
 | 
						|
            return records;
 | 
						|
        }
 | 
						|
        /// <summary>
 | 
						|
        /// 关键许可作业票
 | 
						|
        /// </summary>
 | 
						|
        /// <param name="entity"></param>
 | 
						|
        /// <returns></returns>
 | 
						|
        private List<T_FO_CRUCIAL_LICENSE_JOB> InsertJob(T_FO_PRE_SHIFT_MEETING_RECORD entity, List<T_HM_OPERATION_LINK> operations)
 | 
						|
        {
 | 
						|
            var jobs = new List<T_FO_CRUCIAL_LICENSE_JOB>();
 | 
						|
            if (operations != null && operations.Any())
 | 
						|
            {
 | 
						|
                //取审批流水码
 | 
						|
                var sysFilter = new SystemCodeFilter();
 | 
						|
                sysFilter.CodeType = (int)PFCodeRuleType.关键许可作业票编号;
 | 
						|
                sysFilter.Count = operations.Count;
 | 
						|
                sysFilter.OrgId = entity.ORG_ID;
 | 
						|
                var codes = CodeRuleService.NewGenSerial(sysFilter);
 | 
						|
                var codeList = codes.Split(new char[] { ',' });
 | 
						|
                var index = 0;
 | 
						|
                foreach (var operation in operations)
 | 
						|
                {
 | 
						|
                    T_FO_CRUCIAL_LICENSE_JOB job = new T_FO_CRUCIAL_LICENSE_JOB();
 | 
						|
                    //主表
 | 
						|
                    job.CODE = codeList[index];
 | 
						|
                    job.ORG_ID = APT.Infrastructure.Api.AppContext.CurrentSession.OrgId;
 | 
						|
                    job.APPLY_USER_ID = APT.Infrastructure.Api.AppContext.CurrentSession.UserID;
 | 
						|
                    job.SHIFT_MEETING_RECORD_ID = entity.ID;
 | 
						|
                    job.IS_AUTO = (int)ISImportantEnum.是;
 | 
						|
                    job.OPERATION_STEP_ID = operation?.OPERATION_STEP_ID;
 | 
						|
                    job.Nav_OperationStep = operation?.Nav_OperationStep;
 | 
						|
                    job.AUDIT_LEVEL = operation.AUDIT_LEVEL;
 | 
						|
                    //作业前安全确认
 | 
						|
                    if (operation != null && operation.Nav_SafeConfirms != null && operation.Nav_SafeConfirms.Any())
 | 
						|
                    {
 | 
						|
                        job.Nav_SafeConfirms = new List<T_FO_CRUCIAL_LICENSE_SAFE_CONFIRM>();
 | 
						|
                        operation.Nav_SafeConfirms.ForEach(t =>
 | 
						|
                        {
 | 
						|
                            T_FO_CRUCIAL_LICENSE_SAFE_CONFIRM detail = new T_FO_CRUCIAL_LICENSE_SAFE_CONFIRM();
 | 
						|
                            detail.CRUCIAL_LICENSE_JOB_ID = job.ID;
 | 
						|
                            detail.NAME = t.NAME;
 | 
						|
                            detail.ORG_ID = t.ORG_ID;
 | 
						|
                            detail.NUM = t.NUM;
 | 
						|
                            job.Nav_SafeConfirms.Add(detail);
 | 
						|
                        });
 | 
						|
                    }
 | 
						|
                    //作业流程及安全措施
 | 
						|
                    if (operation != null && operation.Nav_SafeMeasures != null && operation.Nav_SafeMeasures.Any())
 | 
						|
                    {
 | 
						|
                        job.Nav_SafeMeasures = new List<T_FO_CRUCIAL_LICENSE_SAFE_MEASURE>();
 | 
						|
                        operation.Nav_SafeMeasures.ForEach(t =>
 | 
						|
                        {
 | 
						|
                            T_FO_CRUCIAL_LICENSE_SAFE_MEASURE detail = new T_FO_CRUCIAL_LICENSE_SAFE_MEASURE();
 | 
						|
                            detail.CRUCIAL_LICENSE_JOB_ID = job.ID;
 | 
						|
                            detail.NAME = t.NAME;
 | 
						|
                            detail.ORG_ID = t.ORG_ID;
 | 
						|
                            detail.NUM = t.NUM;
 | 
						|
                            job.Nav_SafeMeasures.Add(detail);
 | 
						|
                        });
 | 
						|
                    }
 | 
						|
                    //作业后处理措施
 | 
						|
                    if (operation != null && operation.Nav_DealMeasures != null && operation.Nav_DealMeasures.Any())
 | 
						|
                    {
 | 
						|
                        job.Nav_DealMeasures = new List<T_FO_CRUCIAL_LICENSE_DEAL_MEASURE>();
 | 
						|
                        operation.Nav_DealMeasures.ForEach(t =>
 | 
						|
                        {
 | 
						|
                            T_FO_CRUCIAL_LICENSE_DEAL_MEASURE detail = new T_FO_CRUCIAL_LICENSE_DEAL_MEASURE();
 | 
						|
                            detail.CRUCIAL_LICENSE_JOB_ID = job.ID;
 | 
						|
                            detail.NAME = t.NAME;
 | 
						|
                            detail.ORG_ID = t.ORG_ID;
 | 
						|
                            detail.NUM = t.NUM;
 | 
						|
                            job.Nav_DealMeasures.Add(detail);
 | 
						|
                        });
 | 
						|
                    }
 | 
						|
                    jobs.Add(job);
 | 
						|
                    index++;
 | 
						|
                }
 | 
						|
            }
 | 
						|
            return jobs;
 | 
						|
        }
 | 
						|
        /// <summary>
 | 
						|
        /// 排序分页查询数据
 | 
						|
        /// </summary>
 | 
						|
        /// <param name="pageFilter">分页过滤实体</param>
 | 
						|
        /// <returns></returns>
 | 
						|
        [HttpPost, Route("OrderPaged")]
 | 
						|
        public PagedActionResult<T_FO_PRE_SHIFT_MEETING_RECORD> OrderPaged([FromBody] KeywordPageFilter pageFilter)
 | 
						|
        {
 | 
						|
            pageFilter.IgnoreDataRule = true;
 | 
						|
            pageFilter.Include.Add("Nav_Team");
 | 
						|
            pageFilter.Include.Add("Nav_Users.Nav_User");
 | 
						|
            var result = new PagedActionResult<T_FO_PRE_SHIFT_MEETING_RECORD>();
 | 
						|
            var loginUserId = APT.Infrastructure.Api.AppContext.CurrentSession.UserID;
 | 
						|
            var admiId = this.GetEntity<T_FM_USER>(t => t.CODE.Contains("admin") && t.ENABLE_STATUS == 0)?.ID;
 | 
						|
            var currDep = APT.Infrastructure.Api.AppContext.CurrentSession.DepartmentID.Value;
 | 
						|
            var AH = GetEntity<T_FM_USER>(t => t.Nav_ApproveRole != null && (t.Nav_ApproveRole.NAME == "安环部负责人" || t.Nav_ApproveRole.NAME == "安环部安全员"));
 | 
						|
            Guid? AHDepartment = Guid.Empty;
 | 
						|
            var departInfo = GetEntity<T_FM_DEPARTMENT>(t => t.ID == currDep && t.ENABLE_STATUS == 0);
 | 
						|
            Expression<Func<T_FO_PRE_SHIFT_MEETING_RECORD, bool>> express = t => t.IS_DELETED==false;
 | 
						|
            if (!string.IsNullOrEmpty(pageFilter.Parameter1))
 | 
						|
            {
 | 
						|
                express = express.And(t => t.Nav_Users.Any(i =>i.Nav_User!=null && i.Nav_User.NAME.Contains(pageFilter.Parameter1)));
 | 
						|
            }
 | 
						|
            if (AH != null)
 | 
						|
            {
 | 
						|
                AHDepartment = AH.DEPARTMENT_ID;
 | 
						|
            }
 | 
						|
            if (loginUserId == null || loginUserId == admiId || currDep == AHDepartment)
 | 
						|
            {
 | 
						|
                result = this.GetOrderPageEntities<T_FO_PRE_SHIFT_MEETING_RECORD>(express, pageFilter);
 | 
						|
            }
 | 
						|
            else if (departInfo!=null && (departInfo.NAME.Contains("安环科")|| departInfo.NAME.Contains("安全环保")) && departInfo.PARENT_ID!=null)
 | 
						|
            {
 | 
						|
                List<Guid> departmentId = new List<Guid>();
 | 
						|
                departmentId.Add((Guid)departInfo.PARENT_ID);
 | 
						|
                List<Guid> departmentIds = new List<Guid>() { (Guid)departInfo.PARENT_ID };
 | 
						|
                DepartmentService.GetDepartmentIds(pageFilter.OrgId.Value, departmentId, ref departmentIds);
 | 
						|
                if (departmentIds != null && departmentIds.Any())
 | 
						|
                {
 | 
						|
                    express = express.And(t => t.Nav_Team != null && departmentIds.Contains((Guid)t.Nav_Team.DEPARTMENT_ID));
 | 
						|
                    result = this.GetOrderPageEntities<T_FO_PRE_SHIFT_MEETING_RECORD>(express, pageFilter);//|| dataIds.Contains(t.ID)
 | 
						|
                }
 | 
						|
                else
 | 
						|
                    result.Data = null;
 | 
						|
            }
 | 
						|
            else
 | 
						|
            {
 | 
						|
                var loginDepartmentId = this.GetEntity<T_FM_USER>(t => t.ID == loginUserId && t.ENABLE_STATUS == 0)?.DEPARTMENT_ID;
 | 
						|
                List<Guid> departmentId = new List<Guid>();
 | 
						|
                departmentId.Add((Guid)loginDepartmentId);
 | 
						|
                List<Guid> departmentIds = new List<Guid>() { (Guid)loginDepartmentId };
 | 
						|
                DepartmentService.GetDepartmentIds(pageFilter.OrgId.Value, departmentId, ref departmentIds);
 | 
						|
                if (departmentIds != null && departmentIds.Any())
 | 
						|
                {
 | 
						|
                    express = express.And(t => t.Nav_Team != null && departmentIds.Contains((Guid)t.Nav_Team.DEPARTMENT_ID));
 | 
						|
                    result = this.GetOrderPageEntities<T_FO_PRE_SHIFT_MEETING_RECORD>(express, pageFilter);//|| dataIds.Contains(t.ID)
 | 
						|
                }
 | 
						|
                else
 | 
						|
                    result.Data = null;
 | 
						|
            }
 | 
						|
            return result;
 | 
						|
        }
 | 
						|
    }
 | 
						|
}
 |