using FBoxClientDriver.Contract;
using Microsoft.AspNetCore.Cors;
using Microsoft.AspNetCore.SignalR;
using Microsoft.Extensions.Logging;
using NLog;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Serilog;
using InitQ.Cache;
using Microsoft.Extensions.DependencyInjection;

namespace Ropin.Environmentally.WebScada.Hubs
{
    [EnableCors("cors")]
    public class MyHub : Hub
    {
        private readonly ILogger<MyHub> _logger;
        DeviceValueModel device = new DeviceValueModel();
        private readonly IServiceProvider _provider;
        private static readonly log4net.ILog log = log4net.LogManager.GetLogger(typeof(MyHub));
        public MyHub(ILogger<MyHub> logger, IServiceProvider provider)
        {
            _logger = logger;
            _provider = provider;
        }
        public Task SendMessage(string devId)
        {
            log.Info($"SendMessage接口到的数据【{devId}】");
            using (var scope = _provider.GetRequiredService<IServiceScopeFactory>().CreateScope())
            {
                // 获取调用方的ID
                string clientId = Context.ConnectionId;
                log.Info($"Context.ConnectionId【{clientId}】");
                var _redisService = scope.ServiceProvider.GetService<ICacheService>();
                var devValues = _redisService.Get("fanyibox_devStore_" + devId);
                log.Info($"webSocket_devStore_{devId}数据:【{devValues}】");

                _redisService.SetAsync($"webSocket_devStore_{devId}", "1");

                return Clients.All.SendAsync("webSocket_devStore_" + devId, devValues);
                //_hubContext.Clients.All.SendAsync("webSocket_devStore_", str);
                // 向所有客户端广播消息,除了发送者
                //Clients.AllExcept(new[] { Context.ConnectionId }).SendAsync("ReceiveMessage", $"{clientId} says: {message}");

                // 如果需要向特定的客户端发送消息,可以使用Clients.Client(connectionId)
                // 例如,向ID为特定connectionId的客户端发送消息
                //return Clients.Client(clientId).SendAsync("webSocket_devStore_"+ devId,devValues);
            }
        }
        [EnableCors("cors")]
        /// <summary>
        /// 这个方法允许客户端调用
        /// </summary>
        public Task UpdateDataServer(DataStatus data)
        {
            Log.Logger = new LoggerConfiguration()
           .MinimumLevel.Information()
           .WriteTo.Console()
           .WriteTo.File("log/log.txt",
               rollingInterval: RollingInterval.Day,
               rollOnFileSizeLimit: true)
           .CreateLogger();
            
            using (var dmon = new demo())
            {
                dmon._fbox.DataMonitorValueChanged += _fbox_DataMonitorValueChanged;
                dmon.Start().Wait();

                //Thread.Sleep(3000);

                //调用方法
                // dmon.WriteValue();


                string ln = "aa";
                do
                {
                    ln = Console.ReadLine();
                } while (ln != "quit");
                Log.CloseAndFlush();
            }
            // 在里面可以调用客户端的方法
            return Clients.All.SendAsync("UpdateData", data);
        }
        //public override async Task OnConnectedAsync()
        //{
        //    await Clients.All.SendAsync("UpdateData", "上线");
        //}

