yl
2023-09-19 fbba6d6e8ccf4b052735bd51fd04ff7cb5c16b78
VueWebCoreApi/Tools/ImportExcelData.cs
@@ -227,7 +227,7 @@
                return Message;
            }
            else if (excelTable[0].Columns.Count != 6)
            else if (excelTable[0].Columns.Count != 4)
            {
                code = "301";
                Message = "角色清单模板不符合规范,请检查列名字段数";
@@ -251,22 +251,10 @@
                Message = "角色清单模板:表头信息不符合规范,第3列应为{*状态}";
                return Message;
            }
            else if (excelTable[0].Columns[3].ColumnName != "数据范围")
            else if (excelTable[0].Columns[3].ColumnName != "描述")
            {
                code = "301";
                Message = "角色清单模板:表头信息不符合规范,第4列应为{数据范围}";
                return Message;
            }
            else if (excelTable[0].Columns[4].ColumnName != "数据权限")
            {
                code = "301";
                Message = "角色清单模板:表头信息不符合规范,第5列应为{数据权限}";
                return Message;
            }
            else if (excelTable[0].Columns[5].ColumnName != "描述")
            {
                code = "301";
                Message = "角色清单模板:表头信息不符合规范,第6列应为{描述}";
                Message = "角色清单模板:表头信息不符合规范,第4列应为{描述}";
                return Message;
            }
            else
@@ -464,10 +452,10 @@
                Message = "库位设置模板:表头信息不符合规范,第3列应为{*所属仓库编码}";
                return Message;
            }
            else if (excelTable[0].Columns[3].ColumnName != "*上级库位编码")
            else if (excelTable[0].Columns[3].ColumnName != "上级库位编码")
            {
                code = "301";
                Message = "库位设置模板:表头信息不符合规范,第4列应为{*上级库位编码}";
                Message = "库位设置模板:表头信息不符合规范,第4列应为{上级库位编码}";
                return Message;
            }
            else if (excelTable[0].Columns[4].ColumnName != "*状态")
@@ -509,7 +497,7 @@
                Message = "存货分类模板不符合规范,请检查列名字段数";
                return Message;
            }
            else if (excelTable[1].Columns.Count != 12)
            else if (excelTable[1].Columns.Count != 13)
            {
                code = "301";
                Message = "存货档案模板不符合规范,请检查列名字段数";
@@ -521,10 +509,10 @@
                Message = "存货分类型模板:表头信息不符合规范,第1列应为{*存货分类编号(唯一)}";
                return Message;
            }
            else if (excelTable[0].Columns[1].ColumnName != "*存货分类型名称")
            else if (excelTable[0].Columns[1].ColumnName != "*存货分类名称")
            {
                code = "301";
                Message = "存货分类型模板:表头信息不符合规范,第2列应为{*存货分类型名称}";
                Message = "存货分类型模板:表头信息不符合规范,第2列应为{*存货分类名称}";
                return Message;
            }
            else if (excelTable[0].Columns[2].ColumnName != "上级编码")
@@ -569,10 +557,10 @@
                Message = "存货档案模板:表头信息不符合规范,第6列应为{*计量方式}";
                return Message;
            }
            else if (excelTable[1].Columns[6].ColumnName != "*计量单位/组编码")
            else if (excelTable[1].Columns[6].ColumnName != "*计量单位/组名称")
            {
                code = "301";
                Message = "存货档案模板:表头信息不符合规范,第7列应为{*计量单位/组编码}";
                Message = "存货档案模板:表头信息不符合规范,第7列应为{*计量单位/组名称}";
                return Message;
            }
            else if (excelTable[1].Columns[7].ColumnName != "所属仓库编码")
@@ -1626,47 +1614,39 @@
        #endregion
        #region【Excel模板上传验证,缺陷定义模板】
        public static string Eighteen(string FileCode, out string code)
        public static string Eighteen(List<DataTable> excelTable, out string code)
        {
            string Message = "";
            code = "";
            List<DataTable> excelTable = new List<DataTable>();
            excelTable = ImportExcel.ExcelToTableList(FileCode);
            if (excelTable.Count != 2)
            if (excelTable.Count != 1)
            {
                code = "300";
                code = "301";
                Message = "导入模板不符合规范,请检查sheet数";
                return Message;
            }
            else if (excelTable[0].Columns.Count != 4)
            else if (excelTable[0].Columns.Count != 3)
            {
                code = "300";
                code = "301";
                Message = "缺陷定义模板不符合规范,请检查列名字段数";
                return Message;
            }
            else if (excelTable[0].Columns[0].ColumnName != "序号")
            else if (excelTable[0].Columns[0].ColumnName != "*缺陷编号(唯一)")
            {
                code = "300";
                Message = "缺陷定义模板不符合规范:表头信息不符合规范,第1列应为{序号}";
                code = "301";
                Message = "缺陷定义模板:表头信息不符合规范,第1列应为{*缺陷编号(唯一)}";
                return Message;
            }
            else if (excelTable[0].Columns[1].ColumnName != "缺陷编号(唯一)")
            else if (excelTable[0].Columns[1].ColumnName != "*缺陷名称")
            {
                code = "300";
                Message = "缺陷定义模板不符合规范:表头信息不符合规范,第2列应为{缺陷编号(唯一)}";
                code = "301";
                Message = "缺陷定义模板:表头信息不符合规范,第2列应为{*缺陷名称}";
                return Message;
            }
            else if (excelTable[0].Columns[2].ColumnName != "缺陷名称")
            else if (excelTable[0].Columns[2].ColumnName != "缺陷描述")
            {
                code = "300";
                Message = "缺陷定义模板不符合规范:表头信息不符合规范,第3列应为{缺陷名称}";
                return Message;
            }
            else if (excelTable[0].Columns[3].ColumnName != "缺陷描述")
            {
                code = "300";
                Message = "缺陷描述模板不符合规范:表头信息不符合规范,第4列应为{缺陷描述}";
                code = "301";
                Message = "缺陷定义模板:表头信息不符合规范,第3列应为{缺陷描述}";
                return Message;
            }
            else
@@ -1988,7 +1968,7 @@
                        ExcelErro erro = new ExcelErro();
                        erro.RoeNumber = "/";
                        erro.ErrorField = "{*岗位名称}";
                        erro.ErrorCont = "岗位表:{*岗位名称}字段" + excelTable[1].Rows[k][1].ToString().Trim() + "已存在";
                        erro.ErrorCont = "岗位表:{*岗位名称}字段" + excelTable[0].Rows[k][1].ToString().Trim() + "已存在";
                        list.Add(erro);
                    }
                }
@@ -2052,7 +2032,7 @@
                        ExcelErro erro = new ExcelErro();
                        erro.RoeNumber = "/";
                        erro.ErrorField = "{*班组名称}";
                        erro.ErrorCont = "班组表:{*班组名称}字段" + excelTable[1].Rows[k][1].ToString().Trim() + "已存在";
                        erro.ErrorCont = "班组表:{*班组名称}字段" + excelTable[0].Rows[k][1].ToString().Trim() + "已存在";
                        list.Add(erro);
                    }
                }
