Pengxy 10 meses atrás
pai
commit
c116ce9458

+ 543 - 432
MicroServices/Business/Business.Application/SqeManagement/SqeExcelService.cs

@@ -540,6 +540,28 @@ namespace Business.VSM
                     stringBuilder.AppendLine("导入数据信息不存在!");
                     return stringBuilder.ToString();
                 }
+                //产品特性的文件格式校验
+                if (datas[0].c1.CompareTo("产品过程检验记录") != 0)
+                {
+                    stringBuilder.AppendLine("文件不是【产品过程检验记录】要求的格式");
+                    return stringBuilder.ToString();
+                }
+                if (datas[1].c1.CompareTo("生产时间") != 0
+                    || datas[1].c3.CompareTo("生产班次") != 0
+                    || datas[1].c5.CompareTo("物料号") != 0
+                    || datas[1].c7.CompareTo("物料名称") != 0)
+                {
+                    stringBuilder.AppendLine("文件不是【产品过程检验记录】要求的格式");
+                    return stringBuilder.ToString();
+                }
+                if (datas[2].c1.CompareTo("对应原材料批次号") != 0
+                    || datas[2].c3.CompareTo("原材料使用数量") != 0
+                    || datas[2].c5.CompareTo("物料批次号") != 0
+                    || datas[2].c7.CompareTo("物料数量") != 0)
+                {
+                    stringBuilder.AppendLine("文件不是【产品过程检验记录】要求的格式");
+                    return stringBuilder.ToString();
+                }
 
                 string errorMsg;
                 sqe_cto_test test = File_data_ToModel_test(datas, create_by, create_date, create_org, out errorMsg);
@@ -1434,6 +1456,29 @@ namespace Business.VSM
                     return stringBuilder.ToString();
                 }
 
+                //产品过程特性的文件格式校验
+                if (datas[0].c1.CompareTo("产品过程特性") != 0)
+                {
+                    stringBuilder.AppendLine("文件不是【产品过程特性】要求的格式");
+                    return stringBuilder.ToString();
+                }
+                if (datas[1].c1.CompareTo("生产时间") != 0
+                    || datas[1].c3.CompareTo("生产班次") != 0
+                    || datas[1].c5.CompareTo("物料名称") != 0
+                    || datas[1].c7.CompareTo("物料号") != 0)
+                {
+                    stringBuilder.AppendLine("文件不是【产品过程特性】要求的格式");
+                    return stringBuilder.ToString();
+                }
+                if (datas[2].c1.CompareTo("对应原材料批次号") != 0
+                    || datas[2].c3.CompareTo("原材料使用数量") != 0
+                    || datas[2].c5.CompareTo("物料批次号") != 0
+                    || datas[2].c7.CompareTo("物料数量") != 0)
+                {
+                    stringBuilder.AppendLine("文件不是【产品过程特性】要求的格式");
+                    return stringBuilder.ToString();
+                }
+
                 string errorMsg;
                 sqe_cto_process test = File_data_ToModel_process(datas, create_by, create_date, create_org, out errorMsg);
                 if (errorMsg != null && errorMsg.Length > 0)
@@ -2269,15 +2314,17 @@ namespace Business.VSM
         }
         #endregion 产品过程特性
 
+
+
         /// <summary>
-        /// 依据导入的数据行,生成OQC的表头、检验标准和数据行
+        /// 依据导入的数据行,生成OP的表头、检验标准和数据行
         /// </summary>
         /// <param name="upload_id"></param>
         /// <param name="create_by"></param>
         /// <param name="create_date"></param>
         /// <param name="create_org"></param>
         /// <returns></returns>
-        public string Import_Oqc_From_Data(int upload_id, string create_by, DateTime create_date, string create_org)
+        public string Import_Op_From_Data(int upload_id, string create_by, DateTime create_date, string create_org)
         {
             StringBuilder stringBuilder = new StringBuilder();
             try
@@ -2289,40 +2336,52 @@ namespace Business.VSM
                     stringBuilder.AppendLine("导入数据信息不存在!");
                     return stringBuilder.ToString();
                 }
+                //出货检验记录的文件格式校验
+                if (datas[0].c1.CompareTo("物料名称") != 0
+                    || datas[0].c2.CompareTo("批次号") != 0
+                    || datas[0].c3.CompareTo("工序") != 0
+                    || datas[0].c4.CompareTo("总数量") != 0
+                    || datas[0].c5.CompareTo("良品数") != 0
+                    || datas[0].c6.CompareTo("不良品数") != 0
+                    || datas[0].c7.CompareTo("不良率") != 0)
+                {
+                    stringBuilder.AppendLine("文件不是【全检工序】要求的格式");
+                    return stringBuilder.ToString();
+                }
 
                 string errorMsg;
-                sqe_oqc test = File_data_ToModel_oqc(datas, create_by, create_date, create_org, out errorMsg);
+                sqe_op test = File_data_ToModel_op(datas, create_by, create_date, create_org, out errorMsg);
                 if (errorMsg != null && errorMsg.Length > 0)
                 {
                     stringBuilder.AppendLine(errorMsg);
                     return stringBuilder.ToString();
                 }
 
-                _sqe_oqc.BeginTransaction();
-                _sqe_oqc.Insert(test);
+                _sqe_op.BeginTransaction();
+                _sqe_op.Insert(test);
 
                 errorMsg = null;
-                List<sqe_oqc_standard> standards = File_data_ToModel_oqc_standard(datas, test, create_by, create_date, create_org, out errorMsg);
+                List<sqe_op_data> standards = File_data_ToModel_op_data(datas, test, create_by, create_date, create_org, out errorMsg);
                 if (errorMsg != null && errorMsg.Length > 0)
                 {
-                    _sqe_oqc.Rollback();
+                    _sqe_op.Rollback();
                     stringBuilder.AppendLine(errorMsg);
                     return stringBuilder.ToString();
                 }
-                _sqe_oqc_standard.BeginTransaction();
-                _sqe_oqc_standard.Insert(standards);
+                _sqe_op_data.BeginTransaction();
+                _sqe_op_data.Insert(standards);
 
-                List<sqe_oqc_data> test_Datas = File_data_ToModel_oqc_data(datas, test, standards, create_by, create_date, create_org, out errorMsg);
+                List<sqe_op_data_detail> test_Datas = File_data_ToModel_op_data_detail(datas, test, standards, create_by, create_date, create_org, out errorMsg);
                 if (errorMsg != null && errorMsg.Length > 0)
                 {
-                    _sqe_oqc.Rollback();
-                    _sqe_oqc_standard.Rollback();
+                    _sqe_op.Rollback();
+                    _sqe_op_data.Rollback();
                     stringBuilder.AppendLine(errorMsg);
                     return stringBuilder.ToString();
                 }
