yl
2023-09-14 4084e06d179675c094a17abb9695aa9a33617b92
存货档案导入、设备清单导入
已添加1个文件
已修改6个文件
已删除1个文件
711 ■■■■ 文件已修改
VueWebCoreApi/Controllers/ImportExcelController.cs 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebCoreApi/DLL/DAL/ExcelCheckDAL.cs 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebCoreApi/Tools/ImportExcelData.cs 686 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebCoreApi/VueWebCoreApi.csproj 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebCoreApi/wwwroot/Excel/人员管理.xls 补丁 | 查看 | 原始文档 | blame | 历史
VueWebCoreApi/wwwroot/Excel/仓库库位清单.xls 补丁 | 查看 | 原始文档 | blame | 历史
VueWebCoreApi/wwwroot/Excel/存货档案.xls 补丁 | 查看 | 原始文档 | blame | 历史
VueWebCoreApi/wwwroot/Excel/设备清单.xls 补丁 | 查看 | 原始文档 | blame | 历史
VueWebCoreApi/Controllers/ImportExcelController.cs
@@ -84,12 +84,12 @@
                list.json2 = list.json2;
                return Json(list);
            }
            //list.json3 = ExcelCheckData(myModel);  //数据验证
            //if (list.json3.code == "300")
            //{
            //    list.json3 = list.json3;
            //    return Json(list);
            //}
            list.json3 = ExcelImportSubmit(dataTable, FileCode);  //数据导入
            if (list.json3.code == "300")
            {
                list.json3 = list.json3;
                return Json(list);
            }
            return Json(list);
        }
        #endregion
VueWebCoreApi/DLL/DAL/ExcelCheckDAL.cs
@@ -45,10 +45,10 @@
                    Message = ImportExcelData.Seven(dataTable, out StuCode);
                    break;
                case "8"://存货档案
                    Message = ImportExcelData.Eight(savePath, out StuCode);
                    Message = ImportExcelData.Eight(dataTable, out StuCode);
                    break;
                case "9"://设备清单
                    Message = ImportExcelData.Nine(savePath, out StuCode);
                    Message = ImportExcelData.Nine(dataTable, out StuCode);
                    break;
                case "10"://设备点检项目
                    Message = ImportExcelData.Ten(savePath, out StuCode);
@@ -143,10 +143,10 @@
                    list = ImportExcelData.SevenData(dataTable, out stuCode, out message, out count);
                    break;
                case "8"://存货档案
                    list = ImportExcelData.EightData(savePath, out stuCode, out message, out count);
                    list = ImportExcelData.EightData(dataTable, out stuCode, out message, out count);
                    break;
                case "9"://设备清单
                    list = ImportExcelData.NineData(savePath, out stuCode, out message, out count);
                    list = ImportExcelData.NineData(dataTable, out stuCode, out message, out count);
                    break;
                case "10"://设备点检项目
                    list = ImportExcelData.TenData(savePath, out stuCode, out message, out count);
@@ -233,10 +233,10 @@
                    Message = ImportExcelData.SevenSubmit(dataTable, us, out StuCode);
                    break;
                case "8"://存货档案
                    Message = ImportExcelData.EightSubmit(savePath, User, out StuCode);
                    Message = ImportExcelData.EightSubmit(dataTable, us, out StuCode);
                    break;
                case "9"://设备清单
                    Message = ImportExcelData.NineSubmit(savePath, User, out StuCode);
                    Message = ImportExcelData.NineSubmit(dataTable, us, out StuCode);
                    break;
                case "10"://设备点检项目
                    Message = ImportExcelData.TenSubmit(savePath, User, out StuCode);
VueWebCoreApi/Tools/ImportExcelData.cs
@@ -21,7 +21,7 @@
            code = "";
            List<DataTable> excelTable = new List<DataTable>();
            excelTable = ImportExcel.ExcelToTableList(FileCode);
            return Message;
        }
        #endregion
