瀏覽代碼

过站明细

WIN-GH9CEESPLTB\Administrator 1 月之前
父節點
當前提交
b971dc5436
共有 3 個文件被更改,包括 269 次插入1 次删除
  1. 216 0
      MainForm/ClassFile/XiaomiAPI_MES/XiaomiMESEnum_ProcessData.cs
  2. 43 1
      MainForm/FaForm/Form_Home.cs
  3. 10 0
      MainForm/MainForm.csproj

+ 216 - 0
MainForm/ClassFile/XiaomiAPI_MES/XiaomiMESEnum_ProcessData.cs

@@ -0,0 +1,216 @@
+using System;
+using System.Reflection;
+
+namespace MainForm.ClassFile.XiaomiAPI
+{
+    /// <summary>
+    /// 小米mes过站明细枚举
+    /// </summary>
+    public class XiaomiMESEnum_ProcessData
+    {
+        /// <summary>
+        /// [OP10]壳体清洁上料 枚举
+        /// </summary>
+       public enum Enum_10_ProcessData
+        {
+            [Description("抛料次数")]
+            nThrowCount,
+            [Description("清洁气压")]
+            fCleanAirPress,
+            [Description("清洁速度")]
+            fCleanSpeed,
+            [Description("风刀高度")]
+            fWindBladeHeight,
+            [Description("清洁时间")]
+            fCleanTime,
+            [Description("清洁次数")]
+            nCleanCount,
+            [Description("外壳体余料数")]
+            nRemainCount
+        }
+
+        /// <summary>
+        /// [OP20]上盖板上料装备
+        /// </summary>
+        enum Enum_20_ProcessData
+        {
+            [Description("抛料次数")]
+            nThrowCount,
+            [Description("上盖余料数")]
+            nRemainCount
+        }
+
+        /// <summary>
+        /// [OP30]点散热胶装备
+        /// </summary>
+        enum Enum_30_ProcessData
+        {
+            [Description("供胶速度")]
+            fGlueSupplySpeed,
+            [Description("AB管气压")]
+            fAB_AirPress,
+            [Description("AB管气压差")]
+            fAB_AirPressDiff,
+            [Description("产品测高信息")]
+            fMesHeightInfos,
+            [Description("定期称重数据")]
+            fIntervalWeights,
+            [Description("剩余胶量")]
+            fRemainGlues
+        }
+
+        /// <summary>
+        /// [OP40]胶线检测
+        /// </summary>
+        enum Enum_40_ProcessData
+        {
+            [Description("胶线位置X偏差")]
+            fGluePosX,
+            [Description("胶线位置Y偏差")]
+            fGluePosY,
+            [Description("胶线面积")]
+            fGlue_Areas,
+            [Description("胶线高度")]
+            fGlue_Heights,
+            [Description("胶线检测结果")]
+            nResult
+        }
+
+        /// <summary>
+        /// [OP50]ADD板上料组装装备
+        /// </summary>
+        enum Enum_50_ProcessData
+        {
+            [Description("是否组装到位")]
+            nIsAddPCBAsmOK,
+            [Description("是否有ADD板")]
+            nHaveAddPCB,
+            [Description("装ADD板的压力")]
+            fForceAddPCB,
+            [Description("ADD板余料数")]
+            nRemainCount
+
+        }
+
+        /// <summary>
+        /// [OP60]组上盖板
+        /// </summary>
+        enum Enum_60_ProcessData
+        {
+            [Description("是否组装到位")]
+            nIsTopCoverAsmOK,
+            [Description("是否有上盖板")]
+            nHaveTopCover,
+            [Description("装上盖板的压力")]
+            fForceTopCover
+
+        }
+
+        /// <summary>
+        /// [OP70]上盖板锁螺丝
+        /// </summary>
+        enum Enum_70_ProcessData
+        {
+            [Description("锁附时间")]
+            fScrewTimes,
+            [Description("锁附顺序")]
+            nScrewOrders,
+            [Description("锁附结果")]
+            nScrewResults,
+            [Description("螺丝余料数")]
+            nRemainCount,
+        }
+
+        /// <summary>
+        /// [OP80]NG下料
+        /// </summary>
+        enum Enum_80_ProcessData
+        {
+            [Description("螺丝高度")]
+            fScrewHeights,
+            [Description("螺丝检测结果")]
+            nScrewResults
+        }
+
+        /// <summary>
+        /// [OP90]半成品下料
+        /// </summary>
+        enum Enum_90_ProcessData
+        {
+            [Description("抛料次数")]
+            nThrowCount,
+            [Description("料箱余料数")]
+            nRemainCount
+        }
+
+    }
+
+    //自定义枚举属性描述
+    [AttributeUsage(AttributeTargets.Field, AllowMultiple = false)]
+    public class DescriptionAttribute : Attribute
+    {
+        public string Description { get; }
+
+        public DescriptionAttribute(string description)
+        {
+            Description = description;
+        }
+    }
+
+    public static class XiaomiMESEnumMethod {
+        /// <summary>
+        /// 获取枚举描述
+        /// </summary>
+        /// <typeparam name="TEnum"></typeparam>
+        /// <param name="value">枚举名称</param>
+        /// <returns></returns>
+        /// <exception cref="ArgumentException"></exception>
+        public static string GetEnumDescription<TEnum>(TEnum value) where TEnum : struct, IConvertible
+        {
+            if (!typeof(TEnum).IsEnum)
+                throw new ArgumentException("TEnum 必须是枚举类型");
+
+            var fieldInfo = value.GetType().GetField(value.ToString());
+            var descriptionAttribute = fieldInfo.GetCustomAttributes(typeof(DescriptionAttribute), false) as DescriptionAttribute[];
+
+            if (descriptionAttribute == null || descriptionAttribute.Length == 0)
+                return value.ToString(); // 如果没有描述特性,返回枚举成员名称
+
+            return descriptionAttribute[0].Description;
+        }
+
+        /// <summary>
+        /// 获取枚举描述
+        /// </summary>
+        /// <param name="enumName"></param>
+        /// <returns></returns>
+        /// <exception cref="ArgumentException"></exception>
+        public static string GetEnumDescriptionByName(string enumName, Type enumType)
+        {
+            if (string.IsNullOrEmpty(enumName))
+                throw new ArgumentException("枚举名称不能为空", nameof(enumName));
+
+            // 将字符串转换为枚举值
+            Enum enumValue;
+            try
+            {
+                enumValue = (Enum)Enum.Parse(enumType, enumName);
+            }
+            catch (ArgumentException)
+            {
+                throw new ArgumentException("无效的枚举名称");
+            }
+
+            // 获取字段信息
+            FieldInfo fieldInfo = enumValue.GetType().GetField(enumValue.ToString());
+            if (fieldInfo == null)
+                return enumName; // 如果没有找到字段信息,则返回原始名称
+
+            // 获取描述特性
+            DescriptionAttribute attribute = Attribute.GetCustomAttribute(fieldInfo, typeof(DescriptionAttribute)) as DescriptionAttribute;
+            return attribute != null ? attribute.Description : enumValue.ToString();
+        }
+
+    }
+
+}

+ 43 - 1
MainForm/FaForm/Form_Home.cs

@@ -44,6 +44,8 @@ using static MainForm.ClassFile.XiaomiAPI.XiaomiMqttClient_Extend;
 using System.Net.Http;
 using static MainForm.ClassFile.XiaomiAPI_MES.XiaomiMESHttp_UpLoadFile;
 using static System.Windows.Forms.VisualStyles.VisualStyleElement.Tab;
+using System.Reflection;
+using static MainForm.ClassFile.XiaomiAPI_MES.XiaomiMESHttp_StationOutbound.XmMES_StationOutRequest_Body;
 
 /*
  * 注:本源码对外提供,所以有些地方使用中文命名方法及变量
@@ -1713,6 +1715,20 @@ namespace MainForm
                                 });
                         }
                     }
+                    //过站明细
+                    if (jsonParm.Length > 0)
+                    {
+                        // 解析JSON字符串为字典
+                        var dictionary = JsonConvert.DeserializeObject<Dictionary<string, string>>(jsonParm);
+                        foreach (var kvp in dictionary) {
+                            outRequest_Body.unitData.processData.Add(
+                                new XmMES_StationOutRequest_Body.XmStationOut_ProcessData()
+                                {
+                                    dataName = kvp.Key.ToString(),
+                                    dataValue = kvp.Value.ToString()
+                                });
+                        }
+                    }
 
                     string jsonstr1 = JsonConvert.SerializeObject(outRequest_Body);
 
@@ -2675,6 +2691,15 @@ namespace MainForm
                                     if (!ProgressState)
                                     {
                                         ProgressState = true;
+
+                                        stPLC_MesData.mesData.nThrowCount = 1;
+                                        stPLC_MesData.mesData.fCleanAirPress = 4;
+                                        stPLC_MesData.mesData.fCleanSpeed = 2;
+                                        stPLC_MesData.mesData.fWindBladeHeight = 5;
+                                        stPLC_MesData.mesData.fCleanTime = 2;
+                                        stPLC_MesData.mesData.nCleanCount = 7;
+                                        stPLC_MesData.mesData.nRemainCount = 1;
+
                                         Task.Run(() => S1出站(plcNo, stationNameStr, stPLC_MesData,
                                             tagBaseName + "." + tagMesCommName, stationCode, stationName,
                                             out ProgressState));
@@ -2900,7 +2925,24 @@ namespace MainForm
                     Parameter_value = sn,
                     Parameter_unit = ""
                 });
-                string paramJson = JsonConvert.SerializeObject(stPLC_MesData.mesData);
+                #region  转换过站明细字符串
+                //创建字典
+                var dic = new Dictionary<string, string>();
+                // 获取结构体类型
+                FieldInfo[] fields = typeof(OP10_DataSet_t).GetFields();
+
+                // 遍历变量名转换成字典描述
+                foreach (FieldInfo field in fields)
+                {
+                    //获取枚举描述
+                    string name = XiaomiMESEnumMethod.GetEnumDescriptionByName(field.Name, typeof(XiaomiMESEnum_ProcessData.Enum_10_ProcessData));
+                    //获取过站明细的值
+                    object valueObj = field.GetValue(stPLC_MesData.mesData);
+                    dic.Add(name, valueObj.ToString());
+                }
+                string paramJson = JsonConvert.SerializeObject(dic);
+                #endregion
+
                 //出站接口
                 int result1 = SwitctProcessData(stationNameStr, items, equipmentCode, processItem
     , workorder_code, batch_num, mtltmrk, plcDate_YMD, supplierCode, sn, pass, CarrierBarcode, "1", MachineId, StationId, "", paramJson);

+ 10 - 0
MainForm/MainForm.csproj

@@ -291,6 +291,7 @@
     <Compile Include="ClassFile\XiaomiAPI_MES\XiaomiMESHttp_UpLoadFile.cs" />
     <Compile Include="ClassFile\XiaomiAPI_MES\XiaomiMESHttp_X5.cs" />
     <Compile Include="ClassFile\XiaomiAPI_MES\XiaomiMESResponse_ErrCode.cs" />
+    <Compile Include="ClassFile\XiaomiAPI_MES\XiaomiMESEnum_ProcessData.cs" />
     <Compile Include="ClassFile\XiaomiAPI_RouteCom\XiaomiMES_RouteCommunication.cs" />
     <Compile Include="ClassFile\XiaomiClass\AGVHelper.cs" />
     <Compile Include="ClassFile\XiaomiClass\IoTHelper.cs" />
@@ -477,6 +478,15 @@
     </Content>
     <None Include="CheckOneData.ini" />
     <None Include="Config.ini" />
+    <None Include="DBFile\小米-IoT报警字典_10_壳体清洁上料.xlsx" />
+    <None Include="DBFile\小米-IoT报警字典_20_上盖板上料装备.xlsx" />
+    <None Include="DBFile\小米-IoT报警字典_30_点散热胶装备.xlsx" />
+    <None Include="DBFile\小米-IoT报警字典_40_胶线检测.xlsx" />
+    <None Include="DBFile\小米-IoT报警字典_50_ADD板上料组装装备.xlsx" />
+    <None Include="DBFile\小米-IoT报警字典_60_组上盖板.xlsx" />
+    <None Include="DBFile\小米-IoT报警字典_70_上盖板锁螺丝.xlsx" />
+    <None Include="DBFile\小米-IoT报警字典_80_NG下料.xlsx" />
+    <None Include="DBFile\小米-IoT报警字典_90_半成品下料.xlsx" />
     <None Include="MESConfig.ini" />
     <None Include="packages.config" />
     <None Include="Properties\Settings.settings">