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 { IFMFlowPermitService MFlowPermitService { get; set; } IFMUserService FMUserService { get; set; } IPFApproveCallBackService ApproveCallBackService { get; set; } IPFCodeRuleService PFCodeRuleService { get; set; } IFMNotificationTaskService FMNotificActionTaskService { get; set; } IFMNoticeService FMNoticeService { get; set; } public SCMTMeetingController(IFMUserService fMUserService, IFMFlowPermitService mFlowPermitService, IPFApproveCallBackService approveCallBackService, IPFCodeRuleService pFCodeRuleService, IFMNotificationTaskService fMNotificActionTaskService, IFMNoticeService noticeService) { FMUserService = fMUserService; MFlowPermitService = mFlowPermitService; ApproveCallBackService = approveCallBackService; PFCodeRuleService = pFCodeRuleService; FMNotificActionTaskService = fMNotificActionTaskService; FMNoticeService = noticeService; } /// /// 根据会议类型获取参会人员信息 /// /// /// [HttpPost, Route("GetPAll")] public JsonActionResult> GetPAll([FromBody] KeywordFilter filter) { //2023-12-29 //安委会 取配置人员 //否则 按 发起人 发起部门 会议类型 取上次 会议的参会人 return SafeExecute>(() => { List listResult = new List(); List listUsers = new List(); //基层安全会按部门 / 车间 / 班组点选或模糊查询,默认部门所有人员向下包含 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); string isNew = filter.Parameter2;//isNew ==1 新建 非自动触发 否则自动触发 用于自动加载手动创建会议的参会人 if (MEETINGTYPE == SCMEETINGTYPE.SafetyBoard) { //安委会 取 配置的人 var listAgency = GetEntities(e => !e.IS_DELETED && e.NAME == "安全生产委员会", null, null).OrderBy(e => e.NUM); if (listAgency != null && listAgency.Any()) { var AGENCY_ID = listAgency.Select(e => e.ID).ToList()[0]; var users = GetEntities(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(e => !e.IS_DELETED && e.DEPARTMENT_TYPE == 0, null, null); var listApprovreRole = GetEntities(e => !e.IS_DELETED && (e.NAME == "部门负责人" || e.NAME == "部门安全员" || e.NAME == "安环部负责人" || e.NAME == "安环部安全员"), null, null); if (listDep0 != null && listDep0.Any() && listApprovreRole != null && listApprovreRole.Any()) { List ids = listDep0.Select(e => e.ID).ToList(); List idsApprove = listApprovreRole.Select(e => e.ID).ToList(); var users = GetEntities(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 { Expression> expression = e => e.MEETINGTYPE == MEETINGTYPE && e.USER_ID_ORIGINATOR == LoginID && !e.IS_DELETED && e.Nav_ListPAll != null && e.Nav_ListPAll.Any(); if (!string.IsNullOrEmpty(isNew) && isNew == "1") { expression = expression.And(e => !e.PLANSET_ID.HasValue);//获取手动触发的参会人 } else { expression = expression.And(e => e.PLANSET_ID.HasValue);//获取自动触发的参会人 } //找上次 var meetLast = GetEntity(expression, 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(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(LoginID.Value, new string[] { "Nav_Department", "Nav_Person.Nav_Post" }); if (MEETINGTYPE == SCMEETINGTYPE.BasicSecurity) { ////基层安全会按部门/车间/班组点选或模糊查询,默认部门所有人员向下包含 ////获取 层级 及以下 所有人 //listUsers = FMUserService.GetDownUser(loginInfo.DEPARTMENT_ID.Value, new string[] { "Nav_Department", "Nav_Person.Nav_Post" }); //部门负责人发起,参会人员为:部门内所属人员 + 车间安全员及负责人 //车间负责人发起,参会人员为:车间内所属人员 + 班组长 //班组负责人发起,参会人员为:班组内成员 //FMDepartmentType 部门 = 0, 车间 = 1, 班组 = 2, 公司 = 3 switch (loginInfo.Nav_Department.DEPARTMENT_TYPE) { case 0: case 1: listUsers = FMUserService.GetUserContentNextHead(loginInfo.DEPARTMENT_ID.Value); break; case 2: case 3: //班组 = 2, 公司 = 3 listUsers = FMUserService.GetDownUser(loginInfo.DEPARTMENT_ID.Value, new string[] { "Nav_Department", "Nav_Person.Nav_Post" }); break; default: break; } } else { //别的会议 第一次 自己选人 } } } if (listUsers != null && listUsers.Any() && (listUsers[0].Nav_Department == null || listUsers[0].Nav_Person == null)) { var listDepID = listUsers.Where(e => e.DEPARTMENT_ID.HasValue).Select(e => e.DEPARTMENT_ID.Value).Distinct(); var listPersonID = listUsers.Where(e => e.PERSON_ID.HasValue).Select(e => e.PERSON_ID.Value).Distinct(); if (listDepID.Any() && listPersonID.Any()) { var listDep = GetEntities(e => listDepID.Contains(e.ID), null).OrderBy(e => e.NUM); var listPer = GetEntities(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); } } } listUsers = listUsers.OrderBy(e => e.NUM).ToList(); 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; temp.NUM = i + 1; listResult.Add(temp); } } return listResult; }); } /// /// 根据会议内容 获取 会议意见 /// /// /// [HttpPost, Route("GetListContent")] public JsonActionResult> GetListContent([FromBody] KeywordFilter filter) { return SafeExecute>(() => { List listResult = new List(); if (!string.IsNullOrEmpty(filter.Keyword)) { List 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(e => ids.Contains(e.ID), null, null).OrderBy(e => e.ID); if (content.Any()) { List 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; }); } /// /// /// /// /// [HttpPost, Route("FullUpdate")] public JsonActionResult FullUpdate([FromBody] T_SC_MT_MEETING entity) { return SafeExecute(() => { if (entity.DEPARTMENT_ID == Guid.Empty) { throw new Exception("会议部门不能为空或者超级管理员不能发布会议!"); } Guid LoginID = APT.Infrastructure.Api.AppContext.CurrentSession.UserID.Value; if (entity.USER_ID_ORIGINATOR != Guid.Empty && entity.USER_ID_ORIGINATOR != LoginID) { if (entity.TaskID == Guid.Empty) { // entity.USER_ID_ORIGINATOR = LoginID;//如果转办 修改信息 //} //else //{ string OriginatorName = entity.Nav_User_Originator != null ? entity.Nav_User_Originator.NAME : GetEntity(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(entity.DEPARTMENT_ID); } if (entity.LEVELVALUE == null)//entity.CheckLevel_ENUMS_ID == null || { if (entity.MEETINGTYPE == SCMEETINGTYPE.SafetyBoard) { //安委会 公司级 entity.LEVELVALUE = 3; } else { var enums = GetEntity(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 listUserID = new List(); 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 listUserId = new List(); 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(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(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(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(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 => 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 ListNoticeAll = new List(); List ListNoticeAllNAME = new List(); 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 dicUserPhone = null; if (entity.IS_SEND) { dicUserPhone = new Dictionary(); } if (ListNoticeAll != null && ListNoticeAll.Any()) { var listUserTask = GetEntities(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 listNoticeDeals = FMNotificActionTaskService.InsertUserNoticeTaskModels(perNoticeTitle, entity.ID, entity.ORG_ID, ListNoticeAll, ListNoticeAllNAME, DateTime.Now, entity.BEGIN_TIME.Value, (int)FMNoticeTypeEnum.消息, "SC028_SHOWPRINT"); //不要做默认参加 //foreach (var item in listNoticeDeals) //{ // if (item.USER_ID == LoginID) // { // item.NOTICE_STATUS = 0; // item.TASK_DT = DateTime.Now; // break; // } //} //foreach (var item in all) //{ // if (item.USER_ID == LoginID) // { // item.JOINRESULT = JoinTaskResult.Join; // break; // } //} //如果会议已经开始了 待办变成已完成 if (entity.BEGIN_TIME.Value < DateTime.Now) { foreach (var item in listNoticeDeals) { item.NOTICE_STATUS = 1; } } //发起人 和 记录人 默认 参加 var taskLogin = listNoticeDeals.FirstOrDefault(e => e.USER_ID == entity.USER_ID_ORIGINATOR); if (taskLogin != null) { taskLogin.NOTICE_STATUS = 1; taskLogin.TASK_DT = DateTime.Now; //发起人 默认参加 T_SC_MT_MEETING_PALL modelORIGINATOR = all.FirstOrDefault(e => e.USER_ID == entity.USER_ID_ORIGINATOR); if (modelORIGINATOR != null) { modelORIGINATOR.JOINRESULT = JoinTaskResult.Join; } } ////var taskRECORDER = listNoticeDeals.FirstOrDefault(e => e.USER_ID == entity.USER_ID_RECORDER); ////if (taskRECORDER != null) ////{ //// taskRECORDER.NOTICE_STATUS = 1; //// taskRECORDER.TASK_DT = DateTime.Now; ////} //this.UnifiedCommit(() => //{ // if (entity != null) // UpdateEntityNoCommit(entity); // if (listNoticeDeals != null && listNoticeDeals.Any())//隐患上报明细表 // BantchSaveEntity(listNoticeDeals); // if (sendNotice != null) // UpdateEntityNoCommit(sendNotice); //}); //return true; #endregion if (listThemes != null && listThemes.Any()) { foreach (var item in listThemes) { item.Nav_MeetingTheme = null; } } if (entity.CREACTTYPE == null) entity.CREACTTYPE = CREACTTYPEEnum.UserAdd; if (string.IsNullOrEmpty(entity.CODE)) entity.CODE = "HY" + DateTime.Now.ToString("yyyyMMddHHmm"); #region 判断对接模块 修改 CREACTTYPE == CREACTTYPEEnum. if ((entity.CREACTTYPE == CREACTTYPEEnum.System || entity.CREACTTYPE == CREACTTYPEEnum.UserAdd) && !string.IsNullOrEmpty(entity.CONTENT32)) { //普通会议、文件审核会、文件评审会 会议内容是选择的 //安委会、基层安全会 会议内容输入 CREACTTYPEEnum? CREACTTYPE = GetCREACTTYPE(entity.MEETINGTYPE, entity.CONTENT32);//根据会议内容 触发对应表单 if (CREACTTYPE != null) { entity.CREACTTYPE = CREACTTYPE; } } #endregion #region 短信发送 List listNotice = null; NOTICETYPE noticeType = NOTICETYPE.Meeting; if (entity.IS_SEND) { entity.IS_SENDED = true; listNotice = new List(); Guid Key = Guid.NewGuid(); //所有的人 添加 参会通知 //if (entity.ORG_ID.Value.ToString().ToUpper() == FilePathHead.DCJD.GetDescription()) //{ // noticeType = NOTICETYPE.MeetingJD; //} foreach (var item in listNoticeDeals) { if (item.USER_ID == LoginID || listNotice.FirstOrDefault(e => e.USER_ID == item.USER_ID) != null) continue; string TEMPLATE_ID = FMNoticeService.GetTEMPLATE_ID(entity.ORG_ID.Value); if (string.IsNullOrEmpty(TEMPLATE_ID)) break; 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, TEMPLATE_ID = TEMPLATE_ID, TABLENAME = "T_SC_MT_MEETING", DATA_ID = entity.ID, USER_ID = item.USER_ID, USERNAME = item.USER_NAME, TEL = dicUserPhone.ContainsKey(item.USER_ID) ? dicUserPhone[item.USER_ID] : "", NOTICE_STATUS = FMNoticeStatus.等待发送, TRYCOUNT = 0, TITLE = item.NOTICE_TITLE + "[" + entity.BEGIN_TIME.Value.ToString("yyyy-MM-dd HH:MM") + "]", ENDDT = item.TASK_ENDDT }); } } #endregion this.UnifiedCommit(() => { if (entity != null) UpdateEntityNoCommit(entity); //保存主表 if (listThemes != null && listThemes.Any())//安委会主题 BantchSaveEntityNoCommit(listThemes); if (all != null && all.Any())//参会人员 BantchSaveEntityNoCommit(all); if (PReView != null && PReView.Any())//审批人员 BantchSaveEntityNoCommit(PReView); if (contentName != null && contentName.Any())//意见 BantchSaveEntityNoCommit(contentName); if (filesOffice != null && filesOffice.Any())//会议通知加盖公章 BantchSaveEntityNoCommit(filesOffice); if (files != null && files.Any())//附件 BantchSaveEntityNoCommit(files); if (taskEnd != null) UpdateEntityNoCommit(taskEnd); //保存主表 if (listNoticeDeals != null && listNoticeDeals.Any())//参会通知 BantchSaveEntity(listNoticeDeals); if (sendNotice != null)//会议类型对应的今日提醒 UpdateEntityNoCommit(sendNotice); if (listNotice != null && listNotice.Any())//会议短信 BantchSaveEntityNoCommit(listNotice); }); // 审批完 回调方法 SC/SCMTMeeting/MeetingNoticeBack if (entity.IS_SEND) { try { //短信发送 switch (noticeType) { case NOTICETYPE.Meeting: FMNoticeService.SendMsg(NOTICETYPE.Meeting, entity.ID); break; case NOTICETYPE.MeetingJD: FMNoticeService.SendMsg(NOTICETYPE.MeetingJD, entity.ID); break; default: break; } } catch { } } } else { throw new Exception("会议通知状态【" + entity.STATUS.GetDescription() + "】操作失败!"); } return true; }); } /// /// 根据检查内容 返回会议生成方式 /// /// /// /// private CREACTTYPEEnum? GetCREACTTYPE(SCMEETINGTYPE MEETINGTYPE, string CONTENT) { if (string.IsNullOrEmpty(CONTENT)) return null; switch (MEETINGTYPE) { case SCMEETINGTYPE.Ordinary: if (CONTENT.Contains(ConnToOther.ToOG034EditName.GetDescription())) return CREACTTYPEEnum.ToOG034Edit; //if (CONTENT.Contains(ConnToOther.安全生产方针讨论.GetDescription())) // return CREACTTYPEEnum.ToPT014; if (CONTENT.Contains(ConnToOther.认可与奖励评价.GetDescription())) return CREACTTYPEEnum.ToOG028; if (CONTENT.Contains(ConnToOther.风险评价小组成立.GetDescription())) return CREACTTYPEEnum.ToHM134; if (CONTENT.Contains(ConnToOther.设备设施维修计划讨论.GetDescription())) return null; if (CONTENT.Contains(ConnToOther.设备设施维修工作方案讨论.GetDescription())) return null; if (CONTENT.Contains(ConnToOther.安全投入论证.GetDescription())) return null; if (CONTENT.Contains(ConnToOther.应急机构成立及人员任命.GetDescription())) return CREACTTYPEEnum.ToOG010; if (CONTENT.Contains(ConnToOther.成立矿山救护队.GetDescription())) return null; if (CONTENT.Contains(ConnToOther.潜在紧急事件讨论.GetDescription())) return CREACTTYPEEnum.ToCM018; if (CONTENT.Contains(ConnToOther.应急能力评估.GetDescription())) return CREACTTYPEEnum.ToCM026; if (CONTENT.Contains(ConnToOther.应急演练计划讨论.GetDescription())) return CREACTTYPEEnum.ToCM002; if (CONTENT.Contains(ConnToOther.应急演练方案讨论.GetDescription())) return CREACTTYPEEnum.ToWJSH; //if (CONTENT.Contains(ConnToOther.事故调查小组成立.GetDescription())) // return CREACTTYPEEnum.ToAE006; //if (CONTENT.Contains(ConnToOther.事故调查讨论.GetDescription())) // return CREACTTYPEEnum.ToAE008; //if (CONTENT.Contains(ConnToOther.调查报告讨论.GetDescription())) // return CREACTTYPEEnum.ToAE018; //事故事件与会议关联总体流程 //事故事件上报[AE006] => 审批 => 触发【事故调查小组成立】会议 => 【事故调查小组成员AE008】表单=> 触发【事故调查讨论】会议 => 【勘察记录表 AE018】表单 => 触发【调查报告讨论】会议 => 【事故事件调查结果填报表AE010】 if (CONTENT.Contains(ConnToOther.事故调查小组成立.GetDescription())) return CREACTTYPEEnum.ToAE008; if (CONTENT.Contains(ConnToOther.事故调查讨论.GetDescription())) return CREACTTYPEEnum.ToAE018; if (CONTENT.Contains(ConnToOther.调查报告讨论.GetDescription())) return CREACTTYPEEnum.ToAE010; if (CONTENT.Contains(ConnToOther.事故事件统计分析.GetDescription())) return null; if (CONTENT.Contains(ConnToOther.事故事件回顾.GetDescription())) return null; if (CONTENT.Contains(ConnToOther.安全检查表的回顾与更新.GetDescription())) return CREACTTYPEEnum.ToBS032; if (CONTENT.Contains(ConnToOther.危险源辨识与风险评价回顾.GetDescription())) return CREACTTYPEEnum.ToHM062_HM102; if (CONTENT.Contains(ConnToOther.年度生产作业计划讨论会.GetDescription())) return CREACTTYPEEnum.ToNotice; if (CONTENT.Contains(ConnToOther.变化管理讨论.GetDescription())) return CREACTTYPEEnum.ToPR023; break; case SCMEETINGTYPE.FileAudit: if (CONTENT.Contains(ConnToOther.法律法规更新评审会.GetDescription())) return CREACTTYPEEnum.ToLR010; if (CONTENT.Contains(ConnToOther.合理化建议评审会.GetDescription())) return CREACTTYPEEnum.ToOG060; if (CONTENT.Contains(ConnToOther.安全标准化评审会.GetDescription())) return CREACTTYPEEnum.ToPE027; if (CONTENT.Contains(ConnToOther.尾矿勘察文件评审.GetDescription())) return CREACTTYPEEnum.ToWJSH; if (CONTENT.Contains(ConnToOther.尾矿安全评价文件评审.GetDescription())) return CREACTTYPEEnum.ToWJSH; if (CONTENT.Contains(ConnToOther.回采勘察文件评审.GetDescription())) return CREACTTYPEEnum.ToTL014; if (CONTENT.Contains(ConnToOther.尾矿回采安全预评价文件评审.GetDescription())) return CREACTTYPEEnum.ToWJSH; if (CONTENT.Contains(ConnToOther.尾矿闭库安全现状评价文件评审.GetDescription())) return CREACTTYPEEnum.ToWJSH; if (CONTENT.Contains(ConnToOther.许可作业范围评审会.GetDescription())) return CREACTTYPEEnum.ToHM104; if (CONTENT.Contains(ConnToOther.安全生产责任制评审会.GetDescription())) return CREACTTYPEEnum.ToOG002; if (CONTENT.Contains(ConnToOther.尾矿防震技术论证报告评审会.GetDescription())) return CREACTTYPEEnum.ToWJSH; break; case SCMEETINGTYPE.FileReView: if (CONTENT.Contains(ConnToOther.安全评价文件审核.GetDescription())) return CREACTTYPEEnum.ToWJSH; if (CONTENT.Contains(ConnToOther.设计文件审核_露天矿山选厂.GetDescription())) return CREACTTYPEEnum.ToPR002; if (CONTENT.Contains(ConnToOther.应急预案审核.GetDescription())) return CREACTTYPEEnum.ToSC067; if (CONTENT.Contains(ConnToOther.勘察文件审核_尾矿.GetDescription())) return CREACTTYPEEnum.ToWJSH; if (CONTENT.Contains(ConnToOther.勘察文件审核_露天矿山.GetDescription())) return CREACTTYPEEnum.ToWJSH; if (CONTENT.Contains(ConnToOther.设计文件审核_尾矿.GetDescription())) return CREACTTYPEEnum.ToPR002_2; if (CONTENT.Contains(ConnToOther.回采勘察文件审核_尾矿.GetDescription())) return CREACTTYPEEnum.ToWJSH; if (CONTENT.Contains(ConnToOther.回采安全预评价文件审核_尾矿.GetDescription())) return CREACTTYPEEnum.ToWJSH; if (CONTENT.Contains(ConnToOther.回采设计文件审核_尾矿.GetDescription())) return CREACTTYPEEnum.ToPR002_3; if (CONTENT.Contains(ConnToOther.闭库安全现状评价文件审核_尾矿.GetDescription())) return CREACTTYPEEnum.ToWJSH; if (CONTENT.Contains(ConnToOther.闭库设计文件审核_尾矿.GetDescription())) return CREACTTYPEEnum.ToPR002_4; if (CONTENT.Contains(ConnToOther.所有的制度文件审核会.GetDescription())) return null; break; case SCMEETINGTYPE.SafetyBoard: break; case SCMEETINGTYPE.BasicSecurity: break; default: break; } return null; } /// /// 发送短信 /// /// /// [HttpPost, Route("SendMsg")] public JsonActionResult SendMsg([FromBody] KeywordFilter filter) { return SafeExecute(() => { var mtConfig = GetEntity(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(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(e => e.MEETING_ID == MeetingID, null, null).Select(e => e.USER_ID).Distinct(); var listUser = GetEntities(e => listUserID.Contains(e.ID), null, null); Guid Key = Guid.NewGuid(); DateTime? dtEndTime = null; var task = GetEntity(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 listNoticeSend = new List(); NOTICETYPE noticeType = NOTICETYPE.Meeting; //if (meeting.ORG_ID.Value.ToString().ToUpper() == FilePathHead.DCJD.GetDescription()) //{ // noticeType = NOTICETYPE.MeetingJD; //} string TEMPLATE_ID = FMNoticeService.GetTEMPLATE_ID(mtConfig.ORG_ID.Value); if (!string.IsNullOrEmpty(TEMPLATE_ID)) { 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, TEMPLATE_ID = TEMPLATE_ID, 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); }); switch (noticeType) { case NOTICETYPE.Meeting: FMNoticeService.SendMsg(NOTICETYPE.Meeting, null, Key); break; case NOTICETYPE.MeetingJD: FMNoticeService.SendMsg(NOTICETYPE.MeetingJD, null, Key); break; default: break; } } return true; }); } /// /// 会议通知发布审批回调 /// /// /// [HttpGet, Route("MeetingNoticeBack")] public JsonActionResult MeetingNoticeBack(string id) { return SafeExecute(() => { return ApproveCallBackService.CallBack("SC/SCMTMeeting/MeetingNoticeBack", id); }); } /// /// 参会人员 参会/请假 /// /// /// [HttpPost, Route("PAllCheck")] public JsonActionResult PAllCheck([FromBody] KeywordFilter filter) { return SafeExecute(() => { 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(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 listModelAllLogin = null; List 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; }); } /// /// 根据会议ID获取参会人员信息 /// /// /// [HttpPost, Route("GetMeetingPAll")] public JsonActionResult> GetMeetingPAll([FromBody] KeywordFilter filter) { return SafeExecute>(() => { //var list = GetEntities(e => !e.IS_DELETED && e.PERSONTYPE == SCMEETINGPERSONTYPE.ALL, filter, new string[] { "Nav_User" }).ToList(); Guid MEETING_ID = Guid.Empty; List 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>(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>(item.Value.ToString()); break; case "MEETING_ID": MEETING_ID = new Guid(item.Value.ToString()); break; default: break; } } } Expression> 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 listResult = GetEntities(expression, null, new string[] { "Nav_User" }).Select(e => e.Nav_User).ToList(); return listResult; }); } /// /// 数据删除 /// /// 过滤实体 /// [HttpGet, Route("FullDelete")] public JsonActionResult FullDelete(string id) { return SafeExecute(() => { //删除审批流 //删除明细 //删除主表 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(meetingId, path); if (entity.ISBEGIN) { throw new Exception("该会议已经开始了,删除失败!"); } else if (entity.CREACTTYPE.HasValue && entity.CREACTTYPE == CREACTTYPEEnum.System) { throw new Exception("系统设置要召开的会议不能删除!"); } List listMeetingContentID = new List(); List listPAllID = new List(); List listPReViewID = new List(); List filesIds = new List(); List listOfficialsealID = new List(); List listFilesRecordID = new List(); List listApproveDetailId = new List(); 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 => 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(listApproveDetailId); if (entity.APPROVE_ID.HasValue) DeleteEntityNoCommit(entity.APPROVE_ID.Value.ToString()); if (listFilesRecordID.Count > 0) this.BantchDeleteEntityNoCommit(listFilesRecordID); if (listOfficialsealID.Count > 0) this.BantchDeleteEntityNoCommit(listOfficialsealID); if (filesIds.Count > 0) this.BantchDeleteEntityNoCommit(filesIds); if (listPReViewID.Count > 0) this.BantchDeleteEntityNoCommit(listPReViewID); if (listPAllID.Count > 0) this.BantchDeleteEntityNoCommit(listPAllID); if (listMeetingContentID.Count > 0) this.BantchDeleteEntityNoCommit(listMeetingContentID); if (entity != null) this.DeleteEntityNoCommit(entity); }); return true; }); } /// /// 排序分页查询数据 /// /// 分页过滤实体 /// [HttpPost, Route("OrderPaged")] public PagedActionResult OrderPaged([FromBody] KeywordPageFilter pageFilter) { PagedActionResult 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; } /// /// 获得单条实体数据 /// /// 过滤实体 /// [HttpPost, Route("GetSuit")] public JsonActionResult GetSuit([FromBody] KeywordFilter filter) { return SafeExecute(() => { var model = GetEntity(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; }); } /// /// 获得单条实体数据 /// /// 过滤实体 /// [HttpPost, Route("GetSuitDevlop")] public JsonActionResult GetSuitDevlop([FromBody] KeywordFilter filter) { return SafeExecute(() => { List listIncludAll = filter.Include.ToList(); List listIncludSearch = new List(); List listIncludPAll = new List(); 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(null, filter); var listAll = GetEntities(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; }); } /// /// 会议取消 /// /// /// /// [HttpPost, Route("Cancel")] public JsonActionResult Cancel([FromBody] KeywordFilter filter) { return SafeExecute(() => { if (string.IsNullOrEmpty(filter.Keyword)) { throw new Exception("请勾选会议通知后再取消!"); } if (filter.Keyword.Contains(",")) { throw new Exception("每次只能取消一条会议通知!"); } Guid guid = new Guid(filter.Keyword); var meeting = GetEntity(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 listNotice = null; T_PF_APPROVE modelAppro = null; IEnumerable IlistApproveDetal = null; switch (meeting.STATUS) { case PFStandardStatus.Draft: listNotice = GetEntities(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(e => e.SOURCE_DATA_ID.HasValue && e.SOURCE_DATA_ID.Value == meeting.APPROVE_ID.Value, null); // var approID = meeting.APPROVE_ID.Value; // //业务数据 // modelAppro = GetEntity(e => e.ID == approID); // IlistApproveDetal = GetEntities(e => e.APPROVE_ID == approID, null); //} // break; //case PFStandardStatus.Archived://审批 //只是发送待办(参会通知) 没业务数据需要处理 listNotice = GetEntities(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 listNoticeCancel = null; List listUserID = new List(); List listUserName = new List(); #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; }); } /// /// 获得单条实体数据 /// /// 过滤实体 /// [HttpPost, Route("GetAPP")] public JsonActionResult GetAPP([FromBody] KeywordFilter filter) { return SafeExecute(() => { var mt = GetEntity(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 listResult = new List(); List listUsers = new List(); //基层安全会按部门 / 车间 / 班组点选或模糊查询,默认部门所有人员向下包含 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(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(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(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(e => !e.IS_DELETED && e.DEPARTMENT_TYPE == 0, null, null); var listApprovreRole = GetEntities(e => !e.IS_DELETED && (e.NAME == "部门负责人" || e.NAME == "部门安全员" || e.NAME == "安环部负责人" || e.NAME == "安环部安全员"), null, null); if (listDep0 != null && listDep0.Any() && listApprovreRole != null && listApprovreRole.Any()) { List ids = listDep0.Select(e => e.ID).ToList(); List idsApprove = listApprovreRole.Select(e => e.ID).ToList(); var users = GetEntities(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; }); } } /// /// 人会人员 选请假人、缺席人 /// 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; } } }