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.Enums.PF; using APT.BaseData.Domain.IServices.OP; using Microsoft.Data.SqlClient; namespace APT.PF.WebApiControllers.Api.PF { /// /// /// [Route("api/PF/PFAnnourcement")] public class PFAnnourcementController : AuthorizeApiController { IOPTenantDBConnService OPTenantDBConnService { get; set; } /// /// /// /// public PFAnnourcementController(IOPTenantDBConnService opTenantDBConnService) { OPTenantDBConnService = opTenantDBConnService; } /// /// 更新或新增数据 /// /// 对象实体 /// [HttpPost, Route("FullUpdate")] public JsonActionResult FullUpdate([FromBody] T_PF_ANNOURCEMENT entity) { return SafeExecute(() => { if (!entity.ORG_ID.HasValue) { throw new Exception("获取信息有误!"); } if (entity.ORG_ID.Value.ToString() == FilePathHead.JY.GetDescription()) { entity.ISHEAD = true; } var Nav_Files = entity.Nav_Files; entity.Nav_Files = null; var Nav_Orgs = entity.Nav_Orgs; entity.Nav_Orgs = null; if (entity.END.HasValue && entity.END.Value < entity.START) { throw new Exception("结束日期不能小于开始日期!"); } entity.START = entity.START.Date; if (entity.END.HasValue) { entity.END = entity.END.Value.Date.AddDays(1).AddSeconds(-1); } if (Nav_Orgs != null && Nav_Orgs.Any()) { foreach (var item in Nav_Orgs) { item.Nav_OrgSub = null; } } this.UnifiedCommit(() => { UpdateEntityNoCommit(entity); if (Nav_Files != null && Nav_Files.Any()) BantchSaveEntityNoCommit(Nav_Files); if (Nav_Orgs != null && Nav_Orgs.Any()) BantchSaveEntityNoCommit(Nav_Orgs); }); IEnumerable listFileImgs = null; IEnumerable listFile = null; if (Nav_Files != null && Nav_Files.Count() > 0) { var listFileID = Nav_Files.Where(e => e.IMG_FILE_ID.HasValue).Select(e => e.IMG_FILE_ID.Value); listFileImgs = GetEntities(e => listFileID.Contains(e.ID), null, null); var listFileIDs = listFileImgs.Where(e => e.FILE_ID.HasValue).Select(e => e.FILE_ID.Value); listFile = GetEntities(e => listFileIDs.Contains(e.ID), null, null); } if (entity.ISHEAD && entity.ISPUBLISH && Nav_Orgs != null && Nav_Orgs.Count() > 0) { //集团 发布了 同步到子公司 entity.Nav_Orgs = null; entity.Nav_Files = null; T_PF_ANNOURCEMENT modelCheck = null; List listSubFilesAdd = null; List listSubImgAdd = null; List listSubFileAdd = null; List listSubFilesUp = null; List listSubImgUp = null; List listSubFileUp = null; List listSubFilesDB = null; List listSubImgDB = null; List listSubFileDB = null; foreach (var item in Nav_Orgs) { if (item.IS_DELETED) { continue; } if (Nav_Files != null && Nav_Files.Count() > 0) { foreach (var itemf in Nav_Files) { itemf.ORG_ID = item.ORG_ID_SUB; } foreach (var itemfm in listFileImgs) { itemfm.ORG_ID = item.ORG_ID_SUB; itemfm.Nav_File = null; } if (listFile != null && listFile.Count() > 0) { foreach (var itemf in listFile) { itemf.ORG_ID = item.ORG_ID_SUB; } } } try { string strConn = OPTenantDBConnService.GetConnByORGID(item.ORG_ID_SUB); if (string.IsNullOrEmpty(strConn)) { continue; } using (var context = new MigrationContext(strConn)) { entity.ISHEAD = true; entity.ORG_ID = item.ORG_ID_SUB; modelCheck = context.GetEntity(e => e.ID == entity.ID, null, "Nav_Files.Nav_ImgFile.Nav_File"); try { if (modelCheck == null) { //添加信息 if (entity.Nav_Files != null && entity.Nav_Files.Count() > 0) { entity.Nav_Files = null; } context.Add(entity); if (Nav_Files != null && Nav_Files.Count() > 0) { foreach (var itemf in Nav_Files) { itemf.Nav_ImgFile = null; itemf.Nav_Annourcement = null; } foreach (var itemf in listFile) { itemf.Nav_ImgFiles = null; } context.AddRange(Nav_Files); context.AddRange(listFileImgs); context.AddRange(listFile); } context.SaveChanges(); } else { //修改 判断附件哪些有哪些没有 if (modelCheck.Nav_Files != null && modelCheck.Nav_Files.Count() > 0) { listSubFilesDB = modelCheck.Nav_Files.ToList(); listSubImgDB = new List(); listSubFileDB = new List(); foreach (var itemDb in listSubFilesDB) { listSubImgDB.Add(itemDb.Nav_ImgFile); } foreach (var itemDB in listSubImgDB) { listSubFileDB.Add(itemDB.Nav_File); } foreach (var itemd in listSubImgDB) { itemd.Nav_File = null; } foreach (var itemd in listSubFilesDB) { itemd.Nav_ImgFile = null; } foreach (var itemd in listSubFileDB) { itemd.Nav_ImgFiles = null; } } else { listSubFilesDB = null; listSubImgDB = null; listSubFileDB = null; } if ((Nav_Files != null && Nav_Files.Count() > 0) && (listSubFilesDB == null || listSubFilesDB.Count() < 1)) { context.Update(entity); //直接添加 context.AddRange(Nav_Files); context.AddRange(listFileImgs); context.AddRange(listFile); context.SaveChanges(); } else if ((Nav_Files != null && Nav_Files.Count() > 0) && listSubFilesDB != null && listSubFilesDB.Count() > 0) { //对比 DB 和传入值 //原来的和现在的做对比 listSubFilesAdd = new List(); listSubImgAdd = new List(); listSubFileAdd = new List(); listSubFilesUp = new List(); listSubImgUp = new List(); listSubFileUp = new List(); foreach (var itemI in Nav_Files) { var checkF = listSubFilesDB.FirstOrDefault(e => e.ID == itemI.ID); if (checkF == null) { listSubFilesAdd.Add(itemI); } else { listSubFilesUp.Add(itemI); } } foreach (var itemI in listFileImgs) { var checkImg = listSubImgDB.FirstOrDefault(e => e.ID == itemI.ID); if (checkImg == null) { listSubImgAdd.Add(itemI); } else { listSubImgUp.Add(itemI); } } foreach (var itemI in listFile) { var checkF = listSubFileDB.FirstOrDefault(e => e.ID == itemI.ID); if (checkF == null) { listSubFileAdd.Add(itemI); } else { listSubFileUp.Add(itemI); } } entity.Nav_Files = null; context.Update(entity); if (listSubFilesAdd != null && listSubFilesAdd.Count > 0) { foreach (var itema in listSubFilesAdd) { itema.Nav_Annourcement = null; } context.AddRange(listSubFilesAdd); } if (listSubImgAdd != null && listSubImgAdd.Count > 0) context.AddRange(listSubImgAdd); if (listSubFileAdd != null && listSubFileAdd.Count > 0) context.AddRange(listSubFileAdd); if (listSubImgUp != null && listSubImgUp.Count > 0) context.UpdateRange(listSubImgUp); if (listSubFileUp != null && listSubFileUp.Count > 0) context.UpdateRange(listSubFileUp); if (listSubFilesUp != null && listSubFilesUp.Count > 0) { foreach (var itemf in listSubFilesUp) { itemf.Nav_Annourcement = null; itemf.Nav_ImgFile = null; } context.UpdateRange(listSubFilesUp); } context.SaveChanges(); } else { //把原来的删除 context.Update(entity); if (listSubFilesDB != null && listSubFilesDB.Count > 0) { if (listSubFilesDB != null && listSubFilesDB.Count > 0) { foreach (var itemD in listSubFilesDB) { itemD.IS_DELETED = true; } context.UpdateRange(listSubFilesDB); } if (listSubImgDB != null && listSubImgDB.Count > 0) { foreach (var itemD in listSubImgDB) { itemD.IS_DELETED = true; } context.UpdateRange(listSubImgDB); } if (listSubFileDB != null && listSubFileDB.Count > 0) { foreach (var itemD in listSubFileDB) { itemD.IS_DELETED = true; } context.UpdateRange(listSubFileDB); } } context.SaveChanges(); } } } catch (Exception ex) { } } } catch (Exception ex) { } } } return true; }); } } }