Files
6098/Cowain.Bake.UI/DataQuery/ViewModels/GetMesLogViewModel.cs

193 lines
6.4 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
using Cowain.Bake.Model.Entity;
using Cowain.Bake.BLL;
using Cowain.Bake.Common;
using Cowain.Bake.Common.Enums;
using Cowain.Bake.Common.Interface;
using Cowain.Bake.Model;
using HandyControl.Controls;
using Microsoft.Win32;
using Prism.Commands;
using Prism.Mvvm;
using Prism.Regions;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Data;
using System.Linq;
using System.Text;
using Unity;
using Cowain.Bake.Common.CsvMap;
namespace Cowain.Bake.UI.DataQuery.ViewModels
{
public class GetMesLogViewModel : ViewModelBase, INavigationAware
{
TimeSpan intervalDateTime;
private bool isChecked;
public bool IsChecked
{
get => isChecked;
set => SetProperty(ref isChecked, value);
}
private string batteryCode;
public string BatteryCode
{
get => batteryCode;
set => SetProperty(ref batteryCode, value);
}
private string mesClass;
public string MesClass
{
get => mesClass;
set => SetProperty(ref mesClass, value);
}
private ObservableCollection<MesDataEntity> mesDataList;
public ObservableCollection<MesDataEntity> MesDataList
{
get => mesDataList;
set => SetProperty(ref mesDataList, value);
}
private List<string> mesClassList;
public List<string> MesClassList
{
get => mesClassList;
set => SetProperty(ref mesClassList, value);
}
private DateTime _startTime = DateTime.Now.AddDays(-2);
public DateTime StartDatetime
{
get { return _startTime; }
set { SetProperty(ref _startTime, DateTime.Parse(value.ToString("yyyy-MM-dd HH:mm:ss"))); }
}
private DateTime _endTime = DateTime.Now;
public DateTime EndDatetime
{
get { return _endTime; }
set { SetProperty(ref _endTime, DateTime.Parse(value.ToString("yyyy-MM-dd HH:mm:ss"))); }
}
public GetMesLogViewModel(IUnityContainer unityContainer, IRegionManager regionManager) : base(unityContainer, regionManager)
{
BatteryCode = "";
_unityContainer = unityContainer;
SetPalletStatusCombox();
MesDataList = new ObservableCollection<MesDataEntity>();
}
private void SetPalletStatusCombox()
{
mesClassList = new List<string>();
foreach (EMesLogClass eMesLogClass in System.Enum.GetValues(typeof(EMesLogClass)))
{
mesClassList.Add(eMesLogClass.GetDescription());
}
MesClass = EMesLogClass.EnterStation.GetDescription();
}
public DelegateCommand AutoUploadCommand => new DelegateCommand(() =>
{
foreach (var item in MesDataList)
{
if (item.IsCheck)
{
_unityContainer.Resolve<MesDataService>().ModifySendFlag(item.Id, (sbyte)EMesUpLoadStatus.Wait);
}
}
QueryMesStation();
});
bool QueryMesStation()
{
MesDataList.Clear();
List<MesDataEntity> dataList = null;
if (!ExecuttableOrNot())
{
return false;
}
if (IsChecked)
{
if (string.IsNullOrEmpty(BatteryCode))
{
Growl.Warning("电芯条码为空!");
return false;
}
dataList = _unityContainer.Resolve<MesDataService>().GetMesDataCellState(BatteryCode, StartDatetime, EndDatetime);
dataList.AddRange(_unityContainer.Resolve<MesDataService>().GetMesDataBakingOutput(BatteryCode, StartDatetime, EndDatetime));
}
else
{
if (string.IsNullOrEmpty(MesClass))
{
Growl.Warning("Mes信息类别为空");
return false;
}
var Cmd = EnumHelper.GetValueByDescription<EMesLogClass>(MesClass);
dataList = _unityContainer.Resolve<MesDataService>().GetMesDataList(Cmd, StartDatetime, EndDatetime);
}
dataList.ForEach(item => MesDataList.Add(item));
return true;
}
public DelegateCommand<object> QueryCommand => new DelegateCommand<object>((x) =>
{
if (!QueryMesStation())
{
return;
}
if (MesDataList.Count == 0)
{
Growl.Warning("没有数据!");
return;
}
});
public DelegateCommand<object> GetMesCvsCommand => new DelegateCommand<object>((x) =>
{
if (MesDataList == null
|| MesDataList.Count == 0)
{
Growl.Warning("没有数据!");
return;
}
Common.Core.CSVHelper.WriteMap<MesDataEntity, MesDataMap>(MesDataList);
//Common.Core.CSVHelper.WriteDataTableToCsv(MesDataList, new List<string>() {"CreateTime", "SendTime", "RecvTime", "Content", "RecvContent", "BatteryCode" },
// new List<string>() {"创建时间", "发送时间", "接收时间", "发送信息", "接收信息" , "电芯条码"});
});
void INavigationAware.OnNavigatedTo(NavigationContext navigationContext)
{
// 导航到当前页面时的处理逻辑,先执行构造方法,再执行本方法
}
bool INavigationAware.IsNavigationTarget(NavigationContext navigationContext)
{
return false; //false:表示每次导航都创建新实例,不重用旧实例; true:用旧实例,不会执行构造方法
}
void INavigationAware.OnNavigatedFrom(NavigationContext navigationContext)
{
//相当于析构方法,退出时(切换时)再执行。
// 在这里添加释放旧视图实例资源的代码
}
private bool ExecuttableOrNot()
{
intervalDateTime = EndDatetime - StartDatetime;
if (intervalDateTime.TotalDays > 10)
{
Growl.Warning("请选择时间区间小于10天的数据");
return false;
}
return true;
}
}
}