207 lines
10 KiB
C#
207 lines
10 KiB
C#
|
|
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
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.BaseData.Services.DomainServices;
|
|
using APT.BaseData.Services.Services.FM;
|
|
using APT.Infrastructure.Core;
|
|
using APT.MS.Domain.Entities.FO;
|
|
using APT.MS.Domain.Entities.HM;
|
|
using APT.MS.Domain.Entities.PF;
|
|
using APT.MS.Domain.Entities.SE;
|
|
using APT.MS.Domain.Enums;
|
|
using APT.Utility;
|
|
using Microsoft.AspNetCore.Mvc;
|
|
using MySqlX.XDevAPI.Common;
|
|
using NPOI.SS.Formula.Functions;
|
|
using static Microsoft.EntityFrameworkCore.DbLoggerCategory;
|
|
|
|
namespace APT.SC.WebApi.Controllers.Api.SE
|
|
{
|
|
[Route("api/SE/SEYearTrainPlan")]
|
|
public class SEYearTrainPlanController : AuthorizeApiController<T_SE_YEAR_TRAIN_PLAN>
|
|
{
|
|
IFMNotificationTaskService NotificationTaskService { get; set; }
|
|
IFMFlowPermitService MFlowPermitService { get; set; }
|
|
IPFApproveCallBackService ApproveCallBackService { get; set; }
|
|
IFMDepartmentService DepartmentService { get; set; }
|
|
|
|
|
|
public SEYearTrainPlanController(IFMNotificationTaskService notificationTaskService, IFMFlowPermitService mFlowPermitService, IPFApproveCallBackService approveCallBackService, IFMDepartmentService departmentService)
|
|
{
|
|
NotificationTaskService = notificationTaskService;
|
|
MFlowPermitService = mFlowPermitService;
|
|
ApproveCallBackService = approveCallBackService;
|
|
DepartmentService = departmentService;
|
|
}
|
|
/// <summary>
|
|
/// 保存
|
|
/// </summary>
|
|
/// <param name="id"></param>
|
|
/// <returns></returns>
|
|
[HttpPost, Route("FullUpdate")]
|
|
public JsonActionResult<bool> FullUpdate([FromBody] T_SE_YEAR_TRAIN_PLAN entity)
|
|
{
|
|
return SafeExecute(() =>
|
|
{
|
|
if (entity.STATUS != PFStandardStatus.Draft && entity.STATUS != PFStandardStatus.Sign)
|
|
{
|
|
throw new Exception("当前状态数据不可编辑");
|
|
}
|
|
var sendDepartMent = entity.Nav_YearTrainPlanDepartment;
|
|
var Nav_YearTrainPlanDetail = entity.Nav_YearTrainPlanDetail;
|
|
List<T_SE_YEAR_TRAIN_PLAN_CONTENT> planContents = new List<T_SE_YEAR_TRAIN_PLAN_CONTENT>();
|
|
|
|
var files = entity.Nav_Files;
|
|
T_FM_NOTIFICATION_TASK finishTask = null;
|
|
var isApprove = false;
|
|
List<T_SE_TRAIN_NOTIFY> trainNotifys = new List<T_SE_TRAIN_NOTIFY>();
|
|
List<T_SE_TRAIN_NOTIFY_CONTENT_REL> trainNotifyContents = new List<T_SE_TRAIN_NOTIFY_CONTENT_REL>();
|
|
List<T_FM_NOTIFICATION_TASK> sendNotices = null;
|
|
if (entity.PUBLISH != null && entity.PUBLISH.Equals("SaveAndNotify"))
|
|
{
|
|
|
|
var planNoticeData = Nav_YearTrainPlanDetail.Where(t => t.MOON == DateTime.Now.Month && t.SEND == 0);
|
|
if (planNoticeData.Any())
|
|
{
|
|
var allSendUserIds = new List<Guid>();
|
|
var allSendUserNames = new List<string>();
|
|
var allSendUserTitles = new List<string>();
|
|
var allSendDataIds = new List<Guid>();
|
|
var alltoDayNotifyTitles = new List<string>();
|
|
foreach (var plan in planNoticeData)
|
|
{
|
|
plan.SEND = 1;
|
|
T_SE_TRAIN_NOTIFY trainNotify = new T_SE_TRAIN_NOTIFY
|
|
{
|
|
ID = Guid.NewGuid(),
|
|
LAUNCH_TIME = DateTime.Now,
|
|
LAUNCH_DEPARTMENT_ID = plan.RESPONSIBILITY_DEP_ID,
|
|
LAUNCH_USER_ID = plan.RESPONSIBILITY_USER_ID,
|
|
RECORD_USER_ID = plan.RESPONSIBILITY_USER_ID,
|
|
NAME = plan.NAME,
|
|
TRAIN_TYPE = plan.TYPE_ID,
|
|
LEVEL = plan.LEVEL,
|
|
TRAIN_ADDR = plan.ADDRESS,
|
|
TRAIN_TEACHER = plan.TEACHER,
|
|
TRAIN_MODEL = plan.TRAIN_MODEL,
|
|
CHECK_TYPE_ID = plan.CHECK_TYPE_ID.Value,
|
|
STATUS = SETrainNotifyStatus.草稿,
|
|
ORG_ID = entity.ORG_ID,
|
|
CODE = DateTime.Now.ToString("yyyyMMddHHmmss")
|
|
};
|
|
plan.Nav_YearTrainPlanContent.ForEach(content =>
|
|
{
|
|
T_SE_TRAIN_NOTIFY_CONTENT_REL trainNotifyContent = new T_SE_TRAIN_NOTIFY_CONTENT_REL
|
|
{
|
|
ID = Guid.NewGuid(),
|
|
ORG_ID = entity.ORG_ID,
|
|
POINT_ID = (Guid)content.CONTENT_ID,
|
|
NOTIFY_ID = trainNotify.ID
|
|
};
|
|
trainNotifyContents.Add(trainNotifyContent);
|
|
});
|
|
allSendUserTitles.Add("制定培训通知-" + plan.NAME);
|
|
allSendDataIds.Add(trainNotify.ID);
|
|
allSendUserIds.Add((Guid)plan.RESPONSIBILITY_USER_ID);
|
|
allSendUserNames.Add("");
|
|
trainNotifys.Add(trainNotify);
|
|
}
|
|
sendNotices = NotificationTaskService.InsertUserNoticeTaskModels(allSendUserTitles, allSendDataIds, entity.ORG_ID, allSendUserIds, allSendUserNames, DateTime.Now, DateTime.Now.AddDays(1), (int)FMFormTypeEnum.计划任务通知, "SE014");
|
|
}
|
|
isApprove = true;
|
|
entity.STATUS = PFStandardStatus.Approving;
|
|
if (entity.TaskID != Guid.Empty)
|
|
{
|
|
finishTask = NotificationTaskService.GetTaskFinishModel(entity.TaskID, "SE011_SHOWPRINT");
|
|
}
|
|
}
|
|
sendDepartMent.ForEach(dep =>
|
|
{
|
|
dep.Nav_Department = null;
|
|
});
|
|
Nav_YearTrainPlanDetail.ForEach(detail =>
|
|
{
|
|
if (detail.Nav_YearTrainPlanContent != null)
|
|
{
|
|
planContents.AddRange(detail.Nav_YearTrainPlanContent);
|
|
detail.Nav_YearTrainPlanContent = null;
|
|
}
|
|
});
|
|
entity.Nav_YearTrainPlanDepartment = null;
|
|
entity.Nav_YearTrainPlanDetail = null;
|
|
entity.Nav_Files = null;
|
|
MFlowPermitService.InsertApprove(DateTime.Now.ToString("yyyyMMddHHmmss"), "SE012", "", entity.ID, "SE011_SHOWPRINT", entity.TaskID, isApprove, () =>
|
|
{
|
|
UpdateEntityNoCommit(entity);
|
|
if (files != null && files.Any())
|
|
BantchSaveEntityNoCommit(files);
|
|
if (finishTask != null)
|
|
UpdateEntityNoCommit(finishTask);
|
|
if (sendDepartMent != null && sendDepartMent.Any())
|
|
BantchSaveEntityNoCommit(sendDepartMent);
|
|
if (planContents != null && planContents.Any())
|
|
BantchSaveEntityNoCommit(planContents);
|
|
if (Nav_YearTrainPlanDetail != null && Nav_YearTrainPlanDetail.Any())
|
|
BantchSaveEntityNoCommit(Nav_YearTrainPlanDetail);
|
|
if (trainNotifys != null && trainNotifys.Any())
|
|
BantchAddEntityNoCommit(trainNotifys);
|
|
if (sendNotices != null)
|
|
BantchAddEntityNoCommit(sendNotices);
|
|
if (trainNotifyContents != null && trainNotifyContents.Any())
|
|
BantchAddEntityNoCommit(trainNotifyContents);
|
|
}, null);
|
|
return true;
|
|
});
|
|
}
|
|
/// <summary>
|
|
/// 隐患上报 审核通过 给每个通知负责人发送通知
|
|
/// </summary>
|
|
/// <param name="id"></param>
|
|
/// <returns></returns>
|
|
[HttpGet, Route("yearTrainPlanAgree")]
|
|
public JsonActionResult<bool> yearTrainPlanAgree(string id)
|
|
{
|
|
return SafeExecute<bool>(() =>
|
|
{
|
|
return ApproveCallBackService.CallBack("SE/SEYearTrainPlan/yearTrainPlanAgree", id);
|
|
});
|
|
}
|
|
/// <summary>
|
|
/// 获得单条实体数据
|
|
/// </summary>
|
|
/// <param name="filter">过滤实体</param>
|
|
/// <returns></returns>
|
|
[HttpPost, Route("Get")]
|
|
public JsonActionResult<T_SE_YEAR_TRAIN_PLAN> Get([FromBody] KeywordFilter filter)
|
|
{
|
|
var trainPlan = WitEntity(null, filter);
|
|
BaseFilter basefilter = new BaseFilter(APT.Infrastructure.Api.AppContext.CurrentSession.OrgId);
|
|
basefilter.Include = new string[] { "Nav_TrainTypeEnum", "Nav_YearTrainPlanContent.Nav_TestEnumPoint", "Nav_TrainCheckTypeEnum", "Nav_ResponsibilityDep", "Nav_ResponsibilityUser" };
|
|
List<T_SE_YEAR_TRAIN_PLAN_DETAIL> details = null;
|
|
var currDep = APT.Infrastructure.Api.AppContext.CurrentSession.DepartmentID.Value;
|
|
var AHDepartment = GetEntity<T_FM_USER>(t => t.Nav_ApproveRole.NAME == "安环部负责人").DEPARTMENT_ID;
|
|
if (trainPlan.Data.STATUS > PFStandardStatus.Draft&& currDep != AHDepartment)
|
|
{
|
|
var deps = new List<Guid>();
|
|
DepartmentService.GetDepartmentIds(filter.GetOrgId(), new List<Guid>() { Guid.Parse(APT.Infrastructure.Api.AppContext.CurrentSession.DepartmentId) }, ref deps);
|
|
deps.Add(Guid.Parse(APT.Infrastructure.Api.AppContext.CurrentSession.DepartmentId));
|
|
details = GetEntities<T_SE_YEAR_TRAIN_PLAN_DETAIL>(t => deps.Contains((Guid)t.RESPONSIBILITY_DEP_ID), basefilter).ToList();
|
|
}
|
|
else
|
|
{
|
|
details = GetEntities<T_SE_YEAR_TRAIN_PLAN_DETAIL>(t => t.IS_DELETED == false, basefilter).ToList();
|
|
}
|
|
trainPlan.Data.Nav_YearTrainPlanDetail = details;
|
|
return trainPlan;
|
|
}
|
|
}
|
|
}
|