首次提交:添加src文件夹代码

This commit is contained in:
2026-02-27 14:02:43 +08:00
commit d330cfbca7
4184 changed files with 5546478 additions and 0 deletions

View File

@@ -0,0 +1,95 @@
using Cowain.Bake.BLL;
using Cowain.Bake.Common;
using Cowain.Bake.Model;
using Prism.Regions;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Unity;
using Prism.Commands;
using System.Windows;
using HandyControl.Controls;
using Cowain.Bake.Model.Entity;
using Cowain.Bake.UI.CsvMap;
namespace Cowain.Bake.UI.DataQuery.ViewModels
{
public class BatteryInfoViewModel : ViewModelBase
{
private DateTime _startTime = DateTime.Now.AddDays(-1);
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.AddHours(1);
public DateTime EndDatetime
{
get { return _endTime; }
set { SetProperty(ref _endTime, DateTime.Parse(value.ToString("yyyy-MM-dd HH:mm:ss"))); }
}
public BatteryInfoViewModel(IUnityContainer unityContainer, IRegionManager regionManager) : base(unityContainer, regionManager)
{
this.PageTitle = "电池追踪";
}
public List<BatteryInfoEntity> batteryList = new List<BatteryInfoEntity>();
private ObservableCollection<TBatteryInfo> cellList;
public ObservableCollection<TBatteryInfo> CellList
{
get => cellList ?? (cellList = new ObservableCollection<TBatteryInfo>());
set { SetProperty(ref cellList, value); }
}
public DelegateCommand<object> ExportCommand => new DelegateCommand<object>((x) =>
{
if (batteryList.Count == 0)
{
return;
}
Common.Core.CSVHelper.WriteMap<BatteryInfoEntity, BatteryInfoDetailMap>(batteryList);
//Common.Core.CSVHelper.WriteDataTableToCsv(batteryList, new List<string> { "Id","BatteryCode", "PalletCode", "BatteryStatus",
// "PositionX", "PositionY", "LoadingBegingTime","ScanTime","LoadingOverTime", "BakingPosition", "BakingBeginTime", "BakingOverTime","UnLoadingBegingTime", "UnLoadingOverTime", "WaterValue"}, new List<string> { "序号", "电芯条码", "托盘条码", "电芯状态", "行号", "列号", "上料开始时间","扫码时间", "上料结束时间", "所属烤箱", "烘烤开始时间",
// "烘烤结束时间", "下料开始时间", "下料结束时间", "不含量结果"});
});
public DelegateCommand<object> QueryCommand => new DelegateCommand<object>((x) =>
{
CellList.Clear();
if ((EndDatetime - StartDatetime).TotalDays > 5)
{
HandyControl.Controls.MessageBox.Warning("查询时间差在 5 天以内!");
return;
}
if (string.IsNullOrEmpty(Code))
{
batteryList = _unityContainer.Resolve<BatteryInfoService>().Query(StartDatetime, EndDatetime);
}
else
{
batteryList = _unityContainer.Resolve<BatteryInfoService>().Query(Code);
}
if (0 != batteryList.Count)
{
batteryList.ForEach(item => CellList.Add(item));
Growl.Success("查询完成!");
}
else
{
Growl.Success("没有数据!");
}
});
public DelegateCommand<object> DeleteCommand => new DelegateCommand<object>((x) =>
{
});
}
}

View File

@@ -0,0 +1,365 @@
using Cowain.Bake.BLL;
using Cowain.Bake.Common;
using Cowain.Bake.Common.Core;
using Cowain.Bake.UI.CommonView.Views;
using LiveCharts;
using LiveCharts.Wpf;
using Prism.Commands;
using Prism.Regions;
using System;
using System.Collections.ObjectModel;
using System.Data;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Media;
using Unity;
namespace Cowain.Bake.UI.DataQuery.ViewModels
{
public enum EChartType
{
Temp = 1,
Vacuum = 2,
PID = 3
}
public class DemoDataModel
{
public int Index { get; set; }
public string Name { get; set; } = string.Empty;
public bool IsSelected { get; set; }
}
public class CurveViewModel : ViewModelBase
{
//private DataTable _dtChartTemp;
private DataTable _dtTemp;
private ObservableCollection<DemoDataModel> _dataList;
public ObservableCollection<DemoDataModel> DataList
{
get => _dataList;
set => SetProperty(ref _dataList, value);
}
public DataTable DtTemp
{
get => _dtTemp;
set => SetProperty(ref _dtTemp, value);
}
private DataTable _dtPID;
public DataTable DtPID
{
get => _dtPID;
set => SetProperty(ref _dtPID, value);
}
public ChartValues<string> TimeLine { get; set; }
public string XName { get; set; }
public string YName { get; set; }
public SeriesCollection SeriesCollection { get; set; }
private int _stepId = 1;
public int StepId
{
get => _stepId;
set => SetProperty(ref _stepId, value);
}
private string _selectOneItem;
public string SelectOneItem
{
get => _selectOneItem;
set => SetProperty(ref _selectOneItem, value);
}
private DateTime _curveStartDateTime = DateTime.Now.AddHours(-23);
public DateTime CurveStartDateTime
{
get { return _curveStartDateTime; }
set { SetProperty(ref _curveStartDateTime, DateTime.Parse(value.ToString("yyyy-MM-dd HH:mm:ss"))); }
}
private DateTime _curveEndDateTime = DateTime.Now;
public DateTime CurveEndDateTime
{
get { return _curveEndDateTime; }
set { SetProperty(ref _curveEndDateTime, DateTime.Parse(value.ToString("yyyy-MM-dd HH:mm:ss"))); }
}
public CurveViewModel(IUnityContainer unityContainer, IRegionManager regionManager) : base(unityContainer, regionManager)
{
DtTemp = null;
DtPID = null;;
DataList = new ObservableCollection<DemoDataModel>();
SetCheckCombox();
TimeLine = new ChartValues<string>();
SeriesCollection = new SeriesCollection();
this.PageTitle = "曲线图表";
}
private void SetCheckCombox()
{
for (int i = 1; i <= 8; i++)
{
DataList.Add(new DemoDataModel()
{
Index = i,
Name = "温度" + i.ToString(),
IsSelected = true,
});
}
}
void GetTempChartData(DataTable table)
{
for (int i = 2; i < table.Columns.Count; i++)
{
var columnName = table.Columns[i].ColumnName;
var model = DataList.Where(x => x.IsSelected && x.Name == columnName).FirstOrDefault();
if (null == model)
{
continue;
}
ChartValues<double> chartValues = new ChartValues<double>();
table.AsEnumerable().Select(item => item.Field<double>(columnName)).ToList().ForEach(item => chartValues.Add(item));
var lineSeries = new LineSeries
{
Title = columnName,
Values = chartValues,
StrokeThickness = 1,
LineSmoothness = 0,
Fill = Brushes.Transparent,
PointGeometry = null // 不画圆点
};
SeriesCollection.Add(lineSeries);
}
}
void GetVacuumChartData(DataTable table)
{
var columnName = table.Columns[2].ColumnName;
ChartValues<double> chartValues = new ChartValues<double>();
table.AsEnumerable().Select(item => item.Field<float>(columnName)).ToList().ForEach(item => chartValues.Add(Math.Round(item,2)));
var lineSeries = new LineSeries
{
Title = columnName,
Values = chartValues,
StrokeThickness = 1,
LineSmoothness = 0,
Fill = Brushes.Transparent,
PointGeometry = null // 不画圆点
};
SeriesCollection.Add(lineSeries);
}
void GetPIDChartData(DataTable table)
{
for (int i = 2; i < table.Columns.Count; i++)
{
var columnName = table.Columns[i].ColumnName;
ChartValues<double> chartValues = new ChartValues<double>();
table.AsEnumerable().Select(item => item.Field<double>(columnName)).ToList().ForEach(item => chartValues.Add(item));
var lineSeries = new LineSeries
{
Title = columnName,
Values = chartValues,
StrokeThickness = 1,
LineSmoothness = 0,
Fill = Brushes.Transparent,
PointGeometry = null // 不画圆点
};
SeriesCollection.Add(lineSeries);
}
}
private void UpdateSeries(DataTable table, EChartType chartType)
{
if (null == table
|| 0 == table.Rows.Count)
{
HandyControl.Controls.Growl.Warning("请点【查询】数据,或查询数据为空!");
return;
}
StepId = table.Rows.Count / 10;
System.Threading.SynchronizationContext.SetSynchronizationContext(new
System.Windows.Threading.DispatcherSynchronizationContext(System.Windows.Application.Current.Dispatcher));
System.Threading.SynchronizationContext.Current.Post(p1 =>
{
TimeLine.Clear();
SeriesCollection.Clear();
if (chartType == EChartType.Vacuum)
{
GetVacuumChartData(table);
}
else if (chartType == EChartType.Temp)
{
GetTempChartData(table);
}
else
{
GetPIDChartData(table);
}
SetXAxis(table);
}, null);
}
private void SetXAxis(DataTable table)
{
XName = table.Columns[0].ColumnName;
table.AsEnumerable().Select(item => item.Field<string>(XName)).ToList().ForEach(item => TimeLine.Add(item));
}
public DelegateCommand QueryTempCommand { get => new DelegateCommand(async () => await QueryTemp()); }
public async Task QueryTemp()
{
DtTemp = null;
if (!IsAccord("温度曲线(℃)"))
{
return;
}
ProgressBarView dlg = new ProgressBarView();
dlg.Show();
string sql = $@"CALL ProcGetTemperatureAndPressureData('{CurveStartDateTime.ToString("yyyy-MM-dd HH:mm:ss")}'
,'{CurveEndDateTime.ToString("yyyy-MM-dd HH:mm:ss")}','{Code}')";
await Task.Run(new Action(() =>
{
DtTemp = _unityContainer.Resolve<StoveSctualPatrolService>().GetDataTable(sql);
}));
dlg.Close();
Tip(DtTemp);
}
void Tip(DataTable dt)
{
if (0 == dt.Rows.Count)
{
HandyControl.Controls.Growl.Warning("查询数据为空!");
}
else
{
HandyControl.Controls.Growl.Success("查询数据成功!");
}
}
public DelegateCommand ChartTempCommand => new DelegateCommand(async() =>
{
await WaitChartTemp(DtTemp, EChartType.Temp);
});
public async Task AsyncChart(DataTable table, EChartType chartType)
{
Task queryTask = Task.Run(() => UpdateSeries(table, chartType));
var timeouttask = Task.Delay(30 * 1000);
var completedTask = await Task.WhenAny(queryTask, timeouttask);
if (completedTask == timeouttask)
{
HandyControl.Controls.MessageBox.Warning("查询超时!");
}
}
public DelegateCommand ChartVacuumCommand => new DelegateCommand(async() =>
{
if (!IsAccord("真空压力"))
{
return;
}
await WaitChartTemp(DtTemp, EChartType.Vacuum);
});
//public DelegateCommand QueryPIDCommand { get => new DelegateCommand(QueryPID); }
public DelegateCommand QueryPIDCommand { get => new DelegateCommand(async() => await QueryPID()); }
public async Task QueryPID()
{
if (!IsAccord("PID"))
{
return;
}
ProgressBarView dlg = new ProgressBarView();
dlg.Show();
string sql = $@"CALL ProcGetPidData ('{CurveStartDateTime.ToString("yyyy-MM-dd HH:mm:ss")}'
,'{CurveEndDateTime.ToString("yyyy-MM-dd HH:mm:ss")}','{Code}')";
await Task.Run(new Action(() =>
{
DtPID = _unityContainer.Resolve<StoveSctualPatrolService>().GetDataTable(sql);
}));
dlg.Close();
Tip(DtPID);
}
public DelegateCommand ChartPIDCommand => new DelegateCommand(async() =>
{
await WaitChartTemp(DtPID, EChartType.PID);
});
public async Task WaitChartTemp(DataTable table, EChartType eChart)
{
ProgressBarView dlg = new ProgressBarView();
dlg.Show();
await AsyncChart(table, eChart);
dlg.Close();
}
public DelegateCommand<object> ExportTempCommand => new DelegateCommand<object>((x) =>
{
if (null == DtTemp)
{
HandyControl.Controls.MessageBox.Error("温度数据为空!", "操作提示");
return;
}
CSVHelper.WriteDataTableToCsv(DtTemp);
});
public DelegateCommand<object> ExportPIDCommand => new DelegateCommand<object>((x) =>
{
if (null == DtPID)
{
HandyControl.Controls.MessageBox.Error("温度数据为空!", "操作提示");
return;
}
CSVHelper.WriteDataTableToCsv(DtPID);
});
bool IsAccord(string headName)
{
YName = headName;
if (string.IsNullOrWhiteSpace(Code))
{
HandyControl.Controls.MessageBox.Error("请输入条码", "操作提示");
return false;
}
var p = _unityContainer.Resolve<PalletInfoService>().GetPalletInfo(Code);
if (p == null)
{
HandyControl.Controls.MessageBox.Error("没有该托盘码", "操作提示");
return false;
}
TimeSpan timeSpan = CurveEndDateTime - CurveStartDateTime;
if (timeSpan.TotalHours > 24)
{
HandyControl.Controls.MessageBox.Error("请选择时间区间小于24小时的数据", "操作提示");
return false;
}
return true;
}
}
}

View File

@@ -0,0 +1,65 @@
using Cowain.Bake.BLL;
using Cowain.Bake.Model.Entity;
using Cowain.Bake.Common;
using Cowain.Bake.Model;
using Prism.Regions;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using Unity;
using Prism.Commands;
using HandyControl.Controls;
using Newtonsoft.Json;
using Cowain.Bake.Model.Models;
using System.Linq;
namespace Cowain.Bake.UI.DataQuery.ViewModels
{
public class DummyInfoViewModel:ViewModelBase
{
public DummyInfoViewModel(IUnityContainer unityContainer, IRegionManager regionManager) : base(unityContainer, regionManager)
{
this.PageTitle = "电池追踪";
}
private ObservableCollection<BatteryInfoEntity> cellList;
public ObservableCollection<BatteryInfoEntity> CellList
{
get => cellList ?? (cellList = new ObservableCollection<BatteryInfoEntity>());
set { SetProperty(ref cellList, value); }
}
public DelegateCommand<object> DummyQueryCommand => new DelegateCommand<object>((x) =>
{
CellList.Clear();
if (string.IsNullOrWhiteSpace(Code))
{
HandyControl.Controls.MessageBox.Error($@"没有数据!请输入正确的条码", "操作提示");
return;
}
BatteryInfoEntity batteryInfo = _unityContainer.Resolve<BatteryInfoService>().QueryBatteryWaterValue(Code);
if(null == batteryInfo)
{
HandyControl.Controls.MessageBox.Error($@"没有数据到所属托盘或没有此电芯!", "警告");
return;
}
if (!string.IsNullOrEmpty(batteryInfo.WaterValue))
{
List<WaterModel> waterModelList = JsonConvert.DeserializeObject<List<WaterModel>>(batteryInfo.WaterValue);
WaterModel waterModel = waterModelList.OrderByDescending(w=>w.Id).FirstOrDefault();
batteryInfo.SeptumValue = waterModel.SeptumWaterValue;
batteryInfo.AnodeValue = waterModel.AnodeWaterValue;
batteryInfo.CathodeValue = waterModel.CathodeWaterValue;
}
CellList.Add(batteryInfo);
Growl.Success("查询完成!");
});
}
}

View File

@@ -0,0 +1,192 @@
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;
}
}
}

View File

@@ -0,0 +1,146 @@
using Cowain.Bake.BLL;
using Cowain.Bake.Common;
using Cowain.Bake.Model;
using Prism.Regions;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Unity;
using Prism.Commands;
using System.Windows;
using HandyControl.Controls;
using Cowain.Bake.UI.CsvMap;
namespace Cowain.Bake.UI.DataQuery.ViewModels
{
public class IncomingCellInfoViewModel : ViewModelBase
{
private DateTime _startTime = DateTime.Now.AddDays(-1);
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.AddHours(1);
public DateTime EndDatetime
{
get { return _endTime; }
set { SetProperty(ref _endTime, DateTime.Parse(value.ToString("yyyy-MM-dd HH:mm:ss"))); }
}
List<TBatteryInfo> batteryList = new List<TBatteryInfo>();
public IncomingCellInfoViewModel(IUnityContainer unityContainer, IRegionManager regionManager) : base(unityContainer, regionManager)
{
this.PageTitle = "来料查询";
}
private ObservableCollection<TBatteryInfo> cellList;
public ObservableCollection<TBatteryInfo> CellList
{
get => cellList ?? (cellList = new ObservableCollection<TBatteryInfo>());
set { SetProperty(ref cellList, value); }
}
public void AsyncRefreshTask()
{
Application.Current?.Dispatcher?.Invoke(new Action(() =>
{
Refresh();
}));
}
public async override void Refresh()
{
CellList.Clear();
batteryList.Clear();
batteryList = await System.Threading.Tasks.Task.Run(() =>
{
var cellInfoService = _unityContainer.Resolve<BatteryInfoService>();
//从数据库查询任务
return cellInfoService.GetIncomingCell();
});
batteryList.ForEach(x => CellList.Add(x));
}
public DelegateCommand<object> DeleteCommand => new DelegateCommand<object>((x) =>
{
var result = HandyControl.Controls.MessageBox.Ask($@"确定删除?", "操作提示");
if (result == System.Windows.MessageBoxResult.Cancel)
{
return;
}
var t = x as TBatteryInfo;
if (t != null)
{
int delCount = _unityContainer.Resolve<BatteryInfoService>().Delete(t);
cellList.Remove(t);
if (delCount > 0)
{
Growl.Success("删除成功!");
}
else
{
Growl.Fatal("删除失败!");
}
}
else
{
Growl.Fatal("删除失败!");
}
});
public DelegateCommand<object> ExportCommand => new DelegateCommand<object>((x) =>
{
if (batteryList.Count == 0)
{
HandyControl.Controls.MessageBox.Show("没有数据!");
return;
}
Common.Core.CSVHelper.WriteMap<TBatteryInfo, BatteryInfoMap>(batteryList);
});
public DelegateCommand<object> QueryCommand => new DelegateCommand<object>((x) =>
{
CellList.Clear();
batteryList.Clear();
if ((EndDatetime - StartDatetime).TotalDays > 5)
{
HandyControl.Controls.MessageBox.Warning("查询时间差在 5 天以内!");
return;
}
var cellService = _unityContainer.Resolve<BatteryInfoService>();
if (string.IsNullOrWhiteSpace(Code))
{
batteryList = cellService.QueryIncomingCell(StartDatetime, EndDatetime);
}
else
{
batteryList = cellService.QueryIncomingCellByCode(Code);
}
if (0 != batteryList.Count)
{
batteryList.ForEach(item => CellList.Add(item));
Growl.Success("查询完成!");
}
else
{
Growl.Success("没有数据!");
}
});
}
}

