public static string GetHistory(string obtid, DateTime start, DateTime current, TimeMode timeMode, OBTField[] dataField, OBTField keyField) { OBTCODE obt = AWSCode.OBTCodeList[obtid]; StringBuilder sb = new StringBuilder(); string tableName = getTableName(start, obt.AREA, timeMode, keyField); string selectField; for (int i = 0; i < dataField.Length; i++) { if (i > 0) { sb.Append(","); } sb.Append(dataField[i].ToString()); } selectField = sb.ToString(); sb.Clear(); sb.AppendFormat("select {0} from {1} where obtid=:obtId AND DDATETIME >= :dstart AND DDATETIME <= :dend and {2} is not null ORDER BY DDATETIME", selectField, tableName, keyField.ToString()); DataTable data = OracleHelp.ExecuteDataTable(sb.ToString(), T_LOCALOBTMIND.Tunnel.connString, new OracleParameter(":obtId", obtid), new OracleParameter(":dstart", start), new OracleParameter(":dend", current)); sb.Clear(); sb.Append("["); int itemIndex; int rows = 0; foreach (DataRow row in data.Rows) { if (rows++ > 0) { sb.Append(","); } itemIndex = 0; sb.Append("["); foreach (var item in row.ItemArray) { if (itemIndex++ > 0) { sb.Append(","); } if (item is DateTime) { sb.Append("\""); sb.Append(Utility.DateTimeToJson((DateTime)item)); sb.Append("\""); } else { sb.Append(item); } } sb.Append("]"); } sb.Append("]"); return(sb.ToString()); }
/// <summary> /// 历史差变查询 /// </summary> public static string GetHistory(string obtid, DateTime current, OBTField fieldName) { int offsetHours; string field = getFieldName(fieldName, out offsetHours); if (offsetHours == 0) { return(null); } DateTime start = current.AddHours(offsetHours); OBTCODE obt = AWSCode.OBTCodeList[obtid]; string tableName = AWSItems.getTableName(start, obt.AREA, TimeMode.MINUTE); StringBuilder sb = new StringBuilder(); sb.AppendFormat("select DDATETIME,{0} from {1} where obtid=:obtId AND DDATETIME >= :dstart AND DDATETIME<=:dend and {2} is not null ORDER BY DDATETIME", field, tableName, field); DataTable data = OracleHelp.ExecuteDataTable(sb.ToString(), T_LOCALOBTMIND.Tunnel.connString, new OracleParameter(":obtId", obtid), new OracleParameter(":dstart", start), new OracleParameter(":dend", current)); List <AWSOffsetRow> offsetData = new List <AWSOffsetRow>(); foreach (DataRow row in data.Rows) { offsetData.Add(new AWSOffsetRow() { DDATETIME = (DateTime)row[0], VALUE = (decimal)row[1] }); } sb.Clear(); sb.Append("["); if (offsetData.Count > 0) { int rows = 0; decimal firstValue = offsetData[0].VALUE; for (int i = 0; i < offsetData.Count; i++) { if (rows++ > 0) { sb.Append(","); } sb.Append("["); sb.Append("\""); sb.Append(Utility.DateTimeToJson(offsetData[i].DDATETIME)); sb.Append("\","); sb.Append(offsetData[i].VALUE - firstValue); sb.Append("]"); } } sb.Append("]"); return(sb.ToString()); }
/// <summary> /// 获取用户时间的自动站全局排序 /// </summary> public static List <AWSFieldValue> GetFullViewSort(AWDType type, DateTime?date, OBTArea area, TimeMode timeMode, AWSAdmin awsAdmin, string[] citys, OBTField dataField, bool orderByDescending, int maxCount, int accuracy, bool orderbyDesc) { List <AWSFieldValue> result = new List <AWSFieldValue>(); List <AWSFieldValue> awsFromDb = getAwsFieldValueFromDb(type, date, area, timeMode, dataField, accuracy, false, orderbyDesc); var dataOrderBy = orderByDescending ? awsFromDb.OrderByDescending(t => t.V0).ToArray() : awsFromDb.OrderBy(t => t.V0).ToArray(); for (int i = 0; i < dataOrderBy.Length; i++) { var item = dataOrderBy[i]; if (obtCodeList.ContainsKey(item.ID)) { OBTCODE aws = obtCodeList[item.ID]; if (citys.Length == 0 || citys.Contains(aws.AREAID)) { if (awsAdmin == AWSAdmin.city) { if (AWSCode.ChinaAWS.ContainsKey(item.ID)) { continue; } } else if (awsAdmin == AWSAdmin.state) { if (!AWSCode.ChinaAWS.ContainsKey(item.ID)) { continue; } } result.Add(item); if (--maxCount == 0) { break; } } } } return(result); }
/// <summary> /// 获取用户地图显示需要的数据 /// </summary> /// <returns></returns> public static ClientReport GetAWSDataInfomation(AWDType type, DateTime?date, OBTArea area, TimeMode timeMode, AWSAdmin awsAdmin, string[] citys, OBTField dataField, int accuracy, double minLng, double minLat, double maxLng, double maxLat, int canvasWidth, int canvasHeight, int minSpace, bool isPlaying, bool orderbyDesc) { List <AWSFieldValue> awsFromDb = getAwsFieldValueFromDb(type, date, area, timeMode, dataField, accuracy, isPlaying, orderbyDesc); List <AWSFieldValue> awsTmpResult = new List <AWSFieldValue>(); List <AWSFieldValue> statsTarget = new List <AWSFieldValue>(); Mercator myMercator = new Mercator(minLat, maxLat, canvasHeight, minLng, maxLng, canvasWidth); for (int i = 0; i < awsFromDb.Count; i++) { AWSFieldValue item = awsFromDb[i]; if (obtCodeList.ContainsKey(item.ID)) { OBTCODE aws = obtCodeList[item.ID]; if (awsAdmin == AWSAdmin.city) { if (AWSCode.ChinaAWS.ContainsKey(item.ID)) { continue; } } else if (awsAdmin == AWSAdmin.state) { if (!AWSCode.ChinaAWS.ContainsKey(item.ID)) { continue; } } statsTarget.Add(item); if (aws.LONGITUDE > minLng && aws.LATITUDE > minLat && aws.LONGITUDE < maxLng && aws.LATITUDE < maxLat) { //计算CANVAS坐标 item.x = myMercator.Longitude2screentX(aws.LONGITUDE); item.y = myMercator.Latitude2screentY(aws.LATITUDE); if (checkSpace(item, awsTmpResult, minSpace)) { if (type == AWDType.VIS && aws.AREAID == "45005" && item.V0 < 10) { item.V0 *= 1000; item.V0 = double.Parse(item.V0.ToString("f1")); } awsTmpResult.Add(item); } } } } ClientReport result = new ClientReport() { aws = awsTmpResult }; result.stats = Stats.getAwsStatis(type, statsTarget, citys); if (date == null) { if (awsTmpResult.Count > 0) { result.time = awsTmpResult[0].TM.Value; } } else { result.time = date.Value; } return(result); }