1731 lines
		
	
	
		
			86 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			1731 lines
		
	
	
		
			86 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
using APT.BaseData.Domain.Entities;
 | 
						||
using APT.BaseData.Domain.Entities.FM;
 | 
						||
using APT.BaseData.Domain.Enums;
 | 
						||
using APT.BaseData.Domain.Enums.PF;
 | 
						||
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.Entities.OG;
 | 
						||
using APT.MS.Domain.Entities.PF;
 | 
						||
using APT.MS.Domain.Entities.SC;
 | 
						||
using APT.MS.Domain.Enums;
 | 
						||
using APT.Utility;
 | 
						||
using Microsoft.AspNetCore.Mvc;
 | 
						||
using System;
 | 
						||
using System.Collections.Generic;
 | 
						||
using System.Linq;
 | 
						||
using System.Linq.Expressions;
 | 
						||
 | 
						||
namespace APT.SC.WebApi.Controllers.Api.SC
 | 
						||
{
 | 
						||
    [Route("api/SC/SCMTMeeting")]
 | 
						||
    public class SCMTMeetingController : AuthorizeApiController<T_SC_MT_MEETING>
 | 
						||
    {
 | 
						||
        IFMFlowPermitService MFlowPermitService { get; set; }
 | 
						||
        IFMUserService FMUserService { get; set; }
 | 
						||
        IPFApproveCallBackService ApproveCallBackService { get; set; }
 | 
						||
        IPFCodeRuleService PFCodeRuleService { get; set; }
 | 
						||
        IFMNotificationTaskService FMNotificActionTaskService { get; set; }
 | 
						||
        IFMNoticeService FMNoticeService { get; set; }
 | 
						||
        public SCMTMeetingController(IFMUserService fMUserService, IFMFlowPermitService mFlowPermitService, IPFApproveCallBackService approveCallBackService, IPFCodeRuleService pFCodeRuleService, IFMNotificationTaskService fMNotificActionTaskService, IFMNoticeService noticeService)
 | 
						||
        {
 | 
						||
            FMUserService = fMUserService;
 | 
						||
            MFlowPermitService = mFlowPermitService;
 | 
						||
            ApproveCallBackService = approveCallBackService;
 | 
						||
            PFCodeRuleService = pFCodeRuleService;
 | 
						||
            FMNotificActionTaskService = fMNotificActionTaskService;
 | 
						||
            FMNoticeService = noticeService;
 | 
						||
        }
 | 
						||
 | 
						||
        /// <summary>
 | 
						||
        /// 根据会议类型获取参会人员信息
 | 
						||
        /// </summary>
 | 
						||
        /// <param name="filter"></param>
 | 
						||
        /// <returns></returns>
 | 
						||
        [HttpPost, Route("GetPAll")]
 | 
						||
        public JsonActionResult<List<T_SC_MT_MEETING_PALL>> GetPAll([FromBody] KeywordFilter filter)
 | 
						||
        {
 | 
						||
            //2023-12-29 
 | 
						||
            //安委会 取配置人员 
 | 
						||
            //否则 按 发起人  发起部门 会议类型 取上次 会议的参会人
 | 
						||
            return SafeExecute<List<T_SC_MT_MEETING_PALL>>(() =>
 | 
						||
            {
 | 
						||
                List<T_SC_MT_MEETING_PALL> listResult = new List<T_SC_MT_MEETING_PALL>();
 | 
						||
                List<T_FM_USER> listUsers = new List<T_FM_USER>();
 | 
						||
                //基层安全会按部门 / 车间 / 班组点选或模糊查询,默认部门所有人员向下包含
 | 
						||
                if (!string.IsNullOrEmpty(filter.Parameter1))
 | 
						||
                {
 | 
						||
                    var LoginID = APT.Infrastructure.Api.AppContext.CurrentSession.UserID;
 | 
						||
                    BaseFilter fiterMT = new BaseFilter(filter.OrgId);
 | 
						||
                    fiterMT.Order = DbOrder.DESC;
 | 
						||
                    fiterMT.Orders.Add(new DataOrder() { Field = "CREATE_TIME", Order = DbOrder.DESC });
 | 
						||
                    SCMEETINGTYPE MEETINGTYPE = (SCMEETINGTYPE)int.Parse(filter.Parameter1);
 | 
						||
                    if (MEETINGTYPE == SCMEETINGTYPE.SafetyBoard)
 | 
						||
                    {
 | 
						||
                        //安委会 取 配置的人
 | 
						||
                        var listAgency = GetEntities<T_OG_AGENCY>(e => !e.IS_DELETED && e.NAME == "安全生产委员会", null, null);
 | 
						||
                        if (listAgency != null && listAgency.Any())
 | 
						||
                        {
 | 
						||
                            var AGENCY_ID = listAgency.Select(e => e.ID).ToList()[0];
 | 
						||
                            var users = GetEntities<T_OG_AGENCY_USER>(e => e.AGENCY_ID == AGENCY_ID, null, "Nav_User");
 | 
						||
                            if (users != null && users.Any())
 | 
						||
                            {
 | 
						||
                                foreach (var item in users)
 | 
						||
                                {
 | 
						||
                                    listUsers.Add(item.Nav_User);
 | 
						||
                                }
 | 
						||
                            }
 | 
						||
                        }
 | 
						||
                        //系统管理>安全生产组织保障配置>机构表 安全生产委员会(待优化)
 | 
						||
                        if (listUsers.Count < 1)
 | 
						||
                        {
 | 
						||
                            //部门级负责人 安全员
 | 
						||
                            //FMDepartmentType.部门 =0
 | 
						||
                            var listDep0 = GetEntities<T_FM_DEPARTMENT>(e => !e.IS_DELETED && e.DEPARTMENT_TYPE == 0, null, null);
 | 
						||
                            var listApprovreRole = GetEntities<T_PF_APPROVAL_ROLE>(e => !e.IS_DELETED && (e.NAME == "部门负责人" || e.NAME == "部门安全员" || e.NAME == "安环部负责人" || e.NAME == "安环部安全员"), null, null);
 | 
						||
                            if (listDep0 != null && listDep0.Any() && listApprovreRole != null && listApprovreRole.Any())
 | 
						||
                            {
 | 
						||
                                List<Guid> ids = listDep0.Select(e => e.ID).ToList();
 | 
						||
                                List<Guid> idsApprove = listApprovreRole.Select(e => e.ID).ToList();
 | 
						||
                                var users = GetEntities<T_FM_USER>(e => !e.IS_DELETED && e.ENABLE_STATUS == 0 && e.DEPARTMENT_ID.HasValue && ids.Contains(e.DEPARTMENT_ID.Value) && e.APPROVE_ROLE_ID.HasValue && idsApprove.Contains(e.APPROVE_ROLE_ID.Value), null, new string[] { "Nav_Department", "Nav_Person.Nav_Post" });
 | 
						||
                                if (users != null && users.Any())
 | 
						||
                                {
 | 
						||
                                    listUsers = users.OrderBy(e => e.DEPARTMENT_ID).ToList();
 | 
						||
                                }
 | 
						||
                            }
 | 
						||
                        }
 | 
						||
                    }
 | 
						||
                    else
 | 
						||
                    {
 | 
						||
                        //找上次
 | 
						||
                        var meetLast = GetEntity<T_SC_MT_MEETING>(e => e.USER_ID_ORIGINATOR == LoginID && e.MEETINGTYPE == MEETINGTYPE && e.PLANSET_ID.HasValue && !e.IS_DELETED && e.Nav_ListPAll != null && e.Nav_ListPAll.Any(), fiterMT, "Nav_ListPAll");
 | 
						||
                        if (meetLast != null && meetLast.Nav_ListPAll != null && meetLast.Nav_ListPAll.Any())
 | 
						||
                        {
 | 
						||
                            var listUserId = meetLast.Nav_ListPAll.Where(e => e.PERSONNATURE == PersonNature.JOIN).Select(e => e.USER_ID).Distinct();
 | 
						||
                            listUsers = GetEntities<T_FM_USER>(e => listUserId.Contains(e.ID) && !e.IS_DELETED && e.ENABLE_STATUS == 0 && e.DEPARTMENT_ID.HasValue, null, "Nav_Department", "Nav_Person.Nav_Post").OrderBy(e => e.DEPARTMENT_ID).ToList();
 | 
						||
                        }
 | 
						||
                        else
 | 
						||
                        {
 | 
						||
                            //第一次 基层安委会
 | 
						||
                            var loginInfo = GetEntity<T_FM_USER>(LoginID.Value, new string[] { "Nav_Department", "Nav_Person.Nav_Post" });
 | 
						||
                            if (MEETINGTYPE == SCMEETINGTYPE.BasicSecurity)
 | 
						||
                            {
 | 
						||
                                ////基层安全会按部门/车间/班组点选或模糊查询,默认部门所有人员向下包含 
 | 
						||
                                ////获取 层级 及以下 所有人
 | 
						||
                                //listUsers = FMUserService.GetDownUser(loginInfo.DEPARTMENT_ID.Value, new string[] { "Nav_Department", "Nav_Person.Nav_Post" });
 | 
						||
 | 
						||
                                //部门负责人发起,参会人员为:部门内所属人员 + 车间安全员及负责人
 | 
						||
                                //车间负责人发起,参会人员为:车间内所属人员 + 班组长
 | 
						||
                                //班组负责人发起,参会人员为:班组内成员
 | 
						||
 | 
						||
                                //FMDepartmentType 部门 = 0, 车间 = 1, 班组 = 2, 公司 = 3
 | 
						||
                                switch (loginInfo.Nav_Department.DEPARTMENT_TYPE)
 | 
						||
                                {
 | 
						||
                                    case 0:
 | 
						||
                                    case 1:
 | 
						||
                                        listUsers = FMUserService.GetUserContentNextHead(loginInfo.DEPARTMENT_ID.Value);
 | 
						||
                                        break;
 | 
						||
                                    case 2:
 | 
						||
                                    case 3:
 | 
						||
                                        //班组 = 2, 公司 = 3
 | 
						||
                                        listUsers = FMUserService.GetDownUser(loginInfo.DEPARTMENT_ID.Value, new string[] { "Nav_Department", "Nav_Person.Nav_Post" });
 | 
						||
                                        break;
 | 
						||
                                    default:
 | 
						||
                                        break;
 | 
						||
                                }
 | 
						||
                            }
 | 
						||
                            else
 | 
						||
                            {
 | 
						||
                                //别的会议 第一次 自己选人
 | 
						||
                            }
 | 
						||
                        }
 | 
						||
                    }
 | 
						||
 | 
						||
                    if (listUsers != null && listUsers.Any() && (listUsers[0].Nav_Department == null || listUsers[0].Nav_Person == null))
 | 
						||
                    {
 | 
						||
                        var listDepID = listUsers.Where(e => e.DEPARTMENT_ID.HasValue).Select(e => e.DEPARTMENT_ID.Value).Distinct();
 | 
						||
                        var listPersonID = listUsers.Where(e => e.PERSON_ID.HasValue).Select(e => e.PERSON_ID.Value).Distinct();
 | 
						||
 | 
						||
                        if (listDepID.Any() && listPersonID.Any())
 | 
						||
                        {
 | 
						||
                            var listDep = GetEntities<T_FM_DEPARTMENT>(e => listDepID.Contains(e.ID), null);
 | 
						||
                            var listPer = GetEntities<T_FM_PERSON>(e => listPersonID.Contains(e.ID), null, "Nav_Post");
 | 
						||
                            foreach (var item in listUsers)
 | 
						||
                            {
 | 
						||
                                if (item.DEPARTMENT_ID.HasValue)
 | 
						||
                                    item.Nav_Department = listDep.FirstOrDefault(e => e.ID == item.DEPARTMENT_ID);
 | 
						||
                                if (item.PERSON_ID.HasValue)
 | 
						||
                                    item.Nav_Person = listPer.FirstOrDefault(e => e.ID == item.PERSON_ID);
 | 
						||
                            }
 | 
						||
                        }
 | 
						||
                    }
 | 
						||
 | 
						||
                    var MEETING_ID = new Guid(filter.Keyword);
 | 
						||
                    for (int i = 0; i < listUsers.Count; i++)
 | 
						||
                    {
 | 
						||
                        T_SC_MT_MEETING_PALL temp = new T_SC_MT_MEETING_PALL();
 | 
						||
                        temp.ID = Guid.NewGuid();
 | 
						||
                        temp.MEETING_ID = MEETING_ID;
 | 
						||
                        temp.USER_ID = listUsers[i].ID;
 | 
						||
                        temp.Nav_User = listUsers[i];
 | 
						||
                        temp.ORG_ID = filter.OrgId;
 | 
						||
                        temp.PERSONTYPE = SCMEETINGPERSONTYPE.ALL;
 | 
						||
                        listResult.Add(temp);
 | 
						||
                    }
 | 
						||
                }
 | 
						||
                return listResult;
 | 
						||
            });
 | 
						||
        }
 | 
						||
 | 
						||
 | 
						||
        /// <summary>
 | 
						||
        /// 根据会议内容 获取 会议意见
 | 
						||
        /// </summary>
 | 
						||
        /// <param name="filter"></param>
 | 
						||
        /// <returns></returns>
 | 
						||
        [HttpPost, Route("GetListContent")]
 | 
						||
        public JsonActionResult<List<T_SC_MT_MEETING_CONTENT>> GetListContent([FromBody] KeywordFilter filter)
 | 
						||
        {
 | 
						||
            return SafeExecute<List<T_SC_MT_MEETING_CONTENT>>(() =>
 | 
						||
            {
 | 
						||
                List<T_SC_MT_MEETING_CONTENT> listResult = new List<T_SC_MT_MEETING_CONTENT>();
 | 
						||
                if (!string.IsNullOrEmpty(filter.Keyword))
 | 
						||
                {
 | 
						||
                    List<Guid> ids = (from i in filter.Keyword.Split(new char[1] { ',' }, StringSplitOptions.RemoveEmptyEntries)
 | 
						||
                                      select new Guid(i)).ToList();
 | 
						||
 | 
						||
                    var MEETING_ID = new Guid(filter.Parameter1);
 | 
						||
                    var content = GetEntities<T_SC_MT_CONTENT_NAME>(e => ids.Contains(e.ID), null, null).OrderBy(e => e.ID);
 | 
						||
 | 
						||
                    if (content.Any())
 | 
						||
                    {
 | 
						||
                        List<T_SC_MT_CONTENT_NAME> listContentName = content.ToList();
 | 
						||
                        for (int i = 0; i < listContentName.Count; i++)
 | 
						||
                        {
 | 
						||
                            T_SC_MT_MEETING_CONTENT temp = new T_SC_MT_MEETING_CONTENT();
 | 
						||
                            temp.ID = Guid.NewGuid();
 | 
						||
                            temp.MEETING_ID = MEETING_ID;
 | 
						||
                            temp.Nav_ContentName = listContentName[i];
 | 
						||
                            listResult.Add(temp);
 | 
						||
                        }
 | 
						||
                    }
 | 
						||
                }
 | 
						||
                return listResult;
 | 
						||
            });
 | 
						||
        }
 | 
						||
 | 
						||
 | 
						||
 | 
						||
        /// <summary>
 | 
						||
        /// 
 | 
						||
        /// </summary>
 | 
						||
        /// <param name="entity"></param>
 | 
						||
        /// <returns></returns>
 | 
						||
        [HttpPost, Route("FullUpdate")]
 | 
						||
        public JsonActionResult<bool> FullUpdate([FromBody] T_SC_MT_MEETING entity)
 | 
						||
        {
 | 
						||
            return SafeExecute<bool>(() =>
 | 
						||
            {
 | 
						||
                if (entity.DEPARTMENT_ID == Guid.Empty)
 | 
						||
                {
 | 
						||
                    throw new Exception("会议部门不能为空或者超级管理员不能发布会议!");
 | 
						||
                }
 | 
						||
                Guid LoginID = APT.Infrastructure.Api.AppContext.CurrentSession.UserID.Value;
 | 
						||
                if (entity.USER_ID_ORIGINATOR != Guid.Empty && entity.USER_ID_ORIGINATOR != LoginID)
 | 
						||
                {
 | 
						||
                    string OriginatorName = entity.Nav_User_Originator != null ? entity.Nav_User_Originator.NAME : GetEntity<T_FM_USER>(entity.USER_ID_ORIGINATOR).NAME;
 | 
						||
                    throw new Exception("您不是" + OriginatorName + "不能操作此会议通知!");
 | 
						||
                }
 | 
						||
                if (entity.STATUS != PFStandardStatus.Draft && entity.STATUS != PFStandardStatus.Approving)
 | 
						||
                {
 | 
						||
                    throw new Exception("获取操作方式有误!");
 | 
						||
                }
 | 
						||
                if (entity.MEETINGTYPE == 0)
 | 
						||
                {
 | 
						||
                    throw new Exception("请选择会议类型!");
 | 
						||
                }
 | 
						||
 | 
						||
                if (entity.Nav_Department == null)
 | 
						||
                {
 | 
						||
                    entity.Nav_Department = GetEntity<T_FM_DEPARTMENT>(entity.DEPARTMENT_ID);
 | 
						||
                }
 | 
						||
                if (entity.LEVELVALUE == null)//entity.CheckLevel_ENUMS_ID == null || 
 | 
						||
                {
 | 
						||
                    if (entity.MEETINGTYPE == SCMEETINGTYPE.SafetyBoard)
 | 
						||
                    {
 | 
						||
                        //安委会 公司级
 | 
						||
                        entity.LEVELVALUE = 3;
 | 
						||
                    }
 | 
						||
                    else
 | 
						||
                    {
 | 
						||
                        var enums = GetEntity<T_FM_ENUMS>(e => e.CODE == "HMLevleEnum" && e.VALUE == entity.Nav_Department.DEPARTMENT_TYPE);
 | 
						||
                        entity.CheckLevel_ENUMS_ID = enums.ID;
 | 
						||
                        entity.LEVELVALUE = enums.VALUE;
 | 
						||
                    }
 | 
						||
                }
 | 
						||
 | 
						||
                var all = entity.Nav_ListPAll;
 | 
						||
                entity.Nav_ListPAll = null;
 | 
						||
 | 
						||
                if (all != null && all.Any())
 | 
						||
                {
 | 
						||
                    List<Guid> listUserID = new List<Guid>();
 | 
						||
                    int i = 0;
 | 
						||
                    foreach (var item in all)
 | 
						||
                    {
 | 
						||
                        if (item.IS_DELETED)
 | 
						||
                            continue;
 | 
						||
 | 
						||
                        i++;
 | 
						||
                        if (listUserID.Contains(item.USER_ID))
 | 
						||
                            throw new Exception("参会人员:行" + i + "重复!");
 | 
						||
                        else
 | 
						||
                            listUserID.Add(item.USER_ID);
 | 
						||
                    }
 | 
						||
                }
 | 
						||
 | 
						||
                var contentName = entity.Nav_ListMeetingContent;
 | 
						||
                if (contentName != null)
 | 
						||
                {
 | 
						||
                    foreach (var item in contentName)
 | 
						||
                    {
 | 
						||
                        item.Nav_ContentName = null;
 | 
						||
                    }
 | 
						||
                }
 | 
						||
 | 
						||
                entity.Nav_ListMeetingContent = null;
 | 
						||
                var filesOffice = entity.Nav_FilesOfficialseal;
 | 
						||
                entity.Nav_FilesOfficialseal = null;
 | 
						||
                var files = entity.Nav_Files;
 | 
						||
                entity.Nav_Files = null;
 | 
						||
                var PReView = entity.Nav_ListPReView;
 | 
						||
                entity.Nav_ListPReView = null;
 | 
						||
                if (entity.BEGIN_TIME.HasValue)
 | 
						||
                {
 | 
						||
                    if (entity.BEGIN_TIME.Value <= DateTime.Now)//.AddMinutes(-10)
 | 
						||
                    {
 | 
						||
                        throw new Exception("会议时间不能小于当前时间!");
 | 
						||
                    }
 | 
						||
                }
 | 
						||
 | 
						||
                var listThemes = entity.Nav_ListThemes;
 | 
						||
                if (entity.MEETINGTYPE == SCMEETINGTYPE.SafetyBoard || entity.MEETINGTYPE == SCMEETINGTYPE.BasicSecurity)
 | 
						||
                {
 | 
						||
                    if (listThemes == null || !listThemes.Any())
 | 
						||
                    {
 | 
						||
                        throw new Exception("请选择会议主题!");
 | 
						||
                    }
 | 
						||
                    else
 | 
						||
                    {
 | 
						||
                        entity.THEME = String.Join(",", entity.Nav_ListThemes.Select(e => e.Nav_MeetingTheme.NAME).ToList());
 | 
						||
                        entity.Nav_ListThemes = null;
 | 
						||
                        foreach (var item in listThemes)
 | 
						||
                        {
 | 
						||
                            item.Nav_MeetingTheme = null;
 | 
						||
                        }
 | 
						||
                    }
 | 
						||
                }
 | 
						||
 | 
						||
                if (!entity.USER_ID_HOST.HasValue)
 | 
						||
                {
 | 
						||
                    throw new Exception("请选择主持人!");
 | 
						||
                }
 | 
						||
 | 
						||
                if (entity.STATUS == PFStandardStatus.Draft)
 | 
						||
                {
 | 
						||
                    this.UnifiedCommit(() =>
 | 
						||
                    {
 | 
						||
                        if (entity != null)
 | 
						||
                            UpdateEntityNoCommit(entity);   //保存主表 NoCommit
 | 
						||
                        if (listThemes != null && listThemes.Any())//安委会主题
 | 
						||
                            BantchSaveEntityNoCommit(listThemes);
 | 
						||
                        if (all != null && all.Any())//参会人员
 | 
						||
                            BantchSaveEntityNoCommit(all);
 | 
						||
                        if (PReView != null && PReView.Any())//审批人员
 | 
						||
                            BantchSaveEntityNoCommit(PReView);
 | 
						||
                        if (contentName != null && contentName.Any())//意见
 | 
						||
                            BantchSaveEntityNoCommit(contentName);
 | 
						||
                        if (filesOffice != null && filesOffice.Any())//会议通知加盖公章
 | 
						||
                            BantchSaveEntityNoCommit(filesOffice);
 | 
						||
                        if (files != null && files.Any())//附件
 | 
						||
                            BantchSaveEntityNoCommit(files);
 | 
						||
                    });
 | 
						||
                }
 | 
						||
                else if (entity.STATUS == PFStandardStatus.Approving)
 | 
						||
                {
 | 
						||
                    //保存并发送
 | 
						||
                    if (!entity.BEGIN_TIME.HasValue)
 | 
						||
                    {
 | 
						||
                        throw new Exception("请选择会议时间!");
 | 
						||
                    }
 | 
						||
                    if (entity.MEETINGTYPE == SCMEETINGTYPE.FileReView && (PReView == null || !PReView.Any()))
 | 
						||
                    {
 | 
						||
                        throw new Exception("文件审核会中,评审人员不能未空!");
 | 
						||
                    }
 | 
						||
 | 
						||
                    //var sysFilter = new SystemCodeFilter();
 | 
						||
                    //sysFilter.CodeType = (int)PFCodeRuleType.会议通知;
 | 
						||
                    //sysFilter.Count = 1;
 | 
						||
                    //sysFilter.OrgId = entity.ORG_ID;
 | 
						||
                    //var serialCode = CodeRuleService.NewGenSerial(sysFilter);
 | 
						||
 | 
						||
                    if (entity.USER_ID_RECORDER == null)
 | 
						||
                    {
 | 
						||
                        throw new Exception("请选择记录人!");
 | 
						||
                    }
 | 
						||
                    //if (filesOffice == null)
 | 
						||
                    //{
 | 
						||
                    //    throw new Exception("请上传附件【加盖公章会议通知】!");
 | 
						||
                    //}
 | 
						||
                    if (all == null || !all.Any())
 | 
						||
                    {
 | 
						||
                        throw new Exception("请选择参会人员!");
 | 
						||
                    }
 | 
						||
 | 
						||
                    //if (all == null || !all.Any())
 | 
						||
                    //{
 | 
						||
                    //    throw new Exception("参会人员不能未空!");
 | 
						||
                    //}
 | 
						||
 | 
						||
                    //if (PReView != null && PReView.Any())
 | 
						||
                    //{
 | 
						||
                    //    foreach (var item in PReView)
 | 
						||
                    //    {
 | 
						||
                    //        var check = all.Where(e => e.USER_ID == item.USER_ID);
 | 
						||
                    //        if (check != null && check.Any())
 | 
						||
                    //        {
 | 
						||
                    //        }
 | 
						||
                    //    }
 | 
						||
                    //}
 | 
						||
 | 
						||
 | 
						||
 | 
						||
                    var listAllJoin = all.ToList();
 | 
						||
                    List<Guid> listUserId = new List<Guid>();
 | 
						||
                    for (int i = listAllJoin.Count - 1; i > -1; i--)
 | 
						||
                    {
 | 
						||
                        if (listAllJoin[i].IS_DELETED)
 | 
						||
                            continue;
 | 
						||
 | 
						||
                        if (listUserId.Contains(listAllJoin[i].USER_ID))
 | 
						||
                        {
 | 
						||
                            //姓名重复 删除
 | 
						||
                            all.Remove(listAllJoin[i]);
 | 
						||
                        }
 | 
						||
                        else
 | 
						||
                        {
 | 
						||
                            listUserId.Add(listAllJoin[i].USER_ID);
 | 
						||
                        }
 | 
						||
                    }
 | 
						||
 | 
						||
                    //评审人 添加到参加人员中
 | 
						||
                    if (PReView != null && PReView.Any())
 | 
						||
                    {
 | 
						||
                        foreach (var item in PReView)
 | 
						||
                        {
 | 
						||
                            item.Nav_User = null;
 | 
						||
                        }
 | 
						||
 | 
						||
                        var Review = PReView.ToList();
 | 
						||
                        //评审人员 加入到 所有人员中
 | 
						||
                        for (int i = 0; i < Review.Count; i++)
 | 
						||
                        {
 | 
						||
                            //不能和参会人 重复
 | 
						||
                            var check = all.Where(e => e.USER_ID == Review[i].USER_ID && !e.IS_DELETED);
 | 
						||
                            if (check != null && check.Any())
 | 
						||
                            {
 | 
						||
                                var reUser = GetEntity<T_FM_USER>(Review[i].USER_ID);
 | 
						||
                                throw new Exception("评审人员不能和参会人员重复【" + reUser.NAME + "】!");
 | 
						||
                            }
 | 
						||
                            //自己不能重复
 | 
						||
                            var userCheck = Review.FirstOrDefault(e => e.ID != Review[i].ID && e.USER_ID == Review[i].USER_ID && !e.IS_DELETED);
 | 
						||
                            if (userCheck != null)
 | 
						||
                            {
 | 
						||
                                var reUser = GetEntity<T_FM_USER>(Review[i].USER_ID);
 | 
						||
                                throw new Exception("评审人员不能重复【" + reUser.NAME + "】!");
 | 
						||
                            }
 | 
						||
                            if (!Review[i].IS_DELETED && !listUserId.Contains(Review[i].USER_ID))
 | 
						||
                            {
 | 
						||
                                //listUserId.Add(Review[i].USER_ID);
 | 
						||
                                T_SC_MT_MEETING_PALL model = new T_SC_MT_MEETING_PALL();
 | 
						||
                                model.ID = Guid.NewGuid();
 | 
						||
                                model.MEETING_ID = Review[i].MEETING_ID;
 | 
						||
                                model.PERSONTYPE = SCMEETINGPERSONTYPE.REVIEW;
 | 
						||
                                model.USER_ID = Review[i].USER_ID;
 | 
						||
                                model.ORG_ID = Review[i].ORG_ID;
 | 
						||
                                all.Add(model);
 | 
						||
                            }
 | 
						||
                        }
 | 
						||
                    }
 | 
						||
 | 
						||
                    #region    添加主持人 和 记录人
 | 
						||
 | 
						||
                    T_SC_MT_MEETING_PALL modelHost = new T_SC_MT_MEETING_PALL();
 | 
						||
                    modelHost.ID = Guid.NewGuid();
 | 
						||
                    modelHost.MEETING_ID = entity.ID;
 | 
						||
                    modelHost.PERSONTYPE = SCMEETINGPERSONTYPE.ALL;
 | 
						||
                    modelHost.PERSONNATURE = PersonNature.HOST;
 | 
						||
                    modelHost.USER_ID = entity.USER_ID_HOST.Value;
 | 
						||
                    modelHost.ORG_ID = entity.ORG_ID;
 | 
						||
                    all.Add(modelHost);
 | 
						||
 | 
						||
 | 
						||
                    T_SC_MT_MEETING_PALL modelRecorder = new T_SC_MT_MEETING_PALL();
 | 
						||
                    modelRecorder.ID = Guid.NewGuid();
 | 
						||
                    modelRecorder.MEETING_ID = entity.ID;
 | 
						||
                    modelRecorder.PERSONTYPE = SCMEETINGPERSONTYPE.ALL;
 | 
						||
                    modelRecorder.PERSONNATURE = PersonNature.RECORDER;
 | 
						||
                    modelRecorder.USER_ID = entity.USER_ID_RECORDER.Value;
 | 
						||
                    modelRecorder.ORG_ID = entity.ORG_ID;
 | 
						||
                    //modelRecorder.JOINRESULT = JoinTaskResult.Join;//记录人 默认 参加
 | 
						||
                    all.Add(modelRecorder);
 | 
						||
 | 
						||
                    #endregion
 | 
						||
 | 
						||
                    //Task
 | 
						||
                    //审批流
 | 
						||
                    //entity.APPROVE_ID = Guid.NewGuid();
 | 
						||
                    /*string serialCode = string.Empty;*/
 | 
						||
 | 
						||
                    #region     旧版带审批
 | 
						||
                    ////公司级 3   部门级 0   车间级 1    班组级 2
 | 
						||
                    ////只有明确是车间 走车间级 否则走部门级
 | 
						||
                    //string param = entity.LEVELVALUE.Value.ToString();
 | 
						||
                    //if (param == "0")
 | 
						||
                    //{
 | 
						||
                    //    //如果是安环部  找不到 部门负责人  param 改变为3
 | 
						||
                    //    var dep = GetEntity<T_FM_DEPARTMENT>(entity.DEPARTMENT_ID);
 | 
						||
                    //    if (dep.DEPARTMENT_STATUS == 2)//安全部门
 | 
						||
                    //    {
 | 
						||
                    //        param = "3";
 | 
						||
                    //    }
 | 
						||
                    //}
 | 
						||
                    //MFlowPermitService.InsertApprove(serialCode, "SC028", param, entity.ID, "SC028_SHOWPRINT", entity.TaskID, true, () =>
 | 
						||
                    //{
 | 
						||
                    //    if (entity != null)
 | 
						||
                    //        UpdateEntityNoCommit(entity);   //保存主表
 | 
						||
                    //    if (listThemes != null && listThemes.Any())//安委会主题
 | 
						||
                    //        BantchSaveEntityNoCommit(listThemes);
 | 
						||
                    //    if (all != null && all.Any())//参会人员
 | 
						||
                    //        BantchSaveEntityNoCommit(all);
 | 
						||
                    //    if (PReView != null && PReView.Any())//审批人员
 | 
						||
                    //        BantchSaveEntityNoCommit(PReView);
 | 
						||
                    //    if (contentName != null && contentName.Any())//意见
 | 
						||
                    //        BantchSaveEntityNoCommit(contentName);
 | 
						||
                    //    if (filesOffice != null && filesOffice.Any())//会议通知加盖公章
 | 
						||
                    //        BantchSaveEntityNoCommit(filesOffice);
 | 
						||
                    //    if (files != null && files.Any())//附件
 | 
						||
                    //        BantchSaveEntityNoCommit(files);
 | 
						||
                    //}, entity.APPROVE_ID, null, null, null, null, null, null);
 | 
						||
                    //// 审批完 回调方法  SC/SCMTMeeting/MeetingNoticeBack  
 | 
						||
                    #endregion
 | 
						||
 | 
						||
                    T_FM_NOTIFICATION_TASK taskEnd = null;
 | 
						||
                    if (entity.TaskID != Guid.Empty)
 | 
						||
                    {
 | 
						||
                        taskEnd = FMNotificActionTaskService.GetEntityTask(entity.TaskID, "SC028_SHOWPRINT");
 | 
						||
                    }
 | 
						||
 | 
						||
 | 
						||
                    #region     
 | 
						||
 | 
						||
                    //状态修改  给 所有参会人 发送(参加、请假)待办
 | 
						||
                    //Guid MeetingId = new Guid(id);
 | 
						||
                    //T_SC_MT_MEETING entity = GetEntity<T_SC_MT_MEETING>(MeetingId, new string[] { "Nav_ListPAll.Nav_User", "Nav_ListPReView.Nav_User", "Nav_UserRecorder", "Nav_UserHost" });// 参会人 评审人 记录人  主持人
 | 
						||
 | 
						||
                    //entity.STATUS = PFStandardStatus.Archived;//变成已归档
 | 
						||
                    //                                          //如果是年度生产作业计划触发的,审批结束后发今日提醒给企管部负责人
 | 
						||
 | 
						||
 | 
						||
                    T_FM_NOTIFICATION_TASK sendNotice = null;//会议类型对应的今日提醒
 | 
						||
                    if (entity.CREACTTYPE == CREACTTYPEEnum.YearPlanAdd)
 | 
						||
                    {
 | 
						||
                        var userInfo = this.GetEntity<T_FM_PARAM_SET>(t => t.NAME == "企管部负责人", "Nav_User");
 | 
						||
                        if (userInfo != null)
 | 
						||
                        {
 | 
						||
                            //sendNotice = FMNotificActionTaskService.InsertUserNoticeTaskModel("请上传下年度生产作业计划至文件库。", entity.ID, entity.ORG_ID, userInfo.USER_ID.Value, userInfo.Nav_User.NAME, DateTime.Now, DateTime.Now.AddDays(30), (int)FMNoticeTypeEnum.今日提醒, "PF135");
 | 
						||
                            sendNotice = FMNotificActionTaskService.InsertUserNoticeTaskModel("请上传下年度生产作业计划至文件库。", entity.ID, entity.ORG_ID, userInfo.USER_ID.Value, userInfo.Nav_User.NAME, DateTime.Now, (int)FMNoticeTypeEnum.今日提醒, "PF135", FMTASKTYPE.MT_MINUTES_Notice);
 | 
						||
                        }
 | 
						||
                    }
 | 
						||
 | 
						||
                    //  XXXX 会  参会通知  
 | 
						||
                    string perNoticeTitle = entity.MEETINGTYPE.GetDescription() + "参会通知";
 | 
						||
                    List<Guid> ListNoticeAll = new List<Guid>();
 | 
						||
                    List<string> ListNoticeAllNAME = new List<string>();
 | 
						||
 | 
						||
                    var listUser = all.Where(e => !e.IS_DELETED).Select(e => e.USER_ID).ToList();
 | 
						||
 | 
						||
                    for (int i = 0; i < listUser.Count; i++)
 | 
						||
                    {
 | 
						||
                        if (ListNoticeAll.Contains(listUser[i]))
 | 
						||
                        {
 | 
						||
                            continue;
 | 
						||
                        }
 | 
						||
                        ListNoticeAll.Add(listUser[i]);
 | 
						||
                        //ListNoticeAllNAME.Add(listUser[i].NAME);
 | 
						||
                    }
 | 
						||
                    //主持人
 | 
						||
                    if (!ListNoticeAll.Contains(entity.USER_ID_HOST.Value))
 | 
						||
                    {
 | 
						||
                        ListNoticeAll.Add(entity.USER_ID_HOST.Value);
 | 
						||
                        //ListNoticeAllNAME.Add(entity.Nav_UserHost.NAME);
 | 
						||
                    }
 | 
						||
                    //记录人
 | 
						||
                    if (!ListNoticeAll.Contains(entity.USER_ID_RECORDER.Value))
 | 
						||
                    {
 | 
						||
                        ListNoticeAll.Add(entity.USER_ID_RECORDER.Value);
 | 
						||
                        //ListNoticeAllNAME.Add(entity.Nav_UserRecorder.NAME);
 | 
						||
                    }
 | 
						||
                    //评审人
 | 
						||
                    if (entity.Nav_ListPReView != null && entity.Nav_ListPReView.Any())
 | 
						||
                    {
 | 
						||
                        var ReView = entity.Nav_ListPReView.ToList();
 | 
						||
                        for (int i = 0; i < ReView.Count; i++)
 | 
						||
                        {
 | 
						||
                            if (ListNoticeAll.Contains(ReView[i].USER_ID))
 | 
						||
                            {
 | 
						||
                                continue;
 | 
						||
                            }
 | 
						||
                            ListNoticeAll.Add(ReView[i].USER_ID);
 | 
						||
                            //ListNoticeAllNAME.Add(ReView[i].Nav_User.NAME);
 | 
						||
                        }
 | 
						||
                    }
 | 
						||
 | 
						||
                    Dictionary<Guid, string> dicUserPhone = null;
 | 
						||
                    if (entity.IS_SEND)
 | 
						||
                    {
 | 
						||
                        dicUserPhone = new Dictionary<Guid, string>();
 | 
						||
                    }
 | 
						||
 | 
						||
                    if (ListNoticeAll != null && ListNoticeAll.Any())
 | 
						||
                    {
 | 
						||
                        var listUserTask = GetEntities<T_FM_USER>(e => ListNoticeAll.Contains(e.ID) && e.ENABLE_STATUS == 0, null, null);
 | 
						||
                        T_FM_USER userTask = null;
 | 
						||
                        for (int i = 0; i < ListNoticeAll.Count; i++)
 | 
						||
                        {
 | 
						||
                            userTask = listUserTask.FirstOrDefault(e => e.ID == ListNoticeAll[i]);
 | 
						||
                            if (userTask == null)
 | 
						||
                            {
 | 
						||
                                ListNoticeAll.RemoveAt(i);
 | 
						||
                                i--;
 | 
						||
                            }
 | 
						||
                            else
 | 
						||
                            {
 | 
						||
                                ListNoticeAllNAME.Add(userTask.NAME);
 | 
						||
                                if (entity.IS_SEND && !dicUserPhone.ContainsKey(userTask.ID))
 | 
						||
                                {
 | 
						||
                                    dicUserPhone.Add(userTask.ID, userTask.PHONE);
 | 
						||
                                }
 | 
						||
                            }
 | 
						||
                        }
 | 
						||
                    }
 | 
						||
                    //给责任人 发送通知
 | 
						||
                    List<T_FM_NOTIFICATION_TASK> listNoticeDeals = FMNotificActionTaskService.InsertUserNoticeTaskModels(perNoticeTitle, entity.ID, entity.ORG_ID, ListNoticeAll, ListNoticeAllNAME, DateTime.Now, entity.BEGIN_TIME.Value, (int)FMNoticeTypeEnum.消息, "SC028_SHOWPRINT");
 | 
						||
 | 
						||
                    //不要做默认参加
 | 
						||
                    //foreach (var item in listNoticeDeals)
 | 
						||
                    //{
 | 
						||
                    //    if (item.USER_ID == LoginID)
 | 
						||
                    //    {
 | 
						||
                    //        item.NOTICE_STATUS = 0;
 | 
						||
                    //        item.TASK_DT = DateTime.Now;
 | 
						||
                    //        break;
 | 
						||
                    //    }
 | 
						||
                    //}
 | 
						||
                    //foreach (var item in all)
 | 
						||
                    //{
 | 
						||
                    //    if (item.USER_ID == LoginID)
 | 
						||
                    //    {
 | 
						||
                    //        item.JOINRESULT = JoinTaskResult.Join;
 | 
						||
                    //        break;
 | 
						||
                    //    }
 | 
						||
                    //}
 | 
						||
                    //如果会议已经开始了 待办变成已完成
 | 
						||
                    if (entity.BEGIN_TIME.Value < DateTime.Now)
 | 
						||
                    {
 | 
						||
                        foreach (var item in listNoticeDeals)
 | 
						||
                        {
 | 
						||
                            item.NOTICE_STATUS = 1;
 | 
						||
                        }
 | 
						||
                    }
 | 
						||
 | 
						||
                    //发起人 和 记录人  默认 参加
 | 
						||
 | 
						||
                    var taskLogin = listNoticeDeals.FirstOrDefault(e => e.USER_ID == entity.USER_ID_ORIGINATOR);
 | 
						||
                    if (taskLogin != null)
 | 
						||
                    {
 | 
						||
                        taskLogin.NOTICE_STATUS = 1;
 | 
						||
                        taskLogin.TASK_DT = DateTime.Now;
 | 
						||
 | 
						||
                        //发起人 默认参加
 | 
						||
                        T_SC_MT_MEETING_PALL modelORIGINATOR = all.FirstOrDefault(e => e.USER_ID == entity.USER_ID_ORIGINATOR);
 | 
						||
                        if (modelORIGINATOR != null)
 | 
						||
                        {
 | 
						||
                            modelORIGINATOR.JOINRESULT = JoinTaskResult.Join;
 | 
						||
                        }
 | 
						||
                    }
 | 
						||
 | 
						||
                    ////var taskRECORDER = listNoticeDeals.FirstOrDefault(e => e.USER_ID == entity.USER_ID_RECORDER);
 | 
						||
                    ////if (taskRECORDER != null)
 | 
						||
                    ////{
 | 
						||
                    ////    taskRECORDER.NOTICE_STATUS = 1;
 | 
						||
                    ////    taskRECORDER.TASK_DT = DateTime.Now;
 | 
						||
                    ////}
 | 
						||
 | 
						||
                    //this.UnifiedCommit(() =>
 | 
						||
                    //{
 | 
						||
                    //    if (entity != null)
 | 
						||
                    //        UpdateEntityNoCommit(entity);
 | 
						||
                    //    if (listNoticeDeals != null && listNoticeDeals.Any())//隐患上报明细表
 | 
						||
                    //        BantchSaveEntity(listNoticeDeals);
 | 
						||
                    //    if (sendNotice != null)
 | 
						||
                    //        UpdateEntityNoCommit(sendNotice);
 | 
						||
                    //});
 | 
						||
                    //return true;
 | 
						||
 | 
						||
                    #endregion
 | 
						||
                    if (listThemes != null && listThemes.Any())
 | 
						||
                    {
 | 
						||
                        foreach (var item in listThemes)
 | 
						||
                        {
 | 
						||
                            item.Nav_MeetingTheme = null;
 | 
						||
                        }
 | 
						||
                    }
 | 
						||
 | 
						||
                    if (entity.CREACTTYPE == null)
 | 
						||
                        entity.CREACTTYPE = CREACTTYPEEnum.UserAdd;
 | 
						||
 | 
						||
                    if (string.IsNullOrEmpty(entity.CODE))
 | 
						||
                        entity.CODE = "HY" + DateTime.Now.ToString("yyyyMMddHHmm");
 | 
						||
 | 
						||
                    #region    判断对接模块 修改 CREACTTYPE == CREACTTYPEEnum.
 | 
						||
 | 
						||
                    if ((entity.CREACTTYPE == CREACTTYPEEnum.System || entity.CREACTTYPE == CREACTTYPEEnum.UserAdd) && !string.IsNullOrEmpty(entity.CONTENT32))
 | 
						||
                    {
 | 
						||
                        //普通会议、文件审核会、文件评审会 会议内容是选择的 
 | 
						||
                        //安委会、基层安全会  会议内容输入
 | 
						||
                        CREACTTYPEEnum? CREACTTYPE = GetCREACTTYPE(entity.MEETINGTYPE, entity.CONTENT32);//根据会议内容 触发对应表单
 | 
						||
                        if (CREACTTYPE != null)
 | 
						||
                        {
 | 
						||
                            entity.CREACTTYPE = CREACTTYPE;
 | 
						||
                        }
 | 
						||
                    }
 | 
						||
                    #endregion
 | 
						||
 | 
						||
                    #region    短信发送
 | 
						||
                    List<T_FM_NOTICE> listNotice = null;
 | 
						||
                    if (entity.IS_SEND)
 | 
						||
                    {
 | 
						||
                        entity.IS_SENDED = true;
 | 
						||
                        listNotice = new List<T_FM_NOTICE>();
 | 
						||
                        Guid Key = Guid.NewGuid();
 | 
						||
                        //所有的人 添加 参会通知
 | 
						||
                        foreach (var item in listNoticeDeals)
 | 
						||
                        {
 | 
						||
                            if (item.USER_ID == LoginID)
 | 
						||
                                continue;
 | 
						||
 | 
						||
                            listNotice.Add(new T_FM_NOTICE()
 | 
						||
                            {
 | 
						||
                                ID = Guid.NewGuid(),
 | 
						||
                                KEY = Key,
 | 
						||
                                ORG_ID = item.ORG_ID,
 | 
						||
                                CREATE_TIME = DateTime.Now,
 | 
						||
                                CREATER_ID = LoginID,
 | 
						||
                                NOTICETYPE = NOTICETYPE.Meeting,
 | 
						||
                                TEMPLATE_ID = NOTICETYPE.Meeting.GetDescription(),
 | 
						||
                                TABLENAME = "T_SC_MT_MEETING",
 | 
						||
                                DATA_ID = entity.ID,
 | 
						||
                                USER_ID = item.USER_ID,
 | 
						||
                                USERNAME = item.USER_NAME,
 | 
						||
                                TEL = dicUserPhone.ContainsKey(item.USER_ID) ? dicUserPhone[item.USER_ID] : "",
 | 
						||
                                NOTICE_STATUS = FMNoticeStatus.等待发送,
 | 
						||
                                TRYCOUNT = 0,
 | 
						||
                                TITLE = item.NOTICE_TITLE + "[" + entity.BEGIN_TIME.Value.ToString("yyyy-MM-dd HH:MM") + "]",
 | 
						||
                                ENDDT = item.TASK_ENDDT
 | 
						||
                            });
 | 
						||
                        }
 | 
						||
                    }
 | 
						||
 | 
						||
                    #endregion
 | 
						||
 | 
						||
                    this.UnifiedCommit(() =>
 | 
						||
                    {
 | 
						||
                        if (entity != null)
 | 
						||
                            UpdateEntityNoCommit(entity);   //保存主表
 | 
						||
                        if (listThemes != null && listThemes.Any())//安委会主题
 | 
						||
                            BantchSaveEntityNoCommit(listThemes);
 | 
						||
                        if (all != null && all.Any())//参会人员
 | 
						||
                            BantchSaveEntityNoCommit(all);
 | 
						||
                        if (PReView != null && PReView.Any())//审批人员
 | 
						||
                            BantchSaveEntityNoCommit(PReView);
 | 
						||
                        if (contentName != null && contentName.Any())//意见
 | 
						||
                            BantchSaveEntityNoCommit(contentName);
 | 
						||
                        if (filesOffice != null && filesOffice.Any())//会议通知加盖公章
 | 
						||
                            BantchSaveEntityNoCommit(filesOffice);
 | 
						||
                        if (files != null && files.Any())//附件
 | 
						||
                            BantchSaveEntityNoCommit(files);
 | 
						||
                        if (taskEnd != null)
 | 
						||
                            UpdateEntityNoCommit(taskEnd);   //保存主表
 | 
						||
                        if (listNoticeDeals != null && listNoticeDeals.Any())//参会通知
 | 
						||
                            BantchSaveEntity(listNoticeDeals);
 | 
						||
                        if (sendNotice != null)//会议类型对应的今日提醒
 | 
						||
                            UpdateEntityNoCommit(sendNotice);
 | 
						||
                        if (listNotice != null && listNotice.Any())//会议短信
 | 
						||
                            BantchSaveEntityNoCommit(listNotice);
 | 
						||
                    });
 | 
						||
 | 
						||
                    // 审批完 回调方法  SC/SCMTMeeting/MeetingNoticeBack 
 | 
						||
 | 
						||
                    if (entity.IS_SEND)
 | 
						||
                    {
 | 
						||
                        try
 | 
						||
                        {
 | 
						||
                            //短信发送
 | 
						||
                            FMNoticeService.SendMsg(NOTICETYPE.Meeting, entity.ID);
 | 
						||
                        }
 | 
						||
                        catch { }
 | 
						||
                    }
 | 
						||
                }
 | 
						||
                else
 | 
						||
                {
 | 
						||
                    throw new Exception("会议通知状态【" + entity.STATUS.GetDescription() + "】操作失败!");
 | 
						||
                }
 | 
						||
 | 
						||
                return true;
 | 
						||
            });
 | 
						||
        }
 | 
						||
 | 
						||
        /// <summary>
 | 
						||
        /// 根据检查内容 返回会议生成方式 
 | 
						||
        /// </summary>
 | 
						||
        /// <param name="MEETINGTYPE"></param>
 | 
						||
        /// <param name="CONTENT"></param>
 | 
						||
        /// <returns></returns>
 | 
						||
        private CREACTTYPEEnum? GetCREACTTYPE(SCMEETINGTYPE MEETINGTYPE, string CONTENT)
 | 
						||
        {
 | 
						||
            if (string.IsNullOrEmpty(CONTENT))
 | 
						||
                return null;
 | 
						||
            switch (MEETINGTYPE)
 | 
						||
            {
 | 
						||
                case SCMEETINGTYPE.Ordinary:
 | 
						||
                    if (CONTENT.Contains(ConnToOther.ToOG034EditName.GetDescription()))
 | 
						||
                        return CREACTTYPEEnum.ToOG034Edit;
 | 
						||
                    if (CONTENT.Contains(ConnToOther.安全生产方针讨论.GetDescription()))
 | 
						||
                        return CREACTTYPEEnum.ToPT014;
 | 
						||
                    if (CONTENT.Contains(ConnToOther.认可与奖励评价.GetDescription()))
 | 
						||
                        return CREACTTYPEEnum.ToOG028;
 | 
						||
                    if (CONTENT.Contains(ConnToOther.风险评价小组成立.GetDescription()))
 | 
						||
                        return CREACTTYPEEnum.ToHM134;
 | 
						||
                    if (CONTENT.Contains(ConnToOther.设备设施维修计划讨论.GetDescription()))
 | 
						||
                        return null;
 | 
						||
                    if (CONTENT.Contains(ConnToOther.设备设施维修工作方案讨论.GetDescription()))
 | 
						||
                        return null;
 | 
						||
                    if (CONTENT.Contains(ConnToOther.安全投入论证.GetDescription()))
 | 
						||
                        return null;
 | 
						||
                    if (CONTENT.Contains(ConnToOther.应急机构成立及人员任命.GetDescription()))
 | 
						||
                        return CREACTTYPEEnum.ToOG010;
 | 
						||
                    if (CONTENT.Contains(ConnToOther.成立矿山救护队.GetDescription()))
 | 
						||
                        return null;
 | 
						||
                    if (CONTENT.Contains(ConnToOther.潜在紧急事件讨论.GetDescription()))
 | 
						||
                        return CREACTTYPEEnum.ToCM018;
 | 
						||
                    if (CONTENT.Contains(ConnToOther.应急能力评估.GetDescription()))
 | 
						||
                        return CREACTTYPEEnum.ToCM026;
 | 
						||
                    if (CONTENT.Contains(ConnToOther.应急演练计划讨论.GetDescription()))
 | 
						||
                        return CREACTTYPEEnum.ToCM002;
 | 
						||
                    if (CONTENT.Contains(ConnToOther.应急演练方案讨论.GetDescription()))
 | 
						||
                        return CREACTTYPEEnum.ToWJSH;
 | 
						||
 | 
						||
 | 
						||
                    //if (CONTENT.Contains(ConnToOther.事故调查小组成立.GetDescription()))
 | 
						||
                    //    return CREACTTYPEEnum.ToAE006;
 | 
						||
                    //if (CONTENT.Contains(ConnToOther.事故调查讨论.GetDescription()))
 | 
						||
                    //    return CREACTTYPEEnum.ToAE008;
 | 
						||
                    //if (CONTENT.Contains(ConnToOther.调查报告讨论.GetDescription()))
 | 
						||
                    //    return CREACTTYPEEnum.ToAE018;
 | 
						||
 | 
						||
                    //事故事件与会议关联总体流程
 | 
						||
                    //事故事件上报[AE006] => 审批 => 触发【事故调查小组成立】会议 => 【事故调查小组成员AE008】表单=> 触发【事故调查讨论】会议 => 【勘察记录表 AE018】表单  => 触发【调查报告讨论】会议 => 【事故事件调查结果填报表AE010】
 | 
						||
                    if (CONTENT.Contains(ConnToOther.事故调查小组成立.GetDescription()))
 | 
						||
                        return CREACTTYPEEnum.ToAE008;
 | 
						||
                    if (CONTENT.Contains(ConnToOther.事故调查讨论.GetDescription()))
 | 
						||
                        return CREACTTYPEEnum.ToAE018;
 | 
						||
                    if (CONTENT.Contains(ConnToOther.调查报告讨论.GetDescription()))
 | 
						||
                        return CREACTTYPEEnum.ToAE010;
 | 
						||
 | 
						||
 | 
						||
                    if (CONTENT.Contains(ConnToOther.事故事件统计分析.GetDescription()))
 | 
						||
                        return null;
 | 
						||
                    if (CONTENT.Contains(ConnToOther.事故事件回顾.GetDescription()))
 | 
						||
                        return null;
 | 
						||
                    if (CONTENT.Contains(ConnToOther.安全检查表的回顾与更新.GetDescription()))
 | 
						||
                        return CREACTTYPEEnum.ToBS032;
 | 
						||
                    if (CONTENT.Contains(ConnToOther.危险源辨识与风险评价回顾.GetDescription()))
 | 
						||
                        return CREACTTYPEEnum.ToHM062_HM102;
 | 
						||
                    if (CONTENT.Contains(ConnToOther.年度生产作业计划讨论会.GetDescription()))
 | 
						||
                        return CREACTTYPEEnum.ToNotice;
 | 
						||
                    if (CONTENT.Contains(ConnToOther.变化管理讨论.GetDescription()))
 | 
						||
                        return CREACTTYPEEnum.ToPR023;
 | 
						||
 | 
						||
                    break;
 | 
						||
                case SCMEETINGTYPE.FileAudit:
 | 
						||
 | 
						||
                    if (CONTENT.Contains(ConnToOther.法律法规更新评审会.GetDescription()))
 | 
						||
                        return CREACTTYPEEnum.ToLR010;
 | 
						||
                    if (CONTENT.Contains(ConnToOther.合理化建议评审会.GetDescription()))
 | 
						||
                        return CREACTTYPEEnum.ToOG060;
 | 
						||
                    if (CONTENT.Contains(ConnToOther.安全标准化评审会.GetDescription()))
 | 
						||
                        return CREACTTYPEEnum.ToPE027;
 | 
						||
                    if (CONTENT.Contains(ConnToOther.尾矿勘察文件评审.GetDescription()))
 | 
						||
                        return CREACTTYPEEnum.ToWJSH;
 | 
						||
                    if (CONTENT.Contains(ConnToOther.尾矿安全评价文件评审.GetDescription()))
 | 
						||
                        return CREACTTYPEEnum.ToWJSH;
 | 
						||
                    if (CONTENT.Contains(ConnToOther.回采勘察文件评审.GetDescription()))
 | 
						||
                        return CREACTTYPEEnum.ToTL014;
 | 
						||
                    if (CONTENT.Contains(ConnToOther.尾矿回采安全预评价文件评审.GetDescription()))
 | 
						||
                        return CREACTTYPEEnum.ToWJSH;
 | 
						||
                    if (CONTENT.Contains(ConnToOther.尾矿闭库安全现状评价文件评审.GetDescription()))
 | 
						||
                        return CREACTTYPEEnum.ToWJSH;
 | 
						||
                    if (CONTENT.Contains(ConnToOther.许可作业范围评审会.GetDescription()))
 | 
						||
                        return CREACTTYPEEnum.ToHM104;
 | 
						||
                    if (CONTENT.Contains(ConnToOther.安全生产责任制评审会.GetDescription()))
 | 
						||
                        return CREACTTYPEEnum.ToOG002;
 | 
						||
                    if (CONTENT.Contains(ConnToOther.尾矿防震技术论证报告评审会.GetDescription()))
 | 
						||
                        return CREACTTYPEEnum.ToWJSH;
 | 
						||
                    break;
 | 
						||
 | 
						||
                case SCMEETINGTYPE.FileReView:
 | 
						||
                    if (CONTENT.Contains(ConnToOther.安全评价文件审核.GetDescription()))
 | 
						||
                        return CREACTTYPEEnum.ToWJSH;
 | 
						||
                    if (CONTENT.Contains(ConnToOther.设计文件审核_露天矿山选厂.GetDescription()))
 | 
						||
                        return CREACTTYPEEnum.ToPR002;
 | 
						||
                    if (CONTENT.Contains(ConnToOther.应急预案审核.GetDescription()))
 | 
						||
                        return CREACTTYPEEnum.ToSC067;
 | 
						||
                    if (CONTENT.Contains(ConnToOther.勘察文件审核_尾矿.GetDescription()))
 | 
						||
                        return CREACTTYPEEnum.ToWJSH;
 | 
						||
                    if (CONTENT.Contains(ConnToOther.勘察文件审核_露天矿山.GetDescription()))
 | 
						||
                        return CREACTTYPEEnum.ToWJSH;
 | 
						||
                    if (CONTENT.Contains(ConnToOther.设计文件审核_尾矿.GetDescription()))
 | 
						||
                        return CREACTTYPEEnum.ToPR002_2;
 | 
						||
                    if (CONTENT.Contains(ConnToOther.回采勘察文件审核_尾矿.GetDescription()))
 | 
						||
                        return CREACTTYPEEnum.ToWJSH;
 | 
						||
                    if (CONTENT.Contains(ConnToOther.回采安全预评价文件审核_尾矿.GetDescription()))
 | 
						||
                        return CREACTTYPEEnum.ToWJSH;
 | 
						||
                    if (CONTENT.Contains(ConnToOther.回采设计文件审核_尾矿.GetDescription()))
 | 
						||
                        return CREACTTYPEEnum.ToPR002_3;
 | 
						||
                    if (CONTENT.Contains(ConnToOther.闭库安全现状评价文件审核_尾矿.GetDescription()))
 | 
						||
                        return CREACTTYPEEnum.ToWJSH;
 | 
						||
                    if (CONTENT.Contains(ConnToOther.闭库设计文件审核_尾矿.GetDescription()))
 | 
						||
                        return CREACTTYPEEnum.ToPR002_4;
 | 
						||
                    if (CONTENT.Contains(ConnToOther.所有的制度文件审核会.GetDescription()))
 | 
						||
                        return null;
 | 
						||
                    break;
 | 
						||
 | 
						||
                case SCMEETINGTYPE.SafetyBoard:
 | 
						||
                    break;
 | 
						||
                case SCMEETINGTYPE.BasicSecurity:
 | 
						||
                    break;
 | 
						||
                default:
 | 
						||
                    break;
 | 
						||
            }
 | 
						||
 | 
						||
            return null;
 | 
						||
        }
 | 
						||
 | 
						||
        /// <summary>
 | 
						||
        /// 发送短信
 | 
						||
        /// </summary>
 | 
						||
        /// <param name="filter"></param>
 | 
						||
        /// <returns></returns>
 | 
						||
        [HttpPost, Route("SendMsg")]
 | 
						||
        public JsonActionResult<bool> SendMsg([FromBody] KeywordFilter filter)
 | 
						||
        {
 | 
						||
            return SafeExecute<bool>(() =>
 | 
						||
            {
 | 
						||
                var mtConfig = GetEntity<T_SC_MT_CONFIG>(e => e.IS_SENDMSG);
 | 
						||
                if (mtConfig == null)
 | 
						||
                {
 | 
						||
                    throw new Exception("暂未查询到短信开通信息!");
 | 
						||
                }
 | 
						||
                if (string.IsNullOrEmpty(filter.Keyword))
 | 
						||
                {
 | 
						||
                    throw new Exception("获取参数失败!");
 | 
						||
                }
 | 
						||
 | 
						||
                Guid MeetingID = Guid.Empty;
 | 
						||
                try
 | 
						||
                {
 | 
						||
                    MeetingID = Guid.Parse(filter.Keyword);
 | 
						||
                }
 | 
						||
                catch { MeetingID = Guid.Empty; }
 | 
						||
                if (MeetingID == Guid.Empty)
 | 
						||
                {
 | 
						||
                    throw new Exception("获取参数失败!");
 | 
						||
                }
 | 
						||
                Guid? LoginID = APT.Infrastructure.Api.AppContext.CurrentSession.UserID;
 | 
						||
                //会议发起人或超管才有权限发送
 | 
						||
                var meeting = GetEntity<T_SC_MT_MEETING>(MeetingID);
 | 
						||
                if (meeting.USER_ID_ORIGINATOR != LoginID && !APT.Infrastructure.Api.AppContext.CurrentSession.UserName.ToLower().Contains("admin"))
 | 
						||
                {
 | 
						||
                    throw new Exception("只有发起人才有发送短信的权限!");
 | 
						||
                }
 | 
						||
 | 
						||
                //添加信息 T_FM_NOTICE
 | 
						||
                var listUserID = GetEntities<T_SC_MT_MEETING_PALL>(e => e.MEETING_ID == MeetingID, null, null).Select(e => e.USER_ID).Distinct();
 | 
						||
                var listUser = GetEntities<T_FM_USER>(e => listUserID.Contains(e.ID), null, null);
 | 
						||
                Guid Key = Guid.NewGuid();
 | 
						||
 | 
						||
                DateTime? dtEndTime = null;
 | 
						||
                var task = GetEntity<T_FM_NOTIFICATION_TASK>(e => e.SOURCE_DATA_ID.HasValue && e.SOURCE_DATA_ID.Value == MeetingID && e.SOURCE_FORMCODE == "SC028_SHOWPRINT" && e.NOTICE_TITLE.EndsWith("通知"));
 | 
						||
                if (task == null)
 | 
						||
                {
 | 
						||
                    dtEndTime = meeting.BEGIN_TIME;
 | 
						||
                }
 | 
						||
                else
 | 
						||
                {
 | 
						||
                    dtEndTime = task.TASK_ENDDT;
 | 
						||
                }
 | 
						||
                List<T_FM_NOTICE> listNoticeSend = new List<T_FM_NOTICE>();
 | 
						||
 | 
						||
                foreach (var item in listUser)
 | 
						||
                {
 | 
						||
                    listNoticeSend.Add(new T_FM_NOTICE()
 | 
						||
                    {
 | 
						||
                        ID = Guid.NewGuid(),
 | 
						||
                        KEY = Key,
 | 
						||
                        ORG_ID = item.ORG_ID,
 | 
						||
                        CREATE_TIME = DateTime.Now,
 | 
						||
                        CREATER_ID = LoginID,
 | 
						||
                        NOTICETYPE = NOTICETYPE.Meeting,
 | 
						||
                        TEMPLATE_ID = NOTICETYPE.Meeting.GetDescription(),
 | 
						||
                        TABLENAME = "T_SC_MT_MEETING",
 | 
						||
                        DATA_ID = meeting.ID,
 | 
						||
                        USER_ID = item.ID,
 | 
						||
                        USERNAME = item.NAME,
 | 
						||
                        TEL = item.PHONE,
 | 
						||
                        NOTICE_STATUS = FMNoticeStatus.等待发送,
 | 
						||
                        TRYCOUNT = 0,
 | 
						||
                        TITLE = meeting.MEETINGTYPE.GetDescription() + "参会通知[" + meeting.BEGIN_TIME.Value.ToString("yyyy-MM-dd HH:MM") + "]",
 | 
						||
                        ENDDT = dtEndTime
 | 
						||
                    });
 | 
						||
                }
 | 
						||
 | 
						||
                if (listNoticeSend != null && listNoticeSend.Count > 0)
 | 
						||
                {
 | 
						||
                    meeting.IS_SENDED = true;
 | 
						||
                    this.UnifiedCommit(() =>
 | 
						||
                    {
 | 
						||
                        UpdateEntityNoCommit(meeting);
 | 
						||
                        BantchSaveEntityNoCommit(listNoticeSend);
 | 
						||
                    });
 | 
						||
                    FMNoticeService.SendMsg(NOTICETYPE.Meeting, null, Key);
 | 
						||
                }
 | 
						||
 | 
						||
                return true;
 | 
						||
            });
 | 
						||
        }
 | 
						||
 | 
						||
 | 
						||
 | 
						||
        /// <summary>
 | 
						||
        /// 会议通知发布审批回调
 | 
						||
        /// </summary>
 | 
						||
        /// <param name="id"></param>
 | 
						||
        /// <returns></returns>
 | 
						||
        [HttpGet, Route("MeetingNoticeBack")]
 | 
						||
        public JsonActionResult<bool> MeetingNoticeBack(string id)
 | 
						||
        {
 | 
						||
            return SafeExecute<bool>(() =>
 | 
						||
            {
 | 
						||
                return ApproveCallBackService.CallBack("SC/SCMTMeeting/MeetingNoticeBack", id);
 | 
						||
            });
 | 
						||
        }
 | 
						||
 | 
						||
 | 
						||
        /// <summary>
 | 
						||
        /// 参会人员 参会/请假 
 | 
						||
        /// </summary>
 | 
						||
        /// <param name="filter"></param>
 | 
						||
        /// <returns></returns>
 | 
						||
        [HttpPost, Route("PAllCheck")]
 | 
						||
        public JsonActionResult<bool> PAllCheck([FromBody] KeywordFilter filter)
 | 
						||
        {
 | 
						||
            return SafeExecute<bool>(() =>
 | 
						||
            {
 | 
						||
                if (string.IsNullOrEmpty(filter.Parameter1))
 | 
						||
                {
 | 
						||
                    throw new Exception("获取参数【待办ID】失败,请刷新首页后再操作!");
 | 
						||
                }
 | 
						||
                else if (filter.Parameter2 == "20" && string.IsNullOrEmpty(filter.Parameter3))
 | 
						||
                {
 | 
						||
                    throw new Exception("请填写请假备注!");
 | 
						||
                }
 | 
						||
                else
 | 
						||
                {
 | 
						||
                    var loginID = APT.Infrastructure.Api.AppContext.CurrentSession.UserID;
 | 
						||
                    var meetingID = new Guid(filter.Keyword);
 | 
						||
                    var taskID = new Guid(filter.Parameter1);
 | 
						||
                    var JOINRESULT = int.Parse(filter.Parameter2);
 | 
						||
 | 
						||
                    //获取待办信息
 | 
						||
                    var task = FMNotificActionTaskService.GetEntityTask(taskID);
 | 
						||
 | 
						||
                    var meeting = GetEntity<T_SC_MT_MEETING>(meetingID, new string[] { "Nav_UserHost", "Nav_UserRecorder", "Nav_ListPAll.Nav_User", "Nav_ListPReView.Nav_User" });
 | 
						||
                    //T_SC_MT_MEETING_PALL modelAllLogin = null;
 | 
						||
                    //T_SC_MT_MEETING_PREVIEW modelPVLogin = null;
 | 
						||
                    List<T_SC_MT_MEETING_PALL> listModelAllLogin = null;
 | 
						||
                    List<T_SC_MT_MEETING_PREVIEW> listModelPVLogin = null;
 | 
						||
                    if ((meeting.BEGIN_TIME.HasValue && meeting.BEGIN_TIME.Value < DateTime.Now) || meeting.ISBEGIN)
 | 
						||
                    {
 | 
						||
                        throw new Exception("该会议已经开始,操作失败!");
 | 
						||
                    }
 | 
						||
                    if (filter.Parameter2 == "20")
 | 
						||
                    {
 | 
						||
                        if (meeting.USER_ID_HOST == loginID)
 | 
						||
                        {
 | 
						||
                            throw new Exception("主持人不能请假!");
 | 
						||
                        }
 | 
						||
                        else if (meeting.USER_ID_RECORDER == loginID)
 | 
						||
                        {
 | 
						||
                            throw new Exception("记录人不能请假!");
 | 
						||
                        }
 | 
						||
                        else if (meeting.Nav_ListPReView != null && meeting.Nav_ListPReView.Any())
 | 
						||
                        {
 | 
						||
                            listModelPVLogin = meeting.Nav_ListPReView.Where(e => e.USER_ID == loginID).ToList();
 | 
						||
                            if (listModelPVLogin != null && listModelPVLogin.Count > 0)
 | 
						||
                            {
 | 
						||
                                throw new Exception("评审人员不能请假!");
 | 
						||
                            }
 | 
						||
 | 
						||
                            //modelPVLogin = meeting.Nav_ListPReView.FirstOrDefault(e => e.USER_ID == loginID);
 | 
						||
                            //if (modelPVLogin != null)
 | 
						||
                            //{
 | 
						||
                            //    throw new Exception("评审人员不能请假!");
 | 
						||
                            //}
 | 
						||
                        }
 | 
						||
                    }
 | 
						||
 | 
						||
                    //modelAllLogin = meeting.Nav_ListPAll.FirstOrDefault(e => e.USER_ID == loginID);
 | 
						||
                    //meeting.Nav_ListPAll
 | 
						||
                    listModelAllLogin = meeting.Nav_ListPAll.Where(e => e.USER_ID == loginID).ToList();
 | 
						||
 | 
						||
 | 
						||
                    if (listModelAllLogin != null && listModelAllLogin.Count > 0)// modelAllLogin != null
 | 
						||
                    {
 | 
						||
                        //modelAllLogin.JOINRESULT = (JoinTaskResult)JOINRESULT;
 | 
						||
                        //modelAllLogin.NOTJOINREASON = filter.Parameter3;
 | 
						||
 | 
						||
                        listModelAllLogin.ForEach(e =>
 | 
						||
                        {
 | 
						||
                            e.JOINRESULT = (JoinTaskResult)JOINRESULT;
 | 
						||
                            e.NOTJOINREASON = filter.Parameter3;
 | 
						||
                        });
 | 
						||
 | 
						||
                        //if (modelAllLogin.PERSONTYPE == SCMEETINGPERSONTYPE.ALL )//所有人
 | 
						||
                        //{
 | 
						||
                        //    if (filter.Parameter2 == "20")
 | 
						||
                        //    {
 | 
						||
                        //        modelAllLogin.PERSONTYPE = SCMEETINGPERSONTYPE.ASKFORLEAVE;//请假
 | 
						||
                        //    }
 | 
						||
                        //    else
 | 
						||
                        //    {
 | 
						||
                        //        modelAllLogin.PERSONTYPE = SCMEETINGPERSONTYPE.JOIN;//参加
 | 
						||
                        //    }
 | 
						||
                        //}
 | 
						||
 | 
						||
                        listModelPVLogin = meeting.Nav_ListPReView.Where(e => e.USER_ID == loginID).ToList();
 | 
						||
                        if (listModelPVLogin != null && listModelPVLogin.Count > 0)
 | 
						||
                        {
 | 
						||
                            listModelPVLogin.ForEach(e =>
 | 
						||
                            {
 | 
						||
                                e.JOINRESULT = (JoinTaskResult)JOINRESULT;
 | 
						||
                                e.NOTJOINREASON = filter.Parameter3;
 | 
						||
                            });
 | 
						||
 | 
						||
                        }
 | 
						||
 | 
						||
                        //if (modelAllLogin.PERSONTYPE == SCMEETINGPERSONTYPE.REVIEW)//评审人
 | 
						||
                        //{
 | 
						||
                        //    modelPVLogin = meeting.Nav_ListPReView.FirstOrDefault(e => e.USER_ID == loginID);
 | 
						||
                        //    if (modelPVLogin != null)
 | 
						||
                        //    {
 | 
						||
                        //        modelPVLogin.JOINRESULT = (JoinTaskResult)JOINRESULT;
 | 
						||
                        //        modelPVLogin.NOTJOINREASON = filter.Parameter3;
 | 
						||
                        //    }
 | 
						||
                        //}
 | 
						||
                    }
 | 
						||
                    else if (loginID != meeting.USER_ID_HOST && loginID != meeting.USER_ID_RECORDER)
 | 
						||
                    {
 | 
						||
                        throw new Exception("您不在参加会议名单,操作失败!");
 | 
						||
                    }
 | 
						||
 | 
						||
                    this.UnifiedCommit(() =>
 | 
						||
                    {
 | 
						||
                        if (task != null)
 | 
						||
                            UpdateEntityNoCommit(task);   //保存主表 NoCommit
 | 
						||
                        if (listModelPVLogin != null && listModelPVLogin.Count > 0)
 | 
						||
                            BantchUpdateEntityNoCommit(listModelPVLogin);
 | 
						||
                        if (listModelAllLogin != null && listModelAllLogin.Count > 0)
 | 
						||
                            BantchUpdateEntityNoCommit(listModelAllLogin);
 | 
						||
 | 
						||
                        //if (modelAllLogin != null) //保存信息
 | 
						||
                        //    UpdateEntityNoCommit(modelAllLogin);
 | 
						||
                        //if (modelPVLogin != null)//审批人
 | 
						||
                        //    UpdateEntityNoCommit(modelPVLogin);
 | 
						||
                    });
 | 
						||
                }
 | 
						||
                return true;
 | 
						||
            });
 | 
						||
        }
 | 
						||
 | 
						||
        /// <summary>
 | 
						||
        /// 根据会议ID获取参会人员信息
 | 
						||
        /// </summary>
 | 
						||
        /// <param name="filter"></param>
 | 
						||
        /// <returns></returns>
 | 
						||
        [HttpPost, Route("GetMeetingPAll")]
 | 
						||
        public JsonActionResult<List<T_FM_USER>> GetMeetingPAll([FromBody] KeywordFilter filter)
 | 
						||
        {
 | 
						||
            return SafeExecute<List<T_FM_USER>>(() =>
 | 
						||
            {
 | 
						||
                //var list = GetEntities<T_SC_MT_MEETING_PALL>(e => !e.IS_DELETED && e.PERSONTYPE == SCMEETINGPERSONTYPE.ALL, filter, new string[] { "Nav_User" }).ToList();
 | 
						||
 | 
						||
                Guid MEETING_ID = Guid.Empty;
 | 
						||
 | 
						||
                List<UserJoinParm> listAreaSearch = null;
 | 
						||
                if (filter.FilterGroup.Groups.Count > 0)
 | 
						||
                {
 | 
						||
                    foreach (var item in filter.FilterGroup.Groups)
 | 
						||
                    {
 | 
						||
                        if (item.Rules.Count > 0)
 | 
						||
                        {
 | 
						||
                            foreach (var itemR in item.Rules)
 | 
						||
                            {
 | 
						||
                                switch (itemR.Field)
 | 
						||
                                {
 | 
						||
                                    case "Nav_ListPJoin":
 | 
						||
                                        listAreaSearch = JsonHelper.FromJson<List<UserJoinParm>>(itemR.Value.ToString());
 | 
						||
                                        break;
 | 
						||
                                    case "MEETING_ID":
 | 
						||
                                        MEETING_ID = new Guid(itemR.Value.ToString());
 | 
						||
                                        break;
 | 
						||
                                    default:
 | 
						||
                                        break;
 | 
						||
                                }
 | 
						||
                            }
 | 
						||
                        }
 | 
						||
                    }
 | 
						||
                }
 | 
						||
                else if (filter.FilterGroup.Rules.Count > 0)
 | 
						||
                {
 | 
						||
                    foreach (var item in filter.FilterGroup.Rules)
 | 
						||
                    {
 | 
						||
                        switch (item.Field)
 | 
						||
                        {
 | 
						||
                            case "Nav_ListPJoin":
 | 
						||
                                listAreaSearch = JsonHelper.FromJson<List<UserJoinParm>>(item.Value.ToString());
 | 
						||
                                break;
 | 
						||
                            case "MEETING_ID":
 | 
						||
                                MEETING_ID = new Guid(item.Value.ToString());
 | 
						||
                                break;
 | 
						||
                            default:
 | 
						||
                                break;
 | 
						||
                        }
 | 
						||
                    }
 | 
						||
                }
 | 
						||
 | 
						||
                Expression<Func<T_SC_MT_MEETING_PALL, bool>> expression = e => !e.IS_DELETED && e.PERSONTYPE == SCMEETINGPERSONTYPE.ALL;
 | 
						||
                if (MEETING_ID != Guid.Empty)
 | 
						||
                {
 | 
						||
                    expression = expression.And(e => e.MEETING_ID == MEETING_ID);
 | 
						||
                }
 | 
						||
                if (listAreaSearch != null && listAreaSearch.Count > 0)
 | 
						||
                {
 | 
						||
                    var IUserID = listAreaSearch.Select(e => e.USER_ID).ToList();//.Where(e=>!e.IS_DELETED.HasValue||!e.IS_DELETED.Value)
 | 
						||
                    expression = expression.And(e => e.PERSONNATURE == PersonNature.JOIN && IUserID.Contains(e.USER_ID));
 | 
						||
                }
 | 
						||
                List<T_FM_USER> listResult = GetEntities<T_SC_MT_MEETING_PALL>(expression, null, new string[] { "Nav_User" }).Select(e => e.Nav_User).ToList<T_FM_USER>();
 | 
						||
                return listResult;
 | 
						||
            });
 | 
						||
        }
 | 
						||
 | 
						||
 | 
						||
        /// <summary>
 | 
						||
        /// 数据删除
 | 
						||
        /// </summary>
 | 
						||
        /// <param name="id">过滤实体</param>
 | 
						||
        /// <returns></returns>
 | 
						||
        [HttpGet, Route("FullDelete")]
 | 
						||
        public JsonActionResult<bool> FullDelete(string id)
 | 
						||
        {
 | 
						||
            return SafeExecute<bool>(() =>
 | 
						||
            {
 | 
						||
                //删除审批流
 | 
						||
                //删除明细
 | 
						||
                //删除主表
 | 
						||
 | 
						||
                Guid meetingId = new Guid(id);
 | 
						||
                string[] path = { "Nav_ListMeetingContent", "Nav_ListPAll", "Nav_ListPReView", "Nav_Files", "Nav_FilesOfficialseal", "Nav_FilesRecord" };
 | 
						||
                T_SC_MT_MEETING entity = GetEntity<T_SC_MT_MEETING>(meetingId, path);
 | 
						||
 | 
						||
                if (entity.ISBEGIN)
 | 
						||
                {
 | 
						||
                    throw new Exception("该会议已经开始了,删除失败!");
 | 
						||
                }
 | 
						||
                else if (entity.CREACTTYPE.HasValue && entity.CREACTTYPE == CREACTTYPEEnum.System)
 | 
						||
                {
 | 
						||
                    throw new Exception("系统设置要召开的会议不能删除!");
 | 
						||
                }
 | 
						||
 | 
						||
                List<Guid> listMeetingContentID = new List<Guid>();
 | 
						||
                List<Guid> listPAllID = new List<Guid>();
 | 
						||
                List<Guid> listPReViewID = new List<Guid>();
 | 
						||
                List<Guid> filesIds = new List<Guid>();
 | 
						||
                List<Guid> listOfficialsealID = new List<Guid>();
 | 
						||
                List<Guid> listFilesRecordID = new List<Guid>();
 | 
						||
                List<Guid> listApproveDetailId = new List<Guid>();
 | 
						||
 | 
						||
                if (entity.Nav_ListMeetingContent != null && entity.Nav_ListMeetingContent.Count > 0)
 | 
						||
                {
 | 
						||
                    listMeetingContentID = entity.Nav_ListMeetingContent.Select(e => e.ID).ToList();
 | 
						||
                }
 | 
						||
                if (entity.Nav_ListPAll != null && entity.Nav_ListPAll.Count > 0)
 | 
						||
                {
 | 
						||
                    listPAllID = entity.Nav_ListPAll.Select(e => e.ID).ToList();
 | 
						||
                }
 | 
						||
                if (entity.Nav_ListPReView != null && entity.Nav_ListPReView.Count > 0)
 | 
						||
                {
 | 
						||
                    listPReViewID = entity.Nav_ListPReView.Select(e => e.ID).ToList();
 | 
						||
                }
 | 
						||
                if (entity.Nav_Files != null && entity.Nav_Files.Any())
 | 
						||
                {
 | 
						||
                    filesIds = entity.Nav_Files.Select(t => t.ID).ToList();
 | 
						||
                }
 | 
						||
                if (entity.Nav_FilesOfficialseal != null && entity.Nav_FilesOfficialseal.Count > 0)
 | 
						||
                {
 | 
						||
                    listOfficialsealID = entity.Nav_FilesOfficialseal.Select(e => e.ID).ToList();
 | 
						||
                }
 | 
						||
                if (entity.Nav_FilesRecord != null && entity.Nav_FilesRecord.Count > 0)
 | 
						||
                {
 | 
						||
                    listFilesRecordID = entity.Nav_FilesRecord.Select(e => e.ID).ToList();
 | 
						||
                }
 | 
						||
 | 
						||
                var listApproveDetail = this.GetEntities<T_PF_APPROVE_DETAIL>(t => t.APPROVE_ID == entity.APPROVE_ID, null, null);
 | 
						||
                if (listApproveDetail != null && listApproveDetail.Any())
 | 
						||
                {
 | 
						||
                    listApproveDetailId = listApproveDetail.Select(e => e.ID).ToList();
 | 
						||
                }
 | 
						||
 | 
						||
                UnifiedCommit(() =>
 | 
						||
                {
 | 
						||
                    if (listApproveDetailId.Count > 0)
 | 
						||
                        this.BantchDeleteEntityNoCommit<T_PF_APPROVE_DETAIL>(listApproveDetailId);
 | 
						||
                    if (entity.APPROVE_ID.HasValue)
 | 
						||
                        DeleteEntityNoCommit<T_PF_APPROVE>(entity.APPROVE_ID.Value.ToString());
 | 
						||
                    if (listFilesRecordID.Count > 0)
 | 
						||
                        this.BantchDeleteEntityNoCommit<T_SC_MT_MEETING_FILE_RECORD>(listFilesRecordID);
 | 
						||
                    if (listOfficialsealID.Count > 0)
 | 
						||
                        this.BantchDeleteEntityNoCommit<T_SC_MT_MEETING_FILE_OFFICIALSEAL>(listOfficialsealID);
 | 
						||
                    if (filesIds.Count > 0)
 | 
						||
                        this.BantchDeleteEntityNoCommit<T_SC_MT_MEETING_FILE>(filesIds);
 | 
						||
                    if (listPReViewID.Count > 0)
 | 
						||
                        this.BantchDeleteEntityNoCommit<T_SC_MT_MEETING_PREVIEW>(listPReViewID);
 | 
						||
                    if (listPAllID.Count > 0)
 | 
						||
                        this.BantchDeleteEntityNoCommit<T_SC_MT_MEETING_PALL>(listPAllID);
 | 
						||
                    if (listMeetingContentID.Count > 0)
 | 
						||
                        this.BantchDeleteEntityNoCommit<T_SC_MT_MEETING_CONTENT>(listMeetingContentID);
 | 
						||
                    if (entity != null)
 | 
						||
                        this.DeleteEntityNoCommit(entity);
 | 
						||
                });
 | 
						||
 | 
						||
                return true;
 | 
						||
            });
 | 
						||
        }
 | 
						||
 | 
						||
 | 
						||
        /// <summary>
 | 
						||
        /// 排序分页查询数据
 | 
						||
        /// </summary>
 | 
						||
        /// <param name="pageFilter">分页过滤实体</param>
 | 
						||
        /// <returns></returns>
 | 
						||
        [HttpPost, Route("OrderPaged")]
 | 
						||
        public PagedActionResult<T_SC_MT_MEETING> OrderPaged([FromBody] KeywordPageFilter pageFilter)
 | 
						||
        {
 | 
						||
            PagedActionResult<T_SC_MT_MEETING> result = null;
 | 
						||
            if (!string.IsNullOrEmpty(pageFilter.MenuParameter))
 | 
						||
            {
 | 
						||
                if (pageFilter.MenuParameter == "40")
 | 
						||
                {
 | 
						||
                    result = WitOrderPaged(e => e.MEETINGTYPE == SCMEETINGTYPE.SafetyBoard || e.MEETINGTYPE == SCMEETINGTYPE.BasicSecurity, pageFilter);
 | 
						||
                }
 | 
						||
                else
 | 
						||
                {
 | 
						||
                    result = WitOrderPaged(e => e.MEETINGTYPE == SCMEETINGTYPE.Ordinary || e.MEETINGTYPE == SCMEETINGTYPE.FileAudit || e.MEETINGTYPE == SCMEETINGTYPE.FileReView, pageFilter);
 | 
						||
                }
 | 
						||
            }
 | 
						||
            else
 | 
						||
            {
 | 
						||
                result = WitOrderPaged(null, pageFilter);
 | 
						||
            }
 | 
						||
            if (result.Data != null && result.Data.Any() && DataHelper.GetRequestType(Request.Headers) == 2)
 | 
						||
            {
 | 
						||
                foreach (var item in result.Data)
 | 
						||
                {
 | 
						||
                    item.STATUSSHOW = item.STATUS.GetDescription();
 | 
						||
                }
 | 
						||
            }
 | 
						||
            return result;
 | 
						||
        }
 | 
						||
 | 
						||
 | 
						||
        /// <summary>
 | 
						||
        /// 获得单条实体数据
 | 
						||
        /// </summary>
 | 
						||
        /// <param name="filter">过滤实体</param>
 | 
						||
        /// <returns></returns>
 | 
						||
        [HttpPost, Route("GetSuit")]
 | 
						||
        public JsonActionResult<T_SC_MT_MEETING> GetSuit([FromBody] KeywordFilter filter)
 | 
						||
        {
 | 
						||
            return SafeExecute<T_SC_MT_MEETING>(() =>
 | 
						||
            {
 | 
						||
                var model = GetEntity<T_SC_MT_MEETING>(null, filter);
 | 
						||
                if (model.MEETINGTYPE == SCMEETINGTYPE.FileReView && model.Nav_ListPAll != null && model.Nav_ListPAll.Any())
 | 
						||
                {
 | 
						||
                    model.Nav_ListPAll = model.Nav_ListPAll.OrderBy(e => e.PERSONTYPE).ToList();
 | 
						||
                }
 | 
						||
                return model;
 | 
						||
            });
 | 
						||
        }
 | 
						||
        /// <summary>
 | 
						||
        /// 获得单条实体数据
 | 
						||
        /// </summary>
 | 
						||
        /// <param name="filter">过滤实体</param>
 | 
						||
        /// <returns></returns>
 | 
						||
        [HttpPost, Route("GetSuitDevlop")]
 | 
						||
        public JsonActionResult<T_SC_MT_MEETING> GetSuitDevlop([FromBody] KeywordFilter filter)
 | 
						||
        {
 | 
						||
            return SafeExecute<T_SC_MT_MEETING>(() =>
 | 
						||
            {
 | 
						||
                List<string> listIncludAll = filter.Include.ToList();
 | 
						||
                List<string> listIncludSearch = new List<string>();
 | 
						||
                List<string> listIncludPAll = new List<string>();
 | 
						||
 | 
						||
                foreach (var item in listIncludAll)
 | 
						||
                {
 | 
						||
                    if (item.Contains("Nav_ListPAll"))
 | 
						||
                    {
 | 
						||
                        if (item == "Nav_ListPAll")
 | 
						||
                            continue;
 | 
						||
                        else
 | 
						||
                            listIncludPAll.Add(item.Replace("Nav_ListPAll.", ""));
 | 
						||
                    }
 | 
						||
                    else
 | 
						||
                    {
 | 
						||
                        listIncludSearch.Add(item);
 | 
						||
                    }
 | 
						||
                }
 | 
						||
                filter.Include = listIncludSearch;
 | 
						||
                var model = GetEntity<T_SC_MT_MEETING>(null, filter);
 | 
						||
 | 
						||
                var listAll = GetEntities<T_SC_MT_MEETING_PALL>(e => e.MEETING_ID == model.ID, null, listIncludPAll.ToArray());
 | 
						||
                if (listAll != null && listAll.Any())
 | 
						||
                {
 | 
						||
                    model.Nav_ListPAll = listAll.ToList();
 | 
						||
                }
 | 
						||
 | 
						||
                if (model.MEETINGTYPE == SCMEETINGTYPE.FileReView && model.Nav_ListPAll != null && model.Nav_ListPAll.Any())
 | 
						||
                {
 | 
						||
                    model.Nav_ListPAll = model.Nav_ListPAll.OrderBy(e => e.PERSONTYPE).ToList();
 | 
						||
                }
 | 
						||
                return model;
 | 
						||
            });
 | 
						||
        }
 | 
						||
 | 
						||
 | 
						||
 | 
						||
        /// <summary>
 | 
						||
        /// 会议取消
 | 
						||
        /// </summary>
 | 
						||
        /// <param name="id"></param>
 | 
						||
        /// <returns></returns>
 | 
						||
        /// <exception cref="Exception"></exception>
 | 
						||
        [HttpPost, Route("Cancel")]
 | 
						||
        public JsonActionResult<bool> Cancel([FromBody] KeywordFilter filter)
 | 
						||
        {
 | 
						||
            return SafeExecute<bool>(() =>
 | 
						||
            {
 | 
						||
                if (string.IsNullOrEmpty(filter.Keyword))
 | 
						||
                {
 | 
						||
                    throw new Exception("请勾选会议通知后再取消!");
 | 
						||
                }
 | 
						||
                if (filter.Keyword.Contains(","))
 | 
						||
                {
 | 
						||
                    throw new Exception("每次只能取消一条会议通知!");
 | 
						||
                }
 | 
						||
                Guid guid = new Guid(filter.Keyword);
 | 
						||
                var meeting = GetEntity<T_SC_MT_MEETING>(guid);
 | 
						||
                if (meeting.ISBEGIN)
 | 
						||
                {
 | 
						||
                    throw new Exception("该会议已开始,取消失败!");
 | 
						||
                }
 | 
						||
 | 
						||
                if (meeting.BEGIN_TIME.HasValue && meeting.BEGIN_TIME.Value < DateTime.Now)
 | 
						||
                {
 | 
						||
                    //开会时间过了 但是还没审批 可以取消
 | 
						||
 | 
						||
                    if (meeting.STATUS != PFStandardStatus.Approving)
 | 
						||
                    {
 | 
						||
                        throw new Exception("该会议已开始,取消失败!");
 | 
						||
                    }
 | 
						||
                }
 | 
						||
                Guid LoginID = APT.Infrastructure.Api.AppContext.CurrentSession.UserID.Value;
 | 
						||
                if (meeting.USER_ID_ORIGINATOR != LoginID)
 | 
						||
                {
 | 
						||
                    throw new Exception("只有发起人才能取消自己发起的会议!");
 | 
						||
                }
 | 
						||
 | 
						||
                //会议取消
 | 
						||
                meeting.ISCANCEL = true;
 | 
						||
                meeting.MODIFY_TIME = DateTime.Now;
 | 
						||
 | 
						||
                //可能是 通知 或者 审批流
 | 
						||
                IEnumerable<T_FM_NOTIFICATION_TASK> listNotice = null;
 | 
						||
                T_PF_APPROVE modelAppro = null;
 | 
						||
                IEnumerable<T_PF_APPROVE_DETAIL> IlistApproveDetal = null;
 | 
						||
                switch (meeting.STATUS)
 | 
						||
                {
 | 
						||
                    case PFStandardStatus.Draft:
 | 
						||
                        listNotice = GetEntities<T_FM_NOTIFICATION_TASK>(e => e.SOURCE_DATA_ID.HasValue && e.SOURCE_DATA_ID.Value == meeting.ID && (e.SOURCE_FORMCODE == "SC028" || e.SOURCE_FORMCODE == "SC032"), null);
 | 
						||
                        break;
 | 
						||
                    case PFStandardStatus.Sign:
 | 
						||
                    case PFStandardStatus.Approving:
 | 
						||
                    case PFStandardStatus.Archived:
 | 
						||
                        //会议通知审批 已经删除
 | 
						||
                        ////会议 保存并发送 就是 审批状态
 | 
						||
                        //if (meeting.APPROVE_ID.HasValue)
 | 
						||
                        //{
 | 
						||
                        //    //待办
 | 
						||
                        //    listNotice = GetEntities<T_FM_NOTIFICATION_TASK>(e => e.SOURCE_DATA_ID.HasValue && e.SOURCE_DATA_ID.Value == meeting.APPROVE_ID.Value, null);
 | 
						||
                        //    var approID = meeting.APPROVE_ID.Value;
 | 
						||
                        //    //业务数据
 | 
						||
                        //    modelAppro = GetEntity<T_PF_APPROVE>(e => e.ID == approID);
 | 
						||
                        //    IlistApproveDetal = GetEntities<T_PF_APPROVE_DETAIL>(e => e.APPROVE_ID == approID, null);
 | 
						||
                        //}
 | 
						||
                        //    break;
 | 
						||
                        //case PFStandardStatus.Archived://审批 
 | 
						||
                        //只是发送待办(参会通知) 没业务数据需要处理
 | 
						||
                        listNotice = GetEntities<T_FM_NOTIFICATION_TASK>(e => e.SOURCE_DATA_ID.HasValue && e.SOURCE_DATA_ID.Value == meeting.ID && e.SOURCE_FORMCODE == "SC028_SHOWPRINT", null);
 | 
						||
 | 
						||
                        break;
 | 
						||
                    case PFStandardStatus.Rejected:
 | 
						||
                        break;
 | 
						||
                    default:
 | 
						||
                        break;
 | 
						||
                }
 | 
						||
 | 
						||
                //已经阅读 审批  除了操作者  告知 会议 已经取消
 | 
						||
 | 
						||
 | 
						||
                IEnumerable<T_FM_NOTIFICATION_TASK> listNoticeCancel = null;
 | 
						||
                List<Guid> listUserID = new List<Guid>();
 | 
						||
                List<string> listUserName = new List<string>();
 | 
						||
 | 
						||
 | 
						||
                #region    修改为已删除
 | 
						||
 | 
						||
                if (listNotice != null)
 | 
						||
                {
 | 
						||
                    foreach (var item in listNotice)
 | 
						||
                    {
 | 
						||
                        if (item.NOTICE_STATUS == 0)
 | 
						||
                        {
 | 
						||
                            item.NOTICE_STATUS = 1;//取消了 默认 正常已办
 | 
						||
                            item.TASK_DT = DateTime.Now;
 | 
						||
                        }
 | 
						||
                        item.ISCANCEL = true;
 | 
						||
                        item.MODIFY_TIME = meeting.MODIFY_TIME;
 | 
						||
 | 
						||
                        if (meeting.STATUS != PFStandardStatus.Draft)
 | 
						||
                        {
 | 
						||
                            //取消 今日提醒人员
 | 
						||
                            listUserID.Add(item.USER_ID);
 | 
						||
                            listUserName.Add(item.USER_NAME);
 | 
						||
                        }
 | 
						||
                    }
 | 
						||
                }
 | 
						||
                if (modelAppro != null)
 | 
						||
                {
 | 
						||
                    modelAppro.ISCANCEL = true;
 | 
						||
                    modelAppro.MODIFY_TIME = meeting.MODIFY_TIME;
 | 
						||
                    if (IlistApproveDetal != null && IlistApproveDetal.Any())
 | 
						||
                    {
 | 
						||
                        foreach (var item in IlistApproveDetal)
 | 
						||
                        {
 | 
						||
                            item.ISCANCEL = true;
 | 
						||
                            item.MODIFY_TIME = meeting.MODIFY_TIME;
 | 
						||
                        }
 | 
						||
                    }
 | 
						||
                }
 | 
						||
                if (meeting.Nav_Approve != null)
 | 
						||
                {
 | 
						||
                    var t = meeting.Nav_Approve;
 | 
						||
                    meeting.Nav_Approve = null;
 | 
						||
                }
 | 
						||
                #endregion
 | 
						||
 | 
						||
                #region 今日提醒
 | 
						||
 | 
						||
                if (listUserID.Count > 0)
 | 
						||
                {
 | 
						||
                    //给所有需要参会的人员触发一条今日提醒【原计划于“会议开始时间”召开的“会议名称”已取消】。
 | 
						||
 | 
						||
                    string Title = "原计划于" + meeting.BEGIN_TIME.Value.ToString("yyyy-MM-dd HH:mm") + "召开的【" + meeting.MEETINGTYPE.GetDescription() + "】已取消";
 | 
						||
 | 
						||
                    listNoticeCancel = FMNotificActionTaskService.InsertUserNoticeTaskModels(Title, guid, filter.OrgId, listUserID, listUserName, DateTime.Now, DateTime.Now.Date.AddDays(1).AddSeconds(-1), 2, "SC028_SHOWPRINT");
 | 
						||
 | 
						||
                }
 | 
						||
 | 
						||
                #endregion
 | 
						||
 | 
						||
                this.UnifiedCommit(() =>
 | 
						||
                {
 | 
						||
                    if (meeting != null)
 | 
						||
                        UpdateEntityNoCommit(meeting);
 | 
						||
                    if (listNotice != null && listNotice.Any())
 | 
						||
                        BantchUpdateEntityNoCommit(listNotice);
 | 
						||
                    if (modelAppro != null)//审批表单
 | 
						||
                        UpdateEntityNoCommit(modelAppro);
 | 
						||
                    if (IlistApproveDetal != null && IlistApproveDetal.Any())//审批流明细
 | 
						||
                        BantchUpdateEntityNoCommit(IlistApproveDetal);
 | 
						||
                    if (listNoticeCancel != null && listNoticeCancel.Any())//会议取消 给参会人 发送取消通知
 | 
						||
                        BantchSaveEntityNoCommit(listNoticeCancel);
 | 
						||
                });
 | 
						||
 | 
						||
                return true;
 | 
						||
            });
 | 
						||
        }
 | 
						||
 | 
						||
 | 
						||
 | 
						||
        /// <summary>
 | 
						||
        /// 获得单条实体数据
 | 
						||
        /// </summary>
 | 
						||
        /// <param name="filter">过滤实体</param>
 | 
						||
        /// <returns></returns>
 | 
						||
        [HttpPost, Route("GetAPP")]
 | 
						||
        public JsonActionResult<T_SC_MT_MEETING> GetAPP([FromBody] KeywordFilter filter)
 | 
						||
        {
 | 
						||
            return SafeExecute(() =>
 | 
						||
            {
 | 
						||
                var mt = GetEntity<T_SC_MT_MEETING>(null, filter, null);
 | 
						||
                mt.MEETINGTYPESHOW = mt.MEETINGTYPE.GetDescription();
 | 
						||
                if (mt.CREACTTYPE.HasValue && (int)mt.CREACTTYPE.Value == 10 && mt.STATUS == 0 && (mt.Nav_ListPAll == null || !mt.Nav_ListPAll.Any()))
 | 
						||
                {
 | 
						||
                    // setFieldEditable('MEETINGTYPE', false)
 | 
						||
 | 
						||
                    //加载参会人员信息
 | 
						||
                    // this.getPAll(stateData.MEETINGTYPE, stateData.ORG_ID, stateData.ID, setFieldVisible, setFieldValue, dispatch, setFieldValueByBatch)
 | 
						||
                    // export function getPAll(meetingType, orgId, meetingId, setFieldVisible, setFieldValue, dispatch, setFieldValueByBatch) {
 | 
						||
                    if (mt.MEETINGTYPE == SCMEETINGTYPE.SafetyBoard || mt.MEETINGTYPE == SCMEETINGTYPE.BasicSecurity)
 | 
						||
                    {
 | 
						||
                        List<T_SC_MT_MEETING_PALL> listResult = new List<T_SC_MT_MEETING_PALL>();
 | 
						||
                        List<T_FM_USER> listUsers = new List<T_FM_USER>();
 | 
						||
                        //基层安全会按部门 / 车间 / 班组点选或模糊查询,默认部门所有人员向下包含
 | 
						||
 | 
						||
                        var LoginID = APT.Infrastructure.Api.AppContext.CurrentSession.UserID;
 | 
						||
                        BaseFilter fiterMT = new BaseFilter(filter.OrgId);
 | 
						||
                        fiterMT.Order = DbOrder.DESC;
 | 
						||
                        fiterMT.Orders.Add(new DataOrder() { Field = "CREATE_TIME", Order = DbOrder.DESC });
 | 
						||
                        //SCMEETINGTYPE MEETINGTYPE = (SCMEETINGTYPE)int.Parse(filter.Parameter1);
 | 
						||
 | 
						||
                        //如果有 上次这种类型的会议 有人参加
 | 
						||
                        var meetLast = GetEntity<T_SC_MT_MEETING>(e => e.USER_ID_ORIGINATOR == LoginID && e.MEETINGTYPE == mt.MEETINGTYPE && e.PLANSET_ID.HasValue && !e.IS_DELETED && e.Nav_ListPAll != null && e.Nav_ListPAll.Any(), fiterMT, "Nav_ListPAll");
 | 
						||
                        if (meetLast != null && meetLast.Nav_ListPAll != null && meetLast.Nav_ListPAll.Any())
 | 
						||
                        {
 | 
						||
                            var listUserId = meetLast.Nav_ListPAll.Where(e => e.PERSONNATURE == PersonNature.JOIN).Select(e => e.USER_ID).Distinct();
 | 
						||
                            listUsers = GetEntities<T_FM_USER>(e => listUserId.Contains(e.ID) && !e.IS_DELETED && e.ENABLE_STATUS == 0 && e.DEPARTMENT_ID.HasValue, null, null).OrderBy(e => e.DEPARTMENT_ID).ToList();//"Nav_Department", "Nav_Person.Nav_Post"
 | 
						||
                        }
 | 
						||
 | 
						||
                        if (listUsers == null || !listUsers.Any())
 | 
						||
                        {
 | 
						||
                            if (mt.MEETINGTYPE == SCMEETINGTYPE.BasicSecurity)
 | 
						||
                            {
 | 
						||
                                var loginInfo = GetEntity<T_FM_USER>(LoginID.Value, new string[] { "Nav_Department" });// "Nav_Person.Nav_Post"
 | 
						||
                                ////基层安全会按部门/车间/班组点选或模糊查询,默认部门所有人员向下包含 
 | 
						||
                                ////获取 层级 及以下 所有人
 | 
						||
                                //listUsers = FMUserService.GetDownUser(loginInfo.DEPARTMENT_ID.Value, new string[] { "Nav_Department", "Nav_Person.Nav_Post" });
 | 
						||
 | 
						||
                                //部门负责人发起,参会人员为:部门内所属人员 + 车间安全员及负责人
 | 
						||
                                //车间负责人发起,参会人员为:车间内所属人员 + 班组长
 | 
						||
                                //班组负责人发起,参会人员为:班组内成员
 | 
						||
 | 
						||
                                //FMDepartmentType 部门 = 0, 车间 = 1, 班组 = 2, 公司 = 3
 | 
						||
                                switch (loginInfo.Nav_Department.DEPARTMENT_TYPE)
 | 
						||
                                {
 | 
						||
                                    case 0:
 | 
						||
                                    case 1:
 | 
						||
                                        listUsers = FMUserService.GetUserContentNextHead(loginInfo.DEPARTMENT_ID.Value);
 | 
						||
                                        break;
 | 
						||
                                    case 2:
 | 
						||
                                    case 3:
 | 
						||
                                        //班组 = 2, 公司 = 3
 | 
						||
                                        listUsers = FMUserService.GetDownUser(loginInfo.DEPARTMENT_ID.Value);//, new string[] { "Nav_Department" }, "Nav_Person.Nav_Post" 
 | 
						||
                                        break;
 | 
						||
                                    default:
 | 
						||
                                        break;
 | 
						||
                                }
 | 
						||
                            }
 | 
						||
                            else if (mt.MEETINGTYPE == SCMEETINGTYPE.SafetyBoard)
 | 
						||
                            {
 | 
						||
                                //部门级负责人 安全员
 | 
						||
                                //FMDepartmentType.部门 =0
 | 
						||
                                var listDep0 = GetEntities<T_FM_DEPARTMENT>(e => !e.IS_DELETED && e.DEPARTMENT_TYPE == 0, null, null);
 | 
						||
                                var listApprovreRole = GetEntities<T_PF_APPROVAL_ROLE>(e => !e.IS_DELETED && (e.NAME == "部门负责人" || e.NAME == "部门安全员" || e.NAME == "安环部负责人" || e.NAME == "安环部安全员"), null, null);
 | 
						||
 | 
						||
                                if (listDep0 != null && listDep0.Any() && listApprovreRole != null && listApprovreRole.Any())
 | 
						||
                                {
 | 
						||
                                    List<Guid> ids = listDep0.Select(e => e.ID).ToList();
 | 
						||
                                    List<Guid> idsApprove = listApprovreRole.Select(e => e.ID).ToList();
 | 
						||
                                    var users = GetEntities<T_FM_USER>(e => !e.IS_DELETED && e.ENABLE_STATUS == 0 && e.DEPARTMENT_ID.HasValue && ids.Contains(e.DEPARTMENT_ID.Value) && e.APPROVE_ROLE_ID.HasValue && idsApprove.Contains(e.APPROVE_ROLE_ID.Value), null, null);// new string[] { "Nav_Department" }, "Nav_Person.Nav_Post"
 | 
						||
 | 
						||
                                    if (users != null && users.Any())
 | 
						||
                                    {
 | 
						||
                                        listUsers = users.OrderBy(e => e.DEPARTMENT_ID).ThenByDescending(e => e.APPROVE_ROLE_ID).ToList();
 | 
						||
                                    }
 | 
						||
                                }
 | 
						||
                            }
 | 
						||
                        }
 | 
						||
                        for (int i = 0; i < listUsers.Count; i++)
 | 
						||
                        {
 | 
						||
                            T_SC_MT_MEETING_PALL temp = new T_SC_MT_MEETING_PALL();
 | 
						||
                            temp.ID = Guid.NewGuid();
 | 
						||
                            temp.MEETING_ID = mt.ID;
 | 
						||
                            temp.USER_ID = listUsers[i].ID;
 | 
						||
                            temp.Nav_User = listUsers[i];
 | 
						||
                            temp.ORG_ID = mt.ORG_ID;
 | 
						||
                            temp.PERSONTYPE = SCMEETINGPERSONTYPE.ALL;
 | 
						||
                            listResult.Add(temp);
 | 
						||
                        }
 | 
						||
                        //return listResult;
 | 
						||
                        mt.Nav_ListPAll = listResult;
 | 
						||
                    }
 | 
						||
                }
 | 
						||
                return mt;
 | 
						||
            });
 | 
						||
        }
 | 
						||
    }
 | 
						||
 | 
						||
    /// <summary>
 | 
						||
    /// 人会人员 选请假人、缺席人
 | 
						||
    /// </summary>
 | 
						||
    class UserJoinParm
 | 
						||
    {
 | 
						||
        public Guid USER_ID { get; set; }
 | 
						||
        public Guid ID { get; set; }
 | 
						||
        public Guid ORG_ID { get; set; }
 | 
						||
        public Guid MEETING_MINUTES_ID { get; set; }
 | 
						||
        public bool? IS_DELETED { get; set; }
 | 
						||
 | 
						||
    }
 | 
						||
} |