mh_jy_safe/APT.MicroApi/APT.PF.WebApi/Controllers/Api/PFNoticeController.cs
2025-09-23 14:41:35 +08:00

137 lines
5.6 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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
{
/// <summary>
/// 通知
/// </summary>
[Route("api/PF/PFNotice")]
public class PFNoticeController : AuthorizeApiController<T_PF_NOTICE>
{
IOPTenantDBConnService ConnService { get; set; }
/// <summary>
///
/// </summary>
/// <param name="connService"></param>
public PFNoticeController(IOPTenantDBConnService connService)
{
ConnService = connService;
}
/// <summary>
/// 更新或新增数据
/// </summary>
/// <param name="entity">对象实体</param>
/// <returns></returns>
[HttpPost, Route("FullUpdate")]
public JsonActionResult<bool> 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<T_FM_USER>(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<T_PF_IMG_FILE> IlistImgs = null;
List<T_PF_FILE> listFile = null;
if (Files != null && Files.Count() > 0)
{
var listIMGIDS = Files.Select(e => e.IMG_FILE_ID);
IlistImgs = GetEntities<T_PF_IMG_FILE>(e => listIMGIDS.Contains(e.ID), null, "Nav_File");
listFile = new List<T_PF_FILE>();
foreach (var item in IlistImgs)
{
listFile.Add(item.Nav_File);
item.Nav_File = null;
}
}
Dictionary<Guid, string> 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;
});
}
}
}