View File

@@ -0,0 +1,179 @@
using Cowain.Bake.Common;
using Cowain.Bake.Model;
using Prism.Regions;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Unity;
using Prism.Commands;
using System.Windows;
using HandyControl.Controls;
using Newtonsoft.Json.Linq;
using Newtonsoft.Json;
using Cowain.Bake.Common.Core;
using Cowain.Bake.BLL;
using Cowain.Bake.Model.Entity;
using Cowain.Bake.Common.CsvMap;
namespace Cowain.Bake.UI.DataQuery.ViewModels
{
public class NGCellInfoViewModel:ViewModelBase
{
private DateTime _startTime = DateTime.Now.AddDays(-1);
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.AddHours(1);
public DateTime EndDatetime
{
get { return _endTime; }
set { SetProperty(ref _endTime, DateTime.Parse(value.ToString("yyyy-MM-dd HH:mm:ss"))); }
}
public NGCellInfoViewModel(IUnityContainer unityContainer, IRegionManager regionManager) : base(unityContainer, regionManager)
{
this.PageTitle = "烘烤NG电芯查询";
}
private ObservableCollection<TBatteryNG> cellList;
public ObservableCollection<TBatteryNG> CellList
{
get => cellList ?? (cellList = new ObservableCollection<TBatteryNG>());
set { SetProperty(ref cellList, value); }
}
public void AsyncRefreshTask()
{
Application.Current?.Dispatcher?.Invoke(new Action(() =>
{
Refresh();
}));
}
public async override void Refresh()
{
CellList.Clear();
var listCell = await System.Threading.Tasks.Task.Run(() =>
{
//从数据库查询任务
return _unityContainer.Resolve<BatteryNGService>().GetAllNGCell();
});
listCell = ExtractJson(listCell);
listCell.ForEach(x => CellList.Add(x));
}
public DelegateCommand<object> ExportCommand => new DelegateCommand<object>((x) =>
{
if (0 == CellList.Count)
{
HandyControl.Controls.MessageBox.Warning("没有数据,导出失败!");
return;
}
Common.Core.CSVHelper.WriteMap<TBatteryNG, FailBatteryMap>(CellList);
//Common.Core.CSVHelper.WriteDataTableToCsv(CellList, new List<string> { "Id","BatteryCode", "PalletCode", "ChannelNo",
// "Desc", "CreateTime"}, new List<string> { "序号", "电芯条码", "托盘条码", "报警通道", "报警描述","报警时间"});
});
public DelegateCommand<object> QueryCommand => new DelegateCommand<object>((x) =>
{
CellList.Clear();
if ((EndDatetime - StartDatetime).TotalDays > 5)
{
HandyControl.Controls.MessageBox.Warning("查询时间差在 5 天以内!");
return;
}
List<TBatteryNG> queryCell = _unityContainer.Resolve<BatteryNGService>().QueryNGCell(StartDatetime, EndDatetime, Code); //出可以直接在数据库中查询得到 SELECT `Desc`->>'$.Info.MOMMessage' cmd FROM TBatteryNG;
queryCell = ExtractJson(queryCell);
if (0 != queryCell.Count)
{
queryCell.ForEach(item => CellList.Add(item));
Growl.Success("查询完成!");
}
else
{
Growl.Success("没有数据!");
}
});
/// <summary>
/// JSON 字符串截取
/// </summary>
/// <param name="failBatterys"></param>
/// <returns></returns>
List<TBatteryNG> ExtractJson(List<TBatteryNG> failBatterys)
{
try
{
foreach (var item in failBatterys)
{
if (!IsValidJson(item.Desc))
{
continue;
}
JObject jsonObject = JObject.Parse(item.Desc);
string keyValue = (string)jsonObject["Info"]["MOMMessage"]; //为什么加try,怕没有MOMMessage
item.Desc = keyValue; // 更新为Key的值
}
}
catch(Exception ex)
{
LogHelper.Instance.Info($"NG电芯,解析JSON失败:{ex.Message}");
}
return failBatterys;
}
bool IsValidJson(string input)
{
try
{
JsonConvert.DeserializeObject(input);
//JsonDocument.Parse(input);
return true;
}
catch
{
return false;
}
}
public DelegateCommand<object> DeleteCommand => new DelegateCommand<object>((x) =>
{
var result = HandyControl.Controls.MessageBox.Ask($@"确定删除?", "操作提示");
if (result == System.Windows.MessageBoxResult.Cancel)
{
return;
}
var t = x as TBatteryNG;
if (t != null)
{
int delCount = _unityContainer.Resolve<BatteryNGService>().Delete(t);
cellList.Remove(t);
if (delCount > 0)
{
Growl.Success("删除成功!");
}
else
{
Growl.Fatal("删除失败!");
}
}
else
{
Growl.Fatal("删除失败!");
}
});
}
}

View File

@@ -0,0 +1,133 @@
using Cowain.Bake.BLL;
using Cowain.Bake.Common;
using Cowain.Bake.Model;
using Prism.Regions;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using Unity;
using Prism.Commands;
using System.Windows;
using HandyControl.Controls;
using Cowain.Bake.UI.CsvMap;
namespace Cowain.Bake.UI.DataQuery.ViewModels
{
public class PalletInfoViewModel:ViewModelBase
{
private DateTime _startTime = DateTime.Now.AddDays(-1);
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.AddHours(1);
public DateTime EndDatetime
{
get { return _endTime; }
set { SetProperty(ref _endTime, DateTime.Parse(value.ToString("yyyy-MM-dd HH:mm:ss"))); }
}
public PalletInfoViewModel(IUnityContainer unityContainer, IRegionManager regionManager) : base(unityContainer, regionManager)
{
this.PageTitle = "托盘追踪";
}
private ObservableCollection<TPalletInfo> palletList;
public ObservableCollection<TPalletInfo> PalletList
{
get => palletList ?? (palletList = new ObservableCollection<TPalletInfo>());
set { SetProperty(ref palletList, value); }
}
List<TPalletInfo> SaveList = new List<TPalletInfo>();
public void AsyncRefreshTask()
{
Application.Current?.Dispatcher?.Invoke(new Action(() =>
{
Refresh();
}));
}
public async override void Refresh()
{
PalletList.Clear();
SaveList.Clear();
SaveList = await System.Threading.Tasks.Task.Run(() =>
{
//从数据库查询任务
return _unityContainer.Resolve<PalletInfoService>().GetAll();
});
SaveList.ForEach(x => PalletList.Add(x));
}
public DelegateCommand<object> ExportCommand => new DelegateCommand<object>((x) =>
{
if (SaveList.Count == 0)
{
HandyControl.Controls.MessageBox.Show("没有数据!");
return;
}
Common.Core.CSVHelper.WriteMap<TPalletInfo, PalletInfoMap>(SaveList);
//Common.Core.CSVHelper.WriteDataTableToCsv(SaveList, new List<string> { "Id","PalletCode", "PalletStatus",
// "BatteryQty", "BakingCount","BakingPosition", "ScanTime", "LoadingOverTime","InStoveTime","BakingBeginTime","BakingOverTime","OutStoveTime","JobNum"},
// new List<string> { "序号", "托盘条码", "托盘状态", "电芯数量", "烘烤次数", "烘烤位置", "扫码时间", "上料完成时间", "入炉时间", "开始烘烤时间", "烘烤完成时间", "出炉时间", "工单号"});
});
public DelegateCommand<object> QueryCommand => new DelegateCommand<object>((x) =>
{
PalletList.Clear();
SaveList.Clear();
if ((EndDatetime - StartDatetime).TotalDays > 30)
{
HandyControl.Controls.MessageBox.Warning("查询时间差在 30 天以内!");
return;
}
var palletInfoService = _unityContainer.Resolve<PalletInfoService>();
SaveList = palletInfoService.Query(StartDatetime, EndDatetime, Code);
if (0 != SaveList.Count)
{
SaveList.ForEach(item => PalletList.Add(item));
Growl.Success("查询完成!");
}
else
{
Growl.Success("没有数据!");
}
});
public DelegateCommand<object> DeleteCommand => new DelegateCommand<object>((x) =>
{
var result = HandyControl.Controls.MessageBox.Ask($@"确定删除?", "操作提示");
if (result == System.Windows.MessageBoxResult.Cancel)
{
return;
}
var t = x as TPalletInfo;
if (t != null)
{
int delCount = _unityContainer.Resolve<PalletInfoService>().Delete(t);
palletList.Remove(t);
if (delCount > 0)
{
Growl.Success("删除成功!");
}
else
{
Growl.Fatal("删除失败!");
}
}
else
{
Growl.Fatal("删除失败!");
}
});
}
}