@@ -2251,7 +2231,7 @@
            DataTable dt;
            List<ExcelErro> list = new List<ExcelErro>();
            list = ImportExcel.InportExcelToTableListErro(excelTable);    //验证Excel数据必填字段是否为空、唯一字段是否重复
            //班组表
            //角色表
            for (int k = 0; k < excelTable[0].Rows.Count; k++)
            {
                if (excelTable[0].Rows[k][0].ToString().Trim() != null && excelTable[0].Rows[k][0].ToString().Trim() != "")
@@ -2278,56 +2258,56 @@
                        ExcelErro erro = new ExcelErro();
                        erro.RoeNumber = "/";
                        erro.ErrorField = "{*角色名称}";
                        erro.ErrorCont = "角色表:{*角色名称}字段" + excelTable[1].Rows[k][1].ToString().Trim() + "已存在";
                        erro.ErrorCont = "角色表:{*角色名称}字段" + excelTable[0].Rows[k][1].ToString().Trim() + "已存在";
                        list.Add(erro);
                    }
                }
                if (excelTable[0].Rows[k][3].ToString().Trim() != null && excelTable[0].Rows[k][3].ToString().Trim() != "")
                {
                    if (excelTable[0].Rows[k][3].ToString().Trim() == "自定义")
                    {
                        if (excelTable[0].Rows[k][4].ToString().Trim() == null && excelTable[0].Rows[k][4].ToString().Trim() == "")
                        {
                            ExcelErro erro = new ExcelErro();
                            erro.RoeNumber = "/";
                            erro.ErrorField = "{数据权限}";
                            erro.ErrorCont = "角色表:{数据范围}字段为:" + excelTable[1].Rows[k][3].ToString().Trim() + "时,{数据权限}字段不能为空";
                            list.Add(erro);
                        }
                        else
                        {
                            //判断数据权限编码是否合理
                            if (excelTable[0].Rows[k][4].ToString().Trim() != null && excelTable[0].Rows[k][4].ToString().Trim() != "")
                            {
                                string[] torgcode = Array.ConvertAll<string, string>(excelTable[0].Rows[k][4].ToString().Trim().Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries), s => s.ToString()); //string分割转string[]
                                sql = @"select postcode  from TOrganization  where torg_code in @torgcode";
                                dynamicParams.Add("@torgcode", torgcode);
                                dt = DapperHelper.selectdata(sql, dynamicParams);
                                if (dt != null && dt.Rows.Count > 0)
                                {
                                    string[] values = excelTable[0].Rows[k][4].ToString().Trim().Split(',');
                                    var unmatchedValues = values.Except(dt.AsEnumerable().Select(row => row.Field<string>("torg_code")));
                                    foreach (var value in unmatchedValues)
                                    {
                                        ExcelErro erro = new ExcelErro();
                                        erro.RoeNumber = (k + 1).ToString();
                                        erro.ErrorField = "{数据权限}";
                                        erro.ErrorCont = "角色表:{数据权限}字段" + value + " 不是有效的组织编码";
                                        list.Add(erro);
                                    }
                                }
                                else
                                {
                                    ExcelErro erro = new ExcelErro();
                                    erro.RoeNumber = (k + 1).ToString();
                                    erro.ErrorField = "{数据权限}";
                                    erro.ErrorCont = "角色表:{数据权限}字段" + excelTable[0].Rows[k][4].ToString().Trim() + " 不是有效的组织编码";
                                    list.Add(erro);
                                }
                            }
                        }
                    }
                }
                //if (excelTable[0].Rows[k][3].ToString().Trim() != null && excelTable[0].Rows[k][3].ToString().Trim() != "")
                //{
                //    if (excelTable[0].Rows[k][3].ToString().Trim() == "自定义")
                //    {
                //        if (excelTable[0].Rows[k][4].ToString().Trim() == null && excelTable[0].Rows[k][4].ToString().Trim() == "")
                //        {
                //            ExcelErro erro = new ExcelErro();
                //            erro.RoeNumber = "/";
                //            erro.ErrorField = "{数据权限}";
                //            erro.ErrorCont = "角色表:{数据范围}字段为:" + excelTable[1].Rows[k][3].ToString().Trim() + "时,{数据权限}字段不能为空";
                //            list.Add(erro);
                //        }
                //        else
                //        {
                //            //判断数据权限编码是否合理
                //            if (excelTable[0].Rows[k][4].ToString().Trim() != null && excelTable[0].Rows[k][4].ToString().Trim() != "")
                //            {
                //                string[] torgcode = Array.ConvertAll<string, string>(excelTable[0].Rows[k][4].ToString().Trim().Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries), s => s.ToString()); //string分割转string[]
                //                sql = @"select postcode  from TOrganization  where torg_code in @torgcode";
                //                dynamicParams.Add("@torgcode", torgcode);
                //                dt = DapperHelper.selectdata(sql, dynamicParams);
                //                if (dt != null && dt.Rows.Count > 0)
                //                {
                //                    string[] values = excelTable[0].Rows[k][4].ToString().Trim().Split(',');
                //                    var unmatchedValues = values.Except(dt.AsEnumerable().Select(row => row.Field<string>("torg_code")));
                //                    foreach (var value in unmatchedValues)
                //                    {
                //                        ExcelErro erro = new ExcelErro();
                //                        erro.RoeNumber = (k + 1).ToString();
                //                        erro.ErrorField = "{数据权限}";
                //                        erro.ErrorCont = "角色表:{数据权限}字段" + value + " 不是有效的组织编码";
                //                        list.Add(erro);
                //                    }
                //                }
                //                else
                //                {
                //                    ExcelErro erro = new ExcelErro();
                //                    erro.RoeNumber = (k + 1).ToString();
                //                    erro.ErrorField = "{数据权限}";
                //                    erro.ErrorCont = "角色表:{数据权限}字段" + excelTable[0].Rows[k][4].ToString().Trim() + " 不是有效的组织编码";
                //                    list.Add(erro);
                //                }
                //            }
                //        }
                //    }
                //}
            }
            if (list.Count > 0)
            {
@@ -2392,24 +2372,21 @@
                        list.Add(erro);
                    }
                }
                if (excelTable[0].Rows[j][2].ToString().Trim() != null && excelTable[0].Rows[j][2].ToString().Trim() != "")
                {
                    // 使用Lambda表达式判断父级ID是否合理
                    bool isParentIdValid = excelTable[0].AsEnumerable()
                        .Any(r => Convert.ToString(r["*往来单位类型编号(唯一)"]) == excelTable[0].Rows[j][2].ToString().Trim()); // 假设ID列名为Id
                    // 如果父级ID不合理,则输出
                    if (!isParentIdValid)
                    {
                        ExcelErro erro = new ExcelErro();
                        erro.RoeNumber = "/";
                        erro.ErrorField = "{上级编码}";
                        erro.ErrorCont = "往来单位类型表:{上级编码}字段:" + excelTable[0].Rows[j][2].ToString().Trim() + " 不合理";
                        list.Add(erro);
                    }
                }
            }
            var invalidRows = excelTable[0].AsEnumerable().Where(row =>
                       row.Field<string>("上级编码") == row.Field<string>("*往来单位类型编号(唯一)") ||
                       (row.Field<string>("上级编码") != null && !excelTable[0].AsEnumerable().Any(r => r.Field<string>("*往来单位类型编号(唯一)") == row.Field<string>("上级编码")))
                   );
            // 输出不合理的行
            foreach (var row in invalidRows)
            {
                ExcelErro erro = new ExcelErro();
                erro.RoeNumber = "/";
                erro.ErrorField = "{上级编码}";
                erro.ErrorCont = $"往来单位类型表:*往来单位类型编号(唯一): {row.Field<string>("*往来单位类型编号(唯一)")} 的上级编码:{row.Field<string>("上级编码")}不合理";
                list.Add(erro);
            }
            //往来单位表
            for (int k = 0; k < excelTable[1].Rows.Count; k++)
