Explorar o código

Merge branch 'dev' of chenweida/patient-co-management into dev

chenweida %!s(int64=8) %!d(string=hai) anos
pai
achega
4dda87cd0a

+ 9 - 7
patient-co-statistics-es/src/main/java/com/yihu/wlyy/statistics/controller/QueryController.java

@ -34,7 +34,9 @@ import org.nlpcn.es4sql.query.DefaultQueryAction;
import org.nlpcn.es4sql.query.SqlElasticSearchRequestBuilder;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
 * Created by chenweida on 2017/7/1.
@ -48,7 +50,7 @@ public class QueryController {
    @ApiOperation(value = "查询某几个指标某个层级的列表")
    @RequestMapping(value = "/getQuotasList", method = RequestMethod.GET)
    public String getQuotasList(
    public Map<String,List<SaveModel>> getQuotasList(
            @ApiParam(name = "ids", value = "指标id,多个逗号分割", required = true) @RequestParam(value = "ids", required = true) String ids,
            @ApiParam(name = "code", value = "指标的code", required = true) @RequestParam(value = "code", required = true) String code,
            @ApiParam(name = "arealevel", value = "指标的level(1 省 2 市 3 区县 4 机构 5团队)", required = true) @RequestParam(value = "arealevel", required = true) String arealevel,
@ -59,12 +61,12 @@ public class QueryController {
        if (StringUtils.isEmpty(date)) {
            date = DateUtil.dateToStrShort(new Date());
        }
        JSONObject jo = new JSONObject();
        Map<String,List<SaveModel>> jo = new HashMap<>();
        for (String id : ids.split(",")) {
            jo.put("index_" + id, elasticsearchUtil.findOneDateQuotaByChllevel(id, code, date, timeLevel, arealevel, childrenArealevel));
        }
        return null;
        return jo;
    }
    @ApiOperation(value = "查询某个1级维度指标")
@ -106,16 +108,16 @@ public class QueryController {
    @ApiOperation(value = "查询某几个指标的到达量")
    @RequestMapping(value = "/getQuotas", method = RequestMethod.GET)
    public String getQuotas(
    public Map<String,List<SaveModel>> getQuotas(
            @ApiParam(name = "ids", value = "指标id,多个逗号分割", required = true) @RequestParam(value = "ids", required = true) String ids,
            @ApiParam(name = "code", value = "指标的code", required = true) @RequestParam(value = "code", required = true) String code,
            @ApiParam(name = "arealevel", value = "指标的level(1 省 2 市 3 区县 4 机构 5团队)", required = true) @RequestParam(value = "arealevel", required = true) String arealevel,
            @ApiParam(name = "date", value = "时间(yyyy-MM-dd),不传默认查今天", required = false) @RequestParam(value = "date", required = false) String date) {
        JSONObject jo = new JSONObject();
        Map<String,List<SaveModel>> returnMap=new HashMap<>();
        for (String id : ids.split(",")) {
            jo.put("index_" + id, elasticsearchUtil.findOneDateQuota(id, date, code, "2", arealevel));
            returnMap.put("index_" + id, elasticsearchUtil.findOneDateQuota(id, code, date, "2", arealevel));
        }
        return jo.toString();
        return returnMap;
    }
}

+ 71 - 55
patient-co-statistics-es/src/main/java/com/yihu/wlyy/statistics/util/ElasticsearchUtil.java

@ -40,8 +40,9 @@ public class ElasticsearchUtil {
    /**
     * 折线图
     *
     * @param quotaCode 指标quotacode
     * @param code 机构code,或者区code或者团队code或者城市code
     * @param code      机构code,或者区code或者团队code或者城市code
     * @param startDate 开始日期 yyyy-MM-dd
     * @param endDate   结束日期 yyyy-MM-dd
     * @param timeLevel 1增量 2到达量
@ -50,29 +51,29 @@ public class ElasticsearchUtil {
     * @return
     */
    public List<SaveModel> findQuotaLines(String quotaCode,
                                      String code,
                                      String startDate,
                                      String endDate,
                                      String timeLevel,
                                      String areaLevel,
                                      String interval) {
                                          String code,
                                          String startDate,
                                          String endDate,
                                          String timeLevel,
                                          String areaLevel,
                                          String interval) {
        //时间格式转换  yyyy-MM-dd转成 2017-07-17T00:00:00+0800
        startDate=changeDate(startDate);
        startDate = changeDate(startDate);
        //时间格式转换  yyyy-MM-dd转成 2017-07-17T00:00:00+0800
        endDate=changeDate(endDate);
        endDate = changeDate(endDate);
        StringBuffer sql = new StringBuffer();
        StringBuffer groupBy = new StringBuffer();
        if (SaveModel.teamLevel.equals(areaLevel)) {
            sql.append("select team,teamName,result1,result2 from wlyy_quota_test where team='"+code+"'");
            sql.append("select team,teamName,result1,result2 from wlyy_quota_test where team='" + code + "'");
        } else if (SaveModel.OrgLevel.equals(areaLevel)) {
            sql.append("select hospital,hospitalName,sum(result1) result1,sum(result2) result2 from wlyy_quota_test where hospital='"+code+"'");
            sql.append("select hospital,hospitalName,sum(result1) result1,sum(result2) result2 from wlyy_quota_test where hospital='" + code + "'");
            groupBy.append(" group by hospital,hospitalName");
        } else if (SaveModel.townLevel.equals(areaLevel)) {
            sql.append("select town,townName,sum(result1) result1,sum(result2) result2 from wlyy_quota_test where town='"+code+"'");
            sql.append("select town,townName,sum(result1) result1,sum(result2) result2 from wlyy_quota_test where town='" + code + "'");
            groupBy.append(" group by town,townName");
        } else if (SaveModel.cityLevel.equals(areaLevel)) {
            sql.append("select city,cityName,sum(result1) result1,sum(result2) result2 from wlyy_quota_test where city='"+code+"'");
            sql.append("select city,cityName,sum(result1) result1,sum(result2) result2 from wlyy_quota_test where city='" + code + "'");
            groupBy.append(" group by city,cityName");
        }
@ -87,7 +88,7 @@ public class ElasticsearchUtil {
            groupBy.append(" ,date_histogram(field='quotaDate','interval'='month') ");
        } else if (SaveModel.interval_week.equals(interval)) {
            groupBy.append(" ,date_histogram(field='quotaDate','interval'='week') ");
        }else if (SaveModel.interval_day.equals(interval)) {
        } else if (SaveModel.interval_day.equals(interval)) {
            groupBy.append(" ,date_histogram(field='quotaDate','interval'='1d') ");
        }
@ -97,7 +98,8 @@ public class ElasticsearchUtil {
    /**
     * 查询某个指标某一天的量
     * @param quotaCode  指标quotacode
     *
     * @param quotaCode 指标quotacode
     * @param quotaDate 时间 yyyy-MM-dd
     * @param timeLevel 1增量 2到达量
     * @param areaLevel 1 省 2 市 3 区县 4 机构 5团队
@ -109,27 +111,27 @@ public class ElasticsearchUtil {
                                            String timeLevel,
                                            String areaLevel) {
        //时间格式转换  yyyy-MM-dd转成 2017-07-17T00:00:00+0800
        quotaDate=changeDate(quotaDate);
        quotaDate = changeDate(quotaDate);
        StringBuffer sql = new StringBuffer();
        StringBuffer groupBy = new StringBuffer();
        if (SaveModel.teamLevel.equals(areaLevel)) {
            sql.append("select team,teamName,result1,result2 from wlyy_quota_test where team='"+code+"'");
            sql.append("select team,teamName,result1,result2 from wlyy_quota_test where team='" + code + "'");
        } else if (SaveModel.OrgLevel.equals(areaLevel)) {
            sql.append("select hospital,hospitalName,sum(result1) result1,sum(result2) result2 from wlyy_quota_test where hospital='"+code+"'");
            sql.append("select hospital,hospitalName,sum(result1) result1,sum(result2) result2 from wlyy_quota_test where hospital='" + code + "'");
            groupBy.append(" group by hospital,hospitalName");
        } else if (SaveModel.townLevel.equals(areaLevel)) {
            sql.append("select town,townName,sum(result1) result1,sum(result2) result2 from wlyy_quota_test where town='"+code+"'");
            sql.append("select town,townName,sum(result1) result1,sum(result2) result2 from wlyy_quota_test where town='" + code + "'");
            groupBy.append(" group by town,townName");
        } else if (SaveModel.cityLevel.equals(areaLevel)) {
            sql.append("select city,cityName,sum(result1) result1,sum(result2) result2 from wlyy_quota_test where city='"+code+"'");
            sql.append("select city,cityName,sum(result1) result1,sum(result2) result2 from wlyy_quota_test where city='" + code + "'");
            groupBy.append(" group by city,cityName");
        }
        sql.append("  quotaCode='" + quotaCode + "'  ");
        sql.append(" and quotaCode='" + quotaCode + "'  ");
        sql.append(" and timeLevel='" + timeLevel + "'  ");
        sql.append(" and areaLevel='5'");
        sql.append(" and quotaDate='"+quotaDate+"'");
        sql.append(" and quotaDate='" + quotaDate + "'");
        sql.append(groupBy);
@ -137,40 +139,41 @@ public class ElasticsearchUtil {
    }
    /**
     * 查询某个一级维度指标某一天的量
     * @param quotaCode  指标quotacode
     * 查询某个一级维度指标某一天的数据
     *
     * @param quotaCode 指标quotacode
     * @param quotaDate 时间 yyyy-MM-dd
     * @param code  机构code或者团队code或者town code或者city code
     * @param code      机构code或者团队code或者town code或者city code
     * @param timeLevel 1增量 2到达量
     * @param areaLevel 1 省 2 市 3 区县 4 机构 5团队
     * @return
     */
    public List<SaveModel> findOneDateQuotaLevel1(String quotaCode,
                                            String code,
                                            String quotaDate,
                                            String timeLevel,
                                            String areaLevel) {
                                                  String code,
                                                  String quotaDate,
                                                  String timeLevel,
                                                  String areaLevel) {
        //时间格式转换  yyyy-MM-dd转成 2017-07-17T00:00:00+0800
        quotaDate=changeDate(quotaDate);
        quotaDate = changeDate(quotaDate);
        StringBuffer sql = new StringBuffer();
        StringBuffer groupBy = new StringBuffer();
        if (SaveModel.teamLevel.equals(areaLevel)) {
            sql.append("select team,teamName,result1,result2 from wlyy_quota_test where team='"+code+"'");
            sql.append("select team,teamName,slaveKey1,slaveKey1Name,result1,result2 from wlyy_quota_test where team='" + code + "'");
        } else if (SaveModel.OrgLevel.equals(areaLevel)) {
            sql.append("select hospital,hospitalName,sum(result1) result1,sum(result2) result2 from wlyy_quota_test where hospital='"+code+"'");
            sql.append("select hospital,hospitalName,slaveKey1,slaveKey1Name,sum(result1) result1,sum(result2) result2 from wlyy_quota_test where hospital='" + code + "'");
        } else if (SaveModel.townLevel.equals(areaLevel)) {
            sql.append("select town,townName,sum(result1) result1,sum(result2) result2 from wlyy_quota_test where town='"+code+"'");
            sql.append("select town,townName,slaveKey1,slaveKey1Name,sum(result1) result1,sum(result2) result2 from wlyy_quota_test where town='" + code + "'");
        } else if (SaveModel.cityLevel.equals(areaLevel)) {
            sql.append("select city,cityName,sum(result1) result1,sum(result2) result2 from wlyy_quota_test where city='"+code+"'");
            sql.append("select city,cityName,slaveKey1,slaveKey1Name,sum(result1) result1,sum(result2) result2 from wlyy_quota_test where city='" + code + "'");
        }
        sql.append("  quotaCode='" + quotaCode + "'  ");
        sql.append(" and quotaCode='" + quotaCode + "'  ");
        sql.append(" and timeLevel='" + timeLevel + "'  ");
        sql.append(" and areaLevel='5'");
        sql.append(" and quotaDate='"+quotaDate+"'");
        sql.append(" and quotaDate='" + quotaDate + "'");
        groupBy.append("  group by slaveKey1,slaveKey1Name");
@ -182,23 +185,24 @@ public class ElasticsearchUtil {
    /**
     * 查询某一天父level下的子level 例如 查询市下面的团队,或者区下面的团队
     * @param quotaCode 指标code
     * @param code 机构code或者团队code或者town code或者city code
     * @param quotaDate  指标code
     * @param timeLevel  1增量 2到达量
     * @param areaLevel 父arealevel
     *
     * @param quotaCode      指标code
     * @param code           机构code或者团队code或者town code或者city code
     * @param quotaDate      指标code
     * @param timeLevel      1增量 2到达量
     * @param areaLevel      父arealevel
     * @param childAreaLevel 子arealevel
     * @return
     */
    public List<SaveModel> findOneDateQuotaByChllevel(String quotaCode,
                                                String code,
                                                String quotaDate,
                                                String timeLevel,
                                                String areaLevel,
                                                String childAreaLevel) {
                                                      String code,
                                                      String quotaDate,
                                                      String timeLevel,
                                                      String areaLevel,
                                                      String childAreaLevel) {
        //时间格式转换  yyyy-MM-dd转成 2017-07-17T00:00:00+0800
        quotaDate=changeDate(quotaDate);
        quotaDate = changeDate(quotaDate);
        StringBuffer sql = new StringBuffer();
        StringBuffer groupBy = new StringBuffer();
@ -219,27 +223,30 @@ public class ElasticsearchUtil {
        sql.append("  quotaCode='" + quotaCode + "'  ");
        sql.append(" and timeLevel='" + timeLevel + "'  ");
        sql.append(" and areaLevel='5'");
        sql.append(" and quotaDate='"+quotaDate+"'");
        sql.append(" and quotaDate='" + quotaDate + "'");
        //查询code
        if (SaveModel.teamLevel.equals(areaLevel)) {
            sql.append(" and team='"+code+"'");
            sql.append(" and team='" + code + "'");
        } else if (SaveModel.OrgLevel.equals(areaLevel)) {
            sql.append(" and hospital='"+code+"'");
            sql.append(" and hospital='" + code + "'");
        } else if (SaveModel.townLevel.equals(areaLevel)) {
            sql.append(" and town='"+code+"'");
            sql.append(" and town='" + code + "'");
        } else if (SaveModel.cityLevel.equals(areaLevel)) {
            sql.append(" and city='"+code+"'");
            sql.append(" and city='" + code + "'");
        }
        sql.append(groupBy);
        return excute(sql.toString());
    }
    /**
     *  时间格式转换  yyyy-MM-dd转成 2017-07-17T00:00:00+0800
     * 时间格式转换  yyyy-MM-dd转成 2017-07-17T00:00:00+0800
     *
     * @param quotaDate
     */
    private String changeDate(String quotaDate) {
        return quotaDate+"T00:00:00+0800";
        return quotaDate + "T00:00:00+0800";
    }
    /**
     * 执行sql查询es
     *
@ -276,14 +283,23 @@ public class ElasticsearchUtil {
                try {
                    SaveModel saveModel = new SaveModel();
                    for (int i = 0; i < one.size(); i++) {
                        String key = "set" + UpFirstStr(heads.get(i));
                        String key = null;
                        Object value = one.get(i);
                        if (heads.get(i).contains("date_histogram")) {
                            key = "setQuotaDate";
                            value=DateUtil.strToDate(String.valueOf(value),"yyyy-MM-dd HH:mm:ss");
                        } else {
                            key = "set" + UpFirstStr(heads.get(i));
                        }
                        if (value instanceof String) {
                            SaveModel.class.getMethod(key, String.class).invoke(saveModel, value);
                        } else if (value instanceof Integer) {
                            SaveModel.class.getMethod(key, Integer.class).invoke(saveModel, value);
                        } else if (value instanceof Double) {
                            SaveModel.class.getMethod(key, Integer.class).invoke(saveModel, ((Double) value).intValue());
                        } else if (value instanceof java.util.Date) {
                            SaveModel.class.getMethod(key, java.util.Date.class).invoke(saveModel, value);
                        }
                    }
                    saveModels.add(saveModel);

+ 1 - 1
patient-co-statistics-es/src/main/java/com/yihu/wlyy/statistics/vo/SaveModel.java

@ -80,7 +80,7 @@ public class SaveModel {
    private String timeLevel;// 1日 2年
    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyyMMdd ")
    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy/MM/dd ")
    public Date getQuotaDate() {
        return quotaDate;
    }