193 lines
6.4 KiB
C#
193 lines
6.4 KiB
C#
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;
|
||
}
|
||
}
|
||
}
|