using APT.BaseData.Domain.Entities; using APT.BaseData.Domain.IServices; using APT.Infrastructure.Core; using Microsoft.AspNetCore.Mvc; using System; using System.Collections.Generic; using System.Linq; using APT.Utility; using APT.Infrastructure.Api; using APT.Migrations; using APT.BaseData.Domain.Entities.OP; using APT.BaseData.Domain.Enums.OP; using APT.BaseData.Domain.Entities.FM; using APT.BaseData.Domain.IServices.OP; using APT.BaseData.Domain.Enums.PF; namespace APT.PF.WebApiControllers.Api.PF { /// /// 通知 /// [Route("api/PF/PFNotice")] public class PFNoticeController : AuthorizeApiController { IOPTenantDBConnService ConnService { get; set; } /// /// /// /// public PFNoticeController(IOPTenantDBConnService connService) { ConnService = connService; } /// /// 更新或新增数据 /// /// 对象实体 /// [HttpPost, Route("FullUpdate")] public JsonActionResult FullUpdate([FromBody] T_PF_NOTICE entity) { return SafeExecute(() => { //如果是总部 同步修改 子公司 var Files = entity.Nav_Files; entity.Nav_Files = null; entity.CREATER_ID = APT.Infrastructure.Api.AppContext.CurrentSession.UserID; if (entity.CREATER_ID.HasValue) { var userLogin = GetEntity(entity.CREATER_ID.Value, "Nav_Department"); entity.CREATE_NAME = userLogin.NAME;//冗余赋值 给查看 entity.DEPARTMENT_ID = userLogin.DEPARTMENT_ID; entity.CREATE_DEPARTMENT = userLogin.Nav_Department?.NAME;//冗余赋值 给子公司查看 } this.UnifiedCommit(() => { UpdateEntityNoCommit(entity); if (Files != null && Files.Any()) BantchSaveEntityNoCommit(Files); }); try { if (entity.ISTOCHILE && entity.STATUS == PFStandardStatus.Archived) { IEnumerable IlistImgs = null; List listFile = null; if (Files != null && Files.Count() > 0) { var listIMGIDS = Files.Select(e => e.IMG_FILE_ID); IlistImgs = GetEntities(e => listIMGIDS.Contains(e.ID), null, "Nav_File"); listFile = new List(); foreach (var item in IlistImgs) { listFile.Add(item.Nav_File); item.Nav_File = null; } } Dictionary dicORGCONN = ConnService.GetConnDictionary(entity.ORG_ID); entity.DEPARTMENT_ID = null; //组织清空 子公司不会有对应的ID 或者改为公司ID? foreach (var itemConn in dicORGCONN) { using (var context = new MigrationContext(itemConn.Value)) { entity.ISHEAD = true; entity.ORG_ID = itemConn.Key; if (Files != null && Files.Any()) { foreach (var item in Files) { item.ORG_ID = itemConn.Key; } foreach (var item in IlistImgs) { item.ORG_ID = itemConn.Key; } foreach (var item in listFile) { item.ORG_ID = itemConn.Key; } } try { context.AddEntity(entity); if (Files != null && Files.Any()) { context.AddEntities(Files); context.AddEntities(IlistImgs); context.AddEntities(listFile); } context.SaveChanges(); } catch (Exception ex) { context.Update(entity); if (Files != null && Files.Any()) { context.UpdateEntities(Files); context.UpdateEntities(IlistImgs); context.UpdateEntities(listFile); } } } } } } catch { } return true; }); } } }