@@ -2600,23 +2577,22 @@
                        list.Add(erro);
                    }
                }
                if (excelTable[0].Rows[k][3].ToString().Trim() != null && excelTable[0].Rows[k][3].ToString().Trim() != "")
                {
                    // 使用Lambda表达式判断父级ID是否合理
                    bool isParentIdValid = excelTable[0].AsEnumerable()
                        .Any(r => Convert.ToString(r["*库位编号(唯一)"]) == excelTable[0].Rows[k][3].ToString().Trim()); // 假设ID列名为Id
                    // 如果父级ID不合理,则输出
                    if (!isParentIdValid)
                    {
                        ExcelErro erro = new ExcelErro();
                        erro.RoeNumber = "/";
                        erro.ErrorField = "{上级库位编码}";
                        erro.ErrorCont = "库位表:{上级库位编码}字段:" + excelTable[0].Rows[k][3].ToString().Trim() + " 不合理";
                        list.Add(erro);
                    }
                }
            }
            var invalidRows = excelTable[0].AsEnumerable().Where(row =>
                     row.Field<string>("上级库位编码") == row.Field<string>("*库位编号(唯一)") ||
                     (row.Field<string>("上级库位编码") != null && !excelTable[0].AsEnumerable().Any(r => r.Field<string>("*库位编号(唯一)") == row.Field<string>("上级库位编码")))
                 );
            // 输出不合理的行
            foreach (var row in invalidRows)
            {
                ExcelErro erro = new ExcelErro();
                erro.RoeNumber = "/";
                erro.ErrorField = "{上级库位编码}";
                erro.ErrorCont = $"库位表:*库位编号(唯一): {row.Field<string>("*库位编号(唯一)")} 的上级库位编码:{row.Field<string>("上级库位编码")}不合理";
                list.Add(erro);
            }
            if (list.Count > 0)
            {
                int index = 0;
@@ -2680,24 +2656,21 @@
                        list.Add(erro);
                    }
                }
                if (excelTable[0].Rows[j][2].ToString().Trim() != null && excelTable[0].Rows[j][2].ToString().Trim() != "")
                {
                    // 使用Lambda表达式判断父级ID是否合理
                    bool isParentIdValid = excelTable[0].AsEnumerable()
                        .Any(r => Convert.ToString(r["*存货分类编号(唯一)"]) == excelTable[0].Rows[j][2].ToString().Trim()); // 假设ID列名为Id
                    // 如果父级ID不合理,则输出
                    if (!isParentIdValid)
                    {
                        ExcelErro erro = new ExcelErro();
                        erro.RoeNumber = "/";
                        erro.ErrorField = "{上级编码}";
                        erro.ErrorCont = "存货分类表:{上级编码}字段:" + excelTable[0].Rows[j][2].ToString().Trim() + " 不合理";
                        list.Add(erro);
                    }
                }
            }
            var invalidRows = excelTable[0].AsEnumerable().Where(row =>
                      row.Field<string>("上级编码") == row.Field<string>("*存货分类编号(唯一)") ||
                      (row.Field<string>("上级编码") != null && !excelTable[0].AsEnumerable().Any(r => r.Field<string>("*存货分类编号(唯一)") == row.Field<string>("上级编码")))
                  );
            // 输出不合理的行
            foreach (var row in invalidRows)
            {
                ExcelErro erro = new ExcelErro();
                erro.RoeNumber = "/";
                erro.ErrorField = "{上级编码}";
                erro.ErrorCont = $"存货类型表:*存货分类编号(唯一): {row.Field<string>("**存货分类编号(唯一)")} 的上级编码:{row.Field<string>("上级编码")}不合理";
                list.Add(erro);
            }
            //存货表
            for (int k = 0; k < excelTable[1].Rows.Count; k++)
