|
@@ -800,31 +800,39 @@ public class ZoneDataWarnHandler {
|
|
|
|
|
|
|
|
public static TRecordRes<DateKeyValue> getSampleDataFromDB(String fieldUnit, String frequencyUnit, String itemKey, String objId, long beginTm, long endTm, String metricId, String doDb, String doField, String doTime){
|
|
public static TRecordRes<DateKeyValue> getSampleDataFromDB(String fieldUnit, String frequencyUnit, String itemKey, String objId, long beginTm, long endTm, String metricId, String doDb, String doField, String doTime){
|
|
|
TRecordRes<DateKeyValue> oRes = new TRecordRes<>(ResponseCode.RESULT_BAD.toInt());
|
|
TRecordRes<DateKeyValue> oRes = new TRecordRes<>(ResponseCode.RESULT_BAD.toInt());
|
|
|
- String[] storeDbAndTable = doDb.split("@");
|
|
|
|
|
- String[] storeFieldAndBackField = doField.split("@");
|
|
|
|
|
|
|
+ String desTable = doDb.split("@")[1];
|
|
|
|
|
+ String backField = doField.split("@")[1];
|
|
|
String doTimeFunction = doTime.replaceAll("\\(.*\\)", "");
|
|
String doTimeFunction = doTime.replaceAll("\\(.*\\)", "");
|
|
|
String doTimeField = doTime.replaceAll("^.*\\(|\\)", "");
|
|
String doTimeField = doTime.replaceAll("^.*\\(|\\)", "");
|
|
|
-
|
|
|
|
|
- String orderBy = String.format(" %s asc", doTimeField);
|
|
|
|
|
|
|
+ StringBuilder filterExtend = new StringBuilder("");
|
|
|
String queryField = String.format("zone_id,'%s' as key,%s as date"
|
|
String queryField = String.format("zone_id,'%s' as key,%s as date"
|
|
|
- , storeFieldAndBackField[1]
|
|
|
|
|
|
|
+ , backField
|
|
|
, doTimeField);
|
|
, doTimeField);
|
|
|
if ("%".equals(fieldUnit)){
|
|
if ("%".equals(fieldUnit)){
|
|
|
- queryField += String.format(",COALESCE(%s, 0)*100 as value", storeFieldAndBackField[0]);
|
|
|
|
|
|
|
+ queryField += String.format(",COALESCE(%s, 0)*100 as value", backField);
|
|
|
}else
|
|
}else
|
|
|
- queryField += String.format(",COALESCE(%s, 0) as value", storeFieldAndBackField[0]);
|
|
|
|
|
|
|
+ queryField += String.format(",COALESCE(%s, 0) as value", backField);
|
|
|
|
|
|
|
|
- StringBuilder filterExtend = new StringBuilder("");
|
|
|
|
|
switch (itemKey){
|
|
switch (itemKey){
|
|
|
case WarnItemType.ZONE_HWO:{//小时水量,存储的是累计流量:(n+1)点-(n)点=(n)点水量,故分区水量要将endTm += TimeTool.MS_ONE_HOUR;然后再查询
|
|
case WarnItemType.ZONE_HWO:{//小时水量,存储的是累计流量:(n+1)点-(n)点=(n)点水量,故分区水量要将endTm += TimeTool.MS_ONE_HOUR;然后再查询
|
|
|
endTm = TimeTool.getNextRoundHourUTCTm(endTm);
|
|
endTm = TimeTool.getNextRoundHourUTCTm(endTm);
|
|
|
filterExtend.append(String.format(" AND EXTRACT(MINUTE FROM %s) = 0 AND EXTRACT(SECOND FROM %s) = 0 ", doTimeField, doTimeField));
|
|
filterExtend.append(String.format(" AND EXTRACT(MINUTE FROM %s) = 0 AND EXTRACT(SECOND FROM %s) = 0 ", doTimeField, doTimeField));
|
|
|
}
|
|
}
|
|
|
break;
|
|
break;
|
|
|
|
|
+ case WarnItemType.LMNF:{
|
|
|
|
|
+ doTimeField = String.format("mnf.%s", doTimeField);
|
|
|
|
|
+ queryField = String.format("mnf.zone_id,'%s' as key,(mnf.%s - COALESCE(lmnf.%s, 0)) AS value,%s as date"
|
|
|
|
|
+ , backField
|
|
|
|
|
+ , backField
|
|
|
|
|
+ , backField
|
|
|
|
|
+ , doTimeField);
|
|
|
|
|
+ }
|
|
|
|
|
+ break;
|
|
|
default:
|
|
default:
|
|
|
break;
|
|
break;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ String orderBy = String.format(" %s asc", doTimeField);
|
|
|
switch (doTimeFunction){
|
|
switch (doTimeFunction){
|
|
|
case "timestamp":{
|
|
case "timestamp":{
|
|
|
filterExtend.append(String.format(" AND %s >= to_timestamp(%d) AND %s <= to_timestamp(%d)"
|
|
filterExtend.append(String.format(" AND %s >= to_timestamp(%d) AND %s <= to_timestamp(%d)"
|
|
@@ -846,12 +854,26 @@ public class ZoneDataWarnHandler {
|
|
|
break;
|
|
break;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- List<Map<String, Object>> arrDbs = getMixDataDBService().batchQueryL2L3Data(storeDbAndTable[1]
|
|
|
|
|
|
|
+ List<Map<String, Object>> arrDbs = null;
|
|
|
|
|
+ switch (itemKey){
|
|
|
|
|
+ case WarnItemType.LMNF:{
|
|
|
|
|
+ arrDbs = getMixDataDBService().batchQueryLMNFData(desTable
|
|
|
, queryField
|
|
, queryField
|
|
|
- , new HashMap<String, Object>(){{
|
|
|
|
|
- put("zone_id", objId);
|
|
|
|
|
- put("metric_id", metricId);}}
|
|
|
|
|
- , null, orderBy, filterExtend.toString());
|
|
|
|
|
|
|
+ , objId
|
|
|
|
|
+ , orderBy
|
|
|
|
|
+ , filterExtend.toString());
|
|
|
|
|
+ }
|
|
|
|
|
+ break;
|
|
|
|
|
+ default:{
|
|
|
|
|
+ arrDbs = getMixDataDBService().batchQueryL2L3Data(desTable
|
|
|
|
|
+ , queryField
|
|
|
|
|
+ , new HashMap<String, Object>(){{
|
|
|
|
|
+ put("zone_id", objId);
|
|
|
|
|
+ put("metric_id", metricId);}}
|
|
|
|
|
+ , null, orderBy, filterExtend.toString());
|
|
|
|
|
+ }
|
|
|
|
|
+ break;
|
|
|
|
|
+ }
|
|
|
if (arrDbs == null) {
|
|
if (arrDbs == null) {
|
|
|
oRes.setCode(ResponseCode.BUSINESS_DB_ERROR.toInt());
|
|
oRes.setCode(ResponseCode.BUSINESS_DB_ERROR.toInt());
|
|
|
return oRes;
|
|
return oRes;
|
|
@@ -873,7 +895,7 @@ public class ZoneDataWarnHandler {
|
|
|
double thisValue = CastUtil.castDouble(arrDbs.get(i).get("value"), 0.0);
|
|
double thisValue = CastUtil.castDouble(arrDbs.get(i).get("value"), 0.0);
|
|
|
double nextValue = CastUtil.castDouble(arrDbs.get(i+1).get("value"), 0.0);
|
|
double nextValue = CastUtil.castDouble(arrDbs.get(i+1).get("value"), 0.0);
|
|
|
if (thisTm == (nextTm-TimeTool.MS_ONE_HOUR)){
|
|
if (thisTm == (nextTm-TimeTool.MS_ONE_HOUR)){
|
|
|
- arrRecordRes.add(new DateKeyValue(storeFieldAndBackField[1], CommToolHandler.toShortStrData(nextValue-thisValue)
|
|
|
|
|
|
|
+ arrRecordRes.add(new DateKeyValue(backField, CommToolHandler.toShortStrData(nextValue-thisValue)
|
|
|
, TimeTool.convertUTC2DateStr(thisTm, TimeTool.TIMESTAMP_FORMAT)));
|
|
, TimeTool.convertUTC2DateStr(thisTm, TimeTool.TIMESTAMP_FORMAT)));
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|