|
|
@@ -1,8 +1,10 @@
|
|
|
using MathNet.Numerics.LinearAlgebra;
|
|
|
+using NPOI.SS.Formula.Functions;
|
|
|
using Prism.Events;
|
|
|
using Prism.Ioc;
|
|
|
using Prism.Mvvm;
|
|
|
using Prism.Regions;
|
|
|
+using SqlSugar;
|
|
|
using System;
|
|
|
using System.Collections.Generic;
|
|
|
using System.Collections.ObjectModel;
|
|
|
@@ -97,6 +99,29 @@ namespace TeamAAS_VP.Core
|
|
|
set { SetProperty(ref _StatusBackground, value); }
|
|
|
}
|
|
|
|
|
|
+ private System.Windows.Media.Brush _RunModelBackground;
|
|
|
+
|
|
|
+ public System.Windows.Media.Brush RunModelBackground
|
|
|
+ {
|
|
|
+ get { return _RunModelBackground; }
|
|
|
+ set { SetProperty(ref _RunModelBackground, value); }
|
|
|
+ }
|
|
|
+
|
|
|
+ private System.Windows.Media.Brush _ManualModeBackground;
|
|
|
+
|
|
|
+ public System.Windows.Media.Brush ManualModeBackground
|
|
|
+ {
|
|
|
+ get { return _ManualModeBackground; }
|
|
|
+ set { SetProperty(ref _ManualModeBackground, value); }
|
|
|
+ }
|
|
|
+
|
|
|
+ private System.Windows.Media.Brush _ClearModeBackground;
|
|
|
+
|
|
|
+ public System.Windows.Media.Brush ClearModeBackground
|
|
|
+ {
|
|
|
+ get { return _ClearModeBackground; }
|
|
|
+ set { SetProperty(ref _ClearModeBackground, value); }
|
|
|
+ }
|
|
|
private ObservableCollection<ShowRender> _Renders;
|
|
|
|
|
|
/// <summary>
|
|
|
@@ -257,6 +282,7 @@ namespace TeamAAS_VP.Core
|
|
|
_systemDatabaseService = systemDatabaseService;
|
|
|
_lightManagerService = lightManagerService;
|
|
|
_mesService = mesService;
|
|
|
+ _eventAggregator.GetEvent<CurrentStatusNotification>().Subscribe(CurrentRunStatus);
|
|
|
InitPressure();
|
|
|
}
|
|
|
|
|
|
@@ -1121,6 +1147,7 @@ namespace TeamAAS_VP.Core
|
|
|
addressConfig.In_PickINC.Address,
|
|
|
addressConfig.In_Throw.Address,
|
|
|
addressConfig.RunMode.Address,
|
|
|
+ addressConfig.AutoRunning.Address,
|
|
|
addressConfig.ManualMode.Address,
|
|
|
addressConfig.ClearMode.Address,
|
|
|
addressConfig.Fault.Address,
|
|
|
@@ -1332,6 +1359,7 @@ namespace TeamAAS_VP.Core
|
|
|
bool _LastFixedCameraPickExe = false;
|
|
|
bool _LastFixedCameraPutExe = false;
|
|
|
bool _LastFixedCameracheckExe = false;
|
|
|
+ public bool _LastAutoRunning = false;
|
|
|
bool _LastThrowExe = false;
|
|
|
bool _LastRunModel = false;
|
|
|
bool _LastManualMode = false;
|
|
|
@@ -2335,13 +2363,13 @@ namespace TeamAAS_VP.Core
|
|
|
}
|
|
|
}
|
|
|
//切换成自动运行模式
|
|
|
- else if (addressConfig.RunMode.Address.Contains(tuple.nodeId))
|
|
|
+ else if (addressConfig.AutoRunning.Address.Contains(tuple.nodeId))
|
|
|
{
|
|
|
if (tuple.value is bool state)
|
|
|
{
|
|
|
- if (_LastRunModel != state)
|
|
|
+ if (_LastAutoRunning != state)
|
|
|
{
|
|
|
- _LastRunModel = state;
|
|
|
+ _LastAutoRunning = state;
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
@@ -2350,8 +2378,12 @@ namespace TeamAAS_VP.Core
|
|
|
if (state)
|
|
|
{
|
|
|
SendTaskMessage("收到切换成自动模式", MessageLevel.Info);
|
|
|
- StatusBackground = System.Windows.Media.Brushes.Green;
|
|
|
}
|
|
|
+ else
|
|
|
+ {
|
|
|
+ SendTaskMessage("收到关闭自动模式", MessageLevel.Info);
|
|
|
+ }
|
|
|
+ CurrentRunStatus();
|
|
|
}
|
|
|
}
|
|
|
//切换成维修模式
|
|
|
@@ -2369,13 +2401,10 @@ namespace TeamAAS_VP.Core
|
|
|
}
|
|
|
if (state)
|
|
|
{
|
|
|
+ ClearModeBackground = System.Windows.Media.Brushes.White;
|
|
|
+ RunModelBackground = System.Windows.Media.Brushes.White;
|
|
|
+ ManualModeBackground = System.Windows.Media.Brushes.Orange;
|
|
|
SendTaskMessage("收到切换成维修模式", MessageLevel.Info);
|
|
|
- StatusBackground = System.Windows.Media.Brushes.Yellow;
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- SendTaskMessage("收到切换成自动模式", MessageLevel.Info);
|
|
|
- StatusBackground = System.Windows.Media.Brushes.Green;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
@@ -2394,8 +2423,10 @@ namespace TeamAAS_VP.Core
|
|
|
}
|
|
|
if (state)
|
|
|
{
|
|
|
+ ClearModeBackground = System.Windows.Media.Brushes.Yellow;
|
|
|
+ RunModelBackground = System.Windows.Media.Brushes.White;
|
|
|
+ ManualModeBackground = System.Windows.Media.Brushes.White;
|
|
|
SendTaskMessage("收到切换成流线模式", MessageLevel.Info);
|
|
|
- StatusBackground = System.Windows.Media.Brushes.Green;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
@@ -3083,7 +3114,69 @@ namespace TeamAAS_VP.Core
|
|
|
_eventAggregator.GetEvent<TaskMessageNotification>().Publish(new Models.MessageStruct() { Message = msg, level = level });
|
|
|
});
|
|
|
}
|
|
|
+ public bool concurrenty = true;
|
|
|
+ public void CurrentRunStatus()
|
|
|
+ {
|
|
|
+ if (!concurrenty)
|
|
|
+ {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ concurrenty = true;
|
|
|
+ bool connectStaus = true;
|
|
|
+ bool mesStatus = true;
|
|
|
+ bool paraStatus = true;
|
|
|
+ try
|
|
|
+ {
|
|
|
|
|
|
+ for (int i = 0; i < 1; i++)
|
|
|
+ {
|
|
|
+ var stationConfig = _configService.GetDeviceInfo(i);
|
|
|
+ if (!stationConfig.EnableMES || !stationConfig.EnableDoubleMes || !stationConfig.SaveCsv)
|
|
|
+ {
|
|
|
+ SendTaskMessage("当前MES功能/双验证功能/保存CSV功能未启用,请检查...", MessageLevel.Info);
|
|
|
+ mesStatus = false;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ var systemConfig = _configService.GetSystemConfiguration();
|
|
|
+ if (!systemConfig.PressureSensorConfig[0].IsSavePressureCurve )
|
|
|
+ {
|
|
|
+ SendTaskMessage("当前未启用保压曲线图保存,请检查...", MessageLevel.Info);
|
|
|
+ paraStatus = false;
|
|
|
+ }
|
|
|
+ foreach (var item in Status)
|
|
|
+ {
|
|
|
+ if (item.Background == System.Windows.Media.Brushes.Red)
|
|
|
+ {
|
|
|
+ SendTaskMessage("当前有设备未连接,请检查...", MessageLevel.Info);
|
|
|
+ connectStaus = false;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ catch (Exception)
|
|
|
+ {
|
|
|
+ connectStaus = false;
|
|
|
+ mesStatus = false;
|
|
|
+ paraStatus = false;
|
|
|
+
|
|
|
+ }
|
|
|
+ if (connectStaus && mesStatus && paraStatus && _LastAutoRunning)
|
|
|
+ {
|
|
|
+ RunModelBackground = System.Windows.Media.Brushes.Green;
|
|
|
+ ClearModeBackground = System.Windows.Media.Brushes.White;
|
|
|
+ ManualModeBackground = System.Windows.Media.Brushes.White;
|
|
|
+ SendTaskMessage("当前为生产模式", MessageLevel.Info);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ RunModelBackground = System.Windows.Media.Brushes.White;
|
|
|
+ ClearModeBackground = System.Windows.Media.Brushes.White;
|
|
|
+ ManualModeBackground = System.Windows.Media.Brushes.Orange;
|
|
|
+ SendTaskMessage("当前为调机模式", MessageLevel.Info);
|
|
|
+ }
|
|
|
+ concurrenty = true;
|
|
|
+ }
|
|
|
#region Pressure collection helpers
|
|
|
public void InitPressure()
|
|
|
{
|
|
|
@@ -3412,6 +3505,95 @@ namespace TeamAAS_VP.Core
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ public void SaveCsvData(ProductModel currentProduct, DeviceInfo stationConfig,int i,int resultIndex,string code,string assypress,DateTime serverTimeResult)
|
|
|
+ {
|
|
|
+ DFC.Clear();
|
|
|
+ bool assyPress = resultIndex == 1 ? true : false;
|
|
|
+ string midValue = "NA", saveppid = "NA";
|
|
|
+ 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.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 + "_" + revision[i],
|
|
|
+ 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 ? "NA" : "CC OOS",
|
|
|
+ PD_ATTR_01 = ProductMainSN[i],
|
|
|
+ PD_ATTR_02 = midValue,
|
|
|
+ PD_ATTR_03 = PartSN,
|
|
|
+ PD_ATTR_04 = code,
|
|
|
+ PD_ATTR_05 = "NA",
|
|
|
+ });
|
|
|
+ midValue = ((currentProduct.GlobalParamEx.CC2DownLimit + currentProduct.GlobalParamEx.CC2UpLimit) / 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.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 + "_" + revision[i],
|
|
|
+ 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 ? "NA" : "CC OOS",
|
|
|
+ PD_ATTR_01 = ProductMainSN[i],
|
|
|
+ PD_ATTR_02 = midValue,
|
|
|
+ PD_ATTR_03 = PartSN,
|
|
|
+ PD_ATTR_04 = code,
|
|
|
+ PD_ATTR_05 = "NA",
|
|
|
+ });
|
|
|
+ midValue = ((currentProduct.GlobalParamEx.DownPressure.PressureDownLimit + currentProduct.GlobalParamEx.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.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 + "_" + revision[i],
|
|
|
+ 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 ? "NA" : "Assy_Pressure OOS",
|
|
|
+ PD_ATTR_01 = ProductMainSN[i],
|
|
|
+ PD_ATTR_02 = midValue,
|
|
|
+ PD_ATTR_03 = PartSN,
|
|
|
+ PD_ATTR_04 = code,
|
|
|
+ PD_ATTR_05 = "NA",
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
#region 压缩图片文件夹
|
|
|
/// <summary>
|
|
|
/// 压缩文件
|