@@ -2730,7 +2703,7 @@
                        list.Add(erro);
                    }
                }
                if (excelTable[1].Rows[k][5].ToString().Trim() != null && excelTable[5].Rows[k][1].ToString().Trim() != "")
                if (excelTable[1].Rows[k][5].ToString().Trim() != null && excelTable[1].Rows[k][5].ToString().Trim() != "")
                {
                    switch (excelTable[1].Rows[k][5].ToString().Trim())
                    {
@@ -2738,15 +2711,15 @@
                            //判断计量单位是否为单计量
                            if (excelTable[1].Rows[k][6].ToString().Trim() != null && excelTable[1].Rows[k][6].ToString().Trim() != "")
                            {
                                sql = @"select *  from TUnit where code=@code and isSingleUnit='1'";
                                dynamicParams.Add("@code", excelTable[1].Rows[k][6].ToString().Trim());
                                sql = @"select *  from TUnit where name=@name and isSingleUnit='1'";
                                dynamicParams.Add("@name", excelTable[1].Rows[k][6].ToString().Trim());
                                dt = DapperHelper.selectdata(sql, dynamicParams);
                                if (dt.Rows.Count <= 0)
                                {
                                    ExcelErro erro = new ExcelErro();
                                    erro.RoeNumber = "/";
                                    erro.ErrorField = "{*计量单位/组编码}";
                                    erro.ErrorCont = "存货档案表:{*计量单位/组编码}字段" + excelTable[1].Rows[k][6].ToString().Trim() + "不是有效的单计量单位";
                                    erro.ErrorField = "{*计量单位/组名字}";
                                    erro.ErrorCont = "存货档案表:{*计量单位/组名字}字段" + excelTable[1].Rows[k][6].ToString().Trim() + "不是有效的单计量单位";
                                    list.Add(erro);
                                }
                            }
@@ -2755,15 +2728,15 @@
                            //判断计量单位是否为多计量
                            if (excelTable[1].Rows[k][6].ToString().Trim() != null && excelTable[1].Rows[k][6].ToString().Trim() != "")
                            {
                                sql = @"select *  from TUnitGroup where code=@code";
                                sql = @"select *  from TUnitGroup where name=@name";
                                dynamicParams.Add("@code", excelTable[1].Rows[k][6].ToString().Trim());
                                dt = DapperHelper.selectdata(sql, dynamicParams);
                                if (dt.Rows.Count <= 0)
                                {
                                    ExcelErro erro = new ExcelErro();
                                    erro.RoeNumber = "/";
                                    erro.ErrorField = "{*计量单位/组编码}";
                                    erro.ErrorCont = "存货档案表:{*计量单位/组编码}字段" + excelTable[1].Rows[k][6].ToString().Trim() + "不是有效的多计量单位组";
                                    erro.ErrorField = "{*计量单位/组名称}";
                                    erro.ErrorCont = "存货档案表:{*计量单位/组名称}字段" + excelTable[1].Rows[k][6].ToString().Trim() + "不是有效的多计量单位组";
                                    list.Add(erro);
                                }
                            }
@@ -3538,32 +3511,44 @@
        #endregion
        #region【Excel上传数据验证,缺陷定义】
        public static List<ExcelErro> EighteenData(string FileCode, out string StuCode, out string message, out int count)
        public static List<ExcelErro> EighteenData(List<DataTable> excelTable, out string StuCode, out string message, out int count)
        {
            message = "";
            StuCode = "";
            count = 0;
            string sql = "";
            DataTable dt;
            var dynamicParams = new DynamicParameters();
            DataTable dt;
            List<ExcelErro> list = new List<ExcelErro>();
            DataTable excelTable = new DataTable();
            list = ImportExcel.ExcelToTableErro(FileCode);    //验证Excel数据必填字段是否为空、唯一字段是否重复
            excelTable = ImportExcel.ExcelToTable(FileCode);  //获取Excel数据
            for (int i = 0; i < excelTable.Rows.Count; i++)
            list = ImportExcel.InportExcelToTableListErro(excelTable);    //验证Excel数据必填字段是否为空、唯一字段是否重复
            //缺陷表
            for (int k = 0; k < excelTable[0].Rows.Count; k++)
            {
                if (excelTable.Rows[i][1].ToString().Trim() != null && excelTable.Rows[i][1].ToString().Trim() != "")
                if (excelTable[0].Rows[k][0].ToString().Trim() != null && excelTable[0].Rows[k][0].ToString().Trim() != "")
                {
                    sql = @"select code  from TDefect where code=@code";
                    dynamicParams.Add("@code", excelTable.Rows[i][1].ToString().Trim());
                    sql = @"select *  from TDefect where code=@code";
                    dynamicParams.Add("@code", excelTable[0].Rows[k][0].ToString().Trim());
                    dt = DapperHelper.selectdata(sql, dynamicParams);
                    if (dt.Rows.Count > 0)
                    {
                        ExcelErro erro = new ExcelErro();
                        erro.RoeNumber = "/";
                        erro.ErrorField = "{缺陷定义编号(唯一)}";
                        erro.ErrorCont = "缺陷定义表:{缺陷定义编号(唯一)}字段" + excelTable.Rows[i][1].ToString().Trim() + "已存在";
                        erro.ErrorField = "{*缺陷编号(唯一)}";
                        erro.ErrorCont = "缺陷:{*缺陷编号(唯一)}字段" + excelTable[0].Rows[k][0].ToString().Trim() + "已存在";
                        list.Add(erro);
                    }
                }
                if (excelTable[0].Rows[k][1].ToString().Trim() != null && excelTable[0].Rows[k][1].ToString().Trim() != "")
                {
                    sql = @"select *  from TDefect where name=@name";
                    dynamicParams.Add("@name", excelTable[0].Rows[k][1].ToString().Trim());
                    dt = DapperHelper.selectdata(sql, dynamicParams);
                    if (dt.Rows.Count > 0)
                    {
                        ExcelErro erro = new ExcelErro();
                        erro.RoeNumber = "/";
                        erro.ErrorField = "{*缺陷名称}";
                        erro.ErrorCont = "缺陷表:{*缺陷名称}字段" + excelTable[1].Rows[k][1].ToString().Trim() + "已存在";
                        list.Add(erro);
                    }
                }
@@ -3583,7 +3568,7 @@
            {
                StuCode = "200";
                message = "数据验证成功";
                count = excelTable.Rows.Count;
                count = excelTable[0].Rows.Count;
            }
            return list;
        }
@@ -4042,28 +4027,28 @@
                //导入角色
                for (int i = 0; i < excelTable[0].Rows.Count; i++)
                {
                    if (excelTable[0].Rows[i][3].ToString().Trim() != null && excelTable[0].Rows[i][3].ToString().Trim() != "")
                    {
                        //数据范围
                        switch (excelTable[0].Rows[i][3].ToString().Trim())
                        {
                            case "全部":
                                datarange = "ALL";
                                break;
                            case "本级":
                                datarange = "LEVEL";
                                break;
                            case "本人":
                                datarange = "PERSON";
                                break;
                            case "自定义":
                                datarange = "CUSTOM";
                                datapermissions = excelTable[0].Rows[i][4].ToString().Trim();
                                break;
                            default:
                                break;
                        }
                    }
                    //if (excelTable[0].Rows[i][3].ToString().Trim() != null && excelTable[0].Rows[i][3].ToString().Trim() != "")
                    //{
                    //    //数据范围
                    //    switch (excelTable[0].Rows[i][3].ToString().Trim())
                    //    {
                    //        case "全部":
                    //            datarange = "ALL";
                    //            break;
                    //        case "本级":
                    //            datarange = "LEVEL";
                    //            break;
                    //        case "本人":
                    //            datarange = "PERSON";
                    //            break;
                    //        case "自定义":
                    //            datarange = "CUSTOM";
                    //            datapermissions = excelTable[0].Rows[i][4].ToString().Trim();
                    //            break;
                    //        default:
                    //            break;
                    //    }
                    //}
                    sql = @"insert into TRole(rolecode,rolename,status,datarange,datapermissions,identifying,description,lm_user,lm_date) 
                            values(@rolecode,@rolename,@status,@datarange,@datapermissions,@identifying,@description,@lm_user,@lm_date)";
@@ -4075,9 +4060,10 @@
                            rolecode = excelTable[0].Rows[i][0].ToString().Trim(),
                            rolename = excelTable[0].Rows[i][1].ToString().Trim(),
                            status = excelTable[0].Rows[i][2].ToString().Trim(),
                            datarange = datarange,
                            datarange = "ALL",
                            datapermissions = datapermissions,
                            description = excelTable[0].Rows[i][5].ToString().Trim(),
                            identifying="2",
                            description = excelTable[0].Rows[i][3].ToString().Trim(),
                            lm_user = us.usercode,
                            lm_date = DateTime.Now.ToString()
                        }
@@ -4323,16 +4309,19 @@
                    if (excelTable[1].Rows[i][5].ToString().Trim() == "S")
                    {
                        isSingleUnit = 1;
                        idunit = excelTable[1].Rows[i][6].ToString().Trim();
                        sql = @"select * from TUnit  where name=@name and isSingleUnit='1'";
                        dynamicParams.Add("@name", excelTable[1].Rows[i][6].ToString().Trim());
                        var dt = DapperHelper.selectdata(sql, dynamicParams);
                        idunit = dt.Rows[0]["code"].ToString();
                    }
                    if (excelTable[1].Rows[i][5].ToString().Trim() == "M")
                    {
                        sql = @"select T.code,T.name,T.isMainUnit   from TUnitGroup G
                                inner join TUnit T on G.code=T.idunitgroup
                                where G.code=@code";
                        dynamicParams.Add("@code", excelTable[1].Rows[i][6].ToString().Trim());
                                where G.name=@name";
                        dynamicParams.Add("@name", excelTable[1].Rows[i][6].ToString().Trim());
                        var dt = DapperHelper.selectdata(sql, dynamicParams);
                        idunitgroup = excelTable[1].Rows[i][6].ToString().Trim();
                        idunitgroup = dt.Rows[0]["groupcode"].ToString();
                        idunit = dt.AsEnumerable().Where(row => row.Field<string>("isMainUnit") =="1").Select(row => row.Field<string>("code")).FirstOrDefault();
                        idnounit = dt.AsEnumerable().Where(row => row.Field<string>("isMainUnit") == "0").Select(row => row.Field<string>("code")).FirstOrDefault();
                    }
@@ -5086,34 +5075,32 @@
        #endregion
        #region【Excel数据上传,缺陷定义】
        public static string EighteenSubmit(string FileCode, string User, out string StuCode)
        public static string EighteenSubmit(List<DataTable> excelTable, User us, out string StuCode)
        {
            string message = "";
            StuCode = "";
            string sql = "";
            DataTable dt;
            List<object> list = new List<object>();
            var dynamicParams = new DynamicParameters();
            try
            {
                list.Clear();
                DataTable excelTable = new DataTable();
                excelTable = ImportExcel.ExcelToTable(FileCode);
                //导入往来单位表
                for (int i = 0; i < excelTable.Rows.Count; i++)
                //导入缺陷
                for (int i = 0; i < excelTable[0].Rows.Count; i++)
                {
                    sql = @"insert into TDefect(code,name,descr,lm_user,lm_date)
                            values(@code,@name,@descr,@Operator,@CreateDate)";
                    sql = @"insert into TDefect(code,name,description,is_step,lm_user,lm_date)
                            values(@code,@name,@description,@is_step,@lm_user,@lm_date)";
                    list.Add(new
                    {
                        str = sql,
                        parm = new
                        {
                            code = excelTable.Rows[i][1].ToString().Trim(),
                            name = excelTable.Rows[i][2].ToString().Trim(),
                            descr = excelTable.Rows[i][3].ToString().Trim(),
                            Operator = User,
                            CreateDate = DateTime.Now.ToString()
                            code = excelTable[0].Rows[i][0].ToString().Trim(),
                            name = excelTable[0].Rows[i][1].ToString().Trim(),
                            description = excelTable[0].Rows[i][2].ToString().Trim(),
                            is_step="N",
                            lm_user = us.usercode,
                            lm_date = DateTime.Now.ToString()
                        }
                    });
                }