From b59b0e3516caee784ab9aa74e5b9dd1dfbffaa2d Mon Sep 17 00:00:00 2001
From: yl <ykxkd@outlook.com>
Date: 星期一, 18 十二月 2023 19:29:15 +0800
Subject: [PATCH] 1.修改Excel导入时双模板数据校验方法
---
VueWebCoreApi/Controllers/ImportExcelController.cs | 2 +-
VueWebCoreApi/Tools/ImportExcel.cs | 45 +++++++++++++++++++++++++++------------------
2 files changed, 28 insertions(+), 19 deletions(-)
diff --git a/VueWebCoreApi/Controllers/ImportExcelController.cs b/VueWebCoreApi/Controllers/ImportExcelController.cs
index e2ef326..d535b0d 100644
--- a/VueWebCoreApi/Controllers/ImportExcelController.cs
+++ b/VueWebCoreApi/Controllers/ImportExcelController.cs
@@ -15,7 +15,7 @@
[ApiExplorerSettings(GroupName = "Excel瀵煎叆")]
[ApiController]
[Route("api/[controller]")]
- //[ChannelActionFilter]
+ [ChannelActionFilter]
public class ImportExcelController : Controller
{
diff --git a/VueWebCoreApi/Tools/ImportExcel.cs b/VueWebCoreApi/Tools/ImportExcel.cs
index 5a4cb36..fca0173 100644
--- a/VueWebCoreApi/Tools/ImportExcel.cs
+++ b/VueWebCoreApi/Tools/ImportExcel.cs
@@ -1297,29 +1297,38 @@
}
if (excelTable[i].Columns.Cast<DataColumn>().Any(column => column.ColumnName.Contains("M")))
{
- var duplicateColumn = excelTable[i].Columns.Cast<DataColumn>().FirstOrDefault(
- column => column.ColumnName.Contains("M") && excelTable[i].AsEnumerable().GroupBy(row => new { Field1 = row[column], Field2 = column.ColumnName.Contains("鍞竴") }).Any(group => group.Count() > 1));
- if (duplicateColumn != null)
+ // 鍏堟寜鐓у垪鍚嶅寘鍚�"M"鏍囪瘑鐨勫垪鍒嗙粍
+ var mColumns = excelTable[i].Columns.Cast<DataColumn>()
+ .Where(c => c.ColumnName.Contains("M"))
+ .ToList();
+
+ var groups = excelTable[i].AsEnumerable()
+ .GroupBy(r => string.Join("-", mColumns.Select(c => r[c])));
+
+ foreach (var group in groups)
{
- int columnIndex = excelTable[i].Columns.IndexOf(duplicateColumn);
- var duplicateRows = excelTable[i].AsEnumerable()
- .Where(row => row[duplicateColumn] != DBNull.Value)
- .GroupBy(row => row[duplicateColumn])
- .Where(group => group.Count() > 1)
- .SelectMany(group => group.ToList())
- .ToList();
- foreach (var row in duplicateRows)
+ // 鍒ゆ柇鍒楀悕鍖呭惈"鍞竴"鏍囪瘑鐨勫垪鐨勫垪鍊兼槸鍚﹂噸澶�
+ var uniqueColumnName = excelTable[i].Columns.Cast<DataColumn>()
+ .Where(c => c.ColumnName.Contains("鍞竴"))
+ .Select(c => c.ColumnName)
+ .FirstOrDefault();
+
+ var duplicateUniqueValues = group
+ .GroupBy(r => r[uniqueColumnName])
+ .Where(g => g.Count() > 1)
+ .Select(g => g.Key);
+
+ foreach (var value in duplicateUniqueValues)
{
ExcelErro erro = new ExcelErro();
- erro.RoeNumber = excelTable[i].Rows.IndexOf(row).ToString();
- erro.ErrorField = duplicateColumn.ColumnName;
- erro.ErrorCont = "妯℃澘琛ㄥご瀛楁锛�" + duplicateColumn.ColumnName + "涓嬪悓涓�鍊�,瀵瑰簲甯�(鍞竴)鐨勫垪涓瓨鍦ㄩ噸澶嶅��";
+ erro.RoeNumber = "/";
+ erro.ErrorField = mColumns[0].ToString();
+ erro.ErrorCont = "妯℃澘琛ㄥご瀛楁銆�"+ mColumns[0].ToString() + "銆戜笅鐨勫��:"+ group.Key + ",瀵瑰簲甯�(鍞竴)鐨勫垪涓瓨鍦ㄩ噸澶嶅�间负锛�"+value+"";
list.Add(erro);
-
}
}
}
- else
+ else
{
var duplicateColumn = excelTable[i].Columns.Cast<DataColumn>().FirstOrDefault(
column => column.ColumnName.Contains("鍞竴") && excelTable[i].AsEnumerable().GroupBy(row => row[column]).Any(group => group.Count() > 1));
@@ -1343,8 +1352,8 @@
}
}
}
-
-
+
+
}
return list;
}
--
Gitblit v1.9.3