Files
YuPu-OrpaonEMS/OrpaonEMS.App/ViewModels/TimeConfigViewModel.cs
2025-02-28 22:23:13 +08:00

304 lines
8.7 KiB
C#

using OrpaonEMS.App.Dto;
using OrpaonEMS.App.Models;
using OrpaonEMS.Core;
using OrpaonEMS.Core.Enums;
using OrpaonEMS.Model;
using OrpaonEMS.Model.Enums;
using Prism.Commands;
using Prism.Services.Dialogs;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
namespace OrpaonEMS.App.ViewModels
{
public class TimeConfigViewModel : DialogViewModel
{
/// <summary>
/// freeSql实例
/// </summary>
private IFreeSql freeSql { get; set; }
/// <summary>
/// 实例化函数
/// </summary>
public TimeConfigViewModel(IFreeSql freeSql)
{
CbxTime = new List<cbxItem>()
{
new cbxItem(){ Key="1",Text="尖峰电价"},
new cbxItem(){ Key="2",Text="平段电价"},
new cbxItem(){ Key="3",Text="峰段电价"},
new cbxItem(){ Key="4",Text="谷段电价"}
};
this.freeSql = freeSql;
}
private string _SelectedElePvEnum;
/// <summary>
/// 选中的
/// </summary>
public string SelectedElePvEnum
{
get { return _SelectedElePvEnum; }
set { _SelectedElePvEnum = value; RaisePropertyChanged(); }
}
private DateTime _StartTime = DateTime.Now;
/// <summary>
/// 开始时间
/// </summary>
public DateTime StartTime
{
get { return _StartTime; }
set { _StartTime = value; RaisePropertyChanged(); }
}
private DateTime _EndTime = DateTime.Now;
/// <summary>
/// 结束时间
/// </summary>
public DateTime EndTime
{
get { return _EndTime; }
set { _EndTime = value; RaisePropertyChanged(); }
}
#region
private DelegateCommand saveCmd;
/// <summary>
/// 保存命令
/// </summary>
public DelegateCommand SaveCmd
{
set
{
saveCmd = value;
}
get
{
if (saveCmd == null)
{
saveCmd = new DelegateCommand(() => SaveCmdMethod());
}
return saveCmd;
}
}
/// <summary>
/// 保存命令方法
/// </summary>
/// <exception cref="NotImplementedException"></exception>
private void SaveCmdMethod()
{
SelectedPeakValley.ElePV = GetElePVEnum(SelectedElePvEnum);
SelectedPeakValley.StartTime = StartTime.ToString("HH:mm");
SelectedPeakValley.EndTime = EndTime.ToString("HH:mm");
DialogParameters pars = new DialogParameters
{
{ "Model", SelectedPeakValley }
};
RaiseRequestClose(new DialogResult(ButtonResult.OK, pars));
}
private DelegateCommand cancelCmd;
/// <summary>
/// 保存命令
/// </summary>
public DelegateCommand CancelCmd
{
set
{
cancelCmd = value;
}
get
{
if (cancelCmd == null)
{
cancelCmd = new DelegateCommand(() => CancelCmdMethod());
}
return cancelCmd;
}
}
/// <summary>
/// 取消命令方法
/// </summary>
/// <exception cref="NotImplementedException"></exception>
private void CancelCmdMethod()
{
RaiseRequestClose(new DialogResult(ButtonResult.Cancel));
}
#endregion
private PeakValleyDto DtoConvert(PeakValleyConfig peakValley)
{
PeakValleyDto peakValleyDto = new PeakValleyDto();
peakValleyDto.Index = peakValley.Index;
peakValleyDto.Id = peakValley.Id;
peakValleyDto.StartTime = peakValley.StartTime;
peakValleyDto.EndTime = peakValley.EndTime;
peakValleyDto.ElePV = peakValley.ElePV;
peakValleyDto.Enable = peakValley.Enable;
peakValleyDto.Price = peakValley.Price;
return peakValleyDto;
}
/// <summary>
/// 插入或者更新数据
/// </summary>
private void InsertOrUpdate(PeakValleyDto data)
{
if (data.Id != null && data.Enable == true)
{
var datainfo = freeSql.Select<PeakValleyConfig>().Where(a => a.Id == data.Id);
if (datainfo.Count() > 0)//存在就更新
{
freeSql.Update<PeakValleyConfig>()
.Set(a => a.StartTime, data.StartTime)
.Set(a => a.EndTime, data.EndTime)
.Set(a => a.Price, data.Price)
.Set(a => a.ElePV, data.ElePV)
.Where(a => a.Id == data.Id)
.ExecuteAffrows();
}
else//否则新增
{
freeSql.Insert<PeakValleyConfig>(new PeakValleyConfig()
{
ElePV = data.ElePV,
StartTime = data.StartTime,
Price = data.Price,
EndTime = data.EndTime,
Index = data.Index
}).ExecuteInserted();
}
}
}
private List<cbxItem> _CbxTime;
/// <summary>
/// 时间信息下拉框
/// </summary>
public List<cbxItem> CbxTime
{
get { return _CbxTime; }
set { _CbxTime = value; RaisePropertyChanged(); }
}
private ElePVEnum GetElePVEnum(string data)
{
switch (data)
{
case "尖峰电价":
return ElePVEnum.TopPeak;
case "平段电价":
return ElePVEnum.Flat;
case "峰段电价":
return ElePVEnum.Peak;
case "谷段电价":
return ElePVEnum.Valley;
default:
return ElePVEnum.Flat;
}
}
private string GetElePVStr(ElePVEnum elePVEnum)
{
switch (elePVEnum)
{
case ElePVEnum.TopPeak:
return "尖峰电价";
case ElePVEnum.Peak:
return "峰段电价";
case ElePVEnum.Valley:
return "谷段电价";
case ElePVEnum.Flat:
return "平段电价";
default:
return "";
}
}
#region
//private string _SelectedTime1;
///// <summary>
///// 时间信息下拉框
///// </summary>
//public string SelectedTime1
//{
// get { return _SelectedTime1; }
// set
// {
// _SelectedTime1 = value;
// if (_SelectedTime1 != "停用")
// {
// PeakValleyDto1.Enable = true;
// PeakValleyDto1.ElePV = GetElePVEnum(_SelectedTime1);
// }
// else
// {
// PeakValleyDto1.Enable = false;
// }
// RaisePropertyChanged();
// }
//}
#endregion
private PeakValleyConfig _SelectedPeakValley=new PeakValleyConfig();
/// <summary>
/// 选中的模型
/// </summary>
public PeakValleyConfig SelectedPeakValley
{
get { return _SelectedPeakValley; }
set { _SelectedPeakValley = value; RaisePropertyChanged(); }
}
/// <summary>
/// 窗口打开时的传递的参数
/// </summary>
/// <param name="parameters"></param>
public override void OnDialogOpened(IDialogParameters parameters)
{
var data = parameters.GetValue<PeakValleyConfig>("Model");
if (data != null)//修改
{
SelectedPeakValley = data;
StartTime = DateTime.Parse(SelectedPeakValley.StartTime);
EndTime = DateTime.Parse(SelectedPeakValley.EndTime);
SelectedElePvEnum = GetElePVStr(SelectedPeakValley.ElePV);
}
else//新增
{
SelectedPeakValley.Enable=true;
}
//SelectedElePvEnum = GetElePVStr(SelectedPeakValley.ElePV);
}
}
}