View File

@@ -0,0 +1,77 @@
using Cowain.Bake.BLL;
using Cowain.Bake.Model.Entity;
using Cowain.Bake.Common;
using Cowain.Bake.Model;
using Prism.Regions;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Unity;
using Prism.Commands;
using System.Windows;
using HandyControl.Controls;
using Cowain.Bake.Common.Core;
namespace Cowain.Bake.UI.DataQuery.ViewModels
{
public class ProductionsInfoViewModel:ViewModelBase
{
public ProductionsInfoViewModel(IUnityContainer unityContainer, IRegionManager regionManager) : base(unityContainer, regionManager)
{
this.PageTitle = "产量查询";
}
private ObservableCollection<OutputEntity> productionList;
public ObservableCollection<OutputEntity> ProductionList
{
get => productionList ?? (productionList = new ObservableCollection<OutputEntity>());
set { SetProperty(ref productionList, value); }
}
void ExecuteQuery()
{
List<OutputEntity> query = null;
var cellService = _unityContainer.Resolve<BatteryInfoService>();
if (5 < (EndDateTime - StartDateTime).Days)
{
Growl.Fatal("查询日期间隔不能大于5天!");
return;
}
var task = System.Threading.Tasks.Task.Factory.StartNew(() =>
{
query = cellService.GetProductionOutPut(StartDateTime, EndDateTime);
});
task.Wait();
if (null == query)
{
Growl.Fatal("查询失败,请重新查询!");
return;
}
productionList.Clear();
if (0 != query.Count)
{
query.ForEach(item => ProductionList.Add(item));
Growl.Success("查询完成!");
}
else
{
Growl.Success("没有数据!");
}
}
public DelegateCommand<object> QueryCommand => new DelegateCommand<object>((x) =>
{
ExecuteQuery();
});
}
}

View File

@@ -0,0 +1,76 @@
<UserControl x:Class="Cowain.Bake.UI.DataQuery.Views.BatteryInfoView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:Cowain.Bake.UI.DataQuery.Views"
xmlns:hc="https://handyorg.github.io/handycontrol"
xmlns:convertor="clr-namespace:Cowain.Bake.Common.Converter;assembly=Cowain.Bake.Common"
xmlns:convertorBll="clr-namespace:Cowain.Bake.BLL.Converter;assembly=Cowain.Bake.BLL"
xmlns:sys="clr-namespace:System;assembly=mscorlib"
mc:Ignorable="d"
d:DesignHeight="450" d:DesignWidth="900">
<UserControl.Resources>
<convertor:BatteryStatusConvertor x:Key="cellStatusConvertor"></convertor:BatteryStatusConvertor>
<convertorBll:CavityInfoIdConverter x:Key="CavityInfoIdConverter">
</convertorBll:CavityInfoIdConverter>
<Style TargetType="{x:Type TextBlock}">
<Setter Property="FontSize" Value="15"/>
</Style>
</UserControl.Resources>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="60"/>
<RowDefinition/>
</Grid.RowDefinitions>
<Border Background="#EEE" Margin="4" CornerRadius="6" BorderThickness="1"/>
<StackPanel Orientation="Horizontal" Margin="0,10,0,10" HorizontalAlignment="Center" Width="880" >
<TextBlock VerticalAlignment="Center" Margin="4">日期时间:</TextBlock>
<hc:DateTimePicker x:Name="StartTime" Text="{Binding StartDatetime,Mode=TwoWay}" Margin="5,5,0,0" Width="163"/>
<TextBlock VerticalAlignment="Center">-</TextBlock>
<hc:DateTimePicker x:Name="EndTime" Text="{Binding EndDatetime,Mode=TwoWay}" Width="163"></hc:DateTimePicker>
<TextBlock Text="电芯条码:" VerticalAlignment="Center" Margin="60,4,4,4"/>
<hc:TextBox Width="201" Height="30" Margin="0,0,10,0" Text="{Binding Code,Mode=TwoWay}"></hc:TextBox>
<!--<TextBlock Text="托盘条码:" VerticalAlignment="Center" Margin="4"/>
<hc:TextBox Width="93" Height="30" Margin="0,0,10,0" Text="{Binding PalletCode,Mode=TwoWay}"></hc:TextBox>-->
<Button Content="查询" Click="Button_Click_1" Style="{StaticResource ButtonSuccess}" Margin="4" Width="58" Command="{Binding QueryCommand}"/>
<Button Content="导出" Style="{StaticResource ButtonPrimary}" Margin="4" Width="58" Command="{Binding ExportCommand}"/>
</StackPanel>
<DataGrid hc:DataGridAttach.CanUnselectAllWithBlankArea="True" HeadersVisibility="All" x:Name="dgvStation" Grid.Row="1"
CanUserSortColumns="False" SelectionMode="Single" Margin="4" IsReadOnly="True"
RowHeaderWidth="0" AutoGenerateColumns="False" ItemsSource="{Binding CellList,UpdateSourceTrigger=PropertyChanged}">
<DataGrid.Columns>
<DataGridTextColumn Width="auto" CanUserResize="False" Binding="{Binding BatteryCode}" Header="电芯条码"/>
<DataGridTextColumn Width="90" CanUserResize="False" Binding="{Binding PalletVirtualId}" Header="托盘虚拟码"/>
<DataGridTextColumn Width="auto" CanUserResize="False" Binding="{Binding PalletCode}" Header="托盘条码"/>
<DataGridTextColumn Width="auto" CanUserResize="False" Binding="{Binding BatteryStatus, Converter={StaticResource cellStatusConvertor}}" Header="电芯状态"/>
<DataGridTextColumn Width="55" CanUserResize="False" Binding="{Binding PositionX}" Header="行号"/>
<DataGridTextColumn Width="55" CanUserResize="False" Binding="{Binding PositionY}" Header="列号"/>
<DataGridTextColumn Width="auto" Binding="{Binding LoadingBegingTime,StringFormat=yyyy-MM-dd HH:mm:ss}" Header="上料开始时间" />
<DataGridTextColumn Width="auto" Binding="{Binding ScanTime,StringFormat=yyyy-MM-dd HH:mm:ss}" Header="扫码时间" />
<DataGridTextColumn Width="auto" Binding="{Binding LoadingOverTime,StringFormat=yyyy-MM-dd HH:mm:ss}" Header="上料结束时间" />
<DataGridTextColumn Width="auto" Binding="{Binding BakingPosition,Converter={StaticResource CavityInfoIdConverter}}" Header="所属烤箱" />
<DataGridTextColumn Width="55" CanUserResize="False" Binding="{Binding BakingCount}" Header="烘烤次数"/>
<DataGridTextColumn Width="auto" Binding="{Binding BakingBeginTime,StringFormat=yyyy-MM-dd HH:mm:ss}" Header="烘烤开始时间" />
<DataGridTextColumn Width="auto" Binding="{Binding BakingOverTime,StringFormat=yyyy-MM-dd HH:mm:ss}" Header="烘烤结束时间" />
<DataGridTextColumn Width="auto" Binding="{Binding UnLoadingBegingTime,StringFormat=yyyy-MM-dd HH:mm:ss}" Header="下料开始时间" />
<DataGridTextColumn Width="auto" Binding="{Binding UnLoadingOverTime,StringFormat=yyyy-MM-dd HH:mm:ss}" Header="下料结束时间" />
<DataGridTextColumn Width="auto" Binding="{Binding CoolTemp}" Header="下料温度" />
<DataGridTextColumn Width="100" CanUserResize="False" Binding="{Binding WaterValue}" Header="水含量结果"/>
<!--<DataGridTemplateColumn Header="操作" Width="80">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<StackPanel Grid.Column="4" VerticalAlignment="Center" HorizontalAlignment="Center" Orientation="Horizontal">
<TextBlock Margin="3,0" >
<Hyperlink Foreground="Red" Command="{Binding DataContext.DeleteCommand, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=DataGrid}}" CommandParameter="{Binding}">删除</Hyperlink>
</TextBlock>
</StackPanel>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>-->
</DataGrid.Columns>
</DataGrid>
</Grid>
</UserControl>

View File

@@ -0,0 +1,33 @@
using HandyControl.Tools.Extension;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace Cowain.Bake.UI.DataQuery.Views
{
/// <summary>
/// CellInfoView.xaml 的交互逻辑
/// </summary>
public partial class BatteryInfoView : UserControl
{
public BatteryInfoView()
{
InitializeComponent();
}
private void Button_Click_1(object sender, RoutedEventArgs e)
{
}
}
}

