/// <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); } }
/// <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); } }
/// <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); } }
/// <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); } } }
/// <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)); }
/// <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(); } }
/// <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 }