-                _sqe_oqc_data.Insert(test_Datas);
-                _sqe_oqc.CommitTransaction();
-                _sqe_oqc_standard.CommitTransaction();
+                _sqe_op_data_detail.Insert(test_Datas);
+                _sqe_op.CommitTransaction();
+                _sqe_op_data.CommitTransaction();
             }
             catch (Exception ex)
             {
@@ -2334,10 +2393,10 @@ namespace Business.VSM
             return stringBuilder.ToString();
         }
 
-        #region OQC
+        #region OP
 
         /// <summary>
-        /// 从原始数据行生成OQC的表头数据
+        /// 从原始数据行生成OP的表头数据
         /// </summary>
         /// <param name="datas"></param>
         /// <param name="create_by"></param>
@@ -2345,260 +2404,142 @@ namespace Business.VSM
         /// <param name="create_org"></param>
         /// <param name="errorMsg"></param>
         /// <returns></returns>
-        public sqe_oqc File_data_ToModel_oqc(List<sqe_file_data> datas, string create_by, DateTime create_date, string create_org, out string errorMsg)
+        public sqe_op File_data_ToModel_op(List<sqe_file_data> datas, string create_by, DateTime create_date, string create_org, out string errorMsg)
+        {
+            sqe_op model = new sqe_op();
+            model.create_by = create_by;
+            model.create_date = create_date;
+            model.create_org = create_org;
+            errorMsg = string.Empty;
+            errorMsg = "";
+            return model;
+        }
+
+        /// <summary>
+        /// 从原始数据行生成OP的检验标准
+        /// </summary>
+        /// <param name="datas"></param>
+        /// <param name="test"></param>
+        /// <param name="create_by"></param>
+        /// <param name="create_date"></param>
+        /// <param name="create_org"></param>
+        /// <param name="errorMsg"></param>
+        /// <returns></returns>
+        public List<sqe_op_data> File_data_ToModel_op_data(List<sqe_file_data> datas, sqe_op test, string create_by, DateTime create_date, string create_org, out string errorMsg)
         {
             StringBuilder stringBuilder = new StringBuilder();
 
-            sqe_oqc model = new sqe_oqc();
-            DateTime timeValue;
+            List<sqe_op_data> modelList = new List<sqe_op_data>();
             decimal realValuel;
-            if (datas != null && datas.Count >= 4)
+            if (datas != null && datas.Count > 1)
             {
-                try
+                for (int i = 1; i < datas.Count; i++)
                 {
-                    sqe_file_data data = datas[1];
-                    model.supp_no = data.c2;
-                    model.item_name = data.c4;
-                    model.item_no = data.c6;
-                    model.item_version = data.c8;
+                    sqe_op_data model = new sqe_op_data();
+                    sqe_file_data dataRow = datas[i];
+                    if ((dataRow.c1 == null || dataRow.c1.Length == 0) && (dataRow.c2 == null || dataRow.c2.Length == 0))
+                    {
+                        break;
+                    }
 
-                    data = datas[2];
-                    if (DateTime.TryParse(data.c2, out timeValue))
+                    model.item_name = dataRow.c1;
+                    model.batch_no = dataRow.c2;
+                    model.op_no = dataRow.c3;
+                    Object obj = GetFieldValue(dataRow, "c4");
+                    if (obj != null && decimal.TryParse(obj.ToString(), out realValuel))
                     {
-                        model.product_time = timeValue;
+                        model.qty_all = realValuel;
                     }
-                    else
+                    obj = GetFieldValue(dataRow, "c5");
+                    if (obj != null && decimal.TryParse(obj.ToString(), out realValuel))
                     {
-                        model.product_time = DateTime.Now;
+                        model.qty_ok = realValuel;
                     }
-                    model.batch_no = data.c4;
-                    if (decimal.TryParse(data.c6, out realValuel))
+                    obj = GetFieldValue(dataRow, "c6");
+                    if (obj != null && decimal.TryParse(obj.ToString(), out realValuel))
                     {
-                        model.batch_qty = realValuel;
+                        model.qty_error = realValuel;
                     }
-                    model.test_person = data.c8;
-
-                    data = datas[3];
-                    model.sampling_standard = data.c2;
-                    if (decimal.TryParse(data.c4, out realValuel))
+                    obj = GetFieldValue(dataRow, "c7");
+                    if (obj != null && decimal.TryParse(obj.ToString(), out realValuel))
                     {
-                        model.sampling_number = realValuel;
+                        model.percent_ok = realValuel;
                     }
-                    model.test_result = data.c8;
-                }
-                catch (Exception ex)
-                {
-                    WLLog.Error("Excel数据解析问题:", ex);
+                    obj = GetFieldValue(dataRow, "c8");
+                    if (obj != null && decimal.TryParse(obj.ToString(), out realValuel))
+                    {
+                        model.percent_error = realValuel;
+                    }
+                    model.op_time = DateTime.Now;
+                    model.create_by = create_by;
+                    model.create_date = create_date;
+                    model.create_org = create_org;
+                    modelList.Add(model);
                 }
-                model.create_by = create_by;
-                model.create_date = create_date;
-                model.create_org = create_org;
-                errorMsg = string.Empty;
-                return model;
-            }
-            else
-            {
-                errorMsg = stringBuilder.ToString();
-                return null;
             }
+            errorMsg = stringBuilder.ToString();
+            return modelList;
         }
 
         /// <summary>
-        /// 从原始数据行生成OQC的检验标准
+        /// 从原始数据行生成OP的数据
         /// </summary>
         /// <param name="datas"></param>
         /// <param name="test"></param>
+        /// <param name="standards"></param>
         /// <param name="create_by"></param>
         /// <param name="create_date"></param>
         /// <param name="create_org"></param>
         /// <param name="errorMsg"></param>
         /// <returns></returns>