View File

@@ -0,0 +1,140 @@
<UserControl x:Class="Cowain.Bake.UI.DataQuery.Views.CurveView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:lvc="clr-namespace:LiveCharts.Wpf;assembly=LiveCharts.Wpf"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:convertor="clr-namespace:Cowain.Bake.BLL.Converter;assembly=Cowain.Bake.BLL"
xmlns:hc="https://handyorg.github.io/handycontrol"
xmlns:i="http://schemas.microsoft.com/xaml/behaviors"
mc:Ignorable="d"
d:DesignHeight="530" d:DesignWidth="950">
<UserControl.Resources>
<convertor:CavityInfoIdConverter x:Key="CavityInfoIdConverter"/>
</UserControl.Resources>
<Grid>
<TabControl VerticalAlignment="Stretch">
<TabItem Header="曲线图" >
<hc:SimplePanel>
<hc:DrawerContainer>
<Grid Background="#FFE5E5E5">
<Grid.RowDefinitions>
<RowDefinition Height="50"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Border Background="#EEE" CornerRadius="6" BorderThickness="1"/>
<StackPanel Orientation="Horizontal">
<Label Content="时间:" Foreground="Black" Style="{StaticResource BaseStyle}" Margin="10,10,0,0" />
<hc:DateTimePicker Text="{Binding CurveStartDateTime,Mode=TwoWay}" Width="169" Height="30"/>
<TextBlock VerticalAlignment="Center" Margin="5,0,0,0">-</TextBlock>
<hc:DateTimePicker Text="{Binding CurveEndDateTime,Mode=TwoWay}" Margin="5,0,0,0" Width="169" Height="30"/>
<Label Height="30" Content="托盘条码:" Foreground="Black" Style="{StaticResource BaseStyle}" Margin="20,10,0,0" VerticalAlignment="Top" Width="60" />
<hc:TextBox Width="100" Height="30" Text="{Binding Code,Mode=TwoWay}" Margin="0,0,20,0"></hc:TextBox>
<Button Content="查询温度" Style="{StaticResource ButtonSuccess}" Margin="4" Width="80" Command="{Binding QueryTempCommand}"/>
<Button Content="查询PID" Style="{StaticResource ButtonSuccess}" Margin="4,4,60,4" Width="80" Command="{Binding QueryPIDCommand}"/>
<Button Content="压力曲线" Style="{StaticResource ButtonSuccess}" Margin="4" Width="80" Command="{Binding ChartVacuumCommand}"/>
<Button Content="温度曲线" Style="{StaticResource ButtonSuccess}" Margin="4" Width="80" Command="{Binding ChartTempCommand}"/>
<Button Content="PID曲线" Style="{StaticResource ButtonSuccess}" Margin="4" Width="80" Command="{Binding ChartPIDCommand}"/>
<ToggleButton Content="选择" IsChecked="{Binding IsOpen,ElementName=DrawerTopInContainer}" Margin="30,0,0,0"/>
</StackPanel>
<hc:Drawer Name="DrawerTopInContainer" Dock="Top" ShowMode="Press">
<Border Background="{DynamicResource RegionBrush}" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" BorderBrush="{DynamicResource BorderBrush}">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="20"/>
<RowDefinition Height="auto"/>
</Grid.RowDefinitions>
<DataGrid Grid.Row="1" Grid.Column="0" hc:DataGridAttach.CanUnselectAllWithBlankArea="True" HeadersVisibility="Column" RowHeaderWidth="60" AutoGenerateColumns="False" ItemsSource="{Binding DataList}" Margin="8">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding Name}" Header="温度类型"/>
<DataGridCheckBoxColumn Width="100" CanUserResize="False" Binding="{Binding IsSelected,Mode=TwoWay}" Header="查询"/>
</DataGrid.Columns>
</DataGrid>
<Button Command="hc:ControlCommands.Close" Grid.Row="0" HorizontalAlignment="Right" Foreground="{DynamicResource PrimaryTextBrush}" Style="{StaticResource ButtonIcon}" hc:IconElement.Geometry="{StaticResource DeleteFillCircleGeometry}"/>
</Grid>
</Border>
</hc:Drawer>
<lvc:CartesianChart Series="{Binding SeriesCollection}" Grid.Row="1" LegendLocation="Right"
DisableAnimations="True"
Hoverable="False"
DataTooltip="{x:Null}">
<lvc:CartesianChart.AxisX>
<lvc:Axis Title="{Binding XName}" FontSize="12" Labels="{Binding TimeLine}">
<lvc:Axis.Separator>
<lvc:Separator Step="{Binding StepId}" />
</lvc:Axis.Separator>
</lvc:Axis>
</lvc:CartesianChart.AxisX>
<lvc:CartesianChart.AxisY>
<lvc:Axis Title="{Binding YName}" FontSize="12"/>
</lvc:CartesianChart.AxisY>
</lvc:CartesianChart>
</Grid>
</hc:DrawerContainer>
</hc:SimplePanel>
</TabItem>
<TabItem Header="温度数据" >
<Grid Background="#FFE5E5E5">
<Grid.RowDefinitions>
<RowDefinition Height="50"/>
<RowDefinition/>
</Grid.RowDefinitions>
<Border Background="#EEE" Margin="4" CornerRadius="6" BorderThickness="1"/>
<StackPanel Orientation="Horizontal" HorizontalAlignment="Left" >
<Button Content="导出" Style="{StaticResource ButtonInfo}" Command="{Binding ExportTempCommand}" Margin="20,0,0,0" Width="80" />
</StackPanel>
<DataGrid Style="{StaticResource DataGrid.Small}" AutoGenerateColumns="False" ItemsSource="{Binding DtTemp,UpdateSourceTrigger=PropertyChanged}"
Height="Auto" Width="Auto" Grid.Row="1">
<DataGrid.Columns>
<DataGridTextColumn Header="时间" Width="170" Binding="{Binding CreateTime}"></DataGridTextColumn>
<DataGridTextColumn Header="烘烤位置" Width="120" Binding="{Binding CavityId,Converter={StaticResource CavityInfoIdConverter}}"/>
<DataGridTextColumn Header="压力" Width="80" Binding="{Binding Vacuum}"></DataGridTextColumn>
<DataGridTextColumn Header="温度1" Width="80" Binding="{Binding 温度1}"></DataGridTextColumn>
<DataGridTextColumn Header="温度2" Width="80" Binding="{Binding 温度2}"></DataGridTextColumn>
<DataGridTextColumn Header="温度3" Width="80" Binding="{Binding 温度3}"></DataGridTextColumn>
<DataGridTextColumn Header="温度4" Width="80" Binding="{Binding 温度4}"></DataGridTextColumn>
<DataGridTextColumn Header="温度5" Width="80" Binding="{Binding 温度5}"></DataGridTextColumn>
<DataGridTextColumn Header="温度6" Width="80" Binding="{Binding 温度6}"></DataGridTextColumn>
<DataGridTextColumn Header="温度7" Width="80" Binding="{Binding 温度7}"></DataGridTextColumn>
<DataGridTextColumn Header="温度8" Width="80" Binding="{Binding 温度8}"></DataGridTextColumn>
</DataGrid.Columns>
</DataGrid>
</Grid>
</TabItem>
<TabItem Header="PID数据" >
<Grid Background="#FFE5E5E5">
<Grid.RowDefinitions>
<RowDefinition Height="50"/>
<RowDefinition/>
</Grid.RowDefinitions>
<Border Background="#EEE" Margin="4" CornerRadius="6" BorderThickness="1"/>
<StackPanel Orientation="Horizontal" HorizontalAlignment="Left" >
<Button Content="导出" Style="{StaticResource ButtonInfo}" Command="{Binding ExportPIDCommand}" Margin="20,0,0,0" Width="80" />
</StackPanel>
<DataGrid Style="{StaticResource DataGrid.Small}" AutoGenerateColumns="False" ItemsSource="{Binding DtPID,UpdateSourceTrigger=PropertyChanged}"
Height="Auto" Width="Auto" Grid.Row="1" >
<DataGrid.Columns>
<DataGridTextColumn Header="时间" Width="170" Binding="{Binding CreateTime}"></DataGridTextColumn>
<DataGridTextColumn Header="烘烤位置" Width="120" Binding="{Binding CavityId,Converter={StaticResource CavityInfoIdConverter}}"/>
<DataGridTextColumn Header="PID1" Width="80" Binding="{Binding PID1}"></DataGridTextColumn>
<DataGridTextColumn Header="PID2" Width="80" Binding="{Binding PID2}"></DataGridTextColumn>
<DataGridTextColumn Header="PID3" Width="80" Binding="{Binding PID3}"></DataGridTextColumn>
<DataGridTextColumn Header="PID4" Width="80" Binding="{Binding PID4}"></DataGridTextColumn>
</DataGrid.Columns>
</DataGrid>
</Grid>
</TabItem>
</TabControl>
</Grid>
</UserControl>

View File

