2024-01-22 09:17:01 +08:00
|
|
|
|
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; }
|
|
|
|
|
|
IPFCodeRuleService CodeRuleService { get; set; }
|
|
|
|
|
|
IFMNotificationTaskService FMNotificActionTaskService { get; set; }
|
|
|
|
|
|
IFMNoticeService FMNoticeService { get; set; }
|
|
|
|
|
|
public SCMTMeetingController(IFMUserService fMUserService, IFMFlowPermitService mFlowPermitService, IPFApproveCallBackService approveCallBackService, IPFCodeRuleService pFCodeRuleService, IPFCodeRuleService codeRuleService, IFMNotificationTaskService fMNotificActionTaskService, IFMNoticeService noticeService)
|
|
|
|
|
|
{
|
|
|
|
|
|
FMUserService = fMUserService;
|
|
|
|
|
|
MFlowPermitService = mFlowPermitService;
|
|
|
|
|
|
ApproveCallBackService = approveCallBackService;
|
|
|
|
|
|
PFCodeRuleService = pFCodeRuleService;
|
|
|
|
|
|
CodeRuleService = codeRuleService;
|
|
|
|
|
|
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();
|
|
|
|
|
|
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
|
|
|
|
|
|
{
|
|
|
|
|
|
//别的会议 第一次 自己选人
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2024-02-05 11:28:36 +08:00
|
|
|
|
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);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2024-01-22 09:17:01 +08:00
|
|
|
|
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>(() =>
|
|
|
|
|
|
{
|
2024-02-05 11:28:36 +08:00
|
|
|
|
if (entity.DEPARTMENT_ID == Guid.Empty)
|
|
|
|
|
|
{
|
|
|
|
|
|
throw new Exception("会议部门不能为空或者超级管理员不能发布会议!");
|
|
|
|
|
|
}
|
2024-01-22 09:17:01 +08:00
|
|
|
|
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;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
#region 判断对接模块 修改 CREACTTYPE == CREACTTYPEEnum.
|
|
|
|
|
|
|
|
|
|
|
|
if (entity.CREACTTYPE == CREACTTYPEEnum.System || entity.CREACTTYPE == CREACTTYPEEnum.UserAdd)
|
|
|
|
|
|
{
|
|
|
|
|
|
//非特殊触发
|
|
|
|
|
|
if (!string.IsNullOrEmpty(entity.CONTENT) && entity.CONTENT.Contains(ConnToOther.ToOG034EditName.GetDescription()))
|
|
|
|
|
|
{
|
|
|
|
|
|
entity.CREACTTYPE = CREACTTYPEEnum.ToOG034Edit;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
#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
|
|
|
|
|
|
|
|
|
|
|
|
#region 隔离事务 怕受影响
|
|
|
|
|
|
|
|
|
|
|
|
try
|
|
|
|
|
|
{
|
|
|
|
|
|
if (entity.CREACTTYPE == CREACTTYPEEnum.System || entity.CREACTTYPE == CREACTTYPEEnum.UserAdd)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (contentName != null && contentName.Any())
|
|
|
|
|
|
{
|
|
|
|
|
|
var connentName = GetEntity<T_SC_MT_CONTENT_NAME>(e => e.NAME == ConnToOther.ToOG034EditName.GetDescription());
|
|
|
|
|
|
if (connentName != null)
|
|
|
|
|
|
{
|
|
|
|
|
|
var check = contentName.FirstOrDefault(e => e.CONTENTNAME_ID == connentName.ID);
|
|
|
|
|
|
if (check != null)
|
|
|
|
|
|
{
|
|
|
|
|
|
entity.CREACTTYPE = CREACTTYPEEnum.ToOG034Edit;
|
|
|
|
|
|
this.UnifiedCommit(() =>
|
|
|
|
|
|
{
|
|
|
|
|
|
if (entity != null)
|
|
|
|
|
|
UpdateEntityNoCommit(entity);
|
|
|
|
|
|
});
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
catch { }
|
|
|
|
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
|
|
if (entity.IS_SEND)
|
|
|
|
|
|
{
|
|
|
|
|
|
//短信发送
|
|
|
|
|
|
FMNoticeService.SendMsg(NOTICETYPE.Meeting, entity.ID);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
throw new Exception("会议通知状态【" + entity.STATUS.GetDescription() + "】操作失败!");
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
|
});
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/// <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();
|
|
|
|
|
|
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; }
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|