-        public List<sqe_oqc_standard> File_data_ToModel_oqc_standard(List<sqe_file_data> datas, sqe_oqc test, string create_by, DateTime create_date, string create_org, out string errorMsg)
+        public List<sqe_op_data_detail> File_data_ToModel_op_data_detail(List<sqe_file_data> datas, sqe_op test, List<sqe_op_data> standards, string create_by, DateTime create_date, string create_org, out string errorMsg)
         {
             StringBuilder stringBuilder = new StringBuilder();
 
-            List<sqe_oqc_standard> modelList = new List<sqe_oqc_standard>();
+            List<sqe_op_data_detail> modelList = new List<sqe_op_data_detail>();
             decimal realValuel;
-            if (datas != null && datas.Count >= 13)
+            if (datas != null && datas.Count > 1)
             {
-                try
+                for (int i = 1; i < datas.Count && i - 1 < standards.Count; i++)
                 {
-                    //标准的起始位置
-                    int index = 4;
-                    sqe_file_data dataRow = datas[index];
-                    #region 处理尺寸的表头
-                    for (int i = 2; i < 10; i++)
+                    sqe_file_data dataRow = datas[i];
+                    List<sqe_op_data_detail> testDatas = new List<sqe_op_data_detail>();
+                    for (int j = 9; j < 50; j += 4)
                     {
-                        Object obj = GetFieldValue(dataRow, "c" + i.ToString());
-                        if (obj != null)
-                        {
-                            sqe_oqc_standard model = new sqe_oqc_standard();
-                            model.standard_no = obj.ToString();
-                            model.create_by = create_by;
-                            model.create_date = create_date;
-                            model.create_org = create_org;
-                            model.oqc_id = test.id;
-                            modelList.Add(model);
-                        }
-                        else
+                        Object obj = GetFieldValue(dataRow, "c" + j.ToString());
+                        if (obj != null && obj.ToString().Length > 0)
                         {
-                            break;
-                        }
-                    }
-                    #endregion 处理尺寸的表头
+                            sqe_op_data_detail data = new sqe_op_data_detail();
+                            data.op_id = standards[i - 1].op_id;
+                            data.op_data_id = standards[i - 1].id;
+                            data.bad_type = obj.ToString();
 
-                    //处理表头的具体值
-                    for (int i = 0; i < 9 && i < modelList.Count; i++)
-                    {
-                        string fieldName = "c" + (i + 2).ToString();
-                        sqe_oqc_standard model = modelList[i];
-                        dataRow = datas[index + 1];
-                        Object obj = GetFieldValue(dataRow, fieldName);
-                        if (obj != null)
-                        {
-                            model.standard_no = obj.ToString();
-                        }
-                        dataRow = datas[index + 2];
-                        obj = GetFieldValue(dataRow, fieldName);
-                        if (obj != null && decimal.TryParse(obj.ToString(), out realValuel))
-                        {
-                            model.standard_value = realValuel;
-                        }
+                            obj = GetFieldValue(dataRow, "c" + (j + 1).ToString());
+                            if (obj != null && decimal.TryParse(obj.ToString(), out realValuel))
+                            {
+                                data.bad_qty = realValuel;
+                            }
 
-                        dataRow = datas[index + 3];
-                        obj = GetFieldValue(dataRow, fieldName);
-                        if (obj != null && decimal.TryParse(obj.ToString(), out realValuel))
-                        {
-                            model.delta_up = realValuel;
-                        }
+                            obj = GetFieldValue(dataRow, "c" + (j + 2).ToString());
+                            if (obj != null && decimal.TryParse(obj.ToString(), out realValuel))
+                            {
+                                data.percent_bad_all = realValuel;
+                            }
 
-                        dataRow = datas[index + 4];
-                        obj = GetFieldValue(dataRow, fieldName);
-                        if (obj != null && decimal.TryParse(obj.ToString(), out realValuel))
-                        {
-                            model.delta_down = realValuel;
-                        }
+                            obj = GetFieldValue(dataRow, "c" + (j + 3).ToString());
+                            if (obj != null && decimal.TryParse(obj.ToString(), out realValuel))
+                            {
+                                data.percent_bad = realValuel;
+                            }
 
-                        dataRow = datas[index + 5];
-                        obj = GetFieldValue(dataRow, fieldName);
-                        if (obj != null && decimal.TryParse(obj.ToString(), out realValuel))
-                        {
-                            model.standard_max = realValuel;
-                        }
+                            data.create_by = create_by;
+                            data.create_date = create_date;
+                            data.create_org = create_org;
 
-                        dataRow = datas[index + 6];
-                        obj = GetFieldValue(dataRow, fieldName);
-                        if (obj != null && decimal.TryParse(obj.ToString(), out realValuel))
-                        {
-                            model.standard_min = realValuel;
+                            testDatas.Add(data);
                         }
                     }
-                }
-                catch (Exception ex)
-                {
-                    WLLog.Error("Excel数据解析问题:", ex);
-                }
-                errorMsg = stringBuilder.ToString();
-                return modelList;
-            }
-            else
-            {
-                errorMsg = stringBuilder.ToString();
-                return null;
-            }
-        }
-
-        /// <summary>
-        /// 获取某个对象的某个属性的值
-        /// </summary>
-        /// <param name="obj"></param>
-        /// <param name="fieldName"></param>
-        /// <returns></returns>
-        private Object GetFieldValue(Object obj, string fieldName)
-        {
-            //获得对象的所有public属性 
-            PropertyInfo[] pis = obj.GetType().GetProperties(BindingFlags.Public | BindingFlags.Instance);
-
-            //如果获得了属性 
-            if (pis != null)
-            {
-                foreach (PropertyInfo pi in pis)//针对每一个属性进行循环 
-                {
-                    if (pi.Name.CompareTo(fieldName) == 0)
-                    {
-                        Object objValue = pi.GetValue(obj);
-                        if (objValue != null && objValue.ToString().Length > 0)
-                        {
-                            return objValue;
-                        }
-                    }
-                }
-            }
-            return null;
-        }
-
-        /// <summary>
-        /// 从原始数据行生成OQC的数据
-        /// </summary>
-        /// <param name="datas"></param>
-        /// <param name="test"></param>
-        /// <param name="standards"></param>
-        /// <param name="create_by"></param>
-        /// <param name="create_date"></param>
-        /// <param name="create_org"></param>
-        /// <param name="errorMsg"></param>
-        /// <returns></returns>
-        public List<sqe_oqc_data> File_data_ToModel_oqc_data(List<sqe_file_data> datas, sqe_oqc test, List<sqe_oqc_standard> standards, string create_by, DateTime create_date, string create_org, out string errorMsg)
-        {
-            StringBuilder stringBuilder = new StringBuilder();
-
-            List<sqe_oqc_data> modelList = new List<sqe_oqc_data>();
-            decimal realValuel;
-            if (datas != null && datas.Count >= 12)
-            {
-                for (int i = 11; i < datas.Count; i++)
-                {
-                    sqe_file_data dataRow = datas[i];
-                    if ((dataRow.c1 == null || dataRow.c1.Length == 0 || dataRow.c1 == "0") && (dataRow.c2 == null || dataRow.c2.Length == 0))
-                    {
-                        break;
-                    }
-                    //初始化每一层的数据集合
-                    List<sqe_oqc_data> test_datas = new List<sqe_oqc_data>();
-                    for (int j = 0; j < standards.Count; j++)
-                    {
-                        sqe_oqc_data data = new sqe_oqc_data();
-                        data.oqc_id = standards[j].oqc_id;
-                        data.standard_id = standards[j].id;
-                        data.create_by = create_by;
-                        data.create_date = create_date;
-                        data.create_org = create_org;
-                        test_datas.Add(data);
-                    }
-                    try
-                    {
-                        //将每一个检测标准的值从记录行中取出来
-                        for (int j = 0; j < test_datas.Count; j++)
-                        {
-                            sqe_oqc_data data = test_datas[j];
-                            data.data_no = dataRow.c1;
-                            string fieldName = "c" + (j + 2).ToString();
-                            Object obj = GetFieldValue(dataRow, fieldName);
-                            if (obj != null && obj.ToString().Length > 0 && decimal.TryParse(obj.ToString(), out realValuel))
-                            {
-                                data.data_value = realValuel;
-                            }
-                            else
-                            {
-                                data.data_value = null;
-                            }
-                        }
-                        File_data_ToModel_oqc_data_Add(modelList, test_datas);
-                    }
-                    catch (Exception ex)
-                    {
-                        WLLog.Error("Excel数据解析_原始数据转换到对象实体的问题:", ex);
-                    }
+                    File_data_ToModel_op_data_detail_Add(modelList, testDatas);
                 }
                 errorMsg = string.Empty;
                 return modelList;
@@ -2615,33 +2556,34 @@ namespace Business.VSM
         /// </summary>
         /// <param name="dataDest"></param>
         /// <param name="dataSource"></param>
-        private void File_data_ToModel_oqc_data_Add(List<sqe_oqc_data> dataDest, List<sqe_oqc_data> dataSource)
+        private void File_data_ToModel_op_data_detail_Add(List<sqe_op_data_detail> dataDest, List<sqe_op_data_detail> dataSource)
         {
             if (dataSource != null && dataSource.Count > 0)
             {
                 for (int i = 0; i < dataSource.Count; i++)
                 {
-                    sqe_oqc_data data = dataSource[i];
-                    if (data.data_no != null && data.data_no.Length > 0 && data.data_value != null)
+                    sqe_op_data_detail data = dataSource[i];
+                    if (data.bad_type != null && data.bad_type.Length > 0 && data.bad_qty != null)
                     {
                         dataDest.Add(data);
                     }
                 }
             }
         }
-        #endregion OQC
 
 
+        #endregion OP
+
 
         /// <summary>
-        /// 依据导入的数据行,生成OP的表头、检验标准和数据行
+        /// 依据导入的数据行,生成FPY的表头、检验标准和数据行
         /// </summary>
         /// <param name="upload_id"></param>
         /// <param name="create_by"></param>
         /// <param name="create_date"></param>
         /// <param name="create_org"></param>
         /// <returns></returns>
-        public string Import_Op_From_Data(int upload_id, string create_by, DateTime create_date, string create_org)
+        public string Import_Fpy_From_Data(int upload_id, string create_by, DateTime create_date, string create_org)
         {
             StringBuilder stringBuilder = new StringBuilder();
             try
@@ -2654,39 +2596,61 @@ namespace Business.VSM
                     return stringBuilder.ToString();
                 }
 
+                //FPY的文件格式校验
+                if (datas[0].c1.CompareTo("一、供应商上传报表模版") != 0)
+                {
+                    stringBuilder.AppendLine("文件不是【FPY】要求的格式");
+                    return stringBuilder.ToString();
+                }
+                if (datas[0].c1.CompareTo("生产各工序良率统计报表") != 0)
+                {
+                    stringBuilder.AppendLine("文件不是【FPY】要求的格式");
+                    return stringBuilder.ToString();
+                }
+                if (datas[2].c1.CompareTo("NO") != 0
+                    || datas[2].c2.CompareTo("日期") != 0
+                    || datas[2].c3.CompareTo("物料号") != 0
+                    || datas[2].c4.CompareTo("物料名称") != 0
+                    || datas[2].c5.CompareTo("工序") != 0
+                    || datas[2].c6.CompareTo("投入数") != 0
+                    || datas[2].c7.CompareTo("不良数") != 0
+                    || datas[2].c8.CompareTo("良品率") != 0)
+                {
+                    stringBuilder.AppendLine("文件不是【产品过程特性】要求的格式");
+                    return stringBuilder.ToString();
+                }
+                if (datas[2].c1.CompareTo("对应原材料批次号") != 0
+                    || datas[2].c3.CompareTo("原材料使用数量") != 0
+                    || datas[2].c5.CompareTo("物料批次号") != 0
+                    || datas[2].c7.CompareTo("物料数量") != 0)
+                {
+                    stringBuilder.AppendLine("文件不是【产品过程特性】要求的格式");
+                    return stringBuilder.ToString();
+                }
                 string errorMsg;
-                sqe_op test = File_data_ToModel_op(datas, create_by, create_date, create_org, out errorMsg);
+                sqe_fpy test = File_data_ToModel_fpy(datas, create_by, create_date, create_org, out errorMsg);
                 if (errorMsg != null && errorMsg.Length > 0)
                 {
                     stringBuilder.AppendLine(errorMsg);
                     return stringBuilder.ToString();
                 }
 
-                _sqe_op.BeginTransaction();
-                _sqe_op.Insert(test);
+                _sqe_fpy.BeginTransaction();
+                _sqe_fpy.Insert(test);
 
                 errorMsg = null;
-                List<sqe_op_data> standards = File_data_ToModel_op_data(datas, test, create_by, create_date, create_org, out errorMsg);
+                List<sqe_fpy_data> standards = File_data_ToModel_fpy_data(datas, test, create_by, create_date, create_org, out errorMsg);
                 if (errorMsg != null && errorMsg.Length > 0)
                 {
-                    _sqe_op.Rollback();
+                    _sqe_fpy.Rollback();
                     stringBuilder.AppendLine(errorMsg);
                     return stringBuilder.ToString();
                 }
-                _sqe_op_data.BeginTransaction();
-                _sqe_op_data.Insert(standards);
+                _sqe_fpy_data.BeginTransaction();
+                _sqe_fpy_data.Insert(standards);
 
-                List<sqe_op_data_detail> test_Datas = File_data_ToModel_op_data_detail(datas, test, standards, create_by, create_date, create_org, out errorMsg);
-                if (errorMsg != null && errorMsg.Length > 0)
-                {
-                    _sqe_op.Rollback();
-                    _sqe_op_data.Rollback();
-                    stringBuilder.AppendLine(errorMsg);
-                    return stringBuilder.ToString();
-                }
-                _sqe_op_data_detail.Insert(test_Datas);
-                _sqe_op.CommitTransaction();
-                _sqe_op_data.CommitTransaction();
+                _sqe_fpy.CommitTransaction();
+                _sqe_fpy_data.CommitTransaction();
             }
             catch (Exception ex)
             {
@@ -2698,10 +2662,10 @@ namespace Business.VSM
             return stringBuilder.ToString();
         }
 
-        #region OP
+        #region FPY
 
         /// <summary>
-        /// 从原始数据行生成OP的表头数据
+        /// 从原始数据行生成FPY的表头数据
         /// </summary>
         /// <param name="datas"></param>
         /// <param name="create_by"></param>
@@ -2709,9 +2673,9 @@ namespace Business.VSM
         /// <param name="create_org"></param>
         /// <param name="errorMsg"></param>
         /// <returns></returns>
-        public sqe_op File_data_ToModel_op(List<sqe_file_data> datas, string create_by, DateTime create_date, string create_org, out string errorMsg)
+        public sqe_fpy File_data_ToModel_fpy(List<sqe_file_data> datas, string create_by, DateTime create_date, string create_org, out string errorMsg)
         {
-            sqe_op model = new sqe_op();
+            sqe_fpy model = new sqe_fpy();
             model.create_by = create_by;
             model.create_date = create_date;
             model.create_org = create_org;
@@ -2721,7 +2685,7 @@ namespace Business.VSM
         }
 
         /// <summary>
-        /// 从原始数据行生成OP的检验标准
+        /// 从原始数据行生成FPY的检验标准
         /// </summary>
         /// <param name="datas"></param>
         /// <param name="test"></param>
@@ -2730,52 +2694,55 @@ namespace Business.VSM
         /// <param name="create_org"></param>
         /// <param name="errorMsg"></param>
         /// <returns></returns>
-        public List<sqe_op_data> File_data_ToModel_op_data(List<sqe_file_data> datas, sqe_op test, string create_by, DateTime create_date, string create_org, out string errorMsg)
+        public List<sqe_fpy_data> File_data_ToModel_fpy_data(List<sqe_file_data> datas, sqe_fpy test, string create_by, DateTime create_date, string create_org, out string errorMsg)
         {
             StringBuilder stringBuilder = new StringBuilder();
 
-            List<sqe_op_data> modelList = new List<sqe_op_data>();
+            List<sqe_fpy_data> modelList = new List<sqe_fpy_data>();
             decimal realValuel;
-            if (datas != null && datas.Count > 1)
+            if (datas != null && datas.Count > 3)
             {
-                for (int i = 1; i < datas.Count; i++)
+                for (int i = 3; i < datas.Count; i++)
                 {
-                    sqe_op_data model = new sqe_op_data();
+                    sqe_fpy_data model = new sqe_fpy_data();
                     sqe_file_data dataRow = datas[i];
-                    if ((dataRow.c1 == null || dataRow.c1.Length == 0) && (dataRow.c2 == null || dataRow.c2.Length == 0))
+                    if ((dataRow.c1 == null || dataRow.c1.Length == 0) && (dataRow.c3 == null || dataRow.c3.Length == 0))
                     {
                         break;
                     }
-
-                    model.item_name = dataRow.c1;
-                    model.batch_no = dataRow.c2;
-                    model.op_no = dataRow.c3;
-                    Object obj = GetFieldValue(dataRow, "c4");
-                    if (obj != null && decimal.TryParse(obj.ToString(), out realValuel))
+                    int dateLength;
+                    DateTime dt;
+                    if (DateTime.TryParse(dataRow.c2, out dt))
                     {
-                        model.qty_all = realValuel;
+                        model.op_time = dt;
                     }
-                    obj = GetFieldValue(dataRow, "c5");
-                    if (obj != null && decimal.TryParse(obj.ToString(), out realValuel))
+                    else
                     {
-                        model.qty_ok = realValuel;
+                        if (int.TryParse(dataRow.c2, out dateLength))
+                        {
+                            dt = DateTime.Parse("1900-01-01");
+                            model.op_time = dt.AddDays(dateLength - 2);
+                        }
                     }
-                    obj = GetFieldValue(dataRow, "c6");
+                    model.item_no = dataRow.c3;
+                    model.item_name = dataRow.c4;
+                    model.op_no = dataRow.c5;
+                    Object obj = GetFieldValue(dataRow, "c6");
                     if (obj != null && decimal.TryParse(obj.ToString(), out realValuel))
                     {
-                        model.qty_error = realValuel;
+                        model.qty_all = realValuel;
                     }
                     obj = GetFieldValue(dataRow, "c7");
                     if (obj != null && decimal.TryParse(obj.ToString(), out realValuel))
                     {
-                        model.percent_ok = realValuel;
+                        model.qty_error = realValuel;
                     }
                     obj = GetFieldValue(dataRow, "c8");
                     if (obj != null && decimal.TryParse(obj.ToString(), out realValuel))
                     {
-                        model.percent_error = realValuel;
+                        model.percent_ok = realValuel;
                     }
-                    model.op_time = DateTime.Now;
+                    model.fpy_id = test.id;
                     model.create_by = create_by;
                     model.create_date = create_date;
                     model.create_org = create_org;
@@ -2786,247 +2753,391 @@ namespace Business.VSM
             return modelList;
         }
 
+        #endregion FPY
+
         /// <summary>
-        /// 从原始数据行生成OP的数据
+        /// 依据导入的数据行,生成OQC的表头、检验标准和数据行
         /// </summary>
-        /// <param name="datas"></param>
-        /// <param name="test"></param>
-        /// <param name="standards"></param>
+        /// <param name="upload_id"></param>
         /// <param name="create_by"></param>
         /// <param name="create_date"></param>
         /// <param name="create_org"></param>
-        /// <param name="errorMsg"></param>
         /// <returns></returns>
-        public List<sqe_op_data_detail> File_data_ToModel_op_data_detail(List<sqe_file_data> datas, sqe_op test, List<sqe_op_data> standards, string create_by, DateTime create_date, string create_org, out string errorMsg)
+        public string Import_Oqc_From_Data(int upload_id, string create_by, DateTime create_date, string create_org)
         {
             StringBuilder stringBuilder = new StringBuilder();
-
-            List<sqe_op_data_detail> modelList = new List<sqe_op_data_detail>();
-            decimal realValuel;
-            if (datas != null && datas.Count > 1)
+            try
             {
-                for (int i = 1; i < datas.Count && i - 1 < standards.Count; i++)
-                {
-                    sqe_file_data dataRow = datas[i];
-                    List<sqe_op_data_detail> testDatas = new List<sqe_op_data_detail>();
-                    for (int j = 9; j < 50; j += 4)
-                    {
-                        Object obj = GetFieldValue(dataRow, "c" + j.ToString());
-                        if (obj != null && obj.ToString().Length > 0)
-                        {
-                            sqe_op_data_detail data = new sqe_op_data_detail();
-                            data.op_id = standards[i - 1].op_id;
-                            data.op_data_id = standards[i - 1].id;
-                            data.bad_type = obj.ToString();
-
-                            obj = GetFieldValue(dataRow, "c" + (j + 1).ToString());
-                            if (obj != null && decimal.TryParse(obj.ToString(), out realValuel))
-                            {
-                                data.bad_qty = realValuel;
-                            }
 
-                            obj = GetFieldValue(dataRow, "c" + (j + 2).ToString());
-                            if (obj != null && decimal.TryParse(obj.ToString(), out realValuel))
-                            {
-                                data.percent_bad_all = realValuel;
-                            }
-
-                            obj = GetFieldValue(dataRow, "c" + (j + 3).ToString());
-                            if (obj != null && decimal.TryParse(obj.ToString(), out realValuel))
-                            {
-                                data.percent_bad = realValuel;
-                            }
+                List<sqe_file_data> datas = LoadData_file_data(upload_id);
+                if (datas == null || datas.Count == 0)
+                {
+                    stringBuilder.AppendLine("导入数据信息不存在!");
+                    return stringBuilder.ToString();
+                }
+                //出货检验记录的文件格式校验
+                if (datas[0].c1.CompareTo("出货检验记录") != 0)
+                {
+                    stringBuilder.AppendLine("文件不是【出货检验记录】要求的格式");
+                    return stringBuilder.ToString();
+                }
+                if (datas[1].c1.CompareTo("供应商名") != 0
+                    || datas[1].c3.CompareTo("物料名称") != 0
+                    || datas[1].c5.CompareTo("物料号") != 0
+                    || datas[1].c7.CompareTo("物料版本号") != 0)
+                {
+                    stringBuilder.AppendLine("文件不是【出货检验记录】要求的格式");
+                    return stringBuilder.ToString();
+                }
+                if (datas[2].c1.CompareTo("日期") != 0
+                    || datas[2].c3.CompareTo("批次号") != 0
+                    || datas[2].c5.CompareTo("批次数量") != 0
+                    || datas[2].c7.CompareTo("检验人员") != 0)
+                {
+                    stringBuilder.AppendLine("文件不是【出货检验记录】要求的格式");
+                    return stringBuilder.ToString();
+                }
+                string errorMsg;
+                sqe_oqc test = File_data_ToModel_oqc(datas, create_by, create_date, create_org, out errorMsg);
+                if (errorMsg != null && errorMsg.Length > 0)
+                {
+                    stringBuilder.AppendLine(errorMsg);
+                    return stringBuilder.ToString();
+                }
 
-                            data.create_by = create_by;
-                            data.create_date = create_date;
-                            data.create_org = create_org;
+                _sqe_oqc.BeginTransaction();
+                _sqe_oqc.Insert(test);
 
-                            testDatas.Add(data);
-                        }
-                    }
-                    File_data_ToModel_op_data_detail_Add(modelList, testDatas);
+                errorMsg = null;
+                List<sqe_oqc_standard> standards = File_data_ToModel_oqc_standard(datas, test, create_by, create_date, create_org, out errorMsg);
+                if (errorMsg != null && errorMsg.Length > 0)
+                {
+                    _sqe_oqc.Rollback();
+                    stringBuilder.AppendLine(errorMsg);
+                    return stringBuilder.ToString();
                 }
-                errorMsg = string.Empty;
-                return modelList;
+                _sqe_oqc_standard.BeginTransaction();
+                _sqe_oqc_standard.Insert(standards);
+
+                List<sqe_oqc_data> test_Datas = File_data_ToModel_oqc_data(datas, test, standards, create_by, create_date, create_org, out errorMsg);
+                if (errorMsg != null && errorMsg.Length > 0)
+                {
+                    _sqe_oqc.Rollback();
+                    _sqe_oqc_standard.Rollback();
+                    stringBuilder.AppendLine(errorMsg);
+                    return stringBuilder.ToString();
+                }
+                _sqe_oqc_data.Insert(test_Datas);
+                _sqe_oqc.CommitTransaction();
+                _sqe_oqc_standard.CommitTransaction();
             }
-            else
+            catch (Exception ex)
             {
-                errorMsg = stringBuilder.ToString();
-                return null;
+                stringBuilder.Append("数据导入失败!");
             }
+            finally
+            {
+            }
+            return stringBuilder.ToString();
         }
 
+        #region OQC
+
         /// <summary>
-        /// 将转换的数据插入到返回结果数据集中,处理掉异常数据
+        /// 从原始数据行生成OQC的表头数据
         /// </summary>
-        /// <param name="dataDest"></param>
-        /// <param name="dataSource"></param>
-        private void File_data_ToModel_op_data_detail_Add(List<sqe_op_data_detail> dataDest, List<sqe_op_data_detail> dataSource)
+        /// <param name="datas"></param>
+        /// <param name="create_by"></param>
+        /// <param name="create_date"></param>
+        /// <param name="create_org"></param>
+        /// <param name="errorMsg"></param>
+        /// <returns></returns>
+        public sqe_oqc File_data_ToModel_oqc(List<sqe_file_data> datas, string create_by, DateTime create_date, string create_org, out string errorMsg)
         {
-            if (dataSource != null && dataSource.Count > 0)
+            StringBuilder stringBuilder = new StringBuilder();
+
+            sqe_oqc model = new sqe_oqc();
+            DateTime timeValue;
+            decimal realValuel;
+            if (datas != null && datas.Count >= 4)
             {
-                for (int i = 0; i < dataSource.Count; i++)
+                try
                 {
-                    sqe_op_data_detail data = dataSource[i];
-                    if (data.bad_type != null && data.bad_type.Length > 0 && data.bad_qty != null)
+                    sqe_file_data data = datas[1];
+                    model.supp_no = data.c2;
+                    model.item_name = data.c4;
+                    model.item_no = data.c6;
+                    model.item_version = data.c8;
+
+                    data = datas[2];
+                    if (DateTime.TryParse(data.c2, out timeValue))
                     {
-                        dataDest.Add(data);
+                        model.product_time = timeValue;
                     }
+                    else
+                    {
+                        model.product_time = DateTime.Now;
+                    }
+                    model.batch_no = data.c4;
+                    if (decimal.TryParse(data.c6, out realValuel))
+                    {
+                        model.batch_qty = realValuel;
+                    }
+                    model.test_person = data.c8;
+
+                    data = datas[3];
+                    model.sampling_standard = data.c2;
+                    if (decimal.TryParse(data.c4, out realValuel))
+                    {
+                        model.sampling_number = realValuel;
+                    }
+                    model.test_result = data.c8;
+                }
+                catch (Exception ex)
+                {
+                    WLLog.Error("Excel数据解析问题:", ex);
                 }
+                model.create_by = create_by;
+                model.create_date = create_date;
+                model.create_org = create_org;
+                errorMsg = string.Empty;
+                return model;
+            }
+            else
+            {
+                errorMsg = stringBuilder.ToString();
+                return null;
             }
         }
 
-
-        #endregion OP
-
-
         /// <summary>
-        /// 依据导入的数据行,生成FPY的表头、检验标准和数据行
+        /// 从原始数据行生成OQC的检验标准
         /// </summary>
-        /// <param name="upload_id"></param>
+        /// <param name="datas"></param>
+        /// <param name="test"></param>
         /// <param name="create_by"></param>
         /// <param name="create_date"></param>
         /// <param name="create_org"></param>
+        /// <param name="errorMsg"></param>
         /// <returns></returns>
-        public string Import_Fpy_From_Data(int upload_id, string create_by, DateTime create_date, string create_org)
+        public List<sqe_oqc_standard> File_data_ToModel_oqc_standard(List<sqe_file_data> datas, sqe_oqc test, string create_by, DateTime create_date, string create_org, out string errorMsg)
         {
             StringBuilder stringBuilder = new StringBuilder();
-            try
-            {
 
-                List<sqe_file_data> datas = LoadData_file_data(upload_id);
-                if (datas == null || datas.Count == 0)
+            List<sqe_oqc_standard> modelList = new List<sqe_oqc_standard>();
+            decimal realValuel;
+            if (datas != null && datas.Count >= 13)
+            {
+                try
                 {
-                    stringBuilder.AppendLine("导入数据信息不存在!");
-                    return stringBuilder.ToString();
-                }
+                    //标准的起始位置
+                    int index = 4;
+                    sqe_file_data dataRow = datas[index];
+                    #region 处理尺寸的表头
+                    for (int i = 2; i < 10; i++)
+                    {
+                        Object obj = GetFieldValue(dataRow, "c" + i.ToString());
+                        if (obj != null)
+                        {
+                            sqe_oqc_standard model = new sqe_oqc_standard();
+                            model.standard_no = obj.ToString();
+                            model.create_by = create_by;
+                            model.create_date = create_date;
+                            model.create_org = create_org;
+                            model.oqc_id = test.id;
+                            modelList.Add(model);
+                        }
+                        else
+                        {
+                            break;
+                        }
+                    }
+                    #endregion 处理尺寸的表头
 
-                string errorMsg;
-                sqe_fpy test = File_data_ToModel_fpy(datas, create_by, create_date, create_org, out errorMsg);
-                if (errorMsg != null && errorMsg.Length > 0)
-                {
-                    stringBuilder.AppendLine(errorMsg);
-                    return stringBuilder.ToString();
-                }
+                    //处理表头的具体值
+                    for (int i = 0; i < 9 && i < modelList.Count; i++)
+                    {
+                        string fieldName = "c" + (i + 2).ToString();
+                        sqe_oqc_standard model = modelList[i];
+                        dataRow = datas[index + 1];
+                        Object obj = GetFieldValue(dataRow, fieldName);
+                        if (obj != null)
+                        {
+                            model.standard_no = obj.ToString();
+                        }
+                        dataRow = datas[index + 2];
+                        obj = GetFieldValue(dataRow, fieldName);
+                        if (obj != null && decimal.TryParse(obj.ToString(), out realValuel))
+                        {
+                            model.standard_value = realValuel;
+                        }
 
-                _sqe_fpy.BeginTransaction();
-                _sqe_fpy.Insert(test);
+                        dataRow = datas[index + 3];
+                        obj = GetFieldValue(dataRow, fieldName);
+                        if (obj != null && decimal.TryParse(obj.ToString(), out realValuel))
+                        {
+                            model.delta_up = realValuel;
+                        }
 
-                errorMsg = null;
-                List<sqe_fpy_data> standards = File_data_ToModel_fpy_data(datas, test, create_by, create_date, create_org, out errorMsg);
-                if (errorMsg != null && errorMsg.Length > 0)
+                        dataRow = datas[index + 4];
+                        obj = GetFieldValue(dataRow, fieldName);
+                        if (obj != null && decimal.TryParse(obj.ToString(), out realValuel))
+                        {
+                            model.delta_down = realValuel;
+                        }
+
+                        dataRow = datas[index + 5];
+                        obj = GetFieldValue(dataRow, fieldName);
+                        if (obj != null && decimal.TryParse(obj.ToString(), out realValuel))
+                        {
+                            model.standard_max = realValuel;
+                        }
+
+                        dataRow = datas[index + 6];
+                        obj = GetFieldValue(dataRow, fieldName);
+                        if (obj != null && decimal.TryParse(obj.ToString(), out realValuel))
+                        {
+                            model.standard_min = realValuel;
+                        }
+                    }
+                }
+                catch (Exception ex)
                 {
-                    _sqe_fpy.Rollback();
-                    stringBuilder.AppendLine(errorMsg);
-                    return stringBuilder.ToString();
+                    WLLog.Error("Excel数据解析问题:", ex);
                 }
-                _sqe_fpy_data.BeginTransaction();
-                _sqe_fpy_data.Insert(standards);
-
-                _sqe_fpy.CommitTransaction();
-                _sqe_fpy_data.CommitTransaction();
-            }
-            catch (Exception ex)
-            {
-                stringBuilder.Append("数据导入失败!");
+                errorMsg = stringBuilder.ToString();
+                return modelList;
             }
-            finally
+            else
             {
+                errorMsg = stringBuilder.ToString();
+                return null;
             }
-            return stringBuilder.ToString();
         }
 
-        #region FPY
-
         /// <summary>
-        /// 从原始数据行生成FPY的表头数据
+        /// 获取某个对象的某个属性的值
         /// </summary>
-        /// <param name="datas"></param>
-        /// <param name="create_by"></param>
-        /// <param name="create_date"></param>
-        /// <param name="create_org"></param>
-        /// <param name="errorMsg"></param>
+        /// <param name="obj"></param>
+        /// <param name="fieldName"></param>
         /// <returns></returns>
-        public sqe_fpy File_data_ToModel_fpy(List<sqe_file_data> datas, string create_by, DateTime create_date, string create_org, out string errorMsg)
+        private Object GetFieldValue(Object obj, string fieldName)
         {
-            sqe_fpy model = new sqe_fpy();
-            model.create_by = create_by;
-            model.create_date = create_date;
-            model.create_org = create_org;
-            errorMsg = string.Empty;
-            errorMsg = "";
-            return model;
+            //获得对象的所有public属性 
+            PropertyInfo[] pis = obj.GetType().GetProperties(BindingFlags.Public | BindingFlags.Instance);
+
+            //如果获得了属性 
+            if (pis != null)
+            {
+                foreach (PropertyInfo pi in pis)//针对每一个属性进行循环 
+                {
+                    if (pi.Name.CompareTo(fieldName) == 0)
+                    {
+                        Object objValue = pi.GetValue(obj);
+                        if (objValue != null && objValue.ToString().Length > 0)
+                        {
+                            return objValue;
+                        }
+                    }
+                }
+            }
+            return null;
         }
 
         /// <summary>
-        /// 从原始数据行生成FPY的检验标准
+        /// 从原始数据行生成OQC的数据
         /// </summary>
         /// <param name="datas"></param>
         /// <param name="test"></param>
+        /// <param name="standards"></param>
         /// <param name="create_by"></param>
         /// <param name="create_date"></param>
         /// <param name="create_org"></param>
         /// <param name="errorMsg"></param>
         /// <returns></returns>
-        public List<sqe_fpy_data> File_data_ToModel_fpy_data(List<sqe_file_data> datas, sqe_fpy test, string create_by, DateTime create_date, string create_org, out string errorMsg)
+        public List<sqe_oqc_data> File_data_ToModel_oqc_data(List<sqe_file_data> datas, sqe_oqc test, List<sqe_oqc_standard> standards, string create_by, DateTime create_date, string create_org, out string errorMsg)
         {
             StringBuilder stringBuilder = new StringBuilder();
 
-            List<sqe_fpy_data> modelList = new List<sqe_fpy_data>();
+            List<sqe_oqc_data> modelList = new List<sqe_oqc_data>();
             decimal realValuel;
-            if (datas != null && datas.Count > 3)
+            if (datas != null && datas.Count >= 12)
             {
-                for (int i = 3; i < datas.Count; i++)
+                for (int i = 11; i < datas.Count; i++)
                 {
-                    sqe_fpy_data model = new sqe_fpy_data();
                     sqe_file_data dataRow = datas[i];
-                    if ((dataRow.c1 == null || dataRow.c1.Length == 0) && (dataRow.c3 == null || dataRow.c3.Length == 0))
+                    if ((dataRow.c1 == null || dataRow.c1.Length == 0 || dataRow.c1 == "0") && (dataRow.c2 == null || dataRow.c2.Length == 0))
                     {
                         break;
                     }
-                    int dateLength;
-                    DateTime dt;
-                    if (DateTime.TryParse(dataRow.c2, out dt))
+                    //初始化每一层的数据集合
+                    List<sqe_oqc_data> test_datas = new List<sqe_oqc_data>();
+                    for (int j = 0; j < standards.Count; j++)
                     {
-                        model.op_time = dt;
+                        sqe_oqc_data data = new sqe_oqc_data();
+                        data.oqc_id = standards[j].oqc_id;
+                        data.standard_id = standards[j].id;
+                        data.create_by = create_by;
+                        data.create_date = create_date;
+                        data.create_org = create_org;
+                        test_datas.Add(data);
                     }
-                    else
+                    try
                     {
-                        if (int.TryParse(dataRow.c2, out dateLength))
+                        //将每一个检测标准的值从记录行中取出来
+                        for (int j = 0; j < test_datas.Count; j++)
                         {
-                            dt = DateTime.Parse("1900-01-01");
-                            model.op_time = dt.AddDays(dateLength - 2);
+                            sqe_oqc_data data = test_datas[j];
+                            data.data_no = dataRow.c1;
+                            string fieldName = "c" + (j + 2).ToString();
+                            Object obj = GetFieldValue(dataRow, fieldName);
+                            if (obj != null && obj.ToString().Length > 0 && decimal.TryParse(obj.ToString(), out realValuel))
+                            {
+                                data.data_value = realValuel;
+                            }
+                            else
+                            {
+                                data.data_value = null;
+                            }
                         }
+                        File_data_ToModel_oqc_data_Add(modelList, test_datas);
                     }
-                    model.item_no = dataRow.c3;
-                    model.item_name = dataRow.c4;
-                    model.op_no = dataRow.c5;
-                    Object obj = GetFieldValue(dataRow, "c6");
-                    if (obj != null && decimal.TryParse(obj.ToString(), out realValuel))
-                    {
-                        model.qty_all = realValuel;
-                    }
-                    obj = GetFieldValue(dataRow, "c7");
-                    if (obj != null && decimal.TryParse(obj.ToString(), out realValuel))
+                    catch (Exception ex)
                     {
-                        model.qty_error = realValuel;
+                        WLLog.Error("Excel数据解析_原始数据转换到对象实体的问题:", ex);
                     }
-                    obj = GetFieldValue(dataRow, "c8");
-                    if (obj != null && decimal.TryParse(obj.ToString(), out realValuel))
+                }
+                errorMsg = string.Empty;
+                return modelList;
+            }
+            else
+            {
+                errorMsg = stringBuilder.ToString();
+                return null;
+            }
+        }
+
+        /// <summary>
+        /// 将转换的数据插入到返回结果数据集中,处理掉异常数据
+        /// </summary>
+        /// <param name="dataDest"></param>
+        /// <param name="dataSource"></param>
+        private void File_data_ToModel_oqc_data_Add(List<sqe_oqc_data> dataDest, List<sqe_oqc_data> dataSource)
+        {
+            if (dataSource != null && dataSource.Count > 0)
+            {
+                for (int i = 0; i < dataSource.Count; i++)
+                {
+                    sqe_oqc_data data = dataSource[i];
+                    if (data.data_no != null && data.data_no.Length > 0 && data.data_value != null)
                     {
-                        model.percent_ok = realValuel;
+                        dataDest.Add(data);
                     }
-                    model.fpy_id = test.id;
-                    model.create_by = create_by;
-                    model.create_date = create_date;
-                    model.create_org = create_org;
-                    modelList.Add(model);
                 }
             }
-            errorMsg = stringBuilder.ToString();
-            return modelList;
         }
+        #endregion OQC
+
 
-        #endregion FPY
     }
 }