@@ -0,0 +1,29 @@
using Cowain.Bake.BLL;
using Cowain.Bake.Common.Core;
using System;
using System.Data;
using System.Drawing;
using System.Windows;
using System.Windows.Controls;
using Unity;
namespace Cowain.Bake.UI.DataQuery.Views
{
/// <summary>
/// Curve.xaml 的交互逻辑
/// </summary>
public partial class CurveView : UserControl
{
private IUnityContainer _unityContainer;
public CurveView(IUnityContainer unityContainer)
{
InitializeComponent();
_unityContainer = unityContainer;
}
private void CheckComboBox_Selected(object sender, RoutedEventArgs e)
{
}
}
}

View File

@@ -0,0 +1,47 @@
<UserControl x:Class="Cowain.Bake.UI.DataQuery.Views.DummyInfoView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:Cowain.Bake.UI.DataQuery.Views"
mc:Ignorable="d"
xmlns:hc="https://handyorg.github.io/handycontrol"
xmlns:convertor="clr-namespace:Cowain.Bake.Common.Converter;assembly=Cowain.Bake.Common"
xmlns:sys="clr-namespace:System;assembly=mscorlib"
d:DesignHeight="450" d:DesignWidth="950">
<UserControl.Resources>
<convertor:BatteryStatusConvertor x:Key="cellStatusConvertor"></convertor:BatteryStatusConvertor>
<Style TargetType="{x:Type TextBlock}">
<Setter Property="FontSize" Value="15"/>
</Style>
</UserControl.Resources>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="60"/>
<RowDefinition/>
</Grid.RowDefinitions>
<Border Background="#EEE" Margin="4" CornerRadius="6" BorderThickness="1"/>
<StackPanel Orientation="Horizontal" Margin="2,10,10,10" HorizontalAlignment="Right" >
<TextBlock Text="电芯条码:" VerticalAlignment="Center" Margin="4"/>
<hc:TextBox Width="150" Height="30" Margin="0,0,10,0" Text="{Binding Code,Mode=TwoWay}"></hc:TextBox>
<Button Content="查询" Style="{StaticResource ButtonSuccess}" Margin="4" Width="100" Command="{Binding DummyQueryCommand}"/>
</StackPanel>
<DataGrid hc:DataGridAttach.CanUnselectAllWithBlankArea="True" HeadersVisibility="All" x:Name="dgvStation" Grid.Row="1"
CanUserSortColumns="False" SelectionMode="Single" Margin="4" IsReadOnly="True"
RowHeaderWidth="0" AutoGenerateColumns="False" ItemsSource="{Binding CellList,UpdateSourceTrigger=PropertyChanged}">
<DataGrid.Columns>
<DataGridTextColumn Width="150" CanUserResize="False" Binding="{Binding ScanTime, StringFormat=yyyy-MM-dd HH:mm:ss}" Header="扫码时间"/>
<DataGridTextColumn Width="210" CanUserResize="False" Binding="{Binding BatteryCode}" Header="电芯条码"/>
<DataGridTextColumn Width="100" CanUserResize="False" Binding="{Binding PalletCode}" Header="托盘条码"/>
<DataGridTextColumn Width="150" Binding="{Binding BakingLocation}" Header="烘烤位置" />
<DataGridTextColumn Width="150" Binding="{Binding BakingBeginTime, StringFormat=yyyy-MM-dd HH:mm:ss}" Header="烘烤开始时间" Visibility="Visible"/>
<DataGridTextColumn Width="150" Binding="{Binding BakingOverTime, StringFormat=yyyy-MM-dd HH:mm:ss}" Header="烘烤结束时间" Visibility="Visible"/>
<DataGridTextColumn Width="80" CanUserResize="False" Binding="{Binding AnodeValue}" Header="正极水分"/>
<DataGridTextColumn Width="80" CanUserResize="False" Binding="{Binding SeptumValue}" Header="隔膜水分"/>
<DataGridTextColumn Width="80" CanUserResize="False" Binding="{Binding CathodeValue}" Header="负极水分"/>
</DataGrid.Columns>
</DataGrid>
</Grid>
</UserControl>

View File

@@ -0,0 +1,28 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace Cowain.Bake.UI.DataQuery.Views
{
/// <summary>
/// DummyInfoView.xaml 的交互逻辑
/// </summary>
public partial class DummyInfoView : UserControl
{
public DummyInfoView()
{
InitializeComponent();
}
}
}

View File

@@ -0,0 +1,56 @@
<UserControl x:Class="Cowain.Bake.UI.DataQuery.Views.GetMesLogView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:Cowain.Bake.UI.DataQuery.Views"
xmlns:convertor="clr-namespace:Cowain.Bake.Common.Converter;assembly=Cowain.Bake.Common"
xmlns:hc="https://handyorg.github.io/handycontrol"
mc:Ignorable="d"
Height="auto" Width="auto">
<UserControl.Resources>
<convertor:SendFlagConvertor x:Key="sendFlagConvertor"></convertor:SendFlagConvertor>
</UserControl.Resources>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="55"/>
<RowDefinition/>
</Grid.RowDefinitions>
<Border Background="#EEE" Margin="4" CornerRadius="6" BorderThickness="1"/>
<WrapPanel >
<TextBlock VerticalAlignment="Center" Margin="5,10,0,0">日期时间:</TextBlock>
<hc:DateTimePicker x:Name="StartTime" Text="{Binding StartDatetime,Mode=TwoWay}" Margin="5,10,0,0" Width="160"/>
<TextBlock VerticalAlignment="Center" Margin="0,10,0,0">-</TextBlock>
<hc:DateTimePicker x:Name="EndTime" Text="{Binding EndDatetime,Mode=TwoWay}" Margin="0,10,0,0" Width="160"></hc:DateTimePicker>
<TextBlock Text="MOM信息类别:" VerticalAlignment="Center" Margin="4,10,0,0"/>
<ComboBox x:Name="palletCode" SelectedValue="{Binding MesClass,Mode=TwoWay}" ItemsSource="{Binding MesClassList}" Margin="5,10,0,0" FontWeight="Bold" IsReadOnly="True" HorizontalAlignment="Left" Height="25" VerticalAlignment="Top" Width="120"/>
<CheckBox IsChecked="{Binding IsChecked, Mode=TwoWay}" FontWeight="Bold" Margin="10,10,0,0" Content="条码(时间组合)"/>
<TextBlock Text="电芯条码:" VerticalAlignment="Center" Margin="0,10,0,0"/>
<TextBox Text="{Binding BatteryCode,Mode=TwoWay}" Margin="5,10,0,0" Width="190"/>
<Button Content="查询" Style="{StaticResource ButtonSuccess}" Margin="4,10,0,0" Width="45" Command="{Binding QueryCommand}"/>
<Button Content="导出" Style="{StaticResource ButtonPrimary}" Margin="4,10,0,0" Width="45" Command="{Binding GetMesCvsCommand}"/>
<Button Content="自动上传" Visibility="Collapsed" Command="{Binding AutoUploadCommand}" Style="{StaticResource ButtonSuccess}" VerticalAlignment="Top" Width="68" Margin="4,10,0,0"/>
</WrapPanel>
<DataGrid HorizontalAlignment="Left" Grid.Row="1" AutoGenerateColumns="False" IsReadOnly="True"
ItemsSource="{Binding MesDataList,Mode=TwoWay}" Height="auto" VerticalAlignment="Top" Width="auto">
<DataGrid.Columns>
<DataGridTextColumn Width="auto" Binding="{Binding CreateTime,StringFormat=yyyy-MM-dd HH:mm:ss}" Header="创建时间" />
<DataGridTextColumn Width="auto" Binding="{Binding SendTime,StringFormat=yyyy-MM-dd HH:mm:ss}" Header="发送时间" />
<DataGridTextColumn Width="160" Binding="{Binding BatteryCode}" Header="电芯条码" />
<DataGridTextColumn Binding="{Binding Content}" Width="*" Header="发送信息" />
<DataGridTextColumn Binding="{Binding RecvContent}" Width="350" Header="接收信息"/>
<DataGridTextColumn Header="上传状态" Width="auto" Binding="{Binding SendFlag, Converter={StaticResource sendFlagConvertor}}"></DataGridTextColumn>
<DataGridTemplateColumn Header="上传勾选">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<CheckBox IsChecked="{Binding Path=IsCheck, UpdateSourceTrigger=PropertyChanged}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
</Grid>
</UserControl>

View File

@@ -0,0 +1,28 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace Cowain.Bake.UI.DataQuery.Views
{
/// <summary>
/// GetMesLog.xaml µÄ½»»¥Âß¼­
/// </summary>
public partial class GetMesLogView : UserControl
{
public GetMesLogView()
{
InitializeComponent();
}
}
}

View File

@@ -0,0 +1,67 @@
<UserControl x:Class="Cowain.Bake.UI.DataQuery.Views.IncomingCellInfoView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:bllConverter="clr-namespace:Cowain.Bake.BLL.Converter;assembly=Cowain.Bake.BLL"
xmlns:CommonConverter="clr-namespace:Cowain.Bake.Common.Converter;assembly=Cowain.Bake.Common"
xmlns:local="clr-namespace:Cowain.Bake.UI.DataQuery.Views"
mc:Ignorable="d"
xmlns:hc="https://handyorg.github.io/handycontrol"
xmlns:sys="clr-namespace:System;assembly=mscorlib"
d:DesignHeight="450" d:DesignWidth="800">
<UserControl.Resources>
<bllConverter:PalletVirtualIdConverter x:Key="CPalletCode"/>
<CommonConverter:BatteryStatusConvertor x:Key="CBatteryStatus"/>
<Style TargetType="{x:Type TextBlock}">
<Setter Property="FontSize" Value="15"/>
</Style>
</UserControl.Resources>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="60"/>
<RowDefinition/>
</Grid.RowDefinitions>
<Border Background="#EEE" Margin="4" CornerRadius="6" BorderThickness="1"/>
<StackPanel Orientation="Horizontal" Margin="2,10,10,10" HorizontalAlignment="Right" >
<TextBlock VerticalAlignment="Center" Margin="4">日期时间:</TextBlock>
<hc:DateTimePicker x:Name="StartTime" Text="{Binding StartDatetime,Mode=TwoWay}" Margin="10,5,0,0" Width="163"/>
<TextBlock VerticalAlignment="Center">-</TextBlock>
<hc:DateTimePicker x:Name="EndTime" Text="{Binding EndDatetime,Mode=TwoWay}" Width="163"></hc:DateTimePicker>
<TextBlock Text="电芯条码:" VerticalAlignment="Center" Margin="60,4,4,4"/>
<hc:TextBox Width="150" Height="30" Margin="0,0,10,0" Text="{Binding Code,Mode=TwoWay}"></hc:TextBox>
<Button Content="查询" Style="{StaticResource ButtonSuccess}" Margin="4" Width="100" Command="{Binding QueryCommand}"/>
<Button Content="导出" Style="{StaticResource ButtonPrimary}" Margin="4" Width="100" Command="{Binding ExportCommand}"/>
</StackPanel>
<DataGrid hc:DataGridAttach.CanUnselectAllWithBlankArea="True" HeadersVisibility="All" x:Name="dgvStation" Grid.Row="1"
CanUserSortColumns="False" SelectionMode="Single" Margin="4" IsReadOnly="True"
RowHeaderWidth="0" AutoGenerateColumns="False" ItemsSource="{Binding CellList,UpdateSourceTrigger=PropertyChanged}">
<DataGrid.Columns>
<DataGridTextColumn Width="auto" CanUserResize="False" Binding="{Binding Id}" Header="序号"/>
<DataGridTextColumn Width="auto" CanUserResize="False" Binding="{Binding BatteryCode}" Header="电芯条码"/>
<DataGridTextColumn Width="auto" CanUserResize="False" Binding="{Binding BatteryStatus,Converter={StaticResource CBatteryStatus}}" Header="电芯状态"/>
<DataGridTextColumn Width="auto" CanUserResize="False" Binding="{Binding PalletVirtualId ,Converter={StaticResource CPalletCode}}" Header="夹具条码"/>
<DataGridTextColumn Width="auto" CanUserResize="False" Binding="{Binding PositionX}" Header="夹具行号"/>
<DataGridTextColumn Width="auto" CanUserResize="False" Binding="{Binding PositionY}" Header="夹具列号"/>
<DataGridTextColumn Width="auto" Binding="{Binding ScanTime,StringFormat=yyyy-MM-dd HH:mm:ss}" Header="扫码时间" />
<DataGridTextColumn Width="auto" Binding="{Binding BindingTime,StringFormat=yyyy-MM-dd HH:mm:ss}" Header="绑定时间" />
<DataGridTextColumn Width="auto" Binding="{Binding UnbindingTime,StringFormat=yyyy-MM-dd HH:mm:ss}" Header="解绑时间" />
<DataGridTextColumn Width="auto" Binding="{Binding DummyFlag}" Header="假电芯" />
<DataGridTemplateColumn Header="操作" Width="80">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<StackPanel Grid.Column="4" VerticalAlignment="Center" HorizontalAlignment="Center" Orientation="Horizontal">
<TextBlock Margin="3,0" >
<Hyperlink Foreground="Red" Command="{Binding DataContext.DeleteCommand, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=DataGrid}}" CommandParameter="{Binding}">删除</Hyperlink>
</TextBlock>
</StackPanel>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
</Grid>
</UserControl>

View File

@@ -0,0 +1,28 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace Cowain.Bake.UI.DataQuery.Views
{
/// <summary>
/// IncomingCellInfoView.xaml 的交互逻辑
/// </summary>
public partial class IncomingCellInfoView : UserControl
{
public IncomingCellInfoView()
{
InitializeComponent();
}
}
}

View File

@@ -0,0 +1,60 @@
<UserControl x:Class="Cowain.Bake.UI.DataQuery.Views.NGCellInfoView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:Cowain.Bake.UI.DataQuery.Views"
mc:Ignorable="d"
xmlns:hc="https://handyorg.github.io/handycontrol"
xmlns:sys="clr-namespace:System;assembly=mscorlib"
d:DesignHeight="450" d:DesignWidth="800">
<UserControl.Resources>
<Style TargetType="{x:Type TextBlock}">
<Setter Property="FontSize" Value="15"/>
</Style>
</UserControl.Resources>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="60"/>
<RowDefinition/>
</Grid.RowDefinitions>
<Border Background="#EEE" Margin="4" CornerRadius="6" BorderThickness="1"/>
<StackPanel Orientation="Horizontal" Margin="2,10,10,10" HorizontalAlignment="Right" >
<TextBlock VerticalAlignment="Center" Margin="4">日期时间:</TextBlock>
<hc:DateTimePicker Height="30" x:Name="StartTime" Text="{Binding StartDatetime,Mode=TwoWay}" Width="163"></hc:DateTimePicker>
<TextBlock VerticalAlignment="Center">-</TextBlock>
<hc:DateTimePicker Height="30" x:Name="EndTime" Text="{Binding EndDatetime,Mode=TwoWay}" Width="163"></hc:DateTimePicker>
<TextBlock Text="电芯条码:" VerticalAlignment="Center" Margin="30,4,4,4"/>
<hc:TextBox Width="150" Height="30" Margin="0,0,10,0" Text="{Binding Code,Mode=TwoWay}"></hc:TextBox>
<TextBlock Text="托盘条码:" VerticalAlignment="Center" Margin="30,4,4,4"/>
<hc:TextBox Width="150" Height="30" Margin="0,0,10,0" Text="{Binding PalletCode,Mode=TwoWay}"></hc:TextBox>
<Button Content="查询" Style="{StaticResource ButtonSuccess}" Margin="4" Width="100" Command="{Binding QueryCommand}"/>
<Button Content="导出" Style="{StaticResource ButtonSuccess}" Margin="4" Width="100" Command="{Binding ExportCommand}"/>
</StackPanel>
<DataGrid hc:DataGridAttach.CanUnselectAllWithBlankArea="True" HeadersVisibility="All" x:Name="dgvStation" Grid.Row="1"
CanUserSortColumns="False" SelectionMode="Single" Margin="4" IsReadOnly="True"
RowHeaderWidth="0" AutoGenerateColumns="False" ItemsSource="{Binding CellList,UpdateSourceTrigger=PropertyChanged}">
<DataGrid.Columns>
<DataGridTextColumn Width="50" CanUserResize="False" Binding="{Binding Id}" Header="序号"/>
<DataGridTextColumn Width="auto" CanUserResize="False" Binding="{Binding BatteryCode}" Header="电芯条码"/>
<DataGridTextColumn Width="auto" CanUserResize="False" Binding="{Binding PalletCode}" Header="托盘条码"/>
<DataGridTextColumn Binding="{Binding Desc}" Width="auto" Header="描述"/>
<DataGridTextColumn Width="*" Binding="{Binding CreateTime,StringFormat=yyyy-MM-dd HH:mm:ss}" Header="报警时间" />
<DataGridTemplateColumn Header="操作" Width="80">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<StackPanel Grid.Column="4" VerticalAlignment="Center" HorizontalAlignment="Center" Orientation="Horizontal">
<TextBlock Margin="3,0" >
<Hyperlink Foreground="Red" Command="{Binding DataContext.DeleteCommand, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=DataGrid}}" CommandParameter="{Binding}">删除</Hyperlink>
</TextBlock>
</StackPanel>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
</Grid>
</UserControl>

View File

@@ -0,0 +1,28 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace Cowain.Bake.UI.DataQuery.Views
{
/// <summary>
/// NGCellInfoView.xaml 的交互逻辑
/// </summary>
public partial class NGCellInfoView : UserControl
{
public NGCellInfoView()
{
InitializeComponent();
}
}
}

View File

@@ -0,0 +1,72 @@
<UserControl x:Class="Cowain.Bake.UI.DataQuery.Views.PalletInfoView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:Cowain.Bake.UI.DataQuery.Views"
xmlns:sys="clr-namespace:System;assembly=mscorlib"
mc:Ignorable="d"
xmlns:hc="https://handyorg.github.io/handycontrol"
xmlns:convertor="clr-namespace:Cowain.Bake.BLL.Converter;assembly=Cowain.Bake.BLL"
xmlns:commonConvertor="clr-namespace:Cowain.Bake.Common.Converter;assembly=Cowain.Bake.Common"
d:DesignHeight="450" d:DesignWidth="800">
<UserControl.Resources>
<Style TargetType="{x:Type TextBlock}">
<Setter Property="FontSize" Value="15"/>
</Style>
<commonConvertor:DummyStatusConvertor x:Key="DummyStatusConvertor"/>
<commonConvertor:PalletStatusConvertor x:Key="PalletStatusConvertor"/>
<convertor:CavityInfoIdConverter x:Key="CavityInfoIdConverter"/>
</UserControl.Resources>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="60"/>
<RowDefinition/>
</Grid.RowDefinitions>
<Border Background="#EEE" Margin="4" CornerRadius="6" BorderThickness="1"/>
<StackPanel Orientation="Horizontal" Margin="2,10,10,10" HorizontalAlignment="Right" >
<TextBlock VerticalAlignment="Center" Margin="4">日期时间:</TextBlock>
<hc:DateTimePicker Height="30" x:Name="StartTime" Text="{Binding StartDatetime,Mode=TwoWay}" Width="163"></hc:DateTimePicker>
<TextBlock VerticalAlignment="Center">-</TextBlock>
<hc:DateTimePicker Height="30" x:Name="EndTime" Text="{Binding EndDatetime,Mode=TwoWay}" Width="163"></hc:DateTimePicker>
<TextBlock Text="托盘条码:" VerticalAlignment="Center" Margin="4"/>
<hc:TextBox Width="150" Height="30" Margin="0,0,10,0" Text="{Binding Code,Mode=TwoWay}"></hc:TextBox>
<Button Content="查询" Style="{StaticResource ButtonSuccess}" Margin="4" Width="100" Command="{Binding QueryCommand}"/>
<Button Content="导出" Style="{StaticResource ButtonPrimary}" Margin="4" Width="100" Command="{Binding ExportCommand}"/>
</StackPanel>
<DataGrid hc:DataGridAttach.CanUnselectAllWithBlankArea="True" HeadersVisibility="All" x:Name="dgvStation" Grid.Row="1"
CanUserSortColumns="False" SelectionMode="Single" Margin="4" IsReadOnly="True"
RowHeaderWidth="0" AutoGenerateColumns="False" ItemsSource="{Binding PalletList,UpdateSourceTrigger=PropertyChanged}">
<DataGrid.Columns>
<DataGridTextColumn Width="auto" CanUserResize="False" Binding="{Binding Id}" Header="序号"/>
<DataGridTextColumn Header="托盘条码" Width="auto" Binding="{Binding PalletCode}"/>
<DataGridTextColumn Header="托盘状态" Width="100" Binding="{Binding PalletStatus,Converter={StaticResource PalletStatusConvertor}}" />
<!--<DataGridTextColumn Header="带水状态" Width="100" Binding="{Binding DummyStatus,Converter={StaticResource DummyStatusConvertor}}"/>-->
<DataGridTextColumn Header="电芯数量" Width="80" Binding="{Binding BatteryQty}"/>
<DataGridTextColumn Header="烘烤次数" Width="80" Binding="{Binding BakingCount}"/>
<DataGridTextColumn Header="烘烤位置" Width="150" Binding="{Binding BakingPosition,Converter={StaticResource CavityInfoIdConverter}}"/>
<DataGridTextColumn Header="扫码时间" Width="auto" Binding="{Binding ScanTime,StringFormat='{}{0:yyyy-MM-dd HH:mm:ss}'}"/>
<DataGridTextColumn Header="上料完成时间" Width="auto" Binding="{Binding LoadingOverTime,StringFormat='{}{0:yyyy-MM-dd HH:mm:ss}'}"/>
<DataGridTextColumn Header="入炉时间" Width="auto" Binding="{Binding InStoveTime,StringFormat='{}{0:yyyy-MM-dd HH:mm:ss}'}"/>
<DataGridTextColumn Header="开始烘烤时间" Width="auto" Binding="{Binding BakingBeginTime,StringFormat='{}{0:yyyy-MM-dd HH:mm:ss}'}"/>
<DataGridTextColumn Header="烘烤完成时间" Width="auto" Binding="{Binding BakingOverTime,StringFormat='{}{0:yyyy-MM-dd HH:mm:ss}'}"/>
<DataGridTextColumn Header="出炉时间" Width="150" Binding="{Binding OutStoveTime,StringFormat='{}{0:yyyy-MM-dd HH:mm:ss}'}"/>
<DataGridTextColumn Header="工单号" Width="auto" Binding="{Binding JobNum}"/>
<DataGridTemplateColumn Header="操作" Width="80">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<StackPanel Grid.Column="4" VerticalAlignment="Center" HorizontalAlignment="Center" Orientation="Horizontal">
<TextBlock Margin="3,0" >
<Hyperlink Foreground="Red" Command="{Binding DataContext.DeleteCommand, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=DataGrid}}" CommandParameter="{Binding}">删除</Hyperlink>
</TextBlock>
</StackPanel>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
</Grid>
</UserControl>

View File

@@ -0,0 +1,28 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace Cowain.Bake.UI.DataQuery.Views
{
/// <summary>
/// PalletInfoView.xaml 的交互逻辑
/// </summary>
public partial class PalletInfoView : UserControl
{
public PalletInfoView()
{
InitializeComponent();
}
}
}

View File

@@ -0,0 +1,42 @@
<UserControl x:Class="Cowain.Bake.UI.DataQuery.Views.ProductionsInfoView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:Cowain.Bake.UI.DataQuery.Views"
mc:Ignorable="d"
xmlns:hc="https://handyorg.github.io/handycontrol"
xmlns:sys="clr-namespace:System;assembly=mscorlib"
d:DesignHeight="450" d:DesignWidth="800">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="60"/>
<RowDefinition/>
</Grid.RowDefinitions>
<Border Background="#EEE" Margin="4" CornerRadius="6" BorderThickness="1"/>
<StackPanel Orientation="Horizontal" Margin="2,10,10,10" HorizontalAlignment="Right" >
<TextBlock VerticalAlignment="Center" Margin="4">时间:</TextBlock>
<hc:DateTimePicker Height="30" Width="170" Text="{Binding StartDateTime,Mode=OneWayToSource}" DateTimeFormat="yyyy-MM-dd"></hc:DateTimePicker>
<TextBlock VerticalAlignment="Center">-</TextBlock>
<hc:DateTimePicker Height="30" Width="170" Text="{Binding EndDateTime,Mode=OneWayToSource}" DateTimeFormat="yyyy-MM-dd"></hc:DateTimePicker>
<Button Content="查询" Style="{StaticResource ButtonSuccess}" Margin="4" Width="100" Command="{Binding QueryCommand}"/>
</StackPanel>
<DataGrid hc:DataGridAttach.CanUnselectAllWithBlankArea="True" HeadersVisibility="All" x:Name="dgvStation" Grid.Row="1"
CanUserSortColumns="False" SelectionMode="Single" Margin="4" IsReadOnly="True"
RowHeaderWidth="0" AutoGenerateColumns="False" ItemsSource="{Binding ProductionList,UpdateSourceTrigger=PropertyChanged}">
<DataGrid.Columns>
<DataGridTextColumn Header="日期" Width="100" Binding="{Binding ProductionDate}"/>
<DataGridTextColumn Header="白班产量" Width="120" Binding="{Binding DayOutput}"/>
<DataGridTextColumn Header="白班投入" Width="120" Binding="{Binding DayInput}"/>
<DataGridTextColumn Header="白班NG" Width="120" Binding="{Binding DayNG}"/>
<DataGridTextColumn Header="白班合格率(%)" Width="120" Binding="{Binding DayNGRate}"/>
<DataGridTextColumn Header="晚班产量" Width="120" Binding="{Binding NightOutput}"/>
<DataGridTextColumn Header="晚班投入" Width="120" Binding="{Binding NightInput}"/>
<DataGridTextColumn Header="晚班NG" Width="120" Binding="{Binding NightNG}"/>
<DataGridTextColumn Header="晚班合格率(%)" Width="120" Binding="{Binding NightNGRate}"/>
<DataGridTextColumn Header="白班时间段" Width="300" Binding="{Binding DayWorkTime}"/>
<DataGridTextColumn Header="晚班时间段" Width="300" Binding="{Binding NightWorkTime}"/>
</DataGrid.Columns>
</DataGrid>
</Grid>
</UserControl>

View File

@@ -0,0 +1,28 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace Cowain.Bake.UI.DataQuery.Views
{
/// <summary>
/// ProductionsInfoView.xaml 的交互逻辑
/// </summary>
public partial class ProductionsInfoView : UserControl
{
public ProductionsInfoView()
{
InitializeComponent();
}
}
}