Browse Source

1.gasdetail页面调整IoPressureMeter项从DeviceModelPM中获取
2.bug556修复:改成如果recipe文件夹没有选中项默认选中第一个

huangping 4 weeks ago
parent
commit
be4bffc305

+ 40 - 5
Furnace/FurnaceRT/Equipments/Systems/EquipmentManager.cs

@@ -426,7 +426,8 @@ namespace FurnaceRT.Equipments.Systems
 
         void SubscribeDataVariable()
         {
-            DATA.Subscribe("System.FFUKeyDict", () => GetFFUKeyDict(), SubscriptionAttribute.FLAG.IgnoreSaveDB);
+            DATA.Subscribe("System.FFUKeyDict", () => GetDeviceKeyDict(DeviceName.IoFFUNameKey), SubscriptionAttribute.FLAG.IgnoreSaveDB);
+            DATA.Subscribe("System.NameKeyDict", () => GetALLDeviceKeyDict(), SubscriptionAttribute.FLAG.IgnoreSaveDB);
             DATA.Subscribe("Rt.Status", () => StringFsmStatus);
             DATA.Subscribe("System.IsInitialized", () => _isInited);
 
@@ -440,15 +441,19 @@ namespace FurnaceRT.Equipments.Systems
         }
 
 
-        List<string> GetFFUKeyDict()
+        List<string> GetDeviceKeyDict(string key)
         {
             List<string> result = null;
             if (SC.GetStringValue("System.SetUp.ToolType") != "ELK") return null;
-            GetXmlElement("DeviceModelPM", ref result);
+            GetXmlElement("DeviceModelPM", key, ref result);
             return result;
         }
+        Dictionary<string,List<string>>  GetALLDeviceKeyDict()
+        {      
+            return GetXmlElement("DeviceModelPM");
+        }
 
-        public void GetXmlElement(string fileName, ref List<string> result, bool isSystem = false)
+        public void GetXmlElement(string fileName,string type, ref List<string> result, bool isSystem = false)
         {
             result = new List<string>();
             XmlDocument xmlDoc = new XmlDocument();
@@ -464,7 +469,7 @@ namespace FurnaceRT.Equipments.Systems
                 var classType = element.GetAttribute("classType");
                 if (classType == null) continue;
                 classType = classType.Split('.').LastOrDefault();
-                if (classType == "IoFFU")
+                if (classType ==type)
                 {
                     foreach (XmlNode children in item.ChildNodes)
                     {
@@ -478,6 +483,36 @@ namespace FurnaceRT.Equipments.Systems
                 }
             }
         }
+        public Dictionary<string,List<string>> GetXmlElement(string fileName, bool isSystem = false)
+        {
+            Dictionary<string, List<string>> result = new Dictionary<string, List<string>>();
+            XmlDocument xmlDoc = new XmlDocument();
+            var cfDirPath = PathManager.GetCfgDir();
+            var path = cfDirPath + $"IO\\{SC.GetStringValue("System.SetUp.ToolType")}\\{fileName}.xml";
+            if (!File.Exists(path)) return result;
+            xmlDoc.Load(path);
+            XmlNode node = xmlDoc.SelectSingleNode("DeviceModelDefine");
+            foreach (XmlNode item in node.ChildNodes)
+            {
+                if (item.NodeType != XmlNodeType.Element) continue;
+                var element = item as XmlElement;
+                var classType = element.GetAttribute("classType");
+                if (classType == null) continue;
+                classType = classType.Split('.').LastOrDefault();
+                result[classType] = new List<string>();
+                foreach (XmlNode children in item.ChildNodes)
+                {
+                    if (children.Name != classType) continue;//类型限定一致                   
+                    if (children is XmlElement childElement)
+                    {
+                        if (result[classType].Contains(childElement.GetAttribute("id"))) continue;
+                        var key = isSystem ? $"System.{childElement.GetAttribute("id")}.DeviceData" : $"PM1.{childElement.GetAttribute("id")}.DeviceData";
+                        result[classType].Add(key);
+                    }
+                }
+            }
+            return result;
+        }
 
         void SubscribeOperation()
         {

+ 97 - 122
Furnace/FurnaceUI/Views/Operations/NTP/GasDetailViewModel.cs

@@ -16,12 +16,17 @@ using System.Windows;
 using System.Windows.Controls;
 using FurnaceUI.Models;
 using FurnaceUI.Views.Editors;
+using Aitex.Core.RT.Device;
 
 namespace FurnaceUI.Views.Operations
 {
     public class GasDetailViewModel : FurnaceUIViewModelBase
     {
         private GasDetailView _view;
+
+        #region DeviceModelPM
+        private Dictionary<string, List<string>> _ioNameKeyDict;
+        #endregion
         #region MFC
         [Subscription("PM1.MFC1.DeviceData")]
         public AITMfcData MFC1Data { get; set; }
@@ -252,76 +257,76 @@ namespace FurnaceUI.Views.Operations
         #endregion
 
         #region Analog
-        [Subscription("PM1.HTCurrent1.DeviceData")]
-        public AITWaterFlowMeterData HTCurrent1 { get; set; }
-        [Subscription("PM1.HTCurrent2.DeviceData")]
-        public AITWaterFlowMeterData HTCurrent2 { get; set; }
-        [Subscription("PM1.HTCurrent3.DeviceData")]
-        public AITWaterFlowMeterData HTCurrent3 { get; set; }
-        [Subscription("PM1.HTCurrent4.DeviceData")]
-        public AITWaterFlowMeterData HTCurrent4 { get; set; }
-        [Subscription("PM1.HTCurrent5.DeviceData")]
-        public AITWaterFlowMeterData HTCurrent5 { get; set; }
-        [Subscription("PM1.HTVoltage1.DeviceData")]
-        public AITWaterFlowMeterData HTVoltage1 { get; set; }
-        [Subscription("PM1.HTVoltage2.DeviceData")]
-        public AITWaterFlowMeterData HTVoltage2 { get; set; }
-        [Subscription("PM1.HTVoltage3.DeviceData")]
-        public AITWaterFlowMeterData HTVoltage3 { get; set; }
-        [Subscription("PM1.HTVoltage4.DeviceData")]
-        public AITWaterFlowMeterData HTVoltage4 { get; set; }
-        [Subscription("PM1.HTVoltage5.DeviceData")]
-        public AITWaterFlowMeterData HTVoltage5 { get; set; }
-        [Subscription("PM1.HeaterWaterFlow.DeviceData")]
-        public AITWaterFlowMeterData HeaterWaterFlow { get; set; }
-        [Subscription("PM1.MFWaterFlow.DeviceData")]
-        public AITWaterFlowMeterData MFWaterFlow { get; set; }
-        [Subscription("PM1.CAPWaterFlow.DeviceData")]
-        public AITWaterFlowMeterData CAPWaterFlow { get; set; }
-        [Subscription("PM1.A_SWaterFlow.DeviceData")]
-        public AITWaterFlowMeterData A_SWaterFlow { get; set; }
-        [Subscription("PM1.HeaterEXH.DeviceData")]
-        public AITWaterFlowMeterData HeaterEXH { get; set; }
-        [Subscription("PM1.SCVEXH.DeviceData")]
-        public AITWaterFlowMeterData SCVEXH { get; set; }
-        [Subscription("PM1.G_UEXH.DeviceData")]
-        public AITWaterFlowMeterData G_UEXH { get; set; }
-        [Subscription("PM1.PT1Value.DeviceData")]
-        public AITWaterFlowMeterData PT1Value { get; set; }
-        [Subscription("PM1.PT2Value.DeviceData")]
-        public AITWaterFlowMeterData PT2Value { get; set; }
-        [Subscription("PM1.PT3Value.DeviceData")]
-        public AITWaterFlowMeterData PT3Value { get; set; }
-        [Subscription("PM1.PT4Value.DeviceData")]
-        public AITWaterFlowMeterData PT4Value { get; set; }
-        [Subscription("PM1.PT5Value.DeviceData")]
-        public AITWaterFlowMeterData PT5Value { get; set; }
-        [Subscription("PM1.PT6Value.DeviceData")]
-        public AITWaterFlowMeterData PT6Value { get; set; }
-        [Subscription("PM1.P_SW1Value.DeviceData")]
-        public AITWaterFlowMeterData P_SW1Value { get; set; }
-        [Subscription("PM1.P_SW2Value.DeviceData")]
-        public AITWaterFlowMeterData P_SW2Value { get; set; }
-        [Subscription("PM1.VG2Pressure.DeviceData")]
-        public AITWaterFlowMeterData VG2Pressure { get; set; }
-
-        [Subscription("PM1.Tank1Pressure.DeviceData")]
-        public AITWaterFlowMeterData Tank1Pressure { get; set; }
-
-        [Subscription("PM1.Tank2Pressure.DeviceData")]
-        public AITWaterFlowMeterData Tank2Pressure { get; set; }
-
-        [Subscription("PM1.VG21.DeviceData")]
-        public AITWaterFlowMeterData VG21Data { get; set; }
-
-        [Subscription("PM1.VG22.DeviceData")]
-        public AITWaterFlowMeterData VG22Data { get; set; }
-
-        [Subscription("PM1.VG32Pressure.DeviceData")]
-        public AITWaterFlowMeterData VG32Pressure { get; set; }
-
-        [Subscription("PM1.VG33Pressure.DeviceData")]
-        public AITWaterFlowMeterData VG33Pressure { get; set; }
+        //[Subscription("PM1.HTCurrent1.DeviceData")]
+        //public AITWaterFlowMeterData HTCurrent1 { get; set; }
+        //[Subscription("PM1.HTCurrent2.DeviceData")]
+        //public AITWaterFlowMeterData HTCurrent2 { get; set; }
+        //[Subscription("PM1.HTCurrent3.DeviceData")]
+        //public AITWaterFlowMeterData HTCurrent3 { get; set; }
+        //[Subscription("PM1.HTCurrent4.DeviceData")]
+        //public AITWaterFlowMeterData HTCurrent4 { get; set; }
+        //[Subscription("PM1.HTCurrent5.DeviceData")]
+        //public AITWaterFlowMeterData HTCurrent5 { get; set; }
+        //[Subscription("PM1.HTVoltage1.DeviceData")]
+        //public AITWaterFlowMeterData HTVoltage1 { get; set; }
+        //[Subscription("PM1.HTVoltage2.DeviceData")]
+        //public AITWaterFlowMeterData HTVoltage2 { get; set; }
+        //[Subscription("PM1.HTVoltage3.DeviceData")]
+        //public AITWaterFlowMeterData HTVoltage3 { get; set; }
+        //[Subscription("PM1.HTVoltage4.DeviceData")]
+        //public AITWaterFlowMeterData HTVoltage4 { get; set; }
+        //[Subscription("PM1.HTVoltage5.DeviceData")]
+        //public AITWaterFlowMeterData HTVoltage5 { get; set; }
+        //[Subscription("PM1.HeaterWaterFlow.DeviceData")]
+        //public AITWaterFlowMeterData HeaterWaterFlow { get; set; }
+        //[Subscription("PM1.MFWaterFlow.DeviceData")]
+        //public AITWaterFlowMeterData MFWaterFlow { get; set; }
+        //[Subscription("PM1.CAPWaterFlow.DeviceData")]
+        //public AITWaterFlowMeterData CAPWaterFlow { get; set; }
+        //[Subscription("PM1.A_SWaterFlow.DeviceData")]
+        //public AITWaterFlowMeterData A_SWaterFlow { get; set; }
+        //[Subscription("PM1.HeaterEXH.DeviceData")]
+        //public AITWaterFlowMeterData HeaterEXH { get; set; }
+        //[Subscription("PM1.SCVEXH.DeviceData")]
+        //public AITWaterFlowMeterData SCVEXH { get; set; }
+        //[Subscription("PM1.G_UEXH.DeviceData")]
+        //public AITWaterFlowMeterData G_UEXH { get; set; }
+        //[Subscription("PM1.PT1Value.DeviceData")]
+        //public AITWaterFlowMeterData PT1Value { get; set; }
+        //[Subscription("PM1.PT2Value.DeviceData")]
+        //public AITWaterFlowMeterData PT2Value { get; set; }
+        //[Subscription("PM1.PT3Value.DeviceData")]
+        //public AITWaterFlowMeterData PT3Value { get; set; }
+        //[Subscription("PM1.PT4Value.DeviceData")]
+        //public AITWaterFlowMeterData PT4Value { get; set; }
+        //[Subscription("PM1.PT5Value.DeviceData")]
+        //public AITWaterFlowMeterData PT5Value { get; set; }
+        //[Subscription("PM1.PT6Value.DeviceData")]
+        //public AITWaterFlowMeterData PT6Value { get; set; }
+        //[Subscription("PM1.P_SW1Value.DeviceData")]
+        //public AITWaterFlowMeterData P_SW1Value { get; set; }
+        //[Subscription("PM1.P_SW2Value.DeviceData")]
+        //public AITWaterFlowMeterData P_SW2Value { get; set; }
+        //[Subscription("PM1.VG2Pressure.DeviceData")]
+        //public AITWaterFlowMeterData VG2Pressure { get; set; }
+
+        //[Subscription("PM1.Tank1Pressure.DeviceData")]
+        //public AITWaterFlowMeterData Tank1Pressure { get; set; }
+
+        //[Subscription("PM1.Tank2Pressure.DeviceData")]
+        //public AITWaterFlowMeterData Tank2Pressure { get; set; }
+
+        //[Subscription("PM1.VG21.DeviceData")]
+        //public AITWaterFlowMeterData VG21Data { get; set; }
+
+        //[Subscription("PM1.VG22.DeviceData")]
+        //public AITWaterFlowMeterData VG22Data { get; set; }
+
+        //[Subscription("PM1.VG32Pressure.DeviceData")]
+        //public AITWaterFlowMeterData VG32Pressure { get; set; }
+
+        //[Subscription("PM1.VG33Pressure.DeviceData")]
+        //public AITWaterFlowMeterData VG33Pressure { get; set; }
         #endregion
 
         #region PM
@@ -538,7 +543,7 @@ namespace FurnaceUI.Views.Operations
             ValveIsChecked = false;
             AuxIsChecked = false;
             GASSettingSelectCmd("MFC", null);
-
+            _ioNameKeyDict = QueryDataClient.Instance.Service.GetData("System.NameKeyDict") as Dictionary<string,List<string>>;
         }
 
 
@@ -793,35 +798,7 @@ namespace FurnaceUI.Views.Operations
                 {
                     valveData.Add(item);
                 }
-            }
-
-            List<AITWaterFlowMeterData> tempPresure = new List<AITWaterFlowMeterData>();
-            if (Tank1Pressure != null)
-            {
-                tempPresure.Add(Tank1Pressure);
-            }
-            if (Tank2Pressure != null)
-            {
-                tempPresure.Add(Tank2Pressure);
-            }
-            if (VG21Data != null)
-            {
-                tempPresure.Add(VG21Data);
-            }
-
-            if (VG22Data != null)
-            {
-                tempPresure.Add(VG22Data);
-            }
-            if (VG32Pressure != null)
-            {
-                tempPresure.Add(VG32Pressure);
-            }
-            if (VG33Pressure != null)
-            {
-                tempPresure.Add(VG33Pressure);
-            }
-
+            }          
             if (MFCDetailDatas.Count == 0)
             {
                 for (int i = 0; i < tempMFC.Count; i++)
@@ -925,32 +902,30 @@ namespace FurnaceUI.Views.Operations
                 }
             }
 
-
-            if (AnalogDetailDatas.Count == 0)
+            var pressures = QueryDataClient.Instance.Service.PollData(_ioNameKeyDict[DeviceName.IoPressureMeterNameKey]).Values;
+            foreach (var p in pressures)
             {
-                for (int i = 0; i < tempPresure.Count; i++)
+                if (p is AITWaterFlowMeterData pressure)
                 {
-                    if (tempPresure[i] == null) continue;
-                    AnalogDetailDatas.Add(new AnalogDetailValue()
+                    var data = AnalogDetailDatas.FirstOrDefault(r => r.Name == pressure.DeviceName);
+                    if (data == null)
                     {
-                        Name = tempPresure[i].DeviceName,
-                        DisplayName = tempPresure[i].DisplayName,
-                        Unit = tempPresure[i].Unit,
-                        Feedback = tempPresure[i].FeedBack.ToString("F1")
-                    });
-                }
-            }
-            else
-            {
-                for (int i = 0; i < tempPresure.Count; i++)
-                {
-                    if (tempPresure[i] == null) continue;
-                    AnalogDetailDatas[i].Name = tempPresure[i].DeviceName;
-                    AnalogDetailDatas[i].DisplayName = tempPresure[i].DeviceName;
-                    AnalogDetailDatas[i].Unit = tempPresure[i].Unit;
-                    AnalogDetailDatas[i].Feedback = tempPresure[i].FeedBack.ToString("F1");
+                        AnalogDetailDatas.Add(new AnalogDetailValue()
+                        {
+                            Name = pressure.DeviceName,
+                            DisplayName = pressure.DisplayName,
+                            Unit = pressure.Unit,
+                            Feedback = pressure.FeedBack.ToString("F1")
+                        });
+                    }
+                    else
+                    {
+                        data.DisplayName = pressure.DeviceName;
+                        data.Unit = pressure.Unit;
+                        data.Feedback = pressure.FeedBack.ToString("F1");
+                    }
                 }
-            }
+            }      
         }
 
         public void MFCSetCmd(object senderName, object sender, object typeName, double maxValue)

+ 4 - 0
Furnace/FurnaceUI/Views/Recipes/RecipeJobViewModel.cs

@@ -412,6 +412,10 @@ namespace FurnaceUI.Views.Recipes
                 // var recipes = _recipeProvider.GetXmlRecipeList(prefix);
                 type.FileListByProcessType = RecipeSequenceTreeBuilder.GetFileNodeParameterList(prefix);// RecipeSequenceTreeBuilder.BuildFileNode(prefix, "", false, recipes)[0].Files;
                 ProcessTypeFileList.Add(type);
+                if (type.FileListByProcessType?.Count > 0 && !type.FileListByProcessType.Any(r => r.IsSelected))
+                {
+                    type.FileListByProcessType.First().IsSelected = true;
+                }
                 RecipeFileList = type.FileListByProcessType.FirstOrDefault()?.Files.ToList();
             }
             //if (ProcessTypeFileList[0].FileListByProcessType.Count > 0)

+ 4 - 0
Furnace/FurnaceUI/Views/Recipes/RecipeLayoutViewModel.cs

@@ -403,6 +403,10 @@ namespace FurnaceUI.Views.Recipes
                 // var recipes = _recipeProvider.GetXmlRecipeList(prefix);
                 type.FileListByProcessType = RecipeSequenceTreeBuilder.GetFileNodeParameterList(prefix);// RecipeSequenceTreeBuilder.BuildFileNode(prefix, "", false, recipes)[0].Files;
                 ProcessTypeFileList.Add(type);
+                if (type.FileListByProcessType?.Count > 0&&!type.FileListByProcessType.Any(r=>r.IsSelected))//default 
+                {
+                    type.FileListByProcessType.First().IsSelected = true;
+                }
                 RecipeFileList = type.FileListByProcessType.FirstOrDefault()?.Files.ToList();
             }
             //if (ProcessTypeFileList[0].FileListByProcessType.Count > 0)

+ 4 - 0
Furnace/FurnaceUI/Views/Recipes/RecipeViewModel.cs

@@ -434,6 +434,10 @@ namespace FurnaceUI.Views.Recipes
                 // var recipes = _recipeProvider.GetXmlRecipeList(prefix);
                 type.FileListByProcessType = RecipeSequenceTreeBuilder.GetFileNodeParameterList(prefix);// RecipeSequenceTreeBuilder.BuildFileNode(prefix, "", false, recipes)[0].Files;
                 ProcessTypeFileList.Add(type);
+                if (type.FileListByProcessType?.Count > 0 && !type.FileListByProcessType.Any(r => r.IsSelected))
+                {
+                    type.FileListByProcessType.First().IsSelected = true;
+                }
                 RecipeFileList = type.FileListByProcessType.FirstOrDefault()?.Files.ToList();
             }
             //if (ProcessTypeFileList[0].FileListByProcessType.Count > 0)