using CapMachine.Wpf.PrismEvent;
using Prism.Events;
using Prism.Services.Dialogs;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
namespace CapMachine.Wpf.Services
{
///
/// 公共操作的服务
/// 存放公共事件的服务
///
public class ComActionService
{
public ConfigService ConfigService { get; }
private IEventAggregator EventAggregator { get; set; }
public DataRecordService DataRecordService { get; }
public SysRunService SysRunServer { get; }
public PPCService PPCService { get; }
public CanDriveService CanDriveService { get; }
public LinDriveService LinDriveService { get; }
public MachineRtDataService MachineRtDataService { get; }
public IDialogService DialogService { get; }
public ComActionService(ConfigService configService, IEventAggregator eventAggregator,
DataRecordService dataRecordService, SysRunService sysRunService, PPCService pPCService, CanDriveService canDriveService, LinDriveService linDriveService,
MachineRtDataService machineRtDataService, IDialogService dialogService)
{
ConfigService = configService;
//事件服务
EventAggregator = eventAggregator;
DataRecordService = dataRecordService;
SysRunServer = sysRunService;
PPCService = pPCService;
CanDriveService = canDriveService;
LinDriveService = linDriveService;
MachineRtDataService = machineRtDataService;
DialogService = dialogService;
EventAggregator.GetEvent().Subscribe(ComDialogEventCall);
}
#region 公共弹窗操作
///
/// 公共弹窗事件执行方法
///
///
///
private void ComDialogEventCall(ComDialogMsg msg)
{
switch (msg.Name)
{
case "过热度/过冷度配置":
ShowSuperHeatCool(msg.Par);
break;
case "规则转换":
if (SysRunServer.MachineRunState1.IsRunState)
{
MessageBox.Show("请不要在运行时编辑规则转换,此时更改可能导致运行出错,请停止后再编辑");
return;
}
ShowLogicRule(msg.Par);
break;
case "CAN/CANFD/LIN配置导入导出":
ShowCanLinConfigImExport(msg.Par);
break;
default:
break;
}
}
///
/// 过热度和过冷度配置弹窗
///
private void ShowSuperHeatCool(object par)
{
//弹窗
DialogService.ShowDialog("DialogSuperHeatCoolConfigView", new DialogParameters() { { "Name", par } }, (par) =>
{
if (par.Result == ButtonResult.OK)
{
//保存配置信息
PPCService.SaveSuperHeatCoolConfig();
}
else if (par.Result == ButtonResult.Cancel)
{
//取消
}
});
}
///
/// 过热度和过冷度配置弹窗
///
private void ShowLogicRule(object par)
{
//弹窗
DialogService.ShowDialog("DialogLogicRuleView", new DialogParameters() { { "Name", par } }, (par) =>
{
if (par.Result == ButtonResult.OK)
{
//保存配置信息
//PPCService.SaveSuperHeatCoolConfig();
//是否改变规格
var ReturnValue = par.Parameters.GetValue("IsRuleEdit");
if (ReturnValue)
{
MessageBox.Show("检测到你已经改变了规则,CAN或者LIN配置中如果已经加载规则或者连接的话,则会出现错误,那么你需要重启软件");
//逻辑可能更改了
EventAggregator.GetEvent().Publish("");
}
}
else if (par.Result == ButtonResult.Cancel)
{
//取消
}
});
}
///
/// CAN/CANFD/LIN 配置导入导出弹窗。
///
/// 透传参数。
private void ShowCanLinConfigImExport(object par)
{
DialogService.ShowDialog("DialogCanLinConfigImExportView", new DialogParameters() { { "Name", par } }, (dialogResult) =>
{
if (dialogResult.Result == ButtonResult.OK)
{
}
});
}
#endregion
#region CAN和LIN协调
//CAN和LIN同一个时刻只能有一个在工作
///
/// CAN是否可以工作
///
///
public bool IsCanToDoWork()
{
if (LinDriveService.ToomossLinDrive.OpenState == true)
{
return false;
}
return true;
}
///
/// LIN是否可以工作
///
///
public bool IsLINToDoWork()
{
if (CanDriveService.ToomossCanDrive.OpenState == true)
{
return false;
}
return true;
}
#endregion
}
}