mh_sms/APT.MicroApi/APT.SC.WebApi/Controllers/Api/MTController/SCMTMeetingController.cs

1621 lines
78 KiB
C#
Raw Normal View History

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; }
}
}