VueWebCoreApi/Tools/ImportExcel.cs
@@ -1292,30 +1292,59 @@
                    ExcelErro erro = new ExcelErro();
                    erro.RoeNumber = (rowIndex + 1).ToString();
                    erro.ErrorField = emptyColumn.ColumnName;
                    erro.ErrorCont = "模板表头带*的列中存在空值,第" + (rowIndex + 1).ToString() + "行,必填字段:"+ emptyColumn.ColumnName +"为空";
                    erro.ErrorCont = "模板表头带*的列中存在空值,第" + (rowIndex + 1).ToString() + "行,必填字段:" + emptyColumn.ColumnName + "为空";
                    list.Add(erro);
                }
                var duplicateColumn = excelTable[i].Columns.Cast<DataColumn>().FirstOrDefault(
                    column => column.ColumnName.Contains("唯一") && excelTable[i].AsEnumerable().GroupBy(row => row[column]).Any(group => group.Count() > 1));
                if (duplicateColumn != null)
                if (excelTable[i].Columns.Cast<DataColumn>().Any(column => column.ColumnName.Contains("M")))
                {
                    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 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)
                    {
                        ExcelErro erro = new ExcelErro();
                        erro.RoeNumber = excelTable[i].Rows.IndexOf(row).ToString();
                        erro.ErrorField = duplicateColumn.ColumnName;
                        erro.ErrorCont = "模板表头带(唯一)的列中存在重复值,第" + excelTable[i].Rows.IndexOf(row).ToString() + "行,必填字段:" + duplicateColumn.ColumnName + "重复";
                        list.Add(erro);
                        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)
                        {
                            ExcelErro erro = new ExcelErro();
                            erro.RoeNumber = excelTable[i].Rows.IndexOf(row).ToString();
                            erro.ErrorField = duplicateColumn.ColumnName;
                            erro.ErrorCont = "模板表头字段:" + duplicateColumn.ColumnName + "下同一值,对应带(唯一)的列中存在重复值";
                            list.Add(erro);
                        }
                    }
                }
                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));
                    if (duplicateColumn != null)
                    {
                        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)
                        {
                            ExcelErro erro = new ExcelErro();
                            erro.RoeNumber = excelTable[i].Rows.IndexOf(row).ToString();
                            erro.ErrorField = duplicateColumn.ColumnName;
                            erro.ErrorCont = "模板表头带(唯一)的列中存在重复值,第" + excelTable[i].Rows.IndexOf(row).ToString() + "行,必填字段:" + duplicateColumn.ColumnName + "重复";
                            list.Add(erro);
                        }
                    }
                }
            }
            return list;
        }