        private void _fbox_DataMonitorValueChanged(object sender, IList<DataMonitorValueChangedArgs> e)
        {

            foreach (var dmon in e)
            {
                var deviceValue = $"dmv:{dmon.Uid},Value:{dmon.Value},Status:{dmon.Status},BoxNo:{dmon.BoxNo},Name:{dmon.Name},BoxId:{dmon.BoxId},GroupName:{dmon.GroupName},Timestamp:{dmon.Timestamp}";
                //Console.WriteLine(deviceValue);
                //_logger.LogInformation(deviceValue);
                Log.Information(deviceValue);
                System.DateTime currentTime = new System.DateTime();
                currentTime = System.DateTime.Now;
                Console.WriteLine(currentTime);
                //Clients.All.SendAsync("UpdateData", deviceValue);
                if (dmon.BoxNo.Equals("300220010352")) //shanghai
                {
                    switch (dmon.Uid)
                    {
                        case 224872264061309166:  //自动油雾过滤器电子差压计D0实际值  喷漆房1
                            device.Value = dmon.Value?.ToString().Split('.')[0];
                            device.Name = "自动油雾过滤器电子差压计D0实值";
                            break;
                        case 224872320671830341:  //前处理过滤箱电子差压计D2实际值  喷漆房1
                            device.Value10 = dmon.Value?.ToString().Split('.')[0];
                            device.Name10 = dmon.Name;
                            break;
                        case 224872358809588078:  //前处理过滤箱电子差压计D3实际值  喷漆房1
                            device.Value11 = dmon.Value?.ToString().Split('.')[0];
                            device.Name11 = dmon.Name;
                            break;
                        case 224872398136431165:  //前处理过滤箱电子差压计D4实际值  喷漆房1
                            device.Value12 = dmon.Value?.ToString().Split('.')[0];
                            device.Name12 = dmon.Name;
                            break;
                        
                        case 224870861103322707:  //\"数据块_1\".运行时间记录_D  喷漆房1
                            device.Value13 = dmon.Value?.ToString().Split('.')[0];
                            device.Name13 = "运行时间";
                            break;
                        case 224870964895569613:  //\"数据块_1\".运行时间记录_H  喷漆房1
                            device.Value14 = dmon.Value?.ToString().Split('.')[0];
                            device.Name14 = "运行时间";
                            break;
                        case 224871047406966583:  //\"数据块_1\".运行时间记录_M  喷漆房1
                            device.Value15 = dmon.Value?.ToString().Split('.')[0];
                            device.Name15 = "运行时间";
                            break;
                        case 224870797169546552:  //报警1 喷漆房1
                            device.Value16 = dmon.Value?.ToString().Split('.')[0];
                            device.Name16 = dmon.Name;
                            break;
                        case 224870694618813617:  //主加热器1 喷漆房1
                            device.Value17 = dmon.Value?.ToString().Split('.')[0];
                            device.Name17 = "主加热器";
                            break;
                        case 224870729933804772:  //辅助加热器1 喷漆房1
                            device.Value18 = dmon.Value?.ToString().Split('.')[0];
                            device.Name18 = "辅助加热器";
                            break;
                        case 224870650814550567:  //主风机1 喷漆房1
                            device.Value19 = dmon.Value?.ToString();
                            device.Name19 = dmon.Name;
                            break;


                        //case 224872612786230640: //自动油雾过滤器电子差压计D0实际值  喷漆房2
                        //    device.Value12 = dmon.Value?.ToString().Split('.')[0];
                        //    device.Name12 = dmon.Name;
                        //    break;
                        //case 224872713744176788: //前处理过滤箱电子差压计D2实际值  喷漆房2
                        //    device.Value13 = dmon.Value?.ToString().Split('.')[0];
                        //    device.Name13 = dmon.Name;
                        //    break;
                        //case 224872753250326203://前处理过滤箱电子差压计D3实际值  喷漆房2
                        //    device.Value14 = dmon.Value?.ToString().Split('.')[0];
                        //    device.Name14 = dmon.Name;
                        //    break;

                        //case 224873107568351846: //前处理过滤箱电子差压计D2实际值  喷漆房3
                        //    device.Value15 = dmon.Value?.ToString().Split('.')[0];
                        //    device.Name15 = dmon.Name;
                        //    break;
                        //case 224873198976916185: //前处理过滤箱电子差压计D3实际值  喷漆房3
                        //    device.Value16 = dmon.Value?.ToString().Split('.')[0];
                        //    device.Name16 = dmon.Name;
                        //    break;
                        //case 224873045402475044://自动油雾过滤器电子差压计D1实际值  喷漆房3
                        //    device.Value17 = dmon.Value?.ToString().Split('.')[0];
                        //    device.Name17 = dmon.Name;
                        //    break;





                        default:
                            break;

                    }
                }
                if (dmon.BoxNo.Equals("300220010352")) //喷漆房2
                {
                    switch (dmon.Uid)
                    {

                        #region 喷漆房2
                        case 224872612786230640:  //自动油雾过滤器电子差压计D0实际值  喷漆房2
                            device.ValueB = dmon.Value?.ToString().Split('.')[0];
                            device.NameB = "自动油雾过滤器电子差压计D0实值";
                            break;
                        case 224872713744176788:  //前处理过滤箱电子差压计D2实际值  喷漆房2
                            device.ValueB10 = dmon.Value?.ToString().Split('.')[0];
                            device.NameB10 = dmon.Name;
                            break;
                        case 224872753250326203:  //前处理过滤箱电子差压计D3实际值  喷漆房2
                            device.ValueB11 = dmon.Value?.ToString().Split('.')[0];
                            device.NameB11 = "前处理过滤箱电子差压计D3实际值";
                            break;
                        case 224872793931929321:  //蜂窝沸石转筒电子差压计D4实际值  喷漆房2
                            device.ValueB12 = dmon.Value?.ToString().Split('.')[0];
                            device.NameB12 = dmon.Name;
                            break;

                        case 224258613904301846:  //\"数据块_1\".运行时间记录_D  喷漆房2
                            device.ValueB13 = dmon.Value?.ToString().Split('.')[0];
                            device.NameB13 = "运行时间";
                            break;
                        case 224258495862952967:  //\"数据块_1\".运行时间记录_H  喷漆房2
                            device.ValueB14 = dmon.Value?.ToString().Split('.')[0];
                            device.NameB14 = "运行时间";
                            break;
                        case 224258680408133884:  //\"数据块_1\".运行时间记录_M  喷漆房2
                            device.ValueB15 = dmon.Value?.ToString().Split('.')[0];
                            device.NameB15 = "运行时间";
                            break;
                        case 224257908353160069:  //报警2 喷漆房2
                            device.ValueB16 = dmon.Value?.ToString().Split('.')[0];
                            device.NameB16 = dmon.Name;
                            break;
                        case 224257839222641425:  //主加热器2 喷漆房2
                            device.ValueB17 = dmon.Value?.ToString().Split('.')[0];
                            device.NameB17 = "主加热器";
                            break;
                        case 224257877813384018:  //辅助加热器2 喷漆房2
                            device.ValueB18 = dmon.Value?.ToString().Split('.')[0];
                            device.NameB18 = "辅助加热器";
                            break;
                        case 224257666812632474:  //主风机2 喷漆房2
                            device.ValueB19 = dmon.Value?.ToString();
                            device.NameB19 = dmon.Name;
                            break;
                        #endregion

                        default:
                            break;

                    }
                }
                if (dmon.BoxNo.Equals("300220010352")) //喷漆房3
                {
                    switch (dmon.Uid)
                    {

                        #region 喷漆房3
                        case 224872971032222163:  //自动油雾过滤器电子差压计D0实际值  喷漆房3
                            device.ValueC = dmon.Value?.ToString().Split('.')[0];
                            device.NameC = "自动油雾过滤器电子差压计D0实值";
                            break;
                        case 224873045402475044:  //前处理过滤箱电子差压计D2实际值  喷漆房3
                            device.ValueC10 = dmon.Value?.ToString().Split('.')[0];
                            device.NameC10 = "自动油雾过滤器电子差压计D1实值";
                            break;
                        case 224873198976916185:  //前处理过滤箱电子差压计D3实际值  喷漆房3
                            device.ValueC11 = dmon.Value?.ToString().Split('.')[0];
                            device.NameC11 = dmon.Name;
                            break;
                        case 224873254060711069:  //蜂窝沸石转筒电子差压计D4实际值  喷漆房3
                            device.ValueC12 = dmon.Value?.ToString().Split('.')[0];
                            device.NameC12 = dmon.Name;
                            break;

                        case 224274954993426315:  //\"数据块_1\".运行时间记录_D  喷漆房3
                            device.ValueC13 = dmon.Value?.ToString().Split('.')[0];
                            device.NameC13 = "运行时间";
                            break;
                        case 224274989968678850:  //\"数据块_1\".运行时间记录_H  喷漆房3
                            device.ValueC14 = dmon.Value?.ToString().Split('.')[0];
                            device.NameC14 = "运行时间";
                            break;
                        case 224274745723870963:  //\"数据块_1\".运行时间记录_M  喷漆房3
                            device.ValueC15 = dmon.Value?.ToString().Split('.')[0];
                            device.NameC15 = "运行时间";
                            break;
                        case 224258807236547733:  //报警3 喷漆房3
                            device.ValueC16 = dmon.Value?.ToString().Split('.')[0];
                            device.NameC16 = dmon.Name;
                            break;
                        case 224258724932768342:  //主加热器3 喷漆房3
                            device.ValueC17 = dmon.Value?.ToString().Split('.')[0];
                            device.NameC17 = "主加热器";
                            break;
                        case 224258769723740974:  //辅助加热器3 喷漆房3
                            device.ValueC18 = dmon.Value?.ToString().Split('.')[0];
                            device.NameC18 = "辅助加热器";
                            break;
                        case 224257779157061674:  //主风机3 喷漆房3
                            device.ValueC19 = dmon.Value?.ToString();
                            device.NameC19 = dmon.Name;
                            break;
                        #endregion

                        default:
                            break;

                    }
                }
                if (dmon.BoxNo.Equals("300220010352")) //喷漆房4
                {
                    switch (dmon.Uid)
                    {

                        #region 喷漆房4
                        case 224873538997605040:  //自动油雾过滤器电子差压计D0实际值  喷漆房4
                            device.ValueD = dmon.Value?.ToString().Split('.')[0];
                            device.NameD = "自动油雾过滤器电子差压计D0实值";
                            break;
                        case 224873575130485457:  //前处理过滤箱电子差压计D2实际值  喷漆房4
                            device.ValueD10 = dmon.Value?.ToString().Split('.')[0];
                            device.NameD10 = dmon.Name;
                            break;
                        case 224873679711261516:  //前处理过滤箱电子差压计D3实际值  喷漆房4
                            device.ValueD11 = dmon.Value?.ToString().Split('.')[0];
                            device.NameD11 = dmon.Name;
                            break;
                        case 224873715894473966:  //蜂窝沸石转筒电子差压计D4实际值  喷漆房4
                            device.ValueD12 = dmon.Value?.ToString().Split('.')[0];
                            device.NameD12 = dmon.Name;
                            break;

                        case 224275677238940201:  //\"数据块_1\".运行时间记录_D  喷漆房4
                            device.ValueD13 = dmon.Value?.ToString().Split('.')[0];
                            device.NameD13 = "运行时间";
                            break;
                        case 224275487304077613:  //\"数据块_1\".运行时间记录_H  喷漆房4
                            device.ValueD14 = dmon.Value?.ToString().Split('.')[0];
                            device.NameD14 = "运行时间";
                            break;
                        case 224275633134785002:  //\"数据块_1\".运行时间记录_M  喷漆房4
                            device.ValueD15 = dmon.Value?.ToString().Split('.')[0];
                            device.NameD15 = "运行时间";
                            break;
                        case 224275157925384276:  //报警4 喷漆房4
                            device.ValueD16 = dmon.Value?.ToString().Split('.')[0];
                            device.NameD16 = dmon.Name;
                            break;
                        case 224274232172240099:  //主加热器4 喷漆房4
                            device.ValueD17 = dmon.Value?.ToString().Split('.')[0];
                            device.NameD17 = "主加热器";
                            break;
                        case 224274264027979000:  //辅助加热器4 喷漆房4
                            device.ValueD18 = dmon.Value?.ToString().Split('.')[0];
                            device.NameD18 = "辅助加热器";
                            break;
                        case 224257795187691889:  //主风机4 喷漆房4
                            device.ValueD19 = dmon.Value?.ToString();
                            device.NameD19 = dmon.Name;
                            break;
                        #endregion

                        default:
                            break;

                    }
                }
                if (dmon.BoxNo.Equals("300221100748")) //大厂
                {
                    switch (dmon.Uid)
                    {

                        #region 大厂
                        case 254066938408343960:  //非甲烷总烃
                            device.ValueE = dmon.Value?.ToString().Split('.')[0];
                            device.NameE = dmon.Name;
                            break;
                        case 254066938411489690:  //废气温度
                            device.ValueE10 = dmon.Value?.ToString().Split('.')[0];
                            device.NameE10 = dmon.Name;
                            break;
                        case 254066938413586843:  //废气压力
                            device.ValueE11 = dmon.Value?.ToString().Split('.')[0];
                            device.NameE11 = dmon.Name;
                            break;
                        case 254066938414635420:  //废气流速
                            device.ValueE12 = dmon.Value?.ToString().Split('.')[0];
                            device.NameE12 = dmon.Name;
                            break;

                        case 254066938416732573:  //废气湿度
                            device.ValueE13 = dmon.Value?.ToString().Split('.')[0];
                            device.NameE13 = dmon.Name;
                            break;
                        case 254066938417781150:  //废气标态流量
                            device.ValueE14 = dmon.Value?.ToString().Split('.')[0];
                            device.NameE14 = dmon.Name;
                            break;
                        case 254066938418829727:  //甲烷
                            device.ValueE15 = dmon.Value?.ToString().Split('.')[0];
                            device.NameE15 = dmon.Name;
                            break;
                        case 254066938420926880:  //总烃
                            device.ValueE16 = dmon.Value?.ToString().Split('.')[0];
                            device.NameE16 = dmon.Name;
                            break;
                        case 254066938421975457:  //苯
                            device.ValueE17 = dmon.Value?.ToString().Split('.')[0];
                            device.NameE17 = dmon.Name;
                            break;
                        case 254066938424072610:  //甲苯
                            device.ValueE18 = dmon.Value?.ToString().Split('.')[0];
                            device.NameE18 = dmon.Name;
                            break;
                        case 254066938426169763:  //二甲苯
                            device.ValueE19 = dmon.Value?.ToString();
                            device.NameE19 = dmon.Name;
                            break;
                        #endregion

                        default:
                            break;

                    }
                }
                else if(dmon.BoxNo.Equals("300220010335"))//anhui
                {
                    switch (dmon.Uid)
                    {

                        case 225981570888392599: //调节阀1开度 
                            device.Value20 = dmon.Value?.ToString().Split('.')[0];
                            device.Name20 = dmon.Name;
                            break;
                        case 225887304201690740:  //实际开度1 默认组
                            device.Value21 = dmon.Value?.ToString().Split('.')[0];
                            device.Name21 = dmon.Name;
                            break;
                        case 225887469583093963: //实际开度2 默认组
                            device.Value22 = dmon.Value?.ToString().Split('.')[0];
                            device.Name22 = dmon.Name;
                            break;
                        case 225981611964260302: //调节阀2开度 默认组
                            device.Value23 = dmon.Value?.ToString().Split('.')[0];
                            device.Name23 = dmon.Name;
                            break;
                        case 225887536297694857: //实际开度3 默认组
                            device.Value24 = dmon.Value?.ToString().Split('.')[0];
                            device.Name24 = dmon.Name;
                            break;
                        case 225981652471795782: //调节阀3开度  默认组
                            device.Value25 = dmon.Value?.ToString().Split('.')[0];
                            device.Name25 = dmon.Name;
                            break;
                        case 225975315764502499: //前轴振动实际值 默认组
                            device.Value26 = dmon.Value?.ToString().Split('.')[0];
                            device.Name26 = dmon.Name;
                            break;
                        case 225975390380118077: //后轴振动实际值  默认组
                            device.Value27 = dmon.Value?.ToString().Split('.')[0];
                            device.Name27 = dmon.Name;
                            break;
                        case 225975436688380055: //空气压力实际值 默认组
                            device.Value28 = dmon.Value?.ToString().Split('.')[0];
                            device.Name28 = dmon.Name;
                            break;
                        case 225982560290101472: //1 - 5仓压差实际值  默认组
                            device.Value29 = dmon.Value?.ToString().Split('.')[0];
                            device.Name29 = dmon.Name;
                            break;
                        default:
                            break;

                    }
                }

                //Clients.All.SendAsync("UpdateDeviceData", new MsgInfo { MsgContent = dmon.Value.ToString(), Title = dmon.Name } );
                //Clients.All.SendAsync("UpdateData", new MsgInfo { Title = dmon.Value.ToString(), MsgContent = dmon.Name });
                //Clients.All.SendAsync("ShowMsg", new MsgInfo { Title = "DeviceTitle", MsgContent = deviceValue });
                //logger.Info("时间" + currentTime + "Uid" + dmon.Uid + "名称:" + dmon.Name + "值:" + dmon.Value + "状态:" + dmon.Status + "盒子号:" + dmon.BoxNo + "分组名称:" + dmon.GroupName + "时间" + dmon.Timestamp);

            }
            Clients.All.SendAsync("UpdateDeviceData", device);
            //接收数据,先存数据,再把数据显示到页面上
        }
    }

