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

1491 lines
74 KiB
C#
Raw Permalink 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.SC;
using APT.MS.Domain.Enums;
using APT.Utility;
using Microsoft.AspNetCore.Mvc;
using System;
using System.Collections.Generic;
using System.Linq;
namespace APT.SC.WebApi.Controllers.Api.SC
{
/// <summary>
///
/// </summary>
[Route("api/SC/SCMtMeetingMinutes")]
public class SCMtMeetingMinutesController : AuthorizeApiController<T_SC_MT_MEETING_MINUTES>
{
IFMFlowPermitService MFlowPermitService { get; set; }
IFMUserService FMUserService { get; set; }
IPFApproveCallBackService ApproveCallBackService { get; set; }
IFMNotificationTaskService FMNotificActionTaskService { get; set; }
IFMNotificationTaskService NotificationTaskService { get; set; }
IPFCodeRuleService CodeRuleService { get; set; }
public SCMtMeetingMinutesController(IFMUserService fMUserService, IFMFlowPermitService mFlowPermitService, IPFApproveCallBackService approveCallBackService, IPFCodeRuleService codeRuleService, IFMNotificationTaskService fMNotificActionTaskService, IFMNotificationTaskService notificationTaskService)
{
FMUserService = fMUserService;
MFlowPermitService = mFlowPermitService;
ApproveCallBackService = approveCallBackService;
FMNotificActionTaskService = fMNotificActionTaskService;
NotificationTaskService = notificationTaskService;
CodeRuleService = codeRuleService;
}
/// <summary>
/// 编辑页面过滤 评审人
/// </summary>
/// <param name="filter"></param>
/// <returns></returns>
[HttpPost, Route("Get")]
public JsonActionResult<T_SC_MT_MEETING_MINUTES> Get([FromBody] KeywordFilter filter)
{
return SafeExecute<T_SC_MT_MEETING_MINUTES>(() =>
{
Guid ID = Guid.Empty;
if (filter.FilterGroup.Rules != null && filter.FilterGroup.Rules.Any())
{
foreach (var item in filter.FilterGroup.Rules)
{
if (item.Field == "ID")
{
ID = new Guid(item.Value.ToString());
filter.FilterGroup.Rules.Remove(item);
break;
}
}
}
T_SC_MT_MEETING_MINUTES result = null;
if (ID == Guid.Empty)
{
result = GetEntity<T_SC_MT_MEETING_MINUTES>(null, filter);
}
else
{
ICollection<string> IncludeMinutes = new List<string>();
//ICollection<string> IncludeMinutesUserExt = new List<string>();
bool isUserExt = false;
List<string> IncludeMinutesContent = new List<string>();
ICollection<string> IncludeMeeting = new List<string>();
ICollection<string> IncludeMinutesUserSign = new List<string>();//需要签名的
foreach (var item in filter.Include)
{
//if (item == "Nav_ListContent.Nav_ListContentDeal" || item == "Nav_ListContent.Nav_Content.Nav_ListContentDeal" || item == "Nav_ListMeetingContent.Nav_ContentName" || item == "Nav_ListMeetingContent")
//{
// //会议纪要 拉出了 会议的会议内容
// IncludeMeeting.Add(item);
//}
//else
if (item.Contains("Nav_Meeting"))
{
if (item != "Nav_Meeting" && item != "Nav_Meeting.Nav_UserHost" && item != "Nav_Meeting.Nav_UserRecorder")
{
IncludeMeeting.Add(item.Substring(12));
}
}
else if (item.Contains("Nav_ListContent"))
{
if (item != "Nav_ListContent")
IncludeMinutesContent.Add(item.Substring(16));
}
else if (item.Contains("Nav_User") && item.StartsWith("Nav_ListP"))
{
if (item.Contains("Nav_UserSignFiles"))
{
IncludeMinutesUserSign.Add(item);
}
IncludeMinutes.Add(item.Split(".Nav_User")[0]);//人员拆分搜索
if (!isUserExt && item.Contains(".Nav_User."))
{
isUserExt = true;
}
//if (item.Contains(".Nav_User."))
//{
// IncludeMinutesUserExt.Add(item.Split(".Nav_User.")[1]);
//}
}
else
{
IncludeMinutes.Add(item);
}
}
//if (IncludeMinutesUserExt.Count > 0)
//{
// IncludeMinutesUserExt = IncludeMinutesUserExt.Distinct().ToList();
//}
filter.Include = IncludeMinutes;
result = GetEntity<T_SC_MT_MEETING_MINUTES>(e => e.ID == ID, IncludeMinutes.ToArray());
var meeting = GetEntity<T_SC_MT_MEETING>(e => e.ID == result.MEETING_ID, IncludeMeeting.ToArray());
if (IncludeMinutesContent != null && IncludeMinutesContent.Count > 0)
{
if (IncludeMinutesContent.Contains("Nav_ListContentDeal") && !IncludeMinutesContent.Contains("Nav_ListContentDeal.Nav_ContentDeal"))
{
IncludeMinutesContent.Add("Nav_ListContentDeal.Nav_ContentDeal");
}
var contents = GetEntities<T_SC_MT_MEETING_MINUTES_CONTENT>(e => e.MEETING_MINUTES_ID == ID, null, IncludeMinutesContent.ToArray());
if (contents != null && contents.Any())
{
result.Nav_ListContent = contents.ToList();
}
else
{
result.Nav_ListContent = new List<T_SC_MT_MEETING_MINUTES_CONTENT>();
}
}
//1 "Nav_ListPReview.Nav_User"
//10 "Nav_ListPAskForLeave.Nav_User"
//11 "Nav_ListPAbsence.Nav_User"
//13 "Nav_ListPJoin.Nav_User.Nav_UserSignFiles.Nav_ImgFile.Nav_File"
List<Guid> listUserID = new List<Guid>();
List<Guid> listUserIDSign = new List<Guid>();
if (meeting.USER_ID_HOST.HasValue)
{
listUserID.Add(meeting.USER_ID_HOST.Value);//主持人
}
if (meeting.USER_ID_RECORDER.HasValue)
{
listUserID.Add(meeting.USER_ID_RECORDER.Value);//记录人
}
if (result.Nav_ListPReview != null && result.Nav_ListPReview.Any())
{
listUserID.AddRange(result.Nav_ListPReview.Select(e => e.USER_ID));
}
if (result.Nav_ListPAskForLeave != null && result.Nav_ListPAskForLeave.Any())
{
listUserID.AddRange(result.Nav_ListPAskForLeave.Select(e => e.USER_ID));
}
if (result.Nav_ListPAbsence != null && result.Nav_ListPAbsence.Any())
{
listUserID.AddRange(result.Nav_ListPAbsence.Select(e => e.USER_ID));
}
if (result.Nav_ListPJoin != null && result.Nav_ListPJoin.Any())
{
listUserID.AddRange(result.Nav_ListPJoin.Select(e => e.USER_ID));
listUserIDSign.AddRange(result.Nav_ListPJoin.Select(e => e.USER_ID));
}
if (listUserID.Count > 0)
{
listUserID = listUserID.Distinct().ToList();
var listUserAll = GetEntities<T_FM_USER>(e => listUserID.Contains(e.ID), null, null);
if (listUserAll != null && listUserAll.Any() && listUserIDSign.Count > 0)
{
var listUserSign = GetEntities<T_FM_USER_SIGN_FILE>(e => listUserIDSign.Contains(e.USER_ID), null, "Nav_ImgFile.Nav_File");
foreach (var item in listUserAll)
{
if (listUserIDSign.Contains(item.ID))
{
item.Nav_UserSignFiles = listUserSign.Where(e => e.USER_ID == item.ID).ToList();
}
}
}
if (result.Nav_ListPReview != null && result.Nav_ListPReview.Any())
{
foreach (var item in result.Nav_ListPReview)
{
item.Nav_User = listUserAll.FirstOrDefault(e => e.ID == item.USER_ID);
}
}
if (result.Nav_ListPAskForLeave != null && result.Nav_ListPAskForLeave.Any())
{
foreach (var item in result.Nav_ListPAskForLeave)
{
item.Nav_User = listUserAll.FirstOrDefault(e => e.ID == item.USER_ID);
}
}
if (result.Nav_ListPAbsence != null && result.Nav_ListPAbsence.Any())
{
foreach (var item in result.Nav_ListPAbsence)
{
item.Nav_User = listUserAll.FirstOrDefault(e => e.ID == item.USER_ID);
}
}
if (result.Nav_ListPJoin != null && result.Nav_ListPJoin.Any())
{
foreach (var item in result.Nav_ListPJoin)
{
item.Nav_User = listUserAll.FirstOrDefault(e => e.ID == item.USER_ID);
}
}
if (meeting.USER_ID_HOST.HasValue)
{
meeting.Nav_UserHost = listUserAll.FirstOrDefault(e => e.ID == meeting.USER_ID_HOST.Value);//主持人
}
if (meeting.USER_ID_RECORDER.HasValue)
{
meeting.Nav_UserRecorder = listUserAll.FirstOrDefault(e => e.ID == meeting.USER_ID_RECORDER.Value);//记录人
}
if (isUserExt)
{
//评审人员 和 参加人 额外显示部门职位信息
List<Guid> listDepID = new List<Guid>();
List<Guid> listPersonID = new List<Guid>();
listDepID.AddRange(result.Nav_ListPJoin.Where(e => e.Nav_User.DEPARTMENT_ID.HasValue).Select(e => e.Nav_User.DEPARTMENT_ID.Value).ToList());
listDepID.AddRange(result.Nav_ListPReview.Where(e => e.Nav_User.DEPARTMENT_ID.HasValue).Select(e => e.Nav_User.DEPARTMENT_ID.Value).ToList());
listPersonID.AddRange(result.Nav_ListPJoin.Where(e => e.Nav_User.PERSON_ID.HasValue).Select(e => e.Nav_User.PERSON_ID.Value).ToList());
listPersonID.AddRange(result.Nav_ListPReview.Where(e => e.Nav_User.PERSON_ID.HasValue).Select(e => e.Nav_User.PERSON_ID.Value).ToList());
listDepID = listDepID.Distinct().ToList();
listPersonID = listPersonID.Distinct().ToList();
if (listDepID != null)
{
var listDep = GetEntities<T_FM_DEPARTMENT>(e => listDepID.Contains(e.ID), null, null);
foreach (var item in result.Nav_ListPJoin)
{
if (item.Nav_User.DEPARTMENT_ID.HasValue)
item.Nav_User.Nav_Department = listDep.FirstOrDefault(e => item.Nav_User.DEPARTMENT_ID == e.ID);
}
foreach (var item in result.Nav_ListPReview)
{
if (item.Nav_User.DEPARTMENT_ID.HasValue)
item.Nav_User.Nav_Department = listDep.FirstOrDefault(e => item.Nav_User.DEPARTMENT_ID == e.ID);
}
}
if (listPersonID != null && listPersonID.Any())
{
var listPersons = GetEntities<T_FM_PERSON>(e => listPersonID.Contains(e.ID), null, "Nav_Post");
foreach (var item in result.Nav_ListPJoin)
{
if (item.Nav_User.PERSON_ID.HasValue)
item.Nav_User.Nav_Person = listPersons.FirstOrDefault(e => item.Nav_User.PERSON_ID == e.ID);
}
foreach (var item in result.Nav_ListPReview)
{
if (item.Nav_User.PERSON_ID.HasValue)
item.Nav_User.Nav_Person = listPersons.FirstOrDefault(e => item.Nav_User.PERSON_ID == e.ID);
}
}
}
}
result.Nav_Meeting = meeting;
}
if (result.Nav_ListPJoin != null && result.Nav_ListPJoin.Any())
{
result.Nav_ListPJoin = result.Nav_ListPJoin.Where(e => e.PERSONTYPE == SCMEETINGPERSONTYPE.JOIN).OrderBy(e => e.ISRECORDRED).ThenBy(e => e.MODIFY_TIME).ToList();
}
//检查内容排序
if (result.Nav_ListContent != null && result.Nav_ListContent.Any())
{
var ListContent = result.Nav_ListContent.OrderBy(e => e.Nav_Content.CONTENT_NO).ThenBy(e => e.Nav_Content.CONTENTNAME_ID).ToList();
foreach (var item in ListContent)
{
if (item.Nav_ListContentDeal != null && item.Nav_ListContentDeal.Any())
item.Nav_ListContentDeal = item.Nav_ListContentDeal.OrderBy(e => e.Nav_ContentDeal.CONTENT_DEAL_NO).ToList();
if (item.Nav_Content.Nav_ListContentDeal != null && item.Nav_Content.Nav_ListContentDeal.Any())
item.Nav_Content.Nav_ListContentDeal = item.Nav_Content.Nav_ListContentDeal.OrderBy(e => e.CONTENT_DEAL_NO).ToList();
}
result.Nav_ListContent = ListContent;
}
if (DataHelper.GetRequestType(Request.Headers) == 2 && result.Nav_ListMinutesDetail != null && result.Nav_ListMinutesDetail.Any())
{
foreach (var item in result.Nav_ListMinutesDetail)
{
if (item.DEALEFFECT.HasValue)
{
item.DEALEFFECTSHOW = item.DEALEFFECT.Value.GetDescription();
}
}
}
return result;
});
}
/// <summary>
/// 编辑页面过滤 评审人 Get的改进版(移动端)
/// </summary>
/// <param name="filter"></param>
/// <returns></returns>
[HttpPost, Route("GetDevelop")]
public JsonActionResult<T_SC_MT_MEETING_MINUTES> GetDevelop([FromBody] KeywordFilter filter)
{
return SafeExecute<T_SC_MT_MEETING_MINUTES>(() =>
{
Guid ID = Guid.Empty;
if (filter.FilterGroup.Rules != null && filter.FilterGroup.Rules.Any())
{
foreach (var item in filter.FilterGroup.Rules)
{
if (item.Field == "ID")
{
ID = new Guid(item.Value.ToString());
filter.FilterGroup.Rules.Remove(item);
break;
}
}
}
T_SC_MT_MEETING_MINUTES result = null;
if (ID == Guid.Empty)
{
result = GetEntity<T_SC_MT_MEETING_MINUTES>(null, filter);
}
else
{
ICollection<string> IncludeMinutes = new List<string>();
ICollection<string> IncludeMeeting = new List<string>();
ICollection<string> IncludeMinutesContent = new List<string>();
foreach (var item in filter.Include)
{
//if (item == "Nav_ListContent.Nav_ListContentDeal" || item == "Nav_ListContent.Nav_Content.Nav_ListContentDeal" || item == "Nav_ListMeetingContent.Nav_ContentName" || item == "Nav_ListMeetingContent")
//{
// //会议纪要 拉出了 会议的会议内容
// IncludeMeeting.Add(item);
//}
//else
if (item.Contains("Nav_Meeting"))
{
if (item != "Nav_Meeting" && item != "Nav_Meeting.Nav_UserHost" && item != "Nav_Meeting.Nav_UserRecorder")
IncludeMeeting.Add(item.Substring(12));
}
else if (item.Contains("Nav_ListContent"))
{
if (item != "Nav_ListContent")
IncludeMinutesContent.Add(item.Substring(16));
}
else
{
IncludeMinutes.Add(item);
}
}
filter.Include = IncludeMinutes;
result = GetEntity<T_SC_MT_MEETING_MINUTES>(e => e.ID == ID, IncludeMinutes.ToArray());
var meeting = GetEntity<T_SC_MT_MEETING>(e => e.ID == result.MEETING_ID, IncludeMeeting.ToArray());
#region
result.Nav_ListPReview = GetEntities<T_SC_MT_MINUTES_PREVIEW>(e => e.MEETING_MINUTES_ID == result.ID, null, null).ToList();
result.Nav_ListPAskForLeave = GetEntities<T_SC_MT_MEETING_PASKFORLEAVE>(e => e.MEETING_MINUTES_ID == result.ID, null, null).ToList();
result.Nav_ListPAbsence = GetEntities<T_SC_MT_MEETING_PABSENCE>(e => e.MEETING_MINUTES_ID == result.ID, null, null).ToList();
result.Nav_ListPJoin = GetEntities<T_SC_MT_MEETING_PJOIN>(e => e.MEETING_MINUTES_ID == result.ID, null, null).ToList();
List<Guid> listUserID = new List<Guid>();
if (meeting.USER_ID_HOST.HasValue)
{
listUserID.Add(meeting.USER_ID_HOST.Value);
}
if (meeting.USER_ID_RECORDER.HasValue)
{
listUserID.Add(meeting.USER_ID_RECORDER.Value);
}
if (result.Nav_ListPReview != null && result.Nav_ListPReview.Any())
{
var listUserIDPR = result.Nav_ListPReview.Select(e => e.USER_ID);
if (listUserIDPR.Any())
{
listUserID.AddRange(listUserIDPR);
}
}
if (result.Nav_ListPAskForLeave != null && result.Nav_ListPAskForLeave.Any())
{
var listUserIDPR = result.Nav_ListPAskForLeave.Select(e => e.USER_ID);
if (listUserIDPR.Any())
{
listUserID.AddRange(listUserIDPR);
}
}
if (result.Nav_ListPAbsence != null && result.Nav_ListPAbsence.Any())
{
var listUserIDPR = result.Nav_ListPAbsence.Select(e => e.USER_ID);
if (listUserIDPR.Any())
{
listUserID.AddRange(listUserIDPR);
}
}
if (result.Nav_ListPJoin != null && result.Nav_ListPJoin.Any())
{
var listUserIDPR = result.Nav_ListPJoin.Select(e => e.USER_ID);
if (listUserIDPR.Any())
{
listUserID.AddRange(listUserIDPR);
}
}
if (listUserID != null && listUserID.Any())
{
listUserID = listUserID.Distinct().ToList();
var listUserS = GetEntities<T_FM_USER>(e => listUserID.Contains(e.ID), null, null);
if (result.Nav_ListPReview != null && result.Nav_ListPReview.Any())
{
result.Nav_ListPReview.ForEach(e =>
{
e.Nav_User = listUserS.FirstOrDefault(eu => eu.ID == e.USER_ID);
});
}
if (result.Nav_ListPAskForLeave != null && result.Nav_ListPAskForLeave.Any())
{
result.Nav_ListPAskForLeave.ForEach(e =>
{
e.Nav_User = listUserS.FirstOrDefault(eu => eu.ID == e.USER_ID);
});
}
if (result.Nav_ListPAbsence != null && result.Nav_ListPAbsence.Any())
{
result.Nav_ListPAbsence.ForEach(e =>
{
e.Nav_User = listUserS.FirstOrDefault(eu => eu.ID == e.USER_ID);
});
}
if (result.Nav_ListPJoin != null && result.Nav_ListPJoin.Any())
{
result.Nav_ListPJoin.ForEach(e =>
{
e.Nav_User = listUserS.FirstOrDefault(eu => eu.ID == e.USER_ID);
});
}
if (meeting.USER_ID_HOST.HasValue)
{
meeting.Nav_UserHost = listUserS.FirstOrDefault(e => e.ID == meeting.USER_ID_HOST.Value);
}
if (meeting.USER_ID_RECORDER.HasValue)
{
meeting.Nav_UserRecorder = listUserS.FirstOrDefault(e => e.ID == meeting.USER_ID_RECORDER.Value);
}
}
#endregion
//#region Nav_ListContent
//var Nav_ListContent = GetEntities<T_SC_MT_MEETING_MINUTES_CONTENT>(e => e.MEETING_MINUTES_ID == result.ID, null, IncludeMinutesNav_ListContent.ToArray());
//result.Nav_ListContent = Nav_ListContent.ToList();
//#endregion
result.Nav_Meeting = meeting;
if (IncludeMinutesContent != null && IncludeMinutesContent.Count > 0)
{
if (IncludeMinutesContent.Contains("Nav_ListContentDeal") && !IncludeMinutesContent.Contains("Nav_ListContentDeal.Nav_ContentDeal"))
{
IncludeMinutesContent.Add("Nav_ListContentDeal.Nav_ContentDeal");
}
var contents = GetEntities<T_SC_MT_MEETING_MINUTES_CONTENT>(e => e.MEETING_MINUTES_ID == ID, null, IncludeMinutesContent.ToArray());
if (contents != null && contents.Any())
{
result.Nav_ListContent = contents.ToList();
}
else
{
result.Nav_ListContent = new List<T_SC_MT_MEETING_MINUTES_CONTENT>();
}
}
}
if (result.Nav_ListPJoin != null && result.Nav_ListPJoin.Any())
{
result.Nav_ListPJoin = result.Nav_ListPJoin.Where(e => e.PERSONTYPE == SCMEETINGPERSONTYPE.JOIN).OrderBy(e => e.ISRECORDRED).ThenBy(e => e.MODIFY_TIME).ToList();
}
//检查内容排序
if (result.Nav_ListContent != null && result.Nav_ListContent.Any())
{
var ListContent = result.Nav_ListContent.OrderBy(e => e.Nav_Content.CONTENT_NO).ThenBy(e => e.Nav_Content.CONTENTNAME_ID).ToList();
foreach (var item in ListContent)
{
if (item.Nav_ListContentDeal != null && item.Nav_ListContentDeal.Any())
item.Nav_ListContentDeal = item.Nav_ListContentDeal.OrderBy(e => e.Nav_ContentDeal.CONTENT_DEAL_NO).ToList();
if (item.Nav_Content.Nav_ListContentDeal != null && item.Nav_Content.Nav_ListContentDeal.Any())
item.Nav_Content.Nav_ListContentDeal = item.Nav_Content.Nav_ListContentDeal.OrderBy(e => e.CONTENT_DEAL_NO).ToList();
}
result.Nav_ListContent = ListContent;
}
if (DataHelper.GetRequestType(Request.Headers) == 2 && result.Nav_ListMinutesDetail != null && result.Nav_ListMinutesDetail.Any())
{
foreach (var item in result.Nav_ListMinutesDetail)
{
if (item.DEALEFFECT.HasValue)
{
item.DEALEFFECTSHOW = item.DEALEFFECT.Value.GetDescription();
}
}
}
return result;
});
}
///// <summary>
///// 编辑页面过滤 评审人
///// </summary>
///// <param name="filter"></param>
///// <returns></returns>
//[HttpPost, Route("Get")]
//public JsonActionResult<T_SC_MT_MEETING_MINUTES> GetPAll([FromBody] KeywordFilter filter)
//{
// return SafeExecute<T_SC_MT_MEETING_MINUTES>(() =>
// {
// T_SC_MT_MEETING_MINUTES result = GetEntity<T_SC_MT_MEETING_MINUTES>(null, filter);
// if (result.Nav_ListPJoin != null && result.Nav_ListPJoin.Any())
// {
// result.Nav_ListPJoin = result.Nav_ListPJoin.Where(e => e.PERSONTYPE == SCMEETINGPERSONTYPE.JOIN).OrderBy(e => e.ISRECORDRED).ThenBy(e => e.MODIFY_TIME).ToList();
// //var listPJoin = result.Nav_ListPJoin.Where(e => e.PERSONTYPE == SCMEETINGPERSONTYPE.REVIEW);
// //if (listPJoin != null && listPJoin.Any())
// //{
// // //result.Nav_ListPReView = listPJoin.ToList();
// //}
// }
// //检查内容排序
// if (result.Nav_ListContent != null && result.Nav_ListContent.Any())
// {
// var ListContent = result.Nav_ListContent.OrderBy(e => e.CONTENT_ID).ToList();
// foreach (var item in ListContent)
// {
// if (item.Nav_ListContentDeal != null && item.Nav_ListContentDeal.Any())
// {
// item.Nav_ListContentDeal = item.Nav_ListContentDeal.OrderBy(e => e.Nav_ContentDeal.CONTENT_DEAL_NO).ToList();
// }
// }
// result.Nav_ListContent = ListContent;
// //foreach (var item in ListContent)
// //{
// // if (item.Nav_ListContentDeal!=null&& item.Nav_ListContentDeal.Count>0)
// // {
// // foreach (var itemD in item.Nav_ListContentDeal)
// // {
// // itemD.Nav_ContentDeal = itemD.Nav_ContentDeal.Nav_Content.Nav_ListContentDeal.OrderBy(e=>e.CONTENT_DEAL_NO).ToList();
// // }
// // }
// //}
// }
// return result;
// });
//}
/// <summary>
/// 纪要
/// </summary>
/// <param name="entity"></param>
/// <returns></returns>
[HttpPost, Route("FullUpdate")]
public JsonActionResult<bool> FullUpdate([FromBody] T_SC_MT_MEETING_MINUTES entity)
{
return SafeExecute<bool>(() =>
{
Guid LoginID = APT.Infrastructure.Api.AppContext.CurrentSession.UserID.Value;
var meeting = GetEntity<T_SC_MT_MEETING>(entity.MEETING_ID, new string[] { "Nav_UserRecorder", "Nav_ListPAll.Nav_User", "Nav_ListPReView" });
if (meeting.USER_ID_RECORDER != LoginID)
{
throw new Exception("您不是" + meeting.Nav_UserRecorder.NAME + "不能操作此会议纪要!");
}
if (entity.STATUS != PFStandardStatus.Draft && entity.STATUS != PFStandardStatus.Sign)
{
//会议纪要不是草稿或者 保存并发送
throw new Exception("纪要状态【" + entity.STATUS.GetDescription() + "】,操作失败!");
}
//如果有会议意见
//如果是单选 同一组 取最后为true的 别的false
var listContent = entity.Nav_ListContent;
entity.Nav_ListContent = null;
List<T_SC_MT_MEETING_MINUTES_CONTENT_DEAL> listContentDetail = new List<T_SC_MT_MEETING_MINUTES_CONTENT_DEAL>();
if (listContent != null && listContent.Any())
{
int index = 0;
string Msg = string.Empty;
foreach (var item in listContent)
{
index++;
if (item.CONTENT_ID == Guid.Empty)
continue;
if (item.Nav_ListContentDeal == null || !item.Nav_ListContentDeal.Any())
continue;
T_SC_MT_CONTENT content = GetEntity<T_SC_MT_CONTENT>(item.CONTENT_ID);
if (content.CHECKTYPE != CHECKTYPE.TheRadio)
{
//多选 都不选 暂时也OK
listContentDetail.AddRange(item.Nav_ListContentDeal); //不需要数据处理
continue;
}
var listRadioCheck = item.Nav_ListContentDeal.Where(e => e.ISCHECK);
if (listRadioCheck == null || listRadioCheck.Count() < 1)
{
Msg += ((string.IsNullOrEmpty(Msg) ? "" : "") + index.ToString());
continue;
}
if (string.IsNullOrEmpty(Msg))
{
listContentDetail.AddRange(item.Nav_ListContentDeal);
var listRadioCheckOrder = listRadioCheck.OrderByDescending(e => e.MODIFY_TIME).ToList();//时间倒序 第二个之后的都是false
for (int i = 1; i < listRadioCheckOrder.Count; i++)
{
listRadioCheckOrder[i].ISCHECK = false;
}
}
}
if (!string.IsNullOrEmpty(Msg))
{
throw new Exception("请选择【" + Msg + "】项会议意见的结果!");
}
}
//所有的人员信息 必须有在 参加 缺勤 请假 中
var Join = entity.Nav_ListPJoin;
if (Join == null || !Join.Any())
{
throw new Exception("参会人不能为空!");
}
var listJoins = Join.ToList();
foreach (var item in listJoins)
{
item.Nav_User.ID = item.USER_ID;
}
var AskForLeave = entity.Nav_ListPAskForLeave;
var Absence = entity.Nav_ListPAbsence;
var Review = entity.Nav_ListPReview;
//entity.Nav_ListPJoin = null;
//entity.Nav_ListPAskForLeave = null;
//entity.Nav_ListPAbsence = null;
//bool isThisInt = false;
//bool isThisRepeat = false;
List<T_FM_USER> listUserJoin = listJoins.Where(e => !e.IS_DELETED).Select(e => e.Nav_User).ToList();
List<T_FM_USER> listUserLevel = null;
List<T_FM_USER> listUserAbsence = null;
List<T_FM_USER> listUserReview = null;
List<T_FM_USER> listUserLack = new List<T_FM_USER>();//少选人员
List<T_FM_USER> listUserRepeat = new List<T_FM_USER>();//重复人员
if (AskForLeave != null && AskForLeave.Any())
{
foreach (var item in AskForLeave)
item.Nav_User.ID = item.USER_ID;//前端配置有问题
listUserLevel = AskForLeave.Where(e => !e.IS_DELETED).Select(e => e.Nav_User).ToList();
}
if (Absence != null && Absence.Any())
{
foreach (var item in Absence)
item.Nav_User.ID = item.USER_ID;//前端配置有问题
listUserAbsence = Absence.Where(e => !e.IS_DELETED).Select(e => e.Nav_User).ToList();
}
if (Review != null && Review.Any())
{
listUserReview = Review.Where(e => !e.IS_DELETED).Select(e => e.Nav_User).ToList();
}
var ListMinutesDetail = entity.Nav_ListMinutesDetail;
//entity.Nav_ListMinutesDetail = null;
var files = entity.Nav_Files;
//entity.Nav_Files = null;
if (entity.STATUS == PFStandardStatus.Sign)
{
if (string.IsNullOrEmpty(entity.MEETINGRECORD))
{
throw new Exception("会议记录不能为空!");
}
if ((entity.MEETINGTYPE == SCMEETINGTYPE.BasicSecurity || entity.MEETINGTYPE == SCMEETINGTYPE.SafetyBoard) && (entity.Nav_ListMinutesDetail == null || !entity.Nav_ListMinutesDetail.Any()))
{
throw new Exception("请填写" + entity.MEETINGTYPE.GetDescription() + "的会议决议!");
}
//保存并发送
var PAllUser = meeting.Nav_ListPAll.Where(e => !e.IS_DELETED && e.PERSONTYPE != SCMEETINGPERSONTYPE.REVIEW && e.PERSONNATURE == PersonNature.JOIN).Select(e => e.Nav_User).ToList();//所有人员
List<T_FM_USER> listJoin = null;
List<T_FM_USER> listLevel = null;
List<T_FM_USER> listRepeat = null;
List<T_FM_USER> listReview = null;
int thisCount = 0;
foreach (var item in PAllUser)
{
listJoin = listUserJoin.FindAll(e => e.ID == item.ID);
if (listJoin.Count > 1)
{
throw new Exception("参会人员重复:" + item.NAME + "");
}
if (listUserLevel != null)
{
listLevel = listUserLevel.FindAll(e => e.ID == item.ID);
if (listLevel.Count > 1)
{
throw new Exception("请假人员重复:" + item.NAME + "");
}
}
if (listUserAbsence != null)
{
listRepeat = listUserAbsence.FindAll(e => e.ID == item.ID);
if (listRepeat.Count > 1)
{
throw new Exception("缺勤人员重复:" + item.NAME + "");
}
}
if (listUserReview != null)
{
listReview = listUserReview.FindAll(e => e.ID == item.ID);
if (listReview.Count > 1)
{
throw new Exception("评审人员重复:" + item.NAME + "");
}
}
thisCount = (listJoin == null ? 0 : listJoin.Count) + (listLevel == null ? 0 : listLevel.Count) + (listRepeat == null ? 0 : listRepeat.Count) + (listReview == null ? 0 : listReview.Count);
if (thisCount == 0)
{
//没找到对应人员
listUserLack.Add(item);
}
else if (thisCount > 1)
{
//重复
listUserRepeat.Add(item);
}
}
string Msg = string.Empty;
if (listUserLack != null && listUserLack.Count > 0)
{
Msg = "以下人员参会情况丢失:" + String.Join(",", listUserLack.Select(e => e.NAME).ToList());
}
if (listUserRepeat != null && listUserRepeat.Count > 0)
{
Msg += (string.IsNullOrEmpty(Msg) ? "" : "") + "以下人员重复:" + String.Join(",", listUserRepeat.Select(e => e.NAME).ToList()) + "";
}
if (!string.IsNullOrEmpty(Msg))
{
throw new Exception(Msg);
}
if (ListMinutesDetail != null && ListMinutesDetail.Count > 0)
{
int i = 0;
foreach (var item in ListMinutesDetail)
{
i++;
if (string.IsNullOrEmpty(item.RESOLUTION))
{
throw new Exception("第【" + i + "】行,会议决议不能为空!");
}
if (item.ISNEEDDEAL)
{
if (item.DEAL_DEPARTMENT_ID == null)
{
throw new Exception("第【" + i + "】行,落实部门不能为空!");
}
if (item.DEAL_USER_ID == null)
{
throw new Exception("第【" + i + "】行,落实责任不能为空!");
}
if (item.LIMITDATETIME == null)
{
throw new Exception("第【" + i + "】行,落实期限不能为空!");
}
else if (item.LIMITDATETIME.Value.Date <= DateTime.Now.Date)
{
throw new Exception("第【" + i + "】行,落实期限不能小于当前时间!");
}
else
{
item.LIMITDATETIME = item.LIMITDATETIME.Value.Date.AddDays(1).AddSeconds(-1);
}
}
else
{
if (item.DEAL_DEPARTMENT_ID != null && item.DEAL_DEPARTMENT_ID != Guid.Empty)
{
throw new Exception("第【" + i + "】行,无需填写落实部门!");
}
if (item.DEAL_USER_ID != null && item.DEAL_USER_ID != Guid.Empty)
{
throw new Exception("第【" + i + "】行,无需填写落实责任人!");
}
}
}
}
}
if (Join != null && Join.Any())
{
foreach (var item in Join)
{
item.Nav_User = null;
}
}
if (AskForLeave != null && AskForLeave.Any())
{
foreach (var item in AskForLeave)
{
item.Nav_User = null;
}
}
if (Absence != null && Absence.Any())
{
foreach (var item in Absence)
{
item.Nav_User = null;
}
}
if (Review != null && Review.Any())
{
foreach (var item in Review)
{
item.Nav_User = null;
}
}
#region
List<Guid> listIDs = new List<Guid>();
if (Join != null && Join.Count > 0)
{
listIDs = Join.Select(e => e.ID).ToList();
}
var listPJDel = GetEntities<T_SC_MT_MEETING_PJOIN>(e => e.PERSONTYPE == SCMEETINGPERSONTYPE.JOIN && e.MEETING_MINUTES_ID == entity.ID && !listIDs.Contains(e.ID), null, null);
////评审人
//listIDs = new List<Guid>();
//var listPVDel = GetEntities<T_SC_MT_MINUTES_PREVIEW>(e => e.MEETING_MINUTES_ID == entity.ID, null, null);
//请假人
listIDs = new List<Guid>();
if (AskForLeave != null && AskForLeave.Any())
{
listIDs = AskForLeave.Select(e => e.ID).ToList();
}
var listPAskLDel = GetEntities<T_SC_MT_MEETING_PASKFORLEAVE>(e => e.MEETING_MINUTES_ID == entity.ID && !listIDs.Contains(e.ID), null, null);
//缺席人
listIDs = new List<Guid>();
if (Absence != null && Absence.Any())
{
listIDs = Absence.Select(e => e.ID).ToList();
}
var listPAbsDel = GetEntities<T_SC_MT_MEETING_PABSENCE>(e => e.MEETING_MINUTES_ID == entity.ID && !listIDs.Contains(e.ID), null, null);
#endregion
if (entity.STATUS == PFStandardStatus.Draft)
{
this.UnifiedCommit(() =>
{
if (entity != null)
UpdateEntityNoCommit(entity); //保存主表 NoCommit
if (listContentDetail != null && listContentDetail.Any())//纪要意见
BantchUpdateEntityNoCommit(listContentDetail);
if (Join != null && Join.Any())//参会人员
BantchSaveEntityNoCommit(Join);
if (AskForLeave != null && AskForLeave.Any())//请假人员
BantchSaveEntityNoCommit(AskForLeave);
if (Absence != null && Absence.Any())//缺席人员
BantchSaveEntityNoCommit(Absence);
if (ListMinutesDetail != null && ListMinutesDetail.Any())//纪要评估 反馈
BantchSaveEntityNoCommit(ListMinutesDetail);
if (files != null && files.Any())//附件
BantchSaveEntityNoCommit(files);
if (listPJDel != null && listPJDel.Count() > 0) //参加人
BantchDeleteEntityNoCommit<T_SC_MT_MEETING_PJOIN>(listPJDel.Select(e => e.ID).ToList());
if (listPAskLDel != null && listPAskLDel.Count() > 0) //请假人
BantchDeleteEntityNoCommit<T_SC_MT_MEETING_PASKFORLEAVE>(listPAskLDel.Select(e => e.ID).ToList());
if (listPAbsDel != null && listPAbsDel.Count() > 0) //缺席人
BantchDeleteEntityNoCommit<T_SC_MT_MEETING_PABSENCE>(listPAbsDel.Select(e => e.ID).ToList());
});
}
else if (entity.STATUS == PFStandardStatus.Sign)
{
//获取待办信息
var task = FMNotificActionTaskService.GetEntityTask(entity.TaskID, "SC030_SHOWPRINT");
//保存并发送
//没有需要落实整改的信息
List<Guid> ListNoticeAll = new List<Guid>();
List<string> ListNoticeAllNAME = new List<string>();
foreach (var item in listUserJoin)
{
ListNoticeAll.Add(item.ID);
ListNoticeAllNAME.Add(item.NAME);
}
if (listUserReview != null && listUserReview.Count > 0)
{
foreach (var item in listUserReview)
{
ListNoticeAll.Add(item.ID);
ListNoticeAllNAME.Add(item.NAME);
}
}
List<T_FM_NOTIFICATION_TASK> listTaskRread = NotificationTaskService.InsertUserNoticeTaskModels("会议纪要签到", entity.ID, entity.ORG_ID, ListNoticeAll, ListNoticeAllNAME, DateTime.Now, (int)FMNoticeTypeEnum., "SC030_SHOWPRINT", FMTASKTYPE.MT_MINUTES_Sign);
var listModelJoin = Join.Where(e => e.USER_ID == LoginID);
foreach (var item in Join)
{
if (item.USER_ID == LoginID)
{
item.ISRECORDRED = true;
}
}
List<T_SC_MT_MINUTES_PREVIEW> listPReview = null;
if (Review != null && Review.Any())
{
foreach (var item in Review)
{
if (item.USER_ID == LoginID)
{
if (listPReview == null)
{
listPReview = new List<T_SC_MT_MINUTES_PREVIEW>();
}
item.ISRECORDRED = true;
listPReview.Add(item);
}
}
}
//当前人 默认 知晓
foreach (var item in listTaskRread)
{
if (item.USER_ID == LoginID)
{
item.TASK_DT = DateTime.Now;
item.NOTICE_STATUS = 1;
break;
}
}
if (listContentDetail != null && listContentDetail.Any() && DataHelper.GetRequestType(Request.Headers) == 2)
{
foreach (var item in listContentDetail)
{
item.Nav_ContentDeal = null;
}
}
this.UnifiedCommit(() =>
{
if (entity != null)
UpdateEntityNoCommit(entity); //保存主表 NoCommit
if (listContentDetail != null && listContentDetail.Any())//纪要意见
BantchUpdateEntityNoCommit(listContentDetail);
if (Join != null && Join.Any())//参会人员
BantchSaveEntityNoCommit(Join);
if (listPReview != null && listPReview.Any())//登陆者如果是评审人 默认阅读
BantchSaveEntityNoCommit(listPReview);
if (AskForLeave != null && AskForLeave.Any())//请假人员
BantchSaveEntityNoCommit(AskForLeave);
if (Absence != null && Absence.Any())//缺席人员
BantchSaveEntityNoCommit(Absence);
if (ListMinutesDetail != null && ListMinutesDetail.Any())//纪要评估 反馈
BantchSaveEntityNoCommit(ListMinutesDetail);
if (files != null && files.Any())//附件
BantchSaveEntityNoCommit(files);
if (listTaskRread != null && listTaskRread.Any())//参与人 阅
BantchSaveEntityNoCommit(listTaskRread);
if (task != null)//待办
UpdateEntity(task);
if (listPJDel != null && listPJDel.Count() > 0) //参加人
BantchDeleteEntityNoCommit<T_SC_MT_MEETING_PJOIN>(listPJDel.Select(e => e.ID).ToList());
if (listPAskLDel != null && listPAskLDel.Count() > 0) //请假人
BantchDeleteEntityNoCommit<T_SC_MT_MEETING_PASKFORLEAVE>(listPAskLDel.Select(e => e.ID).ToList());
if (listPAbsDel != null && listPAbsDel.Count() > 0) //缺席人
BantchDeleteEntityNoCommit<T_SC_MT_MEETING_PABSENCE>(listPAbsDel.Select(e => e.ID).ToList());
});
////如果通知人 包含 登陆者
//if (ListNoticeAll.Contains(LoginID))
//{
// KeywordFilter filterSign = new KeywordFilter();
// filterSign.Parameter1 = listTaskRread.Find(e => e.USER_ID == LoginID).ID.ToString();
// filterSign.Keyword = entity.ID.ToString();
// MeetingMinutesSign(filterSign);
//}
}
return true;
});
}
/// <summary>
/// 整改责任人 纪要落实
/// </summary>
/// <param name="entity"></param>
/// <returns></returns>
[HttpPost, Route("UpdateDeal")]
public JsonActionResult<bool> UpdateDeal([FromBody] T_SC_MT_MEETING_MINUTES entity)
{
return SafeExecute<bool>(() =>
{
Guid LoginID = APT.Infrastructure.Api.AppContext.CurrentSession.UserID.Value;
//责任人意见 落实情况反馈
if (entity.Nav_ListMinutesDetail == null || !entity.Nav_ListMinutesDetail.Any())
throw new Exception("未获取到纪要落实信息,操作失败!");
var ListMinutesDetail = entity.Nav_ListMinutesDetail.ToList();
MINUTES_DETAIL_STATUS dealType = ListMinutesDetail[0].STATUS;
foreach (var item in ListMinutesDetail)
{
item.STATUS = dealType;
}
int i = 1;
foreach (var item in ListMinutesDetail)
{
if (string.IsNullOrEmpty(item.OPINION))
throw new Exception("第【" + i + "】行责任人意见不能未空!");
else if (item.OPINION.Length > 500)
throw new Exception("第【" + i + "】行责任人意见不能超过500个字符");
if (string.IsNullOrEmpty(item.DEALBACK))
throw new Exception("第【" + i + "】行落实情况反馈不能未空!");
else if (item.DEALBACK.Length > 500)
throw new Exception("第【" + i + "】行落实情况反馈不能超过500个字符");
i++;
}
//如果 所有人都 填写了 发给 主持人
List<T_SC_MT_MEETING_MINUTES_DETAIL_FILE> files = null;
foreach (var item in ListMinutesDetail)
{
if (item.Nav_Files != null)
{
if (files == null)
{
files = new List<T_SC_MT_MEETING_MINUTES_DETAIL_FILE>();
}
files.AddRange(item.Nav_Files.ToList());
item.Nav_Files = null;
}
}
if (dealType == MINUTES_DETAIL_STATUS.Deal)//责任人 保存
{
this.UnifiedCommit(() =>
{
if (ListMinutesDetail != null && ListMinutesDetail.Any())//纪要落实
BantchSaveEntityNoCommit(ListMinutesDetail);
if (files != null && files.Any())
BantchSaveEntityNoCommit(files);
});
}
else if (dealType == MINUTES_DETAIL_STATUS.Host)//责任人 保存并发送
{
//获取待办信息
var task = FMNotificActionTaskService.GetEntityTask(entity.TaskID, "SC030_SHOWPRINTPER");
List<Guid> listDetailID = ListMinutesDetail.Select(e => e.ID).ToList();
var listDetail = GetEntity<T_SC_MT_MEETING_MINUTES>(e => e.ID == entity.ID, new string[] { "Nav_ListMinutesDetail" }).Nav_ListMinutesDetail.Where(e => e.ISNEEDDEAL && !listDetailID.Contains(e.ID) && (e.STATUS == MINUTES_DETAIL_STATUS.Temp_Record || e.STATUS == MINUTES_DETAIL_STATUS.Deal)).Select(e => e.Nav_MeetingMinutes.Nav_ListMinutesDetail);
if (listDetail == null || !listDetail.Any())
{
var meeting = GetEntity<T_SC_MT_MEETING>(entity.MEETING_ID, new string[] { "Nav_UserHost" });
//落实整改人 都填写了整改情况
//给主持人 发送待办填写 落实效果
T_FM_NOTIFICATION_TASK taskHost = NotificationTaskService.InsertUserNoticeTaskModel("会议决议落实效果", entity.ID, entity.ORG_ID, meeting.USER_ID_HOST.Value, meeting.Nav_UserHost.NAME, DateTime.Now, (int)FMNoticeTypeEnum., "SC030_2", FMTASKTYPE.MT_MINUTES_DETAIL_CHECK);
this.UnifiedCommit(() =>
{
if (task != null)//待办
UpdateEntityNoCommit(task);
if (ListMinutesDetail != null && ListMinutesDetail.Any())//纪要评估 反馈
BantchSaveEntityNoCommit(ListMinutesDetail);
AddEntityNoCommit(taskHost);//给主持人发送待办
if (files != null && files.Any())
BantchSaveEntityNoCommit(files);
});
}
else
{
//还有 未落实的会议决议 保存信息
this.UnifiedCommit(() =>
{
if (task != null)//待办
UpdateEntityNoCommit(task);
if (ListMinutesDetail != null && ListMinutesDetail.Any())//纪要评估 反馈
BantchSaveEntityNoCommit(ListMinutesDetail);
if (files != null && files.Any())
BantchSaveEntityNoCommit(files);
});
}
}
return true;
});
}
/// <summary>
/// 主持人 填写落实效果 走审批流
/// </summary>
/// <param name="entity"></param>
/// <returns></returns>
[HttpPost, Route("UpdateDealEffect")]
public JsonActionResult<bool> UpdateDealEffect([FromBody] T_SC_MT_MEETING_MINUTES entity)
{
//var sysFilter = new SystemCodeFilter();
//sysFilter.CodeType = (int)PFCodeRuleType.会议通知;
//sysFilter.Count = 2;
//sysFilter.OrgId = entity.ORG_ID;
//var serialCode = CodeRuleService.NewGenSerial(sysFilter);
//List<string> listCode = serialCode.Split(",").ToList();
return SafeExecute<bool>(() =>
{
//责任人意见 落实情况反馈
if (entity.Nav_ListMinutesDetail == null || !entity.Nav_ListMinutesDetail.Any())
throw new Exception("未获取到纪要落实信息,操作失败!");
var ListMinutesDetail = entity.Nav_ListMinutesDetail;
if (entity.STATUS == PFStandardStatus.Sign)
{
foreach (var item in ListMinutesDetail)
{
item.STATUS = MINUTES_DETAIL_STATUS.Host;
}
//保存
this.UnifiedCommit(() =>
{
UpdateEntityNoCommit(entity);
if (ListMinutesDetail != null && ListMinutesDetail.Any())//落实效果
BantchSaveEntityNoCommit(ListMinutesDetail);
});
}
else if (entity.STATUS == PFStandardStatus.Approving)
{
//保存并发送
int i = 0;
foreach (var item in ListMinutesDetail)
{
i++;
item.STATUS = MINUTES_DETAIL_STATUS.End;
if (item.DEALEFFECT == 0)
throw new Exception("请选择第【" + i + "】行的落实效果!");
}
entity.APPROVE_ID = Guid.NewGuid();
var meeting = GetEntity<T_SC_MT_MEETING>(entity.MEETING_ID);
////公司级 3 部门级 0 车间级 1 班组级 2
////只有明确是车间 走车间级 否则走部门级
string param = meeting.LEVELVALUE.Value.ToString();
//安全生产委员会 审批到总经理 基层安全会 到对应车间/ 部门 其他到部门级
//会议通知就处理了 下句代码应该可以不用
if (meeting.MEETINGTYPE == SCMEETINGTYPE.SafetyBoard)
param = "3";
List<string> listCode = new List<string>();
listCode.Add(meeting.CODE + "1");
listCode.Add(meeting.CODE + "2");
MFlowPermitService.InsertApprove(listCode[0], "SC030", param, entity.ID, "SC030_SHOWPRINT", entity.TaskID, true, () =>
{
if (entity != null) //保存会议纪要主表 进入审批流
UpdateEntityNoCommit(entity);
if (ListMinutesDetail != null && ListMinutesDetail.Any())//落实效果
BantchSaveEntityNoCommit(ListMinutesDetail);
}, entity.APPROVE_ID, meeting.USER_ID_ORIGINATOR, null, null, listCode[1], "SC030_SHOWPRINT", null, null, FMTASKTYPE.MT_MINUTES_DEAL_Audit);
}
return true;
});
}
/// <summary>
/// 会议纪要 参会人员 签到
/// 最后一个人审批 添加审批流
/// </summary>
/// <param name="filter"></param>
/// <returns></returns>
[HttpPost, Route("MeetingMinutesSign")]
public JsonActionResult<bool> MeetingMinutesSign([FromBody] KeywordFilter filter)
{
//var sysFilter = new SystemCodeFilter();
//sysFilter.CodeType = (int)PFCodeRuleType.会议通知;
//sysFilter.Count = 2;
//sysFilter.OrgId = filter.OrgId;
//var serialCode = CodeRuleService.NewGenSerial(sysFilter);
return SafeExecute<bool>(() =>
{
var TaskID = new Guid(filter.Parameter1);
if (TaskID == Guid.Empty)
{
throw new Exception("获取数据【待办ID】传参失败");
}
var task = FMNotificActionTaskService.GetEntityTask(TaskID);
if (task.SOURCE_DATA_ID != new Guid(filter.Keyword))
{
throw new Exception("传参有误!");
}
var entity = GetEntity<T_SC_MT_MEETING_MINUTES>(task.SOURCE_DATA_ID.Value);//, "Nav_ListPJoin", "Nav_ListPReview"
int NOTICE_STATUS = (int)FMNoticeStatusEnum.;
var listNotDeal = GetEntities<T_FM_NOTIFICATION_TASK>(e => e.SOURCE_DATA_ID == task.SOURCE_DATA_ID && e.NOTICE_STATUS == NOTICE_STATUS && e.ID != TaskID && e.SOURCE_FORMCODE == task.SOURCE_FORMCODE, null, null).Count();
var LoginID = APT.Infrastructure.Api.AppContext.CurrentSession.UserID;
var listModelJoin = GetEntities<T_SC_MT_MEETING_PJOIN>(e => e.MEETING_MINUTES_ID == entity.ID && e.USER_ID == LoginID, null, null);
//var listModelJoin = entity.Nav_ListPJoin.Where(e => e.USER_ID == LoginID);
T_SC_MT_MINUTES_PREVIEW modelReview = null;
if (listModelJoin == null || listModelJoin.Count() < 1)
{
throw new Exception("您未参加该会议,操作失败!");
}
foreach (var item in listModelJoin)
{
item.ISRECORDRED = true;
}
modelReview = GetEntity<T_SC_MT_MINUTES_PREVIEW>(e => e.MEETING_MINUTES_ID == entity.ID && e.USER_ID == LoginID && !e.IS_DELETED);
if (modelReview != null && modelReview.ID != Guid.Empty)
{
modelReview.ISRECORDRED = true;
}
//if (entity.Nav_ListPReview != null && entity.Nav_ListPReview.Any())
//{
// modelReview = entity.Nav_ListPReview.FirstOrDefault(e => e.USER_ID == LoginID && !e.IS_DELETED);
// if (modelReview != null)
// {
// modelReview.ISRECORDRED = true;
// }
//}
//if (listNotDeal == null || !listNotDeal.Any())
if (listNotDeal < 1)
{
entity.Nav_Meeting = GetEntity<T_SC_MT_MEETING>(entity.MEETING_ID);
entity.Nav_ListMinutesDetail = GetEntities<T_SC_MT_MEETING_MINUTES_DETAIL>(e => e.MEETING_MINUTES_ID == entity.ID, null, "Nav_UserDeal").ToList();
bool isApprove = true;//是否直接审批
if (entity.Nav_ListMinutesDetail != null && entity.Nav_ListMinutesDetail.Any())
{
var listDeal = entity.Nav_ListMinutesDetail.Where(e => e.ISNEEDDEAL);
if (listDeal != null && listDeal.Any())
{
isApprove = false;
}
}
if (isApprove)
{
List<string> listCode = new List<string>() { "HY" + DateTime.Now.ToString("yyyyMMddHHmmss") + "1", "HY" + DateTime.Now.ToString("yyyyMMddHHmmss") + "2" };
//最后一个阅读
entity.STATUS = PFStandardStatus.Approving;
entity.APPROVE_ID = Guid.NewGuid();
////公司级 3 部门级 0 车间级 1 班组级 2
////只有明确是车间 走车间级 否则走部门级
string param = entity.Nav_Meeting.LEVELVALUE.Value.ToString();
//安全生产委员会 审批到总经理 基层安全会 到对应车间/ 部门 其他到部门级
//会议通知就处理了 下句代码应该可以不用
if (entity.Nav_Meeting.MEETINGTYPE == SCMEETINGTYPE.SafetyBoard)
param = "3";
MFlowPermitService.InsertApprove(listCode[0], "SC030", param, entity.ID, "SC030_SHOWPRINT", entity.TaskID, true, () =>
{
if (entity != null) //保存会议纪要主表 进入审批流
UpdateEntityNoCommit(entity);
if (task != null)//待办
UpdateEntityNoCommit(task);
if (listModelJoin != null && listModelJoin.Count() > 0)//参会人 是否阅读会议纪要
BantchUpdateEntityNoCommit(listModelJoin);
//UpdateEntityNoCommit(modelJoin);
}, entity.APPROVE_ID, entity.Nav_Meeting.USER_ID_ORIGINATOR, null, null, listCode[1], null, null, null, FMTASKTYPE.MT_MINUTES_Audit);
}
else
{
List<T_FM_NOTIFICATION_TASK> listTaskRread = new List<T_FM_NOTIFICATION_TASK>();//每条有时间期限
// 给落实责任人 发送落实待办
List<Guid> ListNoticeAll = new List<Guid>();
//List<string> ListNoticeAllNAME = new List<string>();
foreach (var item in entity.Nav_ListMinutesDetail)
{
if (!item.ISNEEDDEAL)
continue;
if (ListNoticeAll.Contains(item.Nav_UserDeal.ID))
continue;
ListNoticeAll.Add(item.Nav_UserDeal.ID);
//ListNoticeAllNAME.Add(item.Nav_UserDeal.NAME);
listTaskRread.Add(NotificationTaskService.InsertUserNoticeTaskModel("会议纪要落实", entity.ID, entity.ORG_ID, item.Nav_UserDeal.ID, item.Nav_UserDeal.NAME, DateTime.Now, item.LIMITDATETIME.Value, (int)FMNoticeTypeEnum., "SC030_1"));
}
//List<T_FM_NOTIFICATION_TASK> listTaskRread = NotificationTaskService.InsertUserNoticeTaskModels("会议纪要落实", entity.ID, entity.ORG_ID, ListNoticeAll, ListNoticeAllNAME, DateTime.Now, DateTime.Now.AddHours(24), (int)FMNoticeTypeEnum.消息, "SC030_1");
this.UnifiedCommit(() =>
{
if (task != null)//待办
UpdateEntityNoCommit(task);
if (listModelJoin != null && listModelJoin.Count() > 0)//参会人 是否阅读会议纪要
BantchUpdateEntityNoCommit(listModelJoin);
//UpdateEntityNoCommit(modelJoin);
if (listTaskRread != null && listTaskRread.Any())//落实责任人 填写信息
BantchSaveEntityNoCommit(listTaskRread);
});
}
}
else
{
this.UnifiedCommit(() =>
{
if (task != null)//待办
UpdateEntityNoCommit(task);
//if (modelJoin != null)//参会人 是否阅读会议纪要
// UpdateEntityNoCommit(modelJoin);
if (listModelJoin != null && listModelJoin.Count() > 0)//参会人 是否阅读会议纪要
BantchUpdateEntityNoCommit(listModelJoin);
//UpdateEntityNoCommit(modelJoin);
if (modelReview != null)//参会人 是否阅读会议纪要
UpdateEntityNoCommit(modelReview);
});
}
return true;
});
}
/// <summary>
/// 获取 纪要中只包含登陆者的明细信息
/// </summary>
/// <param name="filter">过滤实体</param>
/// <returns></returns>
[HttpPost, Route("GetByDetailDeal")]
public JsonActionResult<T_SC_MT_MEETING_MINUTES> GetByDetailDeal([FromBody] KeywordFilter filter)
{
return SafeExecute<T_SC_MT_MEETING_MINUTES>(() =>
{
Guid LoginId = APT.Infrastructure.Api.AppContext.CurrentSession.UserID.Value;
var result = GetEntity<T_SC_MT_MEETING_MINUTES>(null, filter);
if (result.Nav_ListPJoin != null && result.Nav_ListPJoin.Any())
{
result.Nav_ListPJoin = result.Nav_ListPJoin.Where(e => e.PERSONTYPE == SCMEETINGPERSONTYPE.JOIN).ToList();
}
if (result.Nav_ListMinutesDetail != null && result.Nav_ListMinutesDetail.Any())
{
var detail = result.Nav_ListMinutesDetail.Where(e => e.ISNEEDDEAL && e.DEAL_USER_ID.HasValue && e.DEAL_USER_ID == LoginId);
if (detail != null && detail.Any())
result.Nav_ListMinutesDetail = detail.ToList();
else
result.Nav_ListMinutesDetail = null;
}
return result;
});
}
/// <summary>
/// 获取纪要 主持人 落实效果 填写
/// </summary>
/// <param name="filter">过滤实体</param>
/// <returns></returns>
[HttpPost, Route("GetDetailEffect")]
public JsonActionResult<T_SC_MT_MEETING_MINUTES> GetDetailEffect([FromBody] KeywordFilter filter)
{
return SafeExecute<T_SC_MT_MEETING_MINUTES>(() =>
{
Guid LoginId = APT.Infrastructure.Api.AppContext.CurrentSession.UserID.Value;
var result = GetEntity<T_SC_MT_MEETING_MINUTES>(null, filter);
if (result.Nav_ListPJoin != null && result.Nav_ListPJoin.Any())
{
result.Nav_ListPJoin = result.Nav_ListPJoin.Where(e => e.PERSONTYPE == SCMEETINGPERSONTYPE.JOIN).ToList();
}
if (result.Nav_ListMinutesDetail != null && result.Nav_ListMinutesDetail.Any())
{
var check = result.Nav_ListMinutesDetail.Where(e => e.ISNEEDDEAL && e.STATUS < MINUTES_DETAIL_STATUS.Host);
if (check != null && check.Count() > 0)
{
throw new Exception("会议决议中所有整改责任人都提交了整改信息后,才能填写落实结果!");
}
else
{
result.Nav_ListMinutesDetail = result.Nav_ListMinutesDetail.Where(e => e.ISNEEDDEAL).ToList();
}
}
return result;
});
}
/// <summary>
/// 会议纪要审批回调
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
[HttpGet, Route("MeetingMinutesBack")]
public JsonActionResult<bool> MeetingMinutesBack(string id)
{
return SafeExecute<bool>(() =>
{
return ApproveCallBackService.CallBack("SC/SCMtMeetingMinutes/MeetingMinutesBack", id);
});
}
/// <summary>
/// 排序分页查询数据
/// </summary>
/// <param name="pageFilter">分页过滤实体</param>
/// <returns></returns>
[HttpPost, Route("OrderPaged")]
public PagedActionResult<T_SC_MT_MEETING_MINUTES> OrderPaged([FromBody] KeywordPageFilter pageFilter)
{
PagedActionResult<T_SC_MT_MEETING_MINUTES> 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;
}
}
}