mh_jy_safe/APT.MicroApi/APT.SC.WebApi/Controllers/Api/MTController/SCMtMeetingMinutesController.cs
2025-08-25 09:56:57 +08:00

1584 lines
79 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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"
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");
// 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)
{
if (entity.TaskID == Guid.Empty)//转办 也让处理
{
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");
if (listModelJoin != null && listModelJoin.Any())
{
foreach (var item in listModelJoin)
{
item.Nav_MeetingMinutes = null;
}
}
if (entity.Nav_ListMinutesDetail != null)
{
foreach (var item in entity.Nav_ListMinutesDetail)
{
item.Nav_UserDeal = null;
}
}
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="entity"></param>
/// <returns></returns>
[HttpPost, Route("MeetingMinutesReject")]
public JsonActionResult<bool> MeetingMinutesReject([FromBody] T_PF_APPROVE entity)
{
return SafeExecute<bool>(() =>
{
// //公共 获取审批流信息
T_PF_APPROVE modelApp = null;
List<T_PF_APPROVE_DETAIL> listAppDetail = null;
T_FM_NOTIFICATION_TASK taskFinish = null;
string Msg = string.Empty;
bool ResultGetInfo = ApproveCallBackService.GetApproject(entity, ref modelApp, ref listAppDetail, ref taskFinish, ref Msg);
if (!ResultGetInfo)
throw new Exception("驳回失败!");
if (modelApp == null || listAppDetail == null)
throw new Exception("获取驳回信息失败!");
#region
var meetingMinus = GetEntity<T_SC_MT_MEETING_MINUTES>(entity.DATA_ID);
meetingMinus.STATUS = PFStandardStatus.Rejected;
var taskOld = GetEntity<T_FM_NOTIFICATION_TASK>(e => e.SOURCE_DATA_ID == meetingMinus.ID && e.SOURCE_FORMCODE == "SC030_SHOWPRINT" && e.NOTICE_STATUS != 0 && e.USER_ID == meetingMinus.CREATER_ID && !e.NOTICE_TITLE.EndsWith("签到"));//没有 SC034_SHOWPRINT
//安委会会议纪要 SC034 //安委会会议纪要 BS030
string SOURCE_FORMCODE = "SC034";
if (meetingMinus.MEETINGTYPE == SCMEETINGTYPE.SafetyBoard || meetingMinus.MEETINGTYPE == SCMEETINGTYPE.BasicSecurity)
{
SOURCE_FORMCODE = "SC030";
}
//发给制表人
T_FM_NOTIFICATION_TASK taskBack = null;
if (taskOld == null)
{
string userName = string.Empty;
Guid userID = meetingMinus.CREATER_ID.HasValue ? meetingMinus.CREATER_ID.Value : Guid.Empty;
if (userID == Guid.Empty)
{
//会议中查找
var meet = GetEntity<T_SC_MT_MEETING>(meetingMinus.MEETING_ID);
userID = meet.USER_ID_RECORDER.HasValue ? meet.USER_ID_RECORDER.Value : meet.CREATER_ID.Value;
}
var user = GetEntity<T_FM_USER>(userID);
userName = user.NAME;
taskBack = NotificationTaskService.InsertUserNoticeTaskModel(("(驳回)" + meetingMinus.MEETINGTYPE.GetDescription() + "会议纪要"), meetingMinus.ID, entity.ORG_ID, userID, userName, DateTime.Now, DateTime.Now.AddDays(1), 0, SOURCE_FORMCODE);
}
else
{
taskBack = NotificationTaskService.InsertUserNoticeTaskModel("(驳回)" + taskOld.NOTICE_TITLE, meetingMinus.ID, entity.ORG_ID, taskOld.USER_ID, taskOld.USER_NAME, DateTime.Now, taskOld.TASK_ENDDT, 0, SOURCE_FORMCODE);
}
#endregion
meetingMinus.Nav_Approve = null;
UnifiedCommit(() =>
{
if (meetingMinus != null)
UpdateEntityNoCommit(meetingMinus);
if (modelApp != null)
UpdateEntityNoCommit(modelApp);
if (listAppDetail != null && listAppDetail.Count > 0)
BantchUpdateEntityNoCommit(listAppDetail);
if (taskFinish != null)
UpdateEntityNoCommit(taskFinish);
if (taskBack != null)
UpdateEntityNoCommit(taskBack);
});
return true;
});
}
/// <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;
}
}
}