137 lines
		
	
	
		
			5.6 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			137 lines
		
	
	
		
			5.6 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.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;
 | 
						||
            });
 | 
						||
        }
 | 
						||
    }
 | 
						||
}
 |