mh_sms/APT.MicroApi/APT.SC.WebApi/Controllers/Api/LRController/5LawIntegrateUpdateController.cs

187 lines
9.2 KiB
C#
Raw Normal View History

2024-01-22 09:17:01 +08:00
using APT.BaseData.Domain.Entities;
using APT.BaseData.Domain.IServices.FM;
using APT.Infrastructure.Core;
using APT.MS.Domain.Entities.LR;
using APT.MS.Domain.Entities.SC.SC;
using APT.MS.Domain.Enums;
using APT.Utility;
using InfluxData.Net.InfluxDb.Models.Responses;
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/LRLawIntegrateUpdate")]
public class LawIntegrateUpdateController : AuthorizeApiController<T_LR_LAW_INTEGRATE_UPDATE>
{
IFMNotificationTaskService NotificationTaskService { get; set; }
public LawIntegrateUpdateController(IFMNotificationTaskService notificationTaskService)
{
NotificationTaskService = notificationTaskService;
}
/// <summary>
/// 保存
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
[HttpPost, Route("FullUpdate")]
public JsonActionResult<bool> FullUpdate([FromBody] T_LR_LAW_INTEGRATE_UPDATE entity)
{
return SafeExecute<bool>(() =>
{
var lrLawInstitution = new List<T_LR_LAW_INSTITUTION>();
var integrateUpdateDetail = entity.Nav_IntegrateUpdateDetail;
entity.Nav_IntegrateUpdateDetail = null;
T_FM_NOTIFICATION_TASK finishNotice = null;
List<T_FM_NOTIFICATION_TASK> sendNotices = null;
List<T_SC_STANDARD_CREATE> standards = new List<T_SC_STANDARD_CREATE>();
List<T_LR_LAW_SC_SYSTEM> addLawSystems = null;
List<T_LR_LAW_SC_SYSTEM> deleteSystems = null;
integrateUpdateDetail.ForEach(detail =>
{
if (detail.Nav_LRLawInstitution != null)
{
lrLawInstitution.AddRange(detail.Nav_LRLawInstitution);
detail.Nav_LRLawInstitution = null;
}
});
if (entity.PUBLISH != null && entity.PUBLISH.Equals("SaveAndNotify"))
{
if (entity.TaskID != Guid.Empty)
{
finishNotice = NotificationTaskService.GetTaskFinishModel(entity.TaskID, "LR009_SHOWPRINT");
}
//2023-07-31更新与融入时建立关联,先把之前的都删了,再新建
var newintegrateUpdateDetail = integrateUpdateDetail.Where(t => t.IS_DELETED == false);
var newlrLawInstitution = lrLawInstitution.Where(t => t.IS_DELETED == false);
var alllawids = newintegrateUpdateDetail.Select(t => t.LAW_ID);
deleteSystems = GetEntities<T_LR_LAW_SC_SYSTEM>(t => alllawids.Contains(t.LAW_ID), new BaseFilter(entity.ORG_ID)).ToList();
addLawSystems = new List<T_LR_LAW_SC_SYSTEM>();
foreach (var detail in newlrLawInstitution)
{
var newsystem = new T_LR_LAW_SC_SYSTEM();
newsystem.ID = Guid.NewGuid();
newsystem.LAW_ID = integrateUpdateDetail.FirstOrDefault(t => t.ID == detail.UPDATE_DETAIL_ID).LAW_ID;
newsystem.SC_SYSTEM_ID = (Guid)detail.SC_SYSTEM_ID;
newsystem.ORG_ID = entity.ORG_ID;
addLawSystems.Add(newsystem);
}
var updateDetail = newintegrateUpdateDetail.Where(t => t.UPDATE_STATUS == LRLawIntegrateUpdateStatusEnum.);
if (updateDetail != null && updateDetail.Any())
{
var lawids = updateDetail.Select(t => t.LAW_ID);
var laws = GetEntities<T_LR_LAW>(t => lawids.Contains(t.ID), new BaseFilter(entity.ORG_ID), new string[] { "Nav_User" });
var noticeTitles = new List<string>();
var noticeUserIds = new List<Guid>();
var noticeUserNames = new List<string>();
var noticeDataIds = new List<Guid>();
//取标准化最新code
KeywordFilter filter = new KeywordFilter();
filter.OrgId = entity.ORG_ID;
filter.Keyword = "0";
var code = GetFileCode(filter).Data;
if (string.IsNullOrEmpty(code))
throw new Exception("获取制度编号错误,请联系管理员");
else
{
if (code.Length <= 5)
throw new Exception("获取制度编号错误,请联系管理员");
}
int i = 0;
foreach (var law in laws)
{
// 取最后五位序列号
var serial = code.Substring(code.Length - 5);
//序列号+1不足五位补0
var num = (int.Parse(serial) + i).ToString().PadLeft(5, '0');
var temp = code.Substring(0, code.Length - 5);
var entityCode = temp + num;
T_SC_STANDARD_CREATE standard = new T_SC_STANDARD_CREATE();
standard.ID = Guid.NewGuid();
standard.USER_ID = law.USER_ID;
standard.ORG_ID = entity.ORG_ID;
standard.LAW_NAME = law.NAME;
standard.LAW_ID = law.ID;
standard.USER_ID = law.USER_ID;
standard.TYPE = SCType.;
standard.CODE = entityCode;
standards.Add(standard);
noticeUserIds.Add(law.USER_ID);
noticeUserNames.Add(law.Nav_User.NAME);
noticeTitles.Add("标准化制度创建");
noticeDataIds.Add(standard.ID);
i++;
}
sendNotices = NotificationTaskService.InsertUserNoticeTaskModels(noticeTitles, noticeDataIds, entity.ORG_ID, noticeUserIds, noticeUserNames, DateTime.Now, DateTime.Now.AddDays(10), 0, "SC046");
}
}
UnifiedCommit(() =>
{
UpdateEntityNoCommit(entity);
if (lrLawInstitution.Any())
BantchSaveEntityNoCommit(lrLawInstitution);
if (integrateUpdateDetail.Any())
BantchSaveEntityNoCommit(integrateUpdateDetail);
if (finishNotice != null)
UpdateEntityNoCommit(finishNotice);
if (sendNotices != null && sendNotices.Any())
BantchAddEntityNoCommit(sendNotices);
if (standards != null && standards.Any())
BantchAddEntityNoCommit(standards);
if (deleteSystems != null && deleteSystems.Any())
DeleteEntityNoCommit(deleteSystems);
if (addLawSystems != null && addLawSystems.Any())
BantchAddEntityNoCommit(addLawSystems);
});
return true;
});
}
/// <summary>
/// 自动生成CODE
/// </summary>
/// <param name="filter"></param>
[HttpPost, Route("GetFileCode")]
public JsonActionResult<string> GetFileCode([FromBody] KeywordFilter filter)
{
return SafeExecute<string>(() =>
{
var fileCode = "";
var nextCodeInfo = this.GetEntities<T_SC_STANDARD_CREATE>(t => !t.IS_DELETED && (int)t.TYPE == int.Parse(filter.Keyword), new BaseFilter(filter.OrgId)).OrderByDescending(t => t.CREATE_TIME).FirstOrDefault();
var year = DateTime.Now.Year;
var month = DateTime.Now.Month.PadLeft(2, '0');
var day = DateTime.Now.Day.PadLeft(2, '0');
var prefix = "ZD";
if (filter.Keyword == "1")
prefix = "ZRZ";
if (filter.Keyword == "2")
prefix = "GWGC";
if (filter.Keyword == "3")
prefix = "YJYA";
if (nextCodeInfo == null)
{
fileCode = prefix + year + month + day + "00001";
}
else
{
if (nextCodeInfo.CODE.Length <= 5)
{
fileCode = prefix + year + month + day + "00001";
}
//取最后五位序列号
var serial = nextCodeInfo.CODE.Substring(nextCodeInfo.CODE.Length - 5);
//序列号+1不足五位补0
var num = (int.Parse(serial) + 1).ToString().PadLeft(5, '0');
fileCode = prefix + year + month + day + num;
}
return fileCode;
});
}
}
}