Browse Source

1、台州数据获取

louhr 5 years ago
parent
commit
aa7b7f72e1

+ 16 - 0
kernel/src/test/java/com/lantone/qc/kernel/Patient.java

@@ -0,0 +1,16 @@
+package com.lantone.qc.kernel;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @ClassName : Patient
+ * @Description :
+ * @Author : 楼辉荣
+ * @Date: 2020-03-31 19:35
+ */
+@Getter
+@Setter
+public class Patient {
+    private String brzyid;
+}

+ 18 - 0
kernel/src/test/java/com/lantone/qc/kernel/PatientText.java

@@ -0,0 +1,18 @@
+package com.lantone.qc.kernel;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @ClassName : PatientText
+ * @Description :
+ * @Author : 楼辉荣
+ * @Date: 2020-03-31 20:18
+ */
+@Getter
+@Setter
+public class PatientText {
+    private String brzyid;
+    private String bljlmc;
+    private String bljlnr;
+}

+ 194 - 0
kernel/src/test/java/com/lantone/qc/kernel/TaizDataImportApiTest.java

@@ -0,0 +1,194 @@
+package com.lantone.qc.kernel;
+
+import com.lantone.qc.pub.jdbc.MysqlJdbc;
+import com.lantone.qc.pub.util.FastJsonUtils;
+import com.lantone.qc.pub.util.PropertiesUtil;
+import com.lantone.qc.trans.taizhou.util.TzXmlUtil;
+import com.lantone.qc.trans.util.http.HttpApi;
+
+import java.sql.Connection;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.sql.Statement;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @ClassName : TaizDataImportApiTest
+ * @Description :
+ * @Author : 楼辉荣
+ * @Date: 2020-03-31 19:34
+ */
+public class TaizDataImportApiTest {
+    private static String hospitalId = "3";
+
+    private Map<String,String> caseMap = new HashMap<>();
+    {
+        caseMap.put("0010 入院记录(新生儿)", "入院记录");
+        caseMap.put("0160 术后首次病程录02", "术后首次谈话及病程录");
+        caseMap.put("0330 危急值处置记录", "危急值记录");
+        caseMap.put("0300 首次病程录02", "首次病程录");
+        caseMap.put("0010 入院记录(女)", "入院记录");
+        caseMap.put("0220 转出记录","转出记录");
+        caseMap.put("0310 会诊记录","会诊记录");
+        caseMap.put("0010 再次入院(男)","入院记录");
+        caseMap.put("0120 上级查房记录","查房记录");
+        caseMap.put("0010 入院记录(儿)","入院记录");
+        caseMap.put("0130 普通病程录","查房记录");
+        caseMap.put("0010 入院记录(产科)","入院记录");
+        caseMap.put("0433 病危(重)通知","病危通知书");
+        caseMap.put("会诊结果","会诊结果单");
+        caseMap.put("0290 术前讨论兼术前小结","术前讨论小结");
+        caseMap.put("0300 首次病程录(中医)","首次病程录");
+        caseMap.put("0900 手术记录02","手术记录");
+        caseMap.put("0010 入院记录(男)","入院记录");
+        caseMap.put("0010 入院记录(中医 女)","入院记录");
+        caseMap.put("0310 会诊申请","会诊申请单");
+        caseMap.put("0110 查房记录(SOAP)","查房记录");
+        caseMap.put("0840 出院记录(手术)","出院小结");
+        caseMap.put("0840 出院记录(非手术)","出院小结");
+        caseMap.put("0011 入院记录(神经外科--女)","入院记录");
+        caseMap.put("0073 (日间)手术及术后首次病程记录","术后首次谈话及病程录");
+        caseMap.put("0010 入院记录(中医 男)","入院记录");
+        caseMap.put("住院病案首页02(病人存档及卫生统计用)","病案首页");
+
+    }
+
+    public static void main(String[] args) {
+        TaizDataImportApiTest test = new TaizDataImportApiTest();
+        test.insertPatient(test.importPatient());
+        //病人流水号获取
+        Map<String, String> patientMap = test.loadPatients(hospitalId);
+        Map<String, String> modelMap = test.loadModel();
+        test.insertPatientText(patientMap, modelMap);
+    }
+
+    private List<Patient> importPatient() {
+        try {
+            String result = HttpApi.get("http://192.168.3.241:11000/api/inpatientlist");
+            List<Patient> patients = FastJsonUtils.getJsonToList(result, Patient.class);
+            return patients;
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return null;
+    }
+
+    private List<PatientText> importPatientText(String patientId) {
+        try {
+            String result = HttpApi.get("http://192.168.3.241:11000/api/GetMedrecords?brzyid=" + patientId);
+//            String s = result.substring(result.indexOf("[") + 1, result.lastIndexOf("]"));
+//            s = s.replaceAll("\\[","<");
+//            s = s.replaceAll("\\]",">");
+//
+//            s = "[" + s + "]";
+            List<PatientText> patientTexts = FastJsonUtils.getJsonToList(result, PatientText.class);
+            return patientTexts;
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return null;
+    }
+
+    private void insertPatient(List<Patient> patients) {
+        List<Map<String, Object>> list = new ArrayList<>();
+        for (Patient patient : patients) {
+            Map<String, Object> patientMap = new HashMap<>();
+            patientMap.put("case_number", patient.getBrzyid());
+            patientMap.put("hospital_id", hospitalId);
+            list.add(patientMap);
+        }
+        initJdbc().insert(list, "qc_cases_number", new String[]{"hospital_id", "case_number"});
+    }
+
+    private void insertPatientText(Map<String, String> patientMap, Map<String, String> modelMap) {
+        List<Map<String, Object>> list = new ArrayList<>();
+
+        for (Map.Entry<String, String> entry : patientMap.entrySet()) {
+            List<PatientText> patientTexts = importPatientText(entry.getKey());
+            for (PatientText patientText : patientTexts) {
+                Map<String, Object> patientTextMap = new HashMap<>();
+                patientTextMap.put("case_number", patientText.getBrzyid());
+                patientTextMap.put("case_number_id", patientMap.get(patientText.getBrzyid()));
+                patientTextMap.put("hospital_id", hospitalId);
+                patientTextMap.put("mode_id", modelMap.get(caseMap.get(patientText.getBljlmc())));
+
+                if (patientTextMap.get("mode_id") == null) {
+                    continue;
+                }
+                patientTextMap.put("origin_text", patientText.getBljlnr());
+
+                String text = "";
+                Map<String, String> textMap = TzXmlUtil.getXmlToMapForTZ(patientText.getBljlnr());
+                for (Map.Entry<String, String> e : textMap.entrySet()) {
+                    text = text + "【" + e.getKey() + "】:" + e.getValue() + "\n";
+                }
+                patientTextMap.put("text", text);
+                list.add(patientTextMap);
+            }
+        }
+        initJdbc().insert(list, "qc_model_mapping", new String[]{"case_number", "case_number_id", "origin_text", "mode_id", "text"});
+    }
+
+    private Map<String, String> loadPatients(String hospitalId) {
+        MysqlJdbc mysqlJdbc = initJdbc();
+        Connection conn = mysqlJdbc.connect();
+        Statement st = null;
+        ResultSet rs = null;
+        String r1, r2;
+        Map<String, String> map = new HashMap<>();
+        try {
+            st = conn.createStatement();
+            String sql = "select id, case_number from qc_cases_number where hospital_id = " + hospitalId + " limit 0, 10";
+            rs = st.executeQuery(sql);
+            while (rs.next()) {
+                r1 = rs.getString(1);
+                r2 = rs.getString(2);
+                map.put(r2, r1);
+            }
+        } catch (SQLException sqle) {
+            sqle.printStackTrace();
+        } catch (Exception e) {
+            e.printStackTrace();
+        } finally {
+            mysqlJdbc.close(rs, st, conn);
+        }
+        return map;
+    }
+
+    private Map<String, String> loadModel() {
+        MysqlJdbc mysqlJdbc = initJdbc();
+        Connection conn = mysqlJdbc.connect();
+        Statement st = null;
+        ResultSet rs = null;
+        String r1, r2;
+        Map<String, String> map = new HashMap<>();
+        try {
+            st = conn.createStatement();
+            String sql = "select id, name from qc_mode";
+            rs = st.executeQuery(sql);
+            while (rs.next()) {
+                r1 = rs.getString(1);
+                r2 = rs.getString(2);
+                map.put(r2, r1);
+            }
+        } catch (SQLException sqle) {
+            sqle.printStackTrace();
+        } catch (Exception e) {
+            e.printStackTrace();
+        } finally {
+            mysqlJdbc.close(rs, st, conn);
+        }
+        return map;
+    }
+
+    private MysqlJdbc initJdbc() {
+        PropertiesUtil propertiesUtil = new PropertiesUtil("kernel.properties");
+        MysqlJdbc mysqlJdbc = new MysqlJdbc(propertiesUtil.getProperty("mysql.test.user"),
+                propertiesUtil.getProperty("mysql.test.password"),
+                propertiesUtil.getProperty("mysql.test.url"));
+        return mysqlJdbc;
+    }
+}

+ 163 - 0
trans/src/main/java/com/lantone/qc/trans/util/http/HttpApi.java

@@ -0,0 +1,163 @@
+package com.lantone.qc.trans.util.http;
+
+import org.apache.http.HttpEntity;
+import org.apache.http.HttpResponse;
+import org.apache.http.HttpStatus;
+import org.apache.http.client.methods.CloseableHttpResponse;
+import org.apache.http.client.methods.HttpGet;
+import org.apache.http.client.methods.HttpPost;
+import org.apache.http.client.protocol.HttpClientContext;
+import org.apache.http.entity.StringEntity;
+import org.apache.http.impl.client.CloseableHttpClient;
+import org.apache.http.impl.client.HttpClients;
+import org.apache.http.protocol.HTTP;
+import org.apache.http.util.EntityUtils;
+import org.codehaus.jackson.JsonParseException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Component;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.net.ConnectException;
+
+
+/**
+ * 
+ * ClassName: HttpApi 
+ * Function: HTTP请求工具类 
+ * date: 2015年7月10日 下午10:50:24  
+ * 
+ * @author 楼辉荣(Fyeman) 
+ * @version 1.0 
+ * @since JDK 1.7
+ */
+@Component
+public class HttpApi<T> {
+	private static Logger log = LoggerFactory.getLogger(HttpApi.class);
+
+	/**
+	 * Description : HttpPost方式访问远程URL
+	 * 
+	 * @param httpUrl
+	 *            URL
+	 * @param obj
+	 *            post方式传入参数对象
+	 * @param type
+	 *            返回Json构造对象类
+	 * @return post访问返回数据对象
+	 */
+	@SuppressWarnings({ "deprecation", "unused" })
+	public T doPost(String httpUrl, Object obj, Class<T> type) throws ConnectException, Exception {
+		JsonMapper mapper = JsonMapper.nonEmptyMapper();
+		try {
+			/* post向服务器请求数据 */
+			HttpPost httppost = new HttpPost(httpUrl);
+			if (obj != null) {
+				String post = mapper.toJson(obj);
+//				log.info("开始发起远程请求Param String:" + post);
+				StringEntity se = new StringEntity(post, HTTP.UTF_8);
+				se.setContentType("application/json");
+				se.setContentEncoding("utf-8");
+				httppost.setEntity(se);
+			}
+
+			CloseableHttpResponse response = HttpConnectionManager.getHttpClient().execute(httppost, HttpClientContext.create());
+			int code = response.getStatusLine().getStatusCode();
+			HttpEntity entity = response.getEntity();
+			String receive = EntityUtils.toString(entity, "UTF-8").trim();
+//			log.info("服务器返回Response String:" + receive);
+			return mapper.fromJson(receive, type);
+		} catch (ConnectException connException) {
+			throw connException;
+		} catch (JsonParseException jsonException) {
+			throw new Exception("Json映射对象错误!----" + jsonException.getMessage(), jsonException);
+		} catch (Exception e) {
+			throw new Exception("远程服务器调用接口失败!----" + e.getMessage(), e);
+		}
+
+	}
+	
+	/**
+	 * Description : HttpPost方式访问远程URL
+	 * 
+	 * @param httpUrl
+	 *            URL
+	 * @param obj
+	 *            post方式传入参数对象
+	 * @param type
+	 *            返回Json构造对象类
+	 * @return post访问返回数据对象
+	 */
+	@SuppressWarnings({ "deprecation", "unused" })
+	public T doPostReplace(String httpUrl, Object obj, Class<T> type) throws ConnectException, Exception {
+		JsonMapper mapper = JsonMapper.nonEmptyMapper();
+		try {
+			/* post向服务器请求数据 */
+			HttpPost httppost = new HttpPost(httpUrl);
+			if (obj != null) {
+				String post = mapper.toJson(obj);
+				log.info("开始发起远程请求Param String:" + post);
+				StringEntity se = new StringEntity(post, HTTP.UTF_8);
+				se.setContentType("application/json");
+				se.setContentEncoding("utf-8");
+				httppost.setEntity(se);
+			}
+
+			CloseableHttpResponse response = HttpConnectionManager.getHttpClient().execute(httppost, HttpClientContext.create());
+			int code = response.getStatusLine().getStatusCode();
+			HttpEntity entity = response.getEntity();
+			String receive = EntityUtils.toString(entity, "UTF-8").trim();
+			log.info("服务器返回Response String:" + receive);			
+			receive=receive.replace("\\\"", "\"").replace("\"[{", "[{").replace("}]\"", "}]").replace("\"{", "{").replace("}\"", "}").replace("\"data\":\"[]\"", "\"data\":null");			
+			return mapper.fromJson(receive, type);
+		} catch (ConnectException connException) {
+			throw connException;
+		} catch (JsonParseException jsonException) {
+			throw new Exception("Json映射对象错误!----" + jsonException.getMessage(), jsonException);
+		} catch (Exception e) {
+			throw new Exception("远程服务器调用接口失败!----" + e.getMessage(), e);
+		}
+
+	}
+
+	public static String get(String url){
+		String result = "";
+		HttpGet get = new HttpGet(url);
+		try{
+			CloseableHttpClient httpClient = HttpClients.createDefault();
+			HttpResponse response = httpClient.execute(get);
+			result = getHttpEntityContent(response);
+
+			if(response.getStatusLine().getStatusCode()!= HttpStatus.SC_OK){
+				result = "服务器异常";
+			}
+		} catch (Exception e){
+			System.out.println("请求异常");
+			throw new RuntimeException(e);
+		} finally{
+			get.abort();
+		}
+		return result;
+	}
+
+	public static String getHttpEntityContent(HttpResponse response) throws UnsupportedOperationException, IOException {
+		String result = "";
+		HttpEntity entity = response.getEntity();
+		if(entity != null){
+			InputStream in = entity.getContent();
+			BufferedReader br = new BufferedReader(new InputStreamReader(in, "utf-8"));
+			StringBuilder strber= new StringBuilder();
+			String line = null;
+			while((line = br.readLine())!=null){
+				strber.append(line+'\n');
+			}
+			br.close();
+			in.close();
+			result = strber.toString();
+		}
+		return result;
+	}
+}

+ 79 - 0
trans/src/main/java/com/lantone/qc/trans/util/http/HttpConnectionManager.java

@@ -0,0 +1,79 @@
+package com.lantone.qc.trans.util.http;
+
+import org.apache.http.HttpHost;
+import org.apache.http.conn.routing.HttpRoute;
+import org.apache.http.impl.client.CloseableHttpClient;
+import org.apache.http.impl.client.HttpClients;
+import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.IOException;
+
+/**
+ * 
+ * ClassName: HttpConnectionManager 
+ * Function: HTTP连接池 
+ * date: 2015年7月10日 下午10:50:48  
+ * 
+ * @author 楼辉荣(Fyeman) 
+ * @version 1.0 
+ * @since JDK 1.7
+ */
+public class HttpConnectionManager {
+	private static Logger log = LoggerFactory.getLogger(HttpConnectionManager.class);
+	private static PoolingHttpClientConnectionManager cm;
+	static {
+		try {
+			cm = new PoolingHttpClientConnectionManager();
+		    // 将最大连接数增加到200
+		    cm.setMaxTotal(200);
+		    // 将每个路由基础的连接增加到20
+		    cm.setDefaultMaxPerRoute(20);
+		    //将目标主机的最大连接数增加到50
+		    HttpHost localhost = new HttpHost("http://115.28.138.12", 7070);
+		    cm.setMaxPerRoute(new HttpRoute(localhost), 50);
+		} catch (Exception e) {
+			log.error("初始化HTTP连接池出错", e);
+		}
+	}
+
+	/**
+	 * 
+	 * @Title: getHttpClient
+	 * @Description: HTTP链接池返回空闲链接
+	 * 
+	 * @author 楼辉荣(Fyeman) 
+	 * @return 
+	 * @since JDK 1.7
+	 */
+	public static CloseableHttpClient getHttpClient() throws Exception {
+		try {
+			CloseableHttpClient httpClient = HttpClients.custom().setConnectionManager(cm).build();
+			return httpClient;
+		} catch (Exception e) {
+			log.error("获取CloseableHttpClient出错", e);
+			throw e;
+		}
+	}
+	
+	/**
+	 * 
+	 * @Title: closeHttpClient
+	 * @Description: HTTP放回链接
+	 * 
+	 * @author 楼辉荣(Fyeman) 
+	 * @param httpClient 
+	 * @since JDK 1.7
+	 */
+	public static void closeHttpClient(CloseableHttpClient httpClient) throws IOException {
+		if (httpClient != null) {
+			try {
+				httpClient.close();
+			} catch (IOException ioe) {
+				log.error("关闭HTTP连接出错", ioe);
+				throw ioe;
+			}
+		}
+	}
+}

+ 174 - 0
trans/src/main/java/com/lantone/qc/trans/util/http/JsonMapper.java

@@ -0,0 +1,174 @@
+/**   
+* @Company: 杭州朗通信息技术有限公司 
+* @Department: 系统软件部 
+* @Description: 朗通智能辅助诊疗系统 
+* @Address: 浙江省杭州市西湖区西斗门路3号 天堂软件园D-7B 
+*/
+package com.lantone.qc.trans.util.http;
+
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.DeserializationFeature;
+import com.fasterxml.jackson.databind.JavaType;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.SerializationFeature;
+import com.fasterxml.jackson.databind.util.JSONPObject;
+import com.fasterxml.jackson.module.jaxb.JaxbAnnotationModule;
+import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.IOException;
+
+/**
+ * @Title: JsonMapper.java
+ * @Package com.lantone.core.utils.mapper
+ * @Description: 简单封装Jackson,实现JSON String<->Java Object的Mapper,封装不同的输出风格,
+ *               使用不同的builder函数创建实例
+ * @author 楼辉荣(Fyeman)
+ * @date 2015年4月23日 下午11:58:46
+ * @version V1.0
+ */
+@SuppressWarnings("unchecked")
+public class JsonMapper {
+
+	private static Logger logger = LoggerFactory.getLogger(JsonMapper.class);
+
+	private ObjectMapper mapper;
+
+	public JsonMapper() {
+		this(null);
+	}
+
+	public JsonMapper(Include include) {
+		mapper = new ObjectMapper();
+		// 设置输出时包含属性的风格
+		if (include != null) {
+			mapper.setSerializationInclusion(include);
+		}
+		// 设置输入时忽略在JSON字符串中存在但Java对象实际没有的属性
+		mapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
+	}
+
+	/**
+	 * 创建只输出非Null且非Empty(如List.isEmpty)的属性到Json字符串的Mapper,建议在外部接口中使用.
+	 */
+	public static JsonMapper nonEmptyMapper() {
+		return new JsonMapper(Include.NON_EMPTY);
+	}
+
+	/**
+	 * 创建只输出初始值被改变的属性到Json字符串的Mapper, 最节约的存储方式,建议在内部接口中使用。
+	 */
+	public static JsonMapper nonDefaultMapper() {
+		return new JsonMapper(Include.NON_DEFAULT);
+	}
+
+	/**
+	 * Object可以是POJO,也可以是Collection或数组。 如果对象为Null, 返回"null". 如果集合为空集合, 返回"[]".
+	 */
+	public String toJson(Object object) {
+
+		try {
+			return mapper.writeValueAsString(object);
+		} catch (IOException e) {
+			logger.warn("write to json string error:" + object, e);
+			return null;
+		}
+	}
+
+	/**
+	 * 反序列化POJO或简单Collection如List<String>.
+	 * 
+	 * 如果JSON字符串为Null或"null"字符串, 返回Null. 如果JSON字符串为"[]", 返回空集合.
+	 * 
+	 * 如需反序列化复杂Collection如List<MyBean>, 请使用fromJson(String,JavaType)
+	 * 
+	 * @see #fromJson(String, JavaType)
+	 */
+	public <T> T fromJson(String jsonString, Class<T> clazz) {
+		if (StringUtils.isEmpty(jsonString)) {
+			return null;
+		}
+
+		try {
+			return mapper.readValue(jsonString, clazz);
+		} catch (IOException e) {
+			logger.warn("parse json string error:" + jsonString, e);
+			return null;
+		}
+	}
+
+	/**
+	 * 反序列化复杂Collection如List<Bean>, 先使用函數createCollectionType构造类型,然后调用本函数.
+	 * 
+	 * @see #createCollectionType(Class, Class...)
+	 */
+	public <T> T fromJson(String jsonString, JavaType javaType) {
+		if (StringUtils.isEmpty(jsonString)) {
+			return null;
+		}
+
+		try {
+			return (T) mapper.readValue(jsonString, javaType);
+		} catch (IOException e) {
+			logger.warn("parse json string error:" + jsonString, e);
+			return null;
+		}
+	}
+
+	/**
+	 * 構造泛型的Collection Type如: ArrayList<MyBean>,
+	 * 则调用constructCollectionType(ArrayList.class,MyBean.class)
+	 * HashMap<String,MyBean>, 则调用(HashMap.class,String.class, MyBean.class)
+	 */
+	public JavaType createCollectionType(Class<?> collectionClass, Class<?>... elementClasses) {
+		return mapper.getTypeFactory().constructParametricType(collectionClass, elementClasses);
+	}
+
+	/**
+	 * 當JSON裡只含有Bean的部分屬性時,更新一個已存在Bean,只覆蓋該部分的屬性.
+	 */
+	public <T> T update(String jsonString, T object) {
+		try {
+			return (T) mapper.readerForUpdating(object).readValue(jsonString);
+		} catch (JsonProcessingException e) {
+			logger.warn("update json string:" + jsonString + " to object:" + object + " error.", e);
+		} catch (IOException e) {
+			logger.warn("update json string:" + jsonString + " to object:" + object + " error.", e);
+		}
+		return null;
+	}
+
+	/**
+	 * 輸出JSONP格式數據.
+	 */
+	public String toJsonP(String functionName, Object object) {
+		return toJson(new JSONPObject(functionName, object));
+	}
+
+	/**
+	 * 設定是否使用Enum的toString函數來讀寫Enum, 為False時時使用Enum的name()函數來讀寫Enum, 默認為False.
+	 * 注意本函數一定要在Mapper創建後, 所有的讀寫動作之前調用.
+	 */
+	public void enableEnumUseToString() {
+		mapper.enable(SerializationFeature.WRITE_ENUMS_USING_TO_STRING);
+		mapper.enable(DeserializationFeature.READ_ENUMS_USING_TO_STRING);
+	}
+
+	/**
+	 * 支持使用Jaxb的Annotation,使得POJO上的annotation不用与Jackson耦合。
+	 * 默认会先查找jaxb的annotation,如果找不到再找jackson的。
+	 */
+	public void enableJaxbAnnotation() {
+		JaxbAnnotationModule module = new JaxbAnnotationModule();
+		mapper.registerModule(module);
+	}
+
+	/**
+	 * 取出Mapper做进一步的设置或使用其他序列化API.
+	 */
+	public ObjectMapper getMapper() {
+		return mapper;
+	}
+}