|
|
@@ -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
|
|
|
}
|
|
|
}
|