Example #1
0
        /// <summary>
        /// 处理设备上报状态
        /// </summary>
        /// <param name="statusInfo"></param>
        /// <param name="con"></param>
        /// <param name="db"></param>
        public void ProcessReqest(DeviceStatus statusInfo, SocketConnection con, IClientRequest db)
        {
            if (!string.IsNullOrWhiteSpace(statusInfo.OppositeId))
            {//立即返回当前设备状态
                SocketConnection client;
                if (SocketConnectionServerDispatcher.DicSockectConnection.TryGetValue(statusInfo.OppositeId, out client) && client.ConnectSocket.Connected)
                {
                    client.Send(statusInfo.ToByteArray());
                }
            }
            var statusBk = new CmdHeader
            {
                CmdCode  = 0xFF03,
                Identity = con.Identity,
                ServerId = SocketConnectionServerDispatcher.ServerId,
                //TimeToken = statusInfo.TimeToken,
            };

            if (statusInfo.LightStatus == null)
            {
                statusBk.ResultCode = 0;
                con.Send(statusBk.ToByteArray());
                return;
            }
            var deviceStatus = new DtoStatusInfo
            {
                ImeiNo      = statusInfo.Identity,
                LightStatus = new DtoLightStatus()
                {
                    lightstatus = statusInfo.LightStatus.Status,
                    CellAddr    = statusInfo.LightStatus.CellAddr,
                    lightBt     = statusInfo.LightStatus.LightBt,
                    lightBu     = statusInfo.LightStatus.LightBu,
                    lightLi     = statusInfo.LightStatus.LightLi,
                    lightLu     = statusInfo.LightStatus.LightLu,
                    lightPw     = statusInfo.LightStatus.LightPw,
                    lightUi     = statusInfo.LightStatus.LightUi,
                    lightUu     = statusInfo.LightStatus.LightUu,
                    lightBgu    = JsonConvert.SerializeObject(statusInfo.LightStatus.LightBgus)
                }
            };

            //foreach (var l in statusInfo.LightStatus)
            //{
            //    deviceStatus.LightStatus.Add(new DtoLightStatus
            //    {
            //        lightstatus = l.Status,
            //        CellAddr = l.CellAddr,
            //        //lightNo = l.LightNo,
            //        lightBt = l.LightBt,
            //        lightBu = l.LightBu,
            //        lightLi = l.LightLi,
            //        lightLu = l.LightLu,
            //        lightPw = l.LightPw,
            //        lightUi = l.LightUi,
            //        lightUu = l.LightUu,
            //        lightBgu = JsonConvert.SerializeObject(l.LightBgus)
            //    });
            //}

            statusBk.ResultCode = db.DeviceStatusInfo(deviceStatus);
            con.Send(statusBk.ToByteArray());
            SocketConnection.ShowMsg(statusInfo.ToString());
        }
