| | |
| | | else if (excelTable[0].Columns[0].ColumnName != "序号") |
| | | { |
| | | code = "300"; |
| | | Message = "用户班组模板:表头信息不符合规范,第1列应为{序号}"; |
| | | Message = "仓库清单模板:表头信息不符合规范,第1列应为{序号}"; |
| | | return Message; |
| | | } |
| | | else if (excelTable[0].Columns[1].ColumnName != "仓库编号(唯一)") |
| | |
| | | if (excelTable.Count != 2) |
| | | { |
| | | code = "300"; |
| | | Message = "模板不符合规范,缺失的Sheet"; |
| | | Message = "导入模板不符合规范,请检查Sheet数"; |
| | | } |
| | | else if (excelTable[0].Columns.Count != 6) |
| | | { |
| | | code = "300"; |
| | | Message = "模板不符合规范,请检查列名字段数"; |
| | | Message = "物料清单模板(母件信息)不符合规范,请检查列名字段数"; |
| | | } |
| | | else if (excelTable[1].Columns.Count != 8) |
| | | else if (excelTable[1].Columns.Count != 9) |
| | | { |
| | | code = "300"; |
| | | Message = "模板不符合规范,请检查列名字段数"; |
| | | Message = "物料清单模板(子件信息)不符合规范,请检查列名字段数"; |
| | | } |
| | | else if (excelTable[0].Columns[0].ColumnName != "序号") |
| | | { |
| | | code = "300"; |
| | | Message = "模板不符合规范,请检查列名"; |
| | | Message = "物料清单模板(母件):表头信息不符合规范,第1列应为{序号}"; |
| | | } |
| | | else if (excelTable[0].Columns[1].ColumnName != "母件编码") |
| | | { |
| | | code = "300"; |
| | | Message = "模板不符合规范,请检查列名"; |
| | | Message = "物料清单模板(母件):表头信息不符合规范,第2列应为{母件编码}"; |
| | | } |
| | | else if (excelTable[0].Columns[2].ColumnName != "母件名称") |
| | | { |
| | | code = "300"; |
| | | Message = "模板不符合规范,请检查列名"; |
| | | Message = "物料清单模板(母件):表头信息不符合规范,第3列应为{母件名称}"; |
| | | } |
| | | else if (excelTable[0].Columns[3].ColumnName != "基础数量") |
| | | { |
| | | code = "300"; |
| | | Message = "模板不符合规范,请检查列名"; |
| | | Message = "物料清单模板(母件):表头信息不符合规范,第4列应为{基础数量}"; |
| | | } |
| | | else if (excelTable[0].Columns[4].ColumnName != "启用状态") |
| | | { |
| | | code = "300"; |
| | | Message = "模板不符合规范,请检查列名"; |
| | | Message = "物料清单模板(母件):表头信息不符合规范,第5列应为{启用状态}"; |
| | | } |
| | | else if (excelTable[0].Columns[5].ColumnName != "版本号") |
| | | { |
| | | code = "300"; |
| | | Message = "模板不符合规范,请检查列名"; |
| | | Message = "物料清单模板(母件):表头信息不符合规范,第6列应为{版本号}"; |
| | | } |
| | | else if (excelTable[1].Columns[0].ColumnName != "序号") |
| | | { |
| | | code = "300"; |
| | | Message = "模板不符合规范,请检查列名"; |
| | | Message = "物料清单模板(子件):表头信息不符合规范,第1列应为{序号}"; |
| | | } |
| | | else if (excelTable[1].Columns[1].ColumnName != "主表序列号") |
| | | { |
| | | code = "300"; |
| | | Message = "模板不符合规范,请检查列名"; |
| | | Message = "物料清单模板(子件):表头信息不符合规范,第2列应为{主表序列号}"; |
| | | } |
| | | else if (excelTable[1].Columns[2].ColumnName != "子件编码") |
| | | else if (excelTable[1].Columns[2].ColumnName != "子件顺序号") |
| | | { |
| | | code = "300"; |
| | | Message = "模板不符合规范,请检查列名"; |
| | | Message = "物料清单模板(子件):表头信息不符合规范,第3列应为{子件顺序号}"; |
| | | } |
| | | else if (excelTable[1].Columns[3].ColumnName != "子件名称") |
| | | else if (excelTable[1].Columns[3].ColumnName != "子件编码") |
| | | { |
| | | code = "300"; |
| | | Message = "模板不符合规范,请检查列名"; |
| | | Message = "物料清单模板(子件):表头信息不符合规范,第4列应为{子件编码}"; |
| | | } |
| | | else if (excelTable[1].Columns[4].ColumnName != "发料仓库") |
| | | else if (excelTable[1].Columns[4].ColumnName != "子件名称") |
| | | { |
| | | code = "300"; |
| | | Message = "模板不符合规范,请检查列名"; |
| | | Message = "物料清单模板(子件):表头信息不符合规范,第5列应为{子件名称}"; |
| | | } |
| | | else if (excelTable[1].Columns[5].ColumnName != "基本用量") |
| | | else if (excelTable[1].Columns[5].ColumnName != "发料仓库") |
| | | { |
| | | code = "300"; |
| | | Message = "模板不符合规范,请检查列名"; |
| | | Message = "物料清单模板(子件):表头信息不符合规范,第6列应为{发料仓库}"; |
| | | } |
| | | else if (excelTable[1].Columns[6].ColumnName != "损耗率(%)") |
| | | else if (excelTable[1].Columns[6].ColumnName != "基本用量") |
| | | { |
| | | code = "300"; |
| | | Message = "模板不符合规范,请检查列名"; |
| | | Message = "物料清单模板(子件):表头信息不符合规范,第7列应为{基本用量}"; |
| | | } |
| | | else if (excelTable[1].Columns[7].ColumnName != "属性") |
| | | else if (excelTable[1].Columns[7].ColumnName != "损耗率(%)") |
| | | { |
| | | code = "300"; |
| | | Message = "模板不符合规范,请检查列名"; |
| | | Message = "物料清单模板(子件):表头信息不符合规范,第8列应为{损耗率(%)}"; |
| | | } |
| | | else if (excelTable[1].Columns[8].ColumnName != "实际用量") |
| | | { |
| | | code = "300"; |
| | | Message = "物料清单模板(子件):表头信息不符合规范,第9列应为{实际用量}"; |
| | | } |
| | | else if (excelTable[1].Columns[9].ColumnName != "属性") |
| | | { |
| | | code = "300"; |
| | | Message = "物料清单模板(子件):表头信息不符合规范,第10列应为{属性}"; |
| | | } |
| | | else |
| | | { |
| | |
| | | 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数据 |
| | | //Excel查询母件+版本号是否重复 |
| | | DataTable distinct = excelTable[0].DefaultView.ToTable(true, "母件编码, 版本号"); |
| | | if (distinct.Rows.Count != excelTable[0].Rows.Count) |
| | | { |
| | | ExcelErro erro = new ExcelErro(); |
| | | erro.RoeNumber = "/"; |
| | | erro.ErrorField = "{版本号}"; |
| | | erro.ErrorCont = "Bom母件表:{母件编码}对应的{版本号}有重复"; |
| | | 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); |
| | | } |
| | | //数据库查询母件+版本号是否存在 |
| | | 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() != "") |
| | | { |
| | | sql = @"select * from TBom_Main where materiel_code=@code and version=@version"; |
| | | dynamicParams.Add("@code", excelTable[0].Rows[j][1].ToString().Trim()); |
| | | dynamicParams.Add("@version", excelTable[0].Rows[j][5].ToString().Trim()); |
| | | dt = DapperHelper.selectdata(sql, dynamicParams); |
| | | if (dt.Rows.Count > 0) |
| | | { |
| | | ExcelErro erro = new ExcelErro(); |
| | | erro.RoeNumber = "/"; |
| | | erro.ErrorField = "{母件编码}"; |
| | | erro.ErrorCont = "Bom母件表:{母件编码}字段" + excelTable[0].Rows[j][1].ToString().Trim() + "对应的版本号:"+ excelTable[0].Rows[j][5].ToString() + "已存在"; |
| | | list.Add(erro); |
| | | } |
| | | //查询母件信息对应的子件信息 |
| | | DataTable ds = excelTable[1].AsEnumerable().Where<DataRow>(C => C["主表序列号"].ToString() == excelTable[0].Rows[j][0].ToString().Trim()).CopyToDataTable(); |
| | | for (int i = 0; i < ds.Rows.Count; i++) |
| | | { |
| | | if (excelTable[0].Rows[j][1].ToString().Trim() == ds.Rows[i]["子件编码"].ToString().Trim()) |
| | | { |
| | | ExcelErro erro = new ExcelErro(); |
| | | erro.RoeNumber = "/"; |
| | | erro.ErrorField = "{子件编码}"; |
| | | erro.ErrorCont = "子件信息:{子件编码}字段" + ds.Rows[i]["子件编码"].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 + excelTable[1].Rows.Count; |
| | | } |
| | | return list; |
| | | } |
| | | #endregion |
| | |
| | | #region【Excel数据上传,物料清单】 |
| | | public static string TwentyOneSubmit(string FileCode, string User, out string StuCode) |
| | | { |
| | | string message = ""; |
| | | StuCode = ""; |
| | | string message = ""; StuCode = ""; |
| | | string sql = ""; |
| | | int BomID = 0; //最大id |
| | | List<object> list = new List<object>(); |
| | | var dynamicParams = new DynamicParameters(); |
| | | try |
| | | { |
| | | |
| | | list.Clear(); |
| | | List<DataTable> excelTable = new List<DataTable>(); |
| | | excelTable = ImportExcel.ExcelToTableList(FileCode); |
| | | //获取主表当前最大ID |
| | | BomID = DapperHelper.insertReturnId("TBom_Main"); |
| | | //导入Bom主表 |
| | | for (int k = 0; k < excelTable[0].Rows.Count; k++) |
| | | { |
| | | BomID = BomID + 1; |
| | | sql = @"insert into TBom_Main(materiel_code,quantity,status,version,lm_user,lm_date) |
| | | values(@materiel_code,@quantity,@status,@version,@lm_user,@lm_date)"; |
| | | list.Add(new |
| | | { |
| | | str = sql, |
| | | parm = new |
| | | { |
| | | materiel_code = excelTable[0].Rows[k][1].ToString().Trim(), |
| | | quantity = excelTable[0].Rows[k][3].ToString().Trim(), |
| | | status = excelTable[0].Rows[k][4].ToString().Trim(), |
| | | version = excelTable[0].Rows[k][5].ToString().Trim(), |
| | | CreateDate = DateTime.Now.ToString(), |
| | | Operator = User |
| | | } |
| | | }); |
| | | //查询母件信息对应的子件信息 |
| | | DataTable ds = excelTable[1].AsEnumerable().Where(item => item["主表序列号"].ToString().Equals(excelTable[0].Rows[k][0].ToString())).CopyToDataTable(); |
| | | //导入Bom子表 |
| | | for (int i = 0; i < ds.Rows.Count; i++) |
| | | { |
| | | sql = @"insert into TBom_Deta(m_id,seq,smateriel_code,base_quantity,loss_quantity,total_quantity,pn_type) |
| | | values(@m_id,@seq,@smateriel_code,@base_quantity,@loss_quantity,@total_quantity,@pn_type)"; |
| | | list.Add(new |
| | | { |
| | | str = sql, |
| | | parm = new |
| | | { |
| | | m_id = BomID, |
| | | seq = ds.Rows[i][2].ToString().Trim(), |
| | | smateriel_code = ds.Rows[i][3].ToString().Trim(), |
| | | base_quantity = ds.Rows[i][6].ToString().Trim(), |
| | | loss_quantity = ds.Rows[i][7].ToString().Trim(), |
| | | total_quantity = ds.Rows[i][8].ToString().Trim(), |
| | | pn_type = ds.Rows[i][9].ToString().Trim() |
| | | } |
| | | }); |
| | | } |
| | | } |
| | | |
| | | bool aa = DapperHelper.DoTransaction(list); |
| | | if (aa) |
| | | { |
| | | StuCode = "200"; |
| | | message = "导入成功!"; |
| | | } |
| | | else |
| | | { |
| | | StuCode = "300"; |
| | | message = "导入失败!"; |
| | | } |
| | | } |
| | | catch (Exception e) |
| | | { |