using APT.BaseData.Domain.Enums.PF; using APT.BaseData.Domain.IServices.FM; using APT.BaseData.Domain.IServices; using APT.BaseData.Services.Services.FM; using APT.Infrastructure.Core; using APT.MS.Domain.Entities.OG; using APT.MS.Domain.Enums; using APT.Utility; using Microsoft.AspNetCore.Mvc; using System; using System.Collections.Generic; using System.Linq; using System.Web; using APT.BaseData.Domain.Entities.FM; using APT.BaseData.Domain.Entities; namespace APT.SC.WebApi.Controllers.Api.OG { [Route("api/OG/OGStanardSysReview")] public class OGStanardizationSystemReviewController : AuthorizeApiController { IFMNotificationTaskService NotificationTaskService { get; set; } public OGStanardizationSystemReviewController(IFMNotificationTaskService notificationTaskService, IPFCodeRuleService codeRuleService) { NotificationTaskService = notificationTaskService; } /// /// 获得单条实体数据 /// /// /// [HttpPost, Route("Get")] public JsonActionResult Get([FromBody] KeywordFilter filter) { if (filter.FilterGroup.Rules.Count > 0) { return WitEntity(null, filter); } return SafeExecute(() => { var ret = new T_OG_STANDARDIZATION_SYSTEM_REVIEW { ID = Guid.NewGuid(), ORG_ID = filter.OrgId, Nav_ReviewItemsList = new List(), Nav_ReviewUserList = new List(), Nav_ReviewResultList = new List(), Nav_ActionPlanList = new List(), }; GetEntities(null, new BaseFilter(filter.GetOrgId())).ForEach(t => { ret.Nav_ReviewItemsList.Add(new T_OG_STANDARDIZATION_REVIEW_ITEMS_REL { ID = Guid.NewGuid(), ORG_ID = filter.OrgId, REVIEW_ID = ret.ID, ITEM_ID = t.ID, Nav_Item = t, }); }); GetEntities(null, new BaseFilter(filter.GetOrgId())).ForEach(t => { ret.Nav_ReviewResultList.Add(new T_OG_STANDARDIZATION_REVIEW_RESULT_REL { ID = Guid.NewGuid(), ORG_ID = filter.OrgId, REVIEW_ID = ret.ID, RESULT_ID = t.ID, Nav_Result = t, }); }); GetEntities(null, new BaseFilter(filter.GetOrgId())).ForEach(t => { ret.Nav_ActionPlanList.Add(new T_OG_STANDARDIZATION_ACTION_PLAN_REL { ID = Guid.NewGuid(), ORG_ID = filter.OrgId, REVIEW_ID = ret.ID, PLAN_ID = t.ID, Nav_Plan = t, }); }); return ret; }); } /// /// 更新 /// /// /// [HttpPost, Route("FullUpdate")] public JsonActionResult FullUpdate([FromBody] T_OG_STANDARDIZATION_SYSTEM_REVIEW entity) { return SafeExecute(() => { if (entity.USER_ID == null || entity.USER_ID == Guid.Empty) { entity.USER_ID = APT.Infrastructure.Api.AppContext.CurrentSession.UserID; } var Nav_ReviewItemsList = entity.Nav_ReviewItemsList; var Nav_ReviewUserList = entity.Nav_ReviewUserList; var Nav_ReviewResultList = entity.Nav_ReviewResultList; var Nav_ActionPlanList = entity.Nav_ActionPlanList; Nav_ReviewItemsList.ForEach((item) => { item.Nav_Item = null; }); Nav_ReviewUserList.ForEach((item) => { item.REVIEW_ID = entity.ID; item.ORG_ID = entity.ORG_ID; item.Nav_User = null; }); Nav_ReviewResultList.ForEach((item) => { item.Nav_Result = null; }); Nav_ActionPlanList.ForEach((item) => { item.Nav_Plan = null; }); List sendNotices = null; if (entity.PUBLISH != null && entity.PUBLISH.Equals("SaveAndNotify")) { if (entity.STATUS != (int)PFStandardStatus.Draft) { throw new Exception("您已提交过此数据,不可重复提交,请更新页面后重试"); } entity.STATUS = PFStandardStatus.Sign; var allSendUserTitles = new List(); var allSendDataIds = new List(); var allSendUserIds = new List(); var allSendUserNames = new List(); var userids = Nav_ActionPlanList.Select(t => t.USER_ID.Value).Distinct().ToList(); var userNames = GetEntities(t => userids.Contains(t.ID), new BaseFilter(entity.ORG_ID)); foreach (var userid in userids) { allSendUserTitles.Add("标准化系统评审意见"); allSendDataIds.Add(entity.ID); allSendUserIds.Add(userid); allSendUserNames.Add(userNames.FirstOrDefault(t => t.ID == userid).NAME); } sendNotices = NotificationTaskService.InsertUserNoticeTaskModels(allSendUserTitles, allSendDataIds, entity.ORG_ID.Value, allSendUserIds, allSendUserNames, DateTime.Now, DateTime.Now.AddDays(1), 1, "OG034_REPORT"); } entity.Nav_ReviewItemsList = null; entity.Nav_ReviewUserList = null; entity.Nav_ReviewResultList = null; entity.Nav_ActionPlanList = null; UnifiedCommit(() => { UpdateEntityNoCommit(entity); if (Nav_ReviewItemsList != null) BantchSaveEntityNoCommit(Nav_ReviewItemsList); if (Nav_ReviewUserList != null) BantchSaveEntityNoCommit(Nav_ReviewUserList); if (Nav_ReviewResultList != null) BantchSaveEntityNoCommit(Nav_ReviewResultList); if (Nav_ActionPlanList != null) BantchSaveEntityNoCommit(Nav_ActionPlanList); if (sendNotices != null) BantchAddEntityNoCommit(sendNotices); }); return true; }); } /// /// 获得单条实体数据 /// /// /// [HttpPost, Route("SubmitUser")] public JsonActionResult SubmitUser([FromBody] KeywordFilter filter) { return SafeExecute(() => { var finishNotice = NotificationTaskService.GetTaskFinishModel(Guid.Parse(filter.Parameter3)); var ids = ((string)filter.Parameter1).Split(','); var flags = ((string)filter.Parameter2).Split(','); if (ids == null || ids.Count() == 0) { return true; } var models = GetEntities(t => t.REVIEW_ID == Guid.Parse(filter.Parameter4)&&t.IMPLEMENTATION== OGStandardizationImplementation.未填写,new BaseFilter(filter.GetOrgId())); if (models == null) { throw new Exception("已提交无法修该数据!"); } for (var x = 0; x < ids.Count(); x++) { int status = flags[x] == "1" ? (int)OGStandardizationImplementation.已执行 : (int)OGStandardizationImplementation.未执行; Guid id = new Guid(ids[x]); var actionplan = models.FirstOrDefault(t => t.ID == id); if (actionplan == null) { throw new Exception("你已提交或无权限修改!"); } actionplan.IMPLEMENTATION = (OGStandardizationImplementation)status; } var count = models.Where(t => t.IMPLEMENTATION == OGStandardizationImplementation.未填写).Count(); T_OG_STANDARDIZATION_SYSTEM_REVIEW entity = null; if (count == 0) { entity = GetEntity(t => t.ID == Guid.Parse(filter.Parameter4) && t.STATUS == PFStandardStatus.Sign); entity.STATUS = PFStandardStatus.Archived; } UnifiedCommit(() => { if (entity != null) UpdateEntityNoCommit(entity); if (models != null && models.Any()) BantchSaveEntityNoCommit(models); if (finishNotice != null) UpdateEntityNoCommit(finishNotice); }); return true; }); } } }