Explorar el Código

完善csv数据,添加ppid

844184169 hace 5 meses
padre
commit
bec4b5bc61

+ 2 - 1
TeamAAS-VM/Core/FileHelper.cs

@@ -865,6 +865,7 @@ namespace TeamAAS_VP.Core
         #endregion
 
         #region 写CTQ的csv
+        /*
         public static void WriteDataToCSV(DataFormCtq cd)
         {
             string s1, s2, s3, s4,
@@ -978,7 +979,7 @@ namespace TeamAAS_VP.Core
             }
 
             return result;
-        }
+        }*/
         #endregion
     }
 }

+ 73 - 18
TeamAAS-VM/Core/Management.cs

@@ -1223,6 +1223,8 @@ namespace TeamAAS_VP.Core
         string[] wo = new string[10];
         string[] model_num = new string[10];//产品model_num
         string[] color = new string[10];//产品color
+        string[] ppid = new string[10];//产品ppid
+        string[] revision = new string[10];//产品revision
         /// <summary>
         /// 复检结果
         /// </summary>
@@ -2579,8 +2581,7 @@ namespace TeamAAS_VP.Core
                                 //询问mes
                                 if (state == 1)
                                 {
-                                    // 这里缺少从MES获取产品配方的内容,需要补充
-
+                                    //获取过站时间
                                     _LastMesCheckTime[i] = (await _mesService.GetServerTimeAsync(i, code, 2)).Now;
 
                                     //获取当前工位的配置
@@ -2642,6 +2643,18 @@ namespace TeamAAS_VP.Core
                                                     color[i] = colorItem.Replace("color=", "").Trim();
                                                     SendTaskMessage($"color:{color[i]}", MessageLevel.Info);
                                                 }
+                                                string ppidItem = item.FirstOrDefault(f => f.Contains("ppid="));
+                                                if (ppidItem != null)
+                                                {
+                                                    ppid[i] = ppidItem.Replace("ppid=", "").Trim();
+                                                    SendTaskMessage($"ppid:{ppid[i]}", MessageLevel.Info);
+                                                }
+                                                string revisionItem = item.FirstOrDefault(f => f.Contains("revision="));
+                                                if (revisionItem != null)
+                                                {
+                                                    revision[i] = revisionItem.Replace("revision=", "").Trim();
+                                                    SendTaskMessage($"revision:{revision[i]}", MessageLevel.Info);
+                                                }
 
                                                 //切换产品
                                                 if (i == 0)//i=0时才会切换产品
@@ -2735,6 +2748,18 @@ namespace TeamAAS_VP.Core
                                                 color[i] = colorItem.Replace("color=", "").Trim();
                                                 SendTaskMessage($"color:{color[i]}", MessageLevel.Info);
                                             }
+                                            string ppidItem = item.FirstOrDefault(f => f.Contains("ppid="));
+                                            if (ppidItem != null)
+                                            {
+                                                ppid[i] = ppidItem.Replace("ppid=", "").Trim();
+                                                SendTaskMessage($"ppid:{ppid[i]}", MessageLevel.Info);
+                                            }
+                                            string revisionItem = item.FirstOrDefault(f => f.Contains("revision="));
+                                            if (revisionItem != null)
+                                            {
+                                                revision[i] = revisionItem.Replace("revision=", "").Trim();
+                                                SendTaskMessage($"revision:{revision[i]}", MessageLevel.Info);
+                                            }
 
                                             LogHelper.WriteLogMes($"询问mes成功");
                                             SendTaskMessage($"询问mes成功:{response}", MessageLevel.Debug);
@@ -2799,7 +2824,7 @@ namespace TeamAAS_VP.Core
                                 // 上传本站数据
                                 else if (state == 2)
                                 {
-                                    DFC.Clear();
+                                    DFC.Clear();//CTQ数据集合
 
                                     //获取当前工位的配置
                                     var stationConfig = _configService.GetDeviceInfo(i);
@@ -2822,6 +2847,7 @@ namespace TeamAAS_VP.Core
                                     Int16 resultIndex = plc.ReadNode<Int16>(string.Format(addressConfig.In_Result.Address, i));
                                     resultIndex = 1;
 
+                                    #region 组装结果显示列表信息
                                     AssemblyRecord assemblyRecord = new AssemblyRecord();
                                     assemblyRecord.ProductSN = code;
                                     assemblyRecord.RecipeName = currentProduct.Name;
@@ -2865,14 +2891,13 @@ namespace TeamAAS_VP.Core
                                             _eventAggregator.GetEvent<AssemblyFinishNotification>().Publish(assemblyRecord);
                                         });
                                     }
-
                                     await _systemDatabaseService.RecordAssemblyAsync(assemblyRecord);
+                                    #endregion
 
                                     LogHelper.WriteLogMes($"【mes开始ADD】");
                                     SendTaskMessage($"mes开始ADD", MessageLevel.Info);
 
                                     Dictionary<string, string> data = new Dictionary<string, string>();
-
                                     string press = ""; string presstime = ""; string assypress = "";
                                     if (i == 0)
                                     {
@@ -2896,7 +2921,7 @@ namespace TeamAAS_VP.Core
                                         data = gapDict.Copy();
                                         data.Add("AssyPressure1", assypress);
                                         SendTaskMessage($"Gap1:{gapDict["Gap1"]},Gap2:{gapDict["Gap2"]},Gap3:{gapDict["Gap3"]},Gap4:{gapDict["Gap4"]},组装压力:{assypress}", MessageLevel.Info);
-                                        #region 数据
+                                        #region CSV数据
                                         bool assyPresRes;
                                         if (currentPressure[0] >= currentProduct.GlobalParamEx.AssemblyPressure.PressureDownLimit && currentPressure[0] <= currentProduct.GlobalParamEx.AssemblyPressure.PressureUpLimit)
                                         {
@@ -2905,31 +2930,36 @@ namespace TeamAAS_VP.Core
                                         else assyPresRes = false;
                                         DFC.Clear();
 
+                                        string upLimitValue = "", downLimitValue = "", midValue = "", saveppid = "";
+                                        if (stationConfig.SaveCsvPPID) saveppid = ppid[i];
                                         foreach (var item in gapDict)
                                         {
-                                            string upLimitValue = "", downLimitValue = "";
                                             switch (item.Key)
                                             {
                                                 case "Gap1":
                                                     upLimitValue = currentProduct.GlobalParamEx.Gap1UpLimit.ToString("F3");
                                                     downLimitValue = currentProduct.GlobalParamEx.Gap1DownLimit.ToString("F3");
+                                                    midValue = ((currentProduct.GlobalParamEx.Gap1UpLimit + currentProduct.GlobalParamEx.Gap1DownLimit) / 2).ToString("F3");
                                                     break;
                                                 case "Gap2":
                                                     upLimitValue = currentProduct.GlobalParamEx.Gap2UpLimit.ToString("F3");
                                                     downLimitValue = currentProduct.GlobalParamEx.Gap2DownLimit.ToString("F3");
+                                                    midValue = ((currentProduct.GlobalParamEx.Gap2UpLimit + currentProduct.GlobalParamEx.Gap2DownLimit) / 2).ToString("F3");
                                                     break;
                                                 case "Gap3":
                                                     upLimitValue = currentProduct.GlobalParamEx.Gap3UpLimit.ToString("F3");
                                                     downLimitValue = currentProduct.GlobalParamEx.Gap3DownLimit.ToString("F3");
+                                                    midValue = ((currentProduct.GlobalParamEx.Gap3UpLimit + currentProduct.GlobalParamEx.Gap3DownLimit) / 2).ToString("F3");
                                                     break;
                                                 case "Gap4":
                                                     upLimitValue = currentProduct.GlobalParamEx.Gap4UpLimit.ToString("F3");
                                                     downLimitValue = currentProduct.GlobalParamEx.Gap4DownLimit.ToString("F3");
+                                                    midValue = ((currentProduct.GlobalParamEx.Gap4UpLimit + currentProduct.GlobalParamEx.Gap4DownLimit) / 2).ToString("F3");
                                                     break;
                                             }
                                             DFC.Add(new DataFormCtq
                                             {
-                                                PPID = ProductMainSN[i],
+                                                PPID = saveppid,
                                                 PROCESS_NAME = stationConfig.DataInfo.PROCESS_NAME,
                                                 PROCESS_START_TIME = _LastMesCheckTime[i].ToString("yyyy-MM-ddTHH:mm:ss.fffffff") + "+08:00",
                                                 CTQ_NAME = item.Key,
@@ -2946,13 +2976,19 @@ namespace TeamAAS_VP.Core
                                                 PROCESS_OUTCOME = "Pass",
                                                 PROCESS_MACHINE_ID = stationConfig.DataInfo.PROCESS_MACHINE_ID,
                                                 CTQ_UNIT_OF_MEASURE = "mm",
-                                                ERROR_MESSAGE = ""
+                                                ERROR_MESSAGE = "",
+                                                PD_ATTR_01 = midValue,
+                                                PD_ATTR_02 = ProductMainSN[i],
+                                                PD_ATTR_03 = PartSN,
+                                                PD_ATTR_04 = "",
+                                                PD_ATTR_05 = "",
                                             });
                                         }
 
+                                        midValue = ((currentProduct.GlobalParamEx.AssemblyPressure.PressureDownLimit + currentProduct.GlobalParamEx.AssemblyPressure.PressureUpLimit) / 2).ToString("F3");
                                         DFC.Add(new DataFormCtq
                                         {
-                                            PPID = ProductMainSN[i],
+                                            PPID = saveppid,
                                             PROCESS_NAME = stationConfig.DataInfo.PROCESS_NAME,
                                             PROCESS_START_TIME = _LastMesCheckTime[i].ToString("yyyy-MM-ddTHH:mm:ss.fffffff") + "+08:00",
                                             CTQ_NAME = "Assy_Pressure",
@@ -2969,7 +3005,12 @@ namespace TeamAAS_VP.Core
                                             PROCESS_OUTCOME = assyPresRes ? "Pass" : "Fail",
                                             PROCESS_MACHINE_ID = stationConfig.DataInfo.PROCESS_MACHINE_ID,
                                             CTQ_UNIT_OF_MEASURE = "kg",
-                                            ERROR_MESSAGE = assyPresRes ? "" : "Assy_Pressure OOS"
+                                            ERROR_MESSAGE = assyPresRes ? "" : "Assy_Pressure OOS",
+                                            PD_ATTR_01 = midValue,
+                                            PD_ATTR_02 = ProductMainSN[i],
+                                            PD_ATTR_03 = PartSN,
+                                            PD_ATTR_04 = "",
+                                            PD_ATTR_05 = "",
                                         });
                                         #endregion
                                     }
@@ -2996,7 +3037,7 @@ namespace TeamAAS_VP.Core
                                         data.Add("Pressure1", press);
                                         data.Add("PressureTime1", presstime);
                                         SendTaskMessage($"保压压力:{press},保压时间:{presstime}", MessageLevel.Info);
-                                        #region 数据
+                                        #region CSV数据
                                         bool presRes;
                                         if (currentPressure[1] >= currentProduct.GlobalParamEx.DownPressure.PressureDownLimit && currentPressure[1] <= currentProduct.GlobalParamEx.DownPressure.PressureUpLimit)
                                         {
@@ -3004,9 +3045,12 @@ namespace TeamAAS_VP.Core
                                         }
                                         else presRes = false;
                                         DFC.Clear();
+                                        string midValue = "", saveppid = "";
+                                        midValue = ((currentProduct.GlobalParamEx.DownPressure.PressureDownLimit + currentProduct.GlobalParamEx.DownPressure.PressureUpLimit) / 2).ToString("F3");
+                                        if (stationConfig.SaveCsvPPID) saveppid = ppid[i];
                                         DFC.Add(new DataFormCtq
                                         {
-                                            PPID = ProductMainSN[i],
+                                            PPID = saveppid,
                                             PROCESS_NAME = stationConfig.DataInfo.PROCESS_NAME,
                                             PROCESS_START_TIME = _LastMesCheckTime[i].ToString("yyyy-MM-ddTHH:mm:ss.fffffff") + "+08:00",
                                             CTQ_NAME = "Pressure",
@@ -3023,11 +3067,17 @@ namespace TeamAAS_VP.Core
                                             PROCESS_OUTCOME = presRes ? "Pass" : "Fail",
                                             PROCESS_MACHINE_ID = stationConfig.DataInfo.PROCESS_MACHINE_ID,
                                             CTQ_UNIT_OF_MEASURE = "kg",
-                                            ERROR_MESSAGE = presRes ? "" : "Assy_Pressure OOS"
+                                            ERROR_MESSAGE = presRes ? "" : "Pressure OOS",
+                                            PD_ATTR_01 = midValue,
+                                            PD_ATTR_02 = ProductMainSN[i],
+                                            PD_ATTR_03 = "",
+                                            PD_ATTR_04 = "",
+                                            PD_ATTR_05 = "",
                                         });
+                                        midValue = ((currentProduct.GlobalParamEx.DownPressure.PressureTime + currentProduct.GlobalParamEx.DownPressure.PressureTime) / 2).ToString("F3");
                                         DFC.Add(new DataFormCtq
                                         {
-                                            PPID = ProductMainSN[i],
+                                            PPID = saveppid,
                                             PROCESS_NAME = stationConfig.DataInfo.PROCESS_NAME,
                                             PROCESS_START_TIME = _LastMesCheckTime[i].ToString("yyyy-MM-ddTHH:mm:ss.fffffff") + "+08:00",
                                             CTQ_NAME = "Pressure_time",
@@ -3044,7 +3094,12 @@ namespace TeamAAS_VP.Core
                                             PROCESS_OUTCOME = "Pass",
                                             PROCESS_MACHINE_ID = stationConfig.DataInfo.PROCESS_MACHINE_ID,
                                             CTQ_UNIT_OF_MEASURE = "s",
-                                            ERROR_MESSAGE = ""
+                                            ERROR_MESSAGE = "",
+                                            PD_ATTR_01 = midValue,
+                                            PD_ATTR_02 = ProductMainSN[i],
+                                            PD_ATTR_03 = "",
+                                            PD_ATTR_04 = "",
+                                            PD_ATTR_05 = "",
                                         });
                                         #endregion
                                     }
@@ -3517,7 +3572,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");
+                        "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");
                     sb.AppendLine();
                 }
                 if (dfcs == null || dfcs.Count() == 0)
@@ -3526,7 +3581,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}");
+                    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.AppendLine();
                 }
                 // 使用 StreamWriter 以追加模式打开文件

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

@@ -105,5 +105,35 @@ namespace TeamAAS_VP.Models
         /// </summary>
         public string ERROR_MESSAGE { get => _ERROR_MESSAGE; set => SetProperty(ref _ERROR_MESSAGE, value); }
 
+        private string _PD_ATTR_01;
+        /// <summary>
+        /// 附加信息1--中值
+        /// </summary>
+        public string PD_ATTR_01 { get => _PD_ATTR_01; set => SetProperty(ref _PD_ATTR_01, value); }
+
+        private string _PD_ATTR_02;
+        /// <summary>
+        /// 附加信息2--物料SN
+        /// </summary>
+        public string PD_ATTR_02 { get => _PD_ATTR_02; set => SetProperty(ref _PD_ATTR_02, value); }
+
+        private string _PD_ATTR_03;
+        /// <summary>
+        /// 附加信息3--小件SN
+        /// </summary>
+        public string PD_ATTR_03 { get => _PD_ATTR_03; set => SetProperty(ref _PD_ATTR_03, value); }
+
+        private string _PD_ATTR_04;
+        /// <summary>
+        /// 附加信息4
+        /// </summary>
+        public string PD_ATTR_04 { get => _PD_ATTR_04; set => SetProperty(ref _PD_ATTR_04, value); }
+
+        private string _PD_ATTR_05;
+        /// <summary>
+        /// 附加信息5
+        /// </summary>
+        public string PD_ATTR_05 { get => _PD_ATTR_05; set => SetProperty(ref _PD_ATTR_05, value); }
+
     }
 }

+ 7 - 0
TeamAAS-VM/Models/DeviceInfo.cs

@@ -79,6 +79,12 @@ namespace TeamAAS_VP.Models
         /// </summary>
         public bool SaveCsv { get => _saveCsv; set => SetProperty(ref _saveCsv, value); }
 
+        private bool _saveCsvPPID;
+        /// <summary>
+        /// 是否保存CSV文件的PPID,默认不保存
+        /// </summary>
+        public bool SaveCsvPPID { get => _saveCsvPPID; set => SetProperty(ref _saveCsvPPID, value); }
+
         private string _saveCsvPath;
         /// <summary>
         /// 保存的CSV文件路径
@@ -122,6 +128,7 @@ namespace TeamAAS_VP.Models
             LogUrl = string.Empty;
             ApiKey = string.Empty;
             EnableMES = false;
+            SaveCsvPPID = true;
         }
 
         public DeviceInfo Copy()

+ 3 - 3
TeamAAS-VM/Services/MesService.cs

@@ -103,16 +103,16 @@ namespace TeamAAS_VP.Services
             {
                 if (device.F == "PTL")
                 {
-                    url = $"{device.MesUrl}?c=QUERY_RECORD&line={device.Line}&station={device.Station}&fixtureid={device.FixtureId}&sn={sn}&comp={device.comp}:{comp}&p=message,sn,wo,model_num,color";
+                    url = $"{device.MesUrl}?c=QUERY_RECORD&line={device.Line}&station={device.Station}&fixtureid={device.FixtureId}&sn={sn}&comp={device.comp}:{comp}&p=message,sn,wo,model_num,color,ppid,revision";
                 }
                 else
                 {
-                    url = $"{device.MesUrl}?c=QUERY_RECORD&line={device.Line}&station={device.Station}&fixtureid={device.FixtureId}&sn={sn}&p=message,sn,wo,model_num,color";
+                    url = $"{device.MesUrl}?c=QUERY_RECORD&line={device.Line}&station={device.Station}&fixtureid={device.FixtureId}&sn={sn}&p=message,sn,wo,model_num,color,ppid,revision";
                 }
             }
             else//±£Ñ¹Õ¾
             {
-                url = $"{device.MesUrl}?c=QUERY_RECORD&line={device.Line}&station={device.Station}&fixtureid={device.FixtureId}&sn={sn}&p=message,sn,wo,model_num,color";
+                url = $"{device.MesUrl}?c=QUERY_RECORD&line={device.Line}&station={device.Station}&fixtureid={device.FixtureId}&sn={sn}&p=message,sn,wo,model_num,color,ppid,revision";
             }
 
             LogHelper.WriteLogMes($"¡¾Ñ¯ÎÊURL¡¿{url}");

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

@@ -488,11 +488,17 @@
                                           Content="是否启用两次产品编号"
                                           IsChecked="{Binding SelectDeviceInfo.EnableDoubleMes, Mode=TwoWay}"
                                           Margin="6,2" />
-                                <CheckBox Grid.Row="13"
-                                          Grid.Column="1"
-                                          Content="是否保存CSV文件"
-                                          IsChecked="{Binding SelectDeviceInfo.SaveCsv, Mode=TwoWay}"
-                                          Margin="6,2" />
+                                <StackPanel Grid.Row="13"
+                                            Grid.Column="1"
+                                            Orientation="Horizontal">
+                                    <CheckBox Content="是否保存CSV文件"
+                                              IsChecked="{Binding SelectDeviceInfo.SaveCsv, Mode=TwoWay}"
+                                              Margin="6,2" />
+                                    <CheckBox Content="是否保存ppid"
+                                              IsChecked="{Binding SelectDeviceInfo.SaveCsvPPID, Mode=TwoWay}"
+                                              Margin="6,2" />
+                                </StackPanel>
+                                
                                 <TextBlock Grid.Row="14"
                                            Grid.Column="0"
                                            Text="保存的CSV文件路径:"