MVC下接口程序 响应手机请求的参数设置请求并控制服务程序下发设备参数变更报文

 /// <summary>
        /// 手机接口 :
        /// http://localhost:56505/api/animal/DeviceException/Edit/
        /// </summary>
        /// <param name="data"></param>
        [System.Web.Http.HttpPost, System.Web.Http.HttpPut]
        public string Edit(JObject data)
        {
            try
            {
                var loghelp = new sys_logService();


                var listWrapper = RequestWrapper.Instance().LoadSettingXmlString(@"
                <settings>
                    <table>
                        DeviceException
                    </table>
                    <where>
                        <field name='CompanyDeviceSerialNum' cp='equal'></field>
                        <field name='DeviceTypeArgsSerialnum' cp='equal'></field>
                    </where>
                </settings>");


                var service = new DeviceExceptionService();


                //调试代码
                //string strjosn = @"{""data"":[{""list"":{""deleted"":[],""inserted"":[],""updated"":[{""CompanyDeviceSerialNum"":""6df3dd514e844b169fbd2bb105a85315"",""AlarmMax"":""35.0"",""WarnMax"":""30.0"",""DeviceTypeArgsSerialnum"":""Temp"",""WarnMin"":""10.0"",""AlarmMin"":""5.0""}],""_changed"":true}},{""list"":{""deleted"":[],""inserted"":[],""updated"":[{""CompanyDeviceSerialNum"":""6df3dd514e844b169fbd2bb105a85315"",""AlarmMax"":""800.0"",""WarnMax"":""700.0"",""DeviceTypeArgsSerialnum"":""Co2""}],""_changed"":true}},{""list"":{""deleted"":[],""inserted"":[],""updated"":[{""CompanyDeviceSerialNum"":""6df3dd514e844b169fbd2bb105a85315"",""AlarmMax"":""20.0"",""WarnMax"":""4.0"",""DeviceTypeArgsSerialnum"":""Nh3""}],""_changed"":true}}],""ReportAlarmTimes"":""5"",""ReportDataPeriod"":""1""}";
                //data = JObject.Parse(strjosn);


                loghelp.Logger("post提交数据", "deviceexception/edit/", "修改", data);


                Object[] obj = new Object[6];
                string mac = "";


                foreach (var item in data)
                {


                    foreach (var p in item.Value)
                    {
                        OperateInfo info = (OperateInfo)JsonConvert.DeserializeObject(p["list"].ToString(), typeof(OperateInfo));


                        mac = new CompanyDeviceService().GetCompanyDevice(info.updated[0].CompanyDeviceSerialNum.ToString()).Mac;


                        if (info.updated[0].DeviceTypeArgsSerialnum == "Co2")
                        {
                            obj[2] = info.updated[0].AlarmMax;
                        }
                        else if (info.updated[0].DeviceTypeArgsSerialnum == "Temp")
                        {
                            obj[0] = info.updated[0].AlarmMax;
                            obj[1] = info.updated[0].AlarmMin;
                        }
                        else if (info.updated[0].DeviceTypeArgsSerialnum == "Nh3")
                        {
                            obj[3] = info.updated[0].AlarmMax;
                        }
                    }
                }


                if (!data["ReportDataPeriod"].Any() && data["ReportDataPeriod"].ToString() != "")
                {
                    obj[4] = Math.Round(Convert.ToDecimal(data["ReportDataPeriod"].ToString()) * 60, 0);
                }
                if (!data["ReportAlarmTimes"].Any() && data["ReportAlarmTimes"].ToString() != "")
                {
                    obj[5] = Convert.ToInt16(data["ReportAlarmTimes"].ToString());


                }


                var t = new ConfigModel()
                    {
                        Action = "set config",
                        CreateTime = DateTime.Now,
                        DeviceType = "HTR",
                        Mac = mac,
                        Values = obj
                    };
                var msg = JsonConvert.SerializeObject(t);
                loghelp.Logger("TCPIP发送数据", "DeviceException/Edit/", "WEBAPI", msg);


                var ip = NewLife.Configuration.Config.GetConfig<string>("TCPServiceConfigIP", "218.94.29.186");
                var port = NewLife.Configuration.Config.GetConfig<int>("TCPServiceConfigPort", 12008);
                var client = new System.Net.Sockets.TcpClient();
                try
                {
                    client.Connect(IPAddress.Parse(ip), port);
                    var ns = client.GetStream();
                    var buffer = System.Text.Encoding.UTF8.GetBytes(msg);
                    ns.Write(buffer, 0, buffer.Length);
                    System.Threading.Thread.Sleep(100);


                    var rec_buffer = new Byte[1024]; //接收数据缓冲区
                    //读取回传数据
                    ns.ReadTimeout = 10 * 1000; //读数据超时时间
                    var size = ns.Read(rec_buffer, 0, rec_buffer.Length);
                    var result = System.Text.Encoding.UTF8.GetString(rec_buffer, 0, size);


                    //成功设置了参数,写数据库。
                    if (result.ToLower().Equals("true"))
                    {
                        foreach (var item in data)
                        {


                            foreach (var p in item.Value)
                            {
                                OperateInfo info = (OperateInfo)JsonConvert.DeserializeObject(p["list"].ToString(), typeof(OperateInfo));
                                var result_tmp = service.Edit(null, listWrapper, JObject.Parse(p.ToString()));


                            }
                        }


                        var ret = new CompanyDeviceService().Update(ParamUpdate.Instance()
                                .Update("CompanyDevice")
                                .Column("ReportAlarmTimes", obj[5])
                                .Column("ReportDataPeriod", obj[4])
                                .AndWhere("Mac", mac));
                    }
                    else
                    {
                        new sys_logService().Logger("TCPIP返回值", "DeviceException/Edit/", "TCPIP错误", result);
                    }


                    ns.Close();
                    client.Close();


                    new sys_logService().Logger("测试", "DeviceException/Edit/", "WEBAPI返回值", result.ToLower());
                    return result.ToLower();
                }
                catch (Exception ex)
                {
                    new sys_logService().Logger("POST提交数据", "DeviceException/Edit/", "TCPIP错误", ex.Message.ToString());
                    return "TCPIP_Exception";
                }


            }
            catch (Exception ex)
            {
                new sys_logService().Logger("POST提交数据", "DeviceException/Edit/", "其它错误", ex.Message.ToString());
                return "false";
            }
        }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值