mh_jy_safe/APT.MicroApi/APT.PF.WebApi/Controllers/Api/PFAnnourcementController.cs

341 lines
18 KiB
C#

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
{
/// <summary>
///
/// </summary>
[Route("api/PF/PFAnnourcement")]
public class PFAnnourcementController : AuthorizeApiController<T_PF_ANNOURCEMENT>
{
IOPTenantDBConnService OPTenantDBConnService { get; set; }
/// <summary>
///
/// </summary>
/// <param name="opTenantDBConnService"></param>
public PFAnnourcementController(IOPTenantDBConnService opTenantDBConnService)
{
OPTenantDBConnService = opTenantDBConnService;
}
/// <summary>
/// 更新或新增数据
/// </summary>
/// <param name="entity">对象实体</param>
/// <returns></returns>
[HttpPost, Route("FullUpdate")]
public JsonActionResult<bool> 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 < entity.START)
{
throw new Exception("结束日期不能小于开始日期!");
}
entity.START = entity.START.Date;
entity.END = entity.END.Date.AddDays(1).AddSeconds(-1);
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<T_PF_IMG_FILE> listFileImgs = null;
IEnumerable<T_PF_FILE> 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<T_PF_IMG_FILE>(e => listFileID.Contains(e.ID), null, null);
var listFileIDs = listFileImgs.Where(e => e.FILE_ID.HasValue).Select(e => e.FILE_ID.Value);
listFile = GetEntities<T_PF_FILE>(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<T_PF_ANNOURCEMENT_FILE> listSubFilesAdd = null;
List<T_PF_IMG_FILE> listSubImgAdd = null;
List<T_PF_FILE> listSubFileAdd = null;
List<T_PF_ANNOURCEMENT_FILE> listSubFilesUp = null;
List<T_PF_IMG_FILE> listSubImgUp = null;
List<T_PF_FILE> listSubFileUp = null;
List<T_PF_ANNOURCEMENT_FILE> listSubFilesDB = null;
List<T_PF_IMG_FILE> listSubImgDB = null;
List<T_PF_FILE> 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<T_PF_ANNOURCEMENT>(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<T_PF_IMG_FILE>();
listSubFileDB = new List<T_PF_FILE>();
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<T_PF_ANNOURCEMENT_FILE>();
listSubImgAdd = new List<T_PF_IMG_FILE>();
listSubFileAdd = new List<T_PF_FILE>();
listSubFilesUp = new List<T_PF_ANNOURCEMENT_FILE>();
listSubImgUp = new List<T_PF_IMG_FILE>();
listSubFileUp = new List<T_PF_FILE>();
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;
});
}
}
}