mh_sms/APT.MicroApi/APT.SC.WebApi/Controllers/Api/LRController/1DemandDistinguishController.cs
2024-01-22 09:17:01 +08:00

147 lines
7.0 KiB
C#

using APT.BaseData.Domain.Entities;
using APT.BaseData.Domain.Enums;
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;
namespace APT.LR.WebApi.Controllers.Api
{
[Route("api/LR/LRDemandDistinguish")]
public class DemandDistinguishController : AuthorizeApiController<T_LR_DEMAND_DISTINGUISH>
{
IFMNotificationTaskService NotificationTaskService { get; set; }
public DemandDistinguishController(IFMNotificationTaskService notificationTaskService)
{
NotificationTaskService = notificationTaskService;
}
/// <summary>
/// 保存
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
[HttpPost, Route("FullUpdate")]
public JsonActionResult<bool> FullUpdate([FromBody] T_LR_DEMAND_DISTINGUISH entity)
{
return SafeExecute<bool>(() =>
{
T_FM_NOTIFICATION_TASK finishNotice = null;
if (DateTime.Now > entity.END_TIME)
{
finishNotice = NotificationTaskService.GetTaskFinishModel(entity.TaskID, "LR001_SHOWPRINT");
UpdateEntity(finishNotice);
throw new Exception("已过截止时间!");
}
if (entity.Nav_DemandLaw.Count() == 0)
{
throw new Exception("请对法律法规识别再进行提交!");
}
var userID = APT.Infrastructure.Api.AppContext.CurrentSession.UserID;
if (entity.USER_ID.Equals(Guid.Empty))
{
entity.USER_ID = (Guid)userID;
}
if (entity.YEARS == 0)
{
entity.YEARS = DateTime.Now.Year;
}
if (entity.DISTINGUISH_TIME==null)
{
entity.DISTINGUISH_TIME = DateTime.Now;
}
BaseFilter basefilter = new BaseFilter(entity.ORG_ID);
List<T_LR_OTHER_DISTINGUISH> otherDistinguishList = new List<T_LR_OTHER_DISTINGUISH>();
List<T_LR_DEMAND_USER> DemandUserList = new List<T_LR_DEMAND_USER>();
var demandLaw = entity.Nav_DemandLaw;
var demandOther = entity.Nav_DemandOther;
var demandType = entity.Nav_DemandTypes;
basefilter.SelectField = new string[] { "ID", "NAME" };
var demandIds = demandType.Where(x => x.IS_DELETED == false).Select(x => x.DEMANDTYPE_ID);
var alldemands = GetEntities<T_LR_LAW_TYPE>(t => demandIds.Contains(t.ID), basefilter);
foreach (var item in demandType)
{
item.Nav_DemandType = null;
}
foreach (var demand in alldemands)
{
entity.demandTypeStr += demand.NAME+",";
}
entity.Nav_DemandLaw = null;
entity.Nav_DemandOther = null;
entity.Nav_DemandTypes = null;
if (demandOther != null && demandOther.Count() > 0)
{
var otherDistinguishs = GetEntities<T_LR_OTHER_DISTINGUISH>(t => t.IS_DELETED == false, new BaseFilter(entity.ORG_ID)).ToList();
demandOther.ForEach(t =>
{
t.Nav_DemandDistinguish = null;
if (t.NAME != null)
{
var otherDistinguish = otherDistinguishs.Where(o => o.NAME == t.NAME).FirstOrDefault();
if (otherDistinguish == null)//不存在则需要新增
{
T_LR_OTHER_DISTINGUISH newOtherDistinguish = new T_LR_OTHER_DISTINGUISH();
newOtherDistinguish.ID = Guid.NewGuid();
newOtherDistinguish.NAME = t.NAME;
newOtherDistinguish.ORG_ID = entity.ORG_ID;
otherDistinguishList.Add(newOtherDistinguish);
t.OTHER_ID = newOtherDistinguish.ID;
T_LR_DEMAND_USER user = new T_LR_DEMAND_USER();
user.ID = Guid.NewGuid();
user.OTHER_ID = t.OTHER_ID;
user.USER_ID = userID.Value;
user.ORG_ID = entity.ORG_ID;
DemandUserList.Add(user);
}
else//存在则需要判断是否新增当前用户到其他识别表中
{
t.OTHER_ID = otherDistinguish.ID;
var demand = GetEntity<T_LR_DEMAND_USER>(d => d.USER_ID == userID && d.OTHER_ID == t.OTHER_ID, new BaseFilter());
if (demand == null) //没有该用户则需要新增
{
T_LR_DEMAND_USER user = new T_LR_DEMAND_USER();
user.ID = Guid.NewGuid();
user.OTHER_ID = t.OTHER_ID;
user.USER_ID = userID.Value;
user.ORG_ID = entity.ORG_ID;
DemandUserList.Add(user);
}
}
}
});
}
if (entity.PUBLISH != null && entity.PUBLISH.Equals("SaveAndNotify"))
{
entity.DISTINGUISH_TYPE = LRDistinguishEnum.;
if (entity.TaskID != Guid.Empty)
{
finishNotice = NotificationTaskService.GetTaskFinishModel(entity.TaskID, "LR001_SHOWPRINT");
}
}
UnifiedCommit(() =>
{
UpdateEntityNoCommit(entity);
if (demandLaw != null && demandLaw.Any())
BantchSaveEntityNoCommit(demandLaw);
if (demandOther != null && demandOther.Any())
BantchSaveEntityNoCommit(demandOther);
if (demandType != null && demandType.Any())
BantchSaveEntityNoCommit(demandType);
//插入其他识别用户
if (otherDistinguishList.Any())
BantchSaveEntityNoCommit(otherDistinguishList);
if (DemandUserList.Any())
BantchSaveEntityNoCommit(DemandUserList);
if (finishNotice != null)
UpdateEntityNoCommit(finishNotice);
});
return true;
});
}
}
}