Commit 98260241 authored by 潘栩锋's avatar 潘栩锋 🚴

修改 查找界面,查找是通过储存过程获取结果。 可以只查找到异常数据

parent e5609c92
......@@ -68,30 +68,265 @@ namespace WSDDBBrowser.Core
/// <param name="endtime"></param>
/// <param name="orderNo"></param>
/// <returns></returns>
public List<Process> GetProcessList(int stepNo, int machineNo, DateTime starttime, DateTime endtime, string orderNo)
public List<Process> GetProcessList(int? stepNo, int? machineNo, DateTime starttime, DateTime endtime, string orderNo, bool isJustSearchError)
{
List<g_sbProcess> sbProcesses;
List<g_tgProcess> tgProcesses;
List<TechInfo> techInfos;
try
{
if (string.IsNullOrEmpty(orderNo))
orderNo = "";
sbProcesses = (from p in dBModel.sbProcesses
where
p.nJb == stepNo && p.nJt == machineNo &&
(((p.tBeginTime > starttime) && (p.tBeginTime < endtime)) ||
((p.tEndTime > starttime) && (p.tEndTime < endtime)))
&& p.cOrderNo.Contains(orderNo) && p.bIsUpFin == true
select p).ToList();
//sbProcesses = (from p in dBModel.sbProcesses
// where
// p.nJb == stepNo && p.nJt == machineNo &&
// (((p.tBeginTime > starttime) && (p.tBeginTime < endtime)) ||
// ((p.tEndTime > starttime) && (p.tEndTime < endtime)))
// && p.cOrderNo.Contains(orderNo) && p.bIsUpFin == true
// select p).ToList();
dBModel.Database.Log = new Action<string>((str) =>
{
Console.WriteLine(str);
});
DataSet dataset = new DataSet();
var connection = dBModel.Database.Connection as SqlConnection;
var command = connection.CreateCommand();
connection.Open();
command.CommandText =
$"exec g_found_iserr " +
$"@ddbh = '{orderNo}'," +
$"@njb = {stepNo}," +
$"@njt = {machineNo}," +
$"@timestar = '{starttime:yyyy-MM-dd}'," +
$"@timestop = '{endtime:yyyy-MM-dd}'," +
$"@iserr = {(isJustSearchError ? 1 : 0)}," +
$"@key = 1";
SqlDataAdapter adapter = new SqlDataAdapter(command);
//--------------------------------
//返回2个表,
//表1:process
//第2:工艺明细
adapter.Fill(dataset);
if (dataset.Tables.Count != 2)
{
throw new Exception("g_found_iserr 返回表数量不为2");
}
sbProcesses = new List<g_sbProcess>();
var process_table = dataset.Tables[0];
foreach (DataRow row in process_table.Rows)
{
g_sbProcess sbProcess = new g_sbProcess()
{
ide = (int)row["ide"],
nJb = (int)row["nJb"],
nJt = (int)row["nJt"],
cOrderNo = (row["cOrderNo"] as string).Trim(),
cProjectNo = (row["cProjectNo"] as string).Trim(),
cTechnologyNo = (row["cTechnologyNo"] as string).Trim(),
tBeginTime = row["tBeginTime"] as DateTime?,
tEndTime = row["tEndTime"] as DateTime?,
nTotalLen = row["nTotalLen"] as decimal?,
nId = (int)row["nId"]
};
sbProcesses.Add(sbProcess);
}
techInfos = new List<TechInfo>();
var techInfo_table = dataset.Tables[1];
foreach (DataRow row in techInfo_table.Rows)
{
TechInfo techInfo = new TechInfo();
techInfo.nProcessId = (int)row["nProcessId"];
techInfo.DeviceId = (row["nDeviceId"] as string).Trim();
techInfo.DeviceName = (row["cDeviceName"] as string).Trim();
techInfo.Target = (double)row["nTarget"];
techInfo.Tolerance = (double)row["nTolerance"];
techInfo.Avg = (double)row["nAvg"];
techInfo.IsError = (bool)row["bIsError"];
techInfos.Add(techInfo);
}
//tgProcesses = (from p in dBModel.tgProcesses
// where
// p.nJb == stepNo && p.nJt == machineNo &&
// (((p.tBeginTime > starttime) && (p.tBeginTime < endtime)) ||
// ((p.tEndTime > starttime) && (p.tEndTime < endtime)))
// && p.cOrderNo.Contains(orderNo) && p.bIsUpFin == true
// select p).ToList();
var _tgProcesses = dBModel.Database.SqlQuery<g_tgProcess>(
"SELECT * FROM dbo.g_tgProcess" +
" WHERE" +
" nJb = ISNULL(@njb, nJb) and nJt = ISNULL(@njt, nJt)" +
" AND (((tBeginTime > @starttime) AND (tBeginTime < @endtime))" +
" OR ((tEndTime > @starttime) AND (tEndTime < @endtime)))" +
" AND cOrderNo LIKE '%'+@orderNo+'%'" +
" AND bIsUpFin = true",
new SqlParameter() { ParameterName = "nJb", Value = stepNo },
new SqlParameter() { ParameterName = "nJt", Value = machineNo },
new SqlParameter() { ParameterName = "starttime", Value = starttime },
new SqlParameter() { ParameterName = "endtime", Value = endtime },
new SqlParameter() { ParameterName = "orderNo", Value = orderNo }
);
tgProcesses = _tgProcesses.ToList();
connection.Close();
tgProcesses = (from p in dBModel.tgProcesses
}
catch (Exception e)
{
throw e;
}
List<Process> Processes = new List<Process>();
List<int> tgide = new List<int>();
foreach (var sbProcess in sbProcesses)
{
Process process = new Process();
process.HasSBData = true;
process.SBID = sbProcess.ide;
process.MachineNo = (int)sbProcess.nJt;
process.StepNo = (int)sbProcess.nJb;
process.OrderNo = sbProcess.cOrderNo;
process.ProjectNo = sbProcess.cProjectNo;
process.TechnologyNo = sbProcess.cTechnologyNo;
process.BeginTime = (DateTime)sbProcess.tBeginTime;
process.EndTime = (DateTime)sbProcess.tEndTime;
process.TotalLen = (double)sbProcess.nTotalLen;
process.TechInfos = techInfos.FindAll(ti => ti.nProcessId == sbProcess.ide);
//找测厚数据 时间段在 温度时间内的
process.TGID = new List<int>();
//process.TGID.AddRange(
// from p in tgProcesses
// where
// IsContains(
// process.BeginTime, process.EndTime,
// (DateTime)p.tBeginTime, (DateTime)p.tEndTime,
// TimeSpan.FromMinutes(5)
// )
// select p.ide
//);
process.TGID.AddRange(
from p in tgProcesses
where
p.nJb == stepNo && p.nJt == machineNo &&
(((p.tBeginTime > starttime) && (p.tBeginTime < endtime)) ||
((p.tEndTime > starttime) && (p.tEndTime < endtime)))
&& p.cOrderNo.Contains(orderNo) && p.bIsUpFin == true
select p).ToList();
p.nMasterId == sbProcess.nId
select p.ide
);
if (process.TGID.Count() > 0)
process.HasTGData = true;
else
process.HasTGData = false;
tgide.AddRange(process.TGID);
Processes.Add(process);
}
//把测厚仪剩下的添加进去
var tgProcesses2 = tgProcesses.FindAll(p => !tgide.Contains(p.ide));
foreach (var tgProcess in tgProcesses2)
{
Process process = new Process();
process.TGID = new List<int>();
process.TGID.Add(tgProcess.ide);
process.HasTGData = true;
process.HasSBData = false;
process.MachineNo = (int)tgProcess.nJt;
process.StepNo = (int)tgProcess.nJb;
process.OrderNo = tgProcess.cOrderNo;
process.ProjectNo = tgProcess.cProjectNo;
process.TechnologyNo = tgProcess.cTechnologyNo;
process.BeginTime = (DateTime)tgProcess.tBeginTime;
process.EndTime = (DateTime)tgProcess.tEndTime;
process.TotalLen = (double)tgProcess.nTotalLen;
Processes.Add(process);
}
return Processes;
}
/// <summary>
/// 通过订单号,时间查询
/// </summary>
/// <param name="starttime"></param>
/// <param name="endtime"></param>
/// <param name="orderNo"></param>
/// <returns></returns>
public List<Process> GetProcessList_Debug(int? stepNo, int? machineNo, DateTime starttime, DateTime endtime, string orderNo, bool isJustSearchError)
{
List<g_sbProcess> sbProcesses;
List<g_tgProcess> tgProcesses;
List<TechInfo> techInfos;
try
{
if (string.IsNullOrEmpty(orderNo))
orderNo = "";
tgProcesses = new List<g_tgProcess>();
sbProcesses = new List<g_sbProcess>();
for (int i = 0; i < 3; i++) {
g_sbProcess sbProcess = new g_sbProcess();
sbProcess.ide = i;
sbProcess.nJb = 10;
sbProcess.nJt = 3;
sbProcess.cOrderNo = "1231021";
sbProcess.cProjectNo = "00-10012-101";
sbProcess.cTechnologyNo = "HAHAH";
sbProcess.tBeginTime = DateTime.Now - TimeSpan.FromDays(1);
sbProcess.tEndTime = DateTime.Now;
sbProcess.nTotalLen = 100;
sbProcesses.Add(sbProcess);
}
techInfos = new List<TechInfo>();
Random r = new Random();
for (int i = 0; i < 10; i++)
{
TechInfo techInfo = new TechInfo();
techInfo.nProcessId = 0;
techInfo.DeviceId = i.ToString("00");
techInfo.DeviceName = "设备" + i.ToString("00");
techInfo.Target = 100;
techInfo.Tolerance = 5;
techInfo.Avg = r.NextDouble() * 10 - 5 + techInfo.Target;
techInfo.IsError = Math.Abs(techInfo.Target - techInfo.Avg) > techInfo.Tolerance;
techInfos.Add(techInfo);
}
for (int i = 0; i < 5; i++)
{
TechInfo techInfo = new TechInfo();
techInfo.nProcessId = 1;
techInfo.DeviceId = i.ToString("00");
techInfo.DeviceName = "设备" + i.ToString("00");
techInfo.Target = 100;
techInfo.Tolerance = 5;
techInfo.Avg = r.NextDouble() * 10 - 5 + techInfo.Target;
techInfo.IsError = Math.Abs(techInfo.Target - techInfo.Avg) > techInfo.Tolerance;
techInfos.Add(techInfo);
}
}
catch (Exception e)
{
......@@ -105,14 +340,15 @@ namespace WSDDBBrowser.Core
Process process = new Process();
process.HasSBData = true;
process.SBID = sbProcess.ide;
process.MachineNo = machineNo;
process.StepNo = stepNo;
process.MachineNo = (int)sbProcess.nJt;
process.StepNo = (int)sbProcess.nJb;
process.OrderNo = sbProcess.cOrderNo;
process.ProjectNo = sbProcess.cProjectNo;
process.TechnologyNo = sbProcess.cTechnologyNo;
process.BeginTime = (DateTime)sbProcess.tBeginTime;
process.EndTime = (DateTime)sbProcess.tEndTime;
process.TotalLen = (double)sbProcess.nTotalLen;
process.TechInfos = techInfos.FindAll(ti => ti.nProcessId == sbProcess.ide);
//找测厚数据 时间段在 温度时间内的
process.TGID = new List<int>();
......@@ -139,6 +375,8 @@ namespace WSDDBBrowser.Core
tgide.AddRange(process.TGID);
Processes.Add(process);
}
......@@ -152,8 +390,8 @@ namespace WSDDBBrowser.Core
process.HasTGData = true;
process.HasSBData = false;
process.MachineNo = machineNo;
process.StepNo = stepNo;
process.MachineNo = (int)tgProcess.nJt;
process.StepNo = (int)tgProcess.nJb;
process.OrderNo = tgProcess.cOrderNo;
process.ProjectNo = tgProcess.cProjectNo;
process.TechnologyNo = tgProcess.cTechnologyNo;
......@@ -170,6 +408,16 @@ namespace WSDDBBrowser.Core
}
bool IsStepNoSame(int? nJb, string stepNo)
{
if (string.IsNullOrEmpty(stepNo))
return true;
else if (nJb == null)
return false;
else
return nJb.ToString() == stepNo;
}
public TGProcessPack GetTGProcessPack(int ide)
{
TGProcessPack processPack = new TGProcessPack();
......@@ -273,5 +521,21 @@ namespace WSDDBBrowser.Core
public DateTime EndTime { get; set; }
public double TotalLen { get; set; }
public List<TechInfo> TechInfos { get; set; }
}
public class TechInfo
{
public int nProcessId { get; set; }
public string DeviceId { get; set; }
public string DeviceName { get; set; }
public double Target { get; set; }
public double Tolerance { get; set; }
public double Avg { get; set; }
public bool IsError { get; set; }
}
}
......@@ -51,6 +51,12 @@
<TextBlock Style="{StaticResource TitleStyle}" Text="工序号"/>
<TextBox Style="{StaticResource ValueStyle}" Text="{Binding StepNo}"/>
</StackPanel>
<controls:ToggleSwitch Header="只查找超出标准工艺"
Margin="{StaticResource ControlMargin}"
IsChecked="{Binding IsJustSelectError}"
OffLabel="否"
OnLabel="是"
Style="{StaticResource MahApps.Metro.Styles.ToggleSwitch.Win10}" />
</StackPanel>
<StackPanel Orientation="Horizontal">
......@@ -78,9 +84,10 @@
controls:TextBoxHelper.Watermark="输入订单号查找"
Text="{Binding OrderNoFilter}">
<TextBox.InputBindings>
<KeyBinding Key="Return"
Command="{Binding ButtonSearch, Mode=OneWay}"
CommandParameter="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType=TextBox}, Path=Text, Mode=OneWay}" />
<!--<KeyBinding Key="Return"
Command="{Binding SearchCmd}"
CommandParameter="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType=TextBox}, Path=Text, Mode=OneWay}" />-->
<KeyBinding Key="Return" Command="{Binding SearchCmd}"/>
</TextBox.InputBindings>
<TextBox.Style>
<Style BasedOn="{StaticResource SearchMetroTextBox}" TargetType="{x:Type TextBox}">
......@@ -94,7 +101,7 @@
</TextBox.Style>
</TextBox>
</StackPanel>
<Button Style="{StaticResource AccentCircleButtonStyle}" Margin="5,5,5,5" Grid.Column="1" VerticalAlignment="Bottom" Command="{Binding ButtonSearch, Mode=OneWay}">
<Button Style="{StaticResource AccentCircleButtonStyle}" Margin="5,5,5,5" Grid.Column="1" VerticalAlignment="Bottom" Command="{Binding SearchCmd}">
<iconPacks:Material Width="25" Height="25"
Kind="Magnify" />
</Button>
......@@ -102,7 +109,7 @@
<StackPanel Grid.Column="1" Orientation="Horizontal" Margin="{StaticResource ControlMargin}" HorizontalAlignment="Right">
<Button Style="{StaticResource AccentCircleButtonStyle}" Margin="5,5,5,5" VerticalAlignment="Bottom" Click="ButtonOK_Click">
<Button Style="{StaticResource AccentCircleButtonStyle}" Margin="5,5,5,5" VerticalAlignment="Bottom" Command="{Binding OkCmd}">
<iconPacks:PackIconFontAwesome Width="40" Height="40"
Kind="CheckCircleSolid" />
</Button>
......@@ -126,6 +133,8 @@
</Style>
</DataGrid.Style>
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding MachineNo}" Header="机台号"/>
<DataGridTextColumn Binding="{Binding StepNo}" Header="工序号"/>
<DataGridTextColumn Binding="{Binding OrderNo}" Header="订单号"/>
<DataGridTextColumn Binding="{Binding ProjectNo}" Header="项目号"/>
<DataGridTextColumn Binding="{Binding TechnologyNo}" Header="工艺号"/>
......@@ -134,6 +143,14 @@
<DataGridTextColumn Binding="{Binding TotalLen}" Header="检测长度"/>
<DataGridTextColumn Binding="{Binding HasSBData}" Header="温度数据"/>
<DataGridTextColumn Binding="{Binding HasTGData}" Header="厚度数据"/>
<DataGridTemplateColumn Header="温度异常" >
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Button Content="{Binding TechInfos.Count}" Command="{Binding ElementName=dgridProcesses,Path=DataContext.ShowTechInfosCmd}" CommandParameter="{Binding TechInfos}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
......
using MahApps.Metro.Controls.Dialogs;
using GalaSoft.MvvmLight.Command;
using MahApps.Metro.Controls.Dialogs;
using OfficeOpenXml.FormulaParsing.Excel.Functions.Information;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
......@@ -34,65 +36,10 @@ namespace WSDDBBrowser
public void Init()
{
viewModel = new PgSelectViewModel();
viewModel.Init();
this.DataContext = viewModel;
}
private async void ButtonOK_Click(object sender, RoutedEventArgs e)
{
if (dgridProcesses.SelectedItems.Count == 0)
{
await App.MetroWindow.ShowMessageAsync("加载异常",
$"没有选择任何一个记录,也许忘记按 【搜索】 了!!");
return;
}
//开始加载
var controller = await App.MetroWindow.ShowProgressAsync("请等待...", "开始加载数据",
settings: new MetroDialogSettings()
{
NegativeButtonText = "停止",
AnimateShow = false,
AnimateHide = false,
});
//controller.SetCancelable(true);
controller.SetIndeterminate();
DBViewerModel.Instance.CurrProcess = null;
DBViewerModel.Instance.CurrProcess = dgridProcesses.SelectedItem as Process;
bool ret = DBViewerModel.Instance.GetProcessPacks();
if (!ret)
{
//获取出错
await controller.CloseAsync();
await App.MetroWindow.ShowMessageAsync("加载出错", "数据异常,请检测数据库");
return;
}
viewModel.Init(DBViewerModel.Instance, DBHelper.Instance,
dgridProcesses, NavigationService);
await controller.CloseAsync();
string msg = "";
if (DBViewerModel.Instance.CurrProcess.HasTGData)
{
int cnt = DBViewerModel.Instance.ScanDataItems.Sum(item => item.MixValues.Count());
msg += $"厚度数据 {cnt}幅";
}
if (DBViewerModel.Instance.CurrProcess.HasSBData)
{
int cnt = DBViewerModel.Instance.SBProcessPack.Records.Count();
msg += $"温控数据 {cnt}个点";
}
//加载成功
await App.MetroWindow.ShowMessageAsync("加载成功", msg);
this.NavigationService.GoBack();
this.NavigationService.RemoveBackEntry();
this.DataContext = viewModel;
}
private void ButtonBack_Click(object sender, RoutedEventArgs e)
......@@ -114,12 +61,12 @@ namespace WSDDBBrowser
/// <summary>
/// 机台号
/// </summary>
public int MachineNo { get; set; }
public int? MachineNo { get; set; }
/// <summary>
/// 工序号
/// </summary>
public int StepNo { get; set; }
public int? StepNo { get; set; }
/// <summary>
/// 开始日期
......@@ -134,34 +81,62 @@ namespace WSDDBBrowser
/// </summary>
public string OrderNoFilter { get; set; }
/// <summary>
/// 只查找超出标准工艺
/// </summary>
public bool IsJustSelectError { get; set; }
/// <summary>
/// 生产列表
/// </summary>
public ObservableCollection<Process> Processes { get; } = new ObservableCollection<Process>();
#region Command
public RelayCommand SearchCmd { get; }
public RelayCommand OkCmd { get; }
public RelayCommand<List<TechInfo>> ShowTechInfosCmd { get; }
#endregion
DBViewerModel dbViewerModel;
DBHelper dbHelper;
DataGrid dataGrid;
NavigationService navigationService;
public PgSelectViewModel()
{
SearchCmd = new RelayCommand(Search);
OkCmd = new RelayCommand(Ok);
ShowTechInfosCmd = new RelayCommand<List<TechInfo>>(ShowTechInfos);
}
public void Init()
public void Init(DBViewerModel dbVm, DBHelper dbHelper,
DataGrid dataGrid, NavigationService navigationService)
{
this.dbViewerModel = dbVm;
this.dbHelper = dbHelper;
this.dataGrid = dataGrid;
this.navigationService = navigationService;
BeginDate = DateTime.Now.AddDays(-1);
EndDate = DateTime.Now;
StepNo = DBViewerModel.Instance.StepNo;
MachineNo = DBViewerModel.Instance.MachineNo;
MachineNo = this.dbViewerModel.MachineNo;
StepNo = this.dbViewerModel.StepNo;
DBInit();
}
void DBInit()
{
if (!DBHelper.Instance.Init(
DBViewerModel.Instance.ServerIP,
DBViewerModel.Instance.ServerUser,
DBViewerModel.Instance.ServerPw))
if (!dbHelper.Init(
dbViewerModel.ServerIP,
dbViewerModel.ServerUser,
dbViewerModel.ServerPw))
{
DBInitResult = DBHelper.Instance.ErrorMsg;
DBInitResult = dbHelper.ErrorMsg;
}
else
{
......@@ -170,31 +145,37 @@ namespace WSDDBBrowser
}
private ICommand buttonSearch;
public ICommand ButtonSearch
private async void Search()
{
get
{
return this.buttonSearch ?? (this.buttonSearch = new ClickCommand( async ()=> {
var list = DBHelper.Instance.GetProcessList(StepNo, MachineNo, BeginDate, EndDate, OrderNoFilter);
var list = dbHelper.GetProcessList(StepNo, MachineNo, BeginDate, EndDate, OrderNoFilter, IsJustSelectError);
//var list = dbHelper.GetProcessList_Debug(StepNo, MachineNo, BeginDate, EndDate, OrderNoFilter, IsJustSelectError);
Processes.Clear();
foreach (var p in list)
{
Processes.Add(p);
}
if (list.Count() > 0)
{
if (StepNo != DBViewerModel.Instance.StepNo || MachineNo != DBViewerModel.Instance.MachineNo)
if (StepNo != dbViewerModel.StepNo ||
MachineNo != dbViewerModel.MachineNo )
{
bool isChanged = false;
if (StepNo!=null)
{
DBViewerModel.Instance.StepNo = StepNo;
DBViewerModel.Instance.MachineNo = MachineNo;
DBViewerModel.Instance.Save();
dbViewerModel.StepNo = (int)StepNo;
isChanged = true;
}
if (MachineNo!=null)
{
dbViewerModel.MachineNo = (int)MachineNo;
isChanged = true;
}
if(isChanged)
dbViewerModel.Save();
}
}
if (Processes.Count > 0)
......@@ -206,8 +187,69 @@ namespace WSDDBBrowser
{
await App.MetroWindow.ShowMessageAsync("加载失败", $"不能找到任何记录");
}
}));
}
private async void Ok()
{
if (dataGrid.SelectedItems.Count == 0)
{
await App.MetroWindow.ShowMessageAsync("加载异常",
$"没有选择任何一个记录,也许忘记按 【搜索】 了!!");
return;
}
//开始加载
var controller = await App.MetroWindow.ShowProgressAsync("请等待...", "开始加载数据",
settings: new MetroDialogSettings()
{
NegativeButtonText = "停止",
AnimateShow = false,
AnimateHide = false,
});
//controller.SetCancelable(true);
controller.SetIndeterminate();
dbViewerModel.CurrProcess = null;
dbViewerModel.CurrProcess = dataGrid.SelectedItem as Process;
bool ret = dbViewerModel.GetProcessPacks();
if (!ret)
{
//获取出错
await controller.CloseAsync();
await App.MetroWindow.ShowMessageAsync("加载出错", "数据异常,请检测数据库");
return;
}
await controller.CloseAsync();
string msg = "";
if (dbViewerModel.CurrProcess.HasTGData)
{
int cnt = dbViewerModel.ScanDataItems.Sum(item => item.MixValues.Count());
msg += $"厚度数据 {cnt}幅";
}
if (dbViewerModel.CurrProcess.HasSBData)
{
int cnt = DBViewerModel.Instance.SBProcessPack.Records.Count();
msg += $"温控数据 {cnt}个点";
}
//加载成功
await App.MetroWindow.ShowMessageAsync("加载成功", msg);
navigationService.GoBack();
navigationService.RemoveBackEntry();
}
private async void ShowTechInfos(List<TechInfo> techInfos)
{
TechInfoDialog techInfoDialog = new TechInfoDialog();
await techInfoDialog.Show(techInfos);
}
}
......
<dialog:CustomDialog x:Class="WSDDBBrowser.TechInfoDialog"
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:WSDDBBrowser"
mc:Ignorable="d"
xmlns:controls="http://metro.mahapps.com/winfx/xaml/controls"
xmlns:dialog="clr-namespace:MahApps.Metro.Controls.Dialogs;assembly=MahApps.Metro"
xmlns:iconPacks="http://metro.mahapps.com/winfx/xaml/iconpacks"
d:DesignHeight="450" d:DesignWidth="800">
<Grid>
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition Height="auto"/>
</Grid.RowDefinitions>
<DataGrid x:Name="dataGrid" AutoGenerateColumns="False" IsReadOnly="True" ItemsSource="{Binding TechInfos}"
RowStyle="{StaticResource MetroDataGridRow}"
>
<DataGrid.Style>
<Style BasedOn="{StaticResource MetroDataGrid}" TargetType="{x:Type DataGrid}">
<Setter Property="AlternatingRowBackground" Value="{DynamicResource GrayBrush10}" />
</Style>
</DataGrid.Style>
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding DeviceId}" Header="设备编号"/>
<DataGridTextColumn Binding="{Binding DeviceName}" Header="设备名称"/>
<DataGridTextColumn Binding="{Binding TechnologyNo}" Header="工艺号"/>
<DataGridTextColumn Binding="{Binding Target,StringFormat={}{0:F1}}" Header="目标值"/>
<DataGridTextColumn Binding="{Binding Tolerance,StringFormat={}{0:F1}}" Header="公差"/>
<DataGridTextColumn Binding="{Binding Avg,StringFormat={}{0:F1}}" Header="平均值"/>
</DataGrid.Columns>
</DataGrid>
<StackPanel Orientation="Horizontal" HorizontalAlignment="Right" Margin="0,20" Grid.Row="1">
<StackPanel.Resources>
<Style TargetType="Button" BasedOn="{StaticResource AccentedSquareButtonStyle}">
<Setter Property="FontSize" Value="15"/>
<Setter Property="Width" Value="100"/>
<Setter Property="Margin" Value="5"/>
</Style>
</StackPanel.Resources>
<Button Content="确定" Click="ButtonOK_Click" />
</StackPanel>
</Grid>
</dialog:CustomDialog>
using MahApps.Metro.Controls.Dialogs;
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.Shapes;
using WSDDBBrowser.Core;
namespace WSDDBBrowser
{
/// <summary>
/// TechInfoDialog.xaml 的交互逻辑
/// </summary>
public partial class TechInfoDialog : CustomDialog
{
System.Threading.CancellationTokenSource cancellationTokenSource;
public TechInfoDialog()
{
InitializeComponent();
}
public async Task Show(List<TechInfo> techInfos)
{
dataGrid.ItemsSource = techInfos;
cancellationTokenSource = new System.Threading.CancellationTokenSource();
await App.MetroWindow.ShowMetroDialogAsync(this, settings: new MetroDialogSettings() { AnimateHide = true });
try
{
await Task.Delay(-1, cancellationTokenSource.Token);
}
catch (Exception e)
{
}
}
private async void ButtonOK_Click(object sender, RoutedEventArgs e)
{
await App.MetroWindow.HideMetroDialogAsync(this, settings: new MetroDialogSettings() { AnimateHide = true });
cancellationTokenSource.Cancel();
}
}
}
......@@ -121,6 +121,9 @@
<Compile Include="PgChartView.xaml.cs">
<DependentUpon>PgChartView.xaml</DependentUpon>
</Compile>
<Compile Include="TechInfoDialog.xaml.cs">
<DependentUpon>TechInfoDialog.xaml</DependentUpon>
</Compile>
<Compile Include="Themes\Styles.cs" />
<Page Include="Chart\ColumnRangeScanGraph.xaml">
<SubType>Designer</SubType>
......@@ -182,6 +185,10 @@
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="TechInfoDialog.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="Themes\CustomTabControl.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
......@@ -262,6 +269,9 @@
<PackageReference Include="MahApps.Metro.IconPacks">
<Version>3.0.0-alpha0146</Version>
</PackageReference>
<PackageReference Include="MvvmLight">
<Version>5.4.1.1</Version>
</PackageReference>
<PackageReference Include="Newtonsoft.Json">
<Version>12.0.2</Version>
</PackageReference>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment