mh_sms/APT.MicroApi/APT.HM.WebApi/Controllers/Api/EvaluationPlanController.cs
2024-06-27 10:39:59 +08:00

363 lines
18 KiB
C#

using APT.BaseData.Domain.ApiModel.PF;
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.Api;
using APT.Infrastructure.Core;
using APT.MS.Domain.Entities.HM;
using APT.MS.Domain.Enums;
using APT.Utility;
using Microsoft.AspNetCore.Mvc;
using System;
using System.Collections.Generic;
using System.Linq;
namespace APT.HM.WebApi.Controllers.Api
{
[Route("api/HM/HMEvaluationPlan")]
public partial class EvaluationPlanController : AuthorizeApiController<T_HM_EVALUATION_PLAN>
{
IFMFlowPermitService MFlowPermitService { get; set; }
IFMNotificationTaskService NotificationTaskService { get; set; }
IPFApproveCallBackService ApproveCallBackService { get; set; }
IFMDepartmentService DepartmentService { get; set; }
public EvaluationPlanController(IFMNotificationTaskService notificationTaskService, IFMFlowPermitService mFlowPermitService, IPFApproveCallBackService approveCallBackService, IFMDepartmentService departmentService)
{
NotificationTaskService = notificationTaskService;
MFlowPermitService = mFlowPermitService;
ApproveCallBackService = approveCallBackService;
DepartmentService = departmentService;
}
/// <summary>
/// 新增保存
/// </summary>
/// <param name="entity"></param>
/// <returns></returns>
[HttpPost, Route("FullUpdate")]
public JsonActionResult<bool> FullUpdate([FromBody] T_HM_EVALUATION_PLAN entity)
{
return SafeExecute<bool>(() =>
{
var Nav_Details = entity.Nav_Details;
var files = entity.Nav_Files;
entity.Nav_Details = null;
entity.Nav_Files = null;
entity.RELEASE_USER_ID = APT.Infrastructure.Api.AppContext.CurrentSession.UserID;
if (entity.INITIATING_DEPARTMENT == null)
{
var user = GetEntity<T_FM_USER>(t => t.ID == APT.Infrastructure.Api.AppContext.CurrentSession.UserID);
if (user != null)
entity.INITIATING_DEPARTMENT = user.DEPARTMENT_ID;
}
T_FM_NOTIFICATION_TASK notice = null;
T_FM_NOTIFICATION_TASK finishNotice = null;
List<T_HM_EVALUATION_DETAIL_AREA> areas = new List<T_HM_EVALUATION_DETAIL_AREA>();
List<T_HM_EVALUATION_DETAIL_IDENTIFYING> identifyings = new List<T_HM_EVALUATION_DETAIL_IDENTIFYING>();
IEnumerable<T_PF_APPROVE_TEMP_DETAIL> teamLeaders = new List<T_PF_APPROVE_TEMP_DETAIL>();
if (entity.PUBLISH != null && entity.PUBLISH.Equals("SaveAndNotify"))
{
if (Nav_Details.Count() == 0)
{
throw new Exception("请填写子表内容");
}
Nav_Details.Where(t => t.IS_DELETED == false).ForEach(detail =>
{
if (detail.START_TIME == null || detail.START_TIME == null)
throw new Exception("请填写开始时间和结束时间");
if (detail.START_TIME > detail.END_TIME)
throw new Exception("开始时间不能大于结束时间");
if (detail.Nav_Areas == null)
{
throw new Exception("辨识区域不能为空");
}
});
if (files == null || files.Count <= 0)
{
throw new Exception("附件未上传,无法发送");
}
if (entity.DEPUTY_GROUP_LEADER_ID == null || entity.GROUP_LEADER_ID == null)
{
throw new Exception("组长或副组长未填写");
}
entity.AUDIT_OPINION = "";
entity.DEPUTY_GROUP_LEADER_OPINION = HMOpinionEnmu.;
entity.GROUP_LEADER_OPINION = HMOpinionEnmu.;
var sendUser = entity.DEPUTY_GROUP_LEADER_ID;
if (entity.DEPUTY_GROUP_LEADER_ID == APT.Infrastructure.Api.AppContext.CurrentSession.UserID)
{
sendUser = entity.GROUP_LEADER_ID;
entity.DEPUTY_GROUP_LEADER_OPINION = HMOpinionEnmu.;
}
entity.STATUS = FOPreMeetingStatusEnum.;
//发消息
notice = NotificationTaskService.InsertUserNoticeTaskModel(entity.EVALUATION_DATE.Year + "年度风险评价计划审核表", entity.ID, entity.ORG_ID, (Guid)sendUser, "", DateTime.Now,
DateTime.Parse(DateTime.Now.AddDays(1).ToShortDateString() + " 23:59:59"), (int)FMNoticeTypeEnum., "HM042_SHOWPRINT");
if (entity.TaskID != Guid.Empty)
{
finishNotice = NotificationTaskService.FOGetTaskFinishModel(entity.TaskID,entity.ID, "HM042_SHOWPRINT");
}
teamLeaders = GetEntities<T_PF_APPROVE_TEMP_DETAIL>(t => t.NAME == "风险管理小组组长" || t.NAME == "风险管理小组副组长", new BaseFilter(entity.ORG_ID));
if (teamLeaders != null && teamLeaders.Any())
{
var leader = teamLeaders.Where(t => t.NAME == "风险管理小组组长");
foreach (var leaderuser in leader)
{
leaderuser.DEFAULT_APPROVE_USER_ID = entity.GROUP_LEADER_ID;
}
var deputyLeader = teamLeaders.Where(t => t.NAME == "风险管理小组副组长");
foreach (var leaderuser in deputyLeader)
{
leaderuser.DEFAULT_APPROVE_USER_ID = entity.DEPUTY_GROUP_LEADER_ID;
}
}
}
Nav_Details.ForEach(detail =>
{
if (detail.Nav_Areas != null)
{
areas.AddRange(detail.Nav_Areas);
detail.Nav_Areas = null;
}
if (detail.Nav_Identifyings != null)
{
identifyings.AddRange(detail.Nav_Identifyings);
detail.Nav_Identifyings = null;
}
});
UnifiedCommit(() =>
{
if (areas.Any())
BantchSaveEntityNoCommit(areas); //保存孙表
if (identifyings.Any())
BantchSaveEntityNoCommit(identifyings); //保存孙表
if (entity != null)
UpdateEntityNoCommit(entity); //保存主表
if (Nav_Details.Any())
BantchSaveEntityNoCommit(Nav_Details); //保存子表
if (files != null && files.Any())
BantchSaveEntityNoCommit(files); //保存子表
if (notice != null)
AddEntityNoCommit(notice);
if (finishNotice != null)
UpdateEntityNoCommit(finishNotice, "NOTICE_STATUS", "TASK_DT", "MODIFIER_ID");
if (teamLeaders != null)
BantchSaveEntityNoCommit(teamLeaders); //保存子表
});
return true;
});
}
/// <summary>
/// 获取组长
/// </summary>
/// <param name="pageFilter"></param>
/// <returns></returns>
[HttpPost, Route("GetEvaluationPlan")]
public JsonActionResult<bool> GetEvaluationPlan([FromBody] T_HM_EVALUATION_PLAN entity)
{
return SafeExecute<bool>(() =>
{
var model = GetEntity<T_HM_EVALUATION_PLAN>(entity.ID.ToString());
var orgId = APT.Infrastructure.Api.AppContext.CurrentSession.OrgId;
var userId = APT.Infrastructure.Api.AppContext.CurrentSession.UserID;
var deputy = model.DEPUTY_GROUP_LEADER_ID == userId && (model.DEPUTY_GROUP_LEADER_OPINION == 0 || model.DEPUTY_GROUP_LEADER_OPINION == null);
var leader = model.GROUP_LEADER_ID == userId && (model.GROUP_LEADER_OPINION == 0 || model.GROUP_LEADER_OPINION == null);
if (deputy || leader) //该用户在该记录中是否参与且未同意则显示同意按钮
{
return true;
}
else
{
return false;
}
});
}
/// <summary>
/// 获取个人的班组前会议活动
/// </summary>
/// <param name="pageFilter"></param>
/// <returns></returns>
[HttpPost, Route("GetUserDealStatus")]
public JsonActionResult<bool> GetUserDealStatus([FromBody] T_HM_EVALUATION_PLAN entity)
{
return SafeExecute<bool>(() =>
{
var userID = APT.Infrastructure.Api.AppContext.CurrentSession.UserID;
var count = GetCount<T_HM_EVALUATION_DETAIL>(t => t.PLAN_ID == entity.ID && t.CHARGE_USER_ID == userID && t.DEAL_STATUS == 0, new BaseFilter(APT.Infrastructure.Api.AppContext.CurrentSession.OrgId));
if (count > 0) //该用户在该记录中是否参与且未同意则显示同意按钮
{
return true;
}
else
{
return false;
}
});
}
/// <summary>
/// 同意
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
[HttpPost, Route("ChargeUserAgree")]
public JsonActionResult<bool> ChargeUserAgree([FromBody] T_HM_EVALUATION_PLAN entity)
{
return SafeExecute<bool>(() =>
{
var orgId = APT.Infrastructure.Api.AppContext.CurrentSession.OrgId;
var curruUserId = APT.Infrastructure.Api.AppContext.CurrentSession.UserID;
if (entity.CHECK_STATUS == 1)
{
T_HM_EVALUATION_PLAN model = GetEntity<T_HM_EVALUATION_PLAN>(entity.ID.ToString());
if (model.GROUP_LEADER_ID == curruUserId)
model.GROUP_LEADER_OPINION = HMOpinionEnmu.;
if (model.DEPUTY_GROUP_LEADER_ID == curruUserId)
model.DEPUTY_GROUP_LEADER_OPINION = HMOpinionEnmu.;
if (model.GROUP_LEADER_OPINION == HMOpinionEnmu.)
{
//var companycode=GetEntity<T_FM_BASE_CONFIG>(t=>t.IS_DELETED==false);
//if(companycode.NAME.Equals("XLK"))
//{
var detailUsers = GetEntities<T_HM_EVALUATION_DETAIL>(t => t.PLAN_ID == entity.ID, new BaseFilter(orgId));
foreach (var user in detailUsers)
{
user.DEAL_STATUS = (int)FOUserShiftStatusEnum.;
user.MODIFY_TIME = DateTime.Now;
}
model.STATUS = FOPreMeetingStatusEnum.;
model.APPROVECODE = DateTime.Now.ToString("yyyyMMddHHmmss");
MFlowPermitService.InsertApprove(model.APPROVECODE, "HM043", "", entity.ID, "HM042_SHOWPRINT", entity.TaskID, true, () =>
{
UpdateEntityNoCommit(model, "STATUS");
BantchUpdateEntityNoCommit(detailUsers, "DEAL_STATUS", "MODIFY_TIME");
});
return true;
//}
//var noticeTitles = new List<string>();
//var noticeUserIds = new List<Guid>();
//var noticeUserNames = new List<string>();
//var noticeDataIds = new List<Guid>();
//model.STATUS = FOPreMeetingStatusEnum.签到中;
//model.MODIFY_TIME = DateTime.Now;
//BaseFilter baseFilter = new BaseFilter(orgId);
//baseFilter.Include = new string[] { "Nav_ChargeUser" };
//var users = GetEntities<T_HM_EVALUATION_DETAIL>(t => t.PLAN_ID == entity.ID, baseFilter).Select(t=>t.CHARGE_USER_ID).Distinct();
//foreach (var item in users)
//{
// noticeTitles.Add("年度风险评价计划审核表-待确认");
// noticeDataIds.Add(entity.ID);
// noticeUserIds.Add((Guid)item);
// noticeUserNames.Add("");
//}
//NotificationTaskService.SendAndFinishNotificationTask(noticeTitles, noticeDataIds, orgId, noticeUserIds, noticeUserNames, DateTime.Now, DateTime.Now.AddHours(24), (int)FMNoticeTypeEnum.消息, "HM042_SHOWPRINT", entity.TaskID, () =>
//{
// UpdateEntityNoCommit(model, "STATUS", "GROUP_LEADER_OPINION", "MODIFY_TIME");
//});
}
else
{
NotificationTaskService.SendAndFinishNotificationTask(model.EVALUATION_DATE.Year + "年度风险评价计划审核表", entity.ID, orgId, (Guid)model.GROUP_LEADER_ID, "", DateTime.Now,
DateTime.Parse(DateTime.Now.AddDays(1).ToShortDateString() + " 23:59:59"), (int)FMNoticeTypeEnum., "HM042_SHOWPRINT", entity.TaskID, () =>
{
UpdateEntityNoCommit(model, "STATUS", "DEPUTY_GROUP_LEADER_OPINION");
});
}
}
else
{
if (string.IsNullOrEmpty(entity.AUDIT_OPINION))
{
throw new Exception("驳回时,请填写审核意见!");
}
else
{
T_HM_EVALUATION_PLAN model = GetEntity<T_HM_EVALUATION_PLAN>(entity.ID.ToString(), "Nav_ReleaseUser");
if (model.DEPUTY_GROUP_LEADER_ID == curruUserId)
{
model.DEPUTY_GROUP_LEADER_OPINION = HMOpinionEnmu.;
}
else if (model.GROUP_LEADER_ID == curruUserId)
{
model.GROUP_LEADER_OPINION = HMOpinionEnmu.;
}
model.AUDIT_OPINION = entity.AUDIT_OPINION;
model.STATUS = FOPreMeetingStatusEnum.;
NotificationTaskService.SendAndFinishNotificationTask(model.EVALUATION_DATE.Year + "年度风险评价计划-待修改", entity.ID, orgId, (Guid)model.RELEASE_USER_ID, model.Nav_ReleaseUser.NAME, DateTime.Now, DateTime.Parse(DateTime.Now.AddDays(1).ToShortDateString() + " 23:59:59"), 0, "HM043", entity.TaskID, () =>
{
if (model != null)
this.UpdateEntityNoCommit(model, "DEPUTY_GROUP_LEADER_OPINION", "GROUP_LEADER_OPINION", "AUDIT_OPINION", "STATUS");
});
}
}
return true;
});
}
/// <summary>
/// 签到
/// </summary>
/// <param name="pageFilter"></param>
/// <returns></returns>
[HttpPost, Route("UserSignin")]
public JsonActionResult<bool> UserSignin([FromBody] T_HM_EVALUATION_PLAN entity)
{
return SafeExecute<bool>(() =>
{
var orgId = APT.Infrastructure.Api.AppContext.CurrentSession.OrgId;
var userID = APT.Infrastructure.Api.AppContext.CurrentSession.UserID;
var users = GetEntities<T_HM_EVALUATION_DETAIL>(t => t.PLAN_ID == entity.ID, new BaseFilter(orgId));
var signUsers = users.Where(t => t.CHARGE_USER_ID == userID);
foreach (var user in signUsers)
{
user.DEAL_STATUS = (int)FOUserShiftStatusEnum.;
user.MODIFY_TIME = DateTime.Now;
}
var todoCount = users.Count(t => t.DEAL_STATUS == 0);
if (todoCount == 0)
{
T_HM_EVALUATION_PLAN model = GetEntity<T_HM_EVALUATION_PLAN>(entity.ID.ToString());
model.STATUS = FOPreMeetingStatusEnum.;
model.APPROVECODE = DateTime.Now.ToString("yyyyMMddHHmmss");
MFlowPermitService.InsertApprove(model.APPROVECODE, "HM043", "", entity.ID, "HM042_SHOWPRINT", entity.TaskID, true, () =>
{
UpdateEntityNoCommit(model, "STATUS");
BantchUpdateEntityNoCommit(users, "DEAL_STATUS", "MODIFY_TIME");
});
}
else
{
if (users != null)
{
NotificationTaskService.NotificationTaskFinish(entity.TaskID, () =>
{
BantchUpdateEntityNoCommit(users, "DEAL_STATUS", "MODIFY_TIME");
});
}
}
return true;
});
}
/// <summary>
/// 审批流回调
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
[HttpGet, Route("PersonalApprove")]
public JsonActionResult<bool> PersonalApprove(string id)
{
return SafeExecute<bool>(() =>
{
return ApproveCallBackService.CallBack("HM/HMEvaluationPlan/PersonalApprove", id);
});
}
}
}