package com.smtaiserver.smtaiserver.attach; import com.smtaiserver.smtaiserver.database.SMTDatabase; import com.smtaiserver.smtaiserver.database.SMTDatabase.DBRecord; import com.smtaiserver.smtaiserver.database.SMTDatabase.DBRecords; import com.smtaiserver.smtaiserver.javaai.ast.ASTDBMap; import com.smtservlet.util.Json; import com.smtservlet.util.SMTJsonWriter; import com.smtservlet.util.SMTStatic; import java.util.Date; import java.util.HashMap; import java.util.Map; import java.util.Map.Entry; import org.dom4j.Document; import org.dom4j.Element; public class SMTAIAttachMetricDef { private String _id; private String _title; private String _group; private SMTAttachMetricSqlXml _sqlxmlName; private SMTAttachMetricSqlXml _sqlxmlValue; public SMTAIAttachMetricDef(DBRecord rec) throws Exception { _id = rec.getString("metric_id"); _title = rec.getString("metric_title"); _group = rec.getString("metric_group"); Document doc = SMTStatic.convStrToXmlDoc("" + rec.getString("metric_config") + ""); Element xmlNameSql = (Element) doc.selectSingleNode("ROOT/NAME_SQL"); _sqlxmlName = new SMTAttachMetricSqlXml(xmlNameSql); Element xmValueSql = (Element) doc.selectSingleNode("ROOT/VALUE_SQL"); _sqlxmlValue = new SMTAttachMetricSqlXml(xmValueSql); } public String getId() { return _id; } public String getTitle() { return _title; } public String getGroup() { return _group; } public void queryNameToJson(String name, SMTJsonWriter jsonWr) throws Exception { try(ASTDBMap dbMap = new ASTDBMap()) { SMTDatabase db = dbMap.getDatabase(_sqlxmlName.getDSId()); String sql = _sqlxmlName.createSQL(null); // DBRecords recs = db.querySQL("SELECT * FROM (" + sql + ") T WHERE title ILIKE ? LIMIT 5", new Object[] {"%" + name + "%"}); DBRecords recs = db.querySQL("SELECT * FROM (" + sql + ") T WHERE title ILIKE ? ", new Object[] {"%" + name + "%"}); for(DBRecord rec : recs.getRecords()) { jsonWr.beginMap(null); for(Entry entry : rec.getFieldMap().entrySet()) { jsonWr.addKeyValue(entry.getKey(), rec.getString(entry.getValue())); } jsonWr.endMap(); } } } public void queryValueToJson(Date startTime, Date endTime, Json jsonQuotaKey, SMTJsonWriter jsonWr,Integer limit) throws Exception { try(ASTDBMap dbMap = new ASTDBMap()) { Map mapArgs = new HashMap<>(); mapArgs.put("start_time", SMTStatic.toString(startTime)); mapArgs.put("end_time", SMTStatic.toString(endTime)); mapArgs.put("limit", SMTStatic.toString(limit)); for(Entry entry : jsonQuotaKey.asJsonMap().entrySet()) { mapArgs.put(entry.getKey(), entry.getValue().asString()); } SMTDatabase db = dbMap.getDatabase(_sqlxmlName.getDSId()); String sql = _sqlxmlValue.createSQL(mapArgs); DBRecords recs = db.querySQL(sql, null); jsonWr.beginArray("columns"); { jsonWr.addKeyValue(null, "时间"); jsonWr.addKeyValue(null, _title); } jsonWr.endArray(); jsonWr.beginArray("records"); for(DBRecord rec : recs.getRecords()) { jsonWr.beginArray(null); { jsonWr.addKeyValue(null, rec.getString("time")); jsonWr.addKeyValue(null, rec.getString("value")); } jsonWr.endArray(); } jsonWr.endArray(); } } }