|
@ -10,6 +10,7 @@ import org.apache.camel.Processor;
|
|
|
|
|
|
import java.sql.Timestamp;
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.Map;
|
|
|
|
|
|
/**
|
|
|
* ehr log处理
|
|
@ -22,38 +23,57 @@ public class EHRLogProcesser implements Processor {
|
|
|
public void process(Exchange exchange) throws Exception {
|
|
|
exchange.getOut().setBody("");
|
|
|
ArrayList arrayList = exchange.getIn().getBody(ArrayList.class);
|
|
|
if (arrayList.size() != 3) {
|
|
|
if (arrayList.size() != 4) {
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
Object first = arrayList.get(0);
|
|
|
Object last = arrayList.get(2);
|
|
|
Object last = arrayList.get(arrayList.size() - 1);
|
|
|
|
|
|
try {
|
|
|
ILoggingEvent firstEvent = (ILoggingEvent) first;
|
|
|
ILoggingEvent lastEvent = (ILoggingEvent) last;
|
|
|
ILoggingEvent request = (ILoggingEvent) first;
|
|
|
ILoggingEvent response = (ILoggingEvent) last;
|
|
|
|
|
|
Map<String, String> mdcPropertyMap = request.getMDCPropertyMap();
|
|
|
if (mdcPropertyMap == null || !mdcPropertyMap.get("camel.routeId").equals("api")) {
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
ObjectMapper objectMapper = new ObjectMapper();
|
|
|
JsonNode jsonNode = objectMapper.readValue(firstEvent.getMessage(), JsonNode.class);
|
|
|
JsonNode requestNode = objectMapper.readValue(request.getMessage(), JsonNode.class);
|
|
|
JsonNode responseNode = objectMapper.readValue(response.getMessage(), JsonNode.class);
|
|
|
|
|
|
|
|
|
JsonNode inNode = requestNode.with("in");
|
|
|
JsonNode outNode = responseNode.with("out");
|
|
|
|
|
|
ObjectNode objectNode = objectMapper.createObjectNode();
|
|
|
objectNode.put("time", new Timestamp(firstEvent.getTimeStamp()).toString());
|
|
|
objectNode.put("time", new Timestamp(request.getTimeStamp()).toString());
|
|
|
objectNode.put("logType", 1);
|
|
|
objectNode.put("caller", jsonNode.get("appKey").asText());
|
|
|
objectNode.put("caller", inNode.get("appKey").asText());
|
|
|
|
|
|
ObjectNode dataNode = objectMapper.createObjectNode();
|
|
|
dataNode.put("responseTime", lastEvent.getTimeStamp() - firstEvent.getTimeStamp());
|
|
|
dataNode.put("url", jsonNode.get("CamelHttpUrl").asText());
|
|
|
dataNode.put("responseTime", response.getTimeStamp() - request.getTimeStamp());
|
|
|
dataNode.put("url", inNode.get("CamelHttpUrl").asText());
|
|
|
dataNode.put("responseCode", outNode.get("CamelHttpResponseCode").asText());
|
|
|
dataNode.put("response", outNode.get("body").asText());
|
|
|
dataNode.put("api", inNode.get("api").asText());
|
|
|
dataNode.put("appKey", inNode.get("appKey").asText());
|
|
|
|
|
|
ObjectNode paramNode = objectMapper.createObjectNode();
|
|
|
paramNode.put("api", jsonNode.get("api").asText());
|
|
|
paramNode.put("appKey", jsonNode.get("appKey").asText());
|
|
|
paramNode.put("sign", jsonNode.get("sign").asText());
|
|
|
paramNode.put("timestamp", jsonNode.get("timestamp").asText());
|
|
|
paramNode.put("v", jsonNode.get("v").asText());
|
|
|
if (jsonNode.has("param")) {
|
|
|
paramNode.put("param", jsonNode.get("param").asText());
|
|
|
paramNode.put("api", inNode.get("api").asText());
|
|
|
paramNode.put("appKey", inNode.get("appKey").asText());
|
|
|
paramNode.put("sign", inNode.get("sign").asText());
|
|
|
paramNode.put("timestamp", inNode.get("timestamp").asText());
|
|
|
paramNode.put("v", inNode.get("v").asText());
|
|
|
if (inNode.has("param")) {
|
|
|
paramNode.put("param", inNode.get("param").asText());
|
|
|
}
|
|
|
if (jsonNode.has("token")) {
|
|
|
paramNode.put("token", jsonNode.get("token").asText());
|
|
|
|
|
|
if (inNode.has("token")) {
|
|
|
paramNode.put("token", inNode.get("token").asText());
|
|
|
}
|
|
|
|
|
|
dataNode.set("params", paramNode);
|
|
|
objectNode.set("data", dataNode);
|
|
|
|