/// <summary> /// 设置区域报警 /// </summary> /// <param name="ParamType"></param> /// <param name="CarValues"></param> /// <param name="CarPw"></param> /// <param name="CommMode"></param> /// <param name="regionAlarmList"></param> /// <returns></returns> public Response icar_SetRegionAlarm(CmdParam.ParamType ParamType, string CarValues, string CarPw, CmdParam.CommMode CommMode, RegionAlarmList regionAlarmList) { Response response = new Response(); base.logMsg.FunctionName = "icar_SetRegionAlarm"; base.logMsg.Msg = "发送:类型-" + ParamType.ToString() + ",车辆-" + CarValues; base.log.WriteLog(base.logMsg); if (!base.CheckCar(ParamType, CarValues, CarPw)) { response.ErrorMsg = base.alarmMsg.AlarmText = base.ErrorMsg; base.log.WriteAlarm(base.alarmMsg); return response; } if (base.isStartCommon()) { Car car = new Car(); foreach (Bussiness.CarInfo info in base.carInfoList) { try { RegionAlarm alarm; int num = -1; for (int i = 0; i < regionAlarmList.Count; i++) { alarm = (RegionAlarm) regionAlarmList[i]; /////////////////////////////////////////// //进行反纠偏处理 string LatLngString = alarm.AlarmRegionDot; string[] latlng = LatLngString.Trim(new char[]{'\\'}).Split('\\'); LatLngString = latlng[0].ToString() + "\\"; for (int j = 0; j < (latlng.Length-1) / 2; j++) { double lng = Convert.ToDouble(latlng[j * 2 + 1]); double lat = Convert.ToDouble(latlng[j * 2 + 2]); GoogleOffset.getMars(ref lng, ref lat); LatLngString = LatLngString + lng.ToString() + "\\" + lat.ToString() + "\\"; } if ((latlng.Length/2)*2 == latlng.Length) { LatLngString = LatLngString + latlng[latlng.Length - 1]; } alarm.AlarmRegionDot = LatLngString.Trim(new char[]{'\\'}); /////////////////////////////////////////// DataTable table = car.GetNewRegionId(info.CarId, alarm.PathName, num); if ((table == null) || (table.Rows.Count == 0)) { base.errMsg.ErrorText = string.Format("\"{0}\"获取报警区域ID失败!", info.CarNum); response.ErrorMsg = base.errMsg.ErrorText; base.log.WriteError(base.errMsg); return response; } int num3 = int.Parse(table.Rows[0][0].ToString()); alarm.newRegionId = num3; num = num3; } object pvRegions = null; if (regionAlarmList.protocolType == CarProtocolType.非交通厅) { pvRegions = regionAlarmList.pvRegions; } int newOrderId = SendBase.CarCmdSend.GetNewOrderId(); base.SaveCmdParm(newOrderId.ToString() + "|" + info.CarId.ToString() + ";"); string orderIDParam = response.OrderIDParam; response.OrderIDParam = orderIDParam + newOrderId.ToString() + "|" + info.CarId.ToString() + ";"; if ((info.ProtocolName != SendBase.m_ProtocolName) && (regionAlarmList.protocolType == CarProtocolType.交通厅)) { base.userInfo.DownCommd.AddCarNewLogData(newOrderId, info.CarNum, "发送", regionAlarmList.OrderCode.ToString(), "失败", "", "终端不支持该协议!"); response.ResultCode = 0L; return response; } base.userInfo.DownCommd.AddCarNewLogData(newOrderId, info.CarNum, "发送", regionAlarmList.OrderCode.ToString(), "等待", "", ""); car.InsertRegionIntoGisCar(info.CarId, base.WorkId, newOrderId, regionAlarmList.AlarmRegionDot, regionAlarmList.RegionFeature.ToString()); RegionAlarmList list = new RegionAlarmList(); RegionAlarmList list2 = new RegionAlarmList(); RegionAlarmList list3 = new RegionAlarmList(); for (int j = 0; j < regionAlarmList.Count; j++) { alarm = (RegionAlarm) regionAlarmList[j]; switch (alarm.GetSharpe()) { case 1: list.Add(alarm); break; case 2: list2.Add(alarm); break; case 3: list3.Add(alarm); break; } car.UpdateRegionParam(base.WorkId, newOrderId, int.Parse(info.CarId), alarm.RegionID, alarm.param, alarm.toEndTime, alarm.toBackTime, alarm.RegionType & 15, alarm.BeginTime, alarm.EndTime, regionAlarmList.RegionFeature, alarm.AlarmCondition.ToString(), alarm.PlanUpTime, alarm.PlanDownTime, alarm.newRegionId, alarm.AlarmFlag, alarm.MaxSpeed, alarm.HodeTime); } if (regionAlarmList.RegionFeature == 1) { if ((info.ProtocolName == SendBase.m_ProtocolName) && (regionAlarmList.protocolType == CarProtocolType.交通厅)) { if (list.Count > 0) { string content = ""; list.OrderCode = regionAlarmList.OrderCode; string str2 = list.ToXmlString(base.CalOrderId(base.WorkId, newOrderId), info.SimNum, SendBase.m_ProtocolName, (int) CommMode, "SetRegionAlarm", ref content); if (!string.IsNullOrEmpty(content)) { response.ErrorMsg = content + "经纬度数据有问题"; response.ResultCode = -1L; return response; } response.ResultCode = SendBase.CarCmdSend.icar_SendCmdXML(base.WorkId, newOrderId, info.SimNum, SendBase.m_ProtocolName, (int) list.OrderCode, (int) CommMode, str2); } if (list2.Count > 0) { string str3 = ""; list2.OrderCode = regionAlarmList.OrderCode; string str4 = list2.ToXmlString(base.CalOrderId(base.WorkId, newOrderId), info.SimNum, SendBase.m_ProtocolName, (int) CommMode, "SetRegionAlarm", ref str3); if (!string.IsNullOrEmpty(str3)) { response.ErrorMsg = str3 + "经纬度数据有问题"; response.ResultCode = -1L; return response; } response.ResultCode = SendBase.CarCmdSend.icar_SendCmdXML(base.WorkId, newOrderId, info.SimNum, SendBase.m_ProtocolName, (int) list2.OrderCode, (int) CommMode, str4); } if (list3.Count > 0) { string str5 = ""; list3.OrderCode = regionAlarmList.OrderCode; string str6 = list3.ToXmlString(base.CalOrderId(base.WorkId, newOrderId), info.SimNum, SendBase.m_ProtocolName, (int) CommMode, "SetRegionAlarm", ref str5); if (!string.IsNullOrEmpty(str5)) { response.ErrorMsg = str5 + "经纬度数据有问题"; response.ResultCode = -1L; return response; } response.ResultCode = SendBase.CarCmdSend.icar_SendCmdXML(base.WorkId, newOrderId, info.SimNum, SendBase.m_ProtocolName, (int) list3.OrderCode, (int) CommMode, str6); } } else { response.ResultCode = SendBase.CarCmdSend.icar_SimpleCmd(base.WorkId, newOrderId, info.SimNum, regionAlarmList.CmdCode, ref pvRegions); } } else { response.ResultCode = SendBase.CarCmdSend.icar_SetMultiRegionAlarm(base.WorkId, newOrderId, info.SimNum, ref pvRegions); } if (response.ResultCode != 0L) { base.alarmMsg.FunctionName = "icar_SetRegionAlarm"; base.alarmMsg.AlarmText = string.Concat(new object[] { "workid-", base.WorkId, ",simNum-", info.SimNum, ",OrderCode-", regionAlarmList.OrderCode }); base.alarmMsg.Code = response.ResultCode.ToString(); base.log.WriteAlarm(base.alarmMsg); } response.ResultCode = 0L; continue; } catch (Exception exception) { base.errMsg.ErrorText = "下发消息指令时发生错误!"; response.ErrorMsg = base.ErrorMsg = base.errMsg.ErrorText; base.log.WriteError(base.errMsg, exception); } } return response; } response.ErrorMsg = base.ErrorMsg; return response; }
private object method_8(string string_1, RegionAlarmList regionAlarmList_0, Car car_0) { int index = 1; string[] strArray = null; RegionAlarm alarm = null; DataTable table = null; string str = "0"; int key = -1; object[] objArray = new object[(regionAlarmList_0.Count * 4) + 1]; objArray[0] = regionAlarmList_0.Count.ToString(); Hashtable hashtable = new Hashtable(0x40); for (int i = 0; i < regionAlarmList_0.Count; i++) { alarm = (RegionAlarm) regionAlarmList_0[i]; try { int num4 = 0; goto Label_00A7; Label_0065: num4++; if ((num4 < 5) && hashtable.ContainsKey(key)) { goto Label_00A7; } goto Label_00C4; Label_0082: str = table.Rows[0][0].ToString(); key = Convert.ToInt32(str); goto Label_0065; Label_00A7: table = car_0.GetNewRegionId(string_1, alarm.PathName, key); if (base.IsNullDataTable(table)) { goto Label_0065; } goto Label_0082; Label_00C4: hashtable.Add(key, key); } catch { } alarm.newRegionId = (alarm.newRegionId == 0) ? 0 : int.Parse(str); strArray = alarm.AlarmRegionDot.Split(new char[] { '\\' }); if (strArray.Length == 4) { objArray[index + 1] = "1"; objArray[index + 2] = strArray[1] + "," + strArray[2] + "," + strArray[3]; objArray[index + 3] = strArray[0]; } else if (strArray.Length == 5) { objArray[index + 1] = "2"; objArray[index + 2] = strArray[1] + "," + strArray[2] + "," + strArray[3] + "," + strArray[4]; objArray[index + 3] = strArray[0]; } else if (strArray.Length > 5) { string str2 = string.Empty; for (int j = 1; j <= (strArray.Length - 2); j += 2) { string str3 = str2; str2 = str3 + strArray[j] + "," + strArray[j + 1] + ","; } objArray[index + 1] = "3"; objArray[index + 2] = str2.Substring(0, str2.Length - 1); objArray[index + 3] = strArray[0]; } if (alarm.newRegionId == 0) { objArray[index] = "0"; } else { objArray[index] = str; } index += 4; object alarmRegionDot = regionAlarmList_0.AlarmRegionDot; regionAlarmList_0.AlarmRegionDot = string.Concat(new object[] { alarmRegionDot, alarm.newRegionId, @"\", alarm.AlarmRegionDot, "*" }); } return objArray; }