Forráskód Böngészése

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

chenweida 7 éve
szülő
commit
dc1e75a8ef

+ 49 - 6
common/common-entity/src/main/java/com/yihu/wlyy/entity/job/QuartzJobConfig.java

@ -1,17 +1,14 @@
package com.yihu.wlyy.entity.job;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import org.hibernate.annotations.GenericGenerator;
import javax.persistence.*;
/**
 * 计划任务
 */
@Entity
@Table(name = "wlyy_job_config")
@Table(name = "wlyy_job_config_cwd")
public class QuartzJobConfig implements java.io.Serializable {
	private String id;
@ -23,6 +20,11 @@ public class QuartzJobConfig implements java.io.Serializable {
	private String quartzCron;//quartz表达式
	private String status;//1 启动 0停止
	private String del;//是否删除 1正常 0删除
	private String sql;
	private String sqlCount;
	private String sqlDay;
	private String sqlYear;
	private String cacheKey;//缓存的key
	/** minimal constructor */
	public QuartzJobConfig() {
@ -124,4 +126,45 @@ public class QuartzJobConfig implements java.io.Serializable {
	public void setDel(String del) {
		this.del = del;
	}
	public String getSql() {
		return sql;
	}
	public void setSql(String sql) {
		this.sql = sql;
	}
	public String getSqlCount() {
		return sqlCount;
	}
	public void setSqlCount(String sqlCount) {
		this.sqlCount = sqlCount;
	}
	public String getSqlDay() {
		return sqlDay;
	}
	public void setSqlDay(String sqlDay) {
		this.sqlDay = sqlDay;
	}
	public String getSqlYear() {
		return sqlYear;
	}
	public void setSqlYear(String sqlYear) {
		this.sqlYear = sqlYear;
	}
	public String getCacheKey() {
		return cacheKey;
	}
	public void setCacheKey(String cacheKey) {
		this.cacheKey = cacheKey;
	}
}

+ 98 - 201
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/service/app/statisticsES/StatisticsESService.java

@ -9,7 +9,6 @@ import com.yihu.wlyy.entity.statistics.PopulationBase;
import com.yihu.wlyy.repository.address.TownDao;
import com.yihu.wlyy.repository.doctor.DoctorAdminTeamDao;
import com.yihu.wlyy.repository.organization.HospitalDao;
import com.yihu.wlyy.service.system.SystemDictService;
import com.yihu.wlyy.util.Constant;
import com.yihu.wlyy.util.DateUtil;
import com.yihu.wlyy.util.ElasticsearchUtil;
@ -51,8 +50,11 @@ public class StatisticsESService {
    @Autowired
    TownDao townDao;
    @Autowired
    private StringRedisTemplate redisTemplate;
    @Autowired
    private SystemDictService systemDictService;
    SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
    /**
     * 获取上次统计时间
     *
@ -79,15 +81,6 @@ public class StatisticsESService {
        return date;
    }
    /**
     * 获取时间戳
     *
     * @return
     */
    public String getQuotaTimeStamp() {
//        return redisTemplate.opsForValue().get("quota:timeKey");
        return "";
    }
//    /**
@ -165,24 +158,22 @@ public class StatisticsESService {
     * @return
     */
    public JSONArray getDateIncrementDetail(String startDate, String endDate, String interval, String area, int level, String index, String level2_type) throws Exception {
        List<SaveModel> list = null;
        if (StringUtils.isNotEmpty(level2_type)) {
            list = elasticsearchUtil.findDateQuotaLevel1(startDate, endDate, area, level, index, "1", level2_type, interval, null);
        } else {
            list = elasticsearchUtil.findDateQuotaLevel0(startDate, endDate, area, level, index, "1", interval, null);
        List<SaveModel>  list = null;
        if(StringUtils.isNotEmpty(level2_type)) {
            list = elasticsearchUtil.findLineChartDateQuotaLevel1(startDate,endDate,area,level,index,"1",interval,level2_type);
        }else{
            list = elasticsearchUtil.findLineChartDateQuotaLevel0(startDate,endDate,area,level,index,"1",interval);
        }
        List<JSONObject> result = new ArrayList<>();
        for (SaveModel saveModel : list) {
        for (SaveModel saveModel:list){
            JSONObject range = new JSONObject();
            range.put("range", DateUtil.dateToStr(saveModel.getQuotaDate(), "yyyy-MM-dd"));
            range.put("range", DateUtil.dateToStr(saveModel.getQuotaDate(),"yyyy-MM-dd"));
            range.put("amount", saveModel.getResult2());
            result.add(range);
        }
        return new JSONArray(result);
    }
    /**
     * 获取某个指标在某个期间的增长量
     *
@ -193,11 +184,13 @@ public class StatisticsESService {
     * @return
     */
    public long getIntervalIncrement(String startDate, String endDate, String area, int level, String index) throws Exception {
        List<SaveModel> list = elasticsearchUtil.findDateQuotaLevel0(startDate, endDate, area, level, index, "1", null, null);
        if (list.size() > 0) {
            return list.get(0).getResult2();
        // 截止日期包含当天,则获取最新的更新时间
        if (endDate.compareTo(new SimpleDateFormat("yyyy-MM-dd").format(new Date())) >= 0) {
            endDate = elasticsearchUtil.getQuotaTime();
        }
        return 0;
        SaveModel saveModel = elasticsearchUtil.findOneDateQuotaLevel0(startDate,endDate,area,level,index,"1");
        return saveModel.getResult2();
    }
//    /**
@ -259,6 +252,8 @@ public class StatisticsESService {
//    }
    /**
     * 查询截止某个日期累计量
     *
@ -268,20 +263,19 @@ public class StatisticsESService {
     * @param level2_type level2_type的类型
     * @return
     */
    public long getTotalAmount(String startDate, String endDate, String area, int level, String index, String level2_type) throws Exception {
    public long getTotalAmount(String startDate, String endDate, String area, int level, String index, String level2_type)  throws Exception {
        List<SaveModel> list = null;
        if (StringUtils.isNotEmpty(level2_type)) {
            list = elasticsearchUtil.findDateQuotaLevel1(startDate, endDate, area, level, index, "1", level2_type, null, null);
        } else {
            list = elasticsearchUtil.findDateQuotaLevel0(startDate, endDate, area, level, index, "1", null, null);
        SaveModel saveModel = null;
        // 截止日期包含当天,则获取最新的更新时间
        if (endDate.compareTo(new SimpleDateFormat("yyyy-MM-dd").format(new Date())) >= 0) {
            endDate = elasticsearchUtil.getQuotaTime();
        }
//        List<SaveModel>  list = findDateQuotaLevel1(startDate,endDate,area,level,index,"1",level2_type,null,null);
        if (list.size() > 0) {
            return list.get(0).getResult2();
        if(StringUtils.isNotEmpty(level2_type)){
            saveModel = elasticsearchUtil.findOneDateQuotaLevel1(startDate,endDate,area,level,index,"1",level2_type);
        }else{
            saveModel = elasticsearchUtil.findOneDateQuotaLevel0(startDate,endDate,area,level,index,"1");
        }
        return 0L;
        return saveModel.getResult2();
    }
    /**
@ -300,43 +294,41 @@ public class StatisticsESService {
        if (!org.springframework.util.StringUtils.isEmpty(year)) {
            startDate = year + "-06-30' ";
        }
        String levelTemp = level + "";
        if (StringUtils.isNotEmpty(lowLevel)) {
        String levelTemp = level+"";
        if(StringUtils.isNotEmpty(lowLevel)){
            levelTemp = lowLevel;
        }
        List<SaveModel> list = null;
//        if(StringUtils.isNotEmpty(level2_type)){
//
//            list = findDateQuotaLevel1(startDate,endDate,area,level,index,"1",level2_type,null,lowLevel);
//        }else{
//            list = findDateQuotaLevel0(startDate,endDate,area,level,index,"1",null,lowLevel);
//        }
        list = lowLevel(startDate, endDate, area, level, index, "1", lowLevel, level2_type);
//        List<SaveModel>  list = findDateQuotaLevel1(startDate,endDate,area,level,index,"1",level2_type,null,lowLevel);
        List<SaveModel>  list = null;
        if(StringUtils.isNotEmpty(level2_type)){
            list = elasticsearchUtil.findListDateQuotaLevel1(startDate,endDate,area,level,index,"1",lowLevel,level2_type);
        }else{
            list = elasticsearchUtil.findListDateQuotaLevel0(startDate,endDate,area,level,index,"1",lowLevel);
        }
        if (org.springframework.util.StringUtils.isEmpty(year)) {
            year = Constant.getNowYear();
        }
        List<Map<String, Object>> resultList = new ArrayList<>();
        PopulationBase populationBase = getPopulationBase(area, year);
        PopulationBase populationBase = getPopulationBase(area,year);
        DecimalFormat df = new DecimalFormat("0.0000");
        for (SaveModel saveModel : list) {
        for (SaveModel saveModel:list) {
            Map<String, Object> map = new HashMap<>();
            if (SaveModel.OrgLevel.equals(levelTemp)) {
                map.put("code", saveModel.getHospital());
                map.put("name", saveModel.getHospitalName());
                map.put("code",saveModel.getHospital());
                map.put("name",saveModel.getHospitalName());
            } else if (SaveModel.townLevel.equals(levelTemp)) {
                map.put("code", saveModel.getTown());
                map.put("name", saveModel.getTownName());
                map.put("code",saveModel.getTown());
                map.put("name",saveModel.getTownName());
            } else if (SaveModel.cityLevel.equals(levelTemp)) {
                map.put("code", saveModel.getCity());
                map.put("name", saveModel.getCityName());
            } else if (SaveModel.teamLevel.equals(level + "")) {
                map.put("code", saveModel.getTeam());
                map.put("name", saveModel.getCityName());
                map.put("code",saveModel.getCity());
                map.put("name",saveModel.getCityName());
            } else if (SaveModel.teamLevel.equals(level+"")) {
                map.put("code",saveModel.getTeam());
                map.put("name",saveModel.getCityName());
            }
            map.put("amount", saveModel.getResult2());
            map.put("rate", df.format((saveModel.getResult2() * 1.0000) / populationBase.getNum() * 100));
            map.put("rateString", saveModel.getResult2() + "/" + populationBase.getNum());
            map.put("amount",saveModel.getResult2());
            map.put("rate",df.format((saveModel.getResult2() * 1.0000) / populationBase.getNum() * 100));
            map.put("rateString",saveModel.getResult2()+"/"+populationBase.getNum());
            resultList.add(map);
        }
        Collections.sort(resultList, new Comparator<Map<String, Object>>() {
@ -357,98 +349,21 @@ public class StatisticsESService {
        return new JSONArray(resultList);
    }
    /**
     * 查询截止某个日期某个区域后机构各下级指标累计情况
     *
     * @param endDate 截止日期
     * @param area    区域或机构代码
     * @param level   级别
     * @return
     */
    public List lowLevel(String startDate, String endDate, String area, int level, String index, String timeLevel, String lowLevel, String slaveKey1) {
        StringBuffer sql = new StringBuffer();
        StringBuffer groupBy = new StringBuffer();
        String lowLevelField = "";
        if (SaveModel.cityLevel.equals(level + "")) {
            lowLevelField = SaveModel.townLevel;
        } else if (SaveModel.townLevel.equals(level + "")) {
            lowLevelField = SaveModel.OrgLevel;
        } else if (SaveModel.OrgLevel.equals(level + "")) {
            lowLevelField = SaveModel.teamLevel;
        } else {
            lowLevelField = SaveModel.teamLevel;
        }
        if (SaveModel.teamLevel.equals(lowLevelField)) {
            sql.append("select team,teamName,sum(result1) result1, sum(result2) result2 from wlyy_quota_test where ");
            groupBy.append("  group by team,teamName");
        } else if (SaveModel.OrgLevel.equals(lowLevelField)) {
            sql.append("select hospital,hospitalName,sum(result1) result1,sum(result2) result2 from wlyy_quota_test where ");
            groupBy.append("  group by hospital");
        } else if (SaveModel.townLevel.equals(lowLevelField)) {
            sql.append("select town,townName,sum(result1) result1,sum(result2) result2 from wlyy_quota_test where ");
            groupBy.append("  group by town,townName");
        } else if (SaveModel.cityLevel.equals(lowLevelField)) {
            sql.append("select city,cityName,sum(result1) result1,sum(result2) result2 from wlyy_quota_test where ");
            groupBy.append("  group by city,cityName");
        }
        sql.append("  quotaCode in(" + index + ")  ");
        sql.append(" and timeLevel='" + timeLevel + "'  ");
        sql.append(" and areaLevel='5'");
        if (StringUtils.isNotEmpty(startDate)) {
            sql.append(" and quotaDate>='" + startDate + "'");
        }
        if (StringUtils.isNotEmpty(endDate)) {
            sql.append(" and quotaDate<='" + endDate + "'");
        }
        if (StringUtils.isNotEmpty(slaveKey1)) {
            sql.append(" and slaveKey1='" + slaveKey1 + "'  ");
        }
        if (StringUtils.isNotEmpty(lowLevel)) {
            if (SaveModel.teamLevel.equals(lowLevel)) {
                sql.append(" and team='" + area + "'");
            } else if (SaveModel.OrgLevel.equals(lowLevel)) {
                sql.append(" and hospital='" + area + "'");
            } else if (SaveModel.townLevel.equals(lowLevel)) {
                sql.append(" and town='" + area + "'");
            } else if (SaveModel.cityLevel.equals(lowLevel)) {
                sql.append(" and city='" + area + "'");
            }
        }
        sql.append(groupBy);
        return elasticsearchUtil.excute(sql.toString(), SaveModel.class, "", "");
    }
    public JSONArray getIndexLevelTwototal(String endDate, String area, int level, String index) throws Exception {
    public JSONArray getIndexLevelTwototal(String endDate, String area, int level, String index) throws Exception{
//        List<SaveModel> list =findOneDateQuotaLevel2(endDate, area, level, index,"1","");
        List<SaveModel> list = elasticsearchUtil.findDateQuotaLevel1(endDate, endDate, area, level, index, "2", null, null, null);
        if (endDate.compareTo(dateFormat.format(new Date())) >= 0) {
            endDate = elasticsearchUtil.getQuotaTime();
        }
        List<SaveModel> list = elasticsearchUtil.findOneDateQuotaLevel1(endDate,area,level,index,"2");
        List<Map<String, Object>> resultList = new ArrayList<>();
        DecimalFormat df = new DecimalFormat("0.0000");
        long total = 0;
        for (SaveModel saveModel : list) {
        for (SaveModel saveModel:list) {
            Map<String, Object> map = new HashMap<>();
//            if (SaveModel.OrgLevel.equals(level+"")) {
//                map.put("code",saveModel.getHospital());
//                map.put("name",saveModel.getHospitalName());
//            } else if (SaveModel.townLevel.equals(level+"")) {
//                map.put("code",saveModel.getTown());
//                map.put("name",saveModel.getTownName());
//            } else if (SaveModel.cityLevel.equals(level+"")) {
//                map.put("code",saveModel.getCity());
//                map.put("name",saveModel.getCityName());
//            } else if (SaveModel.teamLevel.equals(level+"")) {
//                map.put("code",saveModel.getTeam());
//                map.put("name",saveModel.getCityName());
//            }
//            map.put("amount",saveModel.getResult2());
//            map.put("rate",df.format((saveModel.getResult2() * 1.0000) / populationBase.getNum() * 100));
//            map.put("rateString",saveModel.getResult2()+"/"+populationBase.getNum());
            map.put("code", saveModel.getSlaveKey1());
            map.put("name", saveModel.getSlaveKey1Name());
            map.put("code",saveModel.getSlaveKey1());
            map.put("name",saveModel.getSlaveKey1Name());
            map.put("amount", saveModel.getResult2());
            if (index.equals("7")) {
                // 分组指标总数算法
@ -469,21 +384,18 @@ public class StatisticsESService {
        }
        if (!index.equals("8")) {
            if (index.equals("36")) {
                //获取最新的统计时间
                String updateTime = elasticsearchUtil.getQuotaTime();
                //如果是查询36的指标 那么除数是签约总数
                List<SaveModel> list2 = elasticsearchUtil.findDateQuotaLevel1(endDate, endDate, area, level, "1", "2", null, null, null);
                Integer num = 0;
                if (list2.size() > 0) {
                    num = list2.get(0).getResult2();
                } else {
                    throw new Exception("param num error");
                }
                for (Map<String, Object> map : resultList) {
                SaveModel saveModel = elasticsearchUtil.findOneDateQuotaLevel0(updateTime,area,level,index,"2");
                Integer num = saveModel.getResult2();
                for (Map<String, Object> map:resultList) {
                    double rateG = (total > 0 ? ((long) map.get("amount")) * 1.0000 / num * 100 : 0);
                    map.put("rate", df.format(rateG));
                    map.put("rateString", ((long) map.get("amount")) + "/" + num);
                }
            } else {
                for (Map<String, Object> map : resultList) {
            }else{
                for (Map<String, Object> map:resultList) {
                    double rateG = (total > 0 ? ((int) map.get("amount")) * 1.0000 / total * 100 : 0);
                    map.put("rate", df.format(rateG));
                    map.put("rateString", ((int) map.get("amount")) + "/" + total);
@ -520,7 +432,7 @@ public class StatisticsESService {
    }
    /**
     * 获取一级指标达到量
     * 获取一级指标到达量
     *
     * @param endDate 截止日期
     * @param area    区域
@ -528,16 +440,13 @@ public class StatisticsESService {
     * @param level   级别
     * @return
     */
    public long getIndexTotal(String endDate, String area, int level, String index, String timeLevel) throws Exception {
    public long getIndexTotal(String endDate, String area, int level, String index,String timeLevel) throws Exception{
//        List<SaveModel> list =findDateQuotaLevel1("",endDate, area, level, index,timeLevel,null,null);
        List<SaveModel> list = elasticsearchUtil.findDateQuotaLevel0(endDate, endDate, area, level, index, timeLevel, null, null);
//        List<SaveModel> list =elasticsearchUtil.excute(sql.toString(),SaveModel.class,"","");
        if (list.size() > 0) {
            return list.get(0).getResult2();
        if (endDate.compareTo(dateFormat.format(new Date())) >= 0) {
            endDate = elasticsearchUtil.getQuotaTime();
        }
        return 0;
        SaveModel saveModel = elasticsearchUtil.findOneDateQuotaLevel0(endDate,area,level,index,timeLevel);
        return saveModel.getResult2();
    }
    /**
@ -548,13 +457,10 @@ public class StatisticsESService {
     * @param level   级别
     * @return
     */
    public long getWeiJiaoFei(String endDate, String area, int level) throws Exception {
    public long getWeiJiaoFei(String endDate, String area, int level) throws Exception{
        List<SaveModel> list = elasticsearchUtil.findDateQuotaLevel1(endDate, endDate, area, level, "16", "2", "0", null, null);
        if (list.size() > 0) {
            return list.get(0).getResult2();
        }
        return 0;
        SaveModel saveModel = elasticsearchUtil.findOneDateQuotaLevel1(endDate,area,level,"16","2","0");
        return saveModel.getResult2();
    }
@ -575,19 +481,13 @@ public class StatisticsESService {
            renewIndex = "29";
        }
        String timeKey = elasticsearchUtil.getQuotaTime();
        List<SaveModel> list = elasticsearchUtil.findDateQuotaLevel0(timeKey, timeKey, area, Integer.parseInt(level), renewIndex, "2", null, null);
        int renewNum = 0;
        if (list.size() > 0) {
            renewNum = list.get(0).getResult2();
        }
        SaveModel saveModel = elasticsearchUtil.findOneDateQuotaLevel0(timeKey,area,Integer.parseInt(level),renewIndex,"2");
        int renewNum = saveModel.getResult2();
        //根据年度获取去年的签约数 签约指标是1
        String date = year + "-06-30";
        String index = "1";
        List<SaveModel> list2 = elasticsearchUtil.findDateQuotaLevel0(date, date, area, Integer.parseInt(level), index, "2", null, null);
        int signNum = 0;
        if (list2.size() > 0) {
            signNum = list2.get(0).getResult2();
        }
        SaveModel saveModel2 = elasticsearchUtil.findOneDateQuotaLevel0(date,area,Integer.parseInt(level),index,"2");
        int signNum = saveModel2.getResult2();
        JSONObject jo = new JSONObject();
        jo.put("yesterYearSign", signNum);//去年的签约量
        jo.put("thisYearRenew", renewNum);//今年的续签量
@ -605,11 +505,8 @@ public class StatisticsESService {
     */
    public JSONObject getSignRate(String endDate, String area, int level, String year) throws Exception {
        long signAmount = 0;
        List<SaveModel> list = elasticsearchUtil.findDateQuotaLevel0(endDate, endDate, area, level, "13", "2", null, null);
        if (list.size() > 0) {
            signAmount = list.get(0).getResult2();
        }
        SaveModel saveModel = elasticsearchUtil.findOneDateQuotaLevel0(endDate,area,level,"13","2");
        long signAmount = saveModel.getResult2();
        PopulationBase peopleNum = getPopulationBase(area, year);
        JSONObject json = new JSONObject();
        DecimalFormat df = new DecimalFormat("0.0000");
@ -636,11 +533,11 @@ public class StatisticsESService {
     * @return
     */
    public JSONObject getSignTaskRate(String endDate, String area, int level, String year) throws Exception {
        List<SaveModel> list = elasticsearchUtil.findDateQuotaLevel0(endDate, endDate, area, level, "13", "2", null, null);
        long signAmount = 0;
        if (list.size() > 0) {
            signAmount = list.get(0).getResult2();
        if (endDate.compareTo(dateFormat.format(new Date())) >= 0) {
            endDate = elasticsearchUtil.getQuotaTime();
        }
        SaveModel saveModel = elasticsearchUtil.findOneDateQuotaLevel0(endDate,area,level,"13","2");
        long signAmount = saveModel.getResult2();
        PopulationBase peopleNum = getPopulationBase(area, year);
        DecimalFormat df = new DecimalFormat("0.0000");
        JSONObject json = new JSONObject();
@ -668,9 +565,9 @@ public class StatisticsESService {
     * @return
     */
    public JSONObject getGroupInfo(String endDate, String lowCode, String area, int level, String year) throws Exception {
        List<SaveModel> list = elasticsearchUtil.findDateQuotaLevel1(endDate, endDate, area, level, "17", "2", lowCode, null, null);
        List<SaveModel> list = elasticsearchUtil.findDateQuotaLevel1(endDate,endDate,area,level,"17","2",lowCode,null,null);
        long total = 0;
        if (list.size() > 0) {
        if(list.size()>0){
            total = list.get(0).getResult2();
        }
        int num = 0;
@ -735,15 +632,15 @@ public class StatisticsESService {
     * @param level
     * @return
     */
    public JSONArray getSixFiveStatistics(String endDate, String area, int level) throws Exception {
        List<SaveModel> list = elasticsearchUtil.findDateQuotaLevel2(endDate, endDate, area, level, "12", "2", "6", null, null, null);
    public JSONArray getSixFiveStatistics(String endDate, String area, int level) throws Exception{
        List<SaveModel> list = elasticsearchUtil.findDateQuotaLevel2(endDate,endDate,area,level,"12","2","6",null,null,null);
        List<Map<String, Object>> resultList = new ArrayList<>();
        for (int i = 0; i < list.size(); i++) {
            Map<String, Object> data = new HashMap<>();
            data.put("code", list.get(i).getSlaveKey2());
            data.put("name", list.get(i).getSlaveKey2Name());
            data.put("amount", list.get(i).getResult2());
            data.put("amount",list.get(i).getResult2());
            resultList.add(data);
        }
@ -802,10 +699,10 @@ public class StatisticsESService {
     * @param level
     * @return
     */
    public long getSixFiveTotal(String endDate, String area, int level) throws Exception {
    public long getSixFiveTotal(String endDate, String area, int level) throws Exception{
        List<SaveModel> list = elasticsearchUtil.findDateQuotaLevel1(endDate, endDate, area, level, "8", "2", "6", null, null);
        if (list.size() > 0) {
        List<SaveModel> list = elasticsearchUtil.findDateQuotaLevel1(endDate,endDate,area,level,"8","2","6",null,null);
        if(list.size()>0){
            return list.get(0).getResult2();
        }
        return 0;
@ -849,15 +746,15 @@ public class StatisticsESService {
        json.put("taskNum", taskNum);
        List<SaveModel> list = null;
        if (StringUtils.isNotEmpty(lowCode)) {
        if(StringUtils.isNotEmpty(lowCode)){
            //一级维度
            list = elasticsearchUtil.findDateQuotaLevel1(startDate, endDate, area, level, index, "2", lowCode, interval + "", null);
        } else {
            list = elasticsearchUtil.findDateQuotaLevel0(startDate, endDate, area, level, index, "2", interval + "", null);
            list = elasticsearchUtil.findDateQuotaLevel1(startDate,endDate,area,level,index,"2",lowCode,interval+"",null);
        }else{
            list = elasticsearchUtil.findDateQuotaLevel0(startDate,endDate,area,level,index,"2",interval+"",null);
        }
        SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
        List<JSONObject> result = new ArrayList<>();
        for (SaveModel saveModel : list) {
        for (SaveModel saveModel:list) {
            JSONObject range = new JSONObject();
            range.put("range", df.format(saveModel.getQuotaDate()));
            range.put("amount", saveModel.getResult2());

+ 182 - 11
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/util/ElasticsearchUtil.java

@ -18,6 +18,7 @@ import org.nlpcn.es4sql.query.SqlElasticSearchRequestBuilder;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Component;
import java.text.SimpleDateFormat;
@ -38,6 +39,8 @@ public class ElasticsearchUtil {
    @Autowired
    private ElasticFactory elasticFactory;
    @Autowired
    private StringRedisTemplate redisTemplate;
    public List excute(String sql, Class clazz, String esType, String esIndex) {
        List saveModels = new ArrayList<>();
@ -233,10 +236,18 @@ public class ElasticsearchUtil {
        //时间格式转换  yyyy-MM-dd转成 2017-07-17T00:00:00+0800
        if (StringUtils.isNotEmpty(startDate)) {
            startDate = changeDate(startDate);
            if(startDate.length()>10){
                startDate = changeTime(startDate);
            }else{
                startDate = changeDate(startDate);
            }
        }
        if (StringUtils.isNotEmpty(endDate)) {
            endDate = changeDate(endDate);
            if(startDate.length()>10){
                startDate = changeTime(startDate);
            }else{
                startDate = changeDate(startDate);
            }
        }
        StringBuffer sql = new StringBuffer();
        StringBuffer groupBy = new StringBuffer();
@ -316,10 +327,18 @@ public class ElasticsearchUtil {
        //时间格式转换  yyyy-MM-dd转成 2017-07-17T00:00:00+0800
        if (StringUtils.isNotEmpty(startDate)) {
            startDate = changeDate(startDate);
            if(startDate.length()>10){
                startDate = changeTime(startDate);
            }else{
                startDate = changeDate(startDate);
            }
        }
        if (StringUtils.isNotEmpty(endDate)) {
            endDate = changeDate(endDate);
            if(startDate.length()>10){
                startDate = changeTime(startDate);
            }else{
                startDate = changeDate(startDate);
            }
        }
        StringBuffer sql = new StringBuffer();
        StringBuffer groupBy = new StringBuffer();
@ -399,10 +418,18 @@ public class ElasticsearchUtil {
        //时间格式转换  yyyy-MM-dd转成 2017-07-17T00:00:00+0800
        if (StringUtils.isNotEmpty(startDate)) {
            startDate = changeDate(startDate);
            if(startDate.length()>10){
                startDate = changeTime(startDate);
            }else{
                startDate = changeDate(startDate);
            }
        }
        if (StringUtils.isNotEmpty(endDate)) {
            endDate = changeDate(endDate);
            if(startDate.length()>10){
                startDate = changeTime(startDate);
            }else{
                startDate = changeDate(startDate);
            }
        }
        StringBuffer sql = new StringBuffer();
        StringBuffer groupBy = new StringBuffer();
@ -473,14 +500,17 @@ public class ElasticsearchUtil {
    private String changeDate(String quotaDate) {
        return quotaDate + "T00:00:00+0800";
    }
    //获取最新更新的时间
    public String changeTime(String time) {
        time = time.replace(" ","T")+"+0800";
        return time;
    }
    //获取最新更新的时间
    public String getQuotaTime() {
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
        Date today = new Date();
        String todayString = simpleDateFormat.format(today);
        todayString = changeDate(todayString);
        return todayString;
        String date = redisTemplate.opsForValue().get("quota:date");
//        date = date.replace(" ","T")+"+0800";
        return date;
    }
    /**
@ -498,6 +528,22 @@ public class ElasticsearchUtil {
        List list = findDateQuotaLevel0(quotaDate, quotaDate, area, level, index, timelevel, null, null);
        return (SaveModel) list.get(0);
    }
    /**
     * 0级维度
     * 查询某个时间区间某一个0级维度的指标
     *
     * @param startDate 开始时间 yyyy-mm-dd
     * @param endDate   结束时间 yyyy-mm-dd
     * @param area      code  厦门市 350200
     * @param level     等级 1 省 2 市 3 区县 4 机构 5团队
     * @param index     指标code
     * @param timelevel // 1日 2年
     * @return
     */
    public SaveModel findOneDateQuotaLevel0(String startDate, String endDate, String area, int level, String index, String timelevel) throws Exception {
        List list = findDateQuotaLevel0(startDate, endDate, area, level, index, timelevel, null, null);
        return (SaveModel) list.get(0);
    }
    /**
     * 1级维度
     * 查询某一天某一个1级维度的某个1级维度下的指标 例如查询65岁以上患者
@ -514,6 +560,39 @@ public class ElasticsearchUtil {
        List list = findDateQuotaLevel1(quotaDate, quotaDate, area, level, index, timelevel,slaveKey1, null, null);
        return (SaveModel) list.get(0);
    }
    /**
     * 1级维度
     * 查询某个时间区间某一个1级维度的某个1级维度下的指标 例如查询65岁以上患者
     *
     * @param startDate 开始时间 yyyy-mm-dd
     * @param endDate   结束时间 yyyy-mm-dd
     * @param area      code  厦门市 350200
     * @param level     等级 1 省 2 市 3 区县 4 机构 5团队
     * @param index     指标code
     * @param timelevel // 1日 2年
     * @param slaveKey1  一级维度的key 不传返回全部
     * @return
     */
    public SaveModel findOneDateQuotaLevel1(String startDate, String endDate, String area, int level, String index, String timelevel, String slaveKey1) throws Exception {
        List list = findDateQuotaLevel1(startDate, endDate, area, level, index, timelevel,slaveKey1, null, null);
        return (SaveModel) list.get(0);
    }
    /**
     * 1级维度
     * 查询某一天某一个所有1级维度下的指标 例如某个机构下的所有维度的患者列表
     *
     * @param quotaDate 时间 yyyy-mm-dd
     * @param area      code  厦门市 350200
     * @param level     等级 1 省 2 市 3 区县 4 机构 5团队
     * @param index     指标code
     * @param timelevel // 1日 2年
     * @return
     */
    public List<SaveModel> findOneDateQuotaLevel1(String quotaDate, String area, int level, String index, String timelevel) throws Exception {
        List list = findDateQuotaLevel1(quotaDate, quotaDate, area, level, index, timelevel,null, null, null);
        return list;
    }
    /**
     * 2级维度
     * 查询某一天某一个2级维度的某个1级维度和2级维度下的指标  例如查询65岁以上的高血压患者
@ -531,7 +610,41 @@ public class ElasticsearchUtil {
        List list = findDateQuotaLevel2(quotaDate, quotaDate, area, level, index, timelevel,slaveKey1,slaveKey2, null, null);
        return (SaveModel) list.get(0);
    }
    /**
     * 2级维度
     * 查询某个时间区间某一个2级维度的某个1级维度和2级维度下的指标  例如查询65岁以上的高血压患者
     *
     * @param startDate 开始时间 yyyy-mm-dd
     * @param endDate   结束时间 yyyy-mm-dd
     * @param area      code  厦门市 350200
     * @param level     等级 1 省 2 市 3 区县 4 机构 5团队
     * @param index     指标code
     * @param timelevel // 1日 2年
     * @param slaveKey1  一级维度的key
     * @param slaveKey2  二级维度的key
     * @return
     */
    public SaveModel findOneDateQuotaLevel2(String startDate, String endDate, String area, int level, String index, String timelevel, String slaveKey1, String slaveKey2) throws Exception {
        List list = findDateQuotaLevel2(startDate, endDate, area, level, index, timelevel,slaveKey1,slaveKey2, null, null);
        return (SaveModel) list.get(0);
    }
    /**
     * 2级维度
     * 查询某一天某个1级维度下所有2级维度的指标  例如查询65岁以上的高血压患者
     *
     * @param quotaDate 时间 yyyy-mm-dd
     * @param area      code  厦门市 350200
     * @param level     等级 1 省 2 市 3 区县 4 机构 5团队
     * @param index     指标code
     * @param timelevel // 1日 2年
     * @param slaveKey1  一级维度的key
     * @return
     */
    public List<SaveModel> findOneDateQuotaLevel2(String quotaDate, String area, int level, String index, String timelevel, String slaveKey1) throws Exception {
        List list = findDateQuotaLevel2(quotaDate, quotaDate, area, level, index, timelevel,slaveKey1,null, null, null);
        return list;
    }
    /**
     * 折线图
     * 0级维度
@ -608,6 +721,24 @@ public class ElasticsearchUtil {
    public  List<SaveModel>  findListDateQuotaLevel0(String quotaDate,  String area, int level, String index, String timelevel, String lowLevel) throws Exception {
        List list = findDateQuotaLevel0(quotaDate, quotaDate, area, level, index, timelevel, null, lowLevel); return list;
    }
    /**
     *  列表
     * 0级维度
     * 查询某个区间某个0级维度的指标列表
     *
     * @param startDate 开始时间 yyyy-mm-dd  包含头
     * @param endDate 结束时间 yyyy-mm-dd  包含头
     * @param area   code  厦门市 350200 code 和level是对应的
     * @param level 等级 1 省 2 市 3 区县 4 机构 5团队
     * @param index  指标code
     * @param timelevel   1增量   2到达量(按照年度)
     * @param lowLevel  下一级区域等级   1 省 2 市 3 区县 4 机构 5团队
     * @return
     * @throws Exception
     */
    public  List<SaveModel>  findListDateQuotaLevel0(String startDate,String endDate,  String area, int level, String index, String timelevel, String lowLevel) throws Exception {
        List list = findDateQuotaLevel0(startDate, endDate, area, level, index, timelevel, null, lowLevel); return list;
    }
    /**
     * 列表
     * 1级维度
@ -626,6 +757,25 @@ public class ElasticsearchUtil {
        List list = findDateQuotaLevel1(quotaDate, quotaDate, area, level, index, timelevel,slaveKey1, null, lowLevel);
        return list;
    }
    /**
     * 列表
     * 1级维度
     * 查询某个区间某个1级维度的某个1级维度下的列表 例如查询65岁以上患者
     *
     * @param startDate 开始时间 yyyy-mm-dd  包含头
     * @param endDate 结束时间 yyyy-mm-dd  包含头
     * @param area   code  厦门市 350200 code 和level是对应的
     * @param level 等级 1 省 2 市 3 区县 4 机构 5团队
     * @param index  指标code
     * @param timelevel   1增量   2到达量(按照年度)
     * @param lowLevel  下一级区域等级   1 省 2 市 3 区县 4 机构 5团队
     * @param slaveKey1  一级维度的key
     * @return
     */
    public  List<SaveModel>  findListDateQuotaLevel1(String startDate,String endDate,  String area, int level, String index, String timelevel,String lowLevel, String slaveKey1) throws Exception {
        List list = findDateQuotaLevel1(startDate, endDate, area, level, index, timelevel,slaveKey1, null, lowLevel);
        return list;
    }
    /**
     * 列表
     * 2级维度
@ -645,4 +795,25 @@ public class ElasticsearchUtil {
        List list = findDateQuotaLevel2(quotaDate, quotaDate, area, level, index, timelevel,slaveKey1,slaveKey2, null, lowLevel);
        return list;
    }
    /**
     * 列表
     * 2级维度
     * 查询某个区间某个2级维度的某个1级维度和2级维度下的列表  例如查询65岁以上的高血压患者
     *
     * @param startDate 开始时间 yyyy-mm-dd  包含头
     * @param endDate 结束时间 yyyy-mm-dd  包含头
     * @param area   code  厦门市 350200 code 和level是对应的
     * @param level 等级 1 省 2 市 3 区县 4 机构 5团队
     * @param index  指标code
     * @param timelevel   1增量   2到达量(按照年度)
     * @param lowLevel  下一级区域等级   1 省 2 市 3 区县 4 机构 5团队
     * @param slaveKey1  一级维度的key
     * @param slaveKey2  二级维度的key
     * @return
     */
    public  List<SaveModel>  findListDateQuotaLevel2(String startDate,String endDate,  String area, int level, String index, String timelevel,String lowLevel, String slaveKey1, String slaveKey2) throws Exception {
        List list = findDateQuotaLevel2(startDate, endDate, area, level, index, timelevel,slaveKey1,slaveKey2, null, lowLevel);
        return list;
    }
}

+ 2 - 2
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/web/statistic/EsStatisticsController.java

@ -46,7 +46,7 @@ public class EsStatisticsController extends BaseController {
    @ResponseBody
    public String getStatisticsTime() {
        try {
            return write(200, "查询成功", "data", statisticsService.getStatisticsTime());
            return write(200, "查询成功", "data", statisticsESService.getStatisticsTime());
        } catch (Exception e) {
            e.printStackTrace();
            return error(-1, "查询失败");
@ -114,8 +114,8 @@ public class EsStatisticsController extends BaseController {
            JSONObject result = new JSONObject();
            for (String idx : indexes) {
//                result.put("index_" + idx, statisticsService.getIntervalIncrement(startDate, endDate, area, level, idx));
                result.put("index_" + idx, statisticsESService.getIntervalIncrement(startDate, endDate, area, level, idx));
//                result.put("index_" + idx, statisticsService.getIntervalIncrement(startDate, endDate, area, level, idx));
            }
            return write(200, "查询成功", "data", result);

+ 2 - 2
patient-co/patient-co-wlyy/src/main/resources/application-devtest.yml

@ -93,9 +93,9 @@ pushMes:
  redis_prescription_title: redisPrescription
es:
  index:
    HealthEduArticlePatient: health_edu_article_patient_test
    HealthEduArticlePatient: wlyy_quota_test
  type:
    HealthEduArticlePatient: health_edu_article_patient_test
    HealthEduArticlePatient: wlyy_quota_test
  host: 172.19.103.68
  port: 9200
  tPort: 9300