    public class DeviceValueModel
    {
        public string Name { get; set; }
        public string Value { get; set; }

        public string Name10 { get; set; }
        public string Value10 { get; set; }

        public string Name11 { get; set; }
        public string Value11 { get; set; }

        public string Name12 { get; set; }
        public string Value12 { get; set; }

        public string Name13 { get; set; }
        public string Value13 { get; set; }

        public string Name14 { get; set; }
        public string Value14 { get; set; }

        public string Name15 { get; set; }
        public string Value15 { get; set; }

        public string Name16 { get; set; }
        public string Value16 { get; set; }

        public string Name17 { get; set; }
        public string Value17 { get; set; }

        public string Name18 { get; set; }
        public string Value18 { get; set; }

        public string Name19 { get; set; }
        public string Value19 { get; set; }


        #region 2
        public string NameB { get; set; }
        public string ValueB { get; set; }

        public string NameB10 { get; set; }
        public string ValueB10 { get; set; }

        public string NameB11 { get; set; }
        public string ValueB11 { get; set; }

        public string NameB12 { get; set; }
        public string ValueB12 { get; set; }

        public string NameB13 { get; set; }
        public string ValueB13 { get; set; }

        public string NameB14 { get; set; }
        public string ValueB14 { get; set; }

        public string NameB15 { get; set; }
        public string ValueB15 { get; set; }

