| 
															
																@ -4,7 +4,11 @@ package com.yihu.jw.restmodel.common; 
															 | 
														
													
												
													
														
															| 
															 | 
															
																import com.fasterxml.jackson.databind.ObjectMapper; 
															 | 
															
															 | 
															
																import com.fasterxml.jackson.databind.ObjectMapper; 
															 | 
														
													
												
													
														
															| 
															 | 
															
																import com.yihu.jw.restmodel.exception.ApiException; 
															 | 
															
															 | 
															
																import com.yihu.jw.restmodel.exception.ApiException; 
															 | 
														
													
												
													
														
															| 
															 | 
															
																import com.yihu.jw.util.date.DateUtil; 
															 | 
															
															 | 
															
																import com.yihu.jw.util.date.DateUtil; 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																import org.slf4j.Logger; 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																import org.slf4j.LoggerFactory; 
															 | 
														
													
												
													
														
															| 
															 | 
															
																import org.springframework.beans.BeanUtils; 
															 | 
															
															 | 
															
																import org.springframework.beans.BeanUtils; 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																import org.springframework.beans.factory.annotation.Autowired; 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																import org.springframework.beans.factory.annotation.Value; 
															 | 
														
													
												
													
														
															| 
															 | 
															
																import org.springframework.util.StringUtils; 
															 | 
															
															 | 
															
																import org.springframework.util.StringUtils; 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																import javax.servlet.http.HttpServletRequest; 
															 | 
															
															 | 
															
																import javax.servlet.http.HttpServletRequest; 
															 | 
														
													
												
											
												
													
														
															 | 
															
																@ -27,9 +31,20 @@ import java.util.*; 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 * @author Sand 
															 | 
															
															 | 
															
																 * @author Sand 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 */ 
															 | 
															
															 | 
															
																 */ 
															 | 
														
													
												
													
														
															| 
															 | 
															
																public class EnvelopRestController { 
															 | 
															
															 | 
															
																public class EnvelopRestController { 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																    private Logger logger = LoggerFactory.getLogger(EnvelopRestController.class); 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																    @Value("${spring.profiles}") 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																    private String profile; 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																    protected final static String ResourceCount = "X-Total-Count"; 
															 | 
															
															 | 
															
																    protected final static String ResourceCount = "X-Total-Count"; 
															 | 
														
													
												
													
														
															| 
															 | 
															
																    protected final static String ResourceLink = "Link"; 
															 | 
															
															 | 
															
																    protected final static String ResourceLink = "Link"; 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																    protected void error(Exception e) { 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																        logger.error(e.getMessage()); 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																        if (!"prod".equals(profile)) { 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																            e.printStackTrace(); 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																        } 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																    } 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																    /** 
															 | 
															
															 | 
															
																    /** 
															 | 
														
													
												
													
														
															| 
															 | 
															
																     * 返回一个信封对象。信封对象的返回场景参见 Envelop. 
															 | 
															
															 | 
															
																     * 返回一个信封对象。信封对象的返回场景参见 Envelop. 
															 | 
														
													
												
													
														
															| 
															 | 
															
																     * 
															 | 
															
															 | 
															
																     * 
															 | 
														
													
												
											
												
													
														
															 | 
															
																@ -45,15 +60,16 @@ public class EnvelopRestController { 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																        return envelop; 
															 | 
															
															 | 
															
																        return envelop; 
															 | 
														
													
												
													
														
															| 
															 | 
															
																    } 
															 | 
															
															 | 
															
																    } 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																    //Json转实体类 
															 | 
															
															 | 
															
																    //Json转实体类 
															 | 
														
													
												
													
														
															| 
															 | 
															
																    public <T> T toEntity(String json, Class<T> entityCls) { 
															 | 
															
															 | 
															
																    public <T> T toEntity(String json, Class<T> entityCls) { 
															 | 
														
													
												
													
														
															| 
															 | 
															
																        try { 
															 | 
															
															 | 
															
																        try { 
															 | 
														
													
												
													
														
															| 
															 | 
															
																            ObjectMapper objectMapper=new ObjectMapper(); 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																            ObjectMapper objectMapper = new ObjectMapper(); 
															 | 
														
													
												
													
														
															| 
															 | 
															
																            objectMapper.setDateFormat(new SimpleDateFormat(DateUtil.yyyy_MM_dd_HH_mm_ss)); 
															 | 
															
															 | 
															
																            objectMapper.setDateFormat(new SimpleDateFormat(DateUtil.yyyy_MM_dd_HH_mm_ss)); 
															 | 
														
													
												
													
														
															| 
															 | 
															
																            T entity = objectMapper.readValue(json, entityCls); 
															 | 
															
															 | 
															
																            T entity = objectMapper.readValue(json, entityCls); 
															 | 
														
													
												
													
														
															| 
															 | 
															
																            return entity; 
															 | 
															
															 | 
															
																            return entity; 
															 | 
														
													
												
													
														
															| 
															 | 
															
																        } catch (IOException ex) { 
															 | 
															
															 | 
															
																        } catch (IOException ex) { 
															 | 
														
													
												
													
														
															| 
															 | 
															
																            throw new ApiException( "Unable to parse json, " + ex.getMessage(),CommonContants.common_error_params_code); 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																            throw new ApiException("Unable to parse json, " + ex.getMessage(), CommonContants.common_error_params_code); 
															 | 
														
													
												
													
														
															| 
															 | 
															
																        } 
															 | 
															
															 | 
															
																        } 
															 | 
														
													
												
													
														
															| 
															 | 
															
																    } 
															 | 
															
															 | 
															
																    } 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
											
												
													
														
															 | 
															
																@ -64,7 +80,7 @@ public class EnvelopRestController { 
															 | 
														
													
												
													
														
															| 
															 | 
															
																     * @param sources 
															 | 
															
															 | 
															
																     * @param sources 
															 | 
														
													
												
													
														
															| 
															 | 
															
																     * @param targets 
															 | 
															
															 | 
															
																     * @param targets 
															 | 
														
													
												
													
														
															| 
															 | 
															
																     * @param targetCls 
															 | 
															
															 | 
															
																     * @param targetCls 
															 | 
														
													
												
													
														
															| 
															 | 
															
																     *@param properties  @return 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																     * @param properties @return 
															 | 
														
													
												
													
														
															| 
															 | 
															
																     */ 
															 | 
															
															 | 
															
																     */ 
															 | 
														
													
												
													
														
															| 
															 | 
															
																    public <T> List<T> convertToModels(Collection sources, List<T> targets, Class<T> targetCls, String properties) { 
															 | 
															
															 | 
															
																    public <T> List<T> convertToModels(Collection sources, List<T> targets, Class<T> targetCls, String properties) { 
															 | 
														
													
												
													
														
															| 
															 | 
															
																        if (sources == null) { 
															 | 
															
															 | 
															
																        if (sources == null) { 
															 | 
														
													
												
											
												
													
														
															 | 
															
																@ -81,6 +97,7 @@ public class EnvelopRestController { 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																        return targets; 
															 | 
															
															 | 
															
																        return targets; 
															 | 
														
													
												
													
														
															| 
															 | 
															
																    } 
															 | 
															
															 | 
															
																    } 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																    /** 
															 | 
															
															 | 
															
																    /** 
															 | 
														
													
												
													
														
															| 
															 | 
															
																     * 计算不在类中的属性。 
															 | 
															
															 | 
															
																     * 计算不在类中的属性。 
															 | 
														
													
												
													
														
															| 
															 | 
															
																     * 
															 | 
															
															 | 
															
																     * 
															 | 
														
													
												
											
												
													
														
															 | 
															
																@ -102,6 +119,7 @@ public class EnvelopRestController { 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																        return arrayList.toArray(new String[arrayList.size()]); 
															 | 
															
															 | 
															
																        return arrayList.toArray(new String[arrayList.size()]); 
															 | 
														
													
												
													
														
															| 
															 | 
															
																    } 
															 | 
															
															 | 
															
																    } 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																    /** 
															 | 
															
															 | 
															
																    /** 
															 | 
														
													
												
													
														
															| 
															 | 
															
																     * 客户端调用REST接口时,若返回的是分页结果,则需要在响应头中添加资源的总数量及其他资源的分页导航。 
															 | 
															
															 | 
															
																     * 客户端调用REST接口时,若返回的是分页结果,则需要在响应头中添加资源的总数量及其他资源的分页导航。 
															 | 
														
													
												
													
														
															| 
															 | 
															
																     * EHR平台使用响应头中的 X-Total-Count 字段记录资源的总数量,link header作为其他资源的分页导航。 
															 | 
															
															 | 
															
																     * EHR平台使用响应头中的 X-Total-Count 字段记录资源的总数量,link header作为其他资源的分页导航。 
															 | 
														
													
												
											
												
													
														
															 | 
															
																@ -139,6 +157,7 @@ public class EnvelopRestController { 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																        response.setHeader(ResourceLink, linkMap(map)); 
															 | 
															
															 | 
															
																        response.setHeader(ResourceLink, linkMap(map)); 
															 | 
														
													
												
													
														
															| 
															 | 
															
																    } 
															 | 
															
															 | 
															
																    } 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																    private String linkMap(Map<String, String> map) { 
															 | 
															
															 | 
															
																    private String linkMap(Map<String, String> map) { 
															 | 
														
													
												
													
														
															| 
															 | 
															
																        StringBuffer links = new StringBuffer(""); 
															 | 
															
															 | 
															
																        StringBuffer links = new StringBuffer(""); 
															 | 
														
													
												
													
														
															| 
															 | 
															
																        for (String key : map.keySet()) { 
															 | 
															
															 | 
															
																        for (String key : map.keySet()) { 
															 |