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 mesDataList; public ObservableCollection MesDataList { get => mesDataList; set => SetProperty(ref mesDataList, value); } private List mesClassList; public List 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(); } private void SetPalletStatusCombox() { mesClassList = new List(); 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().ModifySendFlag(item.Id, (sbyte)EMesUpLoadStatus.Wait); } } QueryMesStation(); }); bool QueryMesStation() { MesDataList.Clear(); List dataList = null; if (!ExecuttableOrNot()) { return false; } if (IsChecked) { if (string.IsNullOrEmpty(BatteryCode)) { Growl.Warning("电芯条码为空!"); return false; } dataList = _unityContainer.Resolve().GetMesDataCellState(BatteryCode, StartDatetime, EndDatetime); dataList.AddRange(_unityContainer.Resolve().GetMesDataBakingOutput(BatteryCode, StartDatetime, EndDatetime)); } else { if (string.IsNullOrEmpty(MesClass)) { Growl.Warning("Mes信息类别为空!"); return false; } var Cmd = EnumHelper.GetValueByDescription(MesClass); dataList = _unityContainer.Resolve().GetMesDataList(Cmd, StartDatetime, EndDatetime); } dataList.ForEach(item => MesDataList.Add(item)); return true; } public DelegateCommand QueryCommand => new DelegateCommand((x) => { if (!QueryMesStation()) { return; } if (MesDataList.Count == 0) { Growl.Warning("没有数据!"); return; } }); public DelegateCommand GetMesCvsCommand => new DelegateCommand((x) => { if (MesDataList == null || MesDataList.Count == 0) { Growl.Warning("没有数据!"); return; } Common.Core.CSVHelper.WriteMap(MesDataList); //Common.Core.CSVHelper.WriteDataTableToCsv(MesDataList, new List() {"CreateTime", "SendTime", "RecvTime", "Content", "RecvContent", "BatteryCode" }, // new List() {"创建时间", "发送时间", "接收时间", "发送信息", "接收信息" , "电芯条码"}); }); 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; } } }