2026-04-21 09:57:15 +08:00
|
|
|
|
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;
|
2026-04-23 16:34:15 +08:00
|
|
|
|
if (entity.END.HasValue && entity.END.Value < entity.START)
|
2026-04-21 09:57:15 +08:00
|
|
|
|
{
|
|
|
|
|
|
throw new Exception("结束日期不能小于开始日期!");
|
|
|
|
|
|
}
|
|
|
|
|
|
entity.START = entity.START.Date;
|
2026-04-23 16:34:15 +08:00
|
|
|
|
if (entity.END.HasValue)
|
|
|
|
|
|
{
|
|
|
|
|
|
entity.END = entity.END.Value.Date.AddDays(1).AddSeconds(-1);
|
|
|
|
|
|
}
|
2026-05-07 17:23:28 +08:00
|
|
|
|
if (Nav_Orgs != null && Nav_Orgs.Any())
|
2026-04-21 09:57:15 +08:00
|
|
|
|
{
|
2026-05-07 17:23:28 +08:00
|
|
|
|
foreach (var item in Nav_Orgs)
|
|
|
|
|
|
{
|
|
|
|
|
|
item.Nav_OrgSub = null;
|
|
|
|
|
|
}
|
2026-04-21 09:57:15 +08:00
|
|
|
|
}
|
|
|
|
|
|
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;
|
|
|
|
|
|
});
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|