using APT.BaseData.Domain.Entities.FM;
using APT.BaseData.Domain.Entities;
using APT.BaseData.Domain.Enums.PF;
using APT.BaseData.Domain.Enums;
using APT.BaseData.Services.DomainServices;
using APT.BaseData.Services.Services.FM;
using APT.Infrastructure.Core;
using APT.MS.Domain.Entities.SC.PT;
using APT.Utility;
using Microsoft.AspNetCore.Mvc;
using System.Collections.Generic;
using System.Linq;
using System;
using APT.BaseData.Domain.IServices.FM;
using APT.BaseData.Domain.IServices;
using APT.MS.Domain.Enums;
using APT.MS.Domain.Entities.SC;
using APT.MS.Domain.Entities.HM;
using Microsoft.AspNetCore.Identity;
using MySqlX.XDevAPI.Common;
using Microsoft.CodeAnalysis.Differencing;
using APT.BaseData.Domain.ApiModel;
namespace APT.SC.WebApi.Controllers.Api.PTController
{
///
/// 部门、车间、班组安全生产目标与指标制定表
///
[Route("api/PT/PTIndicatorFormulationDepartment")]
public partial class IndicatorFormulationDepartmentController : AuthorizeApiController
{
IPFCodeRuleService CodeRuleService { get; set; }
IFMNotificationTaskService NotificationTaskService { get; set; }
IFMFlowPermitService MFlowPermitService { get; set; }
IPFApproveCallBackService ApproveCallBackService { get; set; }
IFMDepartmentService DepartmentService { get; set; }
///
///
///
///
public IndicatorFormulationDepartmentController(IPFCodeRuleService codeRuleService, IFMNotificationTaskService notificationTaskService, IFMFlowPermitService mFlowPermitService, IPFApproveCallBackService approveCallBackService, IFMDepartmentService departmentService)
{
CodeRuleService = codeRuleService;
NotificationTaskService = notificationTaskService;
MFlowPermitService = mFlowPermitService;
ApproveCallBackService = approveCallBackService;
DepartmentService = departmentService;
}
///
/// 新增/编辑
///
///
///
[HttpPost, Route("FullUpdate")]
public JsonActionResult FullUpdate([FromBody] T_PT_INDICATOR_FORMULATION_DEPARTMENT entity)
{
return SafeExecute(() =>
{
var departments = entity.Nav_DepartmentDetail.Where(t => !t.IS_DELETED).ToList();
var teams = entity.Nav_TeamDetail.Where(t => !t.IS_DELETED).ToList();
entity.STATUS = PFStandardStatus.Draft;
entity.YEAR = DateTime.Now.Year.ToString();
var loginUserId = APT.Infrastructure.Api.AppContext.CurrentSession.UserID;
entity.USER_ID = loginUserId;
//var department = this.GetEntity(t => t.ID == loginUserId.Value && t.ENABLE_STATUS == 0, "Nav_Department");
entity.DEPARTMENT_ID = APT.Infrastructure.Api.AppContext.CurrentSession.DepartmentID;
//entity.DEPARTMENT_TYPE = entity.DEPARTMENT_TYPE!=0? entity.DEPARTMENT_TYPE : FMDepartmentType.部门;
List notices = new List();
List contents = new List();
List teamContents = new List();
T_FM_NOTIFICATION_TASK task = null;
if (departments != null && departments.Any())
{
departments.ForEach(t =>
{
t.ORG_ID = entity.ORG_ID; t.INDICATOR_FORMULATION_DEPARTMENT_ID = entity.ID;
if (t.Nav_DetailContent != null && t.Nav_DetailContent.Any())
{
t.Nav_DetailContent.ForEach(t1 =>
{
t1.ORG_ID = entity.ORG_ID;
t1.INDICATOR_FORMULATION_DEPARTMENT_DETAIL_ID = t.ID;
contents.Add(t1);
});
}
else
throw new Exception("目标与指标未全部填写");
t.Nav_DetailContent = null;
});
}
if (teams != null && teams.Any())
{
teams.ForEach(t =>
{
t.ORG_ID = entity.ORG_ID; t.INDICATOR_FORMULATION_DEPARTMENT_ID = entity.ID;
if (t.Nav_DetailContent != null && t.Nav_DetailContent.Any())
{
t.Nav_DetailContent.ForEach(t1 =>
{
t1.ORG_ID = entity.ORG_ID;
t1.INDICATOR_FORMULATION_DEPARTMENT_TEAM_ID = t.ID;
teamContents.Add(t1);
});
}
else
throw new Exception("目标与指标未全部填写");
t.Nav_DetailContent = null;
});
}
if (entity.PUBLISH != null && entity.PUBLISH.Equals("SaveAndNotify"))
{
entity.STATUS = PFStandardStatus.Approving;
entity.Nav_DepartmentDetail = null;
entity.Nav_TeamDetail = null;
//取审批流水码
var sysFilter = new SystemCodeFilter();
sysFilter.CodeType = (int)PFCodeRuleType.审批流编码;
sysFilter.Count = 1;
sysFilter.OrgId = entity.ORG_ID;
var codes = CodeRuleService.NewGenSerial(sysFilter);
var serialCode = codes.Split(new char[] { ',' });
var param = Enum.GetName(typeof(FMDepartmentType), entity.DEPARTMENT_TYPE);
MFlowPermitService.InsertApprove(serialCode[0], "PT020", param, entity.ID, "PT020_SHOWPRINT", entity.TaskID, true, () =>
{
if (entity != null)
this.UpdateEntityNoCommit(entity);
if (departments != null && departments.Any())
this.BantchSaveEntityNoCommit(departments);
if (contents != null && contents.Any())
this.BantchSaveEntityNoCommit(contents);
if (teams != null && teams.Any())
this.BantchSaveEntityNoCommit(teams);
if (teamContents != null && teamContents.Any())
this.BantchSaveEntityNoCommit(teamContents);
if (task != null)
this.UpdateEntityNoCommit(task);
if (notices != null && notices.Any())
this.BantchSaveEntityNoCommit(notices);
}, null, null, null, null, null, "PT020_SHOWPRINT", null);
return true;
//if (entity.TaskID != Guid.Empty)
//{
// task = NotificationTaskService.GetTaskFinishModel(entity.TaskID);
//}
}
entity.Nav_DepartmentDetail = null;
entity.Nav_TeamDetail = null;
UnifiedCommit(() =>
{
if (entity != null)
this.UpdateEntityNoCommit(entity);
if (departments != null && departments.Any())
this.BantchSaveEntityNoCommit(departments);
if (contents != null && contents.Any())
this.BantchSaveEntityNoCommit(contents);
if (teams != null && teams.Any())
this.BantchSaveEntityNoCommit(teams);
if (teamContents != null && teamContents.Any())
this.BantchSaveEntityNoCommit(teamContents);
if (task != null)
this.UpdateEntityNoCommit(task);
if (notices != null && notices.Any())
this.BantchSaveEntityNoCommit(notices);
});
return true;
});
}
///
/// 已阅
///
///
///
[HttpPost, Route("IdentityUpdate")]
public JsonActionResult IdentityUpdate([FromBody] T_PT_INDICATOR_FORMULATION_DEPARTMENT entity)
{
return SafeExecute(() => {
var formulationDepartment = this.GetEntity(entity.ID);
//发起车间、班组、个人目标与指标
T_PT_INDICATOR_FORMULATION_DEPARTMENT department = null;
var loginUserId = APT.Infrastructure.Api.AppContext.CurrentSession.UserID;
var loginUser = this.GetEntity(t => t.ID == loginUserId.Value && t.ENABLE_STATUS == 0, "Nav_Department", "Nav_ApproveRole");
var name = "";var type = 0; var entityDepartment = FMDepartmentType.公司;
switch (formulationDepartment.DEPARTMENT_TYPE)
{
case FMDepartmentType.公司:
entityDepartment = FMDepartmentType.部门;
name = "车间"; type = 1;
break;
case FMDepartmentType.部门:
entityDepartment = FMDepartmentType.车间;
name = "班组"; type = 2;
break;
case FMDepartmentType.车间:
entityDepartment = FMDepartmentType.班组;
name = "个人";
break;
case FMDepartmentType.班组:
break;
default:
name = "";
break;
}
var departmentName = Enum.GetName(typeof(FMDepartmentType), entityDepartment);
List detailList = new List();
List teamDetailList = new List();
List departmentContents = new List();
List teamContents = new List();
//触发考核方案审核表
T_PT_ASSESSMENT_PLAN_AUDIT audit = null;
List auditDetails = new List();
List contents = new List();
List notices = new List();
if (((int)formulationDepartment.DEPARTMENT_TYPE != loginUser.Nav_Department.DEPARTMENT_TYPE && loginUser.Nav_ApproveRole != null && loginUser.Nav_ApproveRole.NAME.Contains("负责人"))|| ((int)formulationDepartment.DEPARTMENT_TYPE == loginUser.Nav_Department.DEPARTMENT_TYPE && formulationDepartment.DEPARTMENT_TYPE == FMDepartmentType.班组))
{
department = new T_PT_INDICATOR_FORMULATION_DEPARTMENT();
department.STATUS = PFStandardStatus.Draft;
department.ORG_ID = formulationDepartment.ORG_ID;
department.YEAR = formulationDepartment.YEAR;
department.SET_TIME = DateTime.Now;
department.USER_ID = loginUserId;
department.DEPARTMENT_ID = loginUser?.DEPARTMENT_ID;
department.DEPARTMENT_TYPE = entityDepartment;
audit = new T_PT_ASSESSMENT_PLAN_AUDIT();
audit.ORG_ID = formulationDepartment.ORG_ID;
audit.DEPARTMENT_TYPE = entityDepartment;
audit.STATUS = PFStandardStatus.Draft;
audit.YEAR = formulationDepartment.YEAR;
audit.USER_ID = loginUserId;
audit.DEPARTMENT_ID = loginUser?.DEPARTMENT_ID;
audit.SET_TIME = DateTime.Now;
if (name == "")
{
department = null;
audit = null;
formulationDepartment.STATUS = PFStandardStatus.Archived;
}
else if (name == "个人")
{
var userIdLists = this.GetEntities(t => t.DEPARTMENT_ID == loginUser.DEPARTMENT_ID && (t.Nav_ApproveRole == null || (t.Nav_ApproveRole != null && !t.Nav_ApproveRole.NAME.Contains("副总") && !t.Nav_ApproveRole.NAME.Contains("总经理") && !t.Nav_ApproveRole.NAME.Contains("负责人"))) && t.ENABLE_STATUS == (int)FMEnableStatusEnum.启用 && t.CODE != "admin", new BaseFilter(formulationDepartment.ORG_ID)).ToList();
if (userIdLists != null && userIdLists.Any())
{
userIdLists.ForEach(t =>
{
T_PT_INDICATOR_FORMULATION_DEPARTMENT_TEAM detail = new T_PT_INDICATOR_FORMULATION_DEPARTMENT_TEAM();
detail.ORG_ID = formulationDepartment.ORG_ID;
detail.INDICATOR_FORMULATION_DEPARTMENT_ID = department.ID;
detail.USER_ID = t.ID;
teamDetailList.Add(detail);
//细表
T_PT_ASSESSMENT_PLAN_AUDIT_DETAIL auditDetail = new T_PT_ASSESSMENT_PLAN_AUDIT_DETAIL();
auditDetail.ORG_ID = audit.ORG_ID;
auditDetail.DEPARTMENT_ID = t.DEPARTMENT_ID;
auditDetail.USER_ID = t.ID;
auditDetail.ASSESSMENT_PLAN_ID = audit.ID;
auditDetail.YEAR = formulationDepartment.YEAR;
auditDetails.Add(auditDetail);
});
}
var departIds = userIdLists.Select(t => t.DEPARTMENT_ID).ToList();
var userIds = userIdLists.Select(t => t.ID).ToList();
var tempDetails = this.GetEntities(t => departIds.Contains(t.DEPARTMENT_ID.Value) || userIds.Contains(t.USER_ID.Value), new BaseFilter(entity.ORG_ID), new string[] { "Nav_Contents" }).ToList();
if (teamDetailList != null && teamDetailList.Any())
{
foreach (var auditDs in teamDetailList)
{
var tempCurrent = tempDetails.FirstOrDefault(t => t.USER_ID == auditDs.USER_ID);
if (tempCurrent != null)
{
if (tempCurrent.Nav_Contents != null && tempCurrent.Nav_Contents.Any())
{
tempCurrent.Nav_Contents.ForEach(t =>
{
T_PT_INDICATOR_FORMULATION_DEPARTMENT_TEAM_CONTENT content = new T_PT_INDICATOR_FORMULATION_DEPARTMENT_TEAM_CONTENT();
content.ORG_ID = t.ORG_ID;
content.INDICATOR_FORMULATION_DEPARTMENT_TEAM_ID = auditDs.ID;
content.NAME = t.NAME;
content.ROW_NO = t.ROW_NO;
teamContents.Add(content);
});
}
}
}
}
if (auditDetails != null && auditDetails.Any())
{
foreach (var auditDs in auditDetails)
{
var tempCurrent = tempDetails.FirstOrDefault(t => t.DEPARTMENT_ID == auditDs.DEPARTMENT_ID && t.USER_ID == auditDs.USER_ID);
if (tempCurrent != null)
{
auditDs.ASSESSMENT_CYCLE = tempCurrent.ASSESSMENT_CYCLE;
if (tempCurrent.Nav_Contents != null && tempCurrent.Nav_Contents.Any())
{
tempCurrent.Nav_Contents.ForEach(t =>
{
T_PT_ASSESSMENT_PLAN_AUDIT_DETAIL_CONTENT content = new T_PT_ASSESSMENT_PLAN_AUDIT_DETAIL_CONTENT();
content.ORG_ID = t.ORG_ID;
content.PLAN_AUDIT_DETAIL_ID = auditDs.ID;
content.NAME = t.NAME;
content.SCORE = t.SCORE;
content.METHOD = t.METHOD;
contents.Add(content);
});
}
}
}
}
if (departIds.Count() == 0 && userIds.Count() == 0)
{ department = null; audit = null; }
else
{
notices.Add(NotificationTaskService.InsertUserNoticeTaskModel(name + "目标与指标分解", department.ID, formulationDepartment.ORG_ID, loginUser.ID, loginUser.NAME, DateTime.Now,
DateTime.Now.AddDays(5), (int)FMNoticeTypeEnum.消息, "PT025"));//userIds, userNames,
notices.Add(NotificationTaskService.InsertUserNoticeTaskModel(departmentName + "考核方案审核", audit.ID, formulationDepartment.ORG_ID, loginUser.ID, loginUser.NAME, DateTime.Now,
DateTime.Now.AddDays(5), (int)FMNoticeTypeEnum.消息, "PT024"));//userIds, userNames,
}
}
else
{
var departInfos = this.GetEntities(t => t.DEPARTMENT_TYPE == type && t.PARENT_ID == loginUser.DEPARTMENT_ID && t.ENABLE_STATUS == (int)FMEnableStatusEnum.启用, new BaseFilter(formulationDepartment.ORG_ID));
var departIds = departInfos.Select(m => m.ID).ToList();
if (departIds != null && departIds.Any())
{
departIds.ForEach(t =>
{
T_PT_INDICATOR_FORMULATION_DEPARTMENT_DETAIL detail = new T_PT_INDICATOR_FORMULATION_DEPARTMENT_DETAIL();
detail.ORG_ID = formulationDepartment.ORG_ID;
detail.INDICATOR_FORMULATION_DEPARTMENT_ID = department.ID;
detail.DEPARTMENT_ID = t;
detailList.Add(detail);
//细表
T_PT_ASSESSMENT_PLAN_AUDIT_DETAIL auditDetail = new T_PT_ASSESSMENT_PLAN_AUDIT_DETAIL();
auditDetail.ORG_ID = audit.ORG_ID;
auditDetail.DEPARTMENT_ID = t;
auditDetail.ASSESSMENT_PLAN_ID = audit.ID;
auditDetail.YEAR = formulationDepartment.YEAR;
auditDetails.Add(auditDetail);
});
}
var chargeIds = departInfos.Select(t => t.USER_ID).Distinct().ToList();
var userIdLists = this.GetEntities(t => (t.DEPARTMENT_ID == loginUser.DEPARTMENT_ID && (t.Nav_ApproveRole == null || (t.Nav_ApproveRole != null && !t.Nav_ApproveRole.NAME.Contains("副总") && !t.Nav_ApproveRole.NAME.Contains("总经理") && !t.Nav_ApproveRole.NAME.Contains("负责人"))) && t.ENABLE_STATUS == (int)FMEnableStatusEnum.启用 && t.CODE != "admin") || chargeIds.Contains(t.ID), new BaseFilter(formulationDepartment.ORG_ID)).ToList();
if (userIdLists != null && userIdLists.Any())
{
userIdLists.ForEach(t =>
{
T_PT_INDICATOR_FORMULATION_DEPARTMENT_TEAM detail = new T_PT_INDICATOR_FORMULATION_DEPARTMENT_TEAM();
detail.ORG_ID = formulationDepartment.ORG_ID;
detail.INDICATOR_FORMULATION_DEPARTMENT_ID = department.ID;
detail.USER_ID = t.ID;
teamDetailList.Add(detail);
//细表
T_PT_ASSESSMENT_PLAN_AUDIT_DETAIL auditDetail = new T_PT_ASSESSMENT_PLAN_AUDIT_DETAIL();
auditDetail.ORG_ID = audit.ORG_ID;
auditDetail.DEPARTMENT_ID = t.DEPARTMENT_ID;
auditDetail.USER_ID = t.ID;
auditDetail.ASSESSMENT_PLAN_ID = audit.ID;
auditDetail.YEAR = formulationDepartment.YEAR;
auditDetails.Add(auditDetail);
});
}
var userIds = userIdLists.Select(t => t.ID).ToList();
var tempDetails = this.GetEntities(t => departIds.Contains(t.DEPARTMENT_ID.Value) || userIds.Contains(t.USER_ID.Value), new BaseFilter(entity.ORG_ID), new string[] { "Nav_Contents" }).ToList();
if (detailList != null && detailList.Any())
{
foreach (var auditDs in detailList)
{
var tempCurrent = tempDetails.FirstOrDefault(t => t.DEPARTMENT_ID == auditDs.DEPARTMENT_ID && t.USER_ID == null);
if (tempCurrent != null)
{
if (tempCurrent.Nav_Contents != null && tempCurrent.Nav_Contents.Any())
{
tempCurrent.Nav_Contents.ForEach(t =>
{
T_PT_INDICATOR_FORMULATION_DEPARTMENT_DETAIL_CONTENT content = new T_PT_INDICATOR_FORMULATION_DEPARTMENT_DETAIL_CONTENT();
content.ORG_ID = t.ORG_ID;
content.INDICATOR_FORMULATION_DEPARTMENT_DETAIL_ID = auditDs.ID;
content.NAME = t.NAME;
content.ROW_NO = t.ROW_NO;
departmentContents.Add(content);
});
}
}
}
}
if (teamDetailList != null && teamDetailList.Any())
{
foreach (var auditDs in teamDetailList)
{
var tempCurrent = tempDetails.FirstOrDefault(t => t.USER_ID == auditDs.USER_ID);
if (tempCurrent != null)
{
if (tempCurrent.Nav_Contents != null && tempCurrent.Nav_Contents.Any())
{
tempCurrent.Nav_Contents.ForEach(t =>
{
T_PT_INDICATOR_FORMULATION_DEPARTMENT_TEAM_CONTENT content = new T_PT_INDICATOR_FORMULATION_DEPARTMENT_TEAM_CONTENT();
content.ORG_ID = t.ORG_ID;
content.INDICATOR_FORMULATION_DEPARTMENT_TEAM_ID = auditDs.ID;
content.NAME = t.NAME;
content.ROW_NO = t.ROW_NO;
teamContents.Add(content);
});
}
}
}
}
if (auditDetails != null && auditDetails.Any())
{
foreach (var auditDs in auditDetails)
{
var tempCurrent = tempDetails.FirstOrDefault(t => t.DEPARTMENT_ID == auditDs.DEPARTMENT_ID && t.USER_ID == auditDs.USER_ID);
if (tempCurrent != null)
{
auditDs.ASSESSMENT_CYCLE = tempCurrent.ASSESSMENT_CYCLE;
if (tempCurrent.Nav_Contents != null && tempCurrent.Nav_Contents.Any())
{
tempCurrent.Nav_Contents.ForEach(t =>
{
T_PT_ASSESSMENT_PLAN_AUDIT_DETAIL_CONTENT content = new T_PT_ASSESSMENT_PLAN_AUDIT_DETAIL_CONTENT();
content.ORG_ID = t.ORG_ID;
content.PLAN_AUDIT_DETAIL_ID = auditDs.ID;
content.NAME = t.NAME;
content.SCORE = t.SCORE;
content.METHOD = t.METHOD;
contents.Add(content);
});
}
}
}
}
if (departIds.Count() == 0 && userIds.Count() == 0)
{ department = null; audit = null; }
else
{
notices.Add(NotificationTaskService.InsertUserNoticeTaskModel(name + "目标与指标分解", department.ID, formulationDepartment.ORG_ID, loginUser.ID, loginUser.NAME, DateTime.Now,
DateTime.Now.AddDays(5), (int)FMNoticeTypeEnum.消息, "PT020"));//userIds, userNames,
notices.Add(NotificationTaskService.InsertUserNoticeTaskModel(departmentName + "考核方案审核", audit.ID, formulationDepartment.ORG_ID, loginUser.ID, loginUser.NAME, DateTime.Now,
DateTime.Now.AddDays(5), (int)FMNoticeTypeEnum.消息, "PT024"));//userIds, userNames,
}
}
}
//发消息
//var userIds = new List();
//userIds.Add(loginUser.ID);
//var userNames = new List();
//var user = this.GetEntity(t => t.ENABLE_STATUS == (int)FMEnableStatusEnum.启用 && userIds.Contains(t.ID));
//userNames.Add(user?.NAME);
T_FM_NOTIFICATION_TASK task = null;
if (entity.TaskID != Guid.Empty)
{
task = NotificationTaskService.GetTaskFinishModel(entity.TaskID);
task.SOURCE_FORMCODE = "PT020_SHOWPRINT";
}
UnifiedCommit(() =>
{
if (formulationDepartment != null)
this.UpdateEntityNoCommit(formulationDepartment);
if (department != null)
this.UpdateEntityNoCommit(department);
if (detailList != null && detailList.Any())
this.BantchSaveEntityNoCommit(detailList);
if (teamDetailList != null && teamDetailList.Any())
this.BantchSaveEntityNoCommit(teamDetailList);
if (departmentContents != null && departmentContents.Any())
this.BantchSaveEntityNoCommit(departmentContents);
if (teamContents != null && teamContents.Any())
this.BantchSaveEntityNoCommit(teamContents);
if (audit != null)
this.UpdateEntityNoCommit(audit);
if (auditDetails != null && auditDetails.Any())
this.BantchSaveEntityNoCommit(auditDetails);
if (contents != null && contents.Any())
this.BantchSaveEntityNoCommit(contents);
if (task != null)
this.UpdateEntityNoCommit(task);
if (notices != null && notices.Any())
this.BantchSaveEntityNoCommit(notices);
});
return true;
});
}
///
/// 已阅(豫鹭)
///
///
///
[HttpPost, Route("IdentityUpdateYL")]
public JsonActionResult IdentityUpdateYL([FromBody] T_PT_INDICATOR_FORMULATION_DEPARTMENT entity)
{
return SafeExecute(() => {
var formulationDepartment = this.GetEntity(entity.ID);
//发起车间、班组、个人目标与指标
T_PT_INDICATOR_FORMULATION_DEPARTMENT department = null;
var loginUserId = APT.Infrastructure.Api.AppContext.CurrentSession.UserID;
var loginUser = this.GetEntity(t => t.ID == loginUserId.Value && t.ENABLE_STATUS == 0, "Nav_Department", "Nav_ApproveRole");
var name = ""; var type = 0; var entityDepartment = FMDepartmentType.公司;
switch (formulationDepartment.DEPARTMENT_TYPE)
{
case FMDepartmentType.公司:
entityDepartment = FMDepartmentType.部门;
name = "班组"; type = 2;
break;
case FMDepartmentType.部门:
entityDepartment = FMDepartmentType.班组;
name = "个人";
break;
case FMDepartmentType.班组:
break;
default:
name = "";
break;
}
var departmentName = Enum.GetName(typeof(FMDepartmentType), entityDepartment);
List detailList = new List();
List teamDetailList = new List();
List departmentContents = new List();
List teamContents = new List();
//触发考核方案审核表
T_PT_ASSESSMENT_PLAN_AUDIT audit = null;
List auditDetails = new List();
List contents = new List();
List notices = new List();
if (((int)formulationDepartment.DEPARTMENT_TYPE != loginUser.Nav_Department.DEPARTMENT_TYPE && loginUser.Nav_ApproveRole !=null && loginUser.Nav_ApproveRole.NAME.Contains("负责人")) || ((int)formulationDepartment.DEPARTMENT_TYPE == loginUser.Nav_Department.DEPARTMENT_TYPE && formulationDepartment.DEPARTMENT_TYPE == FMDepartmentType.班组))
{
department = new T_PT_INDICATOR_FORMULATION_DEPARTMENT();
department.STATUS = PFStandardStatus.Draft;
department.ORG_ID = formulationDepartment.ORG_ID;
department.YEAR = formulationDepartment.YEAR;
department.SET_TIME = DateTime.Now;
department.USER_ID = loginUserId;
department.DEPARTMENT_ID = loginUser?.DEPARTMENT_ID;
department.DEPARTMENT_TYPE = entityDepartment;
audit = new T_PT_ASSESSMENT_PLAN_AUDIT();
audit.ORG_ID = formulationDepartment.ORG_ID;
audit.DEPARTMENT_TYPE = entityDepartment;
audit.STATUS = PFStandardStatus.Draft;
audit.YEAR = formulationDepartment.YEAR;
audit.USER_ID = loginUserId;
audit.DEPARTMENT_ID = loginUser?.DEPARTMENT_ID;
audit.SET_TIME = DateTime.Now;
if (name == "")
{
department = null;
audit = null;
formulationDepartment.STATUS = PFStandardStatus.Archived;
}
else if (name == "个人")
{
var userIdLists = this.GetEntities(t => t.DEPARTMENT_ID == loginUser.DEPARTMENT_ID && (t.Nav_ApproveRole == null || (t.Nav_ApproveRole != null && !t.Nav_ApproveRole.NAME.Contains("副总") && !t.Nav_ApproveRole.NAME.Contains("总经理") && !t.Nav_ApproveRole.NAME.Contains("负责人"))) && t.ENABLE_STATUS == (int)FMEnableStatusEnum.启用 && t.CODE != "admin", new BaseFilter(formulationDepartment.ORG_ID)).ToList();
if (userIdLists != null && userIdLists.Any())
{
userIdLists.ForEach(t =>
{
T_PT_INDICATOR_FORMULATION_DEPARTMENT_TEAM detail = new T_PT_INDICATOR_FORMULATION_DEPARTMENT_TEAM();
detail.ORG_ID = formulationDepartment.ORG_ID;
detail.INDICATOR_FORMULATION_DEPARTMENT_ID = department.ID;
detail.USER_ID = t.ID;
teamDetailList.Add(detail);
//细表
T_PT_ASSESSMENT_PLAN_AUDIT_DETAIL auditDetail = new T_PT_ASSESSMENT_PLAN_AUDIT_DETAIL();
auditDetail.ORG_ID = audit.ORG_ID;
auditDetail.DEPARTMENT_ID = t.DEPARTMENT_ID;
auditDetail.USER_ID = t.ID;
auditDetail.ASSESSMENT_PLAN_ID = audit.ID;
auditDetail.YEAR = formulationDepartment.YEAR;
auditDetails.Add(auditDetail);
});
}
var departIds = userIdLists.Select(t => t.DEPARTMENT_ID).ToList();
var userIds = userIdLists.Select(t => t.ID).ToList();
var tempDetails = this.GetEntities(t => departIds.Contains(t.DEPARTMENT_ID.Value) || userIds.Contains(t.USER_ID.Value), new BaseFilter(entity.ORG_ID), new string[] { "Nav_Contents" }).ToList();
if (teamDetailList != null && teamDetailList.Any())
{
foreach (var auditDs in teamDetailList)
{
var tempCurrent = tempDetails.FirstOrDefault(t => t.USER_ID == auditDs.USER_ID);
if (tempCurrent != null)
{
if (tempCurrent.Nav_Contents != null && tempCurrent.Nav_Contents.Any())
{
tempCurrent.Nav_Contents.ForEach(t =>
{
T_PT_INDICATOR_FORMULATION_DEPARTMENT_TEAM_CONTENT content = new T_PT_INDICATOR_FORMULATION_DEPARTMENT_TEAM_CONTENT();
content.ORG_ID = t.ORG_ID;
content.INDICATOR_FORMULATION_DEPARTMENT_TEAM_ID = auditDs.ID;
content.NAME = t.NAME;
content.ROW_NO = t.ROW_NO;
teamContents.Add(content);
});
}
}
}
}
if (auditDetails != null && auditDetails.Any())
{
foreach (var auditDs in auditDetails)
{
var tempCurrent = tempDetails.FirstOrDefault(t => t.DEPARTMENT_ID == auditDs.DEPARTMENT_ID && t.USER_ID == auditDs.USER_ID);
if (tempCurrent != null)
{
auditDs.ASSESSMENT_CYCLE = tempCurrent.ASSESSMENT_CYCLE;
if (tempCurrent.Nav_Contents != null && tempCurrent.Nav_Contents.Any())
{
tempCurrent.Nav_Contents.ForEach(t =>
{
T_PT_ASSESSMENT_PLAN_AUDIT_DETAIL_CONTENT content = new T_PT_ASSESSMENT_PLAN_AUDIT_DETAIL_CONTENT();
content.ORG_ID = t.ORG_ID;
content.PLAN_AUDIT_DETAIL_ID = auditDs.ID;
content.NAME = t.NAME;
content.SCORE = t.SCORE;
content.METHOD = t.METHOD;
contents.Add(content);
});
}
}
}
}
if (departIds.Count() == 0 && userIds.Count() == 0)
{ department = null; audit = null; }
else
{
notices.Add(NotificationTaskService.InsertUserNoticeTaskModel(name + "目标与指标分解", department.ID, formulationDepartment.ORG_ID, loginUser.ID, loginUser.NAME, DateTime.Now,
DateTime.Now.AddDays(5), (int)FMNoticeTypeEnum.消息, "PT025"));//userIds, userNames,
notices.Add(NotificationTaskService.InsertUserNoticeTaskModel(departmentName + "考核方案审核", audit.ID, formulationDepartment.ORG_ID, loginUser.ID, loginUser.NAME, DateTime.Now,
DateTime.Now.AddDays(5), (int)FMNoticeTypeEnum.消息, "PT024"));//userIds, userNames,
}
}
else
{
//取部门下的所有车间
List departmentId = new List() {loginUser.DEPARTMENT_ID.Value };
List departmentIds = new List();
DepartmentService.GetDepartmentIds(formulationDepartment.ORG_ID.Value, departmentId, ref departmentIds);
var departInfos = this.GetEntities(t => t.DEPARTMENT_TYPE == type && departmentIds.Contains(t.PARENT_ID.Value) && t.ENABLE_STATUS == (int)FMEnableStatusEnum.启用, new BaseFilter(formulationDepartment.ORG_ID));
var departIds = departInfos.Select(m => m.ID).ToList();
if (departIds != null && departIds.Any())
{
departIds.ForEach(t =>
{
T_PT_INDICATOR_FORMULATION_DEPARTMENT_DETAIL detail = new T_PT_INDICATOR_FORMULATION_DEPARTMENT_DETAIL();
detail.ORG_ID = formulationDepartment.ORG_ID;
detail.INDICATOR_FORMULATION_DEPARTMENT_ID = department.ID;
detail.DEPARTMENT_ID = t;
detailList.Add(detail);
//细表
T_PT_ASSESSMENT_PLAN_AUDIT_DETAIL auditDetail = new T_PT_ASSESSMENT_PLAN_AUDIT_DETAIL();
auditDetail.ORG_ID = audit.ORG_ID;
auditDetail.DEPARTMENT_ID = t;
auditDetail.ASSESSMENT_PLAN_ID = audit.ID;
auditDetail.YEAR = formulationDepartment.YEAR;
auditDetails.Add(auditDetail);
});
}
var chargeIds = departInfos.Select(t => t.USER_ID).Distinct().ToList();
var userIdLists = this.GetEntities(t => (t.DEPARTMENT_ID == loginUser.DEPARTMENT_ID && (t.Nav_ApproveRole == null || (t.Nav_ApproveRole != null && !t.Nav_ApproveRole.NAME.Contains("副总") && !t.Nav_ApproveRole.NAME.Contains("总经理") && !t.Nav_ApproveRole.NAME.Contains("负责人"))) && t.ENABLE_STATUS == (int)FMEnableStatusEnum.启用 && t.CODE != "admin") || chargeIds.Contains(t.ID), new BaseFilter(formulationDepartment.ORG_ID)).ToList();
if (userIdLists != null && userIdLists.Any())
{
userIdLists.ForEach(t =>
{
T_PT_INDICATOR_FORMULATION_DEPARTMENT_TEAM detail = new T_PT_INDICATOR_FORMULATION_DEPARTMENT_TEAM();
detail.ORG_ID = formulationDepartment.ORG_ID;
detail.INDICATOR_FORMULATION_DEPARTMENT_ID = department.ID;
detail.USER_ID = t.ID;
teamDetailList.Add(detail);
//细表
T_PT_ASSESSMENT_PLAN_AUDIT_DETAIL auditDetail = new T_PT_ASSESSMENT_PLAN_AUDIT_DETAIL();
auditDetail.ORG_ID = audit.ORG_ID;
auditDetail.DEPARTMENT_ID = t.DEPARTMENT_ID;
auditDetail.USER_ID = t.ID;
auditDetail.ASSESSMENT_PLAN_ID = audit.ID;
auditDetail.YEAR = formulationDepartment.YEAR;
auditDetails.Add(auditDetail);
});
}
var userIds = userIdLists.Select(t => t.ID).ToList();
var tempDetails = this.GetEntities(t => departIds.Contains(t.DEPARTMENT_ID.Value) || userIds.Contains(t.USER_ID.Value), new BaseFilter(entity.ORG_ID), new string[] { "Nav_Contents" }).ToList();
if (detailList != null && detailList.Any())
{
foreach (var auditDs in detailList)
{
var tempCurrent = tempDetails.FirstOrDefault(t => t.DEPARTMENT_ID == auditDs.DEPARTMENT_ID && t.USER_ID == null);
if (tempCurrent != null)
{
if (tempCurrent.Nav_Contents != null && tempCurrent.Nav_Contents.Any())
{
tempCurrent.Nav_Contents.ForEach(t =>
{
T_PT_INDICATOR_FORMULATION_DEPARTMENT_DETAIL_CONTENT content = new T_PT_INDICATOR_FORMULATION_DEPARTMENT_DETAIL_CONTENT();
content.ORG_ID = t.ORG_ID;
content.INDICATOR_FORMULATION_DEPARTMENT_DETAIL_ID = auditDs.ID;
content.NAME = t.NAME;
content.ROW_NO = t.ROW_NO;
departmentContents.Add(content);
});
}
}
}
}
if (teamDetailList != null && teamDetailList.Any())
{
foreach (var auditDs in teamDetailList)
{
var tempCurrent = tempDetails.FirstOrDefault(t => t.USER_ID == auditDs.USER_ID);
if (tempCurrent != null)
{
if (tempCurrent.Nav_Contents != null && tempCurrent.Nav_Contents.Any())
{
tempCurrent.Nav_Contents.ForEach(t =>
{
T_PT_INDICATOR_FORMULATION_DEPARTMENT_TEAM_CONTENT content = new T_PT_INDICATOR_FORMULATION_DEPARTMENT_TEAM_CONTENT();
content.ORG_ID = t.ORG_ID;
content.INDICATOR_FORMULATION_DEPARTMENT_TEAM_ID = auditDs.ID;
content.NAME = t.NAME;
content.ROW_NO = t.ROW_NO;
teamContents.Add(content);
});
}
}
}
}
if (auditDetails != null && auditDetails.Any())
{
foreach (var auditDs in auditDetails)
{
var tempCurrent = tempDetails.FirstOrDefault(t => t.DEPARTMENT_ID == auditDs.DEPARTMENT_ID && t.USER_ID == auditDs.USER_ID);
if (tempCurrent != null)
{
auditDs.ASSESSMENT_CYCLE = tempCurrent.ASSESSMENT_CYCLE;
if (tempCurrent.Nav_Contents != null && tempCurrent.Nav_Contents.Any())
{
tempCurrent.Nav_Contents.ForEach(t =>
{
T_PT_ASSESSMENT_PLAN_AUDIT_DETAIL_CONTENT content = new T_PT_ASSESSMENT_PLAN_AUDIT_DETAIL_CONTENT();
content.ORG_ID = t.ORG_ID;
content.PLAN_AUDIT_DETAIL_ID = auditDs.ID;
content.NAME = t.NAME;
content.SCORE = t.SCORE;
content.METHOD = t.METHOD;
contents.Add(content);
});
}
}
}
}
if (departIds.Count() == 0 && userIds.Count() == 0)
{ department = null; audit = null; }
else
{
notices.Add(NotificationTaskService.InsertUserNoticeTaskModel(name + "目标与指标分解", department.ID, formulationDepartment.ORG_ID, loginUser.ID, loginUser.NAME, DateTime.Now,
DateTime.Now.AddDays(5), (int)FMNoticeTypeEnum.消息, "PT020"));//userIds, userNames,
notices.Add(NotificationTaskService.InsertUserNoticeTaskModel(departmentName + "考核方案审核", audit.ID, formulationDepartment.ORG_ID, loginUser.ID, loginUser.NAME, DateTime.Now,
DateTime.Now.AddDays(5), (int)FMNoticeTypeEnum.消息, "PT024"));//userIds, userNames,
}
}
}
//发消息
//var userIds = new List();
//userIds.Add(loginUser.ID);
//var userNames = new List();
//var user = this.GetEntity(t => t.ENABLE_STATUS == (int)FMEnableStatusEnum.启用 && userIds.Contains(t.ID));
//userNames.Add(user?.NAME);
T_FM_NOTIFICATION_TASK task = null;
if (entity.TaskID != Guid.Empty)
{
task = NotificationTaskService.GetTaskFinishModel(entity.TaskID);
task.SOURCE_FORMCODE = "PT020_SHOWPRINT";
}
UnifiedCommit(() =>
{
if (formulationDepartment != null)
this.UpdateEntityNoCommit(formulationDepartment);
if (department != null)
this.UpdateEntityNoCommit(department);
if (detailList != null && detailList.Any())
this.BantchSaveEntityNoCommit(detailList);
if (teamDetailList != null && teamDetailList.Any())
this.BantchSaveEntityNoCommit(teamDetailList);
if (departmentContents != null && departmentContents.Any())
this.BantchSaveEntityNoCommit(departmentContents);
if (teamContents != null && teamContents.Any())
this.BantchSaveEntityNoCommit(teamContents);
if (audit != null)
this.UpdateEntityNoCommit(audit);
if (auditDetails != null && auditDetails.Any())
this.BantchSaveEntityNoCommit(auditDetails);
if (contents != null && contents.Any())
this.BantchSaveEntityNoCommit(contents);
if (task != null)
this.UpdateEntityNoCommit(task);
if (notices != null && notices.Any())
this.BantchSaveEntityNoCommit(notices);
});
return true;
});
}
///
/// 获取
///
///
///
[HttpPost, Route("GetEdit")]
public JsonActionResult GetEdit([FromBody] KeywordFilter filter)
{
return SafeExecute(() => {
var id = filter.FilterGroup.Rules.FirstOrDefault(t => t.Field == "ID").Value.ToString();
if (string.IsNullOrEmpty(id))
this.ThrowError("030017");
var result = this.GetEntity(id, new string[] { "Nav_User", "Nav_Department","Nav_Department.Nav_User",
"Nav_DepartmentDetail","Nav_DepartmentDetail.Nav_Department","Nav_DepartmentDetail.Nav_Department.Nav_User","Nav_DepartmentDetail.Nav_DetailContent","Nav_TeamDetail","Nav_TeamDetail.Nav_User",
"Nav_TeamDetail.Nav_User.Nav_Person","Nav_TeamDetail.Nav_User.Nav_Person.Nav_Post","Nav_TeamDetail.Nav_DetailContent"});
return result;
});
}
///
/// 回调函数
///
///
///
[HttpGet, Route("BackUpdate")]
public JsonActionResult BackUpdate(string id)
{
return SafeExecute(() =>
{
return ApproveCallBackService.CallBack("PT/PTIndicatorFormulationDepartment/BackUpdate", id);
});
}
///
/// 回调函数
///
///
///
[HttpGet, Route("BackUpdateYL")]
public JsonActionResult BackUpdateYL(string id)
{
return SafeExecute(() =>
{
return ApproveCallBackService.CallBack("PT/PTIndicatorFormulationDepartment/BackUpdateYL", id);
});
}
}
}