|
|
@@ -1286,9 +1286,10 @@ namespace TeamAAS_VP.Core
|
|
|
/// 工单信息
|
|
|
/// </summary>
|
|
|
string[] wo = new string[10];
|
|
|
-
|
|
|
string[] model_num = new string[10];//产品model_num
|
|
|
string[] color = new string[10];//产品color
|
|
|
+ string[] ppid = new string[10];//产品ppid
|
|
|
+ string[] revision = new string[10];//产品revision
|
|
|
/// <summary>
|
|
|
/// 二次定位相机的工具坐标
|
|
|
/// </summary>
|
|
|
@@ -2327,9 +2328,7 @@ namespace TeamAAS_VP.Core
|
|
|
//过站请求
|
|
|
if (state == 1)
|
|
|
{
|
|
|
-
|
|
|
- // 这里缺少从MES获取产品配方的内容,需要补充
|
|
|
-
|
|
|
+ //获取过站时间
|
|
|
_LastMesCheckTime[i] = (await _mesService.GetServerTimeAsync(i, code, 2)).Now;
|
|
|
|
|
|
//获取当前工位的配置
|
|
|
@@ -2391,6 +2390,19 @@ namespace TeamAAS_VP.Core
|
|
|
color[i] = colorItem.Replace("color=", "").Trim();
|
|
|
SendTaskMessage($"color:{color[i]}", MessageLevel.Info);
|
|
|
}
|
|
|
+ string ppidItem = item.FirstOrDefault(f => f.Contains("ppid="));
|
|
|
+ if (ppidItem != null)
|
|
|
+ {
|
|
|
+ ppid[i] = ppidItem.Replace("ppid=", "").Trim();
|
|
|
+ SendTaskMessage($"ppid:{ppid[i]}", MessageLevel.Info);
|
|
|
+ }
|
|
|
+ string revisionItem = item.FirstOrDefault(f => f.Contains("revision="));
|
|
|
+ if (revisionItem != null)
|
|
|
+ {
|
|
|
+ revision[i] = revisionItem.Replace("revision=", "").Trim();
|
|
|
+ SendTaskMessage($"revision:{revision[i]}", MessageLevel.Info);
|
|
|
+ }
|
|
|
+
|
|
|
//切换产品
|
|
|
if (i == 0)//i=0时才会切换产品
|
|
|
{
|
|
|
@@ -2483,6 +2495,19 @@ namespace TeamAAS_VP.Core
|
|
|
color[i] = colorItem.Replace("color=", "").Trim();
|
|
|
SendTaskMessage($"color:{color[i]}", MessageLevel.Info);
|
|
|
}
|
|
|
+ string ppidItem = item.FirstOrDefault(f => f.Contains("ppid="));
|
|
|
+ if (ppidItem != null)
|
|
|
+ {
|
|
|
+ ppid[i] = ppidItem.Replace("ppid=", "").Trim();
|
|
|
+ SendTaskMessage($"ppid:{ppid[i]}", MessageLevel.Info);
|
|
|
+ }
|
|
|
+ string revisionItem = item.FirstOrDefault(f => f.Contains("revision="));
|
|
|
+ if (revisionItem != null)
|
|
|
+ {
|
|
|
+ revision[i] = revisionItem.Replace("revision=", "").Trim();
|
|
|
+ SendTaskMessage($"revision:{revision[i]}", MessageLevel.Info);
|
|
|
+ }
|
|
|
+
|
|
|
LogHelper.WriteLogMes($"询问mes成功");
|
|
|
SendTaskMessage($"询问mes成功:{response}", MessageLevel.Debug);
|
|
|
//切换产品
|
|
|
@@ -2545,7 +2570,7 @@ namespace TeamAAS_VP.Core
|
|
|
// 上传本站数据
|
|
|
else if (state == 2)
|
|
|
{
|
|
|
- DFC.Clear();
|
|
|
+ DFC.Clear();//CTQ数据集合
|
|
|
|
|
|
//获取当前工位的配置
|
|
|
var stationConfig = _configService.GetDeviceInfo(i);
|
|
|
@@ -2564,6 +2589,8 @@ namespace TeamAAS_VP.Core
|
|
|
Int16 resultIndex = plc.ReadNode<Int16>(string.Format(addressConfig.In_Result.Address, i));
|
|
|
//读取压力值
|
|
|
float pressure = plc.ReadNode<float>(string.Format(addressConfig.In_PressureValue.Address, i));
|
|
|
+
|
|
|
+ #region 组装结果显示列表信息
|
|
|
AssemblyRecord assemblyRecord = new AssemblyRecord();
|
|
|
assemblyRecord.ProductSN = ProductMainSN[i];
|
|
|
assemblyRecord.RecipeName = currentProduct.Name;
|
|
|
@@ -2610,6 +2637,8 @@ namespace TeamAAS_VP.Core
|
|
|
}
|
|
|
|
|
|
await _systemDatabaseService.RecordAssemblyAsync(assemblyRecord);
|
|
|
+ #endregion
|
|
|
+
|
|
|
LogHelper.WriteLogMes($"【mes开始ADD】");
|
|
|
SendTaskMessage($"mes开始ADD", MessageLevel.Info);
|
|
|
string assypress = ""; string cc = "";
|
|
|
@@ -2619,7 +2648,93 @@ namespace TeamAAS_VP.Core
|
|
|
//SendTaskMessage($"CC1:{mes_cc["1"]},CC2:{mes_cc["2"]}", MessageLevel.Info);
|
|
|
assypress = currentPressure[i].ToString("F2");
|
|
|
SendTaskMessage($"cc:{cc},组装压力:{assypress}", MessageLevel.Debug);
|
|
|
-
|
|
|
+ #region CSV数据
|
|
|
+ DFC.Clear();
|
|
|
+ bool assyPress = resultIndex == 1 ? true : false;
|
|
|
+ string midValue = "", saveppid = "";
|
|
|
+ midValue = ((currentProduct.GlobalParamEx.CC1DownLimit + currentProduct.GlobalParamEx.CC1UpLimit) / 2).ToString("F3");
|
|
|
+ if (stationConfig.SaveCsvPPID) saveppid = ppid[i];
|
|
|
+ DFC.Add(new DataFormCtq
|
|
|
+ {
|
|
|
+ PPID = saveppid,
|
|
|
+ PROCESS_NAME = stationConfig.DataInfo.PROCESS_NAME,
|
|
|
+ PROCESS_START_TIME = _LastMesCheckTime[i].ToString("yyyy-MM-ddTHH:mm:ss.fffffff") + "+08:00",
|
|
|
+ CTQ_NAME = "CC1",
|
|
|
+ CTQ_VALUE = mes_cc["1"],
|
|
|
+ CTQ_LSL = currentProduct.GlobalParamEx.CC1DownLimit.ToString("F3"),
|
|
|
+ CTQ_USL = currentProduct.GlobalParamEx.CC1UpLimit.ToString("F3"),
|
|
|
+ PROCESS_END_TIME = serverTimeResult.Now.ToString("yyyy-MM-ddTHH:mm:ss.fffffff") + "+08:00",
|
|
|
+ SUPPLIER_NAME = stationConfig.DataInfo.SUPPLIER_NAME,
|
|
|
+ COMMODITY_TYPE = stationConfig.DataInfo.COMMODITY_TYPE,
|
|
|
+ REVISION = stationConfig.DataInfo.REVISION,
|
|
|
+ WO = wo[i],
|
|
|
+ MFG_LOT = stationConfig.DataInfo.MFG_LOT,
|
|
|
+ MFG_ASSY_LINE = stationConfig.DataInfo.MFG_ASSY_LINE,
|
|
|
+ PROCESS_OUTCOME = assyPress ? "Pass" : "Fail",
|
|
|
+ PROCESS_MACHINE_ID = stationConfig.DataInfo.PROCESS_MACHINE_ID,
|
|
|
+ CTQ_UNIT_OF_MEASURE = "mm",
|
|
|
+ ERROR_MESSAGE = assyPress ? "" : "CC OOS",
|
|
|
+ PD_ATTR_01 = midValue,
|
|
|
+ PD_ATTR_02 = ProductMainSN[i],
|
|
|
+ PD_ATTR_03 = PartSN,
|
|
|
+ PD_ATTR_04 = "",
|
|
|
+ PD_ATTR_05 = "",
|
|
|
+ });
|
|
|
+ midValue = ((currentProduct.GlobalParamEx.CC2DownLimit + currentProduct.Globa2ParamEx.CC1UpLimit) / 2).ToString("F3");
|
|
|
+ DFC.Add(new DataFormCtq
|
|
|
+ {
|
|
|
+ PPID = saveppid,
|
|
|
+ PROCESS_NAME = stationConfig.DataInfo.PROCESS_NAME,
|
|
|
+ PROCESS_START_TIME = _LastMesCheckTime[i].ToString("yyyy-MM-ddTHH:mm:ss.fffffff") + "+08:00",
|
|
|
+ CTQ_NAME = "CC2",
|
|
|
+ CTQ_VALUE = mes_cc["2"],
|
|
|
+ CTQ_LSL = currentProduct.GlobalParamEx.CC2DownLimit.ToString("F3"),
|
|
|
+ CTQ_USL = currentProduct.GlobalParamEx.CC2UpLimit.ToString("F3"),
|
|
|
+ PROCESS_END_TIME = serverTimeResult.Now.ToString("yyyy-MM-ddTHH:mm:ss.fffffff") + "+08:00",
|
|
|
+ SUPPLIER_NAME = stationConfig.DataInfo.SUPPLIER_NAME,
|
|
|
+ COMMODITY_TYPE = stationConfig.DataInfo.COMMODITY_TYPE,
|
|
|
+ REVISION = stationConfig.DataInfo.REVISION,
|
|
|
+ WO = wo[i],
|
|
|
+ MFG_LOT = stationConfig.DataInfo.MFG_LOT,
|
|
|
+ MFG_ASSY_LINE = stationConfig.DataInfo.MFG_ASSY_LINE,
|
|
|
+ PROCESS_OUTCOME = assyPress ? "Pass" : "Fail",
|
|
|
+ PROCESS_MACHINE_ID = stationConfig.DataInfo.PROCESS_MACHINE_ID,
|
|
|
+ CTQ_UNIT_OF_MEASURE = "mm",
|
|
|
+ ERROR_MESSAGE = assyPress ? "" : "CC OOS",
|
|
|
+ PD_ATTR_01 = midValue,
|
|
|
+ PD_ATTR_02 = ProductMainSN[i],
|
|
|
+ PD_ATTR_03 = PartSN,
|
|
|
+ PD_ATTR_04 = "",
|
|
|
+ PD_ATTR_05 = "",
|
|
|
+ });
|
|
|
+ midValue = ((currentProduct.GlobalParamEx.DownPressure.PressureDownLimit + currentProduct.Globa2ParamEx.DownPressure.PressureUpLimit) / 2).ToString("F3");
|
|
|
+ DFC.Add(new DataFormCtq
|
|
|
+ {
|
|
|
+ PPID = saveppid,
|
|
|
+ PROCESS_NAME = stationConfig.DataInfo.PROCESS_NAME,
|
|
|
+ PROCESS_START_TIME = _LastMesCheckTime[i].ToString("yyyy-MM-ddTHH:mm:ss.fffffff") + "+08:00",
|
|
|
+ CTQ_NAME = "Assy_Pressure",
|
|
|
+ CTQ_VALUE = Math.Round(double.Parse(assypress), 3).ToString(),
|
|
|
+ CTQ_LSL = currentProduct.GlobalParamEx.DownPressure.PressureDownLimit.ToString("F3"),
|
|
|
+ CTQ_USL = currentProduct.GlobalParamEx.DownPressure.PressureUpLimit.ToString("F3"),
|
|
|
+ PROCESS_END_TIME = serverTimeResult.Now.ToString("yyyy-MM-ddTHH:mm:ss.fffffff") + "+08:00",
|
|
|
+ SUPPLIER_NAME = stationConfig.DataInfo.SUPPLIER_NAME,
|
|
|
+ COMMODITY_TYPE = stationConfig.DataInfo.COMMODITY_TYPE,
|
|
|
+ REVISION = stationConfig.DataInfo.REVISION,
|
|
|
+ WO = wo[i],
|
|
|
+ MFG_LOT = stationConfig.DataInfo.MFG_LOT,
|
|
|
+ MFG_ASSY_LINE = stationConfig.DataInfo.MFG_ASSY_LINE,
|
|
|
+ PROCESS_OUTCOME = assyPress ? "Pass" : "Fail",
|
|
|
+ PROCESS_MACHINE_ID = stationConfig.DataInfo.PROCESS_MACHINE_ID,
|
|
|
+ CTQ_UNIT_OF_MEASURE = "kg",
|
|
|
+ ERROR_MESSAGE = assyPress ? "" : "Assy_Pressure OOS",
|
|
|
+ PD_ATTR_01 = midValue,
|
|
|
+ PD_ATTR_02 = ProductMainSN[i],
|
|
|
+ PD_ATTR_03 = PartSN,
|
|
|
+ PD_ATTR_04 = "",
|
|
|
+ PD_ATTR_05 = "",
|
|
|
+ });
|
|
|
+ #endregion
|
|
|
//cc-复检cc,assypress-组装站压力
|
|
|
(bool isSuccess, string response) = await _mesService.SubmitGetAsync(i, ProductMainSN[i], comp, cc, assypress, resultIndex == 1 ? true : false, _LastMesCheckTime[i], serverTimeResult.Now);
|
|
|
if (!stationConfig.EnableMES || isSuccess)
|
|
|
@@ -2643,96 +2758,6 @@ namespace TeamAAS_VP.Core
|
|
|
//判断锁付路径字符串是否为空,如果不为空则保存,否则不保存
|
|
|
if (!string.IsNullOrEmpty(stationConfig.SaveCsvPath))
|
|
|
{
|
|
|
- bool assyPress = resultIndex == 1 ? true : false;
|
|
|
- DFC.Clear();
|
|
|
-
|
|
|
- //foreach (var item in mes_cc)
|
|
|
- //{
|
|
|
- // DFC.Add(new DataFormCtq
|
|
|
- // {
|
|
|
- // PPID = ProductMainSN[i],
|
|
|
- // PROCESS_NAME = stationConfig.DataInfo.PROCESS_NAME,
|
|
|
- // PROCESS_START_TIME = _LastMesCheckTime[i].ToString("yyyy-MM-ddTHH:mm:ss.fffffff") + "+08:00",
|
|
|
- // CTQ_NAME = $"CC{item.Key}",
|
|
|
- // CTQ_VALUE = item.Value,
|
|
|
- // CTQ_LSL = "",
|
|
|
- // CTQ_USL = "",
|
|
|
- // PROCESS_END_TIME = serverTimeResult.Now.ToString("yyyy-MM-ddTHH:mm:ss.fffffff") + "+08:00",
|
|
|
- // SUPPLIER_NAME = stationConfig.DataInfo.SUPPLIER_NAME,
|
|
|
- // COMMODITY_TYPE = stationConfig.DataInfo.COMMODITY_TYPE,
|
|
|
- // REVISION = stationConfig.DataInfo.REVISION,
|
|
|
- // WO = wo[i],
|
|
|
- // MFG_LOT = stationConfig.DataInfo.MFG_LOT,
|
|
|
- // MFG_ASSY_LINE = stationConfig.DataInfo.MFG_ASSY_LINE,
|
|
|
- // PROCESS_OUTCOME = "Pass",
|
|
|
- // PROCESS_MACHINE_ID = stationConfig.DataInfo.PROCESS_MACHINE_ID,
|
|
|
- // CTQ_UNIT_OF_MEASURE = "mm",
|
|
|
- // ERROR_MESSAGE = assyPress ? "" : "CC OOS",
|
|
|
- // });
|
|
|
- //}
|
|
|
- DFC.Add(new DataFormCtq
|
|
|
- {
|
|
|
- PPID = ProductMainSN[i],
|
|
|
- PROCESS_NAME = stationConfig.DataInfo.PROCESS_NAME,
|
|
|
- PROCESS_START_TIME = _LastMesCheckTime[i].ToString("yyyy-MM-ddTHH:mm:ss.fffffff") + "+08:00",
|
|
|
- CTQ_NAME = "CC1",
|
|
|
- CTQ_VALUE = mes_cc["1"],
|
|
|
- CTQ_LSL = currentProduct.GlobalParamEx.CC1DownLimit.ToString("F3"),
|
|
|
- CTQ_USL = currentProduct.GlobalParamEx.CC1UpLimit.ToString("F3"),
|
|
|
- PROCESS_END_TIME = serverTimeResult.Now.ToString("yyyy-MM-ddTHH:mm:ss.fffffff") + "+08:00",
|
|
|
- SUPPLIER_NAME = stationConfig.DataInfo.SUPPLIER_NAME,
|
|
|
- COMMODITY_TYPE = stationConfig.DataInfo.COMMODITY_TYPE,
|
|
|
- REVISION = stationConfig.DataInfo.REVISION,
|
|
|
- WO = wo[i],
|
|
|
- MFG_LOT = stationConfig.DataInfo.MFG_LOT,
|
|
|
- MFG_ASSY_LINE = stationConfig.DataInfo.MFG_ASSY_LINE,
|
|
|
- PROCESS_OUTCOME = assyPress ? "Pass" : "Fail",
|
|
|
- PROCESS_MACHINE_ID = stationConfig.DataInfo.PROCESS_MACHINE_ID,
|
|
|
- CTQ_UNIT_OF_MEASURE = "mm",
|
|
|
- ERROR_MESSAGE = assyPress ? "" : "CC OOS",
|
|
|
- });
|
|
|
- DFC.Add(new DataFormCtq
|
|
|
- {
|
|
|
- PPID = ProductMainSN[i],
|
|
|
- PROCESS_NAME = stationConfig.DataInfo.PROCESS_NAME,
|
|
|
- PROCESS_START_TIME = _LastMesCheckTime[i].ToString("yyyy-MM-ddTHH:mm:ss.fffffff") + "+08:00",
|
|
|
- CTQ_NAME = "CC2",
|
|
|
- CTQ_VALUE = mes_cc["2"],
|
|
|
- CTQ_LSL = currentProduct.GlobalParamEx.CC2DownLimit.ToString("F3"),
|
|
|
- CTQ_USL = currentProduct.GlobalParamEx.CC2UpLimit.ToString("F3"),
|
|
|
- PROCESS_END_TIME = serverTimeResult.Now.ToString("yyyy-MM-ddTHH:mm:ss.fffffff") + "+08:00",
|
|
|
- SUPPLIER_NAME = stationConfig.DataInfo.SUPPLIER_NAME,
|
|
|
- COMMODITY_TYPE = stationConfig.DataInfo.COMMODITY_TYPE,
|
|
|
- REVISION = stationConfig.DataInfo.REVISION,
|
|
|
- WO = wo[i],
|
|
|
- MFG_LOT = stationConfig.DataInfo.MFG_LOT,
|
|
|
- MFG_ASSY_LINE = stationConfig.DataInfo.MFG_ASSY_LINE,
|
|
|
- PROCESS_OUTCOME = assyPress ? "Pass" : "Fail",
|
|
|
- PROCESS_MACHINE_ID = stationConfig.DataInfo.PROCESS_MACHINE_ID,
|
|
|
- CTQ_UNIT_OF_MEASURE = "mm",
|
|
|
- ERROR_MESSAGE = assyPress ? "" : "CC OOS",
|
|
|
- });
|
|
|
- DFC.Add(new DataFormCtq
|
|
|
- {
|
|
|
- PPID = code,
|
|
|
- PROCESS_NAME = stationConfig.DataInfo.PROCESS_NAME,
|
|
|
- PROCESS_START_TIME = _LastMesCheckTime[i].ToString("yyyy-MM-ddTHH:mm:ss.fffffff") + "+08:00",
|
|
|
- CTQ_NAME = "Assy_Pressure",
|
|
|
- CTQ_VALUE = Math.Round(double.Parse(assypress), 3).ToString(),
|
|
|
- CTQ_LSL = currentProduct.GlobalParamEx.DownPressure.PressureDownLimit.ToString("F3"),
|
|
|
- CTQ_USL = currentProduct.GlobalParamEx.DownPressure.PressureUpLimit.ToString("F3"),
|
|
|
- PROCESS_END_TIME = serverTimeResult.Now.ToString("yyyy-MM-ddTHH:mm:ss.fffffff") + "+08:00",
|
|
|
- SUPPLIER_NAME = stationConfig.DataInfo.SUPPLIER_NAME,
|
|
|
- COMMODITY_TYPE = stationConfig.DataInfo.COMMODITY_TYPE,
|
|
|
- REVISION = stationConfig.DataInfo.REVISION,
|
|
|
- WO = wo[i],
|
|
|
- MFG_LOT = stationConfig.DataInfo.MFG_LOT,
|
|
|
- MFG_ASSY_LINE = stationConfig.DataInfo.MFG_ASSY_LINE,
|
|
|
- PROCESS_OUTCOME = assyPress ? "Pass" : "Fail",
|
|
|
- PROCESS_MACHINE_ID = stationConfig.DataInfo.PROCESS_MACHINE_ID,
|
|
|
- CTQ_UNIT_OF_MEASURE = "kg",
|
|
|
- ERROR_MESSAGE = assyPress ? "" : "Assy_Pressure OOS"
|
|
|
- });
|
|
|
bool recordResult = RecordStationResult(i, DFC, ProductMainSN[i], serverTimeResult.Now.Subtract(_LastMesCheckTime[i]).TotalSeconds, _LastMesCheckTime[i], stationConfig.SaveCsvPath);
|
|
|
if (recordResult)
|
|
|
{
|
|
|
@@ -3176,7 +3201,7 @@ namespace TeamAAS_VP.Core
|
|
|
if (!File.Exists(fullPath))
|
|
|
{
|
|
|
sb.Append("PPID,PROCESS_NAME,PROCESS_START_TIME,CTQ_NAME,CTQ_VALUE,CTQ_LSL,CTQ_USL,PROCESS_END_TIME,SUPPLIER_NAME,COMMODITY_TYPE,REVISION,WO#,MFG_LOT#," +
|
|
|
- "MFG_ASSY_LINE,PROCESS_OUTCOME,PROCESS_MACHINE_ID,CTQ_UNIT_OF_MEASURE,ERROR_MESSAGE");
|
|
|
+ "MFG_ASSY_LINE,PROCESS_OUTCOME,PROCESS_MACHINE_ID,CTQ_UNIT_OF_MEASURE,ERROR_MESSAGE,PD_ATTR_01,PD_ATTR_02,PD_ATTR_03,PD_ATTR_04,PD_ATTR_05");
|
|
|
sb.AppendLine();
|
|
|
}
|
|
|
if (dfcs == null || dfcs.Count() == 0)
|
|
|
@@ -3185,7 +3210,7 @@ namespace TeamAAS_VP.Core
|
|
|
}
|
|
|
foreach (var dfc in dfcs)
|
|
|
{
|
|
|
- sb.Append($"{dfc.PPID},{dfc.PROCESS_NAME},{dfc.PROCESS_START_TIME},{dfc.CTQ_NAME},{dfc.CTQ_VALUE},{dfc.CTQ_LSL},{dfc.CTQ_USL},{dfc.PROCESS_END_TIME},{dfc.SUPPLIER_NAME},{dfc.COMMODITY_TYPE},{dfc.REVISION},{dfc.WO},{dfc.MFG_LOT},{dfc.MFG_ASSY_LINE},{dfc.PROCESS_OUTCOME},{dfc.PROCESS_MACHINE_ID},{dfc.CTQ_UNIT_OF_MEASURE},{dfc.ERROR_MESSAGE}");
|
|
|
+ sb.Append($"{dfc.PPID},{dfc.PROCESS_NAME},{dfc.PROCESS_START_TIME},{dfc.CTQ_NAME},{dfc.CTQ_VALUE},{dfc.CTQ_LSL},{dfc.CTQ_USL},{dfc.PROCESS_END_TIME},{dfc.SUPPLIER_NAME},{dfc.COMMODITY_TYPE},{dfc.REVISION},{dfc.WO},{dfc.MFG_LOT},{dfc.MFG_ASSY_LINE},{dfc.PROCESS_OUTCOME},{dfc.PROCESS_MACHINE_ID},{dfc.CTQ_UNIT_OF_MEASURE},{dfc.ERROR_MESSAGE},{dfc.PD_ATTR_01},{dfc.PD_ATTR_02},{dfc.PD_ATTR_03},{dfc.PD_ATTR_04},{dfc.PD_ATTR_05}");
|
|
|
sb.AppendLine();
|
|
|
}
|
|
|
// 使用 StreamWriter 以追加模式打开文件
|