public static List <OnTimeEntity> GetReadDatas(int uId, List <string> stationList, string trans) { ReadDatas rDatas = new ReadDatas(); //储出返回的信息 List <OnTimeEntity> onTimeList = new List <OnTimeEntity>(); var options = new List <ChannelOption> { new ChannelOption(ChannelOptions.MaxReceiveMessageLength, int.MaxValue) }; var channel = new Channel(Conf.Config.DB_SERVER_IP, ChannelCredentials.Insecure, options); var client = new BatchService(new gRPCServices.gRPCServicesClient(channel)); rDatas = client.GetReadMsg(stationList, trans); //初始话站点信息 if (StationHelper.stationInfoList == null || StationHelper.stationInfoList.Count == 0) { StationHelper.getStationInfoList(); } for (int i = 0; i < rDatas.RData.Count; i++) { string id = rDatas.RData[i].StationId; //获取雨量精度 //double accuracy = StationHelper.stationInfoDic4[id]. double accuracy = 0.5; string state = "-"; if (rDatas.RData[i].Data != null && rDatas.RData[i].Data.Length > 0) { int rawData = int.Parse(rDatas.RData[i].Data); double totalRain = rawData * accuracy; state = totalRain.ToString(); } else { state = "获取失败"; } onTimeList.Add(new OnTimeEntity { id = id, stationId = StationHelper.stationInfoDic4[id].stationId, stationName = StationHelper.stationInfoDic4[id].stationName, state = state }); } channel.ShutdownAsync().Wait(); client.StopGrpcClient(); return(onTimeList); }
public static List <OnTimeEntity> GetTruList(int uId, List <string> stationList) { TruList tList = new TruList(); List <OnTimeEntity> onTimeList = new List <OnTimeEntity>(); var options = new List <ChannelOption> { new ChannelOption(ChannelOptions.MaxReceiveMessageLength, int.MaxValue) }; var channel = new Channel(Conf.Config.DB_SERVER_IP, ChannelCredentials.Insecure, options); var client = new BatchService(new gRPCServices.gRPCServicesClient(channel)); tList = client.GetTruMsg(stationList); if (StationHelper.stationInfoList == null || StationHelper.stationInfoList.Count == 0) { StationHelper.getStationInfoList(); } for (int i = 0; i < tList.TruData.Count; i++) { string id = tList.TruData[i].StationId; string state = "正在对时"; bool tru = false; if (tList.TruData[i].Tru == true) { tru = tList.TruData[i].Tru; } if (tru) { state = "√"; } else { state = "对时失败"; } onTimeList.Add(new OnTimeEntity { id = id, stationId = StationHelper.stationInfoDic4[id].stationId, stationName = StationHelper.stationInfoDic4[id].stationName, state = state }); } channel.ShutdownAsync().Wait(); client.StopGrpcClient(); return(onTimeList); }
/// <summary> /// 查询站点数据状态信息 /// </summary> /// <param name="subcenter"></param> /// <param name="time_from"></param> /// <param name="time_to"></param> /// <returns></returns> public static DataStatus ListDataStatus(int subcenter, DateTime time_from, DateTime time_to) { //异常数据信息 //工况信息 用于统计缺数 //List<voltage> voltageList = new List<voltage>(); DataStatus result = new DataStatus(); //1.组合查询参数 Dictionary <string, object> param = new Dictionary <string, object>(); Dictionary <string, string> paramInner = new Dictionary <string, string>(); paramInner["subcenter"] = subcenter.ToString(); paramInner["datatime"] = time_from.ToString(); paramInner["strttime"] = time_from.ToString(); paramInner["endtime"] = time_to.ToString(); string dataStsUrl = suffix + "/datasts/getDatasts"; string voltageUrl = suffix + "/voltage/getSharpVoltage"; //string dataStsUrl = "http://127.0.0.1:8088/datasts/getDatasts"; //string voltageUrl = "http://127.0.0.1:8088/voltage/getSharpVoltage"; string jsonStr = HttpHelper.SerializeDictionaryToJsonString(paramInner); param["datasts"] = jsonStr; param["voltage"] = jsonStr; //2.1查询数据状态信息 try { string resultJson = HttpHelper.Post(dataStsUrl, param); dataStsList = (List <DataStatus>)HttpHelper.JsonDeserialize <List <DataStatus> >(resultJson, new List <DataStatus>()); } catch (Exception e) { Debug.WriteLine("查询数据状态信息失败"); throw e; } //2.2 查询工况信息 try { string resultJson = HttpHelper.Post(voltageUrl, param); voltageList = (List <VoltageDbData>)HttpHelper.JsonDeserialize <List <VoltageDbData> >(resultJson, new List <VoltageDbData>()); } catch (Exception e) { Debug.WriteLine("查询数据状态信息失败"); throw e; } //3.获取站点信息 List <Station> stationInfoList = new List <Station>(); if (StationHelper.stationInfoList == null || StationHelper.stationInfoList.Count == 0) { StationHelper.getStationInfoList(); } for (int i = 0; i < StationHelper.stationInfoList.Count; i++) { if (StationHelper.stationInfoList[i].stationType != StationTypes.rain2Station) { stationInfoList.Add(StationHelper.stationInfoList[i]); } } //4.统计应收数据、警告数据、缺数 int hours = (time_to - time_from).Hours + 1; int deserverdNum = stationInfoList.Count * hours; int lackNum = deserverdNum - voltageList.Count; int errorNum = dataStsList.Count; int realNum = voltageList.Count - dataStsList.Count; result.deserverNum = deserverdNum; result.errorNum = errorNum; result.lackNum = lackNum; result.realNum = realNum; return(result); }
/// <summary> /// 显示数据信息饼状图具体信息 /// </summary> /// <param name="subcenter"></param> /// <param name="time_from"></param> /// <param name="time_to"></param> /// <returns></returns> public static List <DataStatus> StatDataStatus(int subcenter, DateTime time_from, DateTime time_to) { List <DataStatus> retList = new List <DataStatus>(); List <DataStatus> errorStatusList = new List <DataStatus>(); List <VoltageDbData> voltageStatusList = new List <VoltageDbData>(); List <DateTime> dataTimeList = new List <DateTime>(); //1.1获取所有站点信息 List <Station> stationInfoList = new List <Station>(); if (StationHelper.stationInfoList == null || StationHelper.stationInfoList.Count == 0) { StationHelper.getStationInfoList(); } //过滤 只统计接收的站点 for (int i = 0; i < StationHelper.stationInfoList.Count; i++) { if (StationHelper.stationInfoList[i].stationType != StationTypes.rain2Station) { stationInfoList.Add(StationHelper.stationInfoList[i]); } } //1.2 获取数据信息 if (dataStsList != null) { errorStatusList.AddRange(dataStsList); } if (voltageList != null) { voltageStatusList.AddRange(voltageList); } //2.1统计时间段 for (DateTime dataTime = time_from; dataTime <= time_to; dataTime = dataTime.AddHours(1)) { dataTimeList.Add(dataTime); } //2.2 //3.1 统计异常数据信息 STATE为0 if (errorStatusList != null) { for (int i = 0; i < errorStatusList.Count; i++) { errorStatusList[i].state = "0"; } retList.AddRange(errorStatusList); } //2.统计缺数信息 int total = dataTimeList.Count * stationInfoList.Count; int voltageCount = voltageStatusList.Count; string stationid = ""; List <voltage> tmpVoltageList = new List <voltage>(); List <DateTime> tmpDataTimeList = new List <DateTime>(); //3.1 循环,按站点分组,并取出 for (int i = 0; i < voltageStatusList.Count; i++) { tmpDataTimeList.Add(voltageStatusList[i].datatime); if ((voltageStatusList[i].stationid != stationid && stationid.Length > 0 && i >= 1) || i == voltageStatusList.Count - 1) { //取出该站点该段时间内的缺少的数据 for (int j = 0; j < dataTimeList.Count; j++) { if (!tmpDataTimeList.Contains(dataTimeList[j])) { DataStatus dataStatus = new DataStatus(); dataStatus.stationid = voltageStatusList[i - 1].stationid; dataStatus.stationName = StationHelper.stationInfoDic[voltageStatusList[i - 1].stationid].stationName; dataStatus.datatime = dataTimeList[j]; dataStatus.state = "-1"; retList.Add(dataStatus); } } //更新站点和时间信息 tmpDataTimeList.Clear(); tmpDataTimeList.Add(voltageStatusList[i].datatime); } stationid = voltageStatusList[i].stationid; } //3.统计正常数据条数 //TODO 暂时不统计正常数据 return(retList); }
/// <summary> /// 添加运维库站点信息 /// </summary> /// <returns></returns> public ActionResult maintainStation() { State s = new State(); try { int UID = int.Parse(Request.Params.Get("UID"));//用户UID //判定四位码或者八位码是否重复 if (StationHelper.stationInfoList == null || StationHelper.stationInfoList.Count == 0) { StationHelper.getStationInfoList(); } string stationid = Request.Params.Get("stationid");//8位站号 if (StationHelper.stationInfoDic.ContainsKey(stationid)) { s.code = 5; s.message = "数据库中已存在该用户ID!" + stationid; var ret1 = JsonConvert.SerializeObject(s); return(Json(ret1, JsonRequestBehavior.AllowGet)); } string id = Request.Params.Get("id");//4位站号 if (StationHelper.stationInfoDic4.ContainsKey(id)) { s.code = 5; s.message = "数据库中已存在该站码!" + id; var ret2 = JsonConvert.SerializeObject(s); return(Json(ret2, JsonRequestBehavior.AllowGet)); } string stationName = Server.UrlDecode(Request.Params.Get("stationname")); int subcenterId = int.Parse(Request.Params.Get("newSubcenter"));//所属分中心 int stationType = 0; stationType = Int32.Parse(Request.Params.Get("stationType")); //站类 decimal?WMax = null; //水位上限 string WMaxstr = Request.Params.Get("WMax"); if (WMaxstr != "") { WMax = decimal.Parse(WMaxstr); } decimal?WMin = null;//水位下限 string WMinstr = Request.Params.Get("WMin"); if (WMinstr != "") { WMin = decimal.Parse(WMinstr); } decimal?RMax = null;//雨量跳变阈值 string RMaxstr = Request.Params.Get("RMax"); if (RMaxstr != "") { RMax = decimal.Parse(RMaxstr); } decimal?Longitude = null;//经度 string Longitudestr = Request.Params.Get("Longitude"); if (Longitudestr != "") { Longitude = decimal.Parse(Longitudestr); } decimal?Latitude = null;//纬度 string Latitudestr = Request.Params.Get("Latitude"); if (Latitudestr != "") { Latitude = decimal.Parse(Latitudestr); } //"&Watershed=" + $('#watershed').val() + // "&Project=" + $('#project').val() + // "&Company=" + $('#company').val() + // "&Pass="******"&Content=" + $('#content').val() + string Watershed = Request.Params.Get("Watershed"); string Company = Request.Params.Get("Company"); string Project = Request.Params.Get("Project"); string Pass = Request.Params.Get("Pass"); string Content = Request.Params.Get("Content"); s.code = StationService.AddMaintainStation(id, stationid, stationName, stationType, subcenterId, RMax, WMax, WMin, Longitude, Latitude, Watershed, Company, Project, Pass, Content); if (s.code != 0) { s.message = "数据库添加失败!"; } else { s.message = "添加成功!"; } } catch (FormatException f) { s.code = 1; s.message = "参数格式错误!"; } catch (ArgumentNullException a) { s.code = 2; s.message = "缺少参数!"; } catch (InvalidOperationException i) { s.code = 3; s.message = "数据库中已存在该条数据!"; } var ret = JsonConvert.SerializeObject(s); return(Json(ret, JsonRequestBehavior.AllowGet)); }
/// <summary> /// 根据CURRENTData /// </summary> /// <param name="subcenter"></param> /// <returns></returns> public static List <StationStatusInfo> ListStationStatus(int subcenter) { List <StationStatusInfo> result = new List <StationStatusInfo>(); List <CurrentData> resultList = new List <CurrentData>(); List <CurrentData> currentdataList = new List <CurrentData>(); Dictionary <string, object> param = new Dictionary <string, object>(); Dictionary <string, string> paramInner = new Dictionary <string, string>(); paramInner["StationID"] = ""; string url = "http://127.0.0.1:8088/currentdata/getCurrentdata"; string jsonStr = HttpHelper.SerializeDictionaryToJsonString(paramInner); param["currentdata"] = jsonStr; try { string resultJson = HttpHelper.Post(url, param); currentdataList = (List <CurrentData>)HttpHelper.JsonDeserialize <List <CurrentData> >(resultJson, new List <CurrentData>()); } catch (Exception e) { Debug.WriteLine("查询实时数据失败"); throw e; } //1.获取当前所有的站点,缓存有则直接使用,没有则 if (StationHelper.stationInfoList == null || StationHelper.stationInfoList.Count == 0) { StationHelper.getStationInfoList(); } //2.将已有最新数据的站点信息获取,并放入DIC Dictionary <string, CurrentData> currentDataDic = new Dictionary <string, CurrentData>(); for (int i = 0; i < currentdataList.Count; i++) { if (int.Parse(currentdataList[i].CType) <= 10) { if (!currentDataDic.ContainsKey(currentdataList[i].StationID)) { currentDataDic[currentdataList[i].StationID] = currentdataList[i]; } } } //3.获取在线信息列表 //TODO //获取在线列表信息,默认全部是在线的,1代表在线 0代表离线 //4.根据站点信息 和 站点已有数据信息获取站点状态信息 //0代表数据警告 1代表数据正常 -1代表数据异常 //异常原因 0代表通讯故障 1代表电池欠压 2代表设备故障 for (int i = 0; i < StationHelper.stationInfoList.Count; i++) { if (StationHelper.stationInfoList[i].stationType == StationTypes.rain2Station) { continue; } StationStatusInfo stationStatusInfo = new StationStatusInfo(); //5.1 如果有数据 if (currentDataDic.ContainsKey(StationHelper.stationInfoList[i].stationId)) { DateTime dataTime = currentDataDic[StationHelper.stationInfoList[i].stationId].DataTime; int hours = (DateTime.Now - dataTime).Hours; stationStatusInfo.stationID = StationHelper.stationInfoList[i].stationId; stationStatusInfo.dataTime = currentDataDic[StationHelper.stationInfoList[i].stationId].DataTime; stationStatusInfo.stationName = StationHelper.stationInfoList[i].stationName; stationStatusInfo.voltage = currentDataDic[StationHelper.stationInfoList[i].stationId].Voltage; if (hours >= 2) { stationStatusInfo.onlineState = "1"; if (stationStatusInfo.onlineState == "0") { stationStatusInfo.errorReason = "0"; } else if (stationStatusInfo.voltage < (decimal)11.5) { stationStatusInfo.errorReason = "1"; } else { stationStatusInfo.errorReason = "2"; } stationStatusInfo.state = "-1"; } else if (hours >= 1) { stationStatusInfo.onlineState = "1"; if (stationStatusInfo.onlineState == "0") { stationStatusInfo.errorReason = "0"; } else if (stationStatusInfo.voltage < (decimal)11.5) { stationStatusInfo.errorReason = "1"; } else { stationStatusInfo.errorReason = "2"; } stationStatusInfo.state = "0"; } else { stationStatusInfo.onlineState = "1"; stationStatusInfo.errorReason = ""; stationStatusInfo.state = "1"; } } //如果无数据 else { stationStatusInfo.stationID = StationHelper.stationInfoList[i].stationId; stationStatusInfo.stationName = StationHelper.stationInfoList[i].stationName; stationStatusInfo.dataTime = null; stationStatusInfo.voltage = null; stationStatusInfo.onlineState = "1"; stationStatusInfo.errorReason = "2"; stationStatusInfo.state = "-1"; } result.Add(stationStatusInfo); } return(result); }