using System;
using System.Collections.Generic;
using System.Data;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Text;
using Business.EntityFrameworkCore.SqlRepositories;
using Business.StructuredDB.Sqe;
using NPOI.HSSF.UserModel;
using NPOI.SS.UserModel;
using NPOI.XSSF.UserModel;
using Volo.Abp.Application.Services;
namespace Business.VSM
{
///
/// Sqe数据导入接口实现
///
public class SqeExcelService : ApplicationService, ISqeExcelService
{
LoggerHelper WLLog;
private readonly ISqeRepository _sqe_cto_process;
private readonly ISqeRepository _sqe_cto_process_data;
private readonly ISqeRepository _sqe_cto_process_standard;
private readonly ISqeRepository _sqe_cto_test;
private readonly ISqeRepository _sqe_cto_test_data;
private readonly ISqeRepository _sqe_cto_test_standard;
private readonly ISqeRepository _sqe_file_data;
private readonly ISqeRepository _sqe_file_upload;
private readonly ISqeRepository _sqe_oqc;
private readonly ISqeRepository _sqe_oqc_data;
private readonly ISqeRepository _sqe_oqc_standard;
private readonly ISqeRepository _sqe_fpy;
private readonly ISqeRepository _sqe_fpy_data;
private readonly ISqeRepository _sqe_op;
private readonly ISqeRepository _sqe_op_data;
private readonly ISqeRepository _sqe_op_data_detail;
private readonly ISqeRepository _sqe_fct;
private readonly ISqeRepository _sqe_fct_data;
public SqeExcelService(
ISqeRepository sqe_cto_process,
ISqeRepository sqe_cto_process_data,
ISqeRepository sqe_cto_process_standard,
ISqeRepository sqe_cto_test,
ISqeRepository sqe_cto_test_data,
ISqeRepository sqe_cto_test_standard,
ISqeRepository sqe_file_data,
ISqeRepository sqe_file_upload,
ISqeRepository sqe_oqc,
ISqeRepository sqe_oqc_data,
ISqeRepository sqe_oqc_standard,
ISqeRepository sqe_fpy,
ISqeRepository sqe_fpy_data,
ISqeRepository sqe_op,
ISqeRepository sqe_op_data,
ISqeRepository sqe_op_data_detail,
ISqeRepository sqe_fct,
ISqeRepository sqe_fct_data
)
{
WLLog = new LoggerHelper();
_sqe_cto_process = sqe_cto_process;
_sqe_cto_process_data = sqe_cto_process_data;
_sqe_cto_process_standard = sqe_cto_process_standard;
_sqe_cto_test = sqe_cto_test;
_sqe_cto_test_data = sqe_cto_test_data;
_sqe_cto_test_standard = sqe_cto_test_standard;
_sqe_file_data = sqe_file_data;
_sqe_file_upload = sqe_file_upload;
_sqe_oqc = sqe_oqc;
_sqe_oqc_data = sqe_oqc_data;
_sqe_oqc_standard = sqe_oqc_standard;
_sqe_fpy = sqe_fpy;
_sqe_fpy_data = sqe_fpy_data;
_sqe_op = sqe_op;
_sqe_op_data = sqe_op_data;
_sqe_op_data_detail = sqe_op_data_detail;
_sqe_fct = sqe_fct;
_sqe_fct_data = sqe_fct_data;
}
/////
///// 导入Excel文件的sheetName的sheet页面到数据表
/////
/////
/////
/////
//public DataTable ImportExcelSheetToDataTable_test(string filePath, string sheetName)
//{
// FileStream file = null;
// DataTable dt = new DataTable();
// int index = 0;
// try
// {
// file = new FileStream(filePath, FileMode.Open, FileAccess.Read);
// //打开Excel对象
// IWorkbook workbook;
// IRow row;
// string fileExt = Path.GetExtension(filePath).ToLower();
// workbook = null;
// if (fileExt == ".xlsx")
// {
// workbook = new XSSFWorkbook(file);
// }
// else
// {
// if (fileExt == ".xls")
// {
// workbook = new HSSFWorkbook(file);
// }
// else
// {
// workbook = null;
// }
// }
// if (workbook == null) { return null; }
// //Excel的Sheet对象
// NPOI.SS.UserModel.ISheet sheet = workbook.GetSheet(sheetName);
// //获取Sheet的所有的行
// System.Collections.IEnumerator rows = sheet.GetRowEnumerator();
// //int colCountMax = 0;
// dt.TableName = sheetName;
// //判断是否拥有首行
// bool firstLine = true;
// //if (!haveColumnName)
// //{
// // firstLine = false;
// //}
// bool bDate = false;
// while (rows.MoveNext())
// {
// index++;
// bDate = false;
// if (fileExt == ".xlsx")
// {
// row = (XSSFRow)rows.Current;
// }
// else
// {
// row = (HSSFRow)rows.Current;
// }
// if (!firstLine)
// {
// //生成表结构
// //仅当首次调用时会进行循环生成
// for (int i = dt.Columns.Count; i < row.Cells.Count; i++)
// {
// dt.Columns.Add(Convert.ToChar(((int)'A') + i).ToString());
// }
// }
// else
// {
// //依据首行进行字段生成
// for (int i = dt.Columns.Count; i < row.Cells.Count; i++)
// {
// dt.Columns.Add(row.Cells[i].ToString());
// }
// }
// //没有首行,生成数据
// if (!firstLine)
// {
// DataRow dr = dt.NewRow();
// for (int i = 0; i < row.LastCellNum - 1; i++)
// {
// NPOI.SS.UserModel.ICell cell = row.GetCell(i);
// String s = "";
// if (cell != null)
// {
// switch (cell.CellType)
// {
// case NPOI.SS.UserModel.CellType.Unknown:
// break;
// case NPOI.SS.UserModel.CellType.Numeric:
// if (HSSFDateUtil.IsCellDateFormatted(cell))
// {
// if (index < 6)
// {
// s = cell.DateCellValue.ToString();
// }
// else
// {
// s = cell.ToString();
// }
// }
// else
// {
// s = cell.NumericCellValue.ToString();
// }
// break;
// case NPOI.SS.UserModel.CellType.String:
// s = cell.StringCellValue;
// break;
// case NPOI.SS.UserModel.CellType.Formula:
// if (i == 0 || i == 1)
// {
// s = cell.StringCellValue;
// }
// else
// {
// try
// {
// if (cell.CellFormula == "序号")
// {
// s = cell.ToString();
// }
// else
// {
// s = cell.NumericCellValue != null ? cell.NumericCellValue.ToString() : null;
// }
// }
// catch (Exception ex)
// {
// WLLog.Error("Excel导入问题:", ex);
// }
// }
// break;
// case NPOI.SS.UserModel.CellType.Blank:
// if (bDate)
// {
// //对于日期的特殊处理
// s = dr[i - 1].ToString();
// }
// else
// {
// s = cell.StringCellValue;
// }
// break;
// case NPOI.SS.UserModel.CellType.Boolean:
// break;
// case NPOI.SS.UserModel.CellType.Error:
// break;
// default:
// break;
// }
// }
// dr[i] = s;
// }
// dt.Rows.Add(dr);
// }
// firstLine = false;
// }
// return dt;
// }
// catch (Exception ex)
// {
// WLLog.Error("Excel导入问题:", ex);
// }
// finally
// {
// if (file != null)
// {
// file.Close();
// }
// }
// return dt;
//}
//public DataTable ImportExcelSheetToDataTable_process(string filePath, string sheetName)
//{
// FileStream file = null;
// DataTable dt = new DataTable();
// int index = 0;
// try
// {
// file = new FileStream(filePath, FileMode.Open, FileAccess.Read);
// //打开Excel对象
// IWorkbook workbook;
// IRow row;
// string fileExt = Path.GetExtension(filePath).ToLower();
// workbook = null;
// if (fileExt == ".xlsx")
// {
// workbook = new XSSFWorkbook(file);
// }
// else
// {
// if (fileExt == ".xls")
// {
// workbook = new HSSFWorkbook(file);
// }
// else
// {
// workbook = null;
// }
// }
// if (workbook == null) { return null; }
// //Excel的Sheet对象
// NPOI.SS.UserModel.ISheet sheet = workbook.GetSheet(sheetName);
// //获取Sheet的所有的行
// System.Collections.IEnumerator rows = sheet.GetRowEnumerator();
// //int colCountMax = 0;
// dt.TableName = sheetName;
// //判断是否拥有首行
// bool firstLine = true;
// //if (!haveColumnName)
// //{
// // firstLine = false;
// //}
// bool bDate = false;
// while (rows.MoveNext())
// {
// index++;
// bDate = false;
// if (fileExt == ".xlsx")
// {
// row = (XSSFRow)rows.Current;
// }
// else
// {
// row = (HSSFRow)rows.Current;
// }
// if (!firstLine)
// {
// //生成表结构
// //仅当首次调用时会进行循环生成
// for (int i = dt.Columns.Count; i < row.Cells.Count; i++)
// {
// dt.Columns.Add(Convert.ToChar(((int)'A') + i).ToString());
// }
// }
// else
// {
// //依据首行进行字段生成
// for (int i = dt.Columns.Count; i < row.Cells.Count; i++)
// {
// dt.Columns.Add(row.Cells[i].ToString());
// }
// }
// //没有首行,生成数据
// if (!firstLine)
// {
// DataRow dr = dt.NewRow();
// for (int i = 0; i < row.LastCellNum - 1; i++)
// {
// NPOI.SS.UserModel.ICell cell = row.GetCell(i);
// String s = "";
// if (cell != null)
// {
// switch (cell.CellType)
// {
// case NPOI.SS.UserModel.CellType.Unknown:
// break;
// case NPOI.SS.UserModel.CellType.Numeric:
// if (HSSFDateUtil.IsCellDateFormatted(cell))
// {
// if (index < 6)
// {
// s = cell.DateCellValue.ToString();
// }
// else
// {
// s = cell.ToString();
// }
// }
// else
// {
// s = cell.NumericCellValue.ToString();
// }
// break;
// case NPOI.SS.UserModel.CellType.String:
// s = cell.StringCellValue;
// break;
// case NPOI.SS.UserModel.CellType.Formula:
// try
// {
// if (cell.CellFormula == "序号")
// {
// s = cell.ToString();
// }
// else
// {
// s = cell.NumericCellValue != null ? cell.NumericCellValue.ToString() : null;
// }
// }
// catch (Exception ex)
// {
// WLLog.Error("Excel导入问题:", ex);
// }
// break;
// case NPOI.SS.UserModel.CellType.Blank:
// if (bDate)
// {
// //对于日期的特殊处理
// s = dr[i - 1].ToString();
// }
// else
// {
// s = cell.StringCellValue;
// }
// break;
// case NPOI.SS.UserModel.CellType.Boolean:
// break;
// case NPOI.SS.UserModel.CellType.Error:
// break;
// default:
// break;
// }
// }
// dr[i] = s;
// }
// dt.Rows.Add(dr);
// }
// firstLine = false;
// }
// return dt;
// }
// catch (Exception ex)
// {
// WLLog.Error("Excel导入问题:", ex);
// }
// finally
// {
// if (file != null)
// {
// file.Close();
// }
// }
// return dt;
//}
/////
///// 获取Excel文件Sheet名称列表,与Jet引擎不一致,获取的时候没有$多余字符。
/////
/////
/////
//public List GetSheetNames(string filePath)
//{
// List tables = null;
// FileStream file = null;
// try
// {
// tables = new List();
// file = new FileStream(filePath, FileMode.Open, FileAccess.Read);
// HSSFWorkbook hssfworkbook = new HSSFWorkbook(file);
// int i = 0;
// while (true)
// {
// try
// {
// String s = hssfworkbook.GetSheetName(i);
// if (s != null)
// {
// tables.Add(s);
// i++;
// }
// else
// {
// break;
// }
// }
// catch (Exception ex)
// {
// break;
// }
// }
// }
// catch (Exception ex)
// {
// WLLog.Error("Excel导入问题:", ex);
// }
// finally
// {
// if (file != null)
// {
// file.Close();
// }
// }
// return tables;
//}
///
/// 导入数据到检验表 sqe_cto_test、sqe_cto_test_standard、sqe_cto_test_data
///
///
///
///
///
///
public string Import_Test_From_Data(int upload_id, string create_by, DateTime create_date, string create_org)
{
StringBuilder stringBuilder = new StringBuilder();
try
{
List 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_cto_test test = File_data_ToModel_test(datas, create_by, create_date, create_org, out errorMsg);
if (errorMsg != null && errorMsg.Length > 0)
{
stringBuilder.AppendLine(errorMsg);
return stringBuilder.ToString();
}
_sqe_cto_test.BeginTransaction();
_sqe_cto_test.Insert(test);
errorMsg = null;
List standards = File_data_ToModel_test_standard(datas, test, create_by, create_date, create_org, out errorMsg);
if (errorMsg != null && errorMsg.Length > 0)
{
_sqe_cto_test.Rollback();
stringBuilder.AppendLine(errorMsg);
return stringBuilder.ToString();
}
_sqe_cto_test_standard.BeginTransaction();
_sqe_cto_test_standard.Insert(standards);
List test_Datas = File_data_ToModel_test_data(datas, test, standards, create_by, create_date, create_org, out errorMsg);
if (errorMsg != null && errorMsg.Length > 0)
{
_sqe_cto_test.Rollback();
_sqe_cto_test_standard.Rollback();
stringBuilder.AppendLine(errorMsg);
return stringBuilder.ToString();
}
_sqe_cto_test_data.Insert(test_Datas);
_sqe_cto_test.CommitTransaction();
_sqe_cto_test_standard.CommitTransaction();
}
catch (Exception ex)
{
stringBuilder.Append("数据导入失败!");
}
finally
{
}
return stringBuilder.ToString();
}
///
/// 依据id,从sqe_file_upload和sqe_file_data,加载数据
///
///
///
public List LoadData_file_data(int upload_id)
{
List datas = _sqe_file_data.Select(a => a.file_id == upload_id).OrderBy(a => a.id).ToList();
return datas;
}
#region 产品特性
public sqe_cto_test File_data_ToModel_test(List datas, string create_by, DateTime create_date, string create_org, out string errorMsg)
{
StringBuilder stringBuilder = new StringBuilder();
sqe_cto_test model = new sqe_cto_test();
DateTime timeValue;
decimal realValuel;
if (datas != null && datas.Count >= 5)
{
try
{
sqe_file_data data = datas[1];
if (DateTime.TryParse(data.c2, out timeValue))
{
model.product_time = timeValue;
}
else
{
//model.product_time = DateTime.Parse("2000-01-01");
model.product_time = DateTime.Now;
}
model.shift_no = data.c4;
model.item_no = data.c6;
model.item_name = data.c8;
data = datas[2];
model.material_batch = data.c2;
if (decimal.TryParse(data.c4, out realValuel))
{
model.material_used = realValuel;
}
model.item_batch = data.c6;
if (decimal.TryParse(data.c8, out realValuel))
{
model.item_qty = realValuel;
}
data = datas[3];
model.op_pre = data.c2;
model.op_pre_batch = data.c4;
model.op_current = data.c6;
model.op_batch = data.c8;
data = datas[4];
model.device_name = data.c2;
model.device_no = data.c4;
if (decimal.TryParse(data.c8, out realValuel))
{
model.sampling_number = realValuel;
}
}
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;
}
}
public List File_data_ToModel_test_standard(List datas, sqe_cto_test test, string create_by, DateTime create_date, string create_org, out string errorMsg)
{
StringBuilder stringBuilder = new StringBuilder();
List modelList = new List();
decimal realValuel;
if (datas != null && datas.Count >= 13)
{
try
{
//标准的起始位置
int index = 5;
sqe_file_data dataRow = datas[index];
#region 处理尺寸的表头
if (dataRow.c3 != null && dataRow.c3.Length > 0)
{
sqe_cto_test_standard model = new sqe_cto_test_standard();
model.standard_no = dataRow.c3;
model.create_by = create_by;
model.create_date = create_date;
model.create_org = create_org;
model.test_id = test.id;
modelList.Add(model);
}
if (dataRow.c4 != null && dataRow.c4.Length > 0)
{
sqe_cto_test_standard model = new sqe_cto_test_standard();
model.standard_no = dataRow.c4;
model.create_by = create_by;
model.create_date = create_date;
model.create_org = create_org;
model.test_id = test.id;
modelList.Add(model);
}
if (dataRow.c5 != null && dataRow.c5.Length > 0)
{
sqe_cto_test_standard model = new sqe_cto_test_standard();
model.standard_no = dataRow.c5;
model.create_by = create_by;
model.create_date = create_date;
model.create_org = create_org;
model.test_id = test.id;
modelList.Add(model);
}
if (dataRow.c6 != null && dataRow.c6.Length > 0)
{
sqe_cto_test_standard model = new sqe_cto_test_standard();
model.standard_no = dataRow.c6;
model.create_by = create_by;
model.create_date = create_date;
model.create_org = create_org;
model.test_id = test.id;
modelList.Add(model);
}
if (dataRow.c7 != null && dataRow.c7.Length > 0)
{
sqe_cto_test_standard model = new sqe_cto_test_standard();
model.standard_no = dataRow.c7;
model.create_by = create_by;
model.create_date = create_date;
model.create_org = create_org;
model.test_id = test.id;
modelList.Add(model);
}
if (dataRow.c8 != null && dataRow.c8.Length > 0)
{
sqe_cto_test_standard model = new sqe_cto_test_standard();
model.standard_no = dataRow.c8;
model.create_by = create_by;
model.create_date = create_date;
model.create_org = create_org;
model.test_id = test.id;
modelList.Add(model);
}
if (dataRow.c9 != null && dataRow.c9.Length > 0)
{
sqe_cto_test_standard model = new sqe_cto_test_standard();
model.standard_no = dataRow.c9;
model.create_by = create_by;
model.create_date = create_date;
model.create_org = create_org;
model.test_id = test.id;
modelList.Add(model);
}
if (dataRow.c10 != null && dataRow.c10.Length > 0)
{
sqe_cto_test_standard model = new sqe_cto_test_standard();
model.standard_no = dataRow.c10;
model.create_by = create_by;
model.create_date = create_date;
model.create_org = create_org;
model.test_id = test.id;
modelList.Add(model);
}
if (dataRow.c11 != null && dataRow.c11.Length > 0)
{
sqe_cto_test_standard model = new sqe_cto_test_standard();
model.standard_no = dataRow.c11;
model.create_by = create_by;
model.create_date = create_date;
model.create_org = create_org;
model.test_id = test.id;
modelList.Add(model);
}
#endregion 处理尺寸的表头
if (modelList.Count > 0)
{
sqe_cto_test_standard model = modelList[0];
dataRow = datas[index + 1];
model.sampling_count = int.Parse(dataRow.c3);
dataRow = datas[index + 2];
model.is_associated_size = dataRow.c3;
dataRow = datas[index + 3];
if (dataRow.c3 != null && decimal.TryParse(dataRow.c3, out realValuel))
{
model.standard_value = realValuel;
}
dataRow = datas[index + 4];
if (dataRow.c3 != null && decimal.TryParse(dataRow.c3, out realValuel))
{
model.delta_up = realValuel;
}
dataRow = datas[index + 5];
if (dataRow.c3 != null && decimal.TryParse(dataRow.c3, out realValuel))
{
model.delta_down = realValuel;
}
dataRow = datas[index + 6];
if (dataRow.c3 != null && decimal.TryParse(dataRow.c3, out realValuel))
{
model.standard_max = realValuel;
}
dataRow = datas[index + 7];
if (dataRow.c3 != null && decimal.TryParse(dataRow.c3, out realValuel))
{
model.standard_min = realValuel;
}
}
if (modelList.Count > 1)
{
sqe_cto_test_standard model = modelList[1];
dataRow = datas[index + 1];
model.sampling_count = int.Parse(dataRow.c4);
dataRow = datas[index + 2];
model.is_associated_size = dataRow.c4;
dataRow = datas[index + 3];
if (dataRow.c4 != null && decimal.TryParse(dataRow.c4, out realValuel))
{
model.standard_value = realValuel;
}
dataRow = datas[index + 4];
if (dataRow.c4 != null && decimal.TryParse(dataRow.c4, out realValuel))
{
model.delta_up = realValuel;
}
dataRow = datas[index + 5];
if (dataRow.c4 != null && decimal.TryParse(dataRow.c4, out realValuel))
{
model.delta_down = realValuel;
}
dataRow = datas[index + 6];
if (dataRow.c4 != null && decimal.TryParse(dataRow.c4, out realValuel))
{
model.standard_max = realValuel;
}
dataRow = datas[index + 7];
if (dataRow.c4 != null && decimal.TryParse(dataRow.c4, out realValuel))
{
model.standard_min = realValuel;
}
}
if (modelList.Count > 2)
{
sqe_cto_test_standard model = modelList[2];
dataRow = datas[index + 1];
model.sampling_count = int.Parse(dataRow.c5);
dataRow = datas[index + 2];
model.is_associated_size = dataRow.c5;
dataRow = datas[index + 3];
if (dataRow.c5 != null && decimal.TryParse(dataRow.c5, out realValuel))
{
model.standard_value = realValuel;
}
dataRow = datas[index + 4];
if (dataRow.c5 != null && decimal.TryParse(dataRow.c5, out realValuel))
{
model.delta_up = realValuel;
}
dataRow = datas[index + 5];
if (dataRow.c5 != null && decimal.TryParse(dataRow.c5, out realValuel))
{
model.delta_down = realValuel;
}
dataRow = datas[index + 6];
if (dataRow.c5 != null && decimal.TryParse(dataRow.c5, out realValuel))
{
model.standard_max = realValuel;
}
dataRow = datas[index + 7];
if (dataRow.c5 != null && decimal.TryParse(dataRow.c5, out realValuel))
{
model.standard_min = realValuel;
}
}
if (modelList.Count > 3)
{
sqe_cto_test_standard model = modelList[3];
dataRow = datas[index + 1];
model.sampling_count = int.Parse(dataRow.c6);
dataRow = datas[index + 2];
model.is_associated_size = dataRow.c6;
dataRow = datas[index + 3];
if (dataRow.c6 != null && decimal.TryParse(dataRow.c6, out realValuel))
{
model.standard_value = realValuel;
}
dataRow = datas[index + 4];
if (dataRow.c6 != null && decimal.TryParse(dataRow.c6, out realValuel))
{
model.delta_up = realValuel;
}
dataRow = datas[index + 5];
if (dataRow.c6 != null && decimal.TryParse(dataRow.c6, out realValuel))
{
model.delta_down = realValuel;
}
dataRow = datas[index + 6];
if (dataRow.c6 != null && decimal.TryParse(dataRow.c6, out realValuel))
{
model.standard_max = realValuel;
}
dataRow = datas[index + 7];
if (dataRow.c6 != null && decimal.TryParse(dataRow.c6, out realValuel))
{
model.standard_min = realValuel;
}
}
if (modelList.Count > 4)
{
sqe_cto_test_standard model = modelList[4];
dataRow = datas[index + 1];
model.sampling_count = int.Parse(dataRow.c7);
dataRow = datas[index + 2];
model.is_associated_size = dataRow.c7;
dataRow = datas[index + 3];
if (dataRow.c7 != null && decimal.TryParse(dataRow.c7, out realValuel))
{
model.standard_value = realValuel;
}
dataRow = datas[index + 4];
if (dataRow.c7 != null && decimal.TryParse(dataRow.c7, out realValuel))
{
model.delta_up = realValuel;
}
dataRow = datas[index + 5];
if (dataRow.c7 != null && decimal.TryParse(dataRow.c7, out realValuel))
{
model.delta_down = realValuel;
}
dataRow = datas[index + 6];
if (dataRow.c7 != null && decimal.TryParse(dataRow.c7, out realValuel))
{
model.standard_max = realValuel;
}
dataRow = datas[index + 7];
if (dataRow.c7 != null && decimal.TryParse(dataRow.c7, out realValuel))
{
model.standard_min = realValuel;
}
}
if (modelList.Count > 5)
{
sqe_cto_test_standard model = modelList[5];
dataRow = datas[index + 1];
model.sampling_count = int.Parse(dataRow.c8);
dataRow = datas[index + 2];
model.is_associated_size = dataRow.c8;
dataRow = datas[index + 3];
if (dataRow.c8 != null && decimal.TryParse(dataRow.c8, out realValuel))
{
model.standard_value = realValuel;
}
dataRow = datas[index + 4];
if (dataRow.c8 != null && decimal.TryParse(dataRow.c8, out realValuel))
{
model.delta_up = realValuel;
}
dataRow = datas[index + 5];
if (dataRow.c8 != null && decimal.TryParse(dataRow.c8, out realValuel))
{
model.delta_down = realValuel;
}
dataRow = datas[index + 6];
if (dataRow.c8 != null && decimal.TryParse(dataRow.c8, out realValuel))
{
model.standard_max = realValuel;
}
dataRow = datas[index + 7];
if (dataRow.c8 != null && decimal.TryParse(dataRow.c8, out realValuel))
{
model.standard_min = realValuel;
}
}
if (modelList.Count > 6)
{
sqe_cto_test_standard model = modelList[6];
dataRow = datas[index + 1];
model.sampling_count = int.Parse(dataRow.c9);
dataRow = datas[index + 2];
model.is_associated_size = dataRow.c9;
dataRow = datas[index + 3];
if (dataRow.c9 != null && decimal.TryParse(dataRow.c9, out realValuel))
{
model.standard_value = realValuel;
}
dataRow = datas[index + 4];
if (dataRow.c9 != null && decimal.TryParse(dataRow.c9, out realValuel))
{
model.delta_up = realValuel;
}
dataRow = datas[index + 5];
if (dataRow.c9 != null && decimal.TryParse(dataRow.c9, out realValuel))
{
model.delta_down = realValuel;
}
dataRow = datas[index + 6];
if (dataRow.c9 != null && decimal.TryParse(dataRow.c9, out realValuel))
{
model.standard_max = realValuel;
}
dataRow = datas[index + 7];
if (dataRow.c9 != null && decimal.TryParse(dataRow.c9, out realValuel))
{
model.standard_min = realValuel;
}
}
if (modelList.Count > 7)
{
sqe_cto_test_standard model = modelList[7];
dataRow = datas[index + 1];
model.sampling_count = int.Parse(dataRow.c10);
dataRow = datas[index + 2];
model.is_associated_size = dataRow.c10;
dataRow = datas[index + 3];
if (dataRow.c10 != null && decimal.TryParse(dataRow.c10, out realValuel))
{
model.standard_value = realValuel;
}
dataRow = datas[index + 4];
if (dataRow.c10 != null && decimal.TryParse(dataRow.c10, out realValuel))
{
model.delta_up = realValuel;
}
dataRow = datas[index + 5];
if (dataRow.c10 != null && decimal.TryParse(dataRow.c10, out realValuel))
{
model.delta_down = realValuel;
}
dataRow = datas[index + 6];
if (dataRow.c10 != null && decimal.TryParse(dataRow.c10, out realValuel))
{
model.standard_max = realValuel;
}
dataRow = datas[index + 7];
if (dataRow.c10 != null && decimal.TryParse(dataRow.c10, out realValuel))
{
model.standard_min = realValuel;
}
}
if (modelList.Count > 8)
{
sqe_cto_test_standard model = modelList[8];
dataRow = datas[index + 1];
model.sampling_count = int.Parse(dataRow.c11);
dataRow = datas[index + 2];
model.is_associated_size = dataRow.c11;
dataRow = datas[index + 3];
if (dataRow.c11 != null && decimal.TryParse(dataRow.c11, out realValuel))
{
model.standard_value = realValuel;
}
dataRow = datas[index + 4];
if (dataRow.c11 != null && decimal.TryParse(dataRow.c11, out realValuel))
{
model.delta_up = realValuel;
}
dataRow = datas[index + 5];
if (dataRow.c11 != null && decimal.TryParse(dataRow.c11, out realValuel))
{
model.delta_down = realValuel;
}
dataRow = datas[index + 6];
if (dataRow.c11 != null && decimal.TryParse(dataRow.c11, out realValuel))
{
model.standard_max = realValuel;
}
dataRow = datas[index + 7];
if (dataRow.c11 != null && decimal.TryParse(dataRow.c11, out realValuel))
{
model.standard_min = realValuel;
}
}
}
catch (Exception ex)
{
WLLog.Error("Excel数据解析问题:", ex);
}
errorMsg = stringBuilder.ToString();
return modelList;
}
else
{
errorMsg = stringBuilder.ToString();
return null;
}
}
public List File_data_ToModel_test_data(List datas, sqe_cto_test test, List standards, string create_by, DateTime create_date, string create_org, out string errorMsg)
{
StringBuilder stringBuilder = new StringBuilder();
List modelList = new List();
decimal realValuel;
if (datas != null && datas.Count >= 15)
{
for (int i = 14; 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 test_datas = new List();
for (int j = 0; j < standards.Count; j++)
{
sqe_cto_test_data data = new sqe_cto_test_data();
data.test_id = standards[j].test_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
{
//将每一个检测标准的值从记录行中取出来
if (test_datas.Count > 0)
{
sqe_cto_test_data data = test_datas[0];
data.data_no = dataRow.c1;
if (dataRow.c2 != null)
{
String s = dataRow.c2.ToString();
if (s != null && s.Length > 9)
{
s = s.Substring(s.Length - 9);
}
DateTime date;
if (DateTime.TryParse(test.product_time.ToString("yyyy-MM-dd ") + s, out date))
{
data.data_time = date.ToString("yyyy-MM-dd HH:mm");
}
}
if (dataRow.c3 != null && dataRow.c3.Length > 0 && decimal.TryParse(dataRow.c3, out realValuel))
{
data.data_value = realValuel;
}
else
{
data.data_value = null;
}
}
if (test_datas.Count > 1)
{
sqe_cto_test_data data = test_datas[1];
data.data_no = dataRow.c1;
if (dataRow.c2 != null)
{
String s = dataRow.c2.ToString();
DateTime date;
if (DateTime.TryParse(test.product_time.ToString("yyyy-MM-dd ") + s, out date))
{
data.data_time = date.ToString("yyyy-MM-dd HH:mm");
}
}
if (dataRow.c4 != null && dataRow.c4.Length > 0 && decimal.TryParse(dataRow.c4, out realValuel))
{
data.data_value = realValuel;
}
else
{
data.data_value = null;
}
}
if (test_datas.Count > 2)
{
sqe_cto_test_data data = test_datas[1];
data.data_no = dataRow.c1;
if (dataRow.c2 != null)
{
String s = dataRow.c2.ToString();
DateTime date;
if (DateTime.TryParse(test.product_time.ToString("yyyy-MM-dd ") + s, out date))
{
data.data_time = date.ToString("yyyy-MM-dd HH:mm");
}
}
if (dataRow.c5 != null && dataRow.c5.Length > 0 && decimal.TryParse(dataRow.c5, out realValuel))
{
data.data_value = realValuel;
}
else
{
data.data_value = null;
}
}
if (test_datas.Count > 3)
{
sqe_cto_test_data data = test_datas[1];
data.data_no = dataRow.c1;
if (dataRow.c2 != null)
{
String s = dataRow.c2.ToString();
DateTime date;
if (DateTime.TryParse(test.product_time.ToString("yyyy-MM-dd ") + s, out date))
{
data.data_time = date.ToString("yyyy-MM-dd HH:mm");
}
}
if (dataRow.c6 != null && dataRow.c6.Length > 0 && decimal.TryParse(dataRow.c6, out realValuel))
{
data.data_value = realValuel;
}
else
{
data.data_value = null;
}
}
if (test_datas.Count > 4)
{
sqe_cto_test_data data = test_datas[1];
data.data_no = dataRow.c1;
if (dataRow.c2 != null)
{
String s = dataRow.c2.ToString();
DateTime date;
if (DateTime.TryParse(test.product_time.ToString("yyyy-MM-dd ") + s, out date))
{
data.data_time = date.ToString("yyyy-MM-dd HH:mm");
}
}
if (dataRow.c7 != null && dataRow.c7.Length > 0 && decimal.TryParse(dataRow.c7, out realValuel))
{
data.data_value = realValuel;
}
else
{
data.data_value = null;
}
}
if (test_datas.Count > 5)
{
sqe_cto_test_data data = test_datas[1];
data.data_no = dataRow.c1;
if (dataRow.c2 != null)
{
String s = dataRow.c2.ToString();
DateTime date;
if (DateTime.TryParse(test.product_time.ToString("yyyy-MM-dd ") + s, out date))
{
data.data_time = date.ToString("yyyy-MM-dd HH:mm");
}
}
if (dataRow.c8 != null && dataRow.c8.Length > 0 && decimal.TryParse(dataRow.c8, out realValuel))
{
data.data_value = realValuel;
}
else
{
data.data_value = null;
}
}
if (test_datas.Count > 6)
{
sqe_cto_test_data data = test_datas[1];
data.data_no = dataRow.c1;
if (dataRow.c2 != null)
{
String s = dataRow.c2.ToString();
DateTime date;
if (DateTime.TryParse(test.product_time.ToString("yyyy-MM-dd ") + s, out date))
{
data.data_time = date.ToString("yyyy-MM-dd HH:mm");
}
}
if (dataRow.c9 != null && dataRow.c9.Length > 0 && decimal.TryParse(dataRow.c9, out realValuel))
{
data.data_value = realValuel;
}
else
{
data.data_value = null;
}
}
if (test_datas.Count > 7)
{
sqe_cto_test_data data = test_datas[1];
data.data_no = dataRow.c1;
if (dataRow.c2 != null)
{
String s = dataRow.c2.ToString();
DateTime date;
if (DateTime.TryParse(test.product_time.ToString("yyyy-MM-dd ") + s, out date))
{
data.data_time = date.ToString("yyyy-MM-dd HH:mm");
}
}
if (dataRow.c10 != null && dataRow.c10.Length > 0 && decimal.TryParse(dataRow.c10, out realValuel))
{
data.data_value = realValuel;
}
else
{
data.data_value = null;
}
}
if (test_datas.Count > 8)
{
sqe_cto_test_data data = test_datas[1];
data.data_no = dataRow.c1;
if (dataRow.c2 != null)
{
String s = dataRow.c2.ToString();
DateTime date;
if (DateTime.TryParse(test.product_time.ToString("yyyy-MM-dd ") + s, out date))
{
data.data_time = date.ToString("yyyy-MM-dd HH:mm");
}
}
if (dataRow.c11 != null && dataRow.c11.Length > 0 && decimal.TryParse(dataRow.c11, out realValuel))
{
data.data_value = realValuel;
}
else
{
data.data_value = null;
}
}
File_data_ToModel_test_data_Add(modelList, test_datas);
}
catch (Exception ex)
{
WLLog.Error("Excel数据解析_原始数据转换到对象实体的问题:", ex);
}
}
errorMsg = string.Empty;
return modelList;
}
else
{
errorMsg = stringBuilder.ToString();
return null;
}
}
///
/// 将转换的数据插入到返回结果数据集中,处理掉异常数据
///
///
///
private void File_data_ToModel_test_data_Add(List dataDest, List dataSource)
{
if (dataSource != null && dataSource.Count > 0)
{
for (int i = 0; i < dataSource.Count; i++)
{
sqe_cto_test_data data = dataSource[i];
if (data.data_no != null && data.data_no.Length > 0 && data.data_time != null && data.data_value != null)
{
dataDest.Add(data);
}
}
}
}
#endregion 产品特性
public string Import_Process_From_Data(int upload_id, string create_by, DateTime create_date, string create_org)
{
StringBuilder stringBuilder = new StringBuilder();
try
{
List 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_cto_process test = File_data_ToModel_process(datas, create_by, create_date, create_org, out errorMsg);
if (errorMsg != null && errorMsg.Length > 0)
{
stringBuilder.AppendLine(errorMsg);
return stringBuilder.ToString();
}
_sqe_cto_process.BeginTransaction();
_sqe_cto_process.Insert(test);
errorMsg = null;
List standards = File_data_ToModel_process_standard(datas, test, create_by, create_date, create_org, out errorMsg);
if (errorMsg != null && errorMsg.Length > 0)
{
_sqe_cto_process.Rollback();
stringBuilder.AppendLine(errorMsg);
return stringBuilder.ToString();
}
_sqe_cto_process_standard.BeginTransaction();
_sqe_cto_process_standard.Insert(standards);
List test_Datas = File_data_ToModel_process_data(datas, test, standards, create_by, create_date, create_org, out errorMsg);
if (errorMsg != null && errorMsg.Length > 0)
{
_sqe_cto_process.Rollback();
_sqe_cto_process_standard.Rollback();
stringBuilder.AppendLine(errorMsg);
return stringBuilder.ToString();
}
_sqe_cto_process_data.Insert(test_Datas);
_sqe_cto_process.CommitTransaction();
_sqe_cto_process_standard.CommitTransaction();
}
catch (Exception ex)
{
stringBuilder.Append("数据导入失败!");
}
finally
{
}
return stringBuilder.ToString();
}
#region 产品过程特性
public sqe_cto_process File_data_ToModel_process(List datas, string create_by, DateTime create_date, string create_org, out string errorMsg)
{
StringBuilder stringBuilder = new StringBuilder();
sqe_cto_process model = new sqe_cto_process();
DateTime timeValue;
decimal realValuel;
if (datas != null && datas.Count >= 5)
{
try
{
sqe_file_data data = datas[1];
if (DateTime.TryParse(data.c2, out timeValue))
{
model.product_time = timeValue;
}
else
{
//model.product_time = DateTime.Parse("2000-01-01");
model.product_time = DateTime.Now;
}
model.shift_no = data.c4;
model.item_no = data.c6;
model.item_name = data.c8;
data = datas[2];
model.material_batch = data.c2;
if (decimal.TryParse(data.c4, out realValuel))
{
model.material_used = realValuel;
}
model.item_batch = data.c6;
if (decimal.TryParse(data.c8, out realValuel))
{
model.item_qty = realValuel;
}
data = datas[3];
model.op_pre = data.c2;
model.op_pre_batch = data.c4;
model.op_current = data.c6;
model.op_batch = data.c8;
data = datas[4];
model.device_name = data.c2;
model.device_no = data.c4;
if (decimal.TryParse(data.c8, out realValuel))
{
model.sampling_number = realValuel;
}
}
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;
}
}
public List File_data_ToModel_process_standard(List datas, sqe_cto_process test, string create_by, DateTime create_date, string create_org, out string errorMsg)
{
StringBuilder stringBuilder = new StringBuilder();
List modelList = new List();
decimal realValuel;
if (datas != null && datas.Count >= 13)
{
try
{
//标准的起始位置
int index = 5;
sqe_file_data dataRow = datas[index];
#region 处理尺寸的表头
if (dataRow.c2 != null && dataRow.c2.Length > 0)
{
sqe_cto_process_standard model = new sqe_cto_process_standard();
model.standard_no = dataRow.c2;
model.create_by = create_by;
model.create_date = create_date;
model.create_org = create_org;
model.process_id = test.id;
modelList.Add(model);
}
if (dataRow.c3 != null && dataRow.c3.Length > 0)
{
sqe_cto_process_standard model = new sqe_cto_process_standard();
model.standard_no = dataRow.c3;
model.create_by = create_by;
model.create_date = create_date;
model.create_org = create_org;
model.process_id = test.id;
modelList.Add(model);
}
if (dataRow.c4 != null && dataRow.c4.Length > 0)
{
sqe_cto_process_standard model = new sqe_cto_process_standard();
model.standard_no = dataRow.c4;
model.create_by = create_by;
model.create_date = create_date;
model.create_org = create_org;
model.process_id = test.id;
modelList.Add(model);
}
if (dataRow.c5 != null && dataRow.c5.Length > 0)
{
sqe_cto_process_standard model = new sqe_cto_process_standard();
model.standard_no = dataRow.c5;
model.create_by = create_by;
model.create_date = create_date;
model.create_org = create_org;
model.process_id = test.id;
modelList.Add(model);
}
if (dataRow.c6 != null && dataRow.c6.Length > 0)
{
sqe_cto_process_standard model = new sqe_cto_process_standard();
model.standard_no = dataRow.c6;
model.create_by = create_by;
model.create_date = create_date;
model.create_org = create_org;
model.process_id = test.id;
modelList.Add(model);
}
if (dataRow.c7 != null && dataRow.c7.Length > 0)
{
sqe_cto_process_standard model = new sqe_cto_process_standard();
model.standard_no = dataRow.c7;
model.create_by = create_by;
model.create_date = create_date;
model.create_org = create_org;
model.process_id = test.id;
modelList.Add(model);
}
if (dataRow.c8 != null && dataRow.c8.Length > 0)
{
sqe_cto_process_standard model = new sqe_cto_process_standard();
model.standard_no = dataRow.c8;
model.create_by = create_by;
model.create_date = create_date;
model.create_org = create_org;
model.process_id = test.id;
modelList.Add(model);
}
if (dataRow.c9 != null && dataRow.c9.Length > 0)
{
sqe_cto_process_standard model = new sqe_cto_process_standard();
model.standard_no = dataRow.c9;
model.create_by = create_by;
model.create_date = create_date;
model.create_org = create_org;
model.process_id = test.id;
modelList.Add(model);
}
if (dataRow.c10 != null && dataRow.c10.Length > 0)
{
sqe_cto_process_standard model = new sqe_cto_process_standard();
model.standard_no = dataRow.c10;
model.create_by = create_by;
model.create_date = create_date;
model.create_org = create_org;
model.process_id = test.id;
modelList.Add(model);
}
#endregion 处理尺寸的表头
if (modelList.Count > 0)
{
sqe_cto_process_standard model = modelList[0];
dataRow = datas[index + 1];
if (dataRow.c2 != null && decimal.TryParse(dataRow.c2, out realValuel))
{
model.standard_value = realValuel;
}
dataRow = datas[index + 2];
if (dataRow.c2 != null && decimal.TryParse(dataRow.c2, out realValuel))
{
model.delta_up = realValuel;
}
dataRow = datas[index + 3];
if (dataRow.c2 != null && decimal.TryParse(dataRow.c2, out realValuel))
{
model.delta_down = realValuel;
}
dataRow = datas[index + 4];
if (dataRow.c2 != null && decimal.TryParse(dataRow.c2, out realValuel))
{
model.standard_max = realValuel;
}
dataRow = datas[index + 5];
if (dataRow.c2 != null && decimal.TryParse(dataRow.c2, out realValuel))
{
model.standard_min = realValuel;
}
}
if (modelList.Count > 1)
{
sqe_cto_process_standard model = modelList[1];
dataRow = datas[index + 1];
if (dataRow.c3 != null && decimal.TryParse(dataRow.c3, out realValuel))
{
model.standard_value = realValuel;
}
dataRow = datas[index + 2];
if (dataRow.c3 != null && decimal.TryParse(dataRow.c3, out realValuel))
{
model.delta_up = realValuel;
}
dataRow = datas[index + 3];
if (dataRow.c3 != null && decimal.TryParse(dataRow.c3, out realValuel))
{
model.delta_down = realValuel;
}
dataRow = datas[index + 4];
if (dataRow.c3 != null && decimal.TryParse(dataRow.c3, out realValuel))
{
model.standard_max = realValuel;
}
dataRow = datas[index + 5];
if (dataRow.c3 != null && decimal.TryParse(dataRow.c3, out realValuel))
{
model.standard_min = realValuel;
}
}
if (modelList.Count > 2)
{
sqe_cto_process_standard model = modelList[2];
dataRow = datas[index + 1];
if (dataRow.c4 != null && decimal.TryParse(dataRow.c4, out realValuel))
{
model.standard_value = realValuel;
}
dataRow = datas[index + 2];
if (dataRow.c4 != null && decimal.TryParse(dataRow.c4, out realValuel))
{
model.delta_up = realValuel;
}
dataRow = datas[index + 3];
if (dataRow.c4 != null && decimal.TryParse(dataRow.c4, out realValuel))
{
model.delta_down = realValuel;
}
dataRow = datas[index + 4];
if (dataRow.c4 != null && decimal.TryParse(dataRow.c4, out realValuel))
{
model.standard_max = realValuel;
}
dataRow = datas[index + 5];
if (dataRow.c4 != null && decimal.TryParse(dataRow.c4, out realValuel))
{
model.standard_min = realValuel;
}
}
if (modelList.Count > 3)
{
sqe_cto_process_standard model = modelList[3];
dataRow = datas[index + 1];
if (dataRow.c5 != null && decimal.TryParse(dataRow.c5, out realValuel))
{
model.standard_value = realValuel;
}
dataRow = datas[index + 2];
if (dataRow.c5 != null && decimal.TryParse(dataRow.c5, out realValuel))
{
model.delta_up = realValuel;
}
dataRow = datas[index + 3];
if (dataRow.c5 != null && decimal.TryParse(dataRow.c5, out realValuel))
{
model.delta_down = realValuel;
}
dataRow = datas[index + 4];
if (dataRow.c5 != null && decimal.TryParse(dataRow.c5, out realValuel))
{
model.standard_max = realValuel;
}
dataRow = datas[index + 5];
if (dataRow.c5 != null && decimal.TryParse(dataRow.c5, out realValuel))
{
model.standard_min = realValuel;
}
}
if (modelList.Count > 4)
{
sqe_cto_process_standard model = modelList[4];
dataRow = datas[index + 1];
if (dataRow.c6 != null && decimal.TryParse(dataRow.c6, out realValuel))
{
model.standard_value = realValuel;
}
dataRow = datas[index + 2];
if (dataRow.c6 != null && decimal.TryParse(dataRow.c6, out realValuel))
{
model.delta_up = realValuel;
}
dataRow = datas[index + 3];
if (dataRow.c6 != null && decimal.TryParse(dataRow.c6, out realValuel))
{
model.delta_down = realValuel;
}
dataRow = datas[index + 4];
if (dataRow.c6 != null && decimal.TryParse(dataRow.c6, out realValuel))
{
model.standard_max = realValuel;
}
dataRow = datas[index + 5];
if (dataRow.c6 != null && decimal.TryParse(dataRow.c6, out realValuel))
{
model.standard_min = realValuel;
}
}
if (modelList.Count > 5)
{
sqe_cto_process_standard model = modelList[5];
dataRow = datas[index + 1];
if (dataRow.c7 != null && decimal.TryParse(dataRow.c7, out realValuel))
{
model.standard_value = realValuel;
}
dataRow = datas[index + 2];
if (dataRow.c7 != null && decimal.TryParse(dataRow.c7, out realValuel))
{
model.delta_up = realValuel;
}
dataRow = datas[index + 3];
if (dataRow.c7 != null && decimal.TryParse(dataRow.c7, out realValuel))
{
model.delta_down = realValuel;
}
dataRow = datas[index + 4];
if (dataRow.c7 != null && decimal.TryParse(dataRow.c7, out realValuel))
{
model.standard_max = realValuel;
}
dataRow = datas[index + 5];
if (dataRow.c7 != null && decimal.TryParse(dataRow.c7, out realValuel))
{
model.standard_min = realValuel;
}
}
if (modelList.Count > 6)
{
sqe_cto_process_standard model = modelList[6];
dataRow = datas[index + 1];
if (dataRow.c8 != null && decimal.TryParse(dataRow.c8, out realValuel))
{
model.standard_value = realValuel;
}
dataRow = datas[index + 2];
if (dataRow.c8 != null && decimal.TryParse(dataRow.c8, out realValuel))
{
model.delta_up = realValuel;
}
dataRow = datas[index + 3];
if (dataRow.c8 != null && decimal.TryParse(dataRow.c8, out realValuel))
{
model.delta_down = realValuel;
}
dataRow = datas[index + 4];
if (dataRow.c8 != null && decimal.TryParse(dataRow.c8, out realValuel))
{
model.standard_max = realValuel;
}
dataRow = datas[index + 5];
if (dataRow.c8 != null && decimal.TryParse(dataRow.c8, out realValuel))
{
model.standard_min = realValuel;
}
}
if (modelList.Count > 7)
{
sqe_cto_process_standard model = modelList[7];
dataRow = datas[index + 1];
if (dataRow.c9 != null && decimal.TryParse(dataRow.c9, out realValuel))
{
model.standard_value = realValuel;
}
dataRow = datas[index + 2];
if (dataRow.c9 != null && decimal.TryParse(dataRow.c9, out realValuel))
{
model.delta_up = realValuel;
}
dataRow = datas[index + 3];
if (dataRow.c9 != null && decimal.TryParse(dataRow.c9, out realValuel))
{
model.delta_down = realValuel;
}
dataRow = datas[index + 4];
if (dataRow.c9 != null && decimal.TryParse(dataRow.c9, out realValuel))
{
model.standard_max = realValuel;
}
dataRow = datas[index + 5];
if (dataRow.c9 != null && decimal.TryParse(dataRow.c9, out realValuel))
{
model.standard_min = realValuel;
}
}
if (modelList.Count > 8)
{
sqe_cto_process_standard model = modelList[8];
dataRow = datas[index + 1];
if (dataRow.c10 != null && decimal.TryParse(dataRow.c10, out realValuel))
{
model.standard_value = realValuel;
}
dataRow = datas[index + 2];
if (dataRow.c10 != null && decimal.TryParse(dataRow.c10, out realValuel))
{
model.delta_up = realValuel;
}
dataRow = datas[index + 3];
if (dataRow.c10 != null && decimal.TryParse(dataRow.c10, out realValuel))
{
model.delta_down = realValuel;
}
dataRow = datas[index + 4];
if (dataRow.c10 != null && decimal.TryParse(dataRow.c10, out realValuel))
{
model.standard_max = realValuel;
}
dataRow = datas[index + 5];
if (dataRow.c10 != null && decimal.TryParse(dataRow.c10, out realValuel))
{
model.standard_min = realValuel;
}
}
}
catch (Exception ex)
{
WLLog.Error("Excel数据解析问题:", ex);
}
errorMsg = stringBuilder.ToString();
return modelList;
}
else
{
errorMsg = stringBuilder.ToString();
return null;
}
}
public List File_data_ToModel_process_data(List datas, sqe_cto_process test, List standards, string create_by, DateTime create_date, string create_org, out string errorMsg)
{
StringBuilder stringBuilder = new StringBuilder();
List modelList = new List();
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 test_datas = new List();
for (int j = 0; j < standards.Count; j++)
{
sqe_cto_process_data data = new sqe_cto_process_data();
data.process_id = standards[j].process_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
{
//将每一个检测标准的值从记录行中取出来
if (test_datas.Count > 0)
{
sqe_cto_process_data data = test_datas[0];
if (dataRow.c1 != null)
{
String s = dataRow.c1.ToString();
if (s != null && s.Length > 9)
{
s = s.Substring(s.Length - 9);
}
DateTime date;
if (DateTime.TryParse(test.product_time.ToString("yyyy-MM-dd ") + s, out date))
{
data.data_time = date.ToString("yyyy-MM-dd HH:mm");
}
}
if (dataRow.c2 != null && dataRow.c2.Length > 0 && decimal.TryParse(dataRow.c2, out realValuel))
{
data.data_value = realValuel;
}
else
{
data.data_value = null;
}
}
if (test_datas.Count > 1)
{
sqe_cto_process_data data = test_datas[1];
if (dataRow.c1 != null)
{
String s = dataRow.c1.ToString();
if (s != null && s.Length > 9)
{
s = s.Substring(s.Length - 9);
}
DateTime date;
if (DateTime.TryParse(test.product_time.ToString("yyyy-MM-dd ") + s, out date))
{
data.data_time = date.ToString("yyyy-MM-dd HH:mm");
}
}
if (dataRow.c3 != null && dataRow.c3.Length > 0 && decimal.TryParse(dataRow.c3, out realValuel))
{
data.data_value = realValuel;
}
else
{
data.data_value = null;
}
}
if (test_datas.Count > 2)
{
sqe_cto_process_data data = test_datas[2];
if (dataRow.c1 != null)
{
String s = dataRow.c1.ToString();
if (s != null && s.Length > 9)
{
s = s.Substring(s.Length - 9);
}
DateTime date;
if (DateTime.TryParse(test.product_time.ToString("yyyy-MM-dd ") + s, out date))
{
data.data_time = date.ToString("yyyy-MM-dd HH:mm");
}
}
if (dataRow.c4 != null && dataRow.c4.Length > 0 && decimal.TryParse(dataRow.c4, out realValuel))
{
data.data_value = realValuel;
}
else
{
data.data_value = null;
}
}
if (test_datas.Count > 3)
{
sqe_cto_process_data data = test_datas[3];
if (dataRow.c1 != null)
{
String s = dataRow.c1.ToString();
if (s != null && s.Length > 9)
{
s = s.Substring(s.Length - 9);
}
DateTime date;
if (DateTime.TryParse(test.product_time.ToString("yyyy-MM-dd ") + s, out date))
{
data.data_time = date.ToString("yyyy-MM-dd HH:mm");
}
}
if (dataRow.c5 != null && dataRow.c5.Length > 0 && decimal.TryParse(dataRow.c5, out realValuel))
{
data.data_value = realValuel;
}
else
{
data.data_value = null;
}
}
if (test_datas.Count > 4)
{
sqe_cto_process_data data = test_datas[4];
if (dataRow.c1 != null)
{
String s = dataRow.c1.ToString();
if (s != null && s.Length > 9)
{
s = s.Substring(s.Length - 9);
}
DateTime date;
if (DateTime.TryParse(test.product_time.ToString("yyyy-MM-dd ") + s, out date))
{
data.data_time = date.ToString("yyyy-MM-dd HH:mm");
}
}
if (dataRow.c6 != null && dataRow.c6.Length > 0 && decimal.TryParse(dataRow.c6, out realValuel))
{
data.data_value = realValuel;
}
else
{
data.data_value = null;
}
}
if (test_datas.Count > 5)
{
sqe_cto_process_data data = test_datas[5];
if (dataRow.c1 != null)
{
String s = dataRow.c1.ToString();
if (s != null && s.Length > 9)
{
s = s.Substring(s.Length - 9);
}
DateTime date;
if (DateTime.TryParse(test.product_time.ToString("yyyy-MM-dd ") + s, out date))
{
data.data_time = date.ToString("yyyy-MM-dd HH:mm");
}
}
if (dataRow.c7 != null && dataRow.c7.Length > 0 && decimal.TryParse(dataRow.c7, out realValuel))
{
data.data_value = realValuel;
}
else
{
data.data_value = null;
}
}
if (test_datas.Count > 6)
{
sqe_cto_process_data data = test_datas[6];
if (dataRow.c1 != null)
{
String s = dataRow.c1.ToString();
if (s != null && s.Length > 9)
{
s = s.Substring(s.Length - 9);
}
DateTime date;
if (DateTime.TryParse(test.product_time.ToString("yyyy-MM-dd ") + s, out date))
{
data.data_time = date.ToString("yyyy-MM-dd HH:mm");
}
}
if (dataRow.c8 != null && dataRow.c8.Length > 0 && decimal.TryParse(dataRow.c8, out realValuel))
{
data.data_value = realValuel;
}
else
{
data.data_value = null;
}
}
if (test_datas.Count > 7)
{
sqe_cto_process_data data = test_datas[7];
if (dataRow.c1 != null)
{
String s = dataRow.c1.ToString();
if (s != null && s.Length > 9)
{
s = s.Substring(s.Length - 9);
}
DateTime date;
if (DateTime.TryParse(test.product_time.ToString("yyyy-MM-dd ") + s, out date))
{
data.data_time = date.ToString("yyyy-MM-dd HH:mm");
}
}
if (dataRow.c9 != null && dataRow.c9.Length > 0 && decimal.TryParse(dataRow.c9, out realValuel))
{
data.data_value = realValuel;
}
else
{
data.data_value = null;
}
}
if (test_datas.Count > 8)
{
sqe_cto_process_data data = test_datas[8];
if (dataRow.c1 != null)
{
String s = dataRow.c1.ToString();
if (s != null && s.Length > 9)
{
s = s.Substring(s.Length - 9);
}
DateTime date;
if (DateTime.TryParse(test.product_time.ToString("yyyy-MM-dd ") + s, out date))
{
data.data_time = date.ToString("yyyy-MM-dd HH:mm");
}
}
if (dataRow.c10 != null && dataRow.c10.Length > 0 && decimal.TryParse(dataRow.c10, out realValuel))
{
data.data_value = realValuel;
}
else
{
data.data_value = null;
}
}
File_data_ToModel_process_data_Add(modelList, test_datas);
}
catch (Exception ex)
{
WLLog.Error("Excel数据解析_原始数据转换到对象实体的问题:", ex);
}
}
errorMsg = string.Empty;
return modelList;
}
else
{
errorMsg = stringBuilder.ToString();
return null;
}
}
///
/// 将转换的数据插入到返回结果数据集中,处理掉异常数据
///
///
///
private void File_data_ToModel_process_data_Add(List dataDest, List dataSource)
{
if (dataSource != null && dataSource.Count > 0)
{
for (int i = 0; i < dataSource.Count; i++)
{
sqe_cto_process_data data = dataSource[i];
if (data.data_time != null && data.data_value != null)
{
dataDest.Add(data);
}
}
}
}
#endregion 产品过程特性
///
/// 依据导入的数据行,生成OP的表头、检验标准和数据行
///
///
///
///
///
///
public string Import_Op_From_Data(int upload_id, string create_by, DateTime create_date, string create_org)
{
StringBuilder stringBuilder = new StringBuilder();
try
{
List datas = LoadData_file_data(upload_id);
if (datas == null || datas.Count == 0)
{
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_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_op.BeginTransaction();
_sqe_op.Insert(test);
errorMsg = null;
List standards = File_data_ToModel_op_data(datas, test, create_by, create_date, create_org, out errorMsg);
if (errorMsg != null && errorMsg.Length > 0)
{
_sqe_op.Rollback();
stringBuilder.AppendLine(errorMsg);
return stringBuilder.ToString();
}
_sqe_op_data.BeginTransaction();
_sqe_op_data.Insert(standards);
List 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();
}
catch (Exception ex)
{
stringBuilder.Append("数据导入失败!");
}
finally
{
}
return stringBuilder.ToString();
}
#region OP
///
/// 从原始数据行生成OP的表头数据
///
///
///
///
///
///
///
public sqe_op File_data_ToModel_op(List 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;
}
///
/// 从原始数据行生成OP的检验标准
///
///
///
///
///
///
///
///
public List File_data_ToModel_op_data(List datas, sqe_op test, string create_by, DateTime create_date, string create_org, out string errorMsg)
{
StringBuilder stringBuilder = new StringBuilder();
List modelList = new List();
decimal realValuel;
if (datas != null && datas.Count > 1)
{
for (int i = 1; i < datas.Count; i++)
{
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;
}
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.qty_all = realValuel;
}
obj = GetFieldValue(dataRow, "c5");
if (obj != null && decimal.TryParse(obj.ToString(), out realValuel))
{
model.qty_ok = realValuel;
}
obj = GetFieldValue(dataRow, "c6");
if (obj != null && decimal.TryParse(obj.ToString(), out realValuel))
{
model.qty_error = realValuel;
}
obj = GetFieldValue(dataRow, "c7");
if (obj != null && decimal.TryParse(obj.ToString(), out realValuel))
{
model.percent_ok = realValuel;
}
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);
}
}
errorMsg = stringBuilder.ToString();
return modelList;
}
///
/// 从原始数据行生成OP的数据
///
///
///
///
///
///
///
///
///
public List File_data_ToModel_op_data_detail(List datas, sqe_op test, List standards, string create_by, DateTime create_date, string create_org, out string errorMsg)
{
StringBuilder stringBuilder = new StringBuilder();
List modelList = new List();
decimal realValuel;
if (datas != null && datas.Count > 1)
{
for (int i = 1; i < datas.Count && i - 1 < standards.Count; i++)
{
sqe_file_data dataRow = datas[i];
List testDatas = new List();
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;
}
data.create_by = create_by;
data.create_date = create_date;
data.create_org = create_org;
testDatas.Add(data);
}
}
File_data_ToModel_op_data_detail_Add(modelList, testDatas);
}
errorMsg = string.Empty;
return modelList;
}
else
{
errorMsg = stringBuilder.ToString();
return null;
}
}
///
/// 将转换的数据插入到返回结果数据集中,处理掉异常数据
///
///
///
private void File_data_ToModel_op_data_detail_Add(List dataDest, List dataSource)
{
if (dataSource != null && dataSource.Count > 0)
{
for (int i = 0; i < dataSource.Count; i++)
{
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 OP
///
/// 依据导入的数据行,生成FPY的表头、检验标准和数据行
///
///
///
///
///
///
public string Import_Fpy_From_Data(int upload_id, string create_by, DateTime create_date, string create_org)
{
StringBuilder stringBuilder = new StringBuilder();
try
{
List datas = LoadData_file_data(upload_id);
if (datas == null || datas.Count == 0)
{
stringBuilder.AppendLine("导入数据信息不存在!");
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_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_fpy.BeginTransaction();
_sqe_fpy.Insert(test);
errorMsg = null;
List standards = File_data_ToModel_fpy_data(datas, test, create_by, create_date, create_org, out errorMsg);
if (errorMsg != null && errorMsg.Length > 0)
{
_sqe_fpy.Rollback();
stringBuilder.AppendLine(errorMsg);
return stringBuilder.ToString();
}
_sqe_fpy_data.BeginTransaction();
_sqe_fpy_data.Insert(standards);
_sqe_fpy.CommitTransaction();
_sqe_fpy_data.CommitTransaction();
}
catch (Exception ex)
{
stringBuilder.Append("数据导入失败!");
}
finally
{
}
return stringBuilder.ToString();
}
#region FPY
///
/// 从原始数据行生成FPY的表头数据
///
///
///
///
///
///
///
public sqe_fpy File_data_ToModel_fpy(List datas, string create_by, DateTime create_date, string create_org, out string errorMsg)
{
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;
}
///
/// 从原始数据行生成FPY的检验标准
///
///
///
///
///
///
///
///
public List File_data_ToModel_fpy_data(List datas, sqe_fpy test, string create_by, DateTime create_date, string create_org, out string errorMsg)
{
StringBuilder stringBuilder = new StringBuilder();
List modelList = new List();
decimal realValuel;
if (datas != null && datas.Count > 3)
{
for (int i = 3; 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))
{
break;
}
int dateLength;
DateTime dt;
if (DateTime.TryParse(dataRow.c2, out dt))
{
model.op_time = dt;
}
else
{
if (int.TryParse(dataRow.c2, out dateLength))
{
dt = DateTime.Parse("1900-01-01");
model.op_time = dt.AddDays(dateLength - 2);
}
}
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))
{
model.qty_error = realValuel;
}
obj = GetFieldValue(dataRow, "c8");
if (obj != null && decimal.TryParse(obj.ToString(), out realValuel))
{
model.percent_ok = realValuel;
}
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 FPY
///
/// 依据导入的数据行,生成OQC的表头、检验标准和数据行
///
///
///
///
///
///
public string Import_Oqc_From_Data(int upload_id, string create_by, DateTime create_date, string create_org)
{
StringBuilder stringBuilder = new StringBuilder();
try
{
List 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();
}
_sqe_oqc.BeginTransaction();
_sqe_oqc.Insert(test);
errorMsg = null;
List 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();
}
_sqe_oqc_standard.BeginTransaction();
_sqe_oqc_standard.Insert(standards);
List 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();
}
catch (Exception ex)
{
stringBuilder.Append("数据导入失败!");
}
finally
{
}
return stringBuilder.ToString();
}
#region OQC
///
/// 从原始数据行生成OQC的表头数据
///
///
///
///
///
///
///
public sqe_oqc File_data_ToModel_oqc(List datas, string create_by, DateTime create_date, string create_org, out string errorMsg)
{
StringBuilder stringBuilder = new StringBuilder();
sqe_oqc model = new sqe_oqc();
DateTime timeValue;
decimal realValuel;
if (datas != null && datas.Count >= 4)
{
try
{
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))
{
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;
}
}
///
/// 从原始数据行生成OQC的检验标准
///
///
///
///
///
///
///
///
public List File_data_ToModel_oqc_standard(List datas, sqe_oqc test, string create_by, DateTime create_date, string create_org, out string errorMsg)
{
StringBuilder stringBuilder = new StringBuilder();
List modelList = new List();
decimal realValuel;
if (datas != null && datas.Count >= 13)
{
try
{
//标准的起始位置
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 处理尺寸的表头
//处理表头的具体值
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;
}
dataRow = datas[index + 3];
obj = GetFieldValue(dataRow, fieldName);
if (obj != null && decimal.TryParse(obj.ToString(), out realValuel))
{
model.delta_up = realValuel;
}
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)
{
WLLog.Error("Excel数据解析问题:", ex);
}
errorMsg = stringBuilder.ToString();
return modelList;
}
else
{
errorMsg = stringBuilder.ToString();
return null;
}
}
///
/// 获取某个对象的某个属性的值
///
///
///
///
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;
}
///
/// 从原始数据行生成OQC的数据
///
///
///
///
///
///
///
///
///
public List File_data_ToModel_oqc_data(List datas, sqe_oqc test, List standards, string create_by, DateTime create_date, string create_org, out string errorMsg)
{
StringBuilder stringBuilder = new StringBuilder();
List modelList = new List();
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 test_datas = new List();
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);
}
}
errorMsg = string.Empty;
return modelList;
}
else
{
errorMsg = stringBuilder.ToString();
return null;
}
}
///
/// 将转换的数据插入到返回结果数据集中,处理掉异常数据
///
///
///
private void File_data_ToModel_oqc_data_Add(List dataDest, List 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)
{
dataDest.Add(data);
}
}
}
}
#endregion OQC
}
}