yl
2023-09-13 be4498e7e306a63ecd11515a21944305dd7df7f8
1.往来单位同步接口
2.往来单位、仓库、库位 excel导入
已添加2个文件
已修改7个文件
742 ■■■■■ 文件已修改
VueWebCoreApi/Controllers/ErpSyncMesController.cs 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebCoreApi/DLL/BLL/ErpSyncMesBLL.cs 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebCoreApi/DLL/DAL/ErpSyncMesDAL.cs 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebCoreApi/DLL/DAL/ExcelCheckDAL.cs 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebCoreApi/Tools/ExcelList.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebCoreApi/Tools/ImportExcelData.cs 654 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebCoreApi/wwwroot/Excel/仓库设置.xls 补丁 | 查看 | 原始文档 | blame | 历史
VueWebCoreApi/wwwroot/Excel/库位设置.xls 补丁 | 查看 | 原始文档 | blame | 历史
VueWebCoreApi/wwwroot/Excel/往来单位.xls 补丁 | 查看 | 原始文档 | blame | 历史
VueWebCoreApi/Controllers/ErpSyncMesController.cs
@@ -51,9 +51,9 @@
        }
        #endregion
        #region[物料管理:仓库同步]
        #region[基础设置:仓库同步]
        /// <summary>
        /// ç‰©æ–™ç®¡ç†ï¼šä»“库同步
        /// åŸºç¡€è®¾ç½®ï¼šä»“库同步
        /// </summary>
        /// <returns></returns>
        [Route(template: "SaveSearchWareHouse")]
@@ -66,5 +66,21 @@
            return Json(mes);
        }
        #endregion
        #region[基础设置:往来单位同步]
        /// <summary>
        /// åŸºç¡€è®¾ç½®ï¼šå¾€æ¥å•位同步
        /// </summary>
        /// <returns></returns>
        [Route(template: "SeaveSearchPartner")]
        [HttpPost]
        public JsonResult SeaveSearchPartner()
        {
            var token = HttpContext.Request.Headers["Token"].ToString();
            User us = JwtTools.Denocode(token.ToString());
            mes = ErpSyncMesBLL.SeaveSearchPartner(us);
            return Json(mes);
        }
        #endregion
    }
}
VueWebCoreApi/DLL/BLL/ErpSyncMesBLL.cs
@@ -24,11 +24,18 @@
        }
        #endregion
        #region[物料管理:仓库同步]
        #region[基础设置:仓库同步]
        public static ToMessage SaveSearchWareHouse(User us)
        {
            return ErpSyncMesDAL.SaveSearchWareHouse(us);
        }
        #endregion
        #region[基础设置:往来单位同步]
        public static ToMessage SeaveSearchPartner(User us)
        {
            return ErpSyncMesDAL.SeaveSearchPartner(us);
        }
        #endregion
    }
}
VueWebCoreApi/DLL/DAL/ErpSyncMesDAL.cs
@@ -93,7 +93,7 @@
        }
        #endregion
        #region[物料管理:仓库同步]
        #region[基础设置:仓库同步]
        public static ToMessage SaveSearchWareHouse(User us)
        {
            var sql = "";
@@ -129,5 +129,42 @@
            return mes;
        }
        #endregion
        #region[基础设置:往来单位同步]
        public static ToMessage SeaveSearchPartner(User us)
        {
            var sql = "";
            var dynamicParams = new DynamicParameters();
            try
            {
                //存储过程名
                sql = @"h_p_IFCLD_ERPPartner";
                dynamicParams.Add("@username", us.usercode);
                bool a = DapperHelper.IsProcedure(sql, dynamicParams);
                if (a)
                {
                    mes.code = "200";
                    mes.count = 0;
                    mes.Message = "同步仓库成功!";
                    mes.data = null;
                }
                else
                {
                    mes.code = "300";
                    mes.count = 0;
                    mes.Message = "同步仓库失败!";
                    mes.data = null;
                }
            }
            catch (Exception e)
            {
                mes.code = "300";
                mes.count = 0;
                mes.Message = e.Message;
                mes.data = null;
            }
            return mes;
        }
        #endregion
    }
}
VueWebCoreApi/DLL/DAL/ExcelCheckDAL.cs
@@ -36,13 +36,13 @@
                    Message = ImportExcelData.Four(dataTable, out StuCode);
                    break;
                case "5"://往来单位
                    Message = ImportExcelData.Five(savePath, out StuCode);
                    Message = ImportExcelData.Five(dataTable, out StuCode);
                    break;
                case "6"://仓库设置
                    Message = ImportExcelData.Six(savePath, out StuCode);
                    Message = ImportExcelData.Six(dataTable, out StuCode);
                    break;
                case "7"://库位设置
                    Message = ImportExcelData.Seven(savePath, out StuCode);
                    Message = ImportExcelData.Seven(dataTable, out StuCode);
                    break;
                case "8"://存货档案
                    Message = ImportExcelData.Eight(savePath, out StuCode);
