yl
2023-02-07 5ac69a2a0e5a0f1433b4497bc5273bdae656221c
VueWebApi/Tools/ImportExcelData.cs
@@ -822,10 +822,10 @@
                Message = "设备点检部位页签模板:表头信息不符合规范,第2列应为{点检项序号}";
                return Message;
            }
            else if (excelTable[1].Columns[2].ColumnName != "设备点检标准编号(唯一)")
            else if (excelTable[1].Columns[2].ColumnName != "设备点检标准编号")
            {
                code = "300";
                Message = "设备点检部位页签模板:表头信息不符合规范,第3列应为{设备点检标准编号(唯一)}";
                Message = "设备点检部位页签模板:表头信息不符合规范,第3列应为{设备点检标准编号}";
                return Message;
            }
            else if (excelTable[1].Columns[3].ColumnName != "设备点检部位编号(唯一)")
@@ -881,7 +881,7 @@
                return Message;
            }
            else if (excelTable[0].Columns.Count != 6)
            else if (excelTable[0].Columns.Count != 5)
            {
                code = "300";
                Message = "设备保养项目模板不符合规范,请检查列名字段数";
@@ -933,47 +933,95 @@
            code = "";
            List<DataTable> excelTable = new List<DataTable>();
            excelTable = ImportExcel.ExcelToTableList(FileCode);
            if (excelTable.Count != 2)
            if (excelTable.Count != 4)
            {
                code = "300";
                Message = "导入模板不符合规范,请检查sheet数";
                return Message;
            }
            else if (excelTable[0].Columns.Count != 6)
            else if (excelTable[0].Columns.Count != 5)
            {
                code = "300";
                Message = "设备保养项目模板不符合规范,请检查列名字段数";
                Message = "设备保养标准页签模板不符合规范,请检查列名字段数";
                return Message;
            }
            else if (excelTable[1].Columns.Count != 7)
            {
                code = "300";
                Message = "设备保养部位页签模板不符合规范,请检查列名字段数";
                return Message;
            }
            else if (excelTable[0].Columns[0].ColumnName != "序号")
            {
                code = "300";
                Message = "设备保养项目模板不符合规范:表头信息不符合规范,第1列应为{序号}";
                Message = "设备点检标准页签模板:表头信息不符合规范,第1列应为{序号}";
                return Message;
            }
            else if (excelTable[0].Columns[1].ColumnName != "保养项目编号(唯一)")
            else if (excelTable[0].Columns[1].ColumnName != "设备保养标准编号(唯一)")
            {
                code = "300";
                Message = "设备保养项目模板不符合规范:表头信息不符合规范,第2列应为{保养项目编号(唯一)}";
                Message = "设备保养标准页签模板:表头信息不符合规范,第2列应为{设备保养标准编号(唯一)}";
                return Message;
            }
            else if (excelTable[0].Columns[2].ColumnName != "保养项目名称")
            else if (excelTable[0].Columns[2].ColumnName != "设备保养标准名称")
            {
                code = "300";
                Message = "设备保养项目模板不符合规范:表头信息不符合规范,第3列应为{保养项目名称}";
                Message = "设备保养标准页签模板:表头信息不符合规范,第3列应为{设备保养标准名称}";
                return Message;
            }
            else if (excelTable[0].Columns[3].ColumnName != "是否扫码")
            else if (excelTable[0].Columns[3].ColumnName != "保养周期")
            {
                code = "300";
                Message = "设备保养项目模板不符合规范:表头信息不符合规范,第4列应为{是否扫码}";
                Message = "设备保养标准页签模板:表头信息不符合规范,第4列应为{保养周期}";
                return Message;
            }
            else if (excelTable[0].Columns[4].ColumnName != "保养项目要求")
            else if (excelTable[0].Columns[4].ColumnName != "标准描述")
            {
                code = "300";
                Message = "设备保养项目模板不符合规范:表头信息不符合规范,第4列应为{保养项目要求}";
                Message = "设备保养标准页签模板:表头信息不符合规范,第5列应为{标准描述}";
                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列应为{设备保养部位名称}";
                return Message;
            }
            else if (excelTable[1].Columns[5].ColumnName != "保养部位要求")
            {
                code = "300";
                Message = "设备保养部位页签模板:表头信息不符合规范,第6列应为{保养部位要求}";
                return Message;
            }
            else if (excelTable[1].Columns[6].ColumnName != "选择扫码")
            {
                code = "300";
                Message = "设备点检部位页签模板:表头信息不符合规范,第7列应为{选择扫码}";
                return Message;
            }
            else
@@ -2365,6 +2413,16 @@
            DataTable excelTable = new DataTable();
            list = ImportExcel.ExcelToTableErro(FileCode);    //验证Excel数据必填字段是否为空、唯一字段是否重复
            excelTable = ImportExcel.ExcelToTable(FileCode);  //获取Excel数据
            //当前Excel数据中点检标准页签中,设备点检标准编号(唯一是否有重复)
            DataTable distinct = excelTable.DefaultView.ToTable(true, "点检项目编号(唯一)");
            if (distinct.Rows.Count != excelTable.Rows.Count)
            {
                ExcelErro erro = new ExcelErro();
                erro.RoeNumber = "/";
                erro.ErrorField = "{点检项目编号(唯一)}";
                erro.ErrorCont = "设备点检项目页签模板:{点检项目编号(唯一)}有重复";
                list.Add(erro);
            }
            for (int i = 0; i < excelTable.Rows.Count; i++)
            {
                if (excelTable.Rows[i][1].ToString().Trim() != null && excelTable.Rows[i][1].ToString().Trim() != "")
@@ -2444,19 +2502,28 @@
                        list.Add(erro);
                    }
                    //通过设备点检标准页签模板中的标准编码查询设备点检部位页签模板中对应的数据信息
                    DataTable ds = excelTable[1].AsEnumerable().Where<DataRow>(C => C["设备点检标准编号"].ToString() == excelTable[0].Rows[j][1].ToString().Trim()).CopyToDataTable();
                    if (ds.Rows.Count > 0)
                    var var_dtTable = excelTable[1].AsEnumerable().Where<DataRow>(W => W["设备点检标准编号"].ToString() == excelTable[0].Rows[j][1].ToString().Trim());
                    DataTable ds = var_dtTable.Any() ? var_dtTable.CopyToDataTable() : excelTable[1].Clone();
                    if (ds.Rows.Count > 0)
                    {
                        //判断点检标准查询点检部位数据是否有重复
                        //判断保养标准查询保养部位数据是否有重复
                        DataTable distinct1 = ds.DefaultView.ToTable(true, "设备点检部位编号(唯一)");
                        if (distinct1.Rows.Count != ds.Rows.Count)
                        {
                            ExcelErro erro = new ExcelErro();
                            erro.RoeNumber = "/";
                            erro.ErrorField = "{设备点检部位编号(唯一)}";
                            erro.ErrorCont = "设备点检部位页签模板:{设备点检标准编号}:"+ excelTable[0].Rows[j][1].ToString().Trim() + " 对应{设备点检部位编号(唯一)}有重复";
                            erro.ErrorCont = "设备点检部位页签模板:{设备点检标准编号}:" + excelTable[1].Rows[j][2].ToString().Trim() + " 对应{设备点检部位编号(唯一)}有重复";
                            list.Add(erro);
                        }
                    }
                    else
                    {
                        ExcelErro erro = new ExcelErro();
                        erro.RoeNumber = "/";
                        erro.ErrorField = "{设备点检部位编号(唯一)}";
                        erro.ErrorCont = "设备点检部位页签模板:{设备点检标准编号}:" + excelTable[1].Rows[j][2].ToString().Trim() + " 在设备点检标准页签模板中不存在";
                        list.Add(erro);
                    }
                }
            }
@@ -2528,6 +2595,16 @@
            DataTable excelTable = new DataTable();
            list = ImportExcel.ExcelToTableErro(FileCode);    //验证Excel数据必填字段是否为空、唯一字段是否重复
            excelTable = ImportExcel.ExcelToTable(FileCode);  //获取Excel数据
            //当前Excel数据中点检标准页签中,设备点检标准编号(唯一是否有重复)
            DataTable distinct = excelTable.DefaultView.ToTable(true, "保养项目编号(唯一)");
            if (distinct.Rows.Count != excelTable.Rows.Count)
            {
                ExcelErro erro = new ExcelErro();
                erro.RoeNumber = "/";
                erro.ErrorField = "{保养项目编号(唯一)}";
                erro.ErrorCont = "设备保养项目页签模板:{保养项目编号(唯一)}有重复";
                list.Add(erro);
            }
            for (int i = 0; i < excelTable.Rows.Count; i++)
            {
                if (excelTable.Rows[i][1].ToString().Trim() != null && excelTable.Rows[i][1].ToString().Trim() != "")
@@ -2574,9 +2651,115 @@
            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 = "设备保养标准页签模板:{设备保养标准编号(唯一)}有重复";
                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 TEqpmai_Main where code=@code";
                    dynamicParams.Add("@code", 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);
                    }
                    //通过设备保养标准页签模板中的标准编码查询设备保养部位页签模板中对应的数据信息
                    var var_dtTable = excelTable[1].AsEnumerable().Where<DataRow>(W => W["设备保养标准编号"].ToString() == excelTable[0].Rows[j][1].ToString().Trim());
                    DataTable ds = var_dtTable.Any() ? var_dtTable.CopyToDataTable() : excelTable[1].Clone();
                    if (ds.Rows.Count > 0)
                    {
                        //判断保养标准查询保养部位数据是否有重复
                        DataTable distinct1 = ds.DefaultView.ToTable(true, "设备保养部位编号(唯一)");
                        if (distinct1.Rows.Count != ds.Rows.Count)
                        {
                            ExcelErro erro = new ExcelErro();
                            erro.RoeNumber = "/";
                            erro.ErrorField = "{设备保养部位编号(唯一)}";
                            erro.ErrorCont = "设备保养部位页签模板:{设备保养标准编号}:" + excelTable[1].Rows[j][2].ToString().Trim() + " 对应{设备保养部位编号(唯一)}有重复";
                            list.Add(erro);
                        }
                    }
                    else
                    {
                        ExcelErro erro = new ExcelErro();
                        erro.RoeNumber = "/";
                        erro.ErrorField = "{设备保养部位编号(唯一)}";
                        erro.ErrorCont = "设备保养部位页签模板:{设备保养标准编号}:" + excelTable[1].Rows[j][2].ToString().Trim() + " 在设备保养标准页签模板中不存在";
                        list.Add(erro);
                    }
                }
            }
            //当前Excel数据中点检部位页签中,设备保养部位编号(唯一)在设备保养部位表中是否存在
            for (int k = 0; k < excelTable[1].Rows.Count; k++)
            {
                if (excelTable[1].Rows[k][3].ToString().Trim() != null && excelTable[1].Rows[k][3].ToString().Trim() != "")
                {
                    sql = @"select *  from TEqpmai_Item where code=@code";
                    dynamicParams.Add("@code", excelTable[1].Rows[k][3].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;
        }
        #endregion
@@ -2987,26 +3170,27 @@
                        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);
                    //    }
                    //}
                    //判断同母件对应的子件是否重复
                    DataTable distinct1 = ds.DefaultView.ToTable(true, "子件编码");
                    if (distinct1.Rows.Count != ds.Rows.Count)
                    var var_dtTable = excelTable[1].AsEnumerable().Where<DataRow>(W => W["主表序列号"].ToString() == excelTable[0].Rows[j][0].ToString().Trim());
                    DataTable ds = var_dtTable.Any() ? var_dtTable.CopyToDataTable() : excelTable[1].Clone();
                    if (ds.Rows.Count > 0)
                    {
                        //判断同母件对应的子件是否重复
                        DataTable distinct1 = ds.DefaultView.ToTable(true, "子件编码");
                        if (distinct1.Rows.Count != ds.Rows.Count)
                        {
                            ExcelErro erro = new ExcelErro();
                            erro.RoeNumber = "/";
                            erro.ErrorField = "{子件编码}";
                            erro.ErrorCont = "物料清单对应子件信息页签模板:主表序列号:【" + excelTable[1].Rows[j]["主表序列号"].ToString() + "】对应{子件编码}有重复";
                            list.Add(erro);
                        }
                    }
                    else
                    {
                        ExcelErro erro = new ExcelErro();
                        erro.RoeNumber = "/";
                        erro.ErrorField = "{子件编码}";
                        erro.ErrorCont = "物料清单对应子件信息页签模板:主表序列号:【"+ excelTable[0].Rows[j]["主表序列号"].ToString() + "】对应{子件编码}有重复";
                        erro.ErrorField = "{主表序列号}";
                        erro.ErrorCont = "物料清单对应子件信息页签模板:{主表序列号}:" + excelTable[1].Rows[j][1].ToString().Trim() + " 在母件信息页签模板中不存在";
                        list.Add(erro);
                    }
                }
