1 Commits

Author SHA1 Message Date
97c6787f9c LIN SCH DIALOG 更改 2026-03-02 23:05:24 +08:00

View File

@@ -15,11 +15,12 @@ namespace CapMachine.Wpf.ViewModels
{
public class DialogLINSchConfigViewModel : DialogViewModel
{
public DialogLINSchConfigViewModel(IFreeSql freeSql, IMapper mapper)
public DialogLINSchConfigViewModel(IFreeSql freeSql, IMapper mapper, LinDriveService linDriveService)
{
Title = "调度表 LIN 配置";
FreeSql = freeSql;
Mapper = mapper;
LinDriveService = linDriveService;
//默认只能用1号调度器
SchTabIndexCbxItems = new ObservableCollection<CbxItems>()
@@ -53,6 +54,7 @@ namespace CapMachine.Wpf.ViewModels
public IFreeSql FreeSql { get; }
public IMapper Mapper { get; }
public LinDriveService LinDriveService { get; }
private string name;
/// <summary>
@@ -413,45 +415,17 @@ namespace CapMachine.Wpf.ViewModels
/// </summary>
private void LoadSch()
{
if (ListMsg == null || ListMsg.Count == 0)
{
MessageBox.Show("当前没有可配置的消息帧ListMsg 为空)", "提示", MessageBoxButton.OK, MessageBoxImage.Hand);
return;
}
// 覆盖当前配置程序的调度表(系统层面的调度表,来源于 UI 选择的消息帧集合)
var ListLINScheduleConfig = LinDriveService.ToomossLinDrive.GetLINScheduleConfigs();
ListLINScheduleConfigDto.Clear();
//先清空
FreeSql.Delete<LINScheduleConfig>()
.Where(a => a.CanLinConfigProId == SelectCanLinConfigProId)
.ExecuteAffrows();
var schTabName = "Default";
var schTabIndex = 0;
var defaultCycle = 100;
var idx = 0;
foreach (var msg in ListMsg.Where(a => !string.IsNullOrWhiteSpace(a)).Distinct(StringComparer.Ordinal))
foreach (var item in ListLINScheduleConfig)
{
var dto = new LINScheduleConfigDto
{
CanLinConfigProId = SelectCanLinConfigProId,
SchTabName = schTabName,
SchTabIndex = schTabIndex,
MsgName = msg,
MsgNameIndex = idx++,
Cycle = defaultCycle,
IsActive = true,
IsMsgActived = true,
};
FreeSql.InsertOrUpdate<LINScheduleConfig>()
.SetSource(Mapper.Map<LINScheduleConfig>(dto))
.ExecuteAffrows();
ListLINScheduleConfigDto.Add(Mapper.Map<LINScheduleConfigDto>(item));
}
ListLINScheduleConfigDto = new ObservableCollection<LINScheduleConfigDto>(
Mapper.Map<List<LINScheduleConfigDto>>(
FreeSql.Select<LINScheduleConfig>().Where(a => a.CanLinConfigProId == SelectCanLinConfigProId).ToList()));
// 重新构建树
BuildTree();
}