@@ -134,13 +134,13 @@
                    list = ImportExcelData.FourData(dataTable, out stuCode, out message, out count);
                    break;
                case "5"://往来单位
                    list = ImportExcelData.FiveData(savePath, out stuCode, out message, out count);
                    list = ImportExcelData.FiveData(dataTable, out stuCode, out message, out count);
                    break;
                case "6"://仓库设置
                    list = ImportExcelData.SixData(savePath, out stuCode, out message, out count);
                    list = ImportExcelData.SixData(dataTable, out stuCode, out message, out count);
                    break;
                case "7"://库位设置
                    list = ImportExcelData.SevenData(savePath, out stuCode, out message, out count);
                    list = ImportExcelData.SevenData(dataTable, out stuCode, out message, out count);
                    break;
                case "8"://存货档案
                    list = ImportExcelData.EightData(savePath, out stuCode, out message, out count);
@@ -224,13 +224,13 @@
                    Message = ImportExcelData.FourSubmit(dataTable, us, out StuCode);
                    break;
                case "5"://往来单位
                    Message = ImportExcelData.FiveSubmit(savePath, User, out StuCode);
                    Message = ImportExcelData.FiveSubmit(dataTable, us, out StuCode);
                    break;
                case "6"://仓库设置
                    Message = ImportExcelData.SixSubmit(savePath, User, out StuCode);
                    Message = ImportExcelData.SixSubmit(dataTable, us, out StuCode);
                    break;
                case "7"://库位设置
                    Message = ImportExcelData.SevenSubmit(savePath, User, out StuCode);
                    Message = ImportExcelData.SevenSubmit(dataTable, us, out StuCode);
                    break;
                case "8"://存货档案
                    Message = ImportExcelData.EightSubmit(savePath, User, out StuCode);