@@ -3651,7 +3835,7 @@
                        default:
                            break;
                    }
                    sql = @"insert into TEqpchk_Deta(seq,code,name,eqpchk_main_code,description,isscan,cycle,lm_user,lm_date)
                    sql = @"insert into TEqpchk_Deta(seq,code,name,eqpchk_main_code,chkdesc,isscan,cycle,lm_user,lm_date)
                            values(@seq,@code,@name,@eqpchk_main_code,@description,@isscan,@cycle,@Operator,@CreateDate)";
                    list.Add(new
                    {
@@ -3728,7 +3912,7 @@
                    //    default:
                    //        break;
                    //}
                    switch (excelTable.Rows[i][4].ToString().Trim())
                    switch (excelTable.Rows[i][3].ToString().Trim())
                    {
                        case "是":
                            IsScan = "Y";
@@ -3740,7 +3924,7 @@
                            break;
                    }
                    sql = @"insert into TEqpmai_Item(code,name,description,isscan,cycle,lm_user,lm_date) 
                            values(@code,@name,@descr,@Operator,@CreateDate)";
                            values(@code,@name,@descr,@isscan,@cycle,@Operator,@CreateDate)";
                    list.Add(new
                    {
                        str = sql,
@@ -3748,7 +3932,7 @@
                        {
                            code = excelTable.Rows[i][1].ToString().Trim(),
                            name = excelTable.Rows[i][2].ToString().Trim(),
                            descr = excelTable.Rows[i][5].ToString().Trim(),
                            descr = excelTable.Rows[i][4].ToString().Trim(),
                            isscan = IsScan,
                            cycle = "",
                            Operator = User,
@@ -3782,9 +3966,83 @@
        {
            string message = "";
            StuCode = "";
            string sql = "";
            List<object> list = new List<object>();
            var dynamicParams = new DynamicParameters();
            try
            {
                list.Clear();
                List<DataTable> excelTable = new List<DataTable>();
                excelTable = ImportExcel.ExcelToTableList(FileCode);
                //导入设备保养标准主表
                for (int k = 0; k < excelTable[0].Rows.Count; k++)
                {
                    string Type = "";
                    switch (excelTable[0].Rows[k][3].ToString().Trim())
                    {
                        case "年":
                            Type = "Y";
                            break;
                        case "季":
                            Type = "S";
                            break;
                        case "月":
                            Type = "M";
                            break;
                        case "周":
                            Type = "W";
                            break;
                        default:
                            break;
                    }
                    sql = @"insert into TEqpmai_Main(code,name,description,main_cycle,lm_user,lm_date)
                            values(@code,@name,@description,@main_cycle,@Operator,@CreateDate)";
                    list.Add(new
                    {
                        str = sql,
                        parm = new
                        {
                            code = excelTable[0].Rows[k][1].ToString().Trim(),
                            name = excelTable[0].Rows[k][2].ToString().Trim(),
                            main_cycle = Type,
                            description = excelTable[0].Rows[k][4].ToString().Trim(),
                            CreateDate = DateTime.Now.ToString(),
                            Operator = User
                        }
                    });
                }
                //导入设备保养标准部位子表
                for (int i = 0; i < excelTable[1].Rows.Count; i++)
                {
                    sql = @"insert into TEqpmai_Deta(seq,code,name,eapmai_code,chk_desc,isscan,lm_user,lm_date)
                            values(@seq,@code,@name,@eapmai_code,@description,@isscan,@Operator,@CreateDate)";
                    list.Add(new
                    {
                        str = sql,
                        parm = new
                        {
                            seq = excelTable[1].Rows[i][1].ToString().Trim(),
                            code = excelTable[1].Rows[i][3].ToString().Trim(),
                            name = excelTable[1].Rows[i][4].ToString().Trim(),
                            eapmai_code = excelTable[1].Rows[i][2].ToString().Trim(),
                            description = excelTable[1].Rows[i][5].ToString().Trim(),
                            isscan = excelTable[1].Rows[i][6].ToString().Trim(),
                            Operator = User,
                            CreateDate = DateTime.Now.ToString()
                        }
                    });
                }
                bool aa = DapperHelper.DoTransaction(list);
                if (aa)
                {
                    StuCode = "200";
                    message = "导入成功!";
                }
                else
                {
                    StuCode = "300";
                    message = "导入失败!";
                }
            }
            catch (Exception e)
            {