|  | @ -10,6 +10,7 @@ import org.apache.camel.Processor;
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | import java.sql.Timestamp;
 | 
	
		
			
				|  |  | import java.util.ArrayList;
 | 
	
		
			
				|  |  | import java.util.Map;
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | /**
 | 
	
		
			
				|  |  |  * ehr log处理
 | 
	
	
		
			
				|  | @ -21,45 +22,68 @@ public class EHRLogProcesser implements Processor {
 | 
	
		
			
				|  |  |     @Override
 | 
	
		
			
				|  |  |     public void process(Exchange exchange) throws Exception {
 | 
	
		
			
				|  |  |         exchange.getOut().setBody("");
 | 
	
		
			
				|  |  |         exchange.getOut().setHeader("empty", true);
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         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);
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |             String content = objectMapper.writeValueAsString(objectNode);
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |             exchange.getOut().setBody(content);
 | 
	
		
			
				|  |  |         } catch (JsonParseException e) {
 | 
	
		
			
				|  |  |             exchange.getOut().setHeader("empty", false);
 | 
	
		
			
				|  |  |         } catch (Exception e) {
 | 
	
		
			
				|  |  |             e.printStackTrace();
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |     }
 |