using APT.Infrastructure.Core; using APT.MS.Domain.Entities.FO; using APT.Utility; using Google.Protobuf.Collections; using Microsoft.AspNetCore.Mvc; using System; using System.Collections.Generic; using System.Linq; namespace APT.FO.WebApi.Controllers { /// /// 领导带班下井记录 /// [Route("api/FO/FOLeaderWellRecord")] public partial class LeaderWellRecordController : AuthorizeApiController { [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("060010"); var entity = this.GetEntity(id, "Nav_ApplyUser", "Nav_Company", "Nav_ApplyDepartment", "Nav_ProductionUnit", "Nav_Class", "Nav_Users.Nav_User", "Nav_Files.Nav_ImgFile.Nav_File"); if (entity != null) { var details = this.GetEntities(t => t.LEADER_WELL_RECORD_ID == entity.ID, new BaseFilter(entity.ORG_ID), "Nav_DetailFiles.Nav_ImgFile.Nav_File", "Nav_User", "Nav_PreUser", "Nav_AfterUser", "Nav_DetailAreas.Nav_Area").ToList(); entity.Nav_Details = details.OrderByDescending(t => t.START_DATE).ToList(); } return entity; }); } /// /// 新增修改 /// /// /// [HttpPost, Route("FullUpdate")] public JsonActionResult FullUpdate([FromBody] T_FO_LEADER_WELL_RECORD entity) { return SafeExecute(() => { var loginUserId = APT.Infrastructure.Api.AppContext.CurrentSession.UserID; var departmentId = APT.Infrastructure.Api.AppContext.CurrentSession.DepartmentID; entity.APPLY_USER_ID = loginUserId; entity.APPLY_DEPARTMENT_ID = departmentId; var details = entity.Nav_Details; if (details != null && details.Any()) { details = details.Where(t => !t.IS_DELETED).ToList(); } entity.Nav_Details = null; var userIds = this.GetEntities(t => t.LEADER_WELL_RECORD_ID == entity.ID, new BaseFilter(entity.ORG_ID)).Select(m => m.ID).ToList(); var fileIds = this.GetEntities(t => t.LEADER_WELL_RECORD_ID == entity.ID, new BaseFilter(entity.ORG_ID)).Select(m => m.ID).ToList(); var detailIds = this.GetEntities(t => t.LEADER_WELL_RECORD_ID == entity.ID, new BaseFilter(entity.ORG_ID)).Select(m => m.ID).ToList(); var detailFileIds = this.GetEntities(t => detailIds.Contains(t.LEADER_WELL_RECORD_DETAIL_ID), new BaseFilter(entity.ORG_ID)).Select(m => m.ID).ToList(); var detailAreaIds = this.GetEntities(t => detailIds.Contains(t.LEADER_WELL_RECORD_DETAIL_ID), new BaseFilter(entity.ORG_ID)).Select(m => m.ID).ToList(); var userList = new List(); var fileList = new List(); var detailList = new List(); var detailFileList = new List(); var detailAreaList = new List(); if (details != null && details.Any()) { foreach (var item in details) { if (item.Nav_DetailFiles != null && item.Nav_DetailFiles.Any()) { foreach (var item2 in item.Nav_DetailFiles) { item2.ORG_ID = entity.ORG_ID; item2.LEADER_WELL_RECORD_DETAIL_ID = item.ID; item2.Nav_ImgFile = null; detailFileList.Add(item2); } } if (item.Nav_DetailAreas != null && item.Nav_DetailAreas.Any()) { foreach (var item2 in item.Nav_DetailAreas) { item2.ORG_ID = entity.ORG_ID; item2.LEADER_WELL_RECORD_DETAIL_ID = item.ID; item2.Nav_Area = null; detailAreaList.Add(item2); } } item.ORG_ID = entity.ORG_ID; item.LEADER_WELL_RECORD_ID = entity.ID; item.Nav_DetailFiles = null; detailList.Add(item); } } var files = entity.Nav_Files; if (files != null && files.Any()) { files = files.Where(t => !t.IS_DELETED).ToList(); } entity.Nav_Files = null; if (files != null && files.Any()) { foreach (var item in files) { item.ORG_ID = entity.ORG_ID; item.LEADER_WELL_RECORD_ID = entity.ID; item.Nav_ImgFile = null; fileList.Add(item); } } var users = entity.Nav_Users; if (users != null && users.Any()) { users = users.Where(t => !t.IS_DELETED).ToList(); } entity.Nav_Users = null; if (users != null && users.Any()) { foreach (var item in users) { item.ORG_ID = entity.ORG_ID; item.LEADER_WELL_RECORD_ID = entity.ID; item.Nav_User = null; userList.Add(item); } } if (entity.PUBLISH != null && entity.PUBLISH.Equals("SaveAndNotify")) { if (entity.STATUS == MS.Domain.Enums.FOStatusEnum.Draft) { foreach (var user in users) { if (user.USER_ID == loginUserId) { user.DEAL_STATUS = MS.Domain.Enums.FOUserShiftStatusEnum.已处理; } } var sendUserIds= users.Where(t=>t.USER_ID != loginUserId && t.USER_ID!=null).Select(m=>m.USER_ID).Distinct().ToList(); } } this.UnifiedCommit(() => { if (detailFileIds != null && detailFileIds.Any()) this.BantchDeleteEntityNoCommit(detailFileIds); if (detailAreaIds != null && detailAreaIds.Any()) this.BantchDeleteEntityNoCommit(detailAreaIds); if (detailIds != null && detailIds.Any()) this.BantchDeleteEntityNoCommit(detailIds); if (fileIds != null && fileIds.Any()) this.BantchDeleteEntityNoCommit(fileIds); if (userIds != null && userIds.Any()) this.BantchDeleteEntityNoCommit(userIds); if (entity != null) UpdateEntityNoCommit(entity); if (detailList != null && detailList.Any()) this.BantchSaveEntityNoCommit(detailList); if (detailFileList != null && detailFileList.Any()) this.BantchSaveEntityNoCommit(detailFileList); if (detailAreaList != null && detailAreaList.Any()) this.BantchSaveEntityNoCommit(detailAreaList); if (userList != null && userList.Any()) this.BantchSaveEntityNoCommit(userList); if (fileList != null && fileList.Any()) this.BantchSaveEntityNoCommit(fileList); }); return true; }); } } }