        public string NameB16 { get; set; }
        public string ValueB16 { get; set; }

        public string NameB17 { get; set; }
        public string ValueB17 { get; set; }

        public string NameB18 { get; set; }
        public string ValueB18 { get; set; }

        public string NameB19 { get; set; }
        public string ValueB19 { get; set; }
        #endregion


        #region 2
        public string NameC { get; set; }
        public string ValueC { get; set; }

        public string NameC10 { get; set; }
        public string ValueC10 { get; set; }

        public string NameC11 { get; set; }
        public string ValueC11 { get; set; }

        public string NameC12 { get; set; }
        public string ValueC12 { get; set; }

        public string NameC13 { get; set; }
        public string ValueC13 { get; set; }

        public string NameC14 { get; set; }
        public string ValueC14 { get; set; }

        public string NameC15 { get; set; }
        public string ValueC15 { get; set; }

        public string NameC16 { get; set; }
        public string ValueC16 { get; set; }

        public string NameC17 { get; set; }
        public string ValueC17 { get; set; }

        public string NameC18 { get; set; }
        public string ValueC18 { get; set; }

        public string NameC19 { get; set; }
        public string ValueC19 { get; set; }
        #endregion

        #region 3
        public string NameD { get; set; }
        public string ValueD { get; set; }

