检查内容导入

This commit is contained in:
何美荣 2025-10-20 15:39:26 +08:00
parent 6e8f505d24
commit 46a1ca12d8
3 changed files with 134 additions and 2 deletions

View File

@ -12373,6 +12373,8 @@ builder.HasOne(t => t.Nav_Law).WithMany().HasForeignKey(t => t.LAW_ID).OnDelete(
builder.Property(t => t.DESCREPTION).HasMaxLength(500);
builder.Property(t => t.DEMAND).HasMaxLength(500);
builder.Ignore(t => t.QUESTION_LEVEL_SHOW);
builder.Ignore(t => t.CHECKCONTENT);
builder.Ignore(t => t.PRODUCTION_UNIT_ID);
}
}
#endregion

View File

@ -68,6 +68,15 @@ namespace APT.MS.Domain.Entities.SK
/// </summary>
[Description("排序号")]
[FormFieldEdit]
public int NUM { get; set; }
public int NUM { get; set; }
[Description("检查内容")]
[DataFieldIngore]
public string CHECKCONTENT { get; set; }
[Description("生产单元")]
[DataFieldIngore]
public Guid? PRODUCTION_UNIT_ID { get; set; }
}
}

View File

@ -10,12 +10,15 @@ using ICSharpCode.SharpZipLib.Core;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.DependencyModel;
using NPOI.SS.Formula.Functions;
using NPOI.Util;
using Org.BouncyCastle.Asn1.Ess;
using System;
using System.Collections.Generic;
using System.Data;
using System.IO;
using System.Linq;
using System.Reflection.Metadata;
using Ubiety.Dns.Core;
namespace APT.SK.WebApi.Controllers.Api
@ -152,7 +155,7 @@ namespace APT.SK.WebApi.Controllers.Api
startRowIndexs.Add(0, 1);//根据Excel格式数据赋值
var dataTables = FileUtils.ReadExcelByOledb(filePath, startRowIndexs);
string Msg = string.Empty;
isOK = InsertModel(dataTables.Tables[0], orgId, ref Msg);
isOK = InsertModel2(dataTables.Tables[0], orgId, ref Msg);
try
{
@ -327,6 +330,124 @@ namespace APT.SK.WebApi.Controllers.Api
Msg = "导入成功!";
}
return true;
}
/// <summary>
/// 导入
/// </summary>
/// <param name="dtSource"></param>
/// <param name="orgId"></param>
/// <param name="Msg"></param>
/// <param name="rowIndex"></param>
/// <returns></returns>
/// <exception cref="Exception"></exception>
public bool InsertModel2(DataTable dtSource, Guid? orgId, ref string Msg, int rowIndex = 1)
{
var userId = APT.Infrastructure.Api.AppContext.CurrentSession.UserID;
if (dtSource == null || dtSource.Rows.Count < rowIndex)
{
Msg = "未获取到导入数据";
throw new Exception(Msg);
}
int rowAll = dtSource.Rows.Count;
if (rowAll == 1)
{
throw new Exception("导入必须两条以上,一条请直接新增");
}
List<T_SK_CHECK_CONTENTS> contents = new List<T_SK_CHECK_CONTENTS>();
List<T_SK_CHECK_QUESTION> qustions = new List<T_SK_CHECK_QUESTION>();
var baseFilter = new BaseFilter(orgId);
var productionUnits = this.GetEntities<T_FM_USER_PRODUCTION_UNIT_SET>(i => i.IS_DELETED == false, baseFilter);
var oldContents = this.GetEntities<T_SK_CHECK_CONTENTS>(i => i.IS_DELETED == false, baseFilter, "Nav_ListCheckQuestion");
for (int i = 0; i < rowAll; i++)
{
if (!string.IsNullOrEmpty(dtSource.Rows[i][0].ToString().Trim()))
{
var unit = productionUnits.FirstOrDefault(t => t.NAME == dtSource.Rows[i][0].ToString().Trim());
var first = oldContents.FirstOrDefault(x =>x.PRODUCTION_UNIT_ID == unit?.ID && x.CHECKCONTENT == dtSource.Rows[i][1].ToString().Trim());
if (first != null)//旧表已存在数据
{
T_SK_CHECK_QUESTION content = new T_SK_CHECK_QUESTION();
content.ORG_ID = orgId;
content.CHECKCONTENT = dtSource.Rows[i][1].ToString().Trim();
content.DESCREPTION = dtSource.Rows[i][2].ToString().Trim();
content.QUESTION_LEVEL_SHOW = dtSource.Rows[i][3].ToString().Trim();
content.QUESTION_LEVEL = content.QUESTION_LEVEL_SHOW == "重大" ? SKHiddenLevel.Major : SKHiddenLevel.General;
content.DEMAND = dtSource.Rows[i][4].ToString().Trim();
content.PRODUCTION_UNIT_ID = unit?.ID;
content.CHECK_CONTENTS_ID = first.ID;
qustions.Add(content);
}
else
{
T_SK_CHECK_QUESTION content = new T_SK_CHECK_QUESTION();
content.ORG_ID = orgId;
content.CHECKCONTENT = dtSource.Rows[i][1].ToString().Trim();
content.DESCREPTION = dtSource.Rows[i][2].ToString().Trim();
content.QUESTION_LEVEL_SHOW = dtSource.Rows[i][3].ToString().Trim();
content.QUESTION_LEVEL = content.QUESTION_LEVEL_SHOW == "重大" ? SKHiddenLevel.Major : SKHiddenLevel.General;
content.DEMAND = dtSource.Rows[i][4].ToString().Trim();
content.PRODUCTION_UNIT_ID = unit?.ID;
qustions.Add(content);
}
}
}
if (qustions != null && qustions.Any())
{
var contentList2 = qustions.Where(m => m.CHECK_CONTENTS_ID != null).GroupBy(t => new { t.CHECK_CONTENTS_ID, t.PRODUCTION_UNIT_ID, t.CHECKCONTENT }).Distinct().ToList();
if (contentList2 != null && contentList2.Any())
{
foreach (var item in contentList2)
{
var qus = qustions.Where(t => t.CHECK_CONTENTS_ID == item.Key.CHECK_CONTENTS_ID && t.PRODUCTION_UNIT_ID == item.Key.PRODUCTION_UNIT_ID && t.CHECKCONTENT == item.Key.CHECKCONTENT).ToList();
var j = 1;
foreach (var qu in qus)
{
qu.NUM = j;
j++;
}
}
}
var contentList = qustions.Where(m=>m.CHECK_CONTENTS_ID==null).GroupBy(t => new { t.PRODUCTION_UNIT_ID, t.CHECKCONTENT }).Distinct().ToList();
if (contentList != null && contentList.Any())
{
foreach (var item in contentList)
{
T_SK_CHECK_CONTENTS content = new T_SK_CHECK_CONTENTS();
content.ORG_ID = orgId;
content.PRODUCTION_UNIT_ID = item.Key.PRODUCTION_UNIT_ID;
content.CHECKCONTENT = item.Key.CHECKCONTENT;
contents.Add(content);
var qus = qustions.Where(t => t.PRODUCTION_UNIT_ID == item.Key.PRODUCTION_UNIT_ID && t.CHECKCONTENT == item.Key.CHECKCONTENT).ToList();
var j = 1;
foreach (var qu in qus)
{
qu.CHECK_CONTENTS_ID = content.ID;
qu.NUM = j;
j++;
}
}
}
}
if (!string.IsNullOrEmpty(Msg))
{
throw new Exception(Msg);
}
else
{
UnifiedCommit(() =>
{
if (contents != null && contents.Any())
BantchSaveEntityNoCommit(contents);
if (qustions != null && qustions.Any())
BantchSaveEntityNoCommit(qustions);
});
Msg = "导入成功!";
}
return true;
}
}
}