@@ -492,71 +492,124 @@
        #endregion
        #region【Excel模板上传验证,存货档案模板】
        public static string Eight(string FileCode, out string code)
        public static string Eight(List<DataTable> excelTable, out string code)
        {
            string Message = "";
            code = "";
            DataTable excelTable = new DataTable();
            excelTable = ImportExcel.ExcelToTable(FileCode);
            if (excelTable.Columns.Count != 11)
            if (excelTable.Count != 2)
            {
                code = "300";
                Message = "模板不符合规范,请检查列名";
                code = "301";
                Message = "导入模板不符合规范,请检查sheet数";
                return Message;
            }
            else if (excelTable.Columns[0].ColumnName != "序号")
            else if (excelTable[0].Columns.Count != 3)
            {
                code = "300";
                Message = "模板不符合规范,请检查列名";
                code = "301";
                Message = "存货分类模板不符合规范,请检查列名字段数";
                return Message;
            }
            else if (excelTable.Columns[1].ColumnName != "物料编码(唯一)")
            else if (excelTable[1].Columns.Count != 12)
            {
                code = "300";
                Message = "模板不符合规范,请检查列名";
                code = "301";
                Message = "存货档案模板不符合规范,请检查列名字段数";
                return Message;
            }
            else if (excelTable.Columns[2].ColumnName != "物料名称")
            else if (excelTable[0].Columns[0].ColumnName != "*存货分类编号(唯一)")
            {
                code = "300";
                Message = "模板不符合规范,请检查列名";
                code = "301";
                Message = "存货分类型模板:表头信息不符合规范,第1列应为{*存货分类编号(唯一)}";
                return Message;
            }
            else if (excelTable.Columns[3].ColumnName != "物料规格")
            else if (excelTable[0].Columns[1].ColumnName != "*存货分类型名称")
            {
                code = "300";
                Message = "模板不符合规范,请检查列名";
                code = "301";
                Message = "存货分类型模板:表头信息不符合规范,第2列应为{*存货分类型名称}";
                return Message;
            }
            else if (excelTable.Columns[4].ColumnName != "主单位")
            else if (excelTable[0].Columns[2].ColumnName != "上级编码")
            {
                code = "300";
                Message = "模板不符合规范,请检查列名";
                code = "301";
                Message = "存货分类型模板:表头信息不符合规范,第3列应为{上级编码}";
                return Message;
            }
            else if (excelTable.Columns[5].ColumnName != "辅单位")
            else if (excelTable[1].Columns[0].ColumnName != "*存货编号(唯一)")
            {
                code = "300";
                Message = "模板不符合规范,请检查列名";
                code = "301";
                Message = "存货档案模板:表头信息不符合规范,第1列应为{*存货编号(唯一)}";
                return Message;
            }
            else if (excelTable.Columns[6].ColumnName != "辅/主")
            else if (excelTable[1].Columns[1].ColumnName != "*存货名称")
            {
                code = "300";
                Message = "模板不符合规范,请检查列名";
                code = "301";
                Message = "存货档案模板:表头信息不符合规范,第2列应为{*存货名称}";
                return Message;
            }
            else if (excelTable.Columns[7].ColumnName != "物料类别")
            else if (excelTable[1].Columns[2].ColumnName != "规格型号")
            {
                code = "300";
                Message = "模板不符合规范,请检查列名";
                code = "301";
                Message = "存货档案模板:表头信息不符合规范,第3列应为{规格型号}";
                return Message;
            }
            else if (excelTable.Columns[8].ColumnName != "仓库名称")
            else if (excelTable[1].Columns[3].ColumnName != "*存货分类编码")
            {
                code = "300";
                Message = "模板不符合规范,请检查列名";
                code = "301";
                Message = "存货档案模板:表头信息不符合规范,第4列应为{*存货分类编码}";
                return Message;
            }
            else if (excelTable.Columns[9].ColumnName != "库存下限")
            else if (excelTable[1].Columns[4].ColumnName != "*状态")
            {
                code = "300";
                Message = "模板不符合规范,请检查列名";
                code = "301";
                Message = "存货档案模板:表头信息不符合规范,第5列应为{*状态}";
                return Message;
            }
            else if (excelTable.Columns[10].ColumnName != "库存上限")
            else if (excelTable[1].Columns[5].ColumnName != "*计量方式")
            {
                code = "300";
                Message = "模板不符合规范,请检查列名";
                code = "301";
                Message = "存货档案模板:表头信息不符合规范,第6列应为{*计量方式}";
                return Message;
            }
            else if (excelTable[1].Columns[6].ColumnName != "*计量单位/组编码")
            {
                code = "301";
                Message = "存货档案模板:表头信息不符合规范,第7列应为{*计量单位/组编码}";
                return Message;
            }
            else if (excelTable[1].Columns[7].ColumnName != "所属仓库编码")
            {
                code = "301";
                Message = "存货档案模板:表头信息不符合规范,第8列应为{所属仓库编码}";
                return Message;
            }
            else if (excelTable[1].Columns[8].ColumnName != "是否外购")
            {
                code = "301";
                Message = "存货档案模板:表头信息不符合规范,第9列应为{是否外购}";
                return Message;
            }
            else if (excelTable[1].Columns[9].ColumnName != "是否销售")
            {
                code = "301";
                Message = "存货档案模板:表头信息不符合规范,第10列应为{是否销售}";
                return Message;
            }
            else if (excelTable[1].Columns[10].ColumnName != "是否自制")
            {
                code = "301";
                Message = "存货档案模板:表头信息不符合规范,第11列应为{是否自制}";
                return Message;
            }
            else if (excelTable[1].Columns[11].ColumnName != "是否生产消耗")
            {
                code = "301";
                Message = "存货档案模板:表头信息不符合规范,第12列应为{是否生产消耗}";
                return Message;
            }
            else if (excelTable[1].Columns[12].ColumnName != "是否委外")
            {
                code = "301";
                Message = "存货档案模板:表头信息不符合规范,第13列应为{是否委外}";
                return Message;
            }
            else
            {
@@ -568,56 +621,82 @@
        #endregion
        #region【Excel模板上传验证,设备清单模板】
        public static string Nine(string FileCode, out string code)
        public static string Nine(List<DataTable> excelTable, out string code)
        {
            string Message = "";
            code = "";
            List<DataTable> excelTable = new List<DataTable>();
            excelTable = ImportExcel.ExcelToTableList(FileCode);
            if (excelTable.Count != 2)
            {
                code = "300";
                Message = "导入模板不符合规范,请检查Sheet数";
                code = "301";
                Message = "导入模板不符合规范,请检查sheet数";
                return Message;
            }
            else if (excelTable[0].Columns.Count != 7)
            else if (excelTable[0].Columns.Count != 3)
            {
                code = "300";
                Message = "设备清单模板(设备清单)不符合规范,请检查列名字段数";
                code = "301";
                Message = "设备类型模板不符合规范,请检查列名字段数";
                return Message;
            }
            else if (excelTable[0].Columns[0].ColumnName != "序号")
            else if (excelTable[1].Columns.Count != 6)
            {
                code = "300";
                Message = "设备清单模板(设备清单):表头信息不符合规范,第1列应为{序号}";
                code = "301";
                Message = "设备清单模板不符合规范,请检查列名字段数";
                return Message;
            }
            else if (excelTable[0].Columns[1].ColumnName != "设备编号(唯一)")
            else if (excelTable[0].Columns[0].ColumnName != "*设备类型编号(唯一)")
            {
                code = "300";
                Message = "设备清单模板(设备清单):表头信息不符合规范,第1列应为{设备编号(唯一)}";
                code = "301";
                Message = "设备类型模板:表头信息不符合规范,第1列应为{*设备类型编号(唯一)}";
                return Message;
            }
            else if (excelTable[0].Columns[2].ColumnName != "设备名称")
            else if (excelTable[0].Columns[1].ColumnName != "*设备类型名称")
            {
                code = "300";
                Message = "设备清单模板(设备清单):表头信息不符合规范,第1列应为{设备名称}";
                code = "301";
                Message = "设备类型模板:表头信息不符合规范,第2列应为{*设备类型名称}";
                return Message;
            }
            else if (excelTable[0].Columns[3].ColumnName != "投入日期")
            else if (excelTable[0].Columns[2].ColumnName != "描述")
            {
                code = "300";
                Message = "设备清单模板(设备清单):表头信息不符合规范,第1列应为{投入日期}";
                code = "301";
                Message = "设备类型模板:表头信息不符合规范,第3列应为{描述}";
                return Message;
            }
            else if (excelTable[0].Columns[4].ColumnName != "车间编码")
            else if (excelTable[1].Columns[0].ColumnName != "*设备编号(唯一)")
            {
                code = "300";
                Message = "设备清单模板(设备清单):表头信息不符合规范,第1列应为{车间编码}";
                code = "301";
                Message = "设备清单模板:表头信息不符合规范,第1列应为{*设备编号(唯一)}";
                return Message;
            }
            else if (excelTable[0].Columns[5].ColumnName != "使用状态")
            else if (excelTable[1].Columns[1].ColumnName != "*设备名称")
            {
                code = "300";
                Message = "设备清单模板(设备清单):表头信息不符合规范,第1列应为{使用状态}";
                code = "301";
                Message = "设备清单模板:表头信息不符合规范,第2列应为{*设备名称}";
                return Message;
            }
            else if (excelTable[0].Columns[6].ColumnName != "稼动率(%)")
            else if (excelTable[1].Columns[2].ColumnName != "所属组织编码")
            {
                code = "300";
                Message = "设备清单模板(设备清单):表头信息不符合规范,第1列应为{稼动率(%)}";
                code = "301";
                Message = "设备清单模板:表头信息不符合规范,第3列应为{*所属组织编码}";
                return Message;
            }
            else if (excelTable[1].Columns[3].ColumnName != "*设备类型编码")
            {
                code = "301";
                Message = "设备清单模板:表头信息不符合规范,第4列应为{*设备类型编码}";
                return Message;
            }
            else if (excelTable[1].Columns[4].ColumnName != "*启用日期")
            {
                code = "301";
                Message = "设备清单模板:表头信息不符合规范,第5列应为{*启用日期}";
                return Message;
            }
            else if (excelTable[1].Columns[5].ColumnName != "*状态")
            {
                code = "301";
                Message = "设备清单模板:表头信息不符合规范,第6列应为{*状态}";
                return Message;
            }
            else
            {
@@ -1850,7 +1929,7 @@
            var dynamicParams = new DynamicParameters();
            DataTable dt;
            List<ExcelErro> list = new List<ExcelErro>();
            if (list.Count > 0)
            {
                int index = 0;
@@ -2074,7 +2153,7 @@
                            list.Add(erro);
                        }
                    }
                    else
                    else
                    {
                        ExcelErro erro = new ExcelErro();
                        erro.RoeNumber = (k + 1).ToString();
@@ -2205,7 +2284,7 @@
                }
                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][3].ToString().Trim() == "自定义")
                    {
                        if (excelTable[0].Rows[k][4].ToString().Trim() == null && excelTable[0].Rows[k][4].ToString().Trim() == "")
                        {
@@ -2215,7 +2294,7 @@
                            erro.ErrorCont = "角色表:{数据范围}字段为:" + excelTable[1].Rows[k][3].ToString().Trim() + "时,{数据权限}字段不能为空";
                            list.Add(erro);
                        }
                        else
                        else
                        {
                            //判断数据权限编码是否合理
                            if (excelTable[0].Rows[k][4].ToString().Trim() != null && excelTable[0].Rows[k][4].ToString().Trim() != "")
@@ -2330,8 +2409,8 @@
                    }
                }
            }
            //往来单位表
            for (int k = 0; k < excelTable[1].Rows.Count; k++)
            {
@@ -2512,7 +2591,7 @@
                    sql = @"select *  from TSecStck where code=@code";
                    dynamicParams.Add("@code", excelTable[0].Rows[k][2].ToString().Trim());
                    dt = DapperHelper.selectdata(sql, dynamicParams);
                    if (dt.Rows.Count<= 0)
                    if (dt.Rows.Count <= 0)
                    {
                        ExcelErro erro = new ExcelErro();
                        erro.RoeNumber = "/";
@@ -2560,67 +2639,169 @@
        #endregion
        #region【Excel上传数据验证,存货档案】
        public static List<ExcelErro> EightData(string FileCode, out string StuCode, out string message, out int count)
        public static List<ExcelErro> EightData(List<DataTable> excelTable, out string StuCode, out string message, out int count)
        {
            message = "";
            StuCode = "";
            count = 0;
            string sql = "";
            DataTable dt;
            List<ExcelErro> list = new List<ExcelErro>();
            return list;
        }
        #endregion
        #region【Excel上传数据验证,设备清单】
        public static List<ExcelErro> NineData(string FileCode, out string StuCode, out string message, out int count)
        {
            message = "";
            StuCode = "";
            count = 0;
            string sql = "";
            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 k = 0; k < excelTable.Rows.Count; k++)
            list = ImportExcel.InportExcelToTableListErro(excelTable);    //验证Excel数据必填字段是否为空、唯一字段是否重复
            //存货分类表
            for (int j = 0; j < excelTable[0].Rows.Count; j++)
            {
                if (excelTable.Rows[k][1].ToString().Trim() != null && excelTable.Rows[k][1].ToString().Trim() != "")
                if (excelTable[0].Rows[j][0].ToString().Trim() != null && excelTable[0].Rows[j][0].ToString().Trim() != "")
                {
                    sql = @"select *  from TEqpInfo where code=@code";
                    dynamicParams.Add("@code", excelTable.Rows[k][1].ToString().Trim());
                    sql = @"select *  from TMateriel_Class where code=@code";
                    dynamicParams.Add("@code", excelTable[0].Rows[j][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[k][1].ToString().Trim() + "已存在";
                        erro.ErrorField = "{*存货分类编号(唯一)}";
                        erro.ErrorCont = "存货分类表:{*存货分类编号(唯一)}字段" + excelTable[0].Rows[j][0].ToString().Trim() + "已存在";
                        list.Add(erro);
                    }
                }
                if (excelTable[0].Rows[j][1].ToString().Trim() != null && excelTable[0].Rows[j][1].ToString().Trim() != "")
                {
                    sql = @"select *  from TMateriel_Class where name=@name";
                    dynamicParams.Add("@name", excelTable[0].Rows[j][1].ToString().Trim());
                    dt = DapperHelper.selectdata(sql, dynamicParams);
                    if (dt.Rows.Count > 0)
                    {
                        ExcelErro erro = new ExcelErro();
                        erro.RoeNumber = "/";
                        erro.ErrorField = "{*存货分类名称}";
                        erro.ErrorCont = "存货分类表:{*存货分类名称}字段" + excelTable[0].Rows[j][1].ToString().Trim() + "已存在";
                        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);
                    }
                }
            }
            //车间判断
            for (int m = 0; m < excelTable.Rows.Count; m++)
            //存货表
            for (int k = 0; k < excelTable[1].Rows.Count; k++)
            {
                if (excelTable.Rows[m][4].ToString().Trim() != null && excelTable.Rows[m][4].ToString().Trim() != "")
                if (excelTable[1].Rows[k][0].ToString().Trim() != null && excelTable[1].Rows[k][0].ToString().Trim() != "")
                {
                    sql = @"select *  from TOrganization where org_code=@code and description='W'";
                    dynamicParams.Add("@code", excelTable.Rows[m][4].ToString().Trim());
                    sql = @"select *  from TMateriel_Info where partcode=@partcode";
                    dynamicParams.Add("@partcode", excelTable[1].Rows[k][0].ToString().Trim());
                    dt = DapperHelper.selectdata(sql, dynamicParams);
                    if (dt.Rows.Count <= 0)
                    if (dt.Rows.Count > 0)
                    {
                        ExcelErro erro = new ExcelErro();
                        erro.RoeNumber = "/";
                        erro.ErrorField = "{车间编码}";
                        erro.ErrorCont = "设备表:{车间编码}字段" + excelTable.Rows[m][4].ToString().Trim() + "不存在";
                        erro.ErrorField = "{*存货编号(唯一)}";
                        erro.ErrorCont = "存货档案表:{*存货编号(唯一)}字段" + excelTable[1].Rows[k][0].ToString().Trim() + "已存在";
                        list.Add(erro);
                    }
                }
                if (excelTable[1].Rows[k][1].ToString().Trim() != null && excelTable[1].Rows[k][1].ToString().Trim() != "")
                {
                    sql = @"select *  from TMateriel_Info where partname=@partname";
                    dynamicParams.Add("@partname", excelTable[1].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);
                    }
                }
                if (excelTable[1].Rows[k][5].ToString().Trim() != null && excelTable[5].Rows[k][1].ToString().Trim() != "")
                {
                    switch (excelTable[1].Rows[k][5].ToString().Trim())
                    {
                        case "S":  //单计量
                            //判断计量单位是否为单计量
                            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());
                                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() + "不是有效的单计量单位";
                                    list.Add(erro);
                                }
                            }
                            break;
                        case "M":  //多计量
                            //判断计量单位是否为多计量
                            if (excelTable[1].Rows[k][6].ToString().Trim() != null && excelTable[1].Rows[k][6].ToString().Trim() != "")
                            {
                                sql = @"select *  from TUnitGroup where code=@code";
                                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() + "不是有效的多计量单位组";
                                    list.Add(erro);
                                }
                            }
                            break;
                        default:
                            break;
                    }
                }
                if (excelTable[1].Rows[k][7].ToString().Trim() != null && excelTable[1].Rows[k][7].ToString().Trim() != "")
                {
                    sql = @"select *  from TSecStck where code=@code";
                    dynamicParams.Add("@code", excelTable[1].Rows[k][7].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][7].ToString().Trim() + "不是有效的仓库编码";
                        list.Add(erro);
                    }
                }
            }
            //判断子表外键不存在于主表主键中的数据
            var dt3 = from r in excelTable[1].AsEnumerable()
                      where !(
                          from rr in excelTable[0].AsEnumerable()
                          select rr.Field<string>("*存货分类编号(唯一)")
                      ).Contains(r.Field<string>("*存货分类编码"))
                      select r;
            List<DataRow> listRow = dt3.ToList();
            if (listRow.Count > 0)
            {
                ExcelErro erro = new ExcelErro();
                erro.RoeNumber = "/";
                erro.ErrorField = "{*存货分类编码}";
                erro.ErrorCont = "存货档案表:{*存货分类编码}字段中有值在存货分类表:{*存货分类编号(唯一)}中不存在";
                list.Add(erro);
            }
            if (list.Count > 0)
            {
@@ -2637,7 +2818,134 @@
            {
                StuCode = "200";
                message = "数据验证成功";
                count = excelTable.Rows.Count;
                count = excelTable[0].Rows.Count + excelTable[1].Rows.Count;
            }
            return list;
        }
        #endregion
        #region【Excel上传数据验证,设备清单】
        public static List<ExcelErro> NineData(List<DataTable> excelTable, out string StuCode, out string message, out int count)
        {
            message = "";
            StuCode = "";
            count = 0;
            string sql = "";
            DataTable dt;
            var dynamicParams = new DynamicParameters();
            List<ExcelErro> list = new List<ExcelErro>();
            list = ImportExcel.InportExcelToTableListErro(excelTable);    //验证Excel数据必填字段是否为空、唯一字段是否重复
            //设备类型表
            for (int j = 0; j < excelTable[0].Rows.Count; j++)
            {
                if (excelTable[0].Rows[j][0].ToString().Trim() != null && excelTable[0].Rows[j][0].ToString().Trim() != "")
                {
                    sql = @"select *  from TEqpType where code=@code";
                    dynamicParams.Add("@code", excelTable[0].Rows[j][0].ToString().Trim());
                    dt = DapperHelper.selectdata(sql, dynamicParams);
                    if (dt.Rows.Count > 0)
                    {
                        ExcelErro erro = new ExcelErro();
                        erro.RoeNumber = "/";
                        erro.ErrorField = "{*设备类型编号(唯一)}";
                        erro.ErrorCont = "设备类型表:{*设备类型编号(唯一)}字段" + excelTable[0].Rows[j][0].ToString().Trim() + "已存在";
                        list.Add(erro);
                    }
                }
                if (excelTable[0].Rows[j][1].ToString().Trim() != null && excelTable[0].Rows[j][1].ToString().Trim() != "")
                {
                    sql = @"select *  from TEqpType where name=@name";
                    dynamicParams.Add("@name", excelTable[0].Rows[j][1].ToString().Trim());
                    dt = DapperHelper.selectdata(sql, dynamicParams);
                    if (dt.Rows.Count > 0)
                    {
                        ExcelErro erro = new ExcelErro();
                        erro.RoeNumber = "/";
                        erro.ErrorField = "{*设备类型名称}";
                        erro.ErrorCont = "设备类型表:{*设备类型名称}字段" + excelTable[0].Rows[j][1].ToString().Trim() + "已存在";
                        list.Add(erro);
                    }
                }
            }
            //设备表
            for (int k = 0; k < excelTable[1].Rows.Count; k++)
            {
                if (excelTable[1].Rows[k][0].ToString().Trim() != null && excelTable[1].Rows[k][0].ToString().Trim() != "")
                {
                    sql = @"select *  from TEqpInfo where code=@code";
                    dynamicParams.Add("@code", excelTable[1].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[1].Rows[k][0].ToString().Trim() + "已存在";
                        list.Add(erro);
                    }
                }
                if (excelTable[1].Rows[k][1].ToString().Trim() != null && excelTable[1].Rows[k][1].ToString().Trim() != "")
                {
                    sql = @"select *  from TEqpInfo where name=@name";
                    dynamicParams.Add("@name", excelTable[1].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);
                    }
                }
                if (excelTable[1].Rows[k][2].ToString().Trim() != null && excelTable[1].Rows[k][2].ToString().Trim() != "")
                {
                    sql = @"select *  from TOrganization where torg_code=@torg_code";
                    dynamicParams.Add("@torg_code", excelTable[1].Rows[k][2].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][2].ToString().Trim() + "不存在";
                        list.Add(erro);
                    }
                }
            }
            //判断子表外键不存在于主表主键中的数据
            var dt3 = from r in excelTable[1].AsEnumerable()
                      where !(
                          from rr in excelTable[0].AsEnumerable()
                          select rr.Field<string>("*设备类型编号(唯一)")
                      ).Contains(r.Field<string>("*设备类型编码"))
                      select r;
            List<DataRow> listRow = dt3.ToList();
            if (listRow.Count > 0)
            {
                ExcelErro erro = new ExcelErro();
                erro.RoeNumber = "/";
                erro.ErrorField = "{*设备类型编码}";
                erro.ErrorCont = "设备表:{*设备类型编码}字段中有值在设备类型表:{*设备类型编号(唯一)}中不存在";
                list.Add(erro);
            }
            if (list.Count > 0)
            {
                int index = 0;
                foreach (ExcelErro item in list)
                {
                    index++;
                    item.Seq = index.ToString();
                }
                StuCode = "301";
                message = "数据验证失败";
            }
            else
            {
                StuCode = "200";
                message = "数据验证成功";
                count = excelTable[0].Rows.Count + excelTable[1].Rows.Count;
            }
            return list;
        }