        public string NameD10 { get; set; }
        public string ValueD10 { get; set; }

        public string NameD11 { get; set; }
        public string ValueD11 { get; set; }

        public string NameD12 { get; set; }
        public string ValueD12 { get; set; }

        public string NameD13 { get; set; }
        public string ValueD13 { get; set; }

        public string NameD14 { get; set; }
        public string ValueD14 { get; set; }

        public string NameD15 { get; set; }
        public string ValueD15 { get; set; }

        public string NameD16 { get; set; }
        public string ValueD16 { get; set; }

        public string NameD17 { get; set; }
        public string ValueD17 { get; set; }

        public string NameD18 { get; set; }
        public string ValueD18 { get; set; }

        public string NameD19 { get; set; }
        public string ValueD19 { get; set; }
        #endregion

        public bool Alarm { get; set; }



        #region PaintRoom5
        public string NameE { get; set; }
        public string ValueE { get; set; }

        public string NameE10 { get; set; }
        public string ValueE10 { get; set; }

        public string NameE11 { get; set; }
        public string ValueE11 { get; set; }

        public string NameE12 { get; set; }
        public string ValueE12 { get; set; }

        public string NameE13 { get; set; }
        public string ValueE13 { get; set; }

        public string NameE14 { get; set; }
        public string ValueE14 { get; set; }