Example #2
0
        public int DeviceStatusInfo(DtoStatusInfo statusDto)
        {
            //var dealres = new Res();
            if (string.IsNullOrWhiteSpace(statusDto.ImeiNo))
            {
                return(0);
            }
            string sqlStr = "select imeiId from cy_imeiInfo where imeimac = @imeimac";
            var    oDs    = _dBhelper.ExecuteQuery(sqlStr, new SqlParameter("@imeimac", SqlDbType.VarChar, 18)
            {
                Value = statusDto.ImeiNo
            });

            if (oDs.Tables[0].Rows.Count == 0)
            {
                return(0);
            }
            int imeiId = Convert.ToInt32(oDs.Tables[0].Rows[0]["imeiId"]);

            #region 设备绑定用户
            //dealres.PostMsgs = new List<PostMsg>();
            //dealres.UsrLogNo = new List<string>();
            //sqlStr = "select a.loginNo from cy_userInfo a " +
            //                      " left join cy_houseUser b on a.userId = b.huserId and b.huStatusNo = 'A' " +
            //                      " left join cy_userInfo d on a.userId = d.userId and d.uStatusNo = 'A'" +
            //                      " left join cy_houseInfo c on b.huHouseId = c.houseId " +
            //                      " where c.imeiId = " + imeiId + " ";
            //oDs = _dBhelper.ExecuteQuery(sqlStr);
            //for (int n = 0; n < oDs?.Tables[0].Rows.Count; n++)
            //{
            //    if (oDs.Tables[0].Rows[n]["telPhone"] != DBNull.Value)
            //        dealres.UsrLogNo.Add(oDs.Tables[0].Rows[n]["telPhone"].ToString());
            //}
            #endregion
            return(_dBhelper.ExecuteTransaction(cmd =>
            {
                sqlStr = "update cy_imeiInfo set imeiParamsContent=@imeiParamsContent,updateUserId=@updateUserId,updateTime=@updateTime where imeiId = @imeiId";
                SqlParameter[] parameters =
                {
                    new SqlParameter("@imeiParamsContent", SqlDbType.VarChar, 8000)
                    {
                        Value = JsonConvert.SerializeObject(statusDto)
                    },
                    new SqlParameter("@imeiId",            SqlDbType.Int, 4)
                    {
                        Value = imeiId
                    },
                    new SqlParameter("@updateUserId",      SqlDbType.Int, 4)
                    {
                        Value = -1
                    },
                    new SqlParameter("@updateTime",        SqlDbType.DateTime)
                    {
                        Value = DateTime.Now
                    }
                };
                cmd.CommandText = sqlStr;
                cmd.Parameters.Clear();
                cmd.Parameters.AddRange(parameters);
                cmd.ExecuteNonQuery();
                sqlStr = "select lightNo from cy_lightInfo a join cy_imeiCellInfo b on a.lightId = b.lightId join cy_imeiInfo c on b.imeiId =c.imeiId where c.imeiMac = '" + statusDto.ImeiNo + "' and b.cellAddr = " + statusDto.LightStatus.CellAddr + " ";
                oDs = _dBhelper.ExecuteQuery(sqlStr, new SqlParameter("@imeimac", SqlDbType.VarChar, 18)
                {
                    Value = statusDto.ImeiNo
                });
                if (oDs.Tables[0].Rows.Count == 0)
                {
                    return 0;
                }
                var lightNo = oDs.Tables[0].Rows[0]["lightNo"].ToString();
                sqlStr = $"update cy_lightInfo set imeiLightParamsContent='{JsonConvert.SerializeObject(statusDto.LightStatus)}',imeiLightStatus='{statusDto.LightStatus.lightstatus}',imeiLightPw={statusDto.LightStatus.lightPw},imeiLightLu={statusDto.LightStatus.lightLu},imeiLightLi={statusDto.LightStatus.lightLi},imeiLightBu={statusDto.LightStatus.lightBu},imeiLightBt={statusDto.LightStatus.lightBt},imeiLightUu={statusDto.LightStatus.lightUu},imeiLightUi={statusDto.LightStatus.lightUi},imeiLightBgu='{statusDto.LightStatus.lightBgu}',updateUserId=-1,updateTime=GETDATE() where lightNo='{lightNo}'";
                cmd.CommandText = sqlStr;
                cmd.Parameters.Clear();
                cmd.ExecuteNonQuery();
                sqlStr = $"insert into cy_imeiHistory(ihmac,ihLightNo,ihStatus,ihLightPw,ihLightLu,ihLightLi,ihLightBu,ihLightBt,ihLightUu,ihLightUi,ihLightBgu,addTime)values('{statusDto.ImeiNo}','{lightNo}','{statusDto.LightStatus.lightstatus}',{statusDto.LightStatus.lightPw},{statusDto.LightStatus.lightLu},{statusDto.LightStatus.lightLi},{statusDto.LightStatus.lightBu},{statusDto.LightStatus.lightBt},{statusDto.LightStatus.lightUu},{statusDto.LightStatus.lightUi},'{statusDto.LightStatus.lightBgu}',GETDATE());";
                cmd.CommandText = sqlStr;
                cmd.Parameters.Clear();
                cmd.ExecuteNonQuery();
                //foreach (var lightStatu in statusDto.LightStatus)
                //{
                //    sqlStr += $"update cy_lightInfo set imeiLightParamsContent='{JsonConvert.SerializeObject(lightStatu)}',imeiLightStatus='{lightStatu.lightstatus}',imeiLightPw={lightStatu.lightPw},imeiLightLu={lightStatu.lightLu},imeiLightLi={lightStatu.lightLi},imeiLightBu={lightStatu.lightBu},imeiLightBt={lightStatu.lightBt},imeiLightUu={lightStatu.lightUu},imeiLightUi={lightStatu.lightUi},imeiLightBgu='{lightStatu.lightBgu}',updateUserId=-1,updateTime=GETDATE() where lightNo='{lightStatu.lightNo}';";
                //    cmd.CommandText = sqlStr;
                //    cmd.Parameters.Clear();
                //    cmd.ExecuteNonQuery();
                //}
                //sqlStr = "";
                //foreach (var lightStatu in statusDto.LightStatus)
                //{
                //    sqlStr += $"insert into cy_imeiHistory(ihmac,ihLightNo,ihStatus,ihLightPw,ihLightLu,ihLightLi,ihLightBu,ihLightBt,ihLightUu,ihLightUi,ihLightBgu,addTime)values('{statusDto.ImeiNo}','{lightStatu.lightNo}','{lightStatu.lightstatus}',{lightStatu.lightPw},{lightStatu.lightLu},{lightStatu.lightLi},{lightStatu.lightBu},{lightStatu.lightBt},{lightStatu.lightUu},{lightStatu.lightUi},'{lightStatu.lightBgu}',GETDATE());";
                //    cmd.CommandText = sqlStr;
                //    cmd.Parameters.Clear();
                //    cmd.ExecuteNonQuery();
                //}
                return 1;
            }));
        }