|  | @ -0,0 +1,200 @@
 | 
	
		
			
				|  |  | package com.yihu.wlyy.analysis.etl.transform;
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | import com.yihu.wlyy.analysis.entity.UserPortrait;
 | 
	
		
			
				|  |  | import com.yihu.wlyy.analysis.etl.BusinessTypeEnum;
 | 
	
		
			
				|  |  | import com.yihu.wlyy.analysis.etl.ETLConstantData;
 | 
	
		
			
				|  |  | import com.yihu.wlyy.analysis.etl.ILogTransform;
 | 
	
		
			
				|  |  | import org.apache.commons.lang3.StringUtils;
 | 
	
		
			
				|  |  | import org.json.JSONObject;
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | import java.util.ArrayList;
 | 
	
		
			
				|  |  | import java.util.Date;
 | 
	
		
			
				|  |  | import java.util.List;
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | /**
 | 
	
		
			
				|  |  |  * Created by lyr-pc on 2017/2/28.
 | 
	
		
			
				|  |  |  */
 | 
	
		
			
				|  |  | public class HealthIndexTransform implements ILogTransform {
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     private final BusinessTypeEnum logType = BusinessTypeEnum.index;
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     @Override
 | 
	
		
			
				|  |  |     public List<UserPortrait> transform(JSONObject log) throws Exception {
 | 
	
		
			
				|  |  |         JSONObject logData = log.getJSONObject("data");
 | 
	
		
			
				|  |  |         JSONObject businessData = logData.getJSONObject("data");
 | 
	
		
			
				|  |  |         List<UserPortrait> labelInfoList = new ArrayList<>();
 | 
	
		
			
				|  |  |         String type = businessData.has("type") ? businessData.get("type").toString() : "";
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         if (type.equals("1")) {
 | 
	
		
			
				|  |  |             labelInfoList.addAll(transformXueTang(businessData));
 | 
	
		
			
				|  |  |         } else if (type.equals("2")) {
 | 
	
		
			
				|  |  |             labelInfoList.addAll(transformXueYa(businessData));
 | 
	
		
			
				|  |  |         } else if (type.equals("3")) {
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         } else if (type.equals("4")) {
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         return labelInfoList;
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     @Override
 | 
	
		
			
				|  |  |     public int getLogType() {
 | 
	
		
			
				|  |  |         return logType.ordinal();
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     @Override
 | 
	
		
			
				|  |  |     public String getLogTypeName() {
 | 
	
		
			
				|  |  |         return logType.name();
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     /**
 | 
	
		
			
				|  |  |      * 血糖分析
 | 
	
		
			
				|  |  |      *
 | 
	
		
			
				|  |  |      * @param log
 | 
	
		
			
				|  |  |      * @return
 | 
	
		
			
				|  |  |      */
 | 
	
		
			
				|  |  |     public List<UserPortrait> transformXueTang(JSONObject log) {
 | 
	
		
			
				|  |  |         List<UserPortrait> portraits = new ArrayList<>();
 | 
	
		
			
				|  |  |         boolean higher = false, lower = false;
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         // 早餐前
 | 
	
		
			
				|  |  |         String value1 = log.has("value1") ? log.get("value1").toString() : "";
 | 
	
		
			
				|  |  |         // 早餐后
 | 
	
		
			
				|  |  |         String value2 = log.has("value2") ? log.get("value2").toString() : "";
 | 
	
		
			
				|  |  |         // 午餐前
 | 
	
		
			
				|  |  |         String value3 = log.has("value3") ? log.get("value3").toString() : "";
 | 
	
		
			
				|  |  |         // 午餐后
 | 
	
		
			
				|  |  |         String value4 = log.has("value4") ? log.get("value4").toString() : "";
 | 
	
		
			
				|  |  |         // 晚餐前
 | 
	
		
			
				|  |  |         String value5 = log.has("value5") ? log.get("value5").toString() : "";
 | 
	
		
			
				|  |  |         // 晚餐后
 | 
	
		
			
				|  |  |         String value6 = log.has("value6") ? log.get("value6").toString() : "";
 | 
	
		
			
				|  |  |         // 睡觉前
 | 
	
		
			
				|  |  |         String value7 = log.has("value7") ? log.get("value7").toString() : "";
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         if (!StringUtils.isEmpty(value1) && value1.compareTo(ETLConstantData.HEALTH_STANDARD_ST_MIN_BEFORE) < 0) {
 | 
	
		
			
				|  |  |             lower = true;
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |         if (!StringUtils.isEmpty(value1) && value1.compareTo(ETLConstantData.HEALTH_STANDARD_ST_MAX_BEFORE) > 0) {
 | 
	
		
			
				|  |  |             higher = true;
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |         if (!StringUtils.isEmpty(value2) && value2.compareTo(ETLConstantData.HEALTH_STANDARD_ST_MIN_AFTER) < 0) {
 | 
	
		
			
				|  |  |             lower = true;
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |         if (!StringUtils.isEmpty(value2) && value2.compareTo(ETLConstantData.HEALTH_STANDARD_ST_MAX_AFTER) > 0) {
 | 
	
		
			
				|  |  |             higher = true;
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |         if (!StringUtils.isEmpty(value3) && value3.compareTo(ETLConstantData.HEALTH_STANDARD_ST_MIN_BEFORE) < 0) {
 | 
	
		
			
				|  |  |             lower = true;
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |         if (!StringUtils.isEmpty(value3) && value3.compareTo(ETLConstantData.HEALTH_STANDARD_ST_MAX_BEFORE) > 0) {
 | 
	
		
			
				|  |  |             higher = true;
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |         if (!StringUtils.isEmpty(value4) && value4.compareTo(ETLConstantData.HEALTH_STANDARD_ST_MIN_AFTER) < 0) {
 | 
	
		
			
				|  |  |             lower = true;
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |         if (!StringUtils.isEmpty(value4) && value4.compareTo(ETLConstantData.HEALTH_STANDARD_ST_MAX_AFTER) > 0) {
 | 
	
		
			
				|  |  |             higher = true;
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |         if (!StringUtils.isEmpty(value5) && value5.compareTo(ETLConstantData.HEALTH_STANDARD_ST_MIN_BEFORE) < 0) {
 | 
	
		
			
				|  |  |             lower = true;
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |         if (!StringUtils.isEmpty(value5) && value5.compareTo(ETLConstantData.HEALTH_STANDARD_ST_MAX_BEFORE) > 0) {
 | 
	
		
			
				|  |  |             higher = true;
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |         if (!StringUtils.isEmpty(value6) && value6.compareTo(ETLConstantData.HEALTH_STANDARD_ST_MIN_AFTER) < 0) {
 | 
	
		
			
				|  |  |             lower = true;
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |         if (!StringUtils.isEmpty(value6) && value6.compareTo(ETLConstantData.HEALTH_STANDARD_ST_MAX_AFTER) > 0) {
 | 
	
		
			
				|  |  |             higher = true;
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |         if (!StringUtils.isEmpty(value7) && value7.compareTo(ETLConstantData.HEALTH_STANDARD_ST_MIN_BEFORE) < 0) {
 | 
	
		
			
				|  |  |             lower = true;
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |         if (!StringUtils.isEmpty(value7) && value7.compareTo(ETLConstantData.HEALTH_STANDARD_ST_MAX_BEFORE) > 0) {
 | 
	
		
			
				|  |  |             higher = true;
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         if (higher) {
 | 
	
		
			
				|  |  |             UserPortrait labelInfo = new UserPortrait();
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |             labelInfo.setUserCode(log.getString("patient"));
 | 
	
		
			
				|  |  |             labelInfo.setCategory("1002");
 | 
	
		
			
				|  |  |             labelInfo.setSubCategory("1002002");
 | 
	
		
			
				|  |  |             labelInfo.setValue("血糖偏高");
 | 
	
		
			
				|  |  |             labelInfo.setCzrq(new Date());
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |             portraits.add(labelInfo);
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         if (lower) {
 | 
	
		
			
				|  |  |             UserPortrait labelInfo = new UserPortrait();
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |             labelInfo.setUserCode(log.getString("patient"));
 | 
	
		
			
				|  |  |             labelInfo.setCategory("1002");
 | 
	
		
			
				|  |  |             labelInfo.setSubCategory("1002002");
 | 
	
		
			
				|  |  |             labelInfo.setValue("血糖偏低");
 | 
	
		
			
				|  |  |             labelInfo.setCzrq(new Date());
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |             portraits.add(labelInfo);
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         return portraits;
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     /**
 | 
	
		
			
				|  |  |      * 血压分析
 | 
	
		
			
				|  |  |      *
 | 
	
		
			
				|  |  |      * @param log
 | 
	
		
			
				|  |  |      * @return
 | 
	
		
			
				|  |  |      */
 | 
	
		
			
				|  |  |     public List<UserPortrait> transformXueYa(JSONObject log) {
 | 
	
		
			
				|  |  |         List<UserPortrait> portraits = new ArrayList<>();
 | 
	
		
			
				|  |  |         boolean higher = false, lower = false;
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         // 收缩压
 | 
	
		
			
				|  |  |         String value1 = log.has("value1") ? log.get("value1").toString() : "";
 | 
	
		
			
				|  |  |         // 舒张压
 | 
	
		
			
				|  |  |         String value2 = log.has("value2") ? log.get("value2").toString() : "";
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         if (value1.compareTo(ETLConstantData.HEALTH_STANDARD_SSY_MIN) < 0) {
 | 
	
		
			
				|  |  |             lower = true;
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |         if (value1.compareTo(ETLConstantData.HEALTH_STANDARD_SSY_MAX) > 0) {
 | 
	
		
			
				|  |  |             higher = true;
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |         if (value2.compareTo(ETLConstantData.HEALTH_STANDARD_SSY_MIN) < 0) {
 | 
	
		
			
				|  |  |             lower = true;
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |         if (value2.compareTo(ETLConstantData.HEALTH_STANDARD_SSY_MIN) > 0) {
 | 
	
		
			
				|  |  |             higher = true;
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         if (higher) {
 | 
	
		
			
				|  |  |             UserPortrait labelInfo = new UserPortrait();
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |             labelInfo.setUserCode(log.getString("patient"));
 | 
	
		
			
				|  |  |             labelInfo.setCategory("1002");
 | 
	
		
			
				|  |  |             labelInfo.setSubCategory("1002003");
 | 
	
		
			
				|  |  |             labelInfo.setValue("血压偏高");
 | 
	
		
			
				|  |  |             labelInfo.setCzrq(new Date());
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |             portraits.add(labelInfo);
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         if (lower) {
 | 
	
		
			
				|  |  |             UserPortrait labelInfo = new UserPortrait();
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |             labelInfo.setUserCode(log.getString("patient"));
 | 
	
		
			
				|  |  |             labelInfo.setCategory("1002");
 | 
	
		
			
				|  |  |             labelInfo.setSubCategory("1002003");
 | 
	
		
			
				|  |  |             labelInfo.setValue("血压偏低");
 | 
	
		
			
				|  |  |             labelInfo.setCzrq(new Date());
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |             portraits.add(labelInfo);
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         return portraits;
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | }
 |