|  | @ -3,24 +3,19 @@ package com.yihu.iot.datainput.controller;
 | 
												
													
														
															|  | import com.alibaba.fastjson.JSONArray;
 |  | import com.alibaba.fastjson.JSONArray;
 | 
												
													
														
															|  | import com.alibaba.fastjson.JSONObject;
 |  | import com.alibaba.fastjson.JSONObject;
 | 
												
													
														
															|  | import com.fasterxml.jackson.databind.ObjectMapper;
 |  | import com.fasterxml.jackson.databind.ObjectMapper;
 | 
												
													
														
															|  | 
 |  | import com.yihu.iot.datainput.dao.IotDeviceBaiyiDao;
 | 
												
													
														
															|  | import com.yihu.iot.datainput.service.DataInputService;
 |  | import com.yihu.iot.datainput.service.DataInputService;
 | 
												
													
														
															|  | import com.yihu.iot.datainput.util.ConstantUtils;
 |  | 
 | 
												
													
														
															|  | 
 |  | import com.yihu.jw.entity.iot.device.IotDeviceBaiyiDO;
 | 
												
													
														
															|  | import com.yihu.jw.restmodel.web.Envelop;
 |  | import com.yihu.jw.restmodel.web.Envelop;
 | 
												
													
														
															|  | import com.yihu.jw.restmodel.web.endpoint.EnvelopRestEndpoint;
 |  | import com.yihu.jw.restmodel.web.endpoint.EnvelopRestEndpoint;
 | 
												
													
														
															|  | import com.yihu.jw.util.date.DateUtil;
 |  | 
 | 
												
													
														
															|  | import io.swagger.annotations.Api;
 |  | import io.swagger.annotations.Api;
 | 
												
													
														
															|  | import io.swagger.annotations.ApiOperation;
 |  | import io.swagger.annotations.ApiOperation;
 | 
												
													
														
															|  | import io.swagger.annotations.ApiParam;
 |  | import io.swagger.annotations.ApiParam;
 | 
												
													
														
															|  | import org.apache.commons.lang3.StringUtils;
 |  | 
 | 
												
													
														
															|  | import org.apache.http.client.utils.DateUtils;
 |  | 
 | 
												
													
														
															|  | import org.slf4j.Logger;
 |  | import org.slf4j.Logger;
 | 
												
													
														
															|  | import org.slf4j.LoggerFactory;
 |  | import org.slf4j.LoggerFactory;
 | 
												
													
														
															|  | import org.springframework.beans.factory.annotation.Autowired;
 |  | import org.springframework.beans.factory.annotation.Autowired;
 | 
												
													
														
															|  | import org.springframework.http.MediaType;
 |  | import org.springframework.http.MediaType;
 | 
												
													
														
															|  | import org.springframework.web.bind.annotation.PostMapping;
 |  | 
 | 
												
													
														
															|  | import org.springframework.web.bind.annotation.RequestBody;
 |  | 
 | 
												
													
														
															|  | import org.springframework.web.bind.annotation.RequestMapping;
 |  | 
 | 
												
													
														
															|  | import org.springframework.web.bind.annotation.RestController;
 |  | 
 | 
												
													
														
															|  | 
 |  | import org.springframework.web.bind.annotation.*;
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  | import java.text.SimpleDateFormat;
 |  | import java.text.SimpleDateFormat;
 | 
												
													
														
															|  | import java.util.Date;
 |  | import java.util.Date;
 | 
												
											
												
													
														
															|  | @ -43,6 +38,8 @@ public class IotAnalyzerController extends EnvelopRestEndpoint {
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |     @Autowired
 |  |     @Autowired
 | 
												
													
														
															|  |     ObjectMapper objectMapper;
 |  |     ObjectMapper objectMapper;
 | 
												
													
														
															|  | 
 |  |     @Autowired
 | 
												
													
														
															|  | 
 |  |     private IotDeviceBaiyiDao iotDeviceBaiyiDao;
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |     /**
 |  |     /**
 | 
												
													
														
															|  |      * 基于奕拓小屋上传的体征数据,进行解析入库
 |  |      * 基于奕拓小屋上传的体征数据,进行解析入库
 | 
												
											
												
													
														
															|  | @ -160,4 +157,145 @@ public class IotAnalyzerController extends EnvelopRestEndpoint {
 | 
												
													
														
															|  |             return strResult;
 |  |             return strResult;
 | 
												
													
														
															|  |         }
 |  |         }
 | 
												
													
														
															|  |     }
 |  |     }
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  | 
 |  |     @PostMapping(value = "/heartRate" /*,consumes = MediaType.APPLICATION_OCTET_STREAM_VALUE*/)
 | 
												
													
														
															|  | 
 |  |     @ApiOperation(value = "柏颐心率数据接收", notes = "柏颐心率数据接收")
 | 
												
													
														
															|  | 
 |  |     public String heartRate(
 | 
												
													
														
															|  | 
 |  |             @ApiParam(name = "imei", value = "15位设备唯一序号")
 | 
												
													
														
															|  | 
 |  |             @RequestParam(value = "imei",required = true)String imei,
 | 
												
													
														
															|  | 
 |  |             @ApiParam(name = "time_begin", value = "发生时间YYYY-MM-DD HH:mm:SS")
 | 
												
													
														
															|  | 
 |  |             @RequestParam(value = "time_begin",required = true)String time_begin,
 | 
												
													
														
															|  | 
 |  |             @ApiParam(name = "heartrate", value = "心率")
 | 
												
													
														
															|  | 
 |  |             @RequestParam(value = "heartrate",required = true)int heartrate,
 | 
												
													
														
															|  | 
 |  |             @ApiParam(name = "theshold_heartrate_h", value = "心率阈值上限")
 | 
												
													
														
															|  | 
 |  |             @RequestParam(value = "theshold_heartrate_h",required = true)int theshold_heartrate_h,
 | 
												
													
														
															|  | 
 |  |             @ApiParam(name = "theshold_heartrate_l", value = "心率阈值下限")
 | 
												
													
														
															|  | 
 |  |             @RequestParam(value = "theshold_heartrate_l",required = true)int theshold_heartrate_l) throws Exception{
 | 
												
													
														
															|  | 
 |  |         String strResult = "";
 | 
												
													
														
															|  | 
 |  |         Map res = new HashMap();
 | 
												
													
														
															|  | 
 |  |         IotDeviceBaiyiDO iotDeviceBaiyiDO=new IotDeviceBaiyiDO();
 | 
												
													
														
															|  | 
 |  |         iotDeviceBaiyiDO.setImei(imei);
 | 
												
													
														
															|  | 
 |  |         iotDeviceBaiyiDO.setType(5);
 | 
												
													
														
															|  | 
 |  |         iotDeviceBaiyiDO.setTimeBegin(time_begin);
 | 
												
													
														
															|  | 
 |  |         iotDeviceBaiyiDO.setValue1(heartrate);
 | 
												
													
														
															|  | 
 |  |         iotDeviceBaiyiDO.setValue2(theshold_heartrate_h);
 | 
												
													
														
															|  | 
 |  |         iotDeviceBaiyiDO.setValue3(theshold_heartrate_l);
 | 
												
													
														
															|  | 
 |  |         iotDeviceBaiyiDao.save(iotDeviceBaiyiDO);
 | 
												
													
														
															|  | 
 |  |         try {
 | 
												
													
														
															|  | 
 |  |             String info  = "imei="+imei+";time_begin="+time_begin+";heartrate="+heartrate+";theshold_heartrate_h="+theshold_heartrate_h+";theshold_heartrate_l="+theshold_heartrate_l;
 | 
												
													
														
															|  | 
 |  |             logger.info("info="+info);
 | 
												
													
														
															|  | 
 |  |             return BaiyiDataParam(iotDeviceBaiyiDO);
 | 
												
													
														
															|  | 
 |  |         } catch (Exception e) {
 | 
												
													
														
															|  | 
 |  |             e.printStackTrace();
 | 
												
													
														
															|  | 
 |  |             res.put("statusCode", "03");
 | 
												
													
														
															|  | 
 |  |             res.put("desc", "服务异常,体征信息上传失败。");
 | 
												
													
														
															|  | 
 |  |             strResult = objectMapper.writeValueAsString(res);
 | 
												
													
														
															|  | 
 |  |             logger.error(strResult);
 | 
												
													
														
															|  | 
 |  |             return strResult;
 | 
												
													
														
															|  | 
 |  |         }
 | 
												
													
														
															|  | 
 |  |     }
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  | 
 |  |     @PostMapping(value = "/bloodPressure" /*,consumes = MediaType.APPLICATION_OCTET_STREAM_VALUE*/)
 | 
												
													
														
															|  | 
 |  |     @ApiOperation(value = "柏颐血压数据接收", notes = "柏颐血压数据接收")
 | 
												
													
														
															|  | 
 |  |     public String bloodPressure(
 | 
												
													
														
															|  | 
 |  |             @ApiParam(name = "imei", value = "15位设备唯一序号", required = true)
 | 
												
													
														
															|  | 
 |  |             @RequestParam(value = "imei",required = true)String imei,
 | 
												
													
														
															|  | 
 |  |             @ApiParam(name = "time_begin", value = "发生时间YYYY-MM-DD HH:mm:SS", required = true)
 | 
												
													
														
															|  | 
 |  |             @RequestParam(value = "time_begin",required = true)String time_begin,
 | 
												
													
														
															|  | 
 |  |             @ApiParam(name = "dbp", value = "舒张压", required = true)
 | 
												
													
														
															|  | 
 |  |             @RequestParam(value = "dbp",required = true)int dbp,
 | 
												
													
														
															|  | 
 |  |             @ApiParam(name = "dbp_l", value = "舒张压报警下限", required = true)
 | 
												
													
														
															|  | 
 |  |             @RequestParam(value = "dbp_l",required = true)int dbp_l,
 | 
												
													
														
															|  | 
 |  |             @ApiParam(name = "sbp", value = "收缩压", required = true)
 | 
												
													
														
															|  | 
 |  |             @RequestParam(value = "sbp",required = true)int sbp,
 | 
												
													
														
															|  | 
 |  |             @ApiParam(name = "sbp_h", value = "收缩压报警上限", required = true)
 | 
												
													
														
															|  | 
 |  |             @RequestParam(value = "sbp_h",required = true)int sbp_h) throws Exception{
 | 
												
													
														
															|  | 
 |  |         String strResult = "";
 | 
												
													
														
															|  | 
 |  |         Map res = new HashMap();
 | 
												
													
														
															|  | 
 |  |         IotDeviceBaiyiDO iotDeviceBaiyiDO=new IotDeviceBaiyiDO();
 | 
												
													
														
															|  | 
 |  |         iotDeviceBaiyiDO.setImei(imei);
 | 
												
													
														
															|  | 
 |  |         iotDeviceBaiyiDO.setTimeBegin(time_begin);
 | 
												
													
														
															|  | 
 |  |         iotDeviceBaiyiDO.setType(1);
 | 
												
													
														
															|  | 
 |  |         iotDeviceBaiyiDO.setValue1(dbp);
 | 
												
													
														
															|  | 
 |  |         iotDeviceBaiyiDO.setValue2(dbp_l);
 | 
												
													
														
															|  | 
 |  |         iotDeviceBaiyiDO.setValue3(sbp);
 | 
												
													
														
															|  | 
 |  |         iotDeviceBaiyiDO.setValue4(sbp_h);
 | 
												
													
														
															|  | 
 |  |         iotDeviceBaiyiDao.save(iotDeviceBaiyiDO);
 | 
												
													
														
															|  | 
 |  |         try {
 | 
												
													
														
															|  | 
 |  |             String info= "imei="+imei+";time_begin="+time_begin+";dbp="+dbp+";dbp_l="+dbp_l+";sbp="+sbp+";sbp_h="+sbp_h;
 | 
												
													
														
															|  | 
 |  |             logger.info("info="+info);
 | 
												
													
														
															|  | 
 |  |             return BaiyiDataParam(iotDeviceBaiyiDO);
 | 
												
													
														
															|  | 
 |  |         } catch (Exception e) {
 | 
												
													
														
															|  | 
 |  |             e.printStackTrace();
 | 
												
													
														
															|  | 
 |  |             res.put("statusCode", "03");
 | 
												
													
														
															|  | 
 |  |             res.put("desc", "服务异常,体征信息上传失败。");
 | 
												
													
														
															|  | 
 |  |             strResult = objectMapper.writeValueAsString(res);
 | 
												
													
														
															|  | 
 |  |             logger.error(strResult);
 | 
												
													
														
															|  | 
 |  |             return strResult;
 | 
												
													
														
															|  | 
 |  |         }
 | 
												
													
														
															|  | 
 |  |     }
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  | 
 |  |     /**
 | 
												
													
														
															|  | 
 |  |      * 封装数据上传至i健康
 | 
												
													
														
															|  | 
 |  |      * @param iotDeviceBaiyiDO 设备数据实体
 | 
												
													
														
															|  | 
 |  |      * @return
 | 
												
													
														
															|  | 
 |  |      * @throws Exception
 | 
												
													
														
															|  | 
 |  |      */
 | 
												
													
														
															|  | 
 |  |     public String BaiyiDataParam(IotDeviceBaiyiDO iotDeviceBaiyiDO)throws Exception {
 | 
												
													
														
															|  | 
 |  |         JSONArray jsonArray = new JSONArray();
 | 
												
													
														
															|  | 
 |  |         JSONObject params = new JSONObject();
 | 
												
													
														
															|  | 
 |  |         JSONObject data = new JSONObject();
 | 
												
													
														
															|  | 
 |  |         Map res = new HashMap();
 | 
												
													
														
															|  | 
 |  |         // 增加判断,当测量值小于1时,定义为异常值,不进行数据的存储。
 | 
												
													
														
															|  | 
 |  |         if (iotDeviceBaiyiDO.getValue1() < 1) {
 | 
												
													
														
															|  | 
 |  |             res.put("statusCode", "00");
 | 
												
													
														
															|  | 
 |  |             res.put("desc", iotDeviceBaiyiDO.getImei() + "体征数据异常(小于正常值)。");
 | 
												
													
														
															|  | 
 |  |             return objectMapper.writeValueAsString(res);
 | 
												
													
														
															|  | 
 |  |         } else {
 | 
												
													
														
															|  | 
 |  |             if (1 == iotDeviceBaiyiDO.getType()) {
 | 
												
													
														
															|  | 
 |  |                 //血压测量数据
 | 
												
													
														
															|  | 
 |  |                 data.put("data", iotDeviceBaiyiDO.getValue1() + "," + iotDeviceBaiyiDO.getValue3());
 | 
												
													
														
															|  | 
 |  |                 //单位
 | 
												
													
														
															|  | 
 |  |                 data.put("unit", "mmHg");
 | 
												
													
														
															|  | 
 |  |             } else {
 | 
												
													
														
															|  | 
 |  |                 //心率测量数据
 | 
												
													
														
															|  | 
 |  |                 data.put("data", iotDeviceBaiyiDO.getValue1());
 | 
												
													
														
															|  | 
 |  |                 //单位
 | 
												
													
														
															|  | 
 |  |                 data.put("unit", "bpm");
 | 
												
													
														
															|  | 
 |  |             }
 | 
												
													
														
															|  | 
 |  |         }
 | 
												
													
														
															|  | 
 |  |         //按键号
 | 
												
													
														
															|  | 
 |  |         data.put("button", "-1");
 | 
												
													
														
															|  | 
 |  |         //设备唯一码
 | 
												
													
														
															|  | 
 |  |         data.put("deviceSn", iotDeviceBaiyiDO.getImei());
 | 
												
													
														
															|  | 
 |  |         //设备类型1:血压 5:心率
 | 
												
													
														
															|  | 
 |  |         data.put("deviceType", "4");
 | 
												
													
														
															|  | 
 |  |         //厂商代码
 | 
												
													
														
															|  | 
 |  |         data.put("manufacturerCode", "baiyi");
 | 
												
													
														
															|  | 
 |  |         //厂商名称
 | 
												
													
														
															|  | 
 |  |         data.put("manufacturerName", "柏颐设备");
 | 
												
													
														
															|  | 
 |  |         //发送时间yyyy-MM-dd HH:mm:ss
 | 
												
													
														
															|  | 
 |  |         data.put("sendTime", iotDeviceBaiyiDO.getTimeBegin());
 | 
												
													
														
															|  | 
 |  |         data.put("state", 0);
 | 
												
													
														
															|  | 
 |  |         //单位mmol/L,mmHg
 | 
												
													
														
															|  | 
 |  |         data.put("unit", "");
 | 
												
													
														
															|  | 
 |  |         //体征上传时间yyyy-MM-dd HH:mm:ss
 | 
												
													
														
															|  | 
 |  |         data.put("uploadTime", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
 | 
												
													
														
															|  | 
 |  |         jsonArray.add(data);
 | 
												
													
														
															|  | 
 |  |         params.put("data", jsonArray);
 | 
												
													
														
															|  | 
 |  |         //体征信息上传成功后,同步到厦门I健康
 | 
												
													
														
															|  | 
 |  |         data.put("id", "");
 | 
												
													
														
															|  | 
 |  |         boolean synFlag = dataInputService.synXMIjk(data);
 | 
												
													
														
															|  | 
 |  |         if (synFlag) {
 | 
												
													
														
															|  | 
 |  |             res.put("statusCode", "00");
 | 
												
													
														
															|  | 
 |  |             res.put("desc", iotDeviceBaiyiDO.getImei() + "体征信息上传厦门I健康成功。");
 | 
												
													
														
															|  | 
 |  |         } else {
 | 
												
													
														
															|  | 
 |  |             res.put("statusCode", "02");
 | 
												
													
														
															|  | 
 |  |             res.put("desc", iotDeviceBaiyiDO.getImei() + "体征信息上传厦门I健康失败。");
 | 
												
													
														
															|  | 
 |  |         }
 | 
												
													
														
															|  | 
 |  |         String strResult = objectMapper.writeValueAsString(res);
 | 
												
													
														
															|  | 
 |  |         logger.info(strResult);
 | 
												
													
														
															|  | 
 |  |         return strResult;
 | 
												
													
														
															|  | 
 |  |     }
 | 
												
													
														
															|  | }
 |  | }
 |