@@ -3604,7 +3912,7 @@
        #endregion
        #region【Excel数据上传,分组管理】
        public static string  TwoSubmit(List<DataTable> excelTable, User us, out string StuCode)
        public static string TwoSubmit(List<DataTable> excelTable, User us, out string StuCode)
        {
            string message = "";
            StuCode = "";
@@ -3822,7 +4130,7 @@
                            idparent = excelTable[0].Rows[k][2].ToString().Trim(),
                            lm_user = us.usercode,
                            lm_date = DateTime.Now.ToString(),
                            data_sources="MES"
                            data_sources = "MES"
                        }
                    });
                }
@@ -3845,7 +4153,7 @@
                            addr = excelTable[1].Rows[i][6].ToString().Trim(),
                            lm_user = us.usercode,
                            lm_date = DateTime.Now.ToString(),
                            data_sources="MES"
                            data_sources = "MES"
                        }
                    });
                }
@@ -3898,7 +4206,7 @@
                            description = excelTable[0].Rows[i][4].ToString().Trim(),
                            lm_user = us.usercode,
                            lm_date = DateTime.Now.ToString(),
                            data_sources="MES"
                            data_sources = "MES"
                        }
                    });
                }
@@ -3978,13 +4286,104 @@
        #endregion
        #region【Excel数据上传,存货档案】
        public static string EightSubmit(string FileCode, string User, out string StuCode)
        public static string EightSubmit(List<DataTable> excelTable, User us, out string StuCode)
        {
            string message = "";
            StuCode = "";
            string sql = "";
            List<object> list = new List<object>();
            var dynamicParams = new DynamicParameters();
            try
            {
                list.Clear();
                //导入存货类型
                for (int k = 0; k < excelTable[0].Rows.Count; k++)
                {
                    sql = @"insert into TMateriel_Class(code,name,idparent,lm_user,lm_date,data_sources)
                            values(@code,@name,@idparent,@lm_user,@lm_date,@data_sources)";
                    list.Add(new
                    {
                        str = sql,
                        parm = new
                        {
                            code = excelTable[0].Rows[k][0].ToString().Trim(),
                            name = excelTable[0].Rows[k][1].ToString().Trim(),
                            idparent = excelTable[0].Rows[k][2].ToString().Trim(),
                            lm_user = us.usercode,
                            lm_date = DateTime.Now.ToString(),
                            data_sources = "MES"
                        }
                    });
                }
                //导入存货档案
                for (int i = 0; i < excelTable[1].Rows.Count; i++)
                {
                    string idunitgroup="", idunit = "", idnounit = "";
                    int isSingleUnit = 0;
                    if (excelTable[1].Rows[i][5].ToString().Trim() == "S")
                    {
                        isSingleUnit = 1;
                        idunit = excelTable[1].Rows[i][6].ToString().Trim();
                    }
                    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());
                        var dt = DapperHelper.selectdata(sql, dynamicParams);
                        idunitgroup = excelTable[1].Rows[i][6].ToString().Trim();
                        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();
                    }
                    sql = @"insert into TMateriel_Info(partcode,partname,partspec,idunit,idunitgroup,isSingleUnit,idSubUnitByReport,idUnitByStock,
                           idUnitByPurchase,idUnitBySale,idunitbymanufacture,idinventoryclass,isPurchase,isSale,isMadeSelf,isMaterial,isMadeRequest,
                           idwarehouse,status,lm_user,lm_date,data_sources)
                           values(@partcode,@partname,@partspec,@idunit,@idunitgroup,@isSingleUnit,@idSubUnitByReport,@idUnitByStock,
                           @idUnitByPurchase,@idUnitBySale,@idunitbymanufacture,@idinventoryclass,@isPurchase,@isSale,@isMadeSelf,@isMaterial,@isMadeRequest,
                           @idwarehouse,@status,@lm_user,@lm_date,@data_sources)";
                    list.Add(new
                    {
                        str = sql,
                        parm = new
                        {
                            partcode = excelTable[1].Rows[i][0].ToString().Trim(),
                            partname = excelTable[1].Rows[i][1].ToString().Trim(),
                            partspec = excelTable[1].Rows[i][2].ToString().Trim(),
                            idunit = idunit,
                            idunitgroup = idunitgroup,
                            isSingleUnit = isSingleUnit,
                            idSubUnitByReport = idnounit,
                            idUnitByStock = idunit,
                            idUnitByPurchase = idunit,
                            idUnitBySale = idunit,
                            idunitbymanufacture = idunit,
                            idinventoryclass = excelTable[1].Rows[i][3].ToString().Trim(),
                            isPurchase = excelTable[1].Rows[i][8].ToString().Trim(),
                            isSale = excelTable[1].Rows[i][9].ToString().Trim(),
                            isMadeSelf = excelTable[1].Rows[i][10].ToString().Trim(),
                            isMaterial = excelTable[1].Rows[i][11].ToString().Trim(),
                            isMadeRequest = excelTable[1].Rows[i][12].ToString().Trim(),
                            idwarehouse = excelTable[1].Rows[i][7].ToString().Trim(),
                            status = excelTable[1].Rows[i][4].ToString().Trim(),
                            lm_user = us.usercode,
                            lm_date = DateTime.Now.ToString(),
                            data_sources = "MES"
                        }
                    });
                }
                bool aa = DapperHelper.DoTransaction(list);
                if (aa)
                {
                    StuCode = "200";
                    message = "导入成功!";
                }
                else
                {
                    StuCode = "300";
                    message = "导入失败!";
                }
            }
            catch (Exception e)
            {
@@ -3996,42 +4395,53 @@
        #endregion
        #region【Excel数据上传,设备清单】
        public static string NineSubmit(string FileCode, string User, out string StuCode)
        public static string NineSubmit(List<DataTable> excelTable, User us, out string StuCode)
        {
            string message = ""; StuCode = "";
            string message = "";
            StuCode = "";
            string sql = "";
            List<object> list = new List<object>();
            var dynamicParams = new DynamicParameters();
            try
            {
                list.Clear();
                DataTable excelTable = new DataTable();
                excelTable = ImportExcel.ExcelToTable(FileCode);
                //导入设备清单
                for (int k = 0; k < excelTable.Rows.Count; k++)
                //导入设备类型
                for (int k = 0; k < excelTable[0].Rows.Count; k++)
                {
                    sql = @"select *   from TEqpInfo where code=@eqp_code";
                    dynamicParams.Add("@eqp_code", excelTable.Rows[k][1].ToString().Trim());
                    DataTable dt = DapperHelper.selectdata(sql, dynamicParams);
                    if (dt.Rows.Count > 0)
                    {
                        continue;
                    }
                    sql = @"insert into TEqpInfo(code,name,wksp_code,input_date,operation_ration,enable,opc_uom,lm_user,lm_date)
                            values(@devicecode,@devicename,@workshop,@importdate,@ratio,@status,@uom,@lm_user,@lm_date)";
                    sql = @"insert into TEqpType(code,name,lm_user,lm_date,remark)
                            values(@code,@name,@lm_user,@lm_date,@remark)";
                    list.Add(new
                    {
                        str = sql,
                        parm = new
                        {
                            devicecode = excelTable.Rows[k][1].ToString().Trim(),
                            devicename = excelTable.Rows[k][2].ToString().Trim(),
                            workshop = excelTable.Rows[k][4].ToString().Trim(),
                            importdate = excelTable.Rows[k][3].ToString().Trim(),
                            ratio = excelTable.Rows[k][6].ToString().Trim(),
                            status = excelTable.Rows[k][5].ToString().Trim(),
                            uom = "台",
                            lm_user = User,
                            code = excelTable[0].Rows[k][0].ToString().Trim(),
                            name = excelTable[0].Rows[k][1].ToString().Trim(),
                            lm_user = us.usercode,
                            lm_date = DateTime.Now.ToString(),
                            idparent = excelTable[0].Rows[k][2].ToString().Trim()
                        }
                    });
                }
                //导入设备
                for (int i = 0; i < excelTable[1].Rows.Count; i++)
                {
                    sql = @"insert into TEqpInfo(code,name,torg_code,eqptype_code,input_date,operation_ration,enable,opc_uom,lm_user,lm_date)
                            values(@code,@name,@torg_code,@eqptype_code,@input_date,@operation_ration,@enable,@opc_uom,@lm_user,@lm_date)";
                    list.Add(new
                    {
                        str = sql,
                        parm = new
                        {
                            code = excelTable[1].Rows[i][0].ToString().Trim(),
                            name = excelTable[1].Rows[i][1].ToString().Trim(),
                            torg_code = excelTable[1].Rows[i][2].ToString().Trim(),
                            eqptype_code = excelTable[1].Rows[i][3].ToString().Trim(),
                            input_date = excelTable[1].Rows[i][4].ToString().Trim(),
                            operation_ration = "100",
                            enable = excelTable[1].Rows[i][5].ToString().Trim(),
                            opc_uom = "台",
                            lm_user = us.usercode,
                            lm_date = DateTime.Now.ToString()
                        }
                    });
VueWebCoreApi/VueWebCoreApi.csproj
@@ -50,7 +50,6 @@
    </ItemGroup>
    <ItemGroup>
      <None Include="wwwroot\Excel\仓库库位清单.xls" />
      <None Include="wwwroot\Excel\往来单位.xls" />
      <None Include="wwwroot\Excel\物料清单.xls" />
      <None Include="wwwroot\Excel\缺陷定义.xls" />
VueWebCoreApi/wwwroot/Excel/ÈËÔ±¹ÜÀí.xls
Binary files differ
VueWebCoreApi/wwwroot/Excel/²Ö¿â¿âλÇåµ¥.xls
Binary files differ
VueWebCoreApi/wwwroot/Excel/´æ»õµµ°¸.xls
Binary files differ
VueWebCoreApi/wwwroot/Excel/É豸Çåµ¥.xls
Binary files differ