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); }); } } }