Bläddra i källkod

三诺体征设备数据上传服务开发

hill9868 6 år sedan
förälder
incheckning
11bee9e44f
21 ändrade filer med 79 tillägg och 68 borttagningar
  1. 2 2
      svr/svr-iot-sunruo/pom.xml
  2. 0 0
      svr/svr-iot-sunnuo/readme.MD
  3. 0 0
      svr/svr-iot-sunnuo/src/main/java/com/yihu/IOTApplication.java
  4. 50 41
      svr/svr-iot-sunruo/src/main/java/com/yihu/iot/datainput/controller/IotAnalyzerController.java
  5. 0 0
      svr/svr-iot-sunnuo/src/main/java/com/yihu/iot/datainput/dao/DataProcessLogDao.java
  6. 0 0
      svr/svr-iot-sunnuo/src/main/java/com/yihu/iot/datainput/enums/DataDeviceTypeEnum.java
  7. 0 0
      svr/svr-iot-sunnuo/src/main/java/com/yihu/iot/datainput/enums/DataOperationTypeEnum.java
  8. 0 0
      svr/svr-iot-sunnuo/src/main/java/com/yihu/iot/datainput/enums/DataTypeEnum.java
  9. 7 5
      svr/svr-iot-sunruo/src/main/java/com/yihu/iot/datainput/service/DataInputService.java
  10. 0 0
      svr/svr-iot-sunnuo/src/main/java/com/yihu/iot/datainput/service/DataProcessLogService.java
  11. 18 0
      svr/svr-iot-sunnuo/src/main/java/com/yihu/iot/datainput/util/ConstantUtils.java
  12. 0 0
      svr/svr-iot-sunnuo/src/main/java/com/yihu/iot/datainput/util/HttpClientUtil.java
  13. 0 0
      svr/svr-iot-sunnuo/src/main/java/com/yihu/iot/datainput/util/RowKeyUtils.java
  14. 0 0
      svr/svr-iot-sunnuo/src/main/java/com/yihu/iot/service/common/ElasticSearchQueryGenerator.java
  15. 0 0
      svr/svr-iot-sunnuo/src/main/java/com/yihu/iot/service/common/MyJdbcTemplate.java
  16. 1 1
      svr/svr-iot-sunruo/src/main/resources/application.yml
  17. 0 0
      svr/svr-iot-sunnuo/src/main/resources/banner.txt
  18. 1 1
      svr/svr-iot-sunruo/src/main/resources/bootstrap.yml
  19. 0 0
      svr/svr-iot-sunnuo/src/main/resources/core-site.xml
  20. 0 0
      svr/svr-iot-sunnuo/src/main/resources/hbase-site.xml
  21. 0 18
      svr/svr-iot-sunruo/src/main/java/com/yihu/iot/datainput/util/ConstantUtils.java

+ 2 - 2
svr/svr-iot-sunruo/pom.xml

@ -11,7 +11,7 @@
    </parent>
    <groupId>com.yihu.iot</groupId>
    <artifactId>svr-iot-sr</artifactId>
    <artifactId>svr-iot-sn</artifactId>
    <version>${parent.version}</version>
    <packaging>war</packaging>
@ -107,7 +107,7 @@
    </dependencies>
    <build>
        <finalName>svr-iot-sr</finalName>
        <finalName>svr-iot-sn</finalName>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>

svr/svr-iot-sunruo/readme.MD → svr/svr-iot-sunnuo/readme.MD


svr/svr-iot-sunruo/src/main/java/com/yihu/IOTApplication.java → svr/svr-iot-sunnuo/src/main/java/com/yihu/IOTApplication.java


+ 50 - 41
svr/svr-iot-sunruo/src/main/java/com/yihu/iot/datainput/controller/IotAnalyzerController.java

@ -13,6 +13,8 @@ import io.swagger.annotations.ApiOperation;
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.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.PostMapping;
@ -20,6 +22,7 @@ import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.LinkedHashMap;
@ -29,10 +32,12 @@ import java.util.Map;
 * @author cws on 2018/1/16.
 */
@RestController
@RequestMapping("svr-iot-sr/analyze" )
@RequestMapping("svr-iot-sn/analyze" )
@Api(tags = "设备数据解析入库", description = "三诺设备的采集数据上传,并同步到I健康。")
public class IotAnalyzerController extends EnvelopRestEndpoint {
    private Logger logger = LoggerFactory.getLogger(DataInputService.class);
    @Autowired
    private DataInputService dataInputService;
@ -44,88 +49,92 @@ public class IotAnalyzerController extends EnvelopRestEndpoint {
     * @param jsonData
     * @return
     */
    @PostMapping(value = "/sanruo" ,consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
    @ApiOperation(value = "三诺体征数据解析入库", notes = "三诺体征数据解析入库")
    @PostMapping(value = "/sannuo" ,consumes = MediaType.APPLICATION_OCTET_STREAM_VALUE)
    @ApiOperation(value = "三诺血糖仪数据解析入库(单条)", notes = "三诺体征数据解析入库")
    public String updateSanruoDate(
            @ApiParam(name = "json_data", value = "Json数据", required = true)
            @RequestBody String jsonData) throws Exception{
        Envelop envelop = new Envelop();
        String str = "";
        String strResult = "";
        String accessToken  = "sanruo";
        String accessToken  = "sannuo";
        try {
            Map info = new HashMap();
            //JSON数据解析
            Map dataDetail = objectMapper.readValue(jsonData, HashMap.class);
            JSONArray jsonArray = new JSONArray();
            JSONObject params = new JSONObject();
            // 体征数据 - 明细
            LinkedHashMap msgdataMap = (LinkedHashMap)dataDetail.get("msgdata");
            if(msgdataMap != null){
                info = msgdataMap;
            }else{
                info = dataDetail;
            }
            JSONObject data = new JSONObject();
            data.put("deviceType","2");
            data.put("code",msgdataMap.get("code") == null? "":msgdataMap.get("code").toString());
            data.put("deviceSn",msgdataMap.get("devicesn") == null? "":msgdataMap.get("devicesn").toString());
            data.put("userCode",msgdataMap.get("usercode") == null? "":msgdataMap.get("usercode").toString());
            data.put("openId",msgdataMap.get("openid") == null? "":msgdataMap.get("openid").toString());
            data.put("data",msgdataMap.get("result") == null? "":msgdataMap.get("result").toString());
            data.put("unit",msgdataMap.get("unit") == null? "":msgdataMap.get("unit").toString());
            data.put("sendTime",msgdataMap.get("testtime") == null? "":msgdataMap.get("testtime").toString());
            data.put("code",info.get("code") == null? "":info.get("code").toString());
            data.put("deviceSn",info.get("devicesn") == null? "":info.get("devicesn").toString());
            data.put("userCode",info.get("usercode") == null? "":info.get("usercode").toString());
            data.put("openId",info.get("openid") == null? "":info.get("openid").toString());
            data.put("data",info.get("result") == null? "":info.get("result").toString());
            data.put("unit",info.get("unit") == null? "":info.get("unit").toString());
            data.put("sendTime",info.get("testtime") == null? "":info.get("testtime").toString());
            //血糖测试时间段标志位(0餐前 1餐后 2随机)
            data.put("foodStatus",msgdataMap.get("foodstatus") == null? "":msgdataMap.get("foodstatus").toString());
            data.put("foodStatus",info.get("foodstatus") == null? "":info.get("foodstatus").toString());
            data.put("deviceType",2);
            data.put("manufacturerCode","threeNod");
            data.put("manufacturerName","三诺设备");
            data.put("uploadTime", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
            data.put("button","1");
            data.put("state",0);
            jsonArray.add(data);
            params.put("data", jsonArray);
            params.put("accessToken","sanruo");
            params.put("measure_time",msgdataMap.get("testtime") == null? "":msgdataMap.get("testtime").toString());
            params.put("sn",msgdataMap.get("devicesn") == null? "":msgdataMap.get("devicesn").toString());
            params.put("accessToken","threeNod");
            params.put("measure_time",info.get("testtime") == null? "":info.get("testtime").toString());
            params.put("sn",info.get("devicesn") == null? "":info.get("devicesn").toString());
            str = dataInputService.inputBodySignsData(params.toString(),accessToken);
            JSONObject result = JSONObject.parseObject(str);
            if (StringUtils.endsWithIgnoreCase(ConstantUtils.FAIL,result.getString("response"))) {
                Map res = new HashMap();
                res.put("success", "false");
                res.put("message", result.getString("msg"));
                res.put("statusCode", "03");
                res.put("desc", result.getString("msg"));
                res.put("deviceSn", info.get("devicesn") == null? "":info.get("devicesn").toString());
                strResult = objectMapper.writeValueAsString(res);
            }else {
                Map res = new HashMap();
                res.put("success", "true");
                res.put("message", "体征信息上传成功。");
                res.put("statusCode", "00");
                JSONArray ridRes = new JSONArray();
                ridRes = (JSONArray) result.get("rid");
                String rid = ridRes.get(0).toString();
                res.put("rid", rid);
                res.put("deviceSn", info.get("devicesn") == null? "":info.get("devicesn").toString());
                //体征信息上传成功后,同步到厦门I健康
                JSONObject dataSyn = new JSONObject();
                dataSyn.put("id",rid);
                dataSyn.put("deviceType",2);
                dataSyn.put("deviceSn",msgdataMap.get("devicesn") == null? "":msgdataMap.get("devicesn").toString());
                dataSyn.put("manufacturerCode","threeNod");
                dataSyn.put("manufacturerName","三诺设备");
                dataSyn.put("data",msgdataMap.get("result") == null? "":msgdataMap.get("result").toString());
                dataSyn.put("unit",msgdataMap.get("unit") == null? "":msgdataMap.get("unit").toString());
                dataSyn.put("sendTime",msgdataMap.get("testtime") == null? "":msgdataMap.get("testtime").toString());
                dataSyn.put("uploadTime", DateUtils.formatDate(new Date(), DateUtil.yyyy_MM_dd_HH_mm_ss));
                dataSyn.put("button","1");
                dataSyn.put("state",0);
                boolean synFlag = dataInputService.synXMIjk(dataSyn);
                data.put("id",rid);
                boolean synFlag = dataInputService.synXMIjk(data);
                if(synFlag){
                    res.put("message", "体征信息上传成功,同步到厦门I健康成功。");
                    res.put("desc", "体征信息上传成功,同步到厦门I健康成功。");
                }else {
                    res.put("message", "体征信息上传成功,同步到厦门I健康失败。");
                    res.put("statusCode", "03");
                    res.put("desc", "体征信息上传成功,同步到厦门I健康失败。");
                }
                strResult = objectMapper.writeValueAsString(res);
                logger.info(strResult);
            }
            return strResult;
        } catch (Exception e) {
            e.printStackTrace();
            return "三诺体征信息上传失败!";
            Map res = new HashMap();
            res.put("statusCode", "03");
            res.put("desc", "体征信息上传失败。");
            strResult = objectMapper.writeValueAsString(res);
            logger.error(strResult);
            return strResult;
        }
    }
}

svr/svr-iot-sunruo/src/main/java/com/yihu/iot/datainput/dao/DataProcessLogDao.java → svr/svr-iot-sunnuo/src/main/java/com/yihu/iot/datainput/dao/DataProcessLogDao.java


svr/svr-iot-sunruo/src/main/java/com/yihu/iot/datainput/enums/DataDeviceTypeEnum.java → svr/svr-iot-sunnuo/src/main/java/com/yihu/iot/datainput/enums/DataDeviceTypeEnum.java


svr/svr-iot-sunruo/src/main/java/com/yihu/iot/datainput/enums/DataOperationTypeEnum.java → svr/svr-iot-sunnuo/src/main/java/com/yihu/iot/datainput/enums/DataOperationTypeEnum.java


svr/svr-iot-sunruo/src/main/java/com/yihu/iot/datainput/enums/DataTypeEnum.java → svr/svr-iot-sunnuo/src/main/java/com/yihu/iot/datainput/enums/DataTypeEnum.java


+ 7 - 5
svr/svr-iot-sunruo/src/main/java/com/yihu/iot/datainput/service/DataInputService.java

@ -21,6 +21,7 @@ import org.springframework.stereotype.Component;
import java.io.IOException;
import java.nio.charset.Charset;
import java.text.SimpleDateFormat;
import java.util.*;
@ -55,7 +56,7 @@ public class DataInputService {
     */
    public String inputBodySignsData(String json, String accessToken) throws IOException {
        JSONObject result = new JSONObject();
        result.put("upload_time",DateUtils.formatDate(new Date(), DateUtil.yyyy_MM_dd_HH_mm_ss));
        result.put("upload_time",new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
        if(StringUtils.isEmpty(json)){
            result.put("response",ConstantUtils.FAIL);
            result.put("msg","parameter json is null");
@ -65,11 +66,12 @@ public class DataInputService {
        String fileAbsPath = "";
        String rowkey = "";
        String dataSource = accessToken;
        String extCode = "";;
        String extCode = "1";;
        //解析JSON数据
        JSONObject jsonObject = JSONObject.parseObject(json);
        JSONArray jsonArray = jsonObject.getJSONArray("data");
        if(null == jsonArray || jsonArray.size() == 0){
            result.put("response",ConstantUtils.FAIL);
            result.put("msg","parameter 'data' of json no exist");
@ -79,6 +81,7 @@ public class DataInputService {
        List<String> rowkeyList = new ArrayList<>();
        List<Map<String,Map<String,String>>> familyList = new ArrayList<>();
        int i = 0;
        //循环数据,一组数据存一行,生成一个rowkey,并将该rowkey存到es中
        for(Object obj:jsonArray){
            JSONObject data = (JSONObject)obj;
@ -86,9 +89,8 @@ public class DataInputService {
            try {
                String measuretime = jsonObject.getString("measure_time");
                if(null == measuretime){
                    measuretime = DateUtils.formatDate(new Date(), DateUtil.yyyy_MM_dd_HH_mm_ss);
                    measuretime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
                }
                //生成一份json数据的rowkey
                rowkey = RowKeyUtils.makeRowKey(accessToken,dataSource, extCode, DateUtil.dateTimeParse(measuretime).getTime());
                data.put("rid",rowkey);//hbase的rowkey
@ -122,7 +124,7 @@ public class DataInputService {
            result.put("msg","upload signBodyData to elasticsearch failed," + e.getMessage());
        }
        if(success){
            dataProcessLogService.saveLog(fileName, fileAbsPath, dataSource, "", DateUtils.formatDate(new Date(), DateUtil.yyyy_MM_dd_HH_mm_ss), "1", "4", "com.yihu.iot.datainput.service.DataInputService.uploadData", DataOperationTypeEnum.upload1.getName(), 0);
            dataProcessLogService.saveLog(fileName, fileAbsPath, dataSource, "", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()), "1", "4", "com.yihu.iot.datainput.service.DataInputService.uploadData", DataOperationTypeEnum.upload1.getName(), 0);
            JSONArray rids = new JSONArray();
            rids.addAll(rowkeyList);
            result.put("rid",rids);

svr/svr-iot-sunruo/src/main/java/com/yihu/iot/datainput/service/DataProcessLogService.java → svr/svr-iot-sunnuo/src/main/java/com/yihu/iot/datainput/service/DataProcessLogService.java


+ 18 - 0
svr/svr-iot-sunnuo/src/main/java/com/yihu/iot/datainput/util/ConstantUtils.java

@ -0,0 +1,18 @@
package com.yihu.iot.datainput.util;
public class ConstantUtils {
    //体征数据es索引
    public static String esIndex = "body_health_data_sn";
    //体征数据es类型
    public static String esType = "signs_data_sn";
    //体征数据hbase表名
    public static String tableName = "body_health_data_sn";
    public static String familyA = "column_signs_header_sn";
    public static String familyB = "column_signs_data_sn";
    //数据返回结果标识
    public static final String SUCCESS = "success";
    public static final String FAIL = "fail";
}

svr/svr-iot-sunruo/src/main/java/com/yihu/iot/datainput/util/HttpClientUtil.java → svr/svr-iot-sunnuo/src/main/java/com/yihu/iot/datainput/util/HttpClientUtil.java


svr/svr-iot-sunruo/src/main/java/com/yihu/iot/datainput/util/RowKeyUtils.java → svr/svr-iot-sunnuo/src/main/java/com/yihu/iot/datainput/util/RowKeyUtils.java


svr/svr-iot-sunruo/src/main/java/com/yihu/iot/service/common/ElasticSearchQueryGenerator.java → svr/svr-iot-sunnuo/src/main/java/com/yihu/iot/service/common/ElasticSearchQueryGenerator.java


svr/svr-iot-sunruo/src/main/java/com/yihu/iot/service/common/MyJdbcTemplate.java → svr/svr-iot-sunnuo/src/main/java/com/yihu/iot/service/common/MyJdbcTemplate.java


+ 1 - 1
svr/svr-iot-sunruo/src/main/resources/application.yml

@ -4,7 +4,7 @@ server:
spring:
  application:
    name:  svr-iot-sr  #注册到发现服务的id 如果id一样 eurika会自动做负载
    name:  svr-iot-sn  #注册到发现服务的id 如果id一样 eurika会自动做负载
  datasource:
    driver-class-name: com.mysql.jdbc.Driver

svr/svr-iot-sunruo/src/main/resources/banner.txt → svr/svr-iot-sunnuo/src/main/resources/banner.txt


+ 1 - 1
svr/svr-iot-sunruo/src/main/resources/bootstrap.yml

@ -1,6 +1,6 @@
spring:
  application:
    name: svr-iot-sr
    name: svr-iot-sn
#  cloud:
                                               #    config:
                                               #      failFast: false

svr/svr-iot-sunruo/src/main/resources/core-site.xml → svr/svr-iot-sunnuo/src/main/resources/core-site.xml


svr/svr-iot-sunruo/src/main/resources/hbase-site.xml → svr/svr-iot-sunnuo/src/main/resources/hbase-site.xml


+ 0 - 18
svr/svr-iot-sunruo/src/main/java/com/yihu/iot/datainput/util/ConstantUtils.java

@ -1,18 +0,0 @@
package com.yihu.iot.datainput.util;
public class ConstantUtils {
    //体征数据es索引
    public static String esIndex = "body_health_data_sr";
    //体征数据es类型
    public static String esType = "signs_data_sr";
    //体征数据hbase表名
    public static String tableName = "body_health_data_sr";
    public static String familyA = "column_signs_header_sr";
    public static String familyB = "column_signs_data_sr";
    //数据返回结果标识
    public static final String SUCCESS = "success";
    public static final String FAIL = "fail";
}