| 
					
				 | 
			
			
				@ -1,6 +1,9 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				package com.yihu.iot.service.analyzer; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.alibaba.fastjson.JSONArray; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.alibaba.fastjson.JSONObject; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.fasterxml.jackson.databind.ObjectMapper; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.iot.datainput.service.DataInputService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.mysql.query.BaseJpaService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.slf4j.Logger; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.slf4j.LoggerFactory; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -20,10 +23,12 @@ public class IotAnalyzerService extends BaseJpaService<WlyyIotD, WlyyIotDDao> { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private WlyyIotDDao wlyyIotDDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private DataInputService dataInputService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private WlyyIotMDao wlyyIotMDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private String dataSource = "yituoHouse"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private String accessToken = "yituoHouse"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    ObjectMapper objectMapper; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -80,9 +85,190 @@ public class IotAnalyzerService extends BaseJpaService<WlyyIotD, WlyyIotDDao> { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        //存es start 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        try{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            JSONObject json = new JSONObject(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            json.put("sn", wlyyIotM.getSn()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            JSONObject ext_code = new JSONObject(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            ext_code.put("UnitNo",wlyyIotM.getUnitNo()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            ext_code.put("UnitName",wlyyIotM.getUnitName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            ext_code.put("DoctorId",wlyyIotM.getDoctorId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            ext_code.put("DoctorName",wlyyIotM.getDoctorName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            ext_code.put("RecordNo",wlyyIotM.getRecordNo()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            ext_code.put("MacAddr",wlyyIotM.getMacAddr()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            json.put("ext_code",ext_code.toJSONString()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            json.put("device_name",wlyyIotM.getDeviceName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            json.put("device_model",wlyyIotM.getDeviceModel()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            json.put("idcard",wlyyIotM.getIdCardNo()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            json.put("username",wlyyIotM.getUserName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            json.put("access_token",accessToken); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            json.put("data_source",dataSource); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            for (Map.Entry entry : dataDetail.entrySet()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                String code = entry.getKey().toString(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                if("Member".equals(code) || "Member".equals(code) ){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    continue; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                if("Height".equals(code) || "Fat".equals(code)|| "MinFat".equals(code)|| "BloodPressure".equals(code)|| "Bo".equals(code) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        || "Ecg".equals(code)|| "PEEcg".equals(code)|| "Temperature".equals(code)|| "Whr".equals(code)|| "BloodSugar".equals(code) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        || "Ua".equals(code)|| "Chol".equals(code)|| "BloodFat".equals(code)|| "Cardiovascular".equals(code)|| "BMD".equals(code) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        || "Alcohol".equals(code)|| "Lung".equals(code)|| "Hb".equals(code)|| "Urinalysis".equals(code)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    LinkedHashMap valueMap = (LinkedHashMap)entry.getValue(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    JSONArray jsonArray = new JSONArray(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    JSONObject js = new JSONObject(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    js.put("measure_time",code);//测量时间 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    js.put("del",1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    js.put("status","0"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    js.put("type",code); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    analyzerMap(valueMap,js,code); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    jsonArray.add(js); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    json.put("data",jsonArray); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    dataInputService.inputBodySignsData(json.toJSONString()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        }catch (Exception e){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            e.printStackTrace(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        //end 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private String transfor(Object o){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return o == null?"":o.toString(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public void analyzerMap(Map<String,Object> mapInfo,JSONObject js,String type)throws Exception{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        int i = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        for(Object o: mapInfo.values()){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            String value = o == null?"":o.toString(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if("".equals(value) || "0".equals(value) || "null".equals(value) || value == null ){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                continue; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            }else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                i++; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if(i>0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            //只有数据都不为空才保存es 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            switch (type){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                case "Height": 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    js.put("value1",transfor(mapInfo.get("Height"))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    js.put("value2",transfor(mapInfo.get("Weight"))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    js.put("value3",transfor(mapInfo.get("BMI"))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    js.put("value4",transfor(mapInfo.get("IdealWeight"))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    js.put("value5",transfor(mapInfo.get("Result"))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                case "MinFat": 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    js.put("value1",transfor(mapInfo.get("Height"))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    js.put("value2",transfor(mapInfo.get("Weight"))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    js.put("value3",transfor(mapInfo.get("FatRate"))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    js.put("value4",transfor(mapInfo.get("BasicMetabolism"))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    js.put("value5",transfor(mapInfo.get("Bmi"))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    js.put("value6",transfor(mapInfo.get("Physique"))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    js.put("value7",transfor(mapInfo.get("Shape"))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    js.put("value8",transfor(mapInfo.get("Result"))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                case "BloodPressure": 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    js.put("value1",transfor(mapInfo.get("HighPressure"))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    js.put("value2",transfor(mapInfo.get("LowPressure"))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    js.put("value3",transfor(mapInfo.get("Pulse"))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    js.put("value4",transfor(mapInfo.get("Result"))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                case "Bo": 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    //血氧 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    js.put("value1",transfor(mapInfo.get("Oxygen"))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    js.put("value2",transfor(mapInfo.get("OxygenList"))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    js.put("value3",transfor(mapInfo.get("Bpm"))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    js.put("value4",transfor(mapInfo.get("BpmList"))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    js.put("value5",transfor(mapInfo.get("Result"))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    js.put("value6",transfor(mapInfo.get("StartTime"))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    js.put("value7",transfor(mapInfo.get("EndTime"))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    js.put("value8",transfor(mapInfo.get("SecondCount"))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                case "Ecg": 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    //单导心电 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    js.put("value1",transfor(mapInfo.get("Hr"))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    js.put("value2",transfor(mapInfo.get("EcgData"))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    js.put("value3",transfor(mapInfo.get("nGain"))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    js.put("value4",transfor(mapInfo.get("Result"))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    js.put("value5",transfor(mapInfo.get("Analysis"))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                case "Temperature": 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    js.put("value1",transfor(mapInfo.get("Temperature"))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    js.put("value2",transfor(mapInfo.get("Result"))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                case "Whr": 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    //腰臀比 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    js.put("value1",transfor(mapInfo.get("Waistline"))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    js.put("value2",transfor(mapInfo.get("Hipline"))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    js.put("value3",transfor(mapInfo.get("Whr"))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    js.put("value4",transfor(mapInfo.get("Result"))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                case "BloodSugar": 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    js.put("value1",transfor(mapInfo.get("BloodSugar"))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    js.put("value2",transfor(mapInfo.get("BloodsugarType"))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    js.put("value3",transfor(mapInfo.get("Result"))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                case "Ua": 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    //血尿酸 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    js.put("value1",transfor(mapInfo.get("Ua"))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    js.put("value2",transfor(mapInfo.get("Result"))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                case "BloodFat": 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    //血脂 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    js.put("value1",transfor(mapInfo.get("TChol"))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    js.put("value2",transfor(mapInfo.get("HdlChol"))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    js.put("value3",transfor(mapInfo.get("Trig"))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    js.put("value4",transfor(mapInfo.get("TcHdl"))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    js.put("value5",transfor(mapInfo.get("CalcLdl"))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    js.put("value6",transfor(mapInfo.get("Result"))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                case "Alcohol": 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    //酒精浓度 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    js.put("value1",transfor(mapInfo.get("Alcohol"))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    js.put("value2",transfor(mapInfo.get("Result"))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    js.put("value3",transfor(mapInfo.get("AlcoholImg"))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    js.put("value4",transfor(mapInfo.get("errcode"))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    js.put("value5",transfor(mapInfo.get("errinfo"))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                case "Lung": 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    //肺活量 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    js.put("value1",transfor(mapInfo.get("Lung"))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    js.put("value2",transfor(mapInfo.get("FVC"))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    js.put("value3",transfor(mapInfo.get("FEV1"))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    js.put("value4",transfor(mapInfo.get("PEF"))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    js.put("value5",transfor(mapInfo.get("FEF25"))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    js.put("value6",transfor(mapInfo.get("FEF75"))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    js.put("value7",transfor(mapInfo.get("FEF2575"))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    js.put("value8",transfor(mapInfo.get("Result"))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                case "Hb": 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    //血红蛋白 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    js.put("value1",transfor(mapInfo.get("Hb"))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    js.put("value2",transfor(mapInfo.get("Hct"))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    js.put("value3",transfor(mapInfo.get("Result"))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                case "BMD": 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    //骨密度 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                case "PEEcg": 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    //12导心电 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                case "Urinalysis": 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    //尿液分析 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                case "Fat": 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    //脂肪 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                case "Cardiovascular": 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				              //心血管功能 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    js.put("value1",JSONObject.toJSONString(mapInfo)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 单项细表数据存储,因为体征数据上传,不管怎么样都返回成功,若数据未上传则直接查看LOG日志 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param mapInfo 
			 |