138 lines
		
	
	
		
			5.8 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			138 lines
		
	
	
		
			5.8 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
using APT.BaseData.Domain.Entities;
 | 
						|
using APT.BaseData.Domain.Enums.PF;
 | 
						|
using APT.BaseData.Domain.IServices.FM;
 | 
						|
using APT.Infrastructure.Core;
 | 
						|
using APT.MS.Domain.Entities.LR;
 | 
						|
using APT.MS.Domain.Enums;
 | 
						|
using APT.Utility;
 | 
						|
using Microsoft.AspNetCore.Mvc;
 | 
						|
using System;
 | 
						|
using System.Collections.Generic;
 | 
						|
using System.Linq;
 | 
						|
using System.Web;
 | 
						|
 | 
						|
namespace APT.LR.WebApi.Controllers.Api
 | 
						|
{
 | 
						|
    [Route("api/LR/LRLawIntegrate")]
 | 
						|
    public class LawIntegrateController : AuthorizeApiController<T_LR_LAW_INTEGRATE>
 | 
						|
    {
 | 
						|
        IFMNotificationTaskService NotificationTaskService { get; set; }
 | 
						|
        public LawIntegrateController(IFMNotificationTaskService notificationTaskService)
 | 
						|
        {
 | 
						|
            NotificationTaskService = notificationTaskService;
 | 
						|
        }
 | 
						|
        /// <summary>
 | 
						|
        /// 保存
 | 
						|
        /// </summary>
 | 
						|
        /// <param name="id"></param>
 | 
						|
        /// <returns></returns>
 | 
						|
        [HttpPost, Route("FullUpdate")]
 | 
						|
        public JsonActionResult<bool> FullUpdate([FromBody] T_LR_LAW_INTEGRATE entity)
 | 
						|
        {
 | 
						|
            return SafeExecute<bool>(() =>
 | 
						|
            {
 | 
						|
                List<T_LR_LAW_SC_SYSTEM> lawSystems = new List<T_LR_LAW_SC_SYSTEM>();
 | 
						|
                T_FM_NOTIFICATION_TASK finishNotice = null;
 | 
						|
                var integrateDetails = entity.Nav_IntegrateDetail;
 | 
						|
                if (entity.PUBLISH != null && entity.PUBLISH.Equals("SaveAndNotify"))
 | 
						|
                {
 | 
						|
                    entity.STATUS = PFStandardStatus.Archived;
 | 
						|
                    if (!entity.RATE.StartsWith("100"))
 | 
						|
                    {
 | 
						|
                        throw new Exception("融入比例不为100%");
 | 
						|
                    }
 | 
						|
                    var lawsystemsAll = GetEntities<T_LR_LAW_SC_SYSTEM>(t => t.IS_DELETED == false, new BaseFilter(entity.ORG_ID));
 | 
						|
                    foreach (var item in integrateDetails)
 | 
						|
                    {
 | 
						|
                        var isSystem = lawsystemsAll.Where(t => t.LAW_ID == item.LAW_ID);
 | 
						|
                        if (!isSystem.Any())
 | 
						|
                        {
 | 
						|
                            T_LR_LAW_SC_SYSTEM lawsystem = new T_LR_LAW_SC_SYSTEM
 | 
						|
                            {
 | 
						|
                                ID = Guid.NewGuid(),
 | 
						|
                                LAW_ID = item.LAW_ID,
 | 
						|
                                ORG_ID = item.ORG_ID,
 | 
						|
                                SC_SYSTEM_ID = (Guid)item.SYSTEM_ID
 | 
						|
                            };
 | 
						|
                            lawSystems.Add(lawsystem);
 | 
						|
                        }
 | 
						|
                    }
 | 
						|
                    finishNotice = NotificationTaskService.GetTaskFinishModel(entity.TaskID);
 | 
						|
                }
 | 
						|
                entity.Nav_IntegrateDetail = null;
 | 
						|
                UnifiedCommit(() =>
 | 
						|
                {
 | 
						|
                    UpdateEntityNoCommit(entity);
 | 
						|
                    if (integrateDetails != null && integrateDetails.Any())
 | 
						|
                        BantchSaveEntityNoCommit(integrateDetails);
 | 
						|
                    if (lawSystems != null && lawSystems.Any())
 | 
						|
                        BantchSaveEntityNoCommit(lawSystems);
 | 
						|
                });
 | 
						|
 | 
						|
                return true;
 | 
						|
            });
 | 
						|
        }
 | 
						|
 | 
						|
        /// <summary>
 | 
						|
		/// 获得单条实体数据
 | 
						|
		/// </summary>
 | 
						|
		/// <param name="filter"></param>
 | 
						|
		/// <returns></returns>
 | 
						|
		[HttpPost, Route("Get")]
 | 
						|
        public JsonActionResult<T_LR_LAW_INTEGRATE> Get([FromBody] KeywordFilter filter)
 | 
						|
        {
 | 
						|
            return SafeExecute<T_LR_LAW_INTEGRATE>(() =>
 | 
						|
            {
 | 
						|
                var entity = GetEntity<T_LR_LAW_INTEGRATE>(null, filter);
 | 
						|
                if (entity == null)
 | 
						|
                {
 | 
						|
                    entity = new T_LR_LAW_INTEGRATE();
 | 
						|
                    entity.YEAR = DateTime.Now.Year;
 | 
						|
                }
 | 
						|
                double lawCount = 0;
 | 
						|
                double institutionsCount = 0;
 | 
						|
                BaseFilter baseFilter = new BaseFilter();
 | 
						|
                baseFilter.OrgType = FilterOrgTypeEnum.忽略组织;
 | 
						|
                var laws = GetEntities<T_LR_LAW>(t => t.LAW_STATUS == BSLawStatusEnum.现行, baseFilter, new string[] { "Nav_LawVersion", "Nav_LawSCSystem.Nav_SCSystem" }).ToList();
 | 
						|
                if (laws != null && laws.Count() > 0)
 | 
						|
                {
 | 
						|
                    List<T_LR_LAW_INTEGRATE_DETAIL> LawInstitutions = new List<T_LR_LAW_INTEGRATE_DETAIL>();
 | 
						|
                    laws.ForEach(t =>
 | 
						|
                    {
 | 
						|
                        lawCount++;
 | 
						|
                        T_LR_LAW_INTEGRATE_DETAIL lawInstitution = new T_LR_LAW_INTEGRATE_DETAIL();
 | 
						|
                        lawInstitution.LAW_ID = t.ID;
 | 
						|
                        lawInstitution.LAW_INTEGRATE_ID = entity.ID;
 | 
						|
                        if (t.Nav_LawSCSystem != null && t.Nav_LawSCSystem.Count() > 0)
 | 
						|
                        {
 | 
						|
                            var lawSCSystem = t.Nav_LawSCSystem.Where(li => li.Nav_SCSystem.FILE_STATUS == SCSystemFileStatus.有效).FirstOrDefault();
 | 
						|
                            if (lawSCSystem != null)
 | 
						|
                            {
 | 
						|
                                lawInstitution.SYSTEM_ID = lawSCSystem.SC_SYSTEM_ID;
 | 
						|
                                lawInstitution.Nav_Law = lawSCSystem.Nav_Law;
 | 
						|
                                lawInstitution.Nav_SCSystem = lawSCSystem.Nav_SCSystem;
 | 
						|
                                institutionsCount++;
 | 
						|
                            }
 | 
						|
                        }
 | 
						|
                        else
 | 
						|
                        {
 | 
						|
                            lawInstitution.Nav_Law = t;
 | 
						|
                        }
 | 
						|
                        LawInstitutions.Add(lawInstitution);
 | 
						|
                    });
 | 
						|
                    entity.Nav_IntegrateDetail = LawInstitutions;
 | 
						|
                }
 | 
						|
                if (lawCount == 0)
 | 
						|
                {
 | 
						|
                    entity.RATE = "0";
 | 
						|
                }
 | 
						|
                else
 | 
						|
                {
 | 
						|
                    entity.RATE = ((institutionsCount / lawCount) * 100).ToString("#0.00");
 | 
						|
                }
 | 
						|
 | 
						|
                return entity;
 | 
						|
            });
 | 
						|
        }
 | 
						|
    }
 | 
						|
} |