Esempio n. 1
0
        /// <summary>
        /// 获取告警查询列表
        /// </summary>
        /// <param name="aqInfo"></param>
        /// <param name="ref_errMsg_aqr"></param>
        /// <returns></returns>
        public List <Rfid_AlarmLogInfo> GetAlarmQueryList(AlarmQueryInfo aqInfo, ref string ref_errMsg_aqr)
        {
            int      ckID                 = (aqInfo.CangKuBianMa == "" || aqInfo.CangKuBianMa == null) ? -1 : Convert.ToInt32(aqInfo.CangKuBianMa); //仓库编码
            int      typeID               = (aqInfo.GaoJingLeiXingBianMa == "") ? -1 : Convert.ToInt32(aqInfo.GaoJingLeiXingBianMa);                //告警类型编码
            DateTime DateStart            = Convert.ToDateTime(aqInfo.KaiShiShiJian);                                                               //开始时间
            DateTime DateEnd              = Convert.ToDateTime(aqInfo.JieShuShiJian).AddDays(1);                                                    //结束时间
            List <Rfid_AlarmLogInfo> list = new List <Rfid_AlarmLogInfo>();
            StringBuilder            sb   = new StringBuilder();

            sb.Append(" select * ");
            sb.Append(@"   
                from Rfid_AlarmLog fa");
            sb.Append(@"
                where 1=1 ");
            if (ckID >= 0) //如果选了仓库
            {
                WhereClauseUtility.AddIntEqual("仓库ID", ckID, sb);
            }
            if (typeID >= 0) //如果选了告警类型
            {
                WhereClauseUtility.AddIntEqual("操作类型编码", typeID, sb);
            }
            WhereClauseUtility.AddDateTimeGreaterThan("记录时间", DateStart, sb);
            WhereClauseUtility.AddDateTimeLessThan("记录时间", DateEnd, sb);
            sb.Append(@"
                order by 记录时间 ");
            try
            {
                DataSet ds = SqlHelper.ExecuteDataSet(SqlHelper.MainConnectionString, CommandType.Text, sb.ToString(), null);
                if (ds.Tables[0].Rows.Count > 0)
                {
                    foreach (DataRow dr in ds.Tables[0].Rows)
                    {
                        Rfid_AlarmLogInfo info = new Rfid_AlarmLogInfo();
                        info.BianMa               = Convert.ToInt32(dr["编码"].ToString());
                        info.JiLuShiJian          = Convert.ToDateTime(dr["记录时间"].ToString());
                        info.strJiLuShiJian       = info.JiLuShiJian.ToString("yyyy-MM-dd HH:mm:ss");
                        info.CaoZuoLeiXingBianMa  = Convert.ToInt32(dr["操作类型编码"].ToString());
                        info.SheBeiID             = dr["设备ID"].ToString();
                        info.SheBeiMingCheng      = dr["设备名称"].ToString();
                        info.RFIDKaHao            = dr["RFID卡号"].ToString();
                        info.CangKuID             = Convert.ToInt32(dr["仓库ID"].ToString());
                        info.CangKuMingCheng      = dr["仓库名称"].ToString();
                        info.DuXieQiID            = dr["读写器ID"].ToString();
                        info.CangKuLeiXingBianMa  = Convert.ToInt32(dr["仓库类型编码"].ToString());
                        info.ChuLiZhuangTaiBianMa = Convert.ToInt32(dr["处理状态编码"].ToString());
                        list.Add(info);
                    }
                }
                return(list);
            }
            catch (Exception ex)
            {
                ref_errMsg_aqr = "获取告警查询列表出错:" + ex.Message;
                LogUtility.Error("RfidGiveAlarmDAL/GetAlarmQueryList", "获取告警查询列表出错:" + ex.Message);
                return(null);
            }
        }
Esempio n. 2
0
        /// <summary>
        /// 获取追溯查询列表
        /// </summary>
        /// <param name="aqqInfo"></param>
        /// <param name="ref_errMsg_rqr"></param>
        /// <returns></returns>
        public List <Rfid_AlarmLogInfo> GetRetrospectiveQueryList(AlarmQueryInfo aqqInfo, ref string ref_errMsg_rqr)
        {
            string   sbID                 = aqqInfo.SheBeiID;                                     //设备ID
            DateTime DateStart            = Convert.ToDateTime(aqqInfo.KaiShiShiJian);            //开始时间
            DateTime DateEnd              = Convert.ToDateTime(aqqInfo.JieShuShiJian).AddDays(1); //结束时间
            List <Rfid_AlarmLogInfo> list = new List <Rfid_AlarmLogInfo>();
            StringBuilder            sb   = new StringBuilder();

            sb.Append(" select * ");
            sb.Append(@"   
                from Rfid_AlarmLog fa");
            sb.Append(@"
                where 1=1 ");
            WhereClauseUtility.AddDateTimeGreaterThan("记录时间", DateStart, sb);
            WhereClauseUtility.AddDateTimeLessThan("记录时间", DateEnd, sb);
            if (!String.IsNullOrEmpty(sbID))
            {
                sb.Append(@"
                    and 设备ID='" + sbID + "' "); //筛选对应设备的告警记录
            }
            sb.Append(@"
                order by 记录时间 ");
            try
            {
                DataSet ds = SqlHelper.ExecuteDataSet(SqlHelper.MainConnectionString, CommandType.Text, sb.ToString(), null);
                if (ds.Tables[0].Rows.Count > 0)
                {
                    foreach (DataRow dr in ds.Tables[0].Rows)
                    {
                        Rfid_AlarmLogInfo info = new Rfid_AlarmLogInfo();
                        info.BianMa               = Convert.ToInt32(dr["编码"].ToString());
                        info.JiLuShiJian          = Convert.ToDateTime(dr["记录时间"].ToString());
                        info.strJiLuShiJian       = info.JiLuShiJian.ToString("yyyy-MM-dd HH:mm:ss");
                        info.CaoZuoLeiXingBianMa  = Convert.ToInt32(dr["操作类型编码"].ToString());
                        info.SheBeiID             = dr["设备ID"].ToString();
                        info.SheBeiMingCheng      = dr["设备名称"].ToString();
                        info.RFIDKaHao            = dr["RFID卡号"].ToString();
                        info.CangKuID             = Convert.ToInt32(dr["仓库ID"].ToString());
                        info.CangKuMingCheng      = dr["仓库名称"].ToString();
                        info.DuXieQiID            = dr["读写器ID"].ToString();
                        info.CangKuLeiXingBianMa  = Convert.ToInt32(dr["仓库类型编码"].ToString());
                        info.ChuLiZhuangTaiBianMa = Convert.ToInt32(dr["处理状态编码"].ToString());
                        list.Add(info);
                    }
                }
                return(list);
            }
            catch (Exception ex)
            {
                ref_errMsg_rqr = "获取追溯查询列表出错:" + ex.Message;
                LogUtility.Error("RfidGiveAlarmDAL/GetRetrospectiveQueryList", "获取追溯查询列表出错:" + ex.Message);
                return(null);
            }
        }
Esempio n. 3
0
        /// <summary>
        /// 获取告警列表
        /// </summary>
        /// <param name="ref_errMsg_gga"></param>
        /// <returns></returns>
        public List <Rfid_AlarmLogInfo> GetGiveAlarmList(int UserID, ref string ref_errMsg_gga)
        {
            List <Rfid_AlarmLogInfo> list = new List <Rfid_AlarmLogInfo>();
            StringBuilder            sb   = new StringBuilder();

            sb.Append(" select * ");
            sb.Append(@"   
                from Rfid_AlarmLog fa");
            sb.Append(@"
                where 1=1 ");
            sb.Append(@"
                and 是否有效=1 "); //add2020-04-10 plq 添加是否有效过滤--用来过滤历史告警数据
            //List<string> sIDList = GetStorageIDListByUserID(UserID);
            //string s1 = "'" + string.Join("','", sIDList.ToArray()) + "'";
            List <int> sIDList = GetStorageIDListByUserID(UserID);
            string     s1      = "" + string.Join(",", sIDList.ToArray()) + "";

            WhereClauseUtility.AddInSelectQuery("仓库ID", s1, sb);
            sb.Append(@"
                order by 处理状态编码 desc,记录时间 ");
            try
            {
                DataSet ds = SqlHelper.ExecuteDataSet(SqlHelper.MainConnectionString, CommandType.Text, sb.ToString(), null);
                if (ds.Tables[0].Rows.Count > 0)
                {
                    foreach (DataRow dr in ds.Tables[0].Rows)
                    {
                        Rfid_AlarmLogInfo info = new Rfid_AlarmLogInfo();
                        info.BianMa               = Convert.ToInt32(dr["编码"].ToString());
                        info.JiLuShiJian          = Convert.ToDateTime(dr["记录时间"].ToString());
                        info.strJiLuShiJian       = info.JiLuShiJian.ToString("yyyy-MM-dd HH:mm:ss");
                        info.CaoZuoLeiXingBianMa  = Convert.ToInt32(dr["操作类型编码"].ToString());
                        info.SheBeiID             = dr["设备ID"].ToString();
                        info.SheBeiMingCheng      = dr["设备名称"].ToString();
                        info.RFIDKaHao            = dr["RFID卡号"].ToString();
                        info.CangKuID             = Convert.ToInt32(dr["仓库ID"].ToString());
                        info.CangKuMingCheng      = dr["仓库名称"].ToString();
                        info.DuXieQiID            = dr["读写器ID"].ToString();
                        info.CangKuLeiXingBianMa  = Convert.ToInt32(dr["仓库类型编码"].ToString());
                        info.ChuLiZhuangTaiBianMa = Convert.ToInt32(dr["处理状态编码"].ToString());
                        list.Add(info);
                    }
                }
                return(list);
            }
            catch (Exception ex)
            {
                ref_errMsg_gga = "获取告警列表出错:" + ex.Message;
                LogUtility.Error("RfidGiveAlarmDAL/GetGiveAlarmList", "获取告警列表出错:" + ex.Message);
                return(null);
            }
        }
Esempio n. 4
0
        /// <summary>
        /// 更新告警数据
        /// </summary>
        /// <param name="ralInfo"></param>
        /// <param name="upAdResult"></param>
        /// <returns></returns>
        public bool UpdateAlarmData(Rfid_AlarmLogInfo ralInfo, ref string upAdResult)
        {
            try
            {
                using (SqlConnection conn = new SqlConnection(SqlHelper.MainConnectionString))
                {
                    DataBase db      = new DataBase(conn);
                    var      oldInfo = db.Rfid_AlarmLogInfo.SingleOrDefault <Rfid_AlarmLogInfo>(s => s.BianMa == ralInfo.BianMa);

                    //修改实体属性---根据更新类型来对应更新不同字段
                    int typeCode = -1;//更新类型
                    if (!String.IsNullOrEmpty(ralInfo.typeCode))
                    {
                        typeCode = Convert.ToInt32(ralInfo.typeCode);
                    }
                    if (typeCode == (int)Utility.AnchorEnum.ERfid_UpdateAlarmType.更新操作类型) //只更新告警数据中的操作类型字段
                    {                                                                     //更新 操作类型编码
                        oldInfo.CaoZuoLeiXingBianMa = ralInfo.CaoZuoLeiXingBianMa;
                    }
                    else if (typeCode == (int)Utility.AnchorEnum.ERfid_UpdateAlarmType.更新设备及处理状态) //更新告警数据中的设备及处理状态信息
                    {                                                                             //更新设备ID、名称及处理状态
                        oldInfo.SheBeiID             = ralInfo.SheBeiID;
                        oldInfo.SheBeiMingCheng      = ralInfo.SheBeiMingCheng;
                        oldInfo.ChuLiZhuangTaiBianMa = ralInfo.ChuLiZhuangTaiBianMa;
                        oldInfo.ChuLiShiJian         = ralInfo.ChuLiShiJian;
                        oldInfo.CaoZuoRenBianMa      = ralInfo.CaoZuoRenBianMa;
                    }
                    else if (typeCode == (int)Utility.AnchorEnum.ERfid_UpdateAlarmType.更新处理状态) //更新处理状态信息
                    {                                                                          //更新处理状态
                        oldInfo.ChuLiZhuangTaiBianMa = ralInfo.ChuLiZhuangTaiBianMa;
                        oldInfo.ChuLiShiJian         = ralInfo.ChuLiShiJian;
                        oldInfo.CaoZuoRenBianMa      = ralInfo.CaoZuoRenBianMa;
                    }
                    else
                    {
                        upAdResult = "更新告警数据请求的类型编码错误";
                        return(false);
                    }
                    db.SubmitChanges();
                    return(true);
                }
            }
            catch (Exception ex)
            {
                upAdResult = ex.Message;
                LogUtility.Error("RfidGiveAlarmDAL/UpdateAlarmData", "更新告警数据出错:" + ex.Message);
                return(false);
            }
        }
 /// <summary>
 /// 判断Rfid_AlarmLog表中是否已有重复的告警数据记录
 /// 暂定 相同操作类型编码、相同设备ID、相同RFID卡号、相同仓库ID、相同读写器ID且处理状态编码为1(未处理)的为重复告警数据
 /// </summary>
 /// <param name="ralInfo"></param>
 /// <returns></returns>
 public Rfid_AlarmLogInfo GetOldAlarmLogInfo(Rfid_AlarmLogInfo info)
 {
     using (DataBase db = new DataBase(SqlHelper.MainConnectionString))
     {
         try
         {
             //取出实体
             var oldInfo = db.Rfid_AlarmLogInfo.SingleOrDefault <Rfid_AlarmLogInfo>(s => s.CaoZuoLeiXingBianMa == info.CaoZuoLeiXingBianMa &&
                                                                                    s.SheBeiID == info.SheBeiID && s.RFIDKaHao == info.RFIDKaHao && s.CangKuID == info.CangKuID && s.DuXieQiID == info.DuXieQiID &&
                                                                                    s.ChuLiZhuangTaiBianMa == 1);
             return(oldInfo);
         }
         catch (Exception ex)
         {
             LogUtility.Error("DealInnerCommDAL/GetOldAlarmLogInfo", ex.Message);
             return(null);
         }
     }
 }
Esempio n. 6
0
 /// <summary>
 /// 根据编码获取告警数据详情
 /// </summary>
 /// <param name="BianMa"></param>
 /// <param name="ref_errMsg_gair"></param>
 /// <returns></returns>
 public Rfid_AlarmLogInfo GetAlarmInfo(int BianMa, ref string ref_errMsg_gair)
 {
     try
     {
         using (SqlConnection conn = new SqlConnection(SqlHelper.MainConnectionString))
         {
             DataBase          db   = new DataBase(conn);
             Rfid_AlarmLogInfo info = (from p in db.Rfid_AlarmLogInfo
                                       where p.BianMa == BianMa
                                       select p).FirstOrDefault();
             return(info);
         }
     }
     catch (Exception ex)
     {
         ref_errMsg_gair = "获取告警信息出错:" + ex.Message;
         LogUtility.Error("RfidGiveAlarmDAL/GetAlarmInfo", "获取告警信息出错:" + ex.Message);
         return(null);
     }
 }
        /// <summary>
        /// 新增告警记录数据
        /// </summary>
        /// <param name="info"></param>
        /// <returns></returns>
        public bool InsertAlarmLog(Rfid_AlarmLogInfo info)
        {
            using (DataBase db = new DataBase(SqlHelper.MainConnectionString))
            {
                try
                {
                    //向记录表中插入一条数据
                    if (info != null)
                    {
                        db.Rfid_AlarmLogInfo.InsertOnSubmit(info);
                    }

                    //执行更新操作
                    db.SubmitChanges();
                    return(true);
                }
                catch (Exception ex)
                {
                    LogUtility.Error("DealInnerCommDAL/InsertAlarmLog", ex.ToString());
                    return(false);
                }
            }
        }
 /// <summary>
 /// 判断Rfid_AlarmLog表中是否已有重复的告警数据记录,有则更新时间、返回true,没有则返回false。
 /// 暂定 相同操作类型编码、相同设备ID、相同RFID卡号、相同仓库ID、相同读写器ID且处理状态编码为1(未处理)的为重复告警数据
 /// 若有重复数据,则更新其 记录时间 字段,返回true;若没有则返回false
 /// </summary>
 /// <param name="info"></param>
 /// <returns></returns>
 public bool VerifyIsRepeat(Rfid_AlarmLogInfo info, ref string errMsg)
 {
     using (DataBase db = new DataBase(SqlHelper.MainConnectionString))
     {
         try
         {
             int code = (int)Utility.AnchorEnum.ERfid_ProcessingState.未处理; //未处理时的状态编码
             //取出实体
             //var oldInfo = db.Rfid_AlarmLogInfo.SingleOrDefault<Rfid_AlarmLogInfo>(s => s.CaoZuoLeiXingBianMa == info.CaoZuoLeiXingBianMa
             //    && s.SheBeiID == info.SheBeiID && s.RFIDKaHao == info.RFIDKaHao && s.CangKuID == info.CangKuID && s.DuXieQiID == info.DuXieQiID
             //    && s.ChuLiZhuangTaiBianMa == code);
             var oldInfo = (from s in db.Rfid_AlarmLogInfo
                            where s.CaoZuoLeiXingBianMa == info.CaoZuoLeiXingBianMa && s.SheBeiID == info.SheBeiID &&
                            s.RFIDKaHao == info.RFIDKaHao && s.CangKuID == info.CangKuID && s.DuXieQiID == info.DuXieQiID &&
                            s.ChuLiZhuangTaiBianMa == code
                            select s).FirstOrDefault();
             if (oldInfo != null)
             {
                 //oldInfo.JiLuShiJian = info.JiLuShiJian; //更新 记录时间
                 oldInfo.ShiFouYouXiao = info.ShiFouYouXiao; //add2020-04-10 plq 设为有效
                 db.SubmitChanges();                         //保存更新
                 return(true);
             }
             else  //没有重复告警
             {
                 return(false);
             }
         }
         catch (Exception ex)
         {
             errMsg = ex.Message;
             LogUtility.Error("DealInnerCommDAL/VerifyIsRepeat", ex.Message);
             return(false);
         }
     }
 }
 /// <summary>
 /// 更新告警数据
 /// </summary>
 /// <param name="ralInfo"></param>
 /// <param name="upAdResult"></param>
 /// <returns></returns>
 public bool UpdateAlarmData(Rfid_AlarmLogInfo ralInfo, ref string upAdResult)
 {
     return(dal.UpdateAlarmData(ralInfo, ref upAdResult));
 }
Esempio n. 10
0
        /// <summary>
        /// 接收消息 来自RFID客户端 APP
        /// </summary>
        public void ReceiveHttpData()
        {
            Stream               body           = request.InputStream;        //获取客户端发送请求的包含正文数据的流
            Encoding             encoding       = request.ContentEncoding;    //获取随请求发送的数据的内容编码
            StreamReader         reader         = null;
            JavaScriptSerializer serializer     = new JavaScriptSerializer(); //JSON序列化与反序列化类
            string               bodyStr        = "";
            string               decoderContent = "";                         //存储bodyStr解码后的字符

            try
            {
                reader  = new StreamReader(body, Encoding.UTF8); //用指定的字符编码为指定的流初始化 System.IO.StreamReader 类的一个新实例。
                bodyStr = reader.ReadToEnd();                    //读取流,返回字符串
                if (bodyStr.Trim() != "")
                {
                    decoderContent = HttpUtility.UrlDecode(bodyStr, Encoding.UTF8); //使用指定的编码对象将 URL 编码的字符串转换为已解码的字符串
                    //OnShowMessage(AnchorEnum.EMessageLevel.EML_INFO, "收到http请求推送的数据:" + decoderContent);//20200410注释:如登录请求会暴露登录名、密码等敏感信息
                    //客户端使用JSON 传参
                    TDataSimpleInfo tdataInfo = serializer.Deserialize <TDataSimpleInfo>(decoderContent);         //JSON字符串转JSON对象--客户端键值对形式会转换报错
                    OnShowMessage(AnchorEnum.EMessageLevel.EML_INFO, "收到http请求,请求消息类型:" + tdataInfo.MessageType); //edit 20200410plq:只显示请求类型信息

                    TAppHttpResponseInfo responseInfo = new TAppHttpResponseInfo();                               //new 请求响应消息实体
                    switch (tdataInfo.MessageType)                                                                //判断请求消息类型
                    {
                    case "LoginResquest":                                                                         //登录请求
                        LoginBLL   bll         = new LoginBLL();
                        LoginInfo  loginInfo   = serializer.Deserialize <LoginInfo>(tdataInfo.Content);           //序列化请求消息内容
                        string     LoginName   = loginInfo.LoginName;                                             //登录名
                        string     PassWord    = loginInfo.PassWord;                                              //密码
                        string     resultLogin = "";                                                              //用来接收登录结果字符串
                        P_UserInfo user        = bll.Login(LoginName, PassWord, ref resultLogin);                 //根据登录名、密码获取对应用户
                        OnShowMessage(AnchorEnum.EMessageLevel.EML_INFO, "App人员[" + LoginName + "]请求登录!处理结果:" + resultLogin);
                        LogUtility.Error("DealHttpDataBLL/ReceiveHttpData", "收到LoginResquest登录请求!处理结果:" + resultLogin);
                        if (user != null)
                        {
                            //response.StatusCode = 200;
                            responseInfo.msgType   = "LoginResponse";            //响应消息类型
                            responseInfo.isSuccess = true;                       //是否成功
                            responseInfo.Content   = serializer.Serialize(user); //响应消息内容--JSON字符串
                        }
                        else
                        {
                            //response.StatusCode = 500;
                            responseInfo.msgType   = "LoginResponse";     //响应消息类型
                            responseInfo.isSuccess = false;               //是否成功
                            responseInfo.Content   = resultLogin;         //响应消息内容--JSON字符串
                        }
                        ReturnHttpDataWithSerial(responseInfo, response); //返回响应消息
                        break;

                    case "GetCarCoupletRequest":     //获取车辆物联列表请求,Content为""
                        RfidStorageBLL rsBll      = new RfidStorageBLL();
                        string         ref_errMsg = "";
                        List <RfidStorage_AmbulanceInfo> rs_AList = rsBll.GetCarCoupletList(ref ref_errMsg);
                        if (ref_errMsg.Equals(""))
                        {
                            response.StatusCode    = 200;
                            responseInfo.msgType   = "GetCarCoupletResponse";        //响应消息类型
                            responseInfo.isSuccess = true;                           //是否成功
                            responseInfo.Content   = serializer.Serialize(rs_AList); //响应消息内容--JSON字符串
                            OnShowMessage(AnchorEnum.EMessageLevel.EML_INFO, "收到GetCarCoupletRequest请求车辆物联列表数据!返回值成功");
                        }
                        else
                        {
                            response.StatusCode    = 500;
                            responseInfo.msgType   = "GetCarCoupletResponse"; //响应消息类型
                            responseInfo.isSuccess = false;                   //是否成功
                            responseInfo.Content   = ref_errMsg;              //响应消息内容--JSON字符串
                            OnShowMessage(AnchorEnum.EMessageLevel.EML_ERROR, "收到GetCarCoupletRequest请求车辆物联列表数据!返回值失败,原因:" + ref_errMsg);
                            LogUtility.Error("DealHttpDataBLL/ReceiveHttpData", "收到GetCarCoupletRequest请求车辆物联列表数据!返回值失败,原因:" + ref_errMsg);
                        }
                        ReturnHttpDataWithSerial(responseInfo, response);
                        break;

                    case "GetObjectAssociationResquest":     //获取仓库物联列表请求,Content为""
                        RfidStorageBLL rfsBll      = new RfidStorageBLL();
                        string         ref_errMsg2 = "";
                        List <RfidStorage_StorageInfo> rfs_AList = rfsBll.GetObjectAssociationList(ref ref_errMsg2);
                        if (ref_errMsg2.Equals(""))
                        {
                            response.StatusCode    = 200;
                            responseInfo.msgType   = "GetObjectAssociationResponse";  //响应消息类型
                            responseInfo.isSuccess = true;                            //是否成功
                            responseInfo.Content   = serializer.Serialize(rfs_AList); //响应消息内容--JSON字符串
                            OnShowMessage(AnchorEnum.EMessageLevel.EML_INFO, "收到GetObjectAssociationResquest请求仓库物联列表数据!返回值成功");
                        }
                        else
                        {
                            response.StatusCode    = 500;
                            responseInfo.msgType   = "GetObjectAssociationResponse"; //响应消息类型
                            responseInfo.isSuccess = false;                          //是否成功
                            responseInfo.Content   = ref_errMsg2;                    //响应消息内容--JSON字符串
                            OnShowMessage(AnchorEnum.EMessageLevel.EML_ERROR, "收到GetObjectAssociationResquest请求仓库物联列表数据!返回值失败,原因:" + ref_errMsg2);
                            LogUtility.Error("DealHttpDataBLL/ReceiveHttpData", "收到GetObjectAssociationResquest请求仓库物联列表数据!返回值失败,原因:" + ref_errMsg2);
                        }
                        ReturnHttpDataWithSerial(responseInfo, response);
                        break;

                    case "GetBindEquipmentRequest":     //获取对应仓库(目前车辆和分站都是在FIXED_Storage表中维护)的设备列表---是否要添加报废丢失设备过滤
                        RfidMaterialBLL rmBll = new RfidMaterialBLL();
                        //JSON字符串Content(消息内容)转对应实体
                        BindEquipmentRequestInfo berInfo = serializer.Deserialize <BindEquipmentRequestInfo>(tdataInfo.Content);
                        string CangKuID                  = berInfo.CangKuID; //仓库ID
                        string ref_errMsg_gbe            = "";
                        List <FIXED_MatetialInfo> fmList = rmBll.GetBindEquipmentList(CangKuID, ref ref_errMsg_gbe);
                        if (ref_errMsg_gbe.Equals(""))
                        {
                            response.StatusCode    = 200;
                            responseInfo.msgType   = "GetBindEquipmentResponse";   //响应消息类型
                            responseInfo.isSuccess = true;                         //是否成功
                            responseInfo.Content   = serializer.Serialize(fmList); //响应消息内容--JSON字符串
                            OnShowMessage(AnchorEnum.EMessageLevel.EML_INFO, "收到GetBindEquipmentRequest请求!返回值成功");
                        }
                        else
                        {
                            response.StatusCode    = 500;
                            responseInfo.msgType   = "GetBindEquipmentResponse"; //响应消息类型
                            responseInfo.isSuccess = false;                      //是否成功
                            responseInfo.Content   = ref_errMsg_gbe;             //响应消息内容--JSON字符串
                            OnShowMessage(AnchorEnum.EMessageLevel.EML_ERROR, "收到GetBindEquipmentRequest请求!返回值失败,原因:" + ref_errMsg_gbe);
                            LogUtility.Error("DealHttpDataBLL/ReceiveHttpData", "收到GetBindEquipmentRequest请求!返回值失败,原因:" + ref_errMsg_gbe);
                        }
                        ReturnHttpDataWithSerial(responseInfo, response);
                        break;

                    case "GetSelectEquipmentRequest":     //获取RFID卡号为空的设备列表--是否要添加报废丢失设备过滤
                        RfidMaterialBLL           rfmBll         = new RfidMaterialBLL();
                        string                    ref_errMsg_gse = "";
                        List <FIXED_MatetialInfo> fxmList        = rfmBll.GetSelectEquipmentList(ref ref_errMsg_gse);
                        if (ref_errMsg_gse.Equals(""))
                        {
                            response.StatusCode    = 200;
                            responseInfo.msgType   = "GetSelectEquipmentResponse";  //响应消息类型
                            responseInfo.isSuccess = true;                          //是否成功
                            responseInfo.Content   = serializer.Serialize(fxmList); //响应消息内容--JSON字符串
                            OnShowMessage(AnchorEnum.EMessageLevel.EML_INFO, "收到GetSelectEquipmentResponse请求!返回值成功");
                        }
                        else
                        {
                            response.StatusCode    = 500;
                            responseInfo.msgType   = "GetSelectEquipmentResponse"; //响应消息类型
                            responseInfo.isSuccess = false;                        //是否成功
                            responseInfo.Content   = ref_errMsg_gse;               //响应消息内容--JSON字符串
                            OnShowMessage(AnchorEnum.EMessageLevel.EML_ERROR, "收到GetSelectEquipmentResponse请求!返回值失败,原因:" + ref_errMsg_gse);
                            LogUtility.Error("DealHttpDataBLL/ReceiveHttpData", "收到GetSelectEquipmentResponse请求!返回值失败,原因:" + ref_errMsg_gse);
                        }
                        ReturnHttpDataWithSerial(responseInfo, response);
                        break;

                    case "GetStorageListResquest":     //获取仓库(对象)下拉列表请求(包括车辆和分站仓库),Content为""
                        RfidStorageBLL rfisBll                     = new RfidStorageBLL();
                        string         ref_errMsg_gslr             = "";
                        List <GetStorageListResponseInfo> gslrList = rfisBll.GetStorageList(ref ref_errMsg_gslr);
                        if (ref_errMsg_gslr.Equals(""))
                        {
                            response.StatusCode    = 200;
                            responseInfo.msgType   = "GetStorageListResponse";       //响应消息类型
                            responseInfo.isSuccess = true;                           //是否成功
                            responseInfo.Content   = serializer.Serialize(gslrList); //响应消息内容--JSON字符串
                            OnShowMessage(AnchorEnum.EMessageLevel.EML_INFO, "收到GetStorageListResquest请求仓库物联列表数据!返回值成功");
                        }
                        else
                        {
                            response.StatusCode    = 500;
                            responseInfo.msgType   = "GetStorageListResponse"; //响应消息类型
                            responseInfo.isSuccess = false;                    //是否成功
                            responseInfo.Content   = ref_errMsg_gslr;          //响应消息内容--JSON字符串
                            OnShowMessage(AnchorEnum.EMessageLevel.EML_ERROR, "收到GetStorageListResquest请求仓库物联列表数据!返回值失败,原因:" + ref_errMsg_gslr);
                            LogUtility.Error("DealHttpDataBLL/ReceiveHttpData", "收到GetStorageListResquest请求仓库物联列表数据!返回值失败,原因:" + ref_errMsg_gslr);
                        }
                        ReturnHttpDataWithSerial(responseInfo, response);
                        break;

                    case "GetEquipmentListRequest":     //获取设备下拉列表请求
                        RfidMaterialBLL           rfmlBll         = new RfidMaterialBLL();
                        string                    ref_errMsg_gelr = "";
                        List <FIXED_MatetialInfo> fixmList        = rfmlBll.GetEquipmentList(ref ref_errMsg_gelr);
                        if (ref_errMsg_gelr.Equals(""))
                        {
                            response.StatusCode    = 200;
                            responseInfo.msgType   = "GetEquipmentListResponse";     //响应消息类型
                            responseInfo.isSuccess = true;                           //是否成功
                            responseInfo.Content   = serializer.Serialize(fixmList); //响应消息内容--JSON字符串
                            OnShowMessage(AnchorEnum.EMessageLevel.EML_INFO, "收到GetEquipmentListRequest请求!返回值成功");
                        }
                        else
                        {
                            response.StatusCode    = 500;
                            responseInfo.msgType   = "GetEquipmentListResponse"; //响应消息类型
                            responseInfo.isSuccess = false;                      //是否成功
                            responseInfo.Content   = ref_errMsg_gelr;            //响应消息内容--JSON字符串
                            OnShowMessage(AnchorEnum.EMessageLevel.EML_ERROR, "收到GetEquipmentListRequest请求!返回值失败,原因:" + ref_errMsg_gelr);
                            LogUtility.Error("DealHttpDataBLL/ReceiveHttpData", "收到GetEquipmentListRequest请求!返回值失败,原因:" + ref_errMsg_gelr);
                        }
                        ReturnHttpDataWithSerial(responseInfo, response);
                        break;

                    case "GetGiveAlarmRequest":     //获取告警列表--传APP登录用户的ID
                        RfidGiveAlarmBLL rgaBll = new RfidGiveAlarmBLL();
                        //JSON字符串Content(消息内容)转对应实体
                        P_UserInfo userInfo             = serializer.Deserialize <P_UserInfo>(tdataInfo.Content);
                        int        UserID               = userInfo.ID; //用户ID
                        string     ref_errMsg_gga       = "";
                        List <Rfid_AlarmLogInfo> gaList = rgaBll.GetGiveAlarmList(UserID, ref ref_errMsg_gga);
                        if (ref_errMsg_gga.Equals(""))
                        {
                            response.StatusCode    = 200;
                            responseInfo.msgType   = "GetGiveAlarmResponse";       //响应消息类型
                            responseInfo.isSuccess = true;                         //是否成功
                            responseInfo.Content   = serializer.Serialize(gaList); //响应消息内容--JSON字符串
                            OnShowMessage(AnchorEnum.EMessageLevel.EML_INFO, "收到GetGiveAlarmRequest请求!返回值成功");
                        }
                        else
                        {
                            response.StatusCode    = 500;
                            responseInfo.msgType   = "GetGiveAlarmResponse"; //响应消息类型
                            responseInfo.isSuccess = false;                  //是否成功
                            responseInfo.Content   = ref_errMsg_gga;         //响应消息内容--JSON字符串
                            OnShowMessage(AnchorEnum.EMessageLevel.EML_ERROR, "收到GetGiveAlarmRequest请求!返回值失败,原因:" + ref_errMsg_gga);
                            LogUtility.Error("DealHttpDataBLL/ReceiveHttpData", "收到GetGiveAlarmRequest请求!返回值失败,原因:" + ref_errMsg_gga);
                        }
                        ReturnHttpDataWithSerial(responseInfo, response);
                        break;

                    case "AlarmQueryResquest":     //获取告警查询列表
                        RfidGiveAlarmBLL rfgBll = new RfidGiveAlarmBLL();
                        //JSON字符串Content(消息内容)转对应实体
                        AlarmQueryInfo           aqInfo         = serializer.Deserialize <AlarmQueryInfo>(tdataInfo.Content);
                        string                   ref_errMsg_aqr = "";
                        List <Rfid_AlarmLogInfo> aqrList        = rfgBll.GetAlarmQueryList(aqInfo, ref ref_errMsg_aqr);
                        if (ref_errMsg_aqr.Equals(""))
                        {
                            response.StatusCode    = 200;
                            responseInfo.msgType   = "AlarmQueryResponse";          //响应消息类型
                            responseInfo.isSuccess = true;                          //是否成功
                            responseInfo.Content   = serializer.Serialize(aqrList); //响应消息内容--JSON字符串
                            OnShowMessage(AnchorEnum.EMessageLevel.EML_INFO, "收到AlarmQueryResquest请求!返回值成功");
                        }
                        else
                        {
                            response.StatusCode    = 500;
                            responseInfo.msgType   = "AlarmQueryResponse"; //响应消息类型
                            responseInfo.isSuccess = false;                //是否成功
                            responseInfo.Content   = ref_errMsg_aqr;       //响应消息内容--JSON字符串
                            OnShowMessage(AnchorEnum.EMessageLevel.EML_ERROR, "收到AlarmQueryResquest请求!返回值失败,原因:" + ref_errMsg_aqr);
                            LogUtility.Error("DealHttpDataBLL/ReceiveHttpData", "收到AlarmQueryResquest请求!返回值失败,原因:" + ref_errMsg_aqr);
                        }
                        ReturnHttpDataWithSerial(responseInfo, response);
                        break;

                    case "RetrospectiveQueryResquest":     //获取追溯查询列表
                        RfidGiveAlarmBLL rfigBll = new RfidGiveAlarmBLL();
                        //JSON字符串Content(消息内容)转对应实体
                        AlarmQueryInfo           aqqInfo        = serializer.Deserialize <AlarmQueryInfo>(tdataInfo.Content);
                        string                   ref_errMsg_rqr = "";
                        List <Rfid_AlarmLogInfo> rqrList        = rfigBll.GetRetrospectiveQueryList(aqqInfo, ref ref_errMsg_rqr);
                        if (ref_errMsg_rqr.Equals(""))
                        {
                            response.StatusCode    = 200;
                            responseInfo.msgType   = "RetrospectiveQueryResponse";  //响应消息类型
                            responseInfo.isSuccess = true;                          //是否成功
                            responseInfo.Content   = serializer.Serialize(rqrList); //响应消息内容--JSON字符串
                            OnShowMessage(AnchorEnum.EMessageLevel.EML_INFO, "收到RetrospectiveQueryResquest请求!返回值成功");
                        }
                        else
                        {
                            response.StatusCode    = 500;
                            responseInfo.msgType   = "RetrospectiveQueryResponse"; //响应消息类型
                            responseInfo.isSuccess = false;                        //是否成功
                            responseInfo.Content   = ref_errMsg_rqr;               //响应消息内容--JSON字符串
                            OnShowMessage(AnchorEnum.EMessageLevel.EML_ERROR, "收到RetrospectiveQueryResquest请求!返回值失败,原因:" + ref_errMsg_rqr);
                            LogUtility.Error("DealHttpDataBLL/ReceiveHttpData", "收到RetrospectiveQueryResquest请求!返回值失败,原因:" + ref_errMsg_rqr);
                        }
                        ReturnHttpDataWithSerial(responseInfo, response);
                        break;

                    case "UpdateAlarmDataResquest":     //更新告警数据
                        RfidGiveAlarmBLL rfGABll = new RfidGiveAlarmBLL();
                        //JSON字符串Content(消息内容)转对应实体
                        Rfid_AlarmLogInfo ralInfo    = serializer.Deserialize <Rfid_AlarmLogInfo>(tdataInfo.Content);
                        string            upAdResult = "";
                        bool res = rfGABll.UpdateAlarmData(ralInfo, ref upAdResult);
                        if (res)
                        {
                            response.StatusCode    = 200;
                            responseInfo.msgType   = "UpdateAlarmDataResponse"; //响应消息类型
                            responseInfo.isSuccess = true;                      //是否成功
                            responseInfo.Content   = "更新告警数据成功";                //响应消息内容--JSON字符串
                            OnShowMessage(AnchorEnum.EMessageLevel.EML_INFO, "收到UpdateAlarmDataResquest请求!返回值成功");
                        }
                        else
                        {
                            response.StatusCode    = 500;
                            responseInfo.msgType   = "UpdateAlarmDataResponse"; //响应消息类型
                            responseInfo.isSuccess = false;                     //是否成功
                            responseInfo.Content   = upAdResult;                //响应消息内容--JSON字符串
                            OnShowMessage(AnchorEnum.EMessageLevel.EML_ERROR, "收到UpdateAlarmDataResquest请求!返回值失败,原因:" + upAdResult);
                            LogUtility.Error("DealHttpDataBLL/ReceiveHttpData", "收到UpdateAlarmDataResquest请求!返回值失败,原因:" + upAdResult);
                        }
                        ReturnHttpDataWithSerial(responseInfo, response);
                        break;

                    case "GetAlarmInfoResquest":     //add 20200407 获取对应编码的告警数据详情--暂时不用
                        RfidGiveAlarmBLL  rfidGaBll       = new RfidGiveAlarmBLL();
                        Rfid_AlarmLogInfo rInfo           = serializer.Deserialize <Rfid_AlarmLogInfo>(tdataInfo.Content);
                        int               BianMa          = rInfo.BianMa;//告警数据的编码
                        string            ref_errMsg_gair = "";
                        Rfid_AlarmLogInfo raInfo          = rfidGaBll.GetAlarmInfo(BianMa, ref ref_errMsg_gair);
                        if (ref_errMsg_gair.Equals(""))
                        {
                            response.StatusCode    = 200;
                            responseInfo.msgType   = "GetAlarmInfoResponse";       //响应消息类型
                            responseInfo.isSuccess = true;                         //是否成功
                            responseInfo.Content   = serializer.Serialize(raInfo); //响应消息内容--JSON字符串
                            OnShowMessage(AnchorEnum.EMessageLevel.EML_INFO, "收到GetAlarmInfoResquest请求告警信息数据!返回值成功");
                        }
                        else
                        {
                            response.StatusCode    = 500;
                            responseInfo.msgType   = "GetAlarmInfoResponse"; //响应消息类型
                            responseInfo.isSuccess = false;                  //是否成功
                            responseInfo.Content   = ref_errMsg_gair;        //响应消息内容--JSON字符串
                            OnShowMessage(AnchorEnum.EMessageLevel.EML_ERROR, "收到GetAlarmInfoResquest请求告警信息数据!返回值失败,原因:" + ref_errMsg_gair);
                            LogUtility.Error("DealHttpDataBLL/ReceiveHttpData", "收到GetAlarmInfoResquest请求告警信息数据!返回值失败,原因:" + ref_errMsg_gair);
                        }
                        ReturnHttpDataWithSerial(responseInfo, response);
                        break;

                    case "BindDeviceRequest":     //绑定处理--RFID卡与设备绑定
                        RfidRelationBLL rrBLL = new RfidRelationBLL();
                        //JSON字符串Content(消息内容)转对应实体
                        BindEquipmentRequestInfo bemrInfo = serializer.Deserialize <BindEquipmentRequestInfo>(tdataInfo.Content);
                        string SheBeiID  = bemrInfo.SheBeiBianMa;                 //设备编码
                        string RfidKaHao = bemrInfo.RFIDKaHao;                    //RFID卡号
                        string bdrResult = rrBLL.BindDevice(SheBeiID, RfidKaHao); //设备与RFID卡绑定
                        if (bdrResult.Equals(""))
                        {
                            response.StatusCode    = 200;
                            responseInfo.msgType   = "BindDeviceResponse"; //响应消息类型
                            responseInfo.isSuccess = true;                 //是否成功
                            responseInfo.Content   = "RFID卡与设备绑定成功";       //响应消息内容--JSON字符串
                            OnShowMessage(AnchorEnum.EMessageLevel.EML_INFO, "收到BindDeviceRequest请求!绑定成功");
                        }
                        else
                        {
                            response.StatusCode    = 500;
                            responseInfo.msgType   = "BindDeviceResponse"; //响应消息类型
                            responseInfo.isSuccess = false;                //是否成功
                            responseInfo.Content   = bdrResult;            //响应消息内容--JSON字符串
                            OnShowMessage(AnchorEnum.EMessageLevel.EML_ERROR, "收到BindDeviceRequest请求!绑定失败,原因:" + bdrResult);
                            LogUtility.Error("DealHttpDataBLL/ReceiveHttpData", "收到BindDeviceRequest请求!绑定失败,原因:" + bdrResult);
                        }
                        ReturnHttpDataWithSerial(responseInfo, response);
                        break;

                    case "BindStorageRequest":     //绑定处理--绑卡设备与对应仓库绑定
                        RfidRelationBLL rrlBLL = new RfidRelationBLL();
                        //JSON字符串Content(消息内容)转对应实体
                        BindEquipmentRequestInfo bemrrInfo = serializer.Deserialize <BindEquipmentRequestInfo>(tdataInfo.Content);
                        string sbBianMa  = bemrrInfo.SheBeiBianMa;             //设备编码
                        string ckID      = bemrrInfo.CangKuID;                 //仓库ID
                        string bsrResult = rrlBLL.BindStorage(sbBianMa, ckID); //绑卡设备与对应仓库绑定
                        if (bsrResult.Equals(""))
                        {
                            response.StatusCode    = 200;
                            responseInfo.msgType   = "BindStorageResponse"; //响应消息类型
                            responseInfo.isSuccess = true;                  //是否成功
                            responseInfo.Content   = "物联绑定成功";              //响应消息内容--JSON字符串
                            OnShowMessage(AnchorEnum.EMessageLevel.EML_INFO, "收到BindStorageRequest请求!物联绑定成功");
                        }
                        else
                        {
                            response.StatusCode    = 500;
                            responseInfo.msgType   = "BindStorageResponse"; //响应消息类型
                            responseInfo.isSuccess = false;                 //是否成功
                            responseInfo.Content   = bsrResult;             //响应消息内容--JSON字符串
                            OnShowMessage(AnchorEnum.EMessageLevel.EML_ERROR, "收到BindStorageRequest请求!物联绑定失败,原因:" + bsrResult);
                            LogUtility.Error("DealHttpDataBLL/ReceiveHttpData", "收到BindStorageRequest请求!物联绑定失败,原因:" + bsrResult);
                        }
                        ReturnHttpDataWithSerial(responseInfo, response);
                        break;

                    case "UnBindRequest":     //解绑处理--绑卡设备与对应仓库解绑
                        RfidRelationBLL rlBLL = new RfidRelationBLL();
                        //JSON字符串Content(消息内容)转对应实体
                        BindEquipmentRequestInfo beInfo = serializer.Deserialize <BindEquipmentRequestInfo>(tdataInfo.Content);
                        string ckkID        = beInfo.CangKuID;                          //仓库ID
                        string SheBeiBianMa = beInfo.SheBeiBianMa;                      //设备编码
                        string ubrResult    = rlBLL.UnBindStorage(ckkID, SheBeiBianMa); //解绑
                        if (ubrResult.Equals(""))
                        {
                            response.StatusCode    = 200;
                            responseInfo.msgType   = "UnBindResponse"; //响应消息类型
                            responseInfo.isSuccess = true;             //是否成功
                            responseInfo.Content   = "解除绑定成功";         //响应消息内容--JSON字符串
                            OnShowMessage(AnchorEnum.EMessageLevel.EML_INFO, "收到UnBindResquest请求!解除绑定成功");
                        }
                        else
                        {
                            response.StatusCode    = 500;
                            responseInfo.msgType   = "UnBindResponse"; //响应消息类型
                            responseInfo.isSuccess = false;            //是否成功
                            responseInfo.Content   = ubrResult;        //响应消息内容--JSON字符串
                            OnShowMessage(AnchorEnum.EMessageLevel.EML_ERROR, "收到UnBindResquest请求!解除绑定失败,原因:" + ubrResult);
                            LogUtility.Error("DealHttpDataBLL/ReceiveHttpData", "收到UnBindResquest请求!解除绑定失败,原因:" + ubrResult);
                        }
                        ReturnHttpDataWithSerial(responseInfo, response);
                        break;

                    case "LoseRequest":     //丢失处理
                        RfidRelationBLL rflBLL = new RfidRelationBLL();
                        //JSON字符串Content(消息内容)转对应实体
                        BindEquipmentRequestInfo bdeInfo = serializer.Deserialize <BindEquipmentRequestInfo>(tdataInfo.Content);
                        string ckId    = bdeInfo.CangKuID;            //仓库ID
                        string sbID    = bdeInfo.SheBeiBianMa;        //设备编码
                        string lResult = rflBLL.DealLose(ckId, sbID); //丢失
                        if (lResult.Equals(""))
                        {
                            response.StatusCode    = 200;
                            responseInfo.msgType   = "LoseResponse"; //响应消息类型
                            responseInfo.isSuccess = true;           //是否成功
                            responseInfo.Content   = "丢失处理成功";       //响应消息内容--JSON字符串
                            OnShowMessage(AnchorEnum.EMessageLevel.EML_INFO, "收到LoseResquest请求!丢失请求处理成功");
                        }
                        else
                        {
                            response.StatusCode    = 500;
                            responseInfo.msgType   = "LoseResponse"; //响应消息类型
                            responseInfo.isSuccess = false;          //是否成功
                            responseInfo.Content   = lResult;        //响应消息内容--JSON字符串
                            OnShowMessage(AnchorEnum.EMessageLevel.EML_ERROR, "收到LoseResquest请求!丢失请求处理失败,原因:" + lResult);
                            LogUtility.Error("DealHttpDataBLL/ReceiveHttpData", "收到LoseResquest请求!丢失请求处理失败,原因:" + lResult);
                        }
                        ReturnHttpDataWithSerial(responseInfo, response);
                        break;

                    case "IfBoundRequest":     //验证RFID卡是否已有对应绑定设备请求 add20200408 plq
                        RfidRelationBLL rfiRBLL = new RfidRelationBLL();
                        //JSON字符串Content(消息内容)转对应实体
                        BindEquipmentRequestInfo bideInfo = serializer.Deserialize <BindEquipmentRequestInfo>(tdataInfo.Content);
                        string rfidCode             = bideInfo.RFIDKaHao;                            //RFID卡号
                        string ref_errMsg_ibr       = "";
                        IfBoundResponseInfo ibrInfo = rfiRBLL.IfBound(rfidCode, ref ref_errMsg_ibr); //RFID卡是否已有绑定设备
                        if (ref_errMsg_ibr.Equals(""))                                               //执行过程中未出现异常
                        {
                            response.StatusCode    = 200;
                            responseInfo.msgType   = "IfBoundResponse";             //响应消息类型
                            responseInfo.isSuccess = true;                          //是否成功
                            responseInfo.Content   = serializer.Serialize(ibrInfo); //响应消息内容--JSON字符串
                            OnShowMessage(AnchorEnum.EMessageLevel.EML_INFO, "收到IfBoundRequest请求!请求处理成功");
                        }
                        else
                        {
                            response.StatusCode    = 500;
                            responseInfo.msgType   = "IfBoundResponse"; //响应消息类型
                            responseInfo.isSuccess = false;             //是否成功
                            responseInfo.Content   = ref_errMsg_ibr;    //响应消息内容--JSON字符串
                            OnShowMessage(AnchorEnum.EMessageLevel.EML_ERROR, "收到IfBoundRequest请求!请求处理失败,原因:" + ref_errMsg_ibr);
                            LogUtility.Error("DealHttpDataBLL/ReceiveHttpData", "收到IfBoundRequest请求!请求处理失败,原因:" + ref_errMsg_ibr);
                        }
                        ReturnHttpDataWithSerial(responseInfo, response);
                        break;

                    case "GiveAlarmRequest":                               //http请求触发 扫库、判定、发消息操作---测试用---正常是在内部通讯接收到车辆状态改变时调用
                        DealInnerCommBLL.GetInstance().DealRfidReadData(); //扫库--调用测试--后期待注释
                        break;

                    default:
                        OnShowMessage(AnchorEnum.EMessageLevel.EML_ERROR, "http收到错误信息;消息类型:" + tdataInfo.MessageType);
                        ReturnHttpData("错误信息,消息类型无法识别", response);
                        break;
                    }
                }
            }
            catch (Exception ex)
            {
                OnShowMessage(AnchorEnum.EMessageLevel.EML_ERROR, "Http请求协议解析错误[" + ex.Message + "]");
                ReturnHttpData("Http请求协议解析错误[" + ex.Message + "]", response);
                //Log4Net.LogError("DealHttpDataBLL/ReceiveHttpData", "协议解析错误[" + ex.Message + "]");
                LogUtility.Error("DealHttpDataBLL/ReceiveHttpData", "Http请求协议解析错误![" + ex.Message + "]");
            }
            finally
            {
                body.Close();
                reader.Close();
            }
        }
Esempio n. 11
0
        /// <summary>
        /// 扫描RFID读取中间库,判断绑定关系,推送对应弹窗消息
        /// </summary>
        public void DealRfidReadData()
        {
            /*  物资 对应管理库AKPDMange中表FIXED_Matetial数据
             *  读取 对应中间库ExchangeDB_RFID中表Rfid_Read数据
             *  物资数据即取到的mList集合,读取数据即取到的readList集合---过滤掉报废、丢失的物资及其关联RFID卡的读取数据
             *  FIXED_Matetial中的 RFID卡号 对应Rfid_Read表中的 tag_code 字段
             *  FIXED_Matetial中的 当前仓库编码 关联仓库表FIXED_Storage中的 扫描仪串号 字段 对应Rfid_Read表中的 base_code 字段
             */
            List <Rfid_AlarmLogInfo> ralList = new List <Rfid_AlarmLogInfo>(); //add20200403 plq 待新增告警数据 List集合
            DateTime now = DateTime.Now;                                       //当前时间---统一方法内部当前记录时间的取值 add20200410 plq

            #region 实时告警推送前先清空历史告警(设为无效)  add20200410 plq
            //实时告警推送前先清空历史告警,历史告警数据的 是否有效 字段置为false
            bool clearResult = new DealInnerCommDAL().ClearHistoryAlarm();
            if (!clearResult)
            {
                LogUtility.Error("DealInnerCommBLL/DealRfidReadData", "清空历史告警数据时出错");
            }
            #endregion

            #region 从表中获取物资数据和读取数据的List集合

            //获取Rfid_Read表中 读取数据 List集合--只取state为1(代表存在)的数据
            List <Rfid_ReadInfo> readList = new DealInnerCommDAL().GetRfidReadList();
            //获取FIXED_Matetial表中  物资数据 List集合
            List <FIXED_MatetialInfo> mList = new DealInnerCommDAL().GetMaterialList();

            #endregion

            #region 从对应List中取出非重 仓库ID 的List集合

            //仓库ID List集合
            List <int>    rStorageList  = new List <int>();    //读取数据中仓库ID的list集合---存储readList中所有出现的仓库ID(state=1)----前提:所有的读写器绑定仓库要提前绑定好
            List <int>    mStorageList  = new List <int>();    //物资数据中仓库ID的list集合---存储mList所有出现的仓库ID
            List <string> rBaseCodeList = new List <string>(); //add20200402 plq 存放读取数据中未绑定仓库的 读卡器编码 List集合
            List <int>    mCangKuIDList = new List <int>();    //add20200402 plq 存放物资数据中未绑定读卡器的 仓库编码 List集合

            //获取读取表readList数据中的基站(暂取仓库ID)非重List集合
            foreach (var item in readList)
            {
                if (!String.IsNullOrEmpty(item.CangKuID))                       //仓库编码不为空---当读写器ID未绑定仓库时,会出现仓库编码为空的bug
                {
                    if (!rStorageList.Contains(Convert.ToInt32(item.CangKuID))) //判断仓库IDList中是否已存在该ID
                    {
                        rStorageList.Add(Convert.ToInt32(item.CangKuID));       //没有,则添加
                    }
                }
                else //读取数据里有某个基站读写器的扫描数据,但因读写器未绑定仓库导致无法进行后续匹配判断
                {
                    if (!rBaseCodeList.Contains(item.base_code))
                    {
                        rBaseCodeList.Add(item.base_code);                                                     //记录未绑定仓库的读卡器编码
                        //显示提示消息及日志记录
                        OnShowMessage(AnchorEnum.EMessageLevel.EML_ERROR, "读卡器ID" + item.base_code + "未绑定仓库"); //WinForm ListView显示消息
                        LogUtility.Error("提示信息:", "读取数据中--读卡器ID" + item.base_code + "未绑定对应仓库");                //记录日志
                    }
                }
            }
            //int i = rStorageList.Count;
            //int b = rBaseCodeList.Count;

            //获取物资List数据中的基站(暂取当前仓库编码)非重List集合
            foreach (var item in mList)
            {
                if (item.DangQianCangKuBianMa > 0) //正常情况下当前仓库编码应该是>0的,暂时只有当仓库与设备解绑时默认其值为-1
                {
                    if (!mStorageList.Contains(item.DangQianCangKuBianMa))
                    {
                        mStorageList.Add(item.DangQianCangKuBianMa);
                    }
                }
            }
            //int y = mStorageList.Count;

            #endregion

            #region 比较这两个 仓库ID List集合,初步判断绑定关系,并提取出两个List中共有的 仓库ID 的List集合

            List <int> comStorageList = new List <int>(); //共有 仓库ID List集合,用来存储mStorageList和rStorageList中共有的仓库ID

            //比较这2个仓库ID的List集合
            //如果mStorageList里有某个仓库ID,而rStorageList里没有,那么物资表mList集合里此仓库ID所有对应设备都走解绑/丢失(不存在)流程
            //如果rStorageList有某个仓库ID,而mStorageList里没有,那么读取表readList里此仓库ID所有对应RFID卡对应设备都走绑定流程---若卡没有对应设备,则先走一次卡与设备的绑定

            foreach (var item in mStorageList)    //mStorageList物资数据仓库集合里有此仓库ID
            {
                if (!rStorageList.Contains(item)) //rStorageList读取数据仓库集合里没有这个仓库ID
                {
                    //物资表mList中此仓库ID所有对应设备都走解绑/丢失流程
                    //若存在设备的RFID卡为空咋办???若读写器未与仓库绑,存在读写器ID为空情况咋办???---目前只做了ListView消息提示

                    //获取物资数据mList中该仓库ID的所有设备数据
                    List <Rfid_DataInfo> cksMList = new List <Rfid_DataInfo>();//对应物资数据中提取对应仓库所有设备的告警基本信息List
                    foreach (var minfo in mList)
                    {
                        if (minfo.DangQianCangKuBianMa == item)
                        {
                            Rfid_DataInfo info = new Rfid_DataInfo();
                            info.CangKuID        = minfo.DangQianCangKuBianMa; //当前仓库编码
                            info.CangKuMingCheng = minfo.DangQianCangKu;       //当前仓库
                            info.DuXieQiID       = minfo.DuXieQiID;            //读写器ID---可能为空
                            info.SheBeiID        = minfo.BianMa;               //编码
                            info.SheBeiMingCheng = minfo.ZiChanMingCheng;      //资产名称
                            info.RFIDKaHao       = minfo.RFIDKaHao;            //RFID卡号---可能为空
                            cksMList.Add(info);
                        }
                    }

                    //该仓库所有设备都走解绑/丢失
                    foreach (var cksInfo in cksMList)
                    {
                        if (String.IsNullOrEmpty(cksInfo.DuXieQiID)) //读写器ID为空
                        {
                            if (!mCangKuIDList.Contains(cksInfo.CangKuID))
                            {
                                mCangKuIDList.Add(cksInfo.CangKuID); //记录读卡器编码为空的仓库ID
                                //显示提示消息及日志记录
                                OnShowMessage(AnchorEnum.EMessageLevel.EML_ERROR, "仓库ID" + cksInfo.CangKuID + ",仓库名称:" + cksInfo.CangKuMingCheng + " 未绑定读卡器");
                                LogUtility.Error("提示信息:", "物资数据中--仓库ID" + cksInfo.CangKuID + ",仓库名称:" + cksInfo.CangKuMingCheng + " 未绑定读卡器"); //记录日志
                            }
                        }
                        if (String.IsNullOrEmpty(cksInfo.RFIDKaHao)) //RFID卡号为空
                        {
                            OnShowMessage(AnchorEnum.EMessageLevel.EML_ERROR, "设备编码" + cksInfo.SheBeiID + ",设备名称:" + cksInfo.SheBeiMingCheng + " 未绑定RFID卡");
                            LogUtility.Error("提示信息:", "物资数据中--设备编码" + cksInfo.SheBeiID + ",设备名称:" + cksInfo.SheBeiMingCheng + " 未绑定RFID卡"); //记录日志
                        }
                        //上面2种情况除了显示提示信息,是否也走下面的解绑/丢失流程???---暂时是也走流程

                        //走解绑/丢失流程--向客户端发送告警消息,同时存告警数据到表Rfid_AlarmLog中
                        Rfid_AlarmLogInfo ralInfo = new Rfid_AlarmLogInfo();
                        ralInfo.BianMa = GetMaxID("Rfid_AlarmLog") + 1;//获取表的编码最大值+1--主键 编码为int型时
                        //ralInfo.JiLuShiJian = DateTime.Now;
                        ralInfo.JiLuShiJian          = now;
                        ralInfo.CaoZuoLeiXingBianMa  = (int)Utility.AnchorEnum.ERfid_OperationType.物资不存在; //操作类型编码
                        ralInfo.SheBeiID             = cksInfo.SheBeiID;
                        ralInfo.SheBeiMingCheng      = cksInfo.SheBeiMingCheng;
                        ralInfo.RFIDKaHao            = cksInfo.RFIDKaHao;
                        ralInfo.CangKuID             = cksInfo.CangKuID;
                        ralInfo.CangKuMingCheng      = cksInfo.CangKuMingCheng;
                        ralInfo.DuXieQiID            = cksInfo.DuXieQiID;
                        ralInfo.CangKuLeiXingBianMa  = GetParentTypeByCkID(ralInfo.CangKuID); //根据仓库ID获取其祖先仓库编码,判断仓库类型
                        ralInfo.ChuLiZhuangTaiBianMa = (int)Utility.AnchorEnum.ERfid_ProcessingState.未处理;
                        ralInfo.ShiFouYouXiao        = true;                                  //add20200410 plq

                        //重复告警验证---若历史告警中存在未处理的重复告警,不要再次推,只更新数据
                        //先判断告警记录表Rfid_AlarmLog中是否已存在重复未处理的告警数据
                        //有重复告警则暂时更新 记录时间 字段,无则插库且发送客户端消息
                        string errMsg   = "";               //异常报错信息
                        bool   isRepeat = new DealInnerCommDAL().VerifyIsRepeat(ralInfo, ref errMsg);
                        if (!isRepeat && errMsg.Equals("")) //没有重复告警且执行未报错
                        {
                            ralList.Add(ralInfo);           //add20200403 plq 加入待新增告警数据 List集合
                            ////插表
                            //bool res = new DealInnerCommDAL().InsertAlarmLog(ralInfo);
                            //if (res) //如果插表成功
                            //{
                            //    ////向客户端发送告警消息---暂时默认全部客户端,后期根据对应仓库的人员编码列表来遍历指定发送
                            //    //TDataInfo tdataInfo = new TDataInfo();
                            //    //tdataInfo.MessageType = "GiveAlarm";
                            //    //tdataInfo.Content = ObjectToJson.GetObjectToString(ralInfo);
                            //    //TerminalComm.GetInstance().SendToDeviceAll(ObjectToJson.GetObjectTobytes(tdataInfo));
                            //    //OnShowMessage(AnchorEnum.EMessageLevel.EML_INFO, "向所有客户端发送告警数据成功!");

                            //    //获取拥有该仓库ID对应权限的人员ID列表  20200403 注释:改为先存入List,最后统一发送消息
                            //    List<string> uidList = new DealInnerCommDAL().GetUidListByCkID(ralInfo.CangKuID);
                            //    //遍历向指定客户端发送告警消息
                            //    foreach (string uid in uidList)
                            //    {
                            //        TDataInfo tdataInfo = new TDataInfo();
                            //        tdataInfo.MessageType = "GiveAlarm";
                            //        tdataInfo.Content = ObjectToJson.GetObjectToString(ralInfo);
                            //        tdataInfo.Code = uid;//客户端编码---使用登录APP用户的UserID字段
                            //        TerminalComm.GetInstance().SendToDevice(uid, ObjectToJson.GetObjectTobytes(tdataInfo));
                            //        OnShowMessage(AnchorEnum.EMessageLevel.EML_INFO, "向客户端:UserID[" + uid + "]APP发送告警数据成功!");
                            //    }
                            //}
                            //else //如果插表操作失败
                            //{
                            //    LogUtility.Error("告警提示信息1:", "新增告警信息失败"); //记录日志
                            //}
                        }
                    }
                }
                else //物资仓库ID的List和读取仓库ID的List都有此仓库ID
                {
                    comStorageList.Add(item);
                }
            }

            foreach (var item in rStorageList)    //rStorageList读取数据有这个仓库ID
            {
                if (!mStorageList.Contains(item)) //mStorageList物资数据里没有这个仓库ID
                {
                    //读取表readList中此仓库ID所有对应RFID卡的对应设备都走绑定流程---若卡没有对应设备,则先走一次卡与设备的绑定
                    List <Rfid_DataInfo> cksRList = new List <Rfid_DataInfo>(); //从读取数据中提取的对应仓库的所有RFID卡告警基本信息List
                    try
                    {
                        foreach (var rinfo in readList)
                        {
                            if (!String.IsNullOrEmpty(rinfo.CangKuID)) //add20200402 plq 若读取数据的基站读卡器未绑定仓库---则无法判断仓库设备绑定关系
                            {
                                if (Convert.ToInt32(rinfo.CangKuID) == item)
                                {
                                    Rfid_DataInfo info = new Rfid_DataInfo();
                                    info.CangKuID        = Convert.ToInt32(rinfo.CangKuID); //仓库ID
                                    info.CangKuMingCheng = rinfo.CangKuMingCheng;           //仓库名称
                                    info.DuXieQiID       = rinfo.base_code;                 //读写器ID
                                    info.SheBeiID        = rinfo.SheBeiID;                  //设备ID---可能为空,当RFID卡还未绑定设备时
                                    info.SheBeiMingCheng = rinfo.SheBeiMingCheng;           //设备名称---可能为空,当RFID卡还未绑定设备时
                                    info.RFIDKaHao       = rinfo.tag_code;                  //RFID卡号
                                    cksRList.Add(info);
                                }
                            }
                        }
                    }
                    catch (Exception ex)
                    {
                        LogUtility.Error("DealInnerCommBLL/DealRfidReadData", "获取读取数据对应仓库设备信息错误:[" + ex.Message + "]");
                        throw;
                    }

                    //该仓库所有对应RFID卡的对应设备都走绑定流程---若卡没有对应设备,则先走一次卡与设备的绑定
                    foreach (var cksInfo in cksRList)
                    {
                        if (String.IsNullOrEmpty(cksInfo.SheBeiID)) //卡未绑定设备,走初次绑定(卡绑定设备)流程
                        {
                            Rfid_AlarmLogInfo ralInfo = new Rfid_AlarmLogInfo();
                            ralInfo.BianMa = GetMaxID("Rfid_AlarmLog") + 1;//获取表的编码最大值+1--主键 编码为int型时
                            //ralInfo.JiLuShiJian = DateTime.Now;
                            ralInfo.JiLuShiJian          = now;
                            ralInfo.CaoZuoLeiXingBianMa  = (int)Utility.AnchorEnum.ERfid_OperationType.初次绑定; //操作类型编码
                            ralInfo.SheBeiID             = cksInfo.SheBeiID;
                            ralInfo.SheBeiMingCheng      = cksInfo.SheBeiMingCheng;
                            ralInfo.RFIDKaHao            = cksInfo.RFIDKaHao;
                            ralInfo.CangKuID             = cksInfo.CangKuID;
                            ralInfo.CangKuMingCheng      = cksInfo.CangKuMingCheng;
                            ralInfo.DuXieQiID            = cksInfo.DuXieQiID;
                            ralInfo.CangKuLeiXingBianMa  = GetParentTypeByCkID(ralInfo.CangKuID); //根据仓库ID获取其祖先仓库编码,判断仓库类型
                            ralInfo.ChuLiZhuangTaiBianMa = (int)Utility.AnchorEnum.ERfid_ProcessingState.未处理;
                            ralInfo.ShiFouYouXiao        = true;                                  //add20200410 plq

                            //重复告警验证---若历史告警中存在未处理的重复告警,不要再次推,只更新数据
                            string errMsg   = "";               //异常报错信息
                            bool   isRepeat = new DealInnerCommDAL().VerifyIsRepeat(ralInfo, ref errMsg);
                            if (!isRepeat && errMsg.Equals("")) //没有重复告警且执行未报错
                            {
                                ralList.Add(ralInfo);           //add20200403 plq 加入待新增告警数据 List集合
                                ////插表
                                //bool res = new DealInnerCommDAL().InsertAlarmLog(ralInfo);
                                //if (res) //如果插表成功
                                //{
                                //    //获取拥有该仓库ID对应权限的人员ID列表
                                //    List<string> uidList = new DealInnerCommDAL().GetUidListByCkID(ralInfo.CangKuID);
                                //    //遍历向指定客户端发送告警消息
                                //    foreach (string uid in uidList)
                                //    {
                                //        TDataInfo tdataInfo = new TDataInfo();
                                //        tdataInfo.MessageType = "GiveAlarm";
                                //        tdataInfo.Content = ObjectToJson.GetObjectToString(ralInfo);
                                //        tdataInfo.Code = uid;//客户端编码---使用登录APP用户的UserID字段
                                //        TerminalComm.GetInstance().SendToDevice(uid, ObjectToJson.GetObjectTobytes(tdataInfo));
                                //        OnShowMessage(AnchorEnum.EMessageLevel.EML_INFO, "向客户端:UserID[" + uid + "]APP发送告警数据成功!");
                                //    }
                                //}
                                //else //如果插表失败
                                //{
                                //    LogUtility.Error("告警提示信息2:", "新增告警信息失败"); //记录日志
                                //}
                            }
                        }
                        else  //设备ID不为空(卡已绑设备),走物联绑定流程
                        {
                            Rfid_AlarmLogInfo ralInfo = new Rfid_AlarmLogInfo();
                            ralInfo.BianMa = GetMaxID("Rfid_AlarmLog") + 1;//获取表的编码最大值+1--主键 编码为int型时
                            //ralInfo.JiLuShiJian = DateTime.Now;
                            ralInfo.JiLuShiJian          = now;
                            ralInfo.CaoZuoLeiXingBianMa  = (int)Utility.AnchorEnum.ERfid_OperationType.物联绑定; //操作类型编码
                            ralInfo.SheBeiID             = cksInfo.SheBeiID;
                            ralInfo.SheBeiMingCheng      = cksInfo.SheBeiMingCheng;
                            ralInfo.RFIDKaHao            = cksInfo.RFIDKaHao;
                            ralInfo.CangKuID             = cksInfo.CangKuID;
                            ralInfo.CangKuMingCheng      = cksInfo.CangKuMingCheng;
                            ralInfo.DuXieQiID            = cksInfo.DuXieQiID;
                            ralInfo.CangKuLeiXingBianMa  = GetParentTypeByCkID(ralInfo.CangKuID); //根据仓库ID获取其祖先仓库编码,判断仓库类型
                            ralInfo.ChuLiZhuangTaiBianMa = (int)Utility.AnchorEnum.ERfid_ProcessingState.未处理;
                            ralInfo.ShiFouYouXiao        = true;                                  //add20200410 plq

                            //重复告警验证---若历史告警中存在未处理的重复告警,不要再次推,只更新数据
                            string errMsg   = "";               //异常报错信息
                            bool   isRepeat = new DealInnerCommDAL().VerifyIsRepeat(ralInfo, ref errMsg);
                            if (!isRepeat && errMsg.Equals("")) //没有重复告警且执行未报错
                            {
                                ralList.Add(ralInfo);           //add20200403 plq 加入待新增告警数据 List集合
                                ////插表
                                //bool res = new DealInnerCommDAL().InsertAlarmLog(ralInfo);
                                //if (res) //如果插表成功
                                //{
                                //    //获取拥有该仓库ID对应权限的人员ID列表
                                //    List<string> uidList = new DealInnerCommDAL().GetUidListByCkID(ralInfo.CangKuID);
                                //    //遍历向指定客户端发送告警消息
                                //    foreach (string uid in uidList)
                                //    {
                                //        TDataInfo tdataInfo = new TDataInfo();
                                //        tdataInfo.MessageType = "GiveAlarm";
                                //        tdataInfo.Content = ObjectToJson.GetObjectToString(ralInfo);
                                //        tdataInfo.Code = uid;//客户端编码---使用登录APP用户的UserID字段
                                //        TerminalComm.GetInstance().SendToDevice(uid, ObjectToJson.GetObjectTobytes(tdataInfo));
                                //        OnShowMessage(AnchorEnum.EMessageLevel.EML_INFO, "向客户端:UserID[" + uid + "]APP发送告警数据成功!");
                                //    }
                                //}
                                //else //如果插表失败
                                //{
                                //    LogUtility.Error("告警提示信息3:", "新增告警信息失败"); //记录日志
                                //}
                            }
                        }
                    }
                }
            }
            //int z = comStorageList.Count;

            #endregion

            #region 遍历共有仓库ID,取读取数据和物资数据中对应仓库ID的设备基本信息List,再次进行绑定关系判断
            //若两个list中都有该仓库ID,则再提取readList与mList此ID对应设备的List数据集合进行比较
            //共有仓库ID的前提是该仓库已绑定读写器,所以下方的仓库ID、读写器ID在此种情形下不会为空值
            foreach (var ckId in comStorageList) //遍历共有仓库的仓库ID
            {
                //从物资数据mList中提取出对应仓库ID的所有设备数据
                List <Rfid_DataInfo> ckMList = new List <Rfid_DataInfo>();
                foreach (var mInfo in mList)
                {
                    if (mInfo.DangQianCangKuBianMa == ckId)
                    {
                        Rfid_DataInfo info = new Rfid_DataInfo();
                        info.CangKuID        = mInfo.DangQianCangKuBianMa; //当前仓库编码
                        info.CangKuMingCheng = mInfo.DangQianCangKu;       //当前仓库
                        info.DuXieQiID       = mInfo.DuXieQiID;            //读写器ID
                        info.SheBeiID        = mInfo.BianMa;               //编码
                        info.SheBeiMingCheng = mInfo.ZiChanMingCheng;      //资产名称
                        info.RFIDKaHao       = mInfo.RFIDKaHao;            //RFID卡号---可能为空--设备未绑定卡时
                        ckMList.Add(info);
                    }
                }

                //从读取数据readList中提取对应仓库ID的所有读取到的RFID卡数据
                List <Rfid_DataInfo> ckRList = new List <Rfid_DataInfo>();
                foreach (var rInfo in readList)
                {
                    if (!String.IsNullOrEmpty(rInfo.CangKuID)) //add20200402 plq 若读取数据的基站读卡器未绑定仓库---则无法判断仓库设备绑定关系
                    {
                        if (Convert.ToInt32(rInfo.CangKuID) == ckId)
                        {
                            Rfid_DataInfo info = new Rfid_DataInfo();
                            info.CangKuID        = Convert.ToInt32(rInfo.CangKuID); //仓库ID
                            info.CangKuMingCheng = rInfo.CangKuMingCheng;           //仓库名称
                            info.DuXieQiID       = rInfo.base_code;                 //读写器ID
                            info.SheBeiID        = rInfo.SheBeiID;                  //设备ID---可能为空,当RFID卡还未绑定设备时
                            info.SheBeiMingCheng = rInfo.SheBeiMingCheng;           //设备名称---可能为空,当RFID卡还未绑定设备时
                            info.RFIDKaHao       = rInfo.tag_code;                  //RFID卡号
                            ckRList.Add(info);
                        }
                    }
                }

                //两次遍历比较,物资数据中多的设备走解绑/丢失流程,读取数据中多的走绑定流程
                foreach (var ckInfo in ckMList)    //物资表存在
                {
                    if (!ckRList.Contains(ckInfo)) //读取表不存在----走解绑/丢失流程
                    {
                        //如果读取数据中其实有对应卡数据,但物资中对应数据的RFID卡号为空,而导致匹配不上,除了显示提示信息,是否也走解绑/丢失流程???
                        //走的话会既走一次解绑/丢失,对应也走一次卡的初次绑定

                        if (String.IsNullOrEmpty(ckInfo.RFIDKaHao))
                        {
                            OnShowMessage(AnchorEnum.EMessageLevel.EML_ERROR, "设备编码:" + ckInfo.SheBeiID + ",设备名称:" + ckInfo.SheBeiMingCheng + " 未绑定RFID卡");
                            LogUtility.Error("提示信息:", "设备编码:" + ckInfo.SheBeiID + ",设备名称:" + ckInfo.SheBeiMingCheng + " 未绑定RFID卡"); //记录日志
                        }
                        //上面情况是也走后面的代码,还是else执行后面代码???---暂时是也走流程
                        Rfid_AlarmLogInfo ralInfo = new Rfid_AlarmLogInfo();
                        ralInfo.BianMa = GetMaxID("Rfid_AlarmLog") + 1;//获取表的编码最大值+1--主键 编码为int型时
                        //ralInfo.JiLuShiJian = DateTime.Now;
                        ralInfo.JiLuShiJian          = now;
                        ralInfo.CaoZuoLeiXingBianMa  = (int)Utility.AnchorEnum.ERfid_OperationType.物资不存在; //操作类型编码
                        ralInfo.SheBeiID             = ckInfo.SheBeiID;
                        ralInfo.SheBeiMingCheng      = ckInfo.SheBeiMingCheng;
                        ralInfo.RFIDKaHao            = ckInfo.RFIDKaHao;
                        ralInfo.CangKuID             = ckInfo.CangKuID;
                        ralInfo.CangKuMingCheng      = ckInfo.CangKuMingCheng;
                        ralInfo.DuXieQiID            = ckInfo.DuXieQiID;
                        ralInfo.CangKuLeiXingBianMa  = GetParentTypeByCkID(ralInfo.CangKuID); //根据仓库ID获取其祖先仓库编码,判断仓库类型
                        ralInfo.ChuLiZhuangTaiBianMa = (int)Utility.AnchorEnum.ERfid_ProcessingState.未处理;
                        ralInfo.ShiFouYouXiao        = true;                                  //add20200410 plq

                        //重复告警验证---若历史告警中存在未处理的重复告警,不要再次推,只更新数据
                        string errMsg   = "";               //异常报错信息
                        bool   isRepeat = new DealInnerCommDAL().VerifyIsRepeat(ralInfo, ref errMsg);
                        if (!isRepeat && errMsg.Equals("")) //没有重复告警且执行未报错
                        {
                            ralList.Add(ralInfo);           //add20200403 plq 加入待新增告警数据 List集合
                            ////插表
                            //bool res = new DealInnerCommDAL().InsertAlarmLog(ralInfo);
                            //if (res) //如果插表成功
                            //{
                            //    //获取拥有该仓库ID对应权限的人员ID列表
                            //    List<string> uidList = new DealInnerCommDAL().GetUidListByCkID(ralInfo.CangKuID);
                            //    //遍历向指定客户端发送告警消息
                            //    foreach (string uid in uidList)
                            //    {
                            //        TDataInfo tdataInfo = new TDataInfo();
                            //        tdataInfo.MessageType = "GiveAlarm";
                            //        tdataInfo.Content = ObjectToJson.GetObjectToString(ralInfo);
                            //        tdataInfo.Code = uid;//客户端编码---使用登录APP用户的UserID字段
                            //        TerminalComm.GetInstance().SendToDevice(uid, ObjectToJson.GetObjectTobytes(tdataInfo));
                            //        OnShowMessage(AnchorEnum.EMessageLevel.EML_INFO, "向客户端:UserID[" + uid + "]APP发送告警数据成功!");
                            //    }
                            //}
                            //else //如果插表失败
                            //{
                            //    LogUtility.Error("告警提示信息4:", "新增告警信息失败"); //记录日志
                            //}
                        }
                    }
                }
                foreach (var ckInfo in ckRList)                    //读取表存在
                {
                    if (!ckMList.Contains(ckInfo))                 //物资表不存在----走绑定流程
                    {
                        if (String.IsNullOrEmpty(ckInfo.SheBeiID)) //卡未绑定设备,走初次绑定流程
                        {
                            Rfid_AlarmLogInfo ralInfo = new Rfid_AlarmLogInfo();
                            ralInfo.BianMa = GetMaxID("Rfid_AlarmLog") + 1;//获取表的编码最大值+1--主键 编码为int型时
                            //ralInfo.JiLuShiJian = DateTime.Now;
                            ralInfo.JiLuShiJian          = now;
                            ralInfo.CaoZuoLeiXingBianMa  = (int)Utility.AnchorEnum.ERfid_OperationType.初次绑定; //操作类型编码
                            ralInfo.SheBeiID             = ckInfo.SheBeiID;
                            ralInfo.SheBeiMingCheng      = ckInfo.SheBeiMingCheng;
                            ralInfo.RFIDKaHao            = ckInfo.RFIDKaHao;
                            ralInfo.CangKuID             = ckInfo.CangKuID;
                            ralInfo.CangKuMingCheng      = ckInfo.CangKuMingCheng;
                            ralInfo.DuXieQiID            = ckInfo.DuXieQiID;
                            ralInfo.CangKuLeiXingBianMa  = GetParentTypeByCkID(ralInfo.CangKuID); //根据仓库ID获取其祖先仓库编码,判断仓库类型
                            ralInfo.ChuLiZhuangTaiBianMa = (int)Utility.AnchorEnum.ERfid_ProcessingState.未处理;
                            ralInfo.ShiFouYouXiao        = true;                                  //add20200410 plq

                            //重复告警验证---若历史告警中存在未处理的重复告警,不要再次推,只更新数据
                            string errMsg   = "";               //异常报错信息
                            bool   isRepeat = new DealInnerCommDAL().VerifyIsRepeat(ralInfo, ref errMsg);
                            if (!isRepeat && errMsg.Equals("")) //没有重复告警且执行未报错
                            {
                                ralList.Add(ralInfo);           //add20200403 plq 加入待新增告警数据 List集合
                                ////插表
                                //bool res = new DealInnerCommDAL().InsertAlarmLog(ralInfo);
                                //if (res) //如果插表成功
                                //{
                                //    //获取拥有该仓库ID对应权限的人员ID列表
                                //    List<string> uidList = new DealInnerCommDAL().GetUidListByCkID(ralInfo.CangKuID);
                                //    //遍历向指定客户端发送告警消息
                                //    foreach (string uid in uidList)
                                //    {
                                //        TDataInfo tdataInfo = new TDataInfo();
                                //        tdataInfo.MessageType = "GiveAlarm";
                                //        tdataInfo.Content = ObjectToJson.GetObjectToString(ralInfo);
                                //        tdataInfo.Code = uid;//客户端编码---使用登录APP用户的UserID字段
                                //        TerminalComm.GetInstance().SendToDevice(uid, ObjectToJson.GetObjectTobytes(tdataInfo));
                                //        OnShowMessage(AnchorEnum.EMessageLevel.EML_INFO, "向客户端:UserID[" + uid + "]APP发送告警数据成功!");
                                //    }
                                //}
                                //else //如果插表失败
                                //{
                                //    LogUtility.Error("告警提示信息5:", "新增告警信息失败"); //记录日志
                                //}
                            }
                        }
                        else
                        {                                                   //设备ID存在(卡已绑设备),走物联绑定流程
                            Rfid_AlarmLogInfo ralInfo = new Rfid_AlarmLogInfo();
                            ralInfo.BianMa = GetMaxID("Rfid_AlarmLog") + 1; //获取表的编码最大值+1--主键 编码为int型时
                            //ralInfo.JiLuShiJian = DateTime.Now;
                            ralInfo.JiLuShiJian          = now;
                            ralInfo.CaoZuoLeiXingBianMa  = (int)Utility.AnchorEnum.ERfid_OperationType.物联绑定; //操作类型编码
                            ralInfo.SheBeiID             = ckInfo.SheBeiID;
                            ralInfo.SheBeiMingCheng      = ckInfo.SheBeiMingCheng;
                            ralInfo.RFIDKaHao            = ckInfo.RFIDKaHao;
                            ralInfo.CangKuID             = ckInfo.CangKuID;
                            ralInfo.CangKuMingCheng      = ckInfo.CangKuMingCheng;
                            ralInfo.DuXieQiID            = ckInfo.DuXieQiID;
                            ralInfo.CangKuLeiXingBianMa  = GetParentTypeByCkID(ralInfo.CangKuID); //根据仓库ID获取其祖先仓库编码,判断仓库类型
                            ralInfo.ChuLiZhuangTaiBianMa = (int)Utility.AnchorEnum.ERfid_ProcessingState.未处理;
                            ralInfo.ShiFouYouXiao        = true;                                  //add20200410 plq

                            //重复告警验证---若历史告警中存在未处理的重复告警,不要再次推,只更新数据
                            string errMsg   = "";               //异常报错信息
                            bool   isRepeat = new DealInnerCommDAL().VerifyIsRepeat(ralInfo, ref errMsg);
                            if (!isRepeat && errMsg.Equals("")) //没有重复告警且执行未报错
                            {
                                ralList.Add(ralInfo);           //add20200403 plq 加入待新增告警数据 List集合
                                ////插表
                                //bool res = new DealInnerCommDAL().InsertAlarmLog(ralInfo);
                                //if (res) //如果插表成功
                                //{
                                //    //获取拥有该仓库ID对应权限的人员ID列表
                                //    List<string> uidList = new DealInnerCommDAL().GetUidListByCkID(ralInfo.CangKuID);
                                //    //遍历向指定客户端发送告警消息
                                //    foreach (string uid in uidList)
                                //    {
                                //        TDataInfo tdataInfo = new TDataInfo();
                                //        tdataInfo.MessageType = "GiveAlarm";
                                //        tdataInfo.Content = ObjectToJson.GetObjectToString(ralInfo);
                                //        tdataInfo.Code = uid;//客户端编码---使用登录APP用户的UserID字段
                                //        TerminalComm.GetInstance().SendToDevice(uid, ObjectToJson.GetObjectTobytes(tdataInfo));
                                //        OnShowMessage(AnchorEnum.EMessageLevel.EML_INFO, "向客户端:UserID[" + uid + "]APP发送告警数据成功!");
                                //    }
                                //}
                                //else //如果插表失败
                                //{
                                //    LogUtility.Error("告警提示信息6:", "新增告警信息失败"); //记录日志
                                //}
                            }
                        }
                    }
                }
            }

            #endregion

            #region 实时告警新增数据插库,遍历人员表(对应客户端),对应人员仓库关系,发送新增告警弹窗消息集合 add20200403plq
            //int j = ralList.Count;
            //向Rfid_AlarmLog表中插入新增告警数据
            for (int j = 0; j < ralList.Count; j++)
            {
                ralList[j].BianMa         = ralList[0].BianMa + j;                                  //更新集合中实体的编码
                ralList[j].JiLuShiJian    = now;                                                    //add20200407 plq 批次新增告警数据时 统一 记录时间 字段值
                ralList[j].strJiLuShiJian = ralList[j].JiLuShiJian.ToString("yyyy-MM-dd HH:mm:ss"); //记录时间的格式化字符串
            }
            bool res = new DealInnerCommDAL().InsertAllAlarmLog(ralList);
            if (res) //插库成功
            {
                //获取用户(对应着客户端)List
                List <P_UserInfo> userList = new DealInnerCommDAL().GetAllUserList();
                //遍历用户,获取对应用户的待推送告警数据(只有名下有某仓库才推该仓库相关的告警数据),发送客户端消息
                foreach (var user in userList)
                {
                    int UserID = user.ID;//用户ID
                    //获取对应用户 权限下的固定资产仓库storageID集合
                    List <int> storageIDList             = new DealInnerCommDAL().GetStorageIDListByUser(UserID);
                    List <Rfid_AlarmLogInfo> ralPushList = new List <Rfid_AlarmLogInfo>(); //new 对应用户待推送告警弹窗消息的 数据List集合
                    foreach (var info in ralList)                                          //遍历新增告警数据List---》获取对应用户推送告警数据List
                    {
                        if (storageIDList.Contains(info.CangKuID))                         //如果用户名下有该仓库,则向其推送该告警数据
                        {
                            ralPushList.Add(info);
                        }
                    }
                    //int g = ralPushList.Count;
                    if (ralPushList.Count > 0)
                    {
                        //发送客户端消息
                        TDataInfo tdataInfo = new TDataInfo();
                        tdataInfo.MessageType = "GiveAlarm";
                        tdataInfo.Content     = ObjectToJson.GetObjectToString(ralPushList);
                        //tdataInfo.Content = ObjectToJson.GetObjectToString(GetRalPushCodeList(ralPushList));//edit20200407 plq 因为传实体集合数据过长,暂取数据de编码集合
                        //tdataInfo.Content = ObjectToJson.GetObjectToString(ralPushList.Count);//只传对应用户新推告警数据的长度
                        tdataInfo.Code = UserID.ToString();//客户端编码---使用登录APP用户的UserID字段
                        TerminalComm.GetInstance().SendToDevice(UserID.ToString(), ObjectToJson.GetObjectTobytes(tdataInfo));
                        OnShowMessage(AnchorEnum.EMessageLevel.EML_INFO, "向客户端:UserID[" + UserID + "]APP发送告警数据成功!");
                    }
                }
            }
            else
            {
                LogUtility.Error("告警提示信息:", "新增告警信息失败"); //记录日志
            }



            #endregion
        }