VueWebCoreApi/Tools/ExcelList.cs
@@ -12,7 +12,7 @@
            List<ScoreReport> list = new List<ScoreReport>
            {
                new ScoreReport("0","组织架构"),
                //new ScoreReport("0","组织架构"),
                new ScoreReport("1","岗位管理"),
                new ScoreReport("2","班组管理"),
                new ScoreReport("3","人员管理"),
VueWebCoreApi/Tools/ImportExcelData.cs
@@ -279,93 +279,144 @@
        #endregion
        #region【Excel模板上传验证,往来单位模板】
        public static string Five(string FileCode, out string code)
        public static string Five(List<DataTable> excelTable, out string code)
        {
            string Message = "";
            code = "";
            if (excelTable.Count != 2)
            {
                code = "301";
                Message = "导入模板不符合规范,请检查sheet数";
                return Message;
           
            }
            else if (excelTable[0].Columns.Count != 3)
            {
                code = "301";
                Message = "往来单位类型模板不符合规范,请检查列名字段数";
                return Message;
            }
            else if (excelTable[1].Columns.Count != 7)
            {
                code = "301";
                Message = "往来单位模板不符合规范,请检查列名字段数";
                return Message;
            }
            else if (excelTable[0].Columns[0].ColumnName != "*往来单位类型编号(唯一)")
            {
                code = "301";
                Message = "往来单位类型模板:表头信息不符合规范,第1列应为{*往来单位类型编号(唯一)}";
                return Message;
            }
            else if (excelTable[0].Columns[1].ColumnName != "*往来单位类型名称")
            {
                code = "301";
                Message = "往来单位类型模板:表头信息不符合规范,第2列应为{*往来单位类型名称}";
                return Message;
            }
            else if (excelTable[0].Columns[2].ColumnName != "上级编码")
            {
                code = "301";
                Message = "往来单位类型模板:表头信息不符合规范,第3列应为{上级编码}";
                return Message;
            }
            else if (excelTable[1].Columns[0].ColumnName != "*往来单位编号(唯一)")
            {
                code = "301";
                Message = "往来单位模板:表头信息不符合规范,第1列应为{*往来单位编号(唯一)}";
                return Message;
            }
            else if (excelTable[1].Columns[1].ColumnName != "*往来单位名称")
            {
                code = "301";
                Message = "往来单位模板:表头信息不符合规范,第2列应为{*往来单位名称}";
                return Message;
            }
            else if (excelTable[1].Columns[2].ColumnName != "*状态")
            {
                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 if (excelTable[1].Columns[6].ColumnName != "地址")
            {
                code = "301";
                Message = "往来单位模板:表头信息不符合规范,第7列应为{地址}";
                return Message;
            }
            else
            {
                code = "200";
                Message = "模板检验通过";
            }
            return Message;
        }
        #endregion
        #region【Excel模板上传验证,仓库设置模板】
        public static string Six(string FileCode, out string code)
        public static string Six(List<DataTable> excelTable, out string code)
        {
            string Message = "";
            code = "";
            List<DataTable> excelTable = new List<DataTable>();
            excelTable = ImportExcel.ExcelToTableList(FileCode);
            if (excelTable.Count != 4)
            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 != 5)
            {
                code = "300";
                Message = "仓库清单模板不符合规范,请检查列名字段数";
                code = "301";
                Message = "仓库设置模板不符合规范,请检查列名字段数";
                return Message;
            }
            else if (excelTable[1].Columns.Count != 5)
            else if (excelTable[0].Columns[0].ColumnName != "*仓库编号(唯一)")
            {
                code = "300";
                Message = "库位清单模板不符合规范,请检查列名字段数";
                code = "301";
                Message = "仓库设置模板:表头信息不符合规范,第1列应为{*仓库编号(唯一)}";
                return Message;
            }
            else if (excelTable[0].Columns[0].ColumnName != "序号")
            else if (excelTable[0].Columns[1].ColumnName != "*仓库名称")
            {
                code = "300";
                Message = "仓库清单模板:表头信息不符合规范,第1列应为{序号}";
                code = "301";
                Message = "仓库设置模板:表头信息不符合规范,第2列应为{*仓库名称}";
                return Message;
            }
            else if (excelTable[0].Columns[1].ColumnName != "仓库编号(唯一)")
            else if (excelTable[0].Columns[2].ColumnName != "*状态")
            {
                code = "300";
                Message = "仓库清单模板:表头信息不符合规范,第2列应为{仓库编号(唯一)}";
                code = "301";
                Message = "仓库设置模板:表头信息不符合规范,第3列应为{*状态}";
                return Message;
            }
            else if (excelTable[0].Columns[2].ColumnName != "仓库名称")
            else if (excelTable[0].Columns[3].ColumnName != "*库位管理")
            {
                code = "300";
                Message = "仓库清单模板:表头信息不符合规范,第3列应为{仓库名称}";
                code = "301";
                Message = "仓库设置模板:表头信息不符合规范,第4列应为{*库位管理}";
                return Message;
            }
            else if (excelTable[0].Columns[3].ColumnName != "仓库描述")
            else if (excelTable[0].Columns[4].ColumnName != "描述")
            {
                code = "300";
                Message = "仓库清单模板:表头信息不符合规范,第4列应为{仓库描述}";
                return Message;
            }
            else if (excelTable[1].Columns[0].ColumnName != "序号")
            {
                code = "300";
                Message = "库位清单模板:表头信息不符合规范,第1列应为{序号}";
                return Message;
            }
            else if (excelTable[1].Columns[1].ColumnName != "库位编号(唯一)")
            {
                code = "300";
                Message = "库位清单模板:表头信息不符合规范,第2列应为{库位编号(唯一)}";
                return Message;
            }
            else if (excelTable[1].Columns[2].ColumnName != "库位姓名")
            {
                code = "300";
                Message = "库位清单模板:表头信息不符合规范,第3列应为{库位姓名}";
                return Message;
            }
            else if (excelTable[1].Columns[3].ColumnName != "所属仓库编码")
            {
                code = "300";
                Message = "库位清单模板:表头信息不符合规范,第4列应为{所属仓库编码}";
                return Message;
            }
            else if (excelTable[1].Columns[4].ColumnName != "库位描述")
            {
                code = "300";
                Message = "库位清单模板:表头信息不符合规范,第5列应为{库位描述}";
                code = "301";
                Message = "仓库设置模板:表头信息不符合规范,第5列应为{描述}";
                return Message;
            }
            else
@@ -378,41 +429,58 @@
        #endregion
        #region【Excel模板上传验证,库位设置模板】
        public static string Seven(string FileCode, out string code)
        public static string Seven(List<DataTable> excelTable, out string code)
        {
            string Message = "";
            code = "";
            DataTable excelTable = new DataTable();
            excelTable = ImportExcel.ExcelToTable(FileCode);
            if (excelTable.Columns.Count != 5)
            if (excelTable.Count != 1)
            {
                code = "300";
                Message = "模板不符合规范,请检查列名";
                code = "301";
                Message = "导入模板不符合规范,请检查sheet数";
                return Message;
            }
            else if (excelTable.Columns[0].ColumnName != "序号")
            else if (excelTable[0].Columns.Count != 6)
            {
                code = "300";
                Message = "模板不符合规范,请检查列名";
                code = "301";
                Message = "库位设置模板不符合规范,请检查列名字段数";
                return Message;
            }
            else if (excelTable.Columns[1].ColumnName != "容器编码(唯一)")
            else if (excelTable[0].Columns[0].ColumnName != "*库位编号(唯一)")
            {
                code = "300";
                Message = "模板不符合规范,请检查列名";
                code = "301";
                Message = "库位设置模板:表头信息不符合规范,第1列应为{*库位编号(唯一)}";
                return Message;
            }
            else if (excelTable.Columns[2].ColumnName != "容器名称(唯一)")
            else if (excelTable[0].Columns[1].ColumnName != "*库位名称")
            {
                code = "300";
                Message = "模板不符合规范,请检查列名";
                code = "301";
                Message = "库位设置模板:表头信息不符合规范,第2列应为{*库位名称}";
                return Message;
            }
            else if (excelTable.Columns[3].ColumnName != "容器自重(KG)")
            else if (excelTable[0].Columns[2].ColumnName != "*所属仓库编码")
            {
                code = "300";
                Message = "模板不符合规范,请检查列名";
                code = "301";
                Message = "库位设置模板:表头信息不符合规范,第3列应为{*所属仓库编码}";
                return Message;
            }
            else if (excelTable.Columns[4].ColumnName != "容器类型")
            else if (excelTable[0].Columns[3].ColumnName != "*上级库位编码")
            {
                code = "300";
                Message = "模板不符合规范,请检查列名";
                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列应为{描述}";
                return Message;
            }
            else
            {
@@ -2204,7 +2272,7 @@
        #endregion
        #region【Excel上传数据验证,往来单位】
        public static List<ExcelErro> FiveData(string FileCode, out string StuCode, out string message, out int count)
        public static List<ExcelErro> FiveData(List<DataTable> excelTable, out string StuCode, out string message, out int count)
        {
            message = "";
            StuCode = "";
@@ -2213,93 +2281,85 @@
            DataTable dt;
            var dynamicParams = new DynamicParameters();
            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++)
            {
                if (excelTable.Rows[i][1].ToString().Trim() != null && excelTable.Rows[i][1].ToString().Trim() != "")
                {
                    sql = @"select code  from TCustomer where code=@code";
                    dynamicParams.Add("@code", excelTable.Rows[i][1].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() + "已存在";
                        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.Rows.Count;
            }
            return list;
        }
        #endregion
        #region【Excel上传数据验证,仓库设置】
        public static List<ExcelErro> SixData(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>();
            List<DataTable> excelTable = new List<DataTable>();
            list = ImportExcel.ExcelToTableListErro(FileCode);    //验证Excel数据必填字段是否为空、唯一字段是否重复
            excelTable = ImportExcel.ExcelToTableList(FileCode);  //获取Excel数据
            //仓库表
            list = ImportExcel.InportExcelToTableListErro(excelTable);    //验证Excel数据必填字段是否为空、唯一字段是否重复
            //往来单位类型表
            for (int j = 0; j < excelTable[0].Rows.Count; j++)
            {
                if (excelTable[0].Rows[j][1].ToString().Trim() != null && excelTable[0].Rows[j][1].ToString().Trim() != "")
                if (excelTable[0].Rows[j][0].ToString().Trim() != null && excelTable[0].Rows[j][0].ToString().Trim() != "")
                {
                    sql = @"select *  from T_Sec_Stck where code=@code";
                    dynamicParams.Add("@code", excelTable[0].Rows[j][1].ToString().Trim());
                    sql = @"select *  from TCustomerType 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][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 TCustomerType 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 k = 0; k < excelTable[1].Rows.Count; k++)
            {
                if (excelTable[1].Rows[k][1].ToString().Trim() != null && excelTable[1].Rows[k][1].ToString().Trim() != "")
                if (excelTable[1].Rows[k][0].ToString().Trim() != null && excelTable[1].Rows[k][0].ToString().Trim() != "")
                {
                    sql = @"select *  from T_Sec_Loca where code=@code";
                    dynamicParams.Add("@code", excelTable[1].Rows[k][1].ToString().Trim());
                    sql = @"select *  from TCustomer 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][2].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 TCustomer 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);
                    }
                }
@@ -2308,16 +2368,16 @@
            var dt3 = from r in excelTable[1].AsEnumerable()
                      where !(
                          from rr in excelTable[0].AsEnumerable()
                          select rr.Field<string>("仓库编号(唯一)")
                      ).Contains(r.Field<string>("所属仓库编码"))
                          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 = "库位表:{所属仓库编码}字段中有值在仓库表:{仓库编号(唯一)}中不存在";
                erro.ErrorField = "{*往来单位类型编码}";
                erro.ErrorCont = "往来单位表:{*往来单位类型编码}字段中有值在往来单位类型表:{*往来单位类型编号(唯一)}中不存在";
                list.Add(erro);
            }
            if (list.Count > 0)
@@ -2341,16 +2401,160 @@
        }
        #endregion
        #region【Excel上传数据验证,库位设置】
        public static List<ExcelErro> SevenData(string FileCode, out string StuCode, out string message, out int count)
        #region【Excel上传数据验证,仓库设置】
        public static List<ExcelErro> SixData(List<DataTable> excelTable, 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>();
            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() != "")
                {
                    sql = @"select *  from TSecStck 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[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 TSecStck 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);
                    }
                }
            }
            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;
            }
            return list;
        }
        #endregion
        #region【Excel上传数据验证,库位设置】
        public static List<ExcelErro> SevenData(List<DataTable> excelTable, 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>();
            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() != "")
                {
                    sql = @"select *  from TSecLoca 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[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 TSecLoca 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);
                    }
                }
                if (excelTable[0].Rows[k][2].ToString().Trim() != null && excelTable[0].Rows[k][2].ToString().Trim() != "")
                {
                    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)
                    {
                        ExcelErro erro = new ExcelErro();
                        erro.RoeNumber = "/";
                        erro.ErrorField = "{*所属仓库编码}";
                        erro.ErrorCont = "库位表:{*所属仓库编码}字段" + excelTable[1].Rows[k][1].ToString().Trim() + "不存在";
                        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);
                    }
                }
            }
            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;
            }
            return list;
        }
        #endregion
@@ -3369,8 +3573,8 @@
                        str = sql,
                        parm = new
                        {
                            usercode = excelTable[0].Rows[i][0].ToString().Trim(),
                            username = excelTable[0].Rows[i][1].ToString().Trim(),
                            postcode = excelTable[0].Rows[i][0].ToString().Trim(),
                            postname = excelTable[0].Rows[i][1].ToString().Trim(),
                            status = excelTable[0].Rows[i][2].ToString().Trim(),
                            description = excelTable[0].Rows[i][3].ToString().Trim(),
                            lm_user = us.usercode,
@@ -3593,53 +3797,55 @@
        #endregion
        #region【Excel数据上传,往来单位】
        public static string FiveSubmit(string FileCode, string User, out string StuCode)
        public static string FiveSubmit(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 k = 0; k < excelTable[0].Rows.Count; k++)
                {
                    string Type = "";
                    switch (excelTable.Rows[i][3].ToString().Trim())
                    {
                        case "供应商":
                            Type = "226";
                            break;
                        case "客户":
                            Type = "211";
                            break;
                        case "客户/供应商":
                            Type = "228";
                            break;
                        default:
                            break;
                    }
                    sql = @"insert into TCustomer(code,name,type,conttacts,conttphone,addr,lm_user,lm_date)
                            values(@code,@name,@type,@conttacts,@conttphone,@addr,@Operator,@CreateDate)";
                    sql = @"insert into TCustomerType(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.Rows[i][1].ToString().Trim(),
                            name = excelTable.Rows[i][2].ToString().Trim(),
                            type = Type,
                            conttacts = excelTable.Rows[i][4].ToString().Trim(),
                            conttphone = excelTable.Rows[i][5].ToString().Trim(),
                            addr = excelTable.Rows[i][6].ToString().Trim(),
                            Operator = User,
                            CreateDate = DateTime.Now.ToString()
                            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++)
                {
                    sql = @"insert into TCustomer(code,name,status,conttacts,conttphone,addr,customertype,lm_user,lm_date,data_sources)
                            values(@code,@name,@status,@conttacts,@conttphone,@addr,@customertype,@lm_user,@lm_date,@data_sources)";
                    list.Add(new
                    {
                        str = sql,
                        parm = new
                        {
                            code = excelTable[1].Rows[i][0].ToString().Trim(),
                            name = excelTable[1].Rows[i][1].ToString().Trim(),
                            status = excelTable[1].Rows[i][2].ToString().Trim(),
                            customertype = excelTable[1].Rows[i][3].ToString().Trim(),
                            conttacts = excelTable[1].Rows[i][4].ToString().Trim(),
                            conttphone = excelTable[1].Rows[i][5].ToString().Trim(),
                            addr = excelTable[1].Rows[i][6].ToString().Trim(),
                            lm_user = us.usercode,
                            lm_date = DateTime.Now.ToString(),
                            data_sources="MES"
                        }
                    });
                }
@@ -3665,7 +3871,7 @@
        #endregion
        #region【Excel数据上传,仓库设置】
        public static string SixSubmit(string FileCode, string User, out string StuCode)
        public static string SixSubmit(List<DataTable> excelTable, User us, out string StuCode)
        {
            string message = "";
            StuCode = "";
@@ -3675,42 +3881,24 @@
            try
            {
                list.Clear();
                List<DataTable> excelTable = new List<DataTable>();
                excelTable = ImportExcel.ExcelToTableList(FileCode);
                //导入仓库
                for (int k = 0; k < excelTable[0].Rows.Count; k++)
                for (int i = 0; i < excelTable[0].Rows.Count; i++)
                {
                    sql = @"insert into T_Sec_Stck(code,name,description,lm_user,lm_date)
                            values(@code,@name,@description,@Operator,@CreateDate)";
                    sql = @"insert into TSecStck(code,name,status,ishasPosition,description,lm_user,lm_date,data_sources)
                            values(@code,@name,@status,@ishasPosition,@description,@lm_user,@lm_date,@data_sources)";
                    list.Add(new
                    {
                        str = sql,
                        parm = new
                        {
                            code = excelTable[0].Rows[k][1].ToString().Trim(),
                            name = excelTable[0].Rows[k][2].ToString().Trim(),
                            description = excelTable[0].Rows[k][3].ToString().Trim(),
                            CreateDate = DateTime.Now.ToString(),
                            Operator = User
                        }
                    });
                }
                //导入库位
                for (int i = 0; i < excelTable[1].Rows.Count; i++)
                {
                    sql = @"insert into T_Sec_Loca(code,name,description,stock_code,lm_user,lm_date)
                            values(@code,@name,@description,@stock_code,@Operator,@CreateDate)";
                    list.Add(new
                    {
                        str = sql,
                        parm = new
                        {
                            code = excelTable[1].Rows[i][1].ToString().Trim(),
                            name = excelTable[1].Rows[i][2].ToString().Trim(),
                            stock_code = excelTable[1].Rows[i][3].ToString().Trim(),
                            description = excelTable[1].Rows[i][4].ToString().Trim(),
                            Operator = User,
                            CreateDate = DateTime.Now.ToString()
                            code = excelTable[0].Rows[i][0].ToString().Trim(),
                            name = excelTable[0].Rows[i][1].ToString().Trim(),
                            status = excelTable[0].Rows[i][2].ToString().Trim(),
                            ishasPosition = excelTable[0].Rows[i][3].ToString().Trim(),
                            description = excelTable[0].Rows[i][4].ToString().Trim(),
                            lm_user = us.usercode,
                            lm_date = DateTime.Now.ToString(),
                            data_sources="MES"
                        }
                    });
                }
@@ -3736,13 +3924,49 @@
        #endregion
        #region【Excel数据上传,库位设置】
        public static string SevenSubmit(string FileCode, string User, out string StuCode)
        public static string SevenSubmit(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 i = 0; i < excelTable[0].Rows.Count; i++)
                {
                    sql = @"insert into TSecLoca(code,name,idwarehouse,idparent,status,description,lm_user,lm_date,data_sources)
                            values(@code,@name,@idwarehouse,@idparent,@status,@description,@lm_user,@lm_date,@data_sources)";
                    list.Add(new
                    {
                        str = sql,
                        parm = new
                        {
                            code = excelTable[0].Rows[i][0].ToString().Trim(),
                            name = excelTable[0].Rows[i][1].ToString().Trim(),
                            idwarehouse = excelTable[0].Rows[i][2].ToString().Trim(),
                            idparent = excelTable[0].Rows[i][3].ToString().Trim(),
                            status = excelTable[0].Rows[i][4].ToString().Trim(),
                            description = excelTable[0].Rows[i][5].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)
            {
VueWebCoreApi/wwwroot/Excel/²Ö¿âÉèÖÃ.xls
Binary files differ
VueWebCoreApi/wwwroot/Excel/¿âλÉèÖÃ.xls
Binary files differ
VueWebCoreApi/wwwroot/Excel/ÍùÀ´µ¥Î».xls
Binary files differ