Explorar el Código

增加读取plc生产ct,修改压缩图片质量,修改保存图片路径,修改界面显示

KWD hace 3 meses
padre
commit
1744ff72b8

+ 51 - 46
TeamAAS-VM/Core/Management.cs

@@ -169,6 +169,16 @@ namespace TeamAAS_VP.Core
             set { SetProperty(ref _CTtime, value); }
         }
 
+        private double _CTtime2;
+        /// <summary>
+        /// ct2
+        /// </summary>
+        public double CTtime2
+        {
+            get { return _CTtime2; }
+            set { SetProperty(ref _CTtime2, value); }
+        }
+
 
         private ObservableCollection<DataFormCtq> _dfc = new ObservableCollection<DataFormCtq>();
         /// <summary>
@@ -190,38 +200,6 @@ namespace TeamAAS_VP.Core
             set { SetProperty(ref _dfc2, value); }
         }
 
-
-        private Int64 _ThrowNumber;
-        /// <summary>
-        /// 抛料数
-        /// </summary>
-        public Int64 ThrowNumber
-        {
-            get { return _ThrowNumber; }
-            set { SetProperty(ref _ThrowNumber, value); }
-        }
-
-        private Int64 _NgNumber;
-        /// <summary>
-        /// ng数量
-        /// </summary>
-        public Int64 NgNumber
-        {
-            get { return _NgNumber; }
-            set { SetProperty(ref _NgNumber, value); }
-        }
-
-        private double _Yield;
-        /// <summary>
-        /// 良率
-        /// </summary>
-        public double Yield
-        {
-            get { return _Yield; }
-            set { SetProperty(ref _Yield, value); }
-        }
-
-
         private ObservableCollection<ProductModel> _ProductList;
         public ObservableCollection<ProductModel> ProductList
         {
@@ -1065,6 +1043,7 @@ namespace TeamAAS_VP.Core
                 addressConfig.ManualMode.Address,
                 addressConfig.AutoRunning.Address,
                 addressConfig.ClearMode.Address,
+                addressConfig.WorkCt.Address,
                // addressConfig.Fault.Address,
             };
             for (int i = 0; i < 10; i++)
@@ -1320,6 +1299,7 @@ namespace TeamAAS_VP.Core
         bool _LastClearMode = false;
         bool _LastThrowExe = false;
         bool _LastRunModel = false;
+        bool _Lastworkct = false;
         bool _LastFault = false;
         Int16[] _LastWorkStart = new Int16[7];
         Int16 _LastQrCodePhotoRequest = 0;
@@ -2729,6 +2709,27 @@ namespace TeamAAS_VP.Core
                         }
                     }
                 }
+                //读取PLC生产CT
+                else if (addressConfig.WorkCt.Address.Contains(tuple.nodeId))
+                {
+                    if (tuple.value is bool state)
+                    {
+                        if (_Lastworkct != state)
+                        {
+                            _Lastworkct = state;
+                        }
+                        else
+                        {
+                            return;
+                        }
+                        if (state)
+                        {
+                            Int32 cttime = plc.ReadNode<Int32>(addressConfig.In_CycleTimeBefor.Address);
+                            SendTaskMessage($"读取PLC记录CT:{cttime}", MessageLevel.Info);
+                            CTtime2 = Convert.ToDouble(cttime);
+                        }
+                    }
+                }
                 else
                 {
                     // 过站检查
@@ -3194,7 +3195,8 @@ namespace TeamAAS_VP.Core
                                                 PD_ATTR_02 = ProductMainSN[i],
                                                 PD_ATTR_03 = PartSN,
                                                 PD_ATTR_04 = code,
-                                                PD_ATTR_05 = "NA",
+                                                PD_ATTR_05 = CTtime.ToString(),
+                                                PD_ATTR_06 = CTtime2.ToString(),
                                             });
                                         }
 
@@ -3223,7 +3225,8 @@ namespace TeamAAS_VP.Core
                                             PD_ATTR_02 = ProductMainSN[i],
                                             PD_ATTR_03 = PartSN,
                                             PD_ATTR_04 = code,
-                                            PD_ATTR_05 = "NA",
+                                            PD_ATTR_05 = CTtime.ToString(),
+                                            PD_ATTR_06 = CTtime2.ToString(),
                                         });
 
                                         try
@@ -3255,7 +3258,7 @@ namespace TeamAAS_VP.Core
                                                     //PD_ATTR_02 = DISDict["RightDis1"],//右1
                                                     //PD_ATTR_03 = DISDict["DownDis2"],//下2
                                                     //PD_ATTR_04 = DISDict["RightDis2"],//右2
-                                                    //PD_ATTR_05 = DISDict["UpDis2"],//上2
+                                                    PD_ATTR_06 = "",//上2
                                                 });
                                             }
                                             bool recordResult2 = RecordStationResult2(i, DFC2, ProductMainSN[i], serverTimeResult.Now.Subtract(_LastMesCheckTime[i]).TotalSeconds, _LastMesCheckTime[i], stationConfig.SaveCsvPath);
@@ -3335,7 +3338,8 @@ namespace TeamAAS_VP.Core
                                             PD_ATTR_02 = ProductMainSN[i],
                                             PD_ATTR_03 = "NA",
                                             PD_ATTR_04 = code,
-                                            PD_ATTR_05 = "NA",
+                                            PD_ATTR_05 = CTtime.ToString(),
+                                            PD_ATTR_06 = CTtime2.ToString(),
                                         });
                                         midValue = ((currentProduct.GlobalParamEx.DownPressure.PressureTime + currentProduct.GlobalParamEx.DownPressure.PressureTime) / 2).ToString("F3");
                                         DFC.Add(new DataFormCtq
@@ -3362,7 +3366,8 @@ namespace TeamAAS_VP.Core
                                             PD_ATTR_02 = ProductMainSN[i],
                                             PD_ATTR_03 = "NA",
                                             PD_ATTR_04 = code,
-                                            PD_ATTR_05 = "NA",
+                                            PD_ATTR_05 = CTtime.ToString(),
+                                            PD_ATTR_06 = CTtime2.ToString(),
                                         });
                                         #endregion
 
@@ -3877,23 +3882,23 @@ namespace TeamAAS_VP.Core
                 //TotalQuantityToday = await _systemDatabaseService.GetTodayProductionAsync(currentproduct.Name);
                 //CurrentUPH = await _systemDatabaseService.GetLastHourProductionAsync(currentproduct.Name);
                 ////
-                ThrowNumber = await _systemDatabaseService.GetThrowNumberAsync();
+                //ThrowNumber = await _systemDatabaseService.GetThrowNumberAsync();
                 //NgNumber = await _systemDatabaseService.GetNGProductionAsync(currentproduct.Name);
                 //Yield = ((double)TotalQuantityToday - (double)NgNumber) / (double)TotalQuantityToday * 100;
 
                 TotalQuantityToday = 0;
                 CurrentUPH = 0;
-                NgNumber = 0;
-                Yield = 0;
+                //NgNumber = 0;
+                //Yield = 0;
                 ObservableCollection<ProductModel> ProductList = new ObservableCollection<ProductModel>(_productService.GetAllProducts());
                 foreach (var product in ProductList)
                 {
                     //TotalQuantity += await _systemDatabaseService.GetOverallProductionAsync(product.Name);
                     TotalQuantityToday += await _systemDatabaseService.GetTodayProductionAsync(product.Name);
                     CurrentUPH += await _systemDatabaseService.GetLastHourProductionAsync(product.Name);
-                    NgNumber += await _systemDatabaseService.GetNGProductionAsync(product.Name);
+                    //NgNumber += await _systemDatabaseService.GetNGProductionAsync(product.Name);
                 }
-                Yield += ((double)TotalQuantityToday - (double)NgNumber) / (double)TotalQuantityToday * 100;
+                //Yield += ((double)TotalQuantityToday - (double)NgNumber) / (double)TotalQuantityToday * 100;
             }
             catch (Exception)
             {
@@ -3983,7 +3988,7 @@ namespace TeamAAS_VP.Core
                 if (!File.Exists(fullPath))
                 {
                     sb.Append("PPID,PROCESS_NAME,PROCESS_START_TIME,CTQ_NAME,CTQ_VALUE,CTQ_LSL,CTQ_USL,PROCESS_END_TIME,SUPPLIER_NAME,COMMODITY_TYPE,REVISION,WO#,MFG_LOT#," +
-                        "MFG_ASSY_LINE,PROCESS_OUTCOME,PROCESS_MACHINE_ID,CTQ_UNIT_OF_MEASURE,ERROR_MESSAGE,PD_ATTR_01,PD_ATTR_02,PD_ATTR_03,PD_ATTR_04,PD_ATTR_05");
+                        "MFG_ASSY_LINE,PROCESS_OUTCOME,PROCESS_MACHINE_ID,CTQ_UNIT_OF_MEASURE,ERROR_MESSAGE,PD_ATTR_01,PD_ATTR_02,PD_ATTR_03,PD_ATTR_04,PD_ATTR_05,PD_ATTR_06");
                     sb.AppendLine();
                 }
                 if (dfcs == null || dfcs.Count() == 0)
@@ -3992,7 +3997,7 @@ namespace TeamAAS_VP.Core
                 }
                 foreach (var dfc in dfcs)
                 {
-                    sb.Append($"{dfc.PPID},{dfc.PROCESS_NAME},{dfc.PROCESS_START_TIME},{dfc.CTQ_NAME},{dfc.CTQ_VALUE},{dfc.CTQ_LSL},{dfc.CTQ_USL},{dfc.PROCESS_END_TIME},{dfc.SUPPLIER_NAME},{dfc.COMMODITY_TYPE},{dfc.REVISION},{dfc.WO},{dfc.MFG_LOT},{dfc.MFG_ASSY_LINE},{dfc.PROCESS_OUTCOME},{dfc.PROCESS_MACHINE_ID},{dfc.CTQ_UNIT_OF_MEASURE},{dfc.ERROR_MESSAGE},{dfc.PD_ATTR_01},{dfc.PD_ATTR_02},{dfc.PD_ATTR_03},{dfc.PD_ATTR_04},{dfc.PD_ATTR_05}");
+                    sb.Append($"{dfc.PPID},{dfc.PROCESS_NAME},{dfc.PROCESS_START_TIME},{dfc.CTQ_NAME},{dfc.CTQ_VALUE},{dfc.CTQ_LSL},{dfc.CTQ_USL},{dfc.PROCESS_END_TIME},{dfc.SUPPLIER_NAME},{dfc.COMMODITY_TYPE},{dfc.REVISION},{dfc.WO},{dfc.MFG_LOT},{dfc.MFG_ASSY_LINE},{dfc.PROCESS_OUTCOME},{dfc.PROCESS_MACHINE_ID},{dfc.CTQ_UNIT_OF_MEASURE},{dfc.ERROR_MESSAGE},{dfc.PD_ATTR_01},{dfc.PD_ATTR_02},{dfc.PD_ATTR_03},{dfc.PD_ATTR_04},{dfc.PD_ATTR_05},{dfc.PD_ATTR_06}");
                     sb.AppendLine();
                 }
                 // 使用 StreamWriter 以追加模式打开文件
@@ -4054,7 +4059,7 @@ namespace TeamAAS_VP.Core
                 if (!File.Exists(fullPath))
                 {
                     sb.Append("PPID,SN,PROCESS_START_TIME,dis1,dis2,dis3,dis4,PROCESS_END_TIME,Product_Name,CodeSn,dis5,WO#,MFG_LOT#," +
-                        "MFG_ASSY_LINE,PROCESS_OUTCOME,Left1,Down1,Left2,Up1,Right1,Down2,Right2,Up2");
+                        "MFG_ASSY_LINE,PROCESS_OUTCOME,Left1,Down1,Left2,Up1,Right1,Down2,Right2,Up2,PD_ATTR_06");
                     sb.AppendLine();
                 }
                 if (dfcs == null || dfcs.Count() == 0)
@@ -4063,7 +4068,7 @@ namespace TeamAAS_VP.Core
                 }
                 foreach (var dfc in dfcs)
                 {
-                    sb.Append($"{dfc.PPID},{dfc.PROCESS_NAME},{dfc.PROCESS_START_TIME},{dfc.CTQ_NAME},{dfc.CTQ_VALUE},{dfc.CTQ_LSL},{dfc.CTQ_USL},{dfc.PROCESS_END_TIME},{dfc.SUPPLIER_NAME},{dfc.COMMODITY_TYPE},{dfc.REVISION},{dfc.WO},{dfc.MFG_LOT},{dfc.MFG_ASSY_LINE},{dfc.PROCESS_OUTCOME},{dfc.PROCESS_MACHINE_ID},{dfc.CTQ_UNIT_OF_MEASURE},{dfc.ERROR_MESSAGE},{dfc.PD_ATTR_01},{dfc.PD_ATTR_02},{dfc.PD_ATTR_03},{dfc.PD_ATTR_04},{dfc.PD_ATTR_05}");
+                    sb.Append($"{dfc.PPID},{dfc.PROCESS_NAME},{dfc.PROCESS_START_TIME},{dfc.CTQ_NAME},{dfc.CTQ_VALUE},{dfc.CTQ_LSL},{dfc.CTQ_USL},{dfc.PROCESS_END_TIME},{dfc.SUPPLIER_NAME},{dfc.COMMODITY_TYPE},{dfc.REVISION},{dfc.WO},{dfc.MFG_LOT},{dfc.MFG_ASSY_LINE},{dfc.PROCESS_OUTCOME},{dfc.PROCESS_MACHINE_ID},{dfc.CTQ_UNIT_OF_MEASURE},{dfc.ERROR_MESSAGE},{dfc.PD_ATTR_01},{dfc.PD_ATTR_02},{dfc.PD_ATTR_03},{dfc.PD_ATTR_04},{dfc.PD_ATTR_05},{dfc.PD_ATTR_06}");
                     sb.AppendLine();
                 }
                 // 使用 StreamWriter 以追加模式打开文件

+ 5 - 0
TeamAAS-VM/Models/DataFormCtq.cs

@@ -135,5 +135,10 @@ namespace TeamAAS_VP.Models
         /// </summary>
         public string PD_ATTR_05 { get => _PD_ATTR_05; set => SetProperty(ref _PD_ATTR_05, value); }
 
+        private string _PD_ATTR_06;
+        /// <summary>
+        /// 附加信息6
+        /// </summary>
+        public string PD_ATTR_06 { get => _PD_ATTR_06; set => SetProperty(ref _PD_ATTR_06, value); }
     }
 }

+ 31 - 0
TeamAAS-VM/Models/PLC/PlcAddressConfig.cs

@@ -782,6 +782,26 @@ namespace TeamAAS_VP.Models.PLC
             set { SetProperty(ref _Fault, value); }
         }
 
+        private PlcAddress _WorkCt;
+        /// <summary>
+        /// 触发读取PLC记录CT
+        /// </summary>
+        public PlcAddress WorkCt
+        {
+            get { return _WorkCt; }
+            set { SetProperty(ref _WorkCt, value); }
+        }
+
+
+        private PlcAddress _In_CycleTimeBefor = new PlcAddress();
+        /// <summary>
+        /// PLC记录CT时长
+        /// </summary>
+        public PlcAddress In_CycleTimeBefor
+        {
+            get { return _In_CycleTimeBefor; }
+            set { SetProperty(ref _In_CycleTimeBefor, value); }
+        }
         #endregion
 
         public PlcAddressConfig()
@@ -1334,6 +1354,17 @@ namespace TeamAAS_VP.Models.PLC
             ClearMode.DataType = "Bool";
             ClearMode.Description = "流线模式";
 
+            WorkCt = Ensure(WorkCt);
+            WorkCt.Address = "ns=4;s=DB_Communication|ToPC.WorkCt";
+            WorkCt.DataType = "Bool";
+            WorkCt.Description = "触发读取PLC记录CT";
+
+            In_CycleTimeBefor = Ensure(In_CycleTimeBefor);
+            In_CycleTimeBefor.Address = "ns=4;s=DB_Communication|ToPC.CycleTimeBefor";
+            In_CycleTimeBefor.DataType = "int32";
+            In_CycleTimeBefor.Description = "PLC记录CT时长";
+
+
             // 说明:若项目中 PlcAddress 的实际属性名或类型与此不同(例如使用枚举、不同字段名),
             // 请根据实际类型调整赋值。本方法主要提供合理的默认字符串地址、数据类型及描述,便于后续从配置覆盖。
         }

+ 42 - 0
TeamAAS-VM/ViewModels/Statistics/ProductionStatementViewModel.cs

@@ -18,6 +18,7 @@ using TeamAAS_VP.Data;
 using TeamAAS_VP.Enums;
 using TeamAAS_VP.Events;
 using TeamAAS_VP.Interfaces;
+using System.Collections.ObjectModel;
 using TeamAAS_VP.Models;
 using TeamAAS_VP.Resources.Languages;
 using TeamAAS_VP.Services;
@@ -173,6 +174,37 @@ namespace TeamAAS_VP.ViewModels.Statistics
             get { return _HourNumber; }
             set { SetProperty(ref _HourNumber, value); }
         }
+
+        private Int64 _ThrowNumber;
+        /// <summary>
+        /// 抛料数
+        /// </summary>
+        public Int64 ThrowNumber
+        {
+            get { return _ThrowNumber; }
+            set { SetProperty(ref _ThrowNumber, value); }
+        }
+
+        private Int64 _NgNumber;
+        /// <summary>
+        /// ng数量
+        /// </summary>
+        public Int64 NgNumber
+        {
+            get { return _NgNumber; }
+            set { SetProperty(ref _NgNumber, value); }
+        }
+
+        private double _Yield;
+        /// <summary>
+        /// 良率
+        /// </summary>
+        public double Yield
+        {
+            get { return _Yield; }
+            set { SetProperty(ref _Yield, value); }
+        }
+
         #endregion
 
         #region 命令
@@ -214,6 +246,16 @@ namespace TeamAAS_VP.ViewModels.Statistics
                 DayChartModel = CreateDay(await _systemDatabaseService.GetDailyProductionByHourAndCategoryAsync(currentproduct.Name));
                 await GetGapYieldStatisticsAsync();
                 await ReadUphAlarmConfig();
+
+                double TotalQuantityToday2 = 0;
+                ObservableCollection<ProductModel> ProductList = new ObservableCollection<ProductModel>(_productService.GetAllProducts());
+                foreach (var product in ProductList)
+                {
+                    TotalQuantityToday2 += await _systemDatabaseService.GetTodayProductionAsync(product.Name);
+                }
+                ThrowNumber = await _systemDatabaseService.GetThrowNumberAsync();
+                NgNumber = await _systemDatabaseService.GetNGProductionAsync(currentproduct.Name);
+                Yield = (TotalQuantityToday2 - (double)NgNumber) / TotalQuantityToday2 * 100;
             }));
             
         }

+ 12 - 12
TeamAAS-VM/Views/Home/ShowVisionRender.xaml.cs

@@ -435,25 +435,25 @@ namespace TeamAAS_VP.Views.Home
 
                     if (saveImageModel == ProcedureSaveImageModel.Original)
                     {
-                        string Originalpath = $"{path}\\{now:yyyy-MM}\\{now:MM-dd}\\{imgName}.bmp";
+                        string Originalpath = $"{path}\\Original\\{now:yyyy-MM}\\{now:MM-dd}\\{imgName}.bmp";
 
                         if (saveImagePathModel == ProcedureSaveImagePathModel.Month_Day_OkNG_Time)
                         {
                             Originalpath = result
-                                ? $"{path}\\{now:yyyy-MM}\\{now:MM-dd}\\OK\\{imgName}.bmp"
-                                : $"{path}\\{now:yyyy-MM}\\{now:MM-dd}\\NG\\{imgName}.bmp";
+                                ? $"{path}\\Original\\{now:yyyy-MM}\\{now:MM-dd}\\OK\\{imgName}.bmp"
+                                : $"{path}\\Original\\{now:yyyy-MM}\\{now:MM-dd}\\NG\\{imgName}.bmp";
                         }
                         else if (saveImagePathModel == ProcedureSaveImagePathModel.Month_Day_Ok_Time)
                         {
                             if (result)
-                                Originalpath = $"{path}\\{now:yyyy-MM}\\{now:MM-dd}\\OK\\{imgName}.bmp";
+                                Originalpath = $"{path}\\Original\\{now:yyyy-MM}\\{now:MM-dd}\\OK\\{imgName}.bmp";
                             else
                                 return;
                         }
                         else if (saveImagePathModel == ProcedureSaveImagePathModel.Month_Day_Ng_Time)
                         {
                             if (!result)
-                                Originalpath = $"{path}\\{now:yyyy-MM}\\{now:MM-dd}\\NG\\{imgName}.bmp";
+                                Originalpath = $"{path}\\Original\\{now:yyyy-MM}\\{now:MM-dd}\\NG\\{imgName}.bmp";
                             else
                                 return;
                         }
@@ -470,7 +470,7 @@ namespace TeamAAS_VP.Views.Home
                                 productSN = productSN.Replace(c, '_');
 
                             string resultStr = result ? "OK" : "NG";
-                            Originalpath = $"{path}\\{now:yyyy-MM}\\{now:MM-dd}\\{formulaName}\\{productSN}\\{resultStr}\\{imgName}.bmp";
+                            Originalpath = $"{path}\\Original\\{now:yyyy-MM}\\{now:MM-dd}\\{formulaName}\\{productSN}\\{resultStr}\\{imgName}.bmp";
                         }
 
                         if (!Directory.Exists(Path.GetDirectoryName(Originalpath)))
@@ -485,25 +485,25 @@ namespace TeamAAS_VP.Views.Home
                     }
                     else if (saveImageModel == ProcedureSaveImageModel.Recorded)
                     {
-                        string Recordedpath = $"{path}\\{now:yyyy-MM}\\{now:MM-dd}\\{imgName}.bmp";
+                        string Recordedpath = $"{path}\\Recored\\{now:yyyy-MM}\\{now:MM-dd}\\{imgName}.bmp";
 
                         if (saveImagePathModel == ProcedureSaveImagePathModel.Month_Day_OkNG_Time)
                         {
                             Recordedpath = result
-                                ? $"{path}\\{now:yyyy-MM}\\{now:MM-dd}\\OK\\{imgName}.bmp"
-                                : $"{path}\\{now:yyyy-MM}\\{now:MM-dd}\\NG\\{imgName}.bmp";
+                                ? $"{path}\\Recored\\{now:yyyy-MM}\\{now:MM-dd}\\OK\\{imgName}.bmp"
+                                : $"{path}\\Recored\\{now:yyyy-MM}\\{now:MM-dd}\\NG\\{imgName}.bmp";
                         }
                         else if (saveImagePathModel == ProcedureSaveImagePathModel.Month_Day_Ok_Time)
                         {
                             if (result)
-                                Recordedpath = $"{path}\\{now:yyyy-MM}\\{now:MM-dd}\\OK\\{imgName}.bmp";
+                                Recordedpath = $"{path}\\Recored\\{now:yyyy-MM}\\{now:MM-dd}\\OK\\{imgName}.bmp";
                             else
                                 return;
                         }
                         else if (saveImagePathModel == ProcedureSaveImagePathModel.Month_Day_Ng_Time)
                         {
                             if (!result)
-                                Recordedpath = $"{path}\\{now:yyyy-MM}\\{now:MM-dd}\\NG\\{imgName}.bmp";
+                                Recordedpath = $"{path}\\Recored\\{now:yyyy-MM}\\{now:MM-dd}\\NG\\{imgName}.bmp";
                             else
                                 return;
                         }
@@ -518,7 +518,7 @@ namespace TeamAAS_VP.Views.Home
                                 productSN = productSN.Replace(c, '_');
 
                             string resultStr = result ? "OK" : "NG";
-                            Recordedpath = $"{path}\\{now:yyyy-MM}\\{now:MM-dd}\\{formulaName}\\{productSN}\\{resultStr}\\{imgName}.bmp";
+                            Recordedpath = $"{path}\\Recored\\{now:yyyy-MM}\\{now:MM-dd}\\{formulaName}\\{productSN}\\{resultStr}\\{imgName}.bmp";
                         }
 
                         if (!Directory.Exists(Path.GetDirectoryName(Recordedpath)))

+ 11 - 5
TeamAAS-VM/Views/HomeView.xaml

@@ -223,7 +223,6 @@
                     <Grid.ColumnDefinitions>
                         <ColumnDefinition Width="*" />
                         <ColumnDefinition Width="*" />
-                        <ColumnDefinition Width="*" />
                     </Grid.ColumnDefinitions>
                     <!--加载产品-->
                     <materialDesign:Card Grid.Row="0"
@@ -372,7 +371,7 @@
                         </Grid>
                     </materialDesign:Card>
                     <!--生产数量2-->
-                    <materialDesign:Card Grid.Row="0"
+                    <!--<materialDesign:Card Grid.Row="0"
            Grid.Column="2"
            UniformCornerRadius="10"
            BorderBrush="LightGray"
@@ -445,10 +444,8 @@ VerticalAlignment="Center">
          Grid.Column="1"
          Text="{Binding management.Yield,StringFormat={}{0:F2}%}" />
                         </Grid>
-                    </materialDesign:Card>
+                    </materialDesign:Card>-->
                 </Grid>
-
-
                 <StackPanel Grid.Row="2"
                             Orientation="Horizontal"
                             VerticalAlignment="Bottom"
@@ -458,6 +455,15 @@ VerticalAlignment="Center">
                                FontSize="{DynamicResource Font.Size.Body2}"
                                VerticalAlignment="Center" />
                     <TextBlock Text="{Binding management.CTtime,StringFormat={}{0:F2} s}"
+                               FontSize="{DynamicResource Font.Size.Body3}"
+                               VerticalAlignment="Center"
+                               Margin="10,0,50,0" />
+
+                    <TextBlock Text="CT2: "
+                               FontWeight="Bold"
+                               FontSize="{DynamicResource Font.Size.Body2}"
+                               VerticalAlignment="Center" />
+                    <TextBlock Text="{Binding management.CTtime2,StringFormat={}{0:F2} s}"
                                FontSize="{DynamicResource Font.Size.Body3}"
                                VerticalAlignment="Center"
                                Margin="10,0" />

+ 40 - 0
TeamAAS-VM/Views/Statistics/ProductionStatement.xaml

@@ -47,6 +47,9 @@
                     <RowDefinition Height="auto" />
                     <RowDefinition Height="auto" />
                     <RowDefinition Height="auto" />
+                    <RowDefinition Height="auto" />
+                    <RowDefinition Height="auto" />
+                    <RowDefinition Height="auto" />
                 </Grid.RowDefinitions>
                 <oxy:PlotView Grid.Row="0"
                               Grid.Column="0"
@@ -103,6 +106,43 @@
                          TextAlignment="Center"
                          BorderThickness="1"
                          Margin="5" />
+                <TextBlock Grid.Row="5"
+                           Text="{lex:Loc 抛料数,Converter={StaticResource StringFormatConverter},ConverterParameter='{}{0}: '}"
+                           VerticalAlignment="Center"
+                           Margin="5" />
+                <TextBox Grid.Row="5"
+                         Grid.Column="1"
+                         Text="{Binding ThrowNumber}"
+                         IsReadOnly="True"
+                         BorderBrush="Gray"
+                         TextAlignment="Center"
+                         BorderThickness="1"
+                         Margin="5" />
+                <TextBlock Grid.Row="6"
+                           Text="{lex:Loc NG数量,Converter={StaticResource StringFormatConverter},ConverterParameter='{}{0}: '}"
+                           VerticalAlignment="Center"
+                           Margin="5" />
+                <TextBox Grid.Row="6"
+                         Grid.Column="1"
+                         Text="{Binding NgNumber}"
+                         IsReadOnly="True"
+                         BorderBrush="Gray"
+                         TextAlignment="Center"
+                         BorderThickness="1"
+                         Margin="5" />
+                <TextBlock Grid.Row="7"
+                           Text="{lex:Loc 良率,Converter={StaticResource StringFormatConverter},ConverterParameter='{}{0}: '}"
+                           VerticalAlignment="Center"
+                           Margin="5" />
+                <TextBox Grid.Row="7"
+                         Grid.Column="1"
+                         Text="{Binding Yield,StringFormat={}{0:F2}%}"
+                         IsReadOnly="True"
+                         BorderBrush="Gray"
+                         TextAlignment="Center"
+                         BorderThickness="1"
+                         Margin="5" />
+
             </Grid>
             <Button Content="{lex:Loc 生成报表}"
                     Margin="10"