        public string NameE15 { get; set; }
        public string ValueE15 { get; set; }

        public string NameE16 { get; set; }
        public string ValueE16 { get; set; }

        public string NameE17 { get; set; }
        public string ValueE17 { get; set; }

        public string NameE18 { get; set; }
        public string ValueE18 { get; set; }

        public string NameE19 { get; set; }
        public string ValueE19 { get; set; }
        #endregion


        //另外一个盒子
        public string Name20 { get; set; }
        public string Value20 { get; set; }

        public string Name21 { get; set; }
        public string Value21 { get; set; }

        public string Name22 { get; set; }
        public string Value22 { get; set; }

        public string Name23 { get; set; }
        public string Value23 { get; set; }

        public string Name24 { get; set; }
        public string Value24 { get; set; }

        public string Name25 { get; set; }
        public string Value25 { get; set; }

        public string Name26 { get; set; }
        public string Value26 { get; set; }

        public string Name27 { get; set; }
        public string Value27 { get; set; }

        public string Name28 { get; set; }
        public string Value28 { get; set; }

        public string Name29 { get; set; }
        public string Value29 { get; set; }
    }
    public class DataStatus
    {
        public string Status1 { get; set; }
        public string Status2 { get; set; }
    }
    public class MsgInfo
    {
        public string Title { get; set; }
        public string MsgContent { get; set; }
    }
}