chenweida 7 år sedan
förälder
incheckning
90c3ffefb3

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

@ -64,6 +64,7 @@ public class StatisticsESService {
    SimpleDateFormat dateFormat2 = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssXX");
    SimpleDateFormat dateFormat3 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    DecimalFormat decimalFormat = new DecimalFormat("0.00");
    /**
     * 获取上次统计时间
     *
@ -91,7 +92,6 @@ public class StatisticsESService {
    }
//    /**
//     * 查询某一天父level下的子level 例如 查询市下面的团队,或者区下面的团队
//     *
@ -167,22 +167,23 @@ 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.findLineChartDateQuotaLevel1(startDate,endDate,area,level,index,"1",interval,level2_type);
        }else{
            list = elasticsearchUtil.findLineChartDateQuotaLevel0(startDate,endDate,area,level,index,"1",interval);
        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);
    }
    /**
     * 获取某个指标在某个期间的增长量
     *
@ -194,7 +195,7 @@ public class StatisticsESService {
     */
    public long getIntervalIncrement(String startDate, String endDate, String area, int level, String index) throws Exception {
        SaveModel saveModel = elasticsearchUtil.findOneDateQuotaLevel0(startDate,endDate,area,level,index,"1");
        SaveModel saveModel = elasticsearchUtil.findOneDateQuotaLevel0(startDate, endDate, area, level, index, "1");
        return saveModel.getResult2().longValue();
    }
@ -257,8 +258,6 @@ public class StatisticsESService {
//    }
    /**
     * 查询截止某个日期累计量
     *
@ -268,13 +267,13 @@ 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 {
        SaveModel saveModel = null;
        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");
        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 saveModel.getResult2().longValue();
    }
@ -299,45 +298,45 @@ public class StatisticsESService {
//        if(StringUtils.isNotEmpty(lowLevel)){
//            levelTemp = lowLevel;
//        }
        List<SaveModel>  list = null;
        if(StringUtils.isNotEmpty(level2_type)){
        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);
            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<>();
        DecimalFormat df = new DecimalFormat("0.0000");
        for (SaveModel saveModel:list) {
        for (SaveModel saveModel : list) {
            Map<String, Object> map = new HashMap<>();
            if (SaveModel.OrgLevel.equals(lowLevel)) {
                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(lowLevel)) {
                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(lowLevel)) {
                map.put("code",saveModel.getCity());
                map.put("name",saveModel.getCityName());
                map.put("code", saveModel.getCity());
                map.put("name", saveModel.getCityName());
            } else if (SaveModel.teamLevel.equals(lowLevel)) {
                map.put("code",saveModel.getTeam());
                map.put("name",saveModel.getCityName());
                map.put("code", saveModel.getTeam());
                map.put("name", saveModel.getCityName());
            }
            if (!SaveModel.teamLevel.equals(lowLevel)) {
                if (org.springframework.util.StringUtils.isEmpty(year)) {
                    year = Constant.getNowYear();
                }
                PopulationBase peopleNum = getPopulationBase(area,year);
                PopulationBase peopleNum = getPopulationBase(area, year);
                if (peopleNum != null) {
                    map.put("rate",df.format((saveModel.getResult2() * 1.0000) / peopleNum.getNum() * 100));
                    map.put("rateString",saveModel.getResult2().longValue()+"/"+peopleNum.getNum());
                    map.put("rate", df.format((saveModel.getResult2() * 1.0000) / peopleNum.getNum() * 100));
                    map.put("rateString", saveModel.getResult2().longValue() + "/" + peopleNum.getNum());
                }
            }
            map.put("amount",saveModel.getResult2().longValue());
            map.put("amount", saveModel.getResult2().longValue());
            resultList.add(map);
        }
@ -360,9 +359,9 @@ public class StatisticsESService {
                }
            } else if (SaveModel.OrgLevel.equals(lowLevel)) {
                List<Town> towns = new ArrayList<>();
                if (SaveModel.cityLevel.equals(level+"")) {
                if (SaveModel.cityLevel.equals(level + "")) {
                    towns = townDao.findByCityCode(area);
                } else if (SaveModel.townLevel.equals(level+"")) {
                } else if (SaveModel.townLevel.equals(level + "")) {
                    Town town = townDao.findByCode(area);
                    towns.add(town);
                }
@ -382,9 +381,9 @@ public class StatisticsESService {
                }
            } else if (SaveModel.teamLevel.equals(lowLevel)) {
                List<Hospital> hospitals = new ArrayList<>();
                if (SaveModel.cityLevel.equals(level+"")) {
                if (SaveModel.cityLevel.equals(level + "")) {
                    hospitals = hospitalDao.findByCity(area);
                } else if (SaveModel.townLevel.equals(level+"")) {
                } else if (SaveModel.townLevel.equals(level + "")) {
                    hospitals = hospitalDao.findByTownCode(area);
                } else {
                    Hospital hos = hospitalDao.findByCode(area);
@ -408,7 +407,7 @@ public class StatisticsESService {
                }
            }
        }
        if (SaveModel.OrgLevel.equals(level+"")) {
        if (SaveModel.OrgLevel.equals(level + "")) {
            statisticsAllService.translateTeamLeaderName(resultList);
        }
        Collections.sort(resultList, new Comparator<Map<String, Object>>() {
@ -430,21 +429,20 @@ public class StatisticsESService {
    }
    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 {
//        if (endDate.compareTo(dateFormat.format(new Date())) >= 0) {
//            endDate = elasticsearchUtil.getQuotaTime();
//        }
        List<SaveModel> list = elasticsearchUtil.findOneDateQuotaLevel1(endDate,area,level,index,"2");
        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<>();
            map.put("code",saveModel.getSlaveKey1());
            map.put("name",saveModel.getSlaveKey1Name());
            map.put("amount",saveModel.getResult2().longValue());
            map.put("code", saveModel.getSlaveKey1());
            map.put("name", saveModel.getSlaveKey1Name());
            map.put("amount", saveModel.getResult2().longValue());
            if (index.equals("7")) {
                // 分组指标总数算法
                String code = saveModel.getSlaveKey1();
@ -467,15 +465,15 @@ public class StatisticsESService {
                //获取最新的统计时间
//                String updateTime = elasticsearchUtil.getQuotaTime();
                //如果是查询36的指标 那么除数是签约总数
                SaveModel saveModel = elasticsearchUtil.findOneDateQuotaLevel0(endDate,area,level,"1","2");
                SaveModel saveModel = elasticsearchUtil.findOneDateQuotaLevel0(endDate, area, level, "1", "2");
                Long num = saveModel.getResult2().longValue();
                for (Map<String, Object> map:resultList) {
                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 ? ((long) map.get("amount")) * 1.0000 / total * 100 : 0);
                    map.put("rate", df.format(rateG));
                    map.put("rateString", ((long) map.get("amount")) + "/" + total);
@ -520,10 +518,10 @@ 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 {
        endDate = elasticsearchUtil.changeTime(endDate);
        SaveModel saveModel = elasticsearchUtil.findOneDateQuotaLevel0(endDate,area,level,index,timeLevel);
        SaveModel saveModel = elasticsearchUtil.findOneDateQuotaLevel0(endDate, area, level, index, timeLevel);
        return saveModel.getResult2().longValue();
    }
@ -535,9 +533,9 @@ 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 {
        SaveModel saveModel = elasticsearchUtil.findOneDateQuotaLevel1(endDate,area,level,"16","2","0");
        SaveModel saveModel = elasticsearchUtil.findOneDateQuotaLevel1(endDate, area, level, "16", "2", "0");
        return saveModel.getResult2().longValue();
    }
@ -559,12 +557,12 @@ public class StatisticsESService {
            renewIndex = "29";
        }
        String timeKey = elasticsearchUtil.getQuotaTime();
        SaveModel saveModel = elasticsearchUtil.findOneDateQuotaLevel0(timeKey,area,Integer.parseInt(level),renewIndex,"2");
        SaveModel saveModel = elasticsearchUtil.findOneDateQuotaLevel0(timeKey, area, Integer.parseInt(level), renewIndex, "2");
        int renewNum = saveModel.getResult2().intValue();
        //根据年度获取去年的签约数 签约指标是1
        String date = year + "-06-30";
        String index = "1";
        SaveModel saveModel2 = elasticsearchUtil.findOneDateQuotaLevel0(date,area,Integer.parseInt(level),index,"2");
        SaveModel saveModel2 = elasticsearchUtil.findOneDateQuotaLevel0(date, area, Integer.parseInt(level), index, "2");
        int signNum = saveModel2.getResult2().intValue();
        JSONObject jo = new JSONObject();
        jo.put("yesterYearSign", signNum);//去年的签约量
@ -583,7 +581,7 @@ public class StatisticsESService {
     */
    public JSONObject getSignRate(String endDate, String area, int level, String year) throws Exception {
        SaveModel saveModel = elasticsearchUtil.findOneDateQuotaLevel0(endDate,area,level,"1","2");
        SaveModel saveModel = elasticsearchUtil.findOneDateQuotaLevel0(endDate, area, level, "1", "2");
        long signAmount = saveModel.getResult2().longValue();
        PopulationBase peopleNum = getPopulationBase(area, year);
        JSONObject json = new JSONObject();
@ -614,7 +612,7 @@ public class StatisticsESService {
        if (endDate.compareTo(dateFormat.format(new Date())) >= 0) {
            endDate = elasticsearchUtil.getQuotaTime();
        }
        SaveModel saveModel = elasticsearchUtil.findOneDateQuotaLevel0(endDate,area,level,"1","2");
        SaveModel saveModel = elasticsearchUtil.findOneDateQuotaLevel0(endDate, area, level, "1", "2");
        long signAmount = saveModel.getResult2().longValue();
        PopulationBase peopleNum = getPopulationBase(area, year);
        DecimalFormat df = new DecimalFormat("0.0000");
@ -643,9 +641,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().longValue();
        }
        int num = 0;
@ -710,16 +708,16 @@ public class StatisticsESService {
     * @param level
     * @return
     */
    public JSONArray getSixFiveStatistics(String endDate, String area, int level) throws Exception{
    public JSONArray getSixFiveStatistics(String endDate, String area, int level) throws Exception {
        List<SaveModel> list = elasticsearchUtil.findOneDateQuotaLevel2(endDate,area,level,"12","2","6");
        List<SaveModel> list = elasticsearchUtil.findOneDateQuotaLevel2(endDate, area, level, "12", "2", "6");
        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);
        }
@ -752,12 +750,12 @@ 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 {
        // 截止日期包含当天,则获取最新的更新时间
        if (endDate.compareTo(dateFormat.format(new Date())) >= 0) {
            endDate = elasticsearchUtil.getQuotaTime();
        }
        SaveModel saveModel = elasticsearchUtil.findOneDateQuotaLevel1(endDate,area,level,"8","2","6");
        SaveModel saveModel = elasticsearchUtil.findOneDateQuotaLevel1(endDate, area, level, "8", "2", "6");
        return saveModel.getResult2().longValue();
    }
@ -799,15 +797,15 @@ public class StatisticsESService {
        json.put("taskNum", taskNum);
        List<SaveModel> list = null;
        if(StringUtils.isNotEmpty(lowCode)){
        if (StringUtils.isNotEmpty(lowCode)) {
            //一级维度
            list = elasticsearchUtil.findLineChartDateQuotaLevel1(startDate,endDate,area,level,index,"2",lowCode,interval+"");
        }else{
            list = elasticsearchUtil.findLineChartDateQuotaLevel0(startDate,endDate,area,level,index,"2",interval+"");
            list = elasticsearchUtil.findLineChartDateQuotaLevel1(startDate, endDate, area, level, index, "2", lowCode, interval + "");
        } else {
            list = elasticsearchUtil.findLineChartDateQuotaLevel0(startDate, endDate, area, level, index, "2", interval + "");
        }
        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().longValue());
@ -841,9 +839,9 @@ public class StatisticsESService {
            }
        } else if (lowLevel.equals("4")) {
            List<Town> towns = new ArrayList<>();
            if (SaveModel.cityLevel.equals(level+"")) {
            if (SaveModel.cityLevel.equals(level + "")) {
                towns = townDao.findByCityCode(area);
            } else if (SaveModel.townLevel.equals(level+"")) {
            } else if (SaveModel.townLevel.equals(level + "")) {
                Town town = townDao.findByCode(area);
                if (town != null) {
                    towns.add(town);
@ -870,7 +868,7 @@ public class StatisticsESService {
            List<Hospital> hospitals = new ArrayList<>();
            if (level == 2) {
                hospitals = hospitalDao.findByCity(area);
            } else if (SaveModel.townLevel.equals(level+"")) {
            } else if (SaveModel.townLevel.equals(level + "")) {
                hospitals = hospitalDao.findByTownCode(area);
            } else {
                Hospital hos = hospitalDao.findByCode(area);
@ -1021,12 +1019,12 @@ public class StatisticsESService {
        return rs;
    }
    public JSONArray translateTeamLeaderName(JSONArray rs) {
    public List translateTeamLeaderNameList(List<JSONObject> rs) {
        Map<Integer, Map<String, Object>> leaders = getAllTeamLeaders();
        if (rs != null) {
            for (int i = 0; i < rs.length(); i++) {
                JSONObject r = rs.getJSONObject(i);
                Integer id = Integer.valueOf( r.get("code").toString());
            for (int i = 0; i < rs.size(); i++) {
                JSONObject r = rs.get(i);
                Integer id = Integer.valueOf(r.get("code").toString());
                String name = getTeamLeaderNameByTeamCode(leaders, id);
                if (org.apache.commons.lang3.StringUtils.isNotBlank(name)) {
                    r.put("name", name);
@ -1278,6 +1276,7 @@ public class StatisticsESService {
        String filesize = df.format(size);
        return Double.valueOf(filesize);
    }
    public double getRangeDouuble(Double first, int second, int i) {
        if (second == 0 && first > 0) {
            //如果分母为0 分子不为0 返回100%
@ -1286,11 +1285,12 @@ public class StatisticsESService {
            //如果分母为0 分子为0 返回0%
            return 0;
        }
        Double size = (first * 100) / second;
        Double size = first  / second;
        DecimalFormat df = new DecimalFormat("0.00");//格式化小数,不足的补0
        String filesize = df.format(size);
        return Double.valueOf(filesize);
    }
    /**
     * 获取某个指标某一天某一level的值   到达量
     *
@ -1314,7 +1314,7 @@ public class StatisticsESService {
                } else if (lowLevel.equals("4")) {
                    returnMap.put(one.getHospital(), one.getResult1().intValue());
                } else if (lowLevel.equals("5")) {
                    returnMap.put(one.getTeam(),one.getResult1().intValue());
                    returnMap.put(one.getTeam(), one.getResult1().intValue());
                }
            });
        }
@ -1323,7 +1323,6 @@ public class StatisticsESService {
    }
    /**
     *
     * @param level    level1_type等级 5:团队 4社区机构 3区级 2市级
     * @param area
     * @param lowLevel
@ -1332,7 +1331,7 @@ public class StatisticsESService {
     */
    public String getAvgAllInfo(int level, String area, String lowLevel) throws Exception {
        JSONObject returnJo = new JSONObject();
        JSONArray ja = new JSONArray();
        List<JSONObject> ja = new ArrayList<>();
        //市级
        if (level == 2) {
            if ("3".equals(lowLevel)) {
@ -1342,16 +1341,16 @@ public class StatisticsESService {
                    jo.put("name", one.getTownName());
                    jo.put("code", one.getTown());
                    jo.put("avgCount", getRangeDouuble(one.getResult1(), one.getResult2().intValue(), 2));
                    ja.put(jo);
                    ja.add(jo);
                });
            } else if("4".equals(lowLevel)) {
            } else if ("4".equals(lowLevel)) {
                List<SaveModel> esModelList = (List<SaveModel>) elasticsearchUtil.findListDateQuotaLevel0(DateUtil.dateToStrShort(new Date()), area, level, "28", SaveModel.timeLevel_DDL, "4");
                esModelList.forEach(one -> {
                    JSONObject jo = new JSONObject();
                    jo.put("name", one.getHospitalName());
                    jo.put("code", one.getHospital());
                    jo.put("avgCount", getRangeDouuble(one.getResult1(), one.getResult2().intValue(), 2));
                    ja.put(jo);
                    ja.add(jo);
                });
            }
        } else if (level == 3) {
@ -1361,7 +1360,7 @@ public class StatisticsESService {
                jo.put("name", one.getHospitalName());
                jo.put("code", one.getHospital());
                jo.put("avgCount", getRangeDouuble(one.getResult1(), one.getResult2().intValue(), 2));
                ja.put(jo);
                ja.add(jo);
            });
        } else if (level == 4) {
@ -1371,11 +1370,26 @@ public class StatisticsESService {
                jo.put("name", one.getTeamName());
                jo.put("code", one.getTeam());
                jo.put("avgCount", getRangeDouuble(one.getResult1(), one.getResult2().intValue(), 2));
                ja.put(jo);
                ja.add(jo);
            });
            translateTeamLeaderName(ja);
            translateTeamLeaderNameList(ja);
        }
        ja.sort(new Comparator<JSONObject>() {
            @Override
            public int compare(JSONObject o1, JSONObject o2) {
                if (o1.getDouble("avgCount") < (o2.getDouble("avgCount"))) {
                    return 1;
                } else if (o1.getDouble("avgCount") > (o2.getDouble("avgCount"))) {
                    return -1;
                } else {
                    return 0;
                }
            }
        });
        returnJo.put("data", ja);
        return returnJo.toString();
    }
@ -1403,13 +1417,13 @@ public class StatisticsESService {
            for (SaveModel one : esModelList) {
                Map<String, Object> maps = new HashMap<String, Object>();
                maps.put("amount", one.getResult2().intValue());
                if (low_level.equals("3") && one.getTown()!=null) {
                if (low_level.equals("3") && one.getTown() != null) {
                    maps.put("code", one.getTown());
                    maps.put("name", one.getTownName());
                } else if (low_level.equals("4") && one.getHospital()!=null) {
                } else if (low_level.equals("4") && one.getHospital() != null) {
                    maps.put("code", one.getHospital());
                    maps.put("name", one.getHospitalName());
                } else if (low_level.equals("5") && one.getTeam()!=null) {
                } else if (low_level.equals("5") && one.getTeam() != null) {
                    maps.put("code", one.getTeam());
                    maps.put("name", one.getTeamName());
                }
@ -1573,7 +1587,7 @@ public class StatisticsESService {
     */
    public JSONArray getLowLevelIncrementDetail(String startDate, String endDate, String area, int level, String index, int sort, String low_level) throws Exception {
        List<Map<String, Object>> resultList = new ArrayList<>();
        List<SaveModel> esModelList = (List<SaveModel>) elasticsearchUtil.findListDateQuotaLevel0(startDate, endDate,area, level, index, SaveModel.timeLevel_ZL, low_level);
        List<SaveModel> esModelList = (List<SaveModel>) elasticsearchUtil.findListDateQuotaLevel0(startDate, endDate, area, level, index, SaveModel.timeLevel_ZL, low_level);
        if (esModelList != null && esModelList.size() > 0) {
            for (SaveModel one : esModelList) {
@ -1689,30 +1703,30 @@ public class StatisticsESService {
     * @return
     * @throws Exception
     */
    public JSONObject getConsultingStatisticsList(int level, String area, String lowLevel,String year) throws Exception {
    public JSONObject getConsultingStatisticsList(int level, String area, String lowLevel, String year) throws Exception {
        JSONObject result = new JSONObject();
        //最新更新时间
        String timeKey = elasticsearchUtil.getQuotaTime();
        if(StringUtils.isNotEmpty(year)){
        if (StringUtils.isNotEmpty(year)) {
            if (Constant.getNowYear().equals(year)) {
                timeKey = elasticsearchUtil.getQuotaTime();
            }else{
            } else {
                Integer coutYear = Integer.parseInt(year);
                timeKey = coutYear+"-06-30";
                timeKey = coutYear + "-06-30";
            }
        }
//        timeKey= "2017-11-01 00:00:00";
        //及时回复数
        List<SaveModel> relyVal = elasticsearchUtil.findListDateQuotaLevel0( null,timeKey,area,level,"23","1",lowLevel);
        List<SaveModel> relyVal = elasticsearchUtil.findListDateQuotaLevel0(null, timeKey, area, level, "23", "1", lowLevel);
        //咨询总数
        List<SaveModel> relyTotal = elasticsearchUtil.findListDateQuotaLevel0(null,timeKey,area,level,"25","1",lowLevel);
        List<SaveModel> relyTotal = elasticsearchUtil.findListDateQuotaLevel0(null, timeKey, area, level, "25", "1", lowLevel);
        //未回复数
        List<SaveModel> noRelyTotal = elasticsearchUtil.findListDateQuotaLevel0(null,timeKey,area,level,"22","1",lowLevel);
        List<SaveModel> noRelyTotal = elasticsearchUtil.findListDateQuotaLevel0(null, timeKey, area, level, "22", "1", lowLevel);
//        JSONArray rely = new JSONArray(relyVal);
//        JSONArray total = new JSONArray(relyTotal);
//        JSONArray noRely = new JSONArray(noRelyTotal);
        result.put("resultList", getCoutList(level,relyVal, relyTotal, noRelyTotal));
        result.put("resultList", getCoutList(level, relyVal, relyTotal, noRelyTotal));
        return result;
    }
@ -1725,49 +1739,52 @@ public class StatisticsESService {
     * @param onRely
     * @return
     */
    public List<Map<String, Object>> getCoutList(Integer level,List<SaveModel> rely, List<SaveModel> total, List<SaveModel> onRely) {
    public List<Map<String, Object>> getCoutList(Integer level, List<SaveModel> rely, List<SaveModel> total, List<SaveModel> onRely) {
        Map<String, Object> relyMap = new HashMap<>();
        Map<String, Object> totalMap = new HashMap<>();
        Map<String, Object> onRelyMap = new HashMap<>();
        JSONObject result = new JSONObject();
        //转换回复数
        for(SaveModel saveModel:rely){
            if(level==4){
        for (SaveModel saveModel : rely) {
            if (level == 4) {
                relyMap.put(saveModel.getTeam(), saveModel);
            }else if(level==3){
            } else if (level == 3) {
                relyMap.put(saveModel.getHospital(), saveModel);
            }else if(level==2){
            } else if (level == 2) {
                relyMap.put(saveModel.getTown(), saveModel);
            }
        };
        }
        ;
        //转换总咨询数
        for(SaveModel saveModel:total){
            if(level==4){
        for (SaveModel saveModel : total) {
            if (level == 4) {
                totalMap.put(saveModel.getTeam(), saveModel);
            }else if(level==3){
            } else if (level == 3) {
                totalMap.put(saveModel.getHospital(), saveModel);
            }else if(level==2){
            } else if (level == 2) {
                totalMap.put(saveModel.getTown(), saveModel);
            }
        };
        }
        ;
        //转换总咨询数
        for(SaveModel saveModel:onRely){
            if(level==4){
        for (SaveModel saveModel : onRely) {
            if (level == 4) {
                onRelyMap.put(saveModel.getTeam(), saveModel);
            }else if(level==3){
            } else if (level == 3) {
                onRelyMap.put(saveModel.getHospital(), saveModel);
            }else if(level==2){
            } else if (level == 2) {
                onRelyMap.put(saveModel.getTown(), saveModel);
            }
        };
        }
        ;
        List<Map<String, Object>> resultMaps = new ArrayList<>();
        for (String key : totalMap.keySet()) {
            Map<String, Object> rs = new HashMap<>();
            SaveModel relyRs = (SaveModel) relyMap.get(key);
            SaveModel totalRs = (SaveModel) totalMap.get(key);
            SaveModel onRelyRs = (SaveModel) onRelyMap.get(key);
            if(relyRs==null||totalRs==null||onRelyRs==null){
            if (relyRs == null || totalRs == null || onRelyRs == null) {
                continue;
            }
            //合并结果集
@ -1775,11 +1792,11 @@ public class StatisticsESService {
            Integer relyNm = relyRs.getResult2().intValue();
            Integer noRelyNm = onRelyRs.getResult2().intValue();
//            rs.put("name", relyRs.get(area+"Name"));
            if(level==4){
            if (level == 4) {
                rs.put("name", relyRs.getTeamName());
            }else if(level==3){
            } else if (level == 3) {
                rs.put("name", relyRs.getHospitalName());
            }else if(level==2){
            } else if (level == 2) {
                rs.put("name", relyRs.getTownName());
            }
            rs.put("noRelyCount", noRelyNm);
@ -1814,7 +1831,7 @@ public class StatisticsESService {
            }
            resultMaps.add(rs);
        }
        if(level==4){
        if (level == 4) {
            Map<Integer, Map<String, Object>> leaders = getAllTeamLeaders();
            if (resultMaps != null && resultMaps.size() > 0) {
                for (Map<String, Object> r : resultMaps) {
@ -1843,21 +1860,21 @@ public class StatisticsESService {
     * @param area
     * @return
     */
    public JSONObject getCoutListByTime(String level, String area,String year) throws Exception {
    public JSONObject getCoutListByTime(String level, String area, String year) throws Exception {
        JSONObject result = new JSONObject();
        String quotaTime = elasticsearchUtil.getQuotaTime();
        if(StringUtils.isNotEmpty(year)){
        if (StringUtils.isNotEmpty(year)) {
            if (Constant.getNowYear().equals(year)) {
                quotaTime = elasticsearchUtil.getQuotaTime();
            }else{
            } else {
                quotaTime = year+"-6-30 00:00:00";
                quotaTime = year + "-6-30 00:00:00";
            }
        }
//        quotaTime = "2017-10-19 00:00:00";
        List<SaveModel> list = elasticsearchUtil.findOneDateQuotaLevel1(null,quotaTime,area,Integer.parseInt(level),"24","1");
        List<SaveModel> list = elasticsearchUtil.findOneDateQuotaLevel1(null, quotaTime, area, Integer.parseInt(level), "24", "1");
        JSONArray array = new JSONArray();
        for(SaveModel saveModel : list){
        for (SaveModel saveModel : list) {
            JSONObject jsonObject = new JSONObject();
//            if(SaveModel.cityLevel.equals(level)){
//
@ -1868,10 +1885,10 @@ public class StatisticsESService {
//                jsonObject.put("name",saveModel.getTownName());
//            }else if(SaveModel.OrgLevel.equals(level)){
//            }
            jsonObject.put("code",saveModel.getSlaveKey1());
            jsonObject.put("name",saveModel.getSlaveKey1Name());
            jsonObject.put("date",quotaTime);
            jsonObject.put("num",saveModel.getResult2());
            jsonObject.put("code", saveModel.getSlaveKey1());
            jsonObject.put("name", saveModel.getSlaveKey1Name());
            jsonObject.put("date", quotaTime);
            jsonObject.put("num", saveModel.getResult2());
            array.put(jsonObject);
        }
        result.put("resultList", array);
@ -1885,19 +1902,19 @@ public class StatisticsESService {
     * @param area
     * @return
     */
    public JSONObject getConsultingTitle(int level, String area,String year) throws Exception{
    public JSONObject getConsultingTitle(int level, String area, String year) throws Exception {
        JSONObject result = new JSONObject();
        String quotaDate = elasticsearchUtil.getQuotaTime();
        if(StringUtils.isNotEmpty(year)){
            quotaDate = year+"-06-30";
        if (StringUtils.isNotEmpty(year)) {
            quotaDate = year + "-06-30";
        }
//        List<SaveModel> relyVal = elasticsearchUtil.findOneDateQuotaLevel1(quotaDate,area,level,"23","2");
//        List<SaveModel> relyTotal = elasticsearchUtil.findOneDateQuotaLevel1(quotaDate,area,level,"25","2");
//        List<SaveModel> onRelyTotal = elasticsearchUtil.findOneDateQuotaLevel1(quotaDate,area,level,"22","2");
        SaveModel relyVal = elasticsearchUtil.findOneDateQuotaLevel0(null,quotaDate,area,level,"23","1");
        SaveModel relyTotal = elasticsearchUtil.findOneDateQuotaLevel0(null,quotaDate,area,level,"25","1");
        SaveModel onRelyTotal = elasticsearchUtil.findOneDateQuotaLevel0(null,quotaDate,area,level,"22","1");
        SaveModel relyVal = elasticsearchUtil.findOneDateQuotaLevel0(null, quotaDate, area, level, "23", "1");
        SaveModel relyTotal = elasticsearchUtil.findOneDateQuotaLevel0(null, quotaDate, area, level, "25", "1");
        SaveModel onRelyTotal = elasticsearchUtil.findOneDateQuotaLevel0(null, quotaDate, area, level, "22", "1");
//        JSONObject relyObject = new JSONObject(relyVal);
//        JSONObject totalObject = new JSONObject(relyTotal);
@ -1908,10 +1925,11 @@ public class StatisticsESService {
//        total.put(totalObject);
//        JSONArray onRely = new JSONArray();
//        onRely.put(onRelyObject);
        result.put("result", getCoutListTitle(level,relyVal, relyTotal, onRelyTotal));
        result.put("result", getCoutListTitle(level, relyVal, relyTotal, onRelyTotal));
        return result;
    }
    public List<Map<String, Object>> getCoutListTitle(Integer level,SaveModel rely, SaveModel total, SaveModel onRely) {
    public List<Map<String, Object>> getCoutListTitle(Integer level, SaveModel rely, SaveModel total, SaveModel onRely) {
        Map<String, Object> relyMap = new HashMap<>();
        Map<String, Object> totalMap = new HashMap<>();
@ -1970,13 +1988,13 @@ public class StatisticsESService {
        Integer relyNm = rely.getResult2().intValue();
        Integer noRelyNm = onRely.getResult2().intValue();
//        rs.put("name", rely.get(area + "Name"));
        if (SaveModel.cityLevel.equals(level+"")) {
        if (SaveModel.cityLevel.equals(level + "")) {
            rs.put("code", rely.getCity());
            rs.put("name", rely.getCityName());
        } else if (SaveModel.townLevel.equals(level+"")) {
        } else if (SaveModel.townLevel.equals(level + "")) {
            rs.put("code", rely.getTown());
            rs.put("name", rely.getTownName());
        } else if (SaveModel.OrgLevel.equals(level+"")) {
        } else if (SaveModel.OrgLevel.equals(level + "")) {
            rs.put("code", rely.getHospital());
            rs.put("name", rely.getHospitalName());
        }
@ -2017,32 +2035,32 @@ public class StatisticsESService {
    public JSONObject getRenewPercentAndChangePercent(String index, Integer level, String area, String year, String lowCode) {
        JSONObject jo = new JSONObject();
        String switchIndex = "";//转签index
        String signIndex ="1";//签约index
        String renewIndex =index;//续签index.
        String signIndex = "1";//签约index
        String renewIndex = index;//续签index.
        String date = year + "-06-30";
        try{
        try {
            if (level == 4) {
                //团队的转签
                if(StringUtils.isNoneBlank(lowCode)){
                if (StringUtils.isNoneBlank(lowCode)) {
                    //服务类型维度
                    switchIndex = "55";
                }else{
                } else {
                    switchIndex = "35";
                }
            } else if (level == 3) {
                //社区的转签
                if(StringUtils.isNoneBlank(lowCode)){
                if (StringUtils.isNoneBlank(lowCode)) {
                    //服务类型维度
                    switchIndex = "56";
                }else{
                } else {
                    switchIndex = "35";
                }
            } else {
                //区和市的转签
                if(StringUtils.isNoneBlank(lowCode)){
                if (StringUtils.isNoneBlank(lowCode)) {
                    //服务类型维度
                    switchIndex = "57";
                }else{
                } else {
                    switchIndex = "35";
                }
            }
@ -2050,36 +2068,36 @@ public class StatisticsESService {
            SaveModel renewSaveModel = new SaveModel();
            SaveModel switchSaveModel = new SaveModel();
            SaveModel signSaveModel = new SaveModel();
            if (StringUtils.isNotBlank(lowCode)){
            if (StringUtils.isNotBlank(lowCode)) {
                //续签量
                renewSaveModel = elasticsearchUtil.findOneDateQuotaLevel1(timeKey,area,level,renewIndex,"2",lowCode);
                renewSaveModel = elasticsearchUtil.findOneDateQuotaLevel1(timeKey, area, level, renewIndex, "2", lowCode);
                //转签量
                switchSaveModel = elasticsearchUtil.findOneDateQuotaLevel1(timeKey,area,level,switchIndex,"2",lowCode);
            }else{
                switchSaveModel = elasticsearchUtil.findOneDateQuotaLevel1(timeKey, area, level, switchIndex, "2", lowCode);
            } else {
                //续签量
                renewSaveModel=elasticsearchUtil.findOneDateQuotaLevel0(timeKey,area,level,renewIndex,"2");
                renewSaveModel = elasticsearchUtil.findOneDateQuotaLevel0(timeKey, area, level, renewIndex, "2");
                //转签量
                switchSaveModel=elasticsearchUtil.findOneDateQuotaLevel0(timeKey,area,level,switchIndex,"2");
                switchSaveModel = elasticsearchUtil.findOneDateQuotaLevel0(timeKey, area, level, switchIndex, "2");
            }
            int renewNum = renewSaveModel.getResult2().intValue();
            int switchNum = switchSaveModel.getResult2().intValue();
            //根据年度获取去年的签约数 签约指标是1
            if(StringUtils.isNoneBlank(lowCode)){
                if("3".equals(lowCode)){
            if (StringUtils.isNoneBlank(lowCode)) {
                if ("3".equals(lowCode)) {
                    //老年人
                    lowCode = "3";
                }else if("4".equals(lowCode)){
                } else if ("4".equals(lowCode)) {
                    //高血压
                    lowCode = "1";
                }else if("5".equals(lowCode)){
                } else if ("5".equals(lowCode)) {
                    //糖尿病
                    lowCode = "2";
                }
                signIndex = "17";
                signSaveModel=elasticsearchUtil.findOneDateQuotaLevel1(date,area,level,signIndex,"2",lowCode);
            }else{
                signSaveModel=elasticsearchUtil.findOneDateQuotaLevel0(date,area,level,signIndex,"2");
                signSaveModel = elasticsearchUtil.findOneDateQuotaLevel1(date, area, level, signIndex, "2", lowCode);
            } else {
                signSaveModel = elasticsearchUtil.findOneDateQuotaLevel0(date, area, level, signIndex, "2");
            }
            //签约量
            int signNum = signSaveModel.getResult2().intValue();
@ -2088,15 +2106,16 @@ public class StatisticsESService {
            jo.put("thisYearSwithch", switchNum);//今年的转签量
            jo.put("renewRange", getRange(renewNum, signNum, 2));//续签率  50.00%
            jo.put("switchRange", getRange(switchNum, renewNum, 2));//转签率
        }catch (Exception e){
        } catch (Exception e) {
            e.getMessage();
            jo.put("status","0");
            jo.put("error","查询失败"+e.getMessage());
            jo.put("status", "0");
            jo.put("error", "查询失败" + e.getMessage());
            return jo;
        }
        return jo;
    }
    public JSONObject getRenewAnalysis(String switchIndex, String switchIndexReson, String signIn, String signOut, String level, String code) throws Exception{
    public JSONObject getRenewAnalysis(String switchIndex, String switchIndexReson, String signIn, String signOut, String level, String code) throws Exception {
        JSONObject jo = new JSONObject();
        //获取统计的最新事件
@ -2135,6 +2154,7 @@ public class StatisticsESService {
        jo.put("switchTown", changeTownNum + "%");//今年的转签量
        return jo;
    }
    /**
     * 通用的方法 获取一级维度的数据
     *
@ -2144,11 +2164,12 @@ public class StatisticsESService {
     * @param timeKey
     * @return
     */
    private int getLevel1NumForRedis(String index, String level, String code, String timeKey) throws Exception{
    private int getLevel1NumForRedis(String index, String level, String code, String timeKey) throws Exception {
        SaveModel saveModel = elasticsearchUtil.findOneDateQuotaLevel0(timeKey,code,Integer.parseInt(level),index,"2");
        SaveModel saveModel = elasticsearchUtil.findOneDateQuotaLevel0(timeKey, code, Integer.parseInt(level), index, "2");
        return saveModel.getResult2().intValue();
    }
    /**
     * 通用的方法 获取二级维度的数据列表
     *
@ -2158,20 +2179,21 @@ public class StatisticsESService {
     * @param timeKey
     * @return
     */
    private JSONArray getLevel2JsonObjectForRedis(String index, String level, String code, String timeKey) throws Exception{
        List<SaveModel> list = elasticsearchUtil.findOneDateQuotaLevel1(timeKey,code,Integer.parseInt(level),index,"2");
    private JSONArray getLevel2JsonObjectForRedis(String index, String level, String code, String timeKey) throws Exception {
        List<SaveModel> list = elasticsearchUtil.findOneDateQuotaLevel1(timeKey, code, Integer.parseInt(level), index, "2");
//        JSONObject jo = new JSONObject();
        JSONArray switchJo = new JSONArray();
        list.stream().forEach(one->{
            Map<String,Object> map = new HashMap<>();
            map.put("date",timeKey);
            map.put("code",one.getSlaveKey1());
            map.put("name",one.getSlaveKey1Name());
            map.put("num",one.getResult2());
        list.stream().forEach(one -> {
            Map<String, Object> map = new HashMap<>();
            map.put("date", timeKey);
            map.put("code", one.getSlaveKey1());
            map.put("name", one.getSlaveKey1Name());
            map.put("num", one.getResult2());
            switchJo.put(map);
        });
        return switchJo;
    }
    public String getRangeNoLast(int first, int second, int i) {
        if (second == 0 && first > 0) {
            return "100";
@ -2197,13 +2219,13 @@ public class StatisticsESService {
//        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
        //获取微信关注的未交费
//        Map<String, Object> expenseStatus0 = getByIndexSingle(date, area, level, "49",dateFormat);
        SaveModel expenseStatus0 = elasticsearchUtil.findOneDateQuotaLevel0(date,area,level,"49","2");
        SaveModel expenseStatus0 = elasticsearchUtil.findOneDateQuotaLevel0(date, area, level, "49", "2");
        //获取微信关注的已交费
//        Map<String, Object> expenseStatus1 = getByIndexSingle(date, area, level, "50",dateFormat);
        SaveModel expenseStatus1 = elasticsearchUtil.findOneDateQuotaLevel0(date,area,level,"50","2");
        SaveModel expenseStatus1 = elasticsearchUtil.findOneDateQuotaLevel0(date, area, level, "50", "2");
        //获取已缴费的签约数
//        Map<String, Object> expenseStatus1Sigjn = getByIndexSingle(date, area, level, "1",dateFormat);
        SaveModel expenseStatus1Sigjn = elasticsearchUtil.findOneDateQuotaLevel0(date,area,level,"1","2");
        SaveModel expenseStatus1Sigjn = elasticsearchUtil.findOneDateQuotaLevel0(date, area, level, "1", "2");
        JSONObject jsonObject = new JSONObject();
        if (SaveModel.teamLevel.equals(level)) {
            jsonObject.put("name", expenseStatus1Sigjn.getTeamName());
@ -2215,14 +2237,15 @@ public class StatisticsESService {
            jsonObject.put("name", expenseStatus1Sigjn.getCityName());
        }
        jsonObject.put("code", area);
        Long  weChatAmount0 =  expenseStatus0.getResult2().longValue();
        Long  weChatAmount1 =  expenseStatus1.getResult2().longValue();
        Long  signAccount =  expenseStatus1Sigjn.getResult2().longValue();
        Long weChatAmount0 = expenseStatus0.getResult2().longValue();
        Long weChatAmount1 = expenseStatus1.getResult2().longValue();
        Long signAccount = expenseStatus1Sigjn.getResult2().longValue();
        jsonObject.put("weChatAmount0", weChatAmount0);//微信关注未交费数
        jsonObject.put("weChatAmount1", weChatAmount1);//微信关注已交费数
        jsonObject.put("bindRate", getRangeDouuble(weChatAmount1.intValue(), signAccount.intValue(), 2));//微信关注率
        return jsonObject;
    }
    /**
     * 获取某个指标某一天某一level的值 到达量(单条记录)
     *
@ -2234,8 +2257,8 @@ public class StatisticsESService {
     * @return
     * @throws Exception
     */
    private Map<String,Object> getByIndexSingle(String date, String area, int level, String index, SimpleDateFormat dateFormat) throws Exception {
        Map<String,Object> map =null;
    private Map<String, Object> getByIndexSingle(String date, String area, int level, String index, SimpleDateFormat dateFormat) throws Exception {
        Map<String, Object> map = null;
        if (date.compareTo(dateFormat.format(new Date())) >= 0) {
            map = getTodayLowLevelTotalSingle(date, area, level, index);
        }
@ -2262,7 +2285,7 @@ public class StatisticsESService {
            JSONObject json = new JSONObject(redisData);
            data.put("code", String.valueOf(json.get("code")));
            data.put("name", String.valueOf(json.get("name")));
            data.put("amount",String.valueOf(json.get("num")));
            data.put("amount", String.valueOf(json.get("num")));
        } else {
            Calendar today = Calendar.getInstance();
            today.add(Calendar.DATE, -1);
@ -2274,8 +2297,9 @@ public class StatisticsESService {
    /**
     * 去年的签约量,续签量和续签率 列表
     *
     * @param area
     * @param level 等级 1(5):团队 2(4)社区机构 (3)3区级 4(2)市级
     * @param level    等级 1(5):团队 2(4)社区机构 (3)3区级 4(2)市级
     * @param index
     * @param sort
     * @param lowLevel
@ -2297,19 +2321,19 @@ public class StatisticsESService {
        if (StringUtils.isEmpty(lowCode)) {
            //续签量
            renewSaveModels = elasticsearchUtil.findDateQuotaLevel0(timeKey,timeKey, area, level, index, "2", "",lowLevel);
            renewSaveModels = elasticsearchUtil.findDateQuotaLevel0(timeKey, timeKey, area, level, index, "2", "", lowLevel);
        } else {
            //续签量
            renewSaveModels = elasticsearchUtil.findDateQuotaLevel1(timeKey,timeKey, area, level, index,"2",lowCode,"",low_level);
            renewSaveModels = elasticsearchUtil.findDateQuotaLevel1(timeKey, timeKey, area, level, index, "2", lowCode, "", low_level);
        }
        if (renewSaveModels != null && renewSaveModels.size() > 0) {
            for (SaveModel saveModel : renewSaveModels) {
                if ("3".equals(low_level) && saveModel.getTown()!=null) {
                if ("3".equals(low_level) && saveModel.getTown() != null) {
                    renewMap.put(saveModel.getTown(), saveModel.getResult2().intValue());
                } else if ("4".equals(low_level) && saveModel.getHospital()!=null) {
                } else if ("4".equals(low_level) && saveModel.getHospital() != null) {
                    renewMap.put(saveModel.getHospital(), saveModel.getResult2().intValue());
                } else if ("5".equals(low_level) && saveModel.getTeam()!=null) {
                } else if ("5".equals(low_level) && saveModel.getTeam() != null) {
                    renewMap.put(saveModel.getTeam(), saveModel.getResult2().intValue());
                } else {
                    continue;
@ -2320,22 +2344,22 @@ public class StatisticsESService {
        //自建结果集
        resultList = getLowLevelMapKey(level, low_level, area);
        if (resultList != null && resultList.size()>0) {
        if (resultList != null && resultList.size() > 0) {
            DecimalFormat df = new DecimalFormat("0.0000");
            //查询去年的签约转map
            List<SaveModel> yearsList = new ArrayList();
            if (StringUtils.isBlank(lowCode)) {
                yearsList = elasticsearchUtil.findListDateQuotaLevel0(lastDate,"",Integer.valueOf(low_level),"1","2","");
                yearsList = elasticsearchUtil.findListDateQuotaLevel0(lastDate, "", Integer.valueOf(low_level), "1", "2", "");
            } else {
                if ("3".equals(lowCode)) {
                    //老年人
                    yearsList = elasticsearchUtil.findListDateQuotaLevel1(lastDate,"",Integer.valueOf(low_level),"17","2","","3");
                    yearsList = elasticsearchUtil.findListDateQuotaLevel1(lastDate, "", Integer.valueOf(low_level), "17", "2", "", "3");
                } else if ("4".equals(lowCode)) {
                    //高血压
                    yearsList = elasticsearchUtil.findListDateQuotaLevel1(lastDate,"",Integer.valueOf(low_level),"17","2","","1");
                    yearsList = elasticsearchUtil.findListDateQuotaLevel1(lastDate, "", Integer.valueOf(low_level), "17", "2", "", "1");
                } else if ("5".equals(lowCode)) {
                    //糖尿病
                    yearsList = elasticsearchUtil.findListDateQuotaLevel1(lastDate,"",Integer.valueOf(low_level),"17","2","","2");
                    yearsList = elasticsearchUtil.findListDateQuotaLevel1(lastDate, "", Integer.valueOf(low_level), "17", "2", "", "2");
                } else {
                }
            }
@ -2356,16 +2380,16 @@ public class StatisticsESService {
                int signNum = 0;
                int renewNum = 0;
                //获取去年签约的人数 默认是上个年度的最后一天
                if(resultMap!=null && resultMap.size()>0){
                if (resultMap != null && resultMap.size() > 0) {
                    SaveModel one = resultMap.get(reMap.get("code").toString());
                    if (one != null) {
                        signNum = one.getResult2().intValue();
                    }
                }else{
                } else {
                }
                if (renewMap!=null && renewMap.size()>0){
                     renewNum = renewMap.get(reMap.get("code").toString());
                }else{
                if (renewMap != null && renewMap.size() > 0) {
                    renewNum = renewMap.get(reMap.get("code").toString());
                } else {
                }
                reMap.put("renewNum", renewNum);
                reMap.put("signNum", signNum);
@ -2403,14 +2427,14 @@ public class StatisticsESService {
     *
     * @return
     */
    public JSONObject getBindingRate() throws Exception{
    public JSONObject getBindingRate() throws Exception {
        JSONObject result = new JSONObject();
//        Long bindCout = jdbcTemplate.queryForObject(getBindingCountSQL(), Long.class);
//        Long signCout = jdbcTemplate.queryForObject(getSignCountSQL(), Long.class);
        String quotaTime = elasticsearchUtil.getQuotaTime();
//        quotaTime = "2017-10-19";
        SaveModel saveModel1 = elasticsearchUtil.findOneDateQuotaLevel0(quotaTime,"350200",Integer.parseInt(SaveModel.cityLevel),"50","2");
        SaveModel saveModel2 = elasticsearchUtil.findOneDateQuotaLevel0(quotaTime,"350200",Integer.parseInt(SaveModel.cityLevel),"1","2");
        SaveModel saveModel1 = elasticsearchUtil.findOneDateQuotaLevel0(quotaTime, "350200", Integer.parseInt(SaveModel.cityLevel), "50", "2");
        SaveModel saveModel2 = elasticsearchUtil.findOneDateQuotaLevel0(quotaTime, "350200", Integer.parseInt(SaveModel.cityLevel), "1", "2");
        Integer bindCout = saveModel1.getResult2().intValue();
        Integer signCout = saveModel2.getResult2().intValue();
@ -2427,7 +2451,7 @@ public class StatisticsESService {
    public JSONArray getAVGSocreByMonth(String level, String area, String startDate, String endDate) throws Exception {
        //每个月的评分数
        List<SaveModel> list = elasticsearchUtil.findLineChartDateQuotaLevel0(startDate,endDate,area,Integer.parseInt(level),"28","2","3");
        List<SaveModel> list = elasticsearchUtil.findLineChartDateQuotaLevel0(startDate, endDate, area, Integer.parseInt(level), "28", "2", "3");
        //
        String sql = "SELECT count(1) as num FROM wlyy_doctor d WHERE d.czrq<= ? ";
        if (SaveModel.cityLevel.equals(level)) {
@ -2442,11 +2466,11 @@ public class StatisticsESService {
        Map<String, Object> rs = null;
        JSONArray jsRs = new JSONArray();
        DecimalFormat df = new DecimalFormat("0.00");
        for(SaveModel saveModel : list){
        for (SaveModel saveModel : list) {
            JSONObject json = new JSONObject();
            rs = jdbcTemplate.queryForMap(sql, saveModel.getQuotaDate(), area);
            json.put("month", dateFormat.format(saveModel.getQuotaDate()));
            double rr = (double) saveModel.getResult1() / (Double.parseDouble(rs.get("num")+""));
            double rr = (double) saveModel.getResult1() / (Double.parseDouble(rs.get("num") + ""));
            json.put("socre", df.format(rr));
            jsRs.put(json);
        }
@ -2465,7 +2489,7 @@ public class StatisticsESService {
            throw new RuntimeException("未找到团队信息");
        }
        //1.计算签约总数
        SaveModel saveModel = elasticsearchUtil.findOneDateQuotaLevel0(startDate,endDate,admin.getId()+"",Integer.parseInt(SaveModel.teamLevel),"1","2");
        SaveModel saveModel = elasticsearchUtil.findOneDateQuotaLevel0(startDate, endDate, admin.getId() + "", Integer.parseInt(SaveModel.teamLevel), "1", "2");
        Long sc = saveModel.getResult2().longValue();
        JSONObject signTotal = new JSONObject();
        signTotal.put("signTotal", sc);
@ -2473,43 +2497,43 @@ public class StatisticsESService {
        //3.平均满意度
        SaveModel saveModel2 = elasticsearchUtil.findOneDateQuotaLevel0(startDate,endDate,admin.getId()+"",Integer.parseInt(SaveModel.teamLevel),"28","2");
        SaveModel saveModel2 = elasticsearchUtil.findOneDateQuotaLevel0(startDate, endDate, admin.getId() + "", Integer.parseInt(SaveModel.teamLevel), "28", "2");
//        String sql = "SELECT count(1) as num FROM wlyy_consult_team d WHERE d.czrq>= ? and d.czrq<=? and d.admin_team_code =? ";
//        Map<String, Object> map = jdbcTemplate.queryForMap(sql, startDate, endDate,admin.getId());
        SaveModel saveModel21 = elasticsearchUtil.findOneDateQuotaLevel0(startDate,endDate,admin.getId()+"",Integer.parseInt(SaveModel.teamLevel),"3","2");
        Double avgCout = saveModel2.getResult1()/saveModel21.getResult2();
        Map<String,Object> avgScore = new HashMap<>();
        avgScore.put("avgScore",avgCout);
        SaveModel saveModel21 = elasticsearchUtil.findOneDateQuotaLevel0(startDate, endDate, admin.getId() + "", Integer.parseInt(SaveModel.teamLevel), "3", "2");
        Double avgCout = saveModel2.getResult1() / saveModel21.getResult2();
        Map<String, Object> avgScore = new HashMap<>();
        avgScore.put("avgScore", avgCout);
        rs.put(avgScore);
        //4.获取咨詢數
        SaveModel saveModel3 = elasticsearchUtil.findOneDateQuotaLevel0(startDate,endDate,admin.getId()+"",Integer.parseInt(SaveModel.teamLevel),"3","2");
        Map<String,Object> consultCout = new HashMap<>();
        consultCout.put("consultCount",saveModel3.getResult2().longValue());
        SaveModel saveModel3 = elasticsearchUtil.findOneDateQuotaLevel0(startDate, endDate, admin.getId() + "", Integer.parseInt(SaveModel.teamLevel), "3", "2");
        Map<String, Object> consultCout = new HashMap<>();
        consultCout.put("consultCount", saveModel3.getResult2().longValue());
        rs.put(consultCout);
        //5.获取待预约
        SaveModel saveModel4 = elasticsearchUtil.findOneDateQuotaLevel0(startDate,endDate,admin.getId()+"",Integer.parseInt(SaveModel.teamLevel),"27","2");
        Map<String,Object> reservationCout = new HashMap<>();
        reservationCout.put("reservationCount",saveModel4.getResult2().longValue());
        SaveModel saveModel4 = elasticsearchUtil.findOneDateQuotaLevel0(startDate, endDate, admin.getId() + "", Integer.parseInt(SaveModel.teamLevel), "27", "2");
        Map<String, Object> reservationCout = new HashMap<>();
        reservationCout.put("reservationCount", saveModel4.getResult2().longValue());
        rs.put(reservationCout);
        //6.获取健康教育
        SaveModel saveModel5 = elasticsearchUtil.findOneDateQuotaLevel0(startDate,endDate,admin.getId()+"",Integer.parseInt(SaveModel.teamLevel),"59","2");
        Map<String,Object> articleCout = new HashMap<>();
        articleCout.put("articleCount",saveModel5.getResult2().longValue());
        SaveModel saveModel5 = elasticsearchUtil.findOneDateQuotaLevel0(startDate, endDate, admin.getId() + "", Integer.parseInt(SaveModel.teamLevel), "59", "2");
        Map<String, Object> articleCout = new HashMap<>();
        articleCout.put("articleCount", saveModel5.getResult2().longValue());
        rs.put(articleCout);
        //7.获取健康指导
        SaveModel saveModel6 = elasticsearchUtil.findOneDateQuotaLevel0(startDate,endDate,admin.getId()+"",Integer.parseInt(SaveModel.teamLevel),"5","2");
        Map<String,Object> guidanceCout = new HashMap<>();
        guidanceCout.put("guidanceCount",saveModel6.getResult2().longValue());
        SaveModel saveModel6 = elasticsearchUtil.findOneDateQuotaLevel0(startDate, endDate, admin.getId() + "", Integer.parseInt(SaveModel.teamLevel), "5", "2");
        Map<String, Object> guidanceCout = new HashMap<>();
        guidanceCout.put("guidanceCount", saveModel6.getResult2().longValue());
        rs.put(guidanceCout);
        //8.随访数目
        SaveModel saveModel7 = elasticsearchUtil.findOneDateQuotaLevel0(startDate,endDate,admin.getId()+"",Integer.parseInt(SaveModel.teamLevel),"4","2");
        Map<String,Object> followupCout = new HashMap<>();
        followupCout.put("followupCount",saveModel7.getResult2().longValue());
        SaveModel saveModel7 = elasticsearchUtil.findOneDateQuotaLevel0(startDate, endDate, admin.getId() + "", Integer.parseInt(SaveModel.teamLevel), "4", "2");
        Map<String, Object> followupCout = new HashMap<>();
        followupCout.put("followupCount", saveModel7.getResult2().longValue());
        rs.put(followupCout);
        return rs;
@ -2530,12 +2554,12 @@ public class StatisticsESService {
            throw new RuntimeException("未找到团队信息");
        }
        Long id = admin.getId();
        List<SaveModel> list = elasticsearchUtil.findLineChartDateQuotaLevel0(startDate,endDate,id+"",Integer.parseInt(SaveModel.teamLevel),"1","2",String.valueOf(Integer.parseInt(type)+1));
        List<SaveModel> list = elasticsearchUtil.findLineChartDateQuotaLevel0(startDate, endDate, id + "", Integer.parseInt(SaveModel.teamLevel), "1", "2", String.valueOf(Integer.parseInt(type) + 1));
        List<Map<String, Object>> rs = new ArrayList<>();
        for (SaveModel saveModel:list) {
        for (SaveModel saveModel : list) {
            Map<String, Object> map = new HashMap<>();
            map.put("applyDate",dateFormat3.format(saveModel.getQuotaDate()));
            map.put("signCount",saveModel.getResult2().longValue());
            map.put("applyDate", dateFormat3.format(saveModel.getQuotaDate()));
            map.put("signCount", saveModel.getResult2().longValue());
            rs.add(map);
        }
        JSONArray rsJs = new JSONArray(rs);
@ -2557,12 +2581,12 @@ public class StatisticsESService {
            throw new RuntimeException("未找到团队信息");
        }
        Long id = admin.getId();
        List<SaveModel> list = elasticsearchUtil.findLineChartDateQuotaLevel0(startDate,endDate,id+"",Integer.parseInt(SaveModel.teamLevel),"42","2",String.valueOf(Integer.parseInt(type)+1));
        List<SaveModel> list = elasticsearchUtil.findLineChartDateQuotaLevel0(startDate, endDate, id + "", Integer.parseInt(SaveModel.teamLevel), "42", "2", String.valueOf(Integer.parseInt(type) + 1));
        List<Map<String, Object>> rs = new ArrayList<>();
        for (SaveModel saveModel:list) {
        for (SaveModel saveModel : list) {
            Map<String, Object> map = new HashMap<>();
            map.put("applyDate",dateFormat3.format(saveModel.getQuotaDate()));
            map.put("signCount",saveModel.getResult2().longValue());
            map.put("applyDate", dateFormat3.format(saveModel.getQuotaDate()));
            map.put("signCount", saveModel.getResult2().longValue());
            rs.add(map);
        }
        JSONArray rsJs = new JSONArray(rs);
@ -2571,13 +2595,14 @@ public class StatisticsESService {
    /**
     * 获取咨询数和未回复数
     *
     * @param doctor
     * @param startDate
     * @param endDate
     * @param isNow
     * @return
     */
    public JSONObject getReyStatbyTeamNow(String doctor, String startDate, String endDate, String isNow) throws Exception{
    public JSONObject getReyStatbyTeamNow(String doctor, String startDate, String endDate, String isNow) throws Exception {
        AdminTeam admin = adminTeamDao.findByLeaderCode(doctor);
        if (admin == null) {
@ -2585,11 +2610,11 @@ public class StatisticsESService {
        }
        Long id = admin.getId();
        //家庭医生、健康咨询到达量
        SaveModel saveModel = elasticsearchUtil.findOneDateQuotaLevel0(startDate,endDate,id+"",Integer.parseInt(SaveModel.teamLevel),"3","2");
        SaveModel saveModel = elasticsearchUtil.findOneDateQuotaLevel0(startDate, endDate, id + "", Integer.parseInt(SaveModel.teamLevel), "3", "2");
        Long totalCount = saveModel.getResult2().longValue();
        //健康咨询量  未回复到达量
        SaveModel saveModel2 = elasticsearchUtil.findOneDateQuotaLevel0(startDate,endDate,id+"",Integer.parseInt(SaveModel.teamLevel),"22","2");
        SaveModel saveModel2 = elasticsearchUtil.findOneDateQuotaLevel0(startDate, endDate, id + "", Integer.parseInt(SaveModel.teamLevel), "22", "2");
        Long noReyCount = saveModel.getResult2().longValue();
        JSONObject rs = new JSONObject();
        rs.put("onReyCount", noReyCount);
@ -2606,7 +2631,7 @@ public class StatisticsESService {
     * @param type      0 周,1月
     * @return
     */
    public JSONArray getAvgLine(String doctor, String startDate, String endDate, String type) throws Exception{
    public JSONArray getAvgLine(String doctor, String startDate, String endDate, String type) throws Exception {
        AdminTeam admin = adminTeamDao.findByLeaderCode(doctor);
        if (admin == null) {
@ -2614,26 +2639,26 @@ public class StatisticsESService {
        }
        Long id = admin.getId();
        //统计评分
        Integer interval = Integer.parseInt(type)+2;
        List<SaveModel> list = elasticsearchUtil.findLineChartDateQuotaLevel0(startDate,endDate,id+"",Integer.parseInt(SaveModel.teamLevel),"28","2",interval+"");
        Integer interval = Integer.parseInt(type) + 2;
        List<SaveModel> list = elasticsearchUtil.findLineChartDateQuotaLevel0(startDate, endDate, id + "", Integer.parseInt(SaveModel.teamLevel), "28", "2", interval + "");
        SaveModel saveModel = null;
        Map<String, Object> map = null;
        List<Map<String, Object>> rs = null;
                Double avgCount = 0.0;
        for(SaveModel one:list){
        Double avgCount = 0.0;
        for (SaveModel one : list) {
            String quotaDate = dateFormat.format(one.getQuotaDate());
            saveModel = elasticsearchUtil.findOneDateQuotaLevel0(quotaDate,id+"",Integer.parseInt(SaveModel.teamLevel),"59","2");
            avgCount = one.getResult1()/saveModel.getResult2();
            if(avgCount==0.0){
            saveModel = elasticsearchUtil.findOneDateQuotaLevel0(quotaDate, id + "", Integer.parseInt(SaveModel.teamLevel), "59", "2");
            avgCount = one.getResult1() / saveModel.getResult2();
            if (avgCount == 0.0) {
                avgCount = 80.0;
            }
            map = new HashMap<>();
            if("0".equals(type)){
                map.put("dateNo",dateFormat.format(one.getQuotaDate()));
            }else{
                map.put("weekNo",dateFormat.format(one.getQuotaDate()));
            if ("0".equals(type)) {
                map.put("dateNo", dateFormat.format(one.getQuotaDate()));
            } else {
                map.put("weekNo", dateFormat.format(one.getQuotaDate()));
            }
            map.put("avgCount",avgCount);
            map.put("avgCount", avgCount);
            rs.add(map);
        }
        return new JSONArray(rs);
@ -2648,35 +2673,35 @@ public class StatisticsESService {
     * @param type      0周,1月
     * @return
     */
    public JSONObject getTeamConsultCount(String teamCode, String startDate, String endDate, String type) throws Exception{
    public JSONObject getTeamConsultCount(String teamCode, String startDate, String endDate, String type) throws Exception {
        //咨询未回复
        Integer interval = Integer.parseInt(type)+2;
        List<SaveModel> list = elasticsearchUtil.findLineChartDateQuotaLevel0(startDate,endDate,teamCode,Integer.parseInt(SaveModel.teamLevel),"22","2",interval+"");
        Integer interval = Integer.parseInt(type) + 2;
        List<SaveModel> list = elasticsearchUtil.findLineChartDateQuotaLevel0(startDate, endDate, teamCode, Integer.parseInt(SaveModel.teamLevel), "22", "2", interval + "");
        //咨询总数
        List<SaveModel> list2 = elasticsearchUtil.findLineChartDateQuotaLevel0(startDate,endDate,teamCode,Integer.parseInt(SaveModel.teamLevel),"3","2",interval+"");
        List<SaveModel> list2 = elasticsearchUtil.findLineChartDateQuotaLevel0(startDate, endDate, teamCode, Integer.parseInt(SaveModel.teamLevel), "3", "2", interval + "");
        Map<String, Object> map = null;
        List<Map<String, Object>> noReyList = new ArrayList<>();
        for (SaveModel one:list) {
        for (SaveModel one : list) {
            map = new HashMap<>();
            if ("0".equals(type)) {
                map.put("weekOfMonth",DateUtil.getWeekOfMonth(dateFormat.format(one.getQuotaDate())));
            }else{
                map.put("dateNo",dateFormat.format(one.getQuotaDate()));
                map.put("weekOfMonth", DateUtil.getWeekOfMonth(dateFormat.format(one.getQuotaDate())));
            } else {
                map.put("dateNo", dateFormat.format(one.getQuotaDate()));
            }
            map.put("noRely",one.getResult2().longValue());
            map.put("noRely", one.getResult2().longValue());
            noReyList.add(map);
        }
        List<Map<String, Object>> totalList = new ArrayList<>();
        for (SaveModel one:list) {
        for (SaveModel one : list) {
            map = new HashMap<>();
            if ("0".equals(type)) {
                map.put("weekOfMonth",DateUtil.getWeekOfMonth(dateFormat.format(one.getQuotaDate())));
            }else{
                map.put("dateNo",dateFormat.format(one.getQuotaDate()));
                map.put("weekOfMonth", DateUtil.getWeekOfMonth(dateFormat.format(one.getQuotaDate())));
            } else {
                map.put("dateNo", dateFormat.format(one.getQuotaDate()));
            }
            map.put("noRely",one.getResult2().longValue());
            map.put("noRely", one.getResult2().longValue());
            totalList.add(map);
        }
        JSONObject result = new JSONObject();
@ -2694,20 +2719,20 @@ public class StatisticsESService {
     * @param endDate
     * @return
     */
    public JSONObject getTeamFollowupLine(String teamCode, String startDate, String endDate, String type) throws Exception{
    public JSONObject getTeamFollowupLine(String teamCode, String startDate, String endDate, String type) throws Exception {
        Integer interval = Integer.parseInt(type)+2;
        List<SaveModel> list = elasticsearchUtil.findLineChartDateQuotaLevel0(startDate,endDate,teamCode,Integer.parseInt(SaveModel.teamLevel),"4","2",interval+"");
        Integer interval = Integer.parseInt(type) + 2;
        List<SaveModel> list = elasticsearchUtil.findLineChartDateQuotaLevel0(startDate, endDate, teamCode, Integer.parseInt(SaveModel.teamLevel), "4", "2", interval + "");
        Map<String, Object> map = null;
        List<Map<String, Object>> totalList = new ArrayList<>();
        for(SaveModel one:list){
        for (SaveModel one : list) {
            map = new HashMap<>();
            if ("0".equals(type)) {
                map.put("dateNo",dateFormat.format(one.getQuotaDate()));
            }else{
                map.put("weekOfMonth",DateUtil.getWeekOfMonth(dateFormat.format(one.getQuotaDate())));
                map.put("dateNo", dateFormat.format(one.getQuotaDate()));
            } else {
                map.put("weekOfMonth", DateUtil.getWeekOfMonth(dateFormat.format(one.getQuotaDate())));
            }
            map.put("followupCount",one.getResult2().longValue());
            map.put("followupCount", one.getResult2().longValue());
            totalList.add(map);
        }
@ -2716,28 +2741,29 @@ public class StatisticsESService {
    /**
     * 获取待预约量团队统计折线图
     *
     * @param teamCode
     * @param startDate
     * @param endDate
     * @param type
     * @return
     */
    public JSONArray getTeamResLine(String teamCode, String startDate, String endDate, String type) throws Exception{
    public JSONArray getTeamResLine(String teamCode, String startDate, String endDate, String type) throws Exception {
        startDate = elasticsearchUtil.changeTime(startDate + " 00:00:00");
        endDate = elasticsearchUtil.changeTime(endDate + " 23:59:59");
        Integer interval = Integer.parseInt(type)+2;
        List<SaveModel> list = elasticsearchUtil.findLineChartDateQuotaLevel0(startDate,endDate,teamCode,Integer.parseInt(SaveModel.teamLevel),"27","2",interval+"");
        Integer interval = Integer.parseInt(type) + 2;
        List<SaveModel> list = elasticsearchUtil.findLineChartDateQuotaLevel0(startDate, endDate, teamCode, Integer.parseInt(SaveModel.teamLevel), "27", "2", interval + "");
        Map<String, Object> map = null;
        List<Map<String, Object>> totalList = new ArrayList<>();
        for(SaveModel one:list){
        for (SaveModel one : list) {
            map = new HashMap<>();
            if ("0".equals(type)) {
                map.put("dateNo",dateFormat.format(one.getQuotaDate()));
            }else{
                map.put("weekOfMonth",DateUtil.getWeekOfMonth(dateFormat.format(one.getQuotaDate())));
                map.put("dateNo", dateFormat.format(one.getQuotaDate()));
            } else {
                map.put("weekOfMonth", DateUtil.getWeekOfMonth(dateFormat.format(one.getQuotaDate())));
            }
            map.put("reservationCount",one.getResult2().longValue());
            map.put("reservationCount", one.getResult2().longValue());
            totalList.add(map);
        }
        return new JSONArray(totalList);
@ -2745,74 +2771,75 @@ public class StatisticsESService {
    /**
     * 团队报告--长处方
     *
     * @param startDate
     * @param endDate
     * @param adminTeamId
     * @return
     * @throws Exception
     */
    public Map<String,Object> getPrescriptionTotalCount(String startDate, String endDate, Integer adminTeamId)throws Exception{
    public Map<String, Object> getPrescriptionTotalCount(String startDate, String endDate, Integer adminTeamId) throws Exception {
        //格式化时间
        startDate = startDate +" 00:00:00";
        endDate = endDate +" 23:59:59";
        String index ="58";
        Map<String,Object> rs = new HashedMap();
        startDate = startDate + " 00:00:00";
        endDate = endDate + " 23:59:59";
        String index = "58";
        Map<String, Object> rs = new HashedMap();
        //总数
        List<SaveModel> totalList = elasticsearchUtil.findListDateQuotaLevel0(startDate,endDate,String.valueOf(adminTeamId),Integer.valueOf(SaveModel.teamLevel),index,"2",null);
        List<SaveModel> totalList = elasticsearchUtil.findListDateQuotaLevel0(startDate, endDate, String.valueOf(adminTeamId), Integer.valueOf(SaveModel.teamLevel), index, "2", null);
        //进行中
        List<SaveModel> processingList = elasticsearchUtil.findListDateQuotaLevel0(startDate,endDate,String.valueOf(adminTeamId),Integer.valueOf(SaveModel.teamLevel),index,"2","1");
        List<SaveModel> processingList = elasticsearchUtil.findListDateQuotaLevel0(startDate, endDate, String.valueOf(adminTeamId), Integer.valueOf(SaveModel.teamLevel), index, "2", "1");
        //已完成
        List<SaveModel> finishedList = elasticsearchUtil.findListDateQuotaLevel0(startDate,endDate,String.valueOf(adminTeamId),Integer.valueOf(SaveModel.teamLevel),index,"2","2");
        List<SaveModel> finishedList = elasticsearchUtil.findListDateQuotaLevel0(startDate, endDate, String.valueOf(adminTeamId), Integer.valueOf(SaveModel.teamLevel), index, "2", "2");
        //已经取消
        List<SaveModel> canceledList = elasticsearchUtil.findListDateQuotaLevel0(startDate,endDate,String.valueOf(adminTeamId),Integer.valueOf(SaveModel.teamLevel),index,"2","3");
        List<SaveModel> canceledList = elasticsearchUtil.findListDateQuotaLevel0(startDate, endDate, String.valueOf(adminTeamId), Integer.valueOf(SaveModel.teamLevel), index, "2", "3");
        //审核不通过
        List<SaveModel> unPassList = elasticsearchUtil.findListDateQuotaLevel0(startDate,endDate,String.valueOf(adminTeamId),Integer.valueOf(SaveModel.teamLevel),index,"2","4");
        List<SaveModel> unPassList = elasticsearchUtil.findListDateQuotaLevel0(startDate, endDate, String.valueOf(adminTeamId), Integer.valueOf(SaveModel.teamLevel), index, "2", "4");
        //其他原因取消
        List<SaveModel> otherList = elasticsearchUtil.findListDateQuotaLevel0(startDate,endDate,String.valueOf(adminTeamId),Integer.valueOf(SaveModel.teamLevel),index,"2","5");
        List<SaveModel> otherList = elasticsearchUtil.findListDateQuotaLevel0(startDate, endDate, String.valueOf(adminTeamId), Integer.valueOf(SaveModel.teamLevel), index, "2", "5");
        //总数
        if(totalList!=null && totalList.size()>0){
            rs.put("total",totalList.get(0).getResult2());
        }else{
            rs.put("total",0);
        if (totalList != null && totalList.size() > 0) {
            rs.put("total", totalList.get(0).getResult2());
        } else {
            rs.put("total", 0);
        }
        //进行中
        if(processingList!=null && processingList.size()>0){
            rs.put("processingCount",processingList.get(0).getResult2());
        }else {
        if (processingList != null && processingList.size() > 0) {
            rs.put("processingCount", processingList.get(0).getResult2());
        } else {
            rs.put("processingCount", 0);
        }
        //已完成
        if(finishedList!=null && finishedList.size()>0){
            rs.put("finishCount",finishedList.get(0).getResult2());
        }else {
        if (finishedList != null && finishedList.size() > 0) {
            rs.put("finishCount", finishedList.get(0).getResult2());
        } else {
            rs.put("finishCount", 0);
        }
        //已取消
        if(canceledList!=null && canceledList.size()>0){
            rs.put("patientCancelCount",canceledList.get(0).getResult2());
        }else {
        if (canceledList != null && canceledList.size() > 0) {
            rs.put("patientCancelCount", canceledList.get(0).getResult2());
        } else {
            rs.put("patientCancelCount", 0);
        }
        //审核不通过
        if(unPassList!=null && unPassList.size()>0){
            rs.put("noReviewedCount",unPassList.get(0).getResult2());
        }else {
        if (unPassList != null && unPassList.size() > 0) {
            rs.put("noReviewedCount", unPassList.get(0).getResult2());
        } else {
            rs.put("noReviewedCount", 0);
        }
        //其他原因取消
        if(otherList!=null && otherList.size()>0){
            rs.put("payOuttimeCount",otherList.get(0).getResult2());
        }else {
        if (otherList != null && otherList.size() > 0) {
            rs.put("payOuttimeCount", otherList.get(0).getResult2());
        } else {
            rs.put("payOuttimeCount", 0);
        }
        return rs;
    }
    public Map<String,Object> getPrescriptionCount(int level,String area,String disease) throws Exception{
        String index ="58";
        Map<String,Object> rs = new HashedMap();
    public Map<String, Object> getPrescriptionCount(int level, String area, String disease) throws Exception {
        String index = "58";
        Map<String, Object> rs = new HashedMap();
        List<SaveModel> totalList = null;
        List<SaveModel> processingList = null;
        List<SaveModel> finishedList = null;
@ -2820,98 +2847,98 @@ public class StatisticsESService {
        List<SaveModel> unPassList = null;
        List<SaveModel> otherList = null;
        //总数
        if(StringUtils.isNotBlank(disease)){
            totalList = elasticsearchUtil.findListDateQuotaLevel1(null,area,level,index,"2",null,disease);
        }else{
            totalList = elasticsearchUtil.findListDateQuotaLevel0(null,area,level,index,"2",null);
        if (StringUtils.isNotBlank(disease)) {
            totalList = elasticsearchUtil.findListDateQuotaLevel1(null, area, level, index, "2", null, disease);
        } else {
            totalList = elasticsearchUtil.findListDateQuotaLevel0(null, area, level, index, "2", null);
        }
        //进行中
        if(StringUtils.isNotBlank(disease)){
            processingList = elasticsearchUtil.findListDateQuotaLevel2(null,area,level,index,"2",null,disease,"1");
        }else{
            processingList = elasticsearchUtil.findListDateQuotaLevel1(null,area,level,index,"2",null,"1");
        if (StringUtils.isNotBlank(disease)) {
            processingList = elasticsearchUtil.findListDateQuotaLevel2(null, area, level, index, "2", null, disease, "1");
        } else {
            processingList = elasticsearchUtil.findListDateQuotaLevel1(null, area, level, index, "2", null, "1");
        }
        //已完成
        if(StringUtils.isNotBlank(disease)){
            finishedList = elasticsearchUtil.findListDateQuotaLevel2(null,area,level,index,"2",null,disease,"2");
        }else{
            finishedList = elasticsearchUtil.findListDateQuotaLevel1(null,area,level,index,"2",null,"2");
        if (StringUtils.isNotBlank(disease)) {
            finishedList = elasticsearchUtil.findListDateQuotaLevel2(null, area, level, index, "2", null, disease, "2");
        } else {
            finishedList = elasticsearchUtil.findListDateQuotaLevel1(null, area, level, index, "2", null, "2");
        }
        //已经取消
        if(StringUtils.isNotBlank(disease)){
            canceledList = elasticsearchUtil.findListDateQuotaLevel2(null,area,level,index,"2",null,disease,"3");
        }else{
            canceledList = elasticsearchUtil.findListDateQuotaLevel1(null,area,level,index,"2",null,"3");
        if (StringUtils.isNotBlank(disease)) {
            canceledList = elasticsearchUtil.findListDateQuotaLevel2(null, area, level, index, "2", null, disease, "3");
        } else {
            canceledList = elasticsearchUtil.findListDateQuotaLevel1(null, area, level, index, "2", null, "3");
        }
        //审核不通过
        if(StringUtils.isNotBlank(disease)){
            unPassList = elasticsearchUtil.findListDateQuotaLevel2(null,area,level,index,"2",null,disease,"4");
        }else{
            unPassList = elasticsearchUtil.findListDateQuotaLevel1(null,area,level,index,"2",null,"4");
        if (StringUtils.isNotBlank(disease)) {
            unPassList = elasticsearchUtil.findListDateQuotaLevel2(null, area, level, index, "2", null, disease, "4");
        } else {
            unPassList = elasticsearchUtil.findListDateQuotaLevel1(null, area, level, index, "2", null, "4");
        }
        //其他原因取消
        if(StringUtils.isNotBlank(disease)){
            otherList = elasticsearchUtil.findListDateQuotaLevel2(null,area,level,index,"2",null,disease,"5");
        }else{
            otherList = elasticsearchUtil.findListDateQuotaLevel1(null,area,level,index,"2",null,"5");
        if (StringUtils.isNotBlank(disease)) {
            otherList = elasticsearchUtil.findListDateQuotaLevel2(null, area, level, index, "2", null, disease, "5");
        } else {
            otherList = elasticsearchUtil.findListDateQuotaLevel1(null, area, level, index, "2", null, "5");
        }
        //总数
        if(totalList!=null && totalList.size()>0){
            rs.put("total",totalList.get(0).getResult2());
        }else{
            rs.put("total",0);
        if (totalList != null && totalList.size() > 0) {
            rs.put("total", totalList.get(0).getResult2());
        } else {
            rs.put("total", 0);
        }
        //进行中
        if(processingList!=null && processingList.size()>0){
            rs.put("processingCount",processingList.get(0).getResult2());
        }else {
        if (processingList != null && processingList.size() > 0) {
            rs.put("processingCount", processingList.get(0).getResult2());
        } else {
            rs.put("processingCount", 0);
        }
        //已完成
        if(finishedList!=null && finishedList.size()>0){
            rs.put("finishCount",finishedList.get(0).getResult2());
        }else {
        if (finishedList != null && finishedList.size() > 0) {
            rs.put("finishCount", finishedList.get(0).getResult2());
        } else {
            rs.put("finishCount", 0);
        }
        //已取消
        if(canceledList!=null && canceledList.size()>0){
            rs.put("patientCancelCount",canceledList.get(0).getResult2());
        }else {
        if (canceledList != null && canceledList.size() > 0) {
            rs.put("patientCancelCount", canceledList.get(0).getResult2());
        } else {
            rs.put("patientCancelCount", 0);
        }
        //审核不通过
        if(unPassList!=null && unPassList.size()>0){
            rs.put("noReviewedCount",unPassList.get(0).getResult2());
        }else {
        if (unPassList != null && unPassList.size() > 0) {
            rs.put("noReviewedCount", unPassList.get(0).getResult2());
        } else {
            rs.put("noReviewedCount", 0);
        }
        //其他原因取消
        if(otherList!=null && otherList.size()>0){
            rs.put("payOuttimeCount",otherList.get(0).getResult2());
        }else {
        if (otherList != null && otherList.size() > 0) {
            rs.put("payOuttimeCount", otherList.get(0).getResult2());
        } else {
            rs.put("payOuttimeCount", 0);
        }
        return rs;
    }
    public JSONArray getTeamGuidLine(String teamCode, String startDate, String endDate, String type) throws Exception{
    public JSONArray getTeamGuidLine(String teamCode, String startDate, String endDate, String type) throws Exception {
        startDate = elasticsearchUtil.changeTime(startDate + " 00:00:00");
        endDate = elasticsearchUtil.changeTime(endDate + " 23:59:59");
        Integer interval = Integer.parseInt(type)+2;
        List<SaveModel> list = elasticsearchUtil.findLineChartDateQuotaLevel0(startDate,endDate,teamCode,Integer.parseInt(SaveModel.teamLevel),"5","2",interval+"");
        Integer interval = Integer.parseInt(type) + 2;
        List<SaveModel> list = elasticsearchUtil.findLineChartDateQuotaLevel0(startDate, endDate, teamCode, Integer.parseInt(SaveModel.teamLevel), "5", "2", interval + "");
        Map<String, Object> map = null;
        List<Map<String, Object>> totalList = new ArrayList<>();
        for(SaveModel one:list){
        for (SaveModel one : list) {
            map = new HashMap<>();
            if ("0".equals(type)) {
                map.put("dateNo",dateFormat.format(one.getQuotaDate()));
            }else{
                map.put("weekOfMonth",DateUtil.getWeekOfMonth(dateFormat.format(one.getQuotaDate())));
                map.put("dateNo", dateFormat.format(one.getQuotaDate()));
            } else {
                map.put("weekOfMonth", DateUtil.getWeekOfMonth(dateFormat.format(one.getQuotaDate())));
            }
            map.put("guidanceCount",one.getResult2().longValue());
            map.put("guidanceCount", one.getResult2().longValue());
            totalList.add(map);
        }
        return new JSONArray(totalList);
@ -2919,44 +2946,45 @@ public class StatisticsESService {
    /**
     * 续签 签入、签出统计
     *
     * @param teamCode
     * @param startDate
     * @param endDate
     * @param type
     * @return
     */
    public JSONObject getTeamRenewChangeLine(String teamCode, String startDate, String endDate, String type) throws Exception{
    public JSONObject getTeamRenewChangeLine(String teamCode, String startDate, String endDate, String type) throws Exception {
        startDate = elasticsearchUtil.changeTime(startDate + " 00:00:00");
        endDate = elasticsearchUtil.changeTime(endDate + " 23:59:59");
        Integer interval = Integer.parseInt(type)+2;
        Integer interval = Integer.parseInt(type) + 2;
        //签入统计
        List<SaveModel> inData = elasticsearchUtil.findLineChartDateQuotaLevel0(startDate,endDate,teamCode,Integer.parseInt(SaveModel.teamLevel),"34","2",interval+"");
        List<SaveModel> inData = elasticsearchUtil.findLineChartDateQuotaLevel0(startDate, endDate, teamCode, Integer.parseInt(SaveModel.teamLevel), "34", "2", interval + "");
        Map<String, Object> map = null;
        List<Map<String, Object>> inList = new ArrayList<>();
        for(SaveModel one:inData){
        for (SaveModel one : inData) {
            map = new HashMap<>();
            if ("0".equals(type)) {
                map.put("dateNo",dateFormat.format(one.getQuotaDate()));
            }else{
                map.put("weekOfMonth",DateUtil.getWeekOfMonth(dateFormat.format(one.getQuotaDate())));
                map.put("dateNo", dateFormat.format(one.getQuotaDate()));
            } else {
                map.put("weekOfMonth", DateUtil.getWeekOfMonth(dateFormat.format(one.getQuotaDate())));
            }
            map.put("inCount",one.getResult2().longValue());
            map.put("inCount", one.getResult2().longValue());
            inList.add(map);
        }
        //签出统计
        List<SaveModel> outData = elasticsearchUtil.findLineChartDateQuotaLevel0(startDate,endDate,teamCode,Integer.parseInt(SaveModel.teamLevel),"35","2",interval+"");
        List<SaveModel> outData = elasticsearchUtil.findLineChartDateQuotaLevel0(startDate, endDate, teamCode, Integer.parseInt(SaveModel.teamLevel), "35", "2", interval + "");
        List<Map<String, Object>> outList = new ArrayList<>();
        for(SaveModel one:outData){
        for (SaveModel one : outData) {
            map = new HashMap<>();
            if ("0".equals(type)) {
                map.put("dateNo",dateFormat.format(one.getQuotaDate()));
            }else{
                map.put("weekOfMonth",DateUtil.getWeekOfMonth(dateFormat.format(one.getQuotaDate())));
                map.put("dateNo", dateFormat.format(one.getQuotaDate()));
            } else {
                map.put("weekOfMonth", DateUtil.getWeekOfMonth(dateFormat.format(one.getQuotaDate())));
            }
            map.put("outCount",one.getResult2().longValue());
            map.put("outCount", one.getResult2().longValue());
            outList.add(map);
        }
        JSONObject rs = new JSONObject();
@ -2965,64 +2993,64 @@ public class StatisticsESService {
        return rs;
    }
    public List<Map<String,Object>> getPrescriptionAgeLowLevel(String level,String lowlevel,String area,String disease) throws Exception{
    public List<Map<String, Object>> getPrescriptionAgeLowLevel(String level, String lowlevel, String area, String disease) throws Exception {
        String quotaDate = elasticsearchUtil.getQuotaTime();
        List<SaveModel> list = elasticsearchUtil.findListDateQuotaLevel1(quotaDate,area,Integer.parseInt(level),"58","2",lowlevel,disease);
        List<SaveModel> list = elasticsearchUtil.findListDateQuotaLevel1(quotaDate, area, Integer.parseInt(level), "58", "2", lowlevel, disease);
        Map<String, Object> map = null;
        List<Map<String, Object>> rs = new ArrayList<>();
        if(list.size()>0){
            for(SaveModel one:list){
        if (list.size() > 0) {
            for (SaveModel one : list) {
                map = new HashMap<>();
                if(Integer.parseInt(lowlevel)>=Integer.parseInt(level)){
                    lowlevel = String.valueOf(Integer.parseInt(level)+1);
                if (Integer.parseInt(lowlevel) >= Integer.parseInt(level)) {
                    lowlevel = String.valueOf(Integer.parseInt(level) + 1);
                }
                if(SaveModel.townLevel.equals(lowlevel)){
                    map.put("code",one.getTown());
                    map.put("name",one.getTownName());
                }else if(SaveModel.OrgLevel.equals(lowlevel)){
                    map.put("code",one.getHospital());
                    map.put("name",one.getHospitalName());
                }else if(SaveModel.teamLevel.equals(lowlevel)){
                    map.put("code",one.getTeam());
                    map.put("name",one.getTeamName());
                if (SaveModel.townLevel.equals(lowlevel)) {
                    map.put("code", one.getTown());
                    map.put("name", one.getTownName());
                } else if (SaveModel.OrgLevel.equals(lowlevel)) {
                    map.put("code", one.getHospital());
                    map.put("name", one.getHospitalName());
                } else if (SaveModel.teamLevel.equals(lowlevel)) {
                    map.put("code", one.getTeam());
                    map.put("name", one.getTeamName());
                }
                map.put("val",one.getResult2().longValue());
                map.put("val", one.getResult2().longValue());
            }
        }else{
        } else {
            //统计数据为空时,自建结果集
            List<Town> townList = null;
            List<Hospital> hospitalList = null;
            List<AdminTeam> adminTeams = null;
            if(SaveModel.cityLevel.equals(level)){
            if (SaveModel.cityLevel.equals(level)) {
                townList = townDao.findByCityCode(area);
                hospitalList = hospitalDao.findByCity(area);
                adminTeams = findAllTeam();
            }else if(SaveModel.townLevel.equals(level)){
            } else if (SaveModel.townLevel.equals(level)) {
                hospitalList = hospitalDao.findByTownCode(area);
//                adminTeams = adminTeamDao.findByTownCode(area);
                adminTeams = findAllTeam();
            }else if(SaveModel.OrgLevel.equals(level)){
            } else if (SaveModel.OrgLevel.equals(level)) {
                adminTeams = adminTeamDao.findByOrgCode(area);
            }
            if(SaveModel.townLevel.equals(lowlevel)){
                for(Town one : townList){
                    map.put("code",one.getCode());
                    map.put("name",one.getName());
                    map.put("val",0);
            if (SaveModel.townLevel.equals(lowlevel)) {
                for (Town one : townList) {
                    map.put("code", one.getCode());
                    map.put("name", one.getName());
                    map.put("val", 0);
                }
            }else if(SaveModel.OrgLevel.equals(lowlevel)){
                for(Hospital one : hospitalList){
                    map.put("code",one.getCode());
                    map.put("name",one.getName());
                    map.put("val",0);
            } else if (SaveModel.OrgLevel.equals(lowlevel)) {
                for (Hospital one : hospitalList) {
                    map.put("code", one.getCode());
                    map.put("name", one.getName());
                    map.put("val", 0);
                }
            }else if(SaveModel.teamLevel.equals(lowlevel)){
                for(AdminTeam one : adminTeams){
                    map.put("code",one.getLeaderCode());
                    map.put("name",one.getName());
                    map.put("val",0);
            } else if (SaveModel.teamLevel.equals(lowlevel)) {
                for (AdminTeam one : adminTeams) {
                    map.put("code", one.getLeaderCode());
                    map.put("name", one.getName());
                    map.put("val", 0);
                }
            }
        }
@ -3053,90 +3081,89 @@ public class StatisticsESService {
        return adminTeams;
    }
    public Map<String,Object> getPrescriptionAgeHistogram(String level,String area,String disease) throws Exception{
    public Map<String, Object> getPrescriptionAgeHistogram(String level, String area, String disease) throws Exception {
        String quotaDate = elasticsearchUtil.getQuotaTime();
        //统计年龄分布
        List<SaveModel> list = elasticsearchUtil.findOneDateQuotaLevel2(quotaDate,area,Integer.parseInt(level),"60","2",disease);
        List<SaveModel> list = elasticsearchUtil.findOneDateQuotaLevel2(quotaDate, area, Integer.parseInt(level), "60", "2", disease);
        //获取总人数
        String sql = " SELECT COUNT(1) AS num FROM ( SELECT DISTINCT p.patient FROM wlyy_prescription p ) a ";
        Map<String, Object> count = jdbcTemplate.queryForMap(sql);
        Long num = (Long)count.get("num");
        Map<String,Object> map = new HashMap<>();
        DecimalFormat decimalFormat=new DecimalFormat("0.00");//构造方法的字符格式这里如果小数不足2位,会以0补足.
        Double ageRate = list.get(0).getResult2()/num;
        map.put("0ageRate",decimalFormat.format(ageRate));
        ageRate = list.get(1).getResult2()/num;
        map.put("7ageRate",decimalFormat.format(ageRate));
        ageRate = list.get(2).getResult2()/num;
        map.put("19ageRate",decimalFormat.format(ageRate));
        ageRate = list.get(3).getResult2()/num;
        map.put("31ageRate",decimalFormat.format(ageRate));
        ageRate = list.get(4).getResult2()/num;
        map.put("51ageRate",decimalFormat.format(ageRate));
        ageRate = list.get(5).getResult2()/num;
        map.put("65ageRate",decimalFormat.format(ageRate));
        Long num = (Long) count.get("num");
        Map<String, Object> map = new HashMap<>();
        DecimalFormat decimalFormat = new DecimalFormat("0.00");//构造方法的字符格式这里如果小数不足2位,会以0补足.
        Double ageRate = list.get(0).getResult2() / num;
        map.put("0ageRate", decimalFormat.format(ageRate));
        ageRate = list.get(1).getResult2() / num;
        map.put("7ageRate", decimalFormat.format(ageRate));
        ageRate = list.get(2).getResult2() / num;
        map.put("19ageRate", decimalFormat.format(ageRate));
        ageRate = list.get(3).getResult2() / num;
        map.put("31ageRate", decimalFormat.format(ageRate));
        ageRate = list.get(4).getResult2() / num;
        map.put("51ageRate", decimalFormat.format(ageRate));
        ageRate = list.get(5).getResult2() / num;
        map.put("65ageRate", decimalFormat.format(ageRate));
        return map;
    }
    /**
     *
     * @param level 等级
     * @param area 等级编码
     * @param level   等级
     * @param area    等级编码
     * @param disease 疾病编码
     * @param type 类型0.总量,1.进行中,2.已完成,3.居民取消,4.审核不通过,5.其他原因取消
     * @param type    类型0.总量,1.进行中,2.已完成,3.居民取消,4.审核不通过,5.其他原因取消
     * @return
     */
    public List<Map<String,Object>> getPrescriptionTotalHistogram(int level,String area,String disease,String type) throws Exception{
        String index ="58";
        List<Map<String,Object>> rs =new ArrayList<>();
    public List<Map<String, Object>> getPrescriptionTotalHistogram(int level, String area, String disease, String type) throws Exception {
        String index = "58";
        List<Map<String, Object>> rs = new ArrayList<>();
        Calendar dd = Calendar.getInstance();//定义日期实例
        Date endDate = new Date();
        dd.setTime(endDate);
        for(int i=1;i<7;i++){
            Map<String,Object> mc = new HashedMap();
        for (int i = 1; i < 7; i++) {
            Map<String, Object> mc = new HashedMap();
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
            String date = sdf.format(dd.getTime());
            mc.put("month",date);
            mc.put("count",0);
            dd.add(Calendar.MONTH,-1);
            mc.put("month", date);
            mc.put("count", 0);
            dd.add(Calendar.MONTH, -1);
            rs.add(mc);
        }
        String startTime = DateUtil.dateToStr(dd.getTime(),"YYYY-MM-dd HH:mm:ss");
        String endTime = DateUtil.dateToStr(new Date(),"YYYY-MM-dd HH:mm:ss");
        String startTime = DateUtil.dateToStr(dd.getTime(), "YYYY-MM-dd HH:mm:ss");
        String endTime = DateUtil.dateToStr(new Date(), "YYYY-MM-dd HH:mm:ss");
        List<SaveModel> resultList = new ArrayList<>();
        if (StringUtils.isNotBlank(disease)){
        if (StringUtils.isNotBlank(disease)) {
            //类型0.总量,1.进行中,2.已完成,3.居民取消,4.审核不通过,5.其他原因取消
            if("0".equals(type)){
            if ("0".equals(type)) {
                //总数
                resultList =  elasticsearchUtil.findLineChartDateQuotaLevel1(startTime,endTime,area,level,index,"2","3",disease);
            }else{
                resultList =  elasticsearchUtil.findLineChartDateQuotaLevel2(startTime,endTime,area,level,index,"2","3",disease,type);
                resultList = elasticsearchUtil.findLineChartDateQuotaLevel1(startTime, endTime, area, level, index, "2", "3", disease);
            } else {
                resultList = elasticsearchUtil.findLineChartDateQuotaLevel2(startTime, endTime, area, level, index, "2", "3", disease, type);
            }
        }else{
            if("0".equals(type)){
        } else {
            if ("0".equals(type)) {
                //总数
                resultList =  elasticsearchUtil.findLineChartDateQuotaLevel0(startTime,endTime,area,level,index,"2","3");
            }else{
                resultList =  elasticsearchUtil.findLineChartDateQuotaLevel1(startTime,endTime,area,level,index,"2","3",type);
                resultList = elasticsearchUtil.findLineChartDateQuotaLevel0(startTime, endTime, area, level, index, "2", "3");
            } else {
                resultList = elasticsearchUtil.findLineChartDateQuotaLevel1(startTime, endTime, area, level, index, "2", "3", type);
            }
        }
        for(Map<String,Object> m:rs){
        for (Map<String, Object> m : rs) {
            Iterator iterator = resultList.iterator();
            while (iterator.hasNext()){
                SaveModel saveModel = (SaveModel)iterator.next();
                String monthKey = (String)m.get("month");
                String monthKeyEs="";
                if(saveModel.getQuotaDate()!=null){
                   monthKeyEs = DateUtil.changeQuotaDate(saveModel.getQuotaDate());
                }
                if(StringUtils.isNotBlank(monthKeyEs) && monthKey.equals(monthKeyEs)){
                    m.put("count",saveModel.getResult2());
                }else{
                    m.put("count",0);
            while (iterator.hasNext()) {
                SaveModel saveModel = (SaveModel) iterator.next();
                String monthKey = (String) m.get("month");
                String monthKeyEs = "";
                if (saveModel.getQuotaDate() != null) {
                    monthKeyEs = DateUtil.changeQuotaDate(saveModel.getQuotaDate());
                }
                if (StringUtils.isNotBlank(monthKeyEs) && monthKey.equals(monthKeyEs)) {
                    m.put("count", saveModel.getResult2());
                } else {
                    m.put("count", 0);
                }
            }
        }
@ -3144,67 +3171,66 @@ public class StatisticsESService {
    }
    /**
     *
     * @param level 等级 1 省 2 市 3 区县 4 机构 5团队
     * @param level    等级 1 省 2 市 3 区县 4 机构 5团队
     * @param lowlevel 等级 1 省 2 市 3 区县 4 机构 5团队
     * @param area
     * @param disease
     * @param type  1.总量,2.已完成,3.居民取消,4.审核不通过,5.进行中,6.其他原因取消
     *               0.总量,1.进行中,2.已完成,3.居民取消,4.审核不通过,5.其他原因取消
     * @param type     1.总量,2.已完成,3.居民取消,4.审核不通过,5.进行中,6.其他原因取消
     *                 0.总量,1.进行中,2.已完成,3.居民取消,4.审核不通过,5.其他原因取消
     * @return
     */
    public List<Map<String,Object>> getPrescriptionTotalLowLevel(int level,String lowlevel,String area,String disease,String type)throws Exception{
    public List<Map<String, Object>> getPrescriptionTotalLowLevel(int level, String lowlevel, String area, String disease, String type) throws Exception {
        String quotaDate = elasticsearchUtil.getQuotaTime();
        String index = "58";
        List<SaveModel> saveModels = new ArrayList<>();
        List<Map<String, Object>> rs = new ArrayList<>();
        //一级维度
        if (StringUtils.isEmpty(disease)){
        if (StringUtils.isEmpty(disease)) {
            //类型 1.总量,2.已完成,3.居民取消,4.审核不通过,5.进行中,6.其他原因取消
            if("1".equals(type)){
                saveModels = elasticsearchUtil.findListDateQuotaLevel0(quotaDate,area,level,index,"2",lowlevel);
            }else if("2".equals(type) || "3".equals(type) || "4".equals(type)){
                saveModels = elasticsearchUtil.findListDateQuotaLevel1(quotaDate,area,level,index,"2",lowlevel,type);
            }else if("5".equals(type)){
                saveModels = elasticsearchUtil.findListDateQuotaLevel1(quotaDate,area,level,index,"2",lowlevel,"1");
            }else if("6".equals(type)) {
            if ("1".equals(type)) {
                saveModels = elasticsearchUtil.findListDateQuotaLevel0(quotaDate, area, level, index, "2", lowlevel);
            } else if ("2".equals(type) || "3".equals(type) || "4".equals(type)) {
                saveModels = elasticsearchUtil.findListDateQuotaLevel1(quotaDate, area, level, index, "2", lowlevel, type);
            } else if ("5".equals(type)) {
                saveModels = elasticsearchUtil.findListDateQuotaLevel1(quotaDate, area, level, index, "2", lowlevel, "1");
            } else if ("6".equals(type)) {
                saveModels = elasticsearchUtil.findListDateQuotaLevel1(quotaDate, area, level, index, "2", lowlevel, "5");
            }
        }else{
        } else {
            //类型 1.总量,2.已完成,3.居民取消,4.审核不通过,5.进行中,6.其他原因取消
            if("1".equals(type)){
                saveModels = elasticsearchUtil.findListDateQuotaLevel1(quotaDate,area,level,index,"2",lowlevel,disease);
            }else if("2".equals(type) || "3".equals(type) || "4".equals(type)){
                saveModels = elasticsearchUtil.findListDateQuotaLevel2(quotaDate,area,level,index,"2",lowlevel,disease,type);
            }else if ("5".equals(type)){
                saveModels = elasticsearchUtil.findListDateQuotaLevel2(quotaDate,area,level,index,"2",lowlevel,disease,"1");
            }else if ("6".equals(type)){
                saveModels = elasticsearchUtil.findListDateQuotaLevel2(quotaDate,area,level,index,"2",lowlevel,disease,"5");
            if ("1".equals(type)) {
                saveModels = elasticsearchUtil.findListDateQuotaLevel1(quotaDate, area, level, index, "2", lowlevel, disease);
            } else if ("2".equals(type) || "3".equals(type) || "4".equals(type)) {
                saveModels = elasticsearchUtil.findListDateQuotaLevel2(quotaDate, area, level, index, "2", lowlevel, disease, type);
            } else if ("5".equals(type)) {
                saveModels = elasticsearchUtil.findListDateQuotaLevel2(quotaDate, area, level, index, "2", lowlevel, disease, "1");
            } else if ("6".equals(type)) {
                saveModels = elasticsearchUtil.findListDateQuotaLevel2(quotaDate, area, level, index, "2", lowlevel, disease, "5");
            }
        }
        if ("5".equals(lowlevel)){
        if ("5".equals(lowlevel)) {
            translateTeamLeaderName2(saveModels);
        }
        Map<String, Object> map = null;
        if(saveModels.size()>0){
            for(SaveModel one:saveModels){
        if (saveModels.size() > 0) {
            for (SaveModel one : saveModels) {
                map = new HashMap<>();
                if(Integer.parseInt(lowlevel)>=level){
                    lowlevel = String.valueOf(level+1);
                if (Integer.parseInt(lowlevel) >= level) {
                    lowlevel = String.valueOf(level + 1);
                }
                if(SaveModel.townLevel.equals(lowlevel)){
                    map.put("code",one.getTown());
                    map.put("name",one.getTownName());
                }else if(SaveModel.OrgLevel.equals(lowlevel)){
                    map.put("code",one.getHospital());
                    map.put("name",one.getHospitalName());
                }else if(SaveModel.teamLevel.equals(lowlevel)){
                    map.put("code",one.getTeam());
                    map.put("name",one.getTeamName());
                if (SaveModel.townLevel.equals(lowlevel)) {
                    map.put("code", one.getTown());
                    map.put("name", one.getTownName());
                } else if (SaveModel.OrgLevel.equals(lowlevel)) {
                    map.put("code", one.getHospital());
                    map.put("name", one.getHospitalName());
                } else if (SaveModel.teamLevel.equals(lowlevel)) {
                    map.put("code", one.getTeam());
                    map.put("name", one.getTeamName());
                }
                map.put("val",one.getResult2().longValue());
                map.put("val", one.getResult2().longValue());
            }
        }else{
        } else {
            //统计数据为空时,自建结果集
//            List<Map<String, Object>> resultList = new ArrayList<>();
@ -3212,33 +3238,33 @@ public class StatisticsESService {
            List<Town> townList = null;
            List<Hospital> hospitalList = null;
            List<AdminTeam> adminTeams = null;
            if(SaveModel.cityLevel.equals(level)){
            if (SaveModel.cityLevel.equals(level)) {
                townList = townDao.findByCityCode(area);
                hospitalList = hospitalDao.findByCity(area);
                adminTeams = findAllTeam();
            }else if(SaveModel.townLevel.equals(level)){
            } else if (SaveModel.townLevel.equals(level)) {
                hospitalList = hospitalDao.findByTownCode(area);
                //adminTeams = adminTeamDao.findByTownCode(area);
            }else if(SaveModel.OrgLevel.equals(level)){
            } else if (SaveModel.OrgLevel.equals(level)) {
                adminTeams = adminTeamDao.findByOrgCode(area);
            }
            if(SaveModel.townLevel.equals(lowlevel)){
                for(Town one : townList){
                    map.put("code",one.getCode());
                    map.put("name",one.getName());
                    map.put("val",0);
            if (SaveModel.townLevel.equals(lowlevel)) {
                for (Town one : townList) {
                    map.put("code", one.getCode());
                    map.put("name", one.getName());
                    map.put("val", 0);
                }
            }else if(SaveModel.OrgLevel.equals(lowlevel)){
                for(Hospital one : hospitalList){
                    map.put("code",one.getCode());
                    map.put("name",one.getName());
                    map.put("val",0);
            } else if (SaveModel.OrgLevel.equals(lowlevel)) {
                for (Hospital one : hospitalList) {
                    map.put("code", one.getCode());
                    map.put("name", one.getName());
                    map.put("val", 0);
                }
            }else if(SaveModel.teamLevel.equals(lowlevel)){
                for(AdminTeam one : adminTeams){
                    map.put("code",one.getLeaderCode());
                    map.put("name",one.getName());
                    map.put("val",0);
            } else if (SaveModel.teamLevel.equals(lowlevel)) {
                for (AdminTeam one : adminTeams) {
                    map.put("code", one.getLeaderCode());
                    map.put("name", one.getName());
                    map.put("val", 0);
                }
            }
        }
@ -3250,7 +3276,7 @@ public class StatisticsESService {
        Map<Integer, Map<String, Object>> leaders = getAllTeamLeaders();
        if (rs != null && rs.size() > 0) {
            for (SaveModel saveModel : rs) {
                if (saveModel.getTeam()!=null){
                if (saveModel.getTeam() != null) {
                    Integer id = Integer.valueOf(saveModel.getTeam());
                    String name = getTeamLeaderNameByTeamCode(leaders, id);
                    if (org.apache.commons.lang3.StringUtils.isNotBlank(name)) {
@ -3263,89 +3289,90 @@ public class StatisticsESService {
    }
    /**
     *各个年龄段的总数
     * 各个年龄段的总数
     *
     * @param level
     * @param area
     * @param disease
     * @return
     */
    public Map<String,Object> getPrescriptionAgeTotal(String level,String area,String disease) throws Exception{
    public Map<String, Object> getPrescriptionAgeTotal(String level, String area, String disease) throws Exception {
        String quotaDate = elasticsearchUtil.getQuotaTime();
        //统计年龄分布
        List<SaveModel> list = elasticsearchUtil.findOneDateQuotaLevel2(quotaDate,area,Integer.parseInt(level),"60","2",disease);
        List<SaveModel> list = elasticsearchUtil.findOneDateQuotaLevel2(quotaDate, area, Integer.parseInt(level), "60", "2", disease);
        //总数量
        SaveModel saveModel = elasticsearchUtil.findOneDateQuotaLevel0(quotaDate,area,Integer.parseInt(level),"60","2");
        SaveModel saveModel = elasticsearchUtil.findOneDateQuotaLevel0(quotaDate, area, Integer.parseInt(level), "60", "2");
        Double num = saveModel.getResult2();
        Map<String,Object> map = new HashMap<>();
        DecimalFormat decimalFormat=new DecimalFormat("0.00");//构造方法的字符格式这里如果小数不足2位,会以0补足.
        Double ageRate = list.get(0).getResult2()/num;
        map.put("0ageRate",decimalFormat.format(ageRate));
        ageRate = list.get(1).getResult2()/num;
        map.put("7ageRate",decimalFormat.format(ageRate));
        ageRate = list.get(2).getResult2()/num;
        map.put("19ageRate",decimalFormat.format(ageRate));
        ageRate = list.get(3).getResult2()/num;
        map.put("31ageRate",decimalFormat.format(ageRate));
        ageRate = list.get(4).getResult2()/num;
        map.put("51ageRate",decimalFormat.format(ageRate));
        ageRate = list.get(5).getResult2()/num;
        map.put("65ageRate",decimalFormat.format(ageRate));
        map.put("0age",list.get(0).getResult2().longValue());
        map.put("7age",list.get(1).getResult2().longValue());
        map.put("19age",list.get(2).getResult2().longValue());
        map.put("31age",list.get(3).getResult2().longValue());
        map.put("51age",list.get(4).getResult2().longValue());
        map.put("65age",list.get(5).getResult2().longValue());
        map.put("total",saveModel.getResult2().longValue());
        Map<String, Object> map = new HashMap<>();
        DecimalFormat decimalFormat = new DecimalFormat("0.00");//构造方法的字符格式这里如果小数不足2位,会以0补足.
        Double ageRate = list.get(0).getResult2() / num;
        map.put("0ageRate", decimalFormat.format(ageRate));
        ageRate = list.get(1).getResult2() / num;
        map.put("7ageRate", decimalFormat.format(ageRate));
        ageRate = list.get(2).getResult2() / num;
        map.put("19ageRate", decimalFormat.format(ageRate));
        ageRate = list.get(3).getResult2() / num;
        map.put("31ageRate", decimalFormat.format(ageRate));
        ageRate = list.get(4).getResult2() / num;
        map.put("51ageRate", decimalFormat.format(ageRate));
        ageRate = list.get(5).getResult2() / num;
        map.put("65ageRate", decimalFormat.format(ageRate));
        map.put("0age", list.get(0).getResult2().longValue());
        map.put("7age", list.get(1).getResult2().longValue());
        map.put("19age", list.get(2).getResult2().longValue());
        map.put("31age", list.get(3).getResult2().longValue());
        map.put("51age", list.get(4).getResult2().longValue());
        map.put("65age", list.get(5).getResult2().longValue());
        map.put("total", saveModel.getResult2().longValue());
        return map;
    }
    public Map<String,Object> getPrescriptionDispatchingTotal(int level,String area,String disease)throws Exception{
    public Map<String, Object> getPrescriptionDispatchingTotal(int level, String area, String disease) throws Exception {
        List<SaveModel> seltList = null;//自取集合
        List<SaveModel> deliveryList = null;//物流配送集合
        List<SaveModel> healthDoctorList = null;//健管师配送集合
        String quotaTime = elasticsearchUtil.getQuotaTime();
        if(StringUtils.isNotBlank(disease)){
        if (StringUtils.isNotBlank(disease)) {
            //自取
            seltList = elasticsearchUtil.findListDateQuotaLevel2(quotaTime,area,level,"62","2","","1",disease);
            seltList = elasticsearchUtil.findListDateQuotaLevel2(quotaTime, area, level, "62", "2", "", "1", disease);
            //物流配送
            deliveryList = elasticsearchUtil.findListDateQuotaLevel2(quotaTime,area,level,"62","2","","2",disease);
            deliveryList = elasticsearchUtil.findListDateQuotaLevel2(quotaTime, area, level, "62", "2", "", "2", disease);
            //健管师配送
            healthDoctorList = elasticsearchUtil.findListDateQuotaLevel2(quotaTime,area,level,"62","2","","2",disease);
        }else{
            healthDoctorList = elasticsearchUtil.findListDateQuotaLevel2(quotaTime, area, level, "62", "2", "", "2", disease);
        } else {
            //自取
            seltList = elasticsearchUtil.findListDateQuotaLevel1(quotaTime,area,level,"62","2","","1");
            seltList = elasticsearchUtil.findListDateQuotaLevel1(quotaTime, area, level, "62", "2", "", "1");
            //物流配送
            deliveryList = elasticsearchUtil.findListDateQuotaLevel1(quotaTime,area,level,"62","2","","2");
            deliveryList = elasticsearchUtil.findListDateQuotaLevel1(quotaTime, area, level, "62", "2", "", "2");
            //健管师配送
            healthDoctorList = elasticsearchUtil.findListDateQuotaLevel1(quotaTime,area,level,"62","2","","2");
            healthDoctorList = elasticsearchUtil.findListDateQuotaLevel1(quotaTime, area, level, "62", "2", "", "2");
        }
        Map<String,Object> rs = new HashedMap();
        Map<String, Object> rs = new HashedMap();
        //自取数目
        if(seltList!=null && seltList.size()>0){
            rs.put("seltTotal",seltList.get(0).getResult2());
        }else{
            rs.put("seltTotal",0);
        if (seltList != null && seltList.size() > 0) {
            rs.put("seltTotal", seltList.get(0).getResult2());
        } else {
            rs.put("seltTotal", 0);
        }
        //快递配送
        if(deliveryList!=null && deliveryList.size()>0){
            rs.put("deliveryTotal",deliveryList.get(0).getResult2());
        }else{
            rs.put("deliveryTotal",0);
        if (deliveryList != null && deliveryList.size() > 0) {
            rs.put("deliveryTotal", deliveryList.get(0).getResult2());
        } else {
            rs.put("deliveryTotal", 0);
        }
        //健管师配送
        if(healthDoctorList!=null && healthDoctorList.size()>0){
            rs.put("doctorTotal",healthDoctorList.get(0).getResult2());
        }else{
            rs.put("doctorTotal",0);
        if (healthDoctorList != null && healthDoctorList.size() > 0) {
            rs.put("doctorTotal", healthDoctorList.get(0).getResult2());
        } else {
            rs.put("doctorTotal", 0);
        }
        return rs;
    }
@ -3354,45 +3381,45 @@ public class StatisticsESService {
     * @param level
     * @param area
     * @param disease
     * @param type 1.自取,2.快递配送,3.健管师配送
     * @param type    1.自取,2.快递配送,3.健管师配送
     * @return
     */
    public List<Map<String,Object>> getPrescriptionDispatchingHistogram(int level,String area,String disease,String type)throws Exception{
    public List<Map<String, Object>> getPrescriptionDispatchingHistogram(int level, String area, String disease, String type) throws Exception {
        List<Map<String,Object>> rs =new ArrayList<>();
        List<Map<String, Object>> rs = new ArrayList<>();
        Calendar dd = Calendar.getInstance();//定义日期实例
        Date endDate = new Date();
        dd.setTime(endDate);
        for(int i=1;i<7;i++){
            Map<String,Object> mc = new HashedMap();
        for (int i = 1; i < 7; i++) {
            Map<String, Object> mc = new HashedMap();
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
            String date = sdf.format(dd.getTime());
            mc.put("month",date);
            mc.put("count",0);
            dd.add(Calendar.MONTH,-1);
            mc.put("month", date);
            mc.put("count", 0);
            dd.add(Calendar.MONTH, -1);
            rs.add(mc);
        }
        String startTime = DateUtil.dateToStr(dd.getTime(),"YYYY-MM-dd HH:mm:ss");
        String endTime = DateUtil.dateToStr(new Date(),"YYYY-MM-dd HH:mm:ss");
        String startTime = DateUtil.dateToStr(dd.getTime(), "YYYY-MM-dd HH:mm:ss");
        String endTime = DateUtil.dateToStr(new Date(), "YYYY-MM-dd HH:mm:ss");
        List<SaveModel> resultList = new ArrayList<>();
        if (StringUtils.isNotBlank(disease)){
            resultList =  elasticsearchUtil.findLineChartDateQuotaLevel2(startTime,endTime,area,level,"62","2","3",type,disease);
        }else{
            resultList =  elasticsearchUtil.findLineChartDateQuotaLevel1(startTime,endTime,area,level,"62","2","3",type);
        if (StringUtils.isNotBlank(disease)) {
            resultList = elasticsearchUtil.findLineChartDateQuotaLevel2(startTime, endTime, area, level, "62", "2", "3", type, disease);
        } else {
            resultList = elasticsearchUtil.findLineChartDateQuotaLevel1(startTime, endTime, area, level, "62", "2", "3", type);
        }
        for(Map<String,Object> m:rs){
        for (Map<String, Object> m : rs) {
            Iterator iterator = resultList.iterator();
            while (iterator.hasNext()){
                SaveModel saveModel = (SaveModel)iterator.next();
                if(saveModel.getQuotaDate()!=null){
                    String monthKey = (String)m.get("month");
            while (iterator.hasNext()) {
                SaveModel saveModel = (SaveModel) iterator.next();
                if (saveModel.getQuotaDate() != null) {
                    String monthKey = (String) m.get("month");
                    String monthKeyEs = DateUtil.changeQuotaDate(saveModel.getQuotaDate());
                    if(monthKey.equals(monthKeyEs)){
                        m.put("count",saveModel.getResult2());
                    if (monthKey.equals(monthKeyEs)) {
                        m.put("count", saveModel.getResult2());
                    }
                }
            }
@ -3401,49 +3428,48 @@ public class StatisticsESService {
    }
    /**
     *
     * @param level
     * @param lowlevel
     * @param area
     * @param disease
     * @param type 1.自取,2.快递配送,3.健管师配送..
     * @param type     1.自取,2.快递配送,3.健管师配送..
     * @return
     */
    public List<Map<String,Object>> getPrescriptionDispatchingLowLevel(int level,String lowlevel,String area,String disease,String type)throws Exception{
    public List<Map<String, Object>> getPrescriptionDispatchingLowLevel(int level, String lowlevel, String area, String disease, String type) throws Exception {
        String index = "62";
        String quotaDate = elasticsearchUtil.getQuotaTime();
        List<SaveModel> saveModels = new ArrayList<>();
        List<Map<String, Object>> rs = new ArrayList<>();
        if (StringUtils.isNotBlank(disease)){
        if (StringUtils.isNotBlank(disease)) {
            //类型 1.自取,2.快递配送,3.健管师配送
            saveModels = elasticsearchUtil.findListDateQuotaLevel2(quotaDate,area,level,index,"2",lowlevel,type,disease);
        }else{
            saveModels = elasticsearchUtil.findListDateQuotaLevel1(quotaDate,area,level,index,"2",lowlevel,type);
            saveModels = elasticsearchUtil.findListDateQuotaLevel2(quotaDate, area, level, index, "2", lowlevel, type, disease);
        } else {
            saveModels = elasticsearchUtil.findListDateQuotaLevel1(quotaDate, area, level, index, "2", lowlevel, type);
        }
        if ("5".equals(lowlevel)){
        if ("5".equals(lowlevel)) {
            translateTeamLeaderName2(saveModels);
        }
        Map<String, Object> map = null;
        if(saveModels.size()>0){
            for(SaveModel one:saveModels){
        if (saveModels.size() > 0) {
            for (SaveModel one : saveModels) {
                map = new HashMap<>();
                if(Integer.parseInt(lowlevel)>=level){
                    lowlevel = String.valueOf(level+1);
                if (Integer.parseInt(lowlevel) >= level) {
                    lowlevel = String.valueOf(level + 1);
                }
                if(SaveModel.townLevel.equals(lowlevel)){
                    map.put("code",one.getTown());
                    map.put("name",one.getTownName());
                }else if(SaveModel.OrgLevel.equals(lowlevel)){
                    map.put("code",one.getHospital());
                    map.put("name",one.getHospitalName());
                }else if(SaveModel.teamLevel.equals(lowlevel)){
                    map.put("code",one.getTeam());
                    map.put("name",one.getTeamName());
                if (SaveModel.townLevel.equals(lowlevel)) {
                    map.put("code", one.getTown());
                    map.put("name", one.getTownName());
                } else if (SaveModel.OrgLevel.equals(lowlevel)) {
                    map.put("code", one.getHospital());
                    map.put("name", one.getHospitalName());
                } else if (SaveModel.teamLevel.equals(lowlevel)) {
                    map.put("code", one.getTeam());
                    map.put("name", one.getTeamName());
                }
                map.put("val",one.getResult2().longValue());
                map.put("val", one.getResult2().longValue());
            }
        }else{
        } else {
            //统计数据为空时,自建结果集
//            List<Map<String, Object>> resultList = new ArrayList<>();
@ -3451,33 +3477,33 @@ public class StatisticsESService {
            List<Town> townList = null;
            List<Hospital> hospitalList = null;
            List<AdminTeam> adminTeams = null;
            if(SaveModel.cityLevel.equals(level)){
            if (SaveModel.cityLevel.equals(level)) {
                townList = townDao.findByCityCode(area);
                hospitalList = hospitalDao.findByCity(area);
                adminTeams = findAllTeam();
            }else if(SaveModel.townLevel.equals(level)){
            } else if (SaveModel.townLevel.equals(level)) {
                hospitalList = hospitalDao.findByTownCode(area);
                //adminTeams = adminTeamDao.findByTownCode(area);
            }else if(SaveModel.OrgLevel.equals(level)){
            } else if (SaveModel.OrgLevel.equals(level)) {
                adminTeams = adminTeamDao.findByOrgCode(area);
            }
            if(SaveModel.townLevel.equals(lowlevel)){
                for(Town one : townList){
                    map.put("code",one.getCode());
                    map.put("name",one.getName());
                    map.put("val",0);
            if (SaveModel.townLevel.equals(lowlevel)) {
                for (Town one : townList) {
                    map.put("code", one.getCode());
                    map.put("name", one.getName());
                    map.put("val", 0);
                }
            }else if(SaveModel.OrgLevel.equals(lowlevel)){
                for(Hospital one : hospitalList){
                    map.put("code",one.getCode());
                    map.put("name",one.getName());
                    map.put("val",0);
            } else if (SaveModel.OrgLevel.equals(lowlevel)) {
                for (Hospital one : hospitalList) {
                    map.put("code", one.getCode());
                    map.put("name", one.getName());
                    map.put("val", 0);
                }
            }else if(SaveModel.teamLevel.equals(lowlevel)){
                for(AdminTeam one : adminTeams){
                    map.put("code",one.getLeaderCode());
                    map.put("name",one.getName());
                    map.put("val",0);
            } else if (SaveModel.teamLevel.equals(lowlevel)) {
                for (AdminTeam one : adminTeams) {
                    map.put("code", one.getLeaderCode());
                    map.put("name", one.getName());
                    map.put("val", 0);
                }
            }
        }
@ -3488,58 +3514,59 @@ public class StatisticsESService {
    /**
     * 获取下部部费用平均值或总数
     *
     * @param level
     * @param lowlevel
     * @param area
     * @param disease
     * @param type 1.总量,2.平均值
     * @param type     1.总量,2.平均值
     * @return
     */
    public List<Map<String,Object>> getPrescriptionCostLowLevel(String level,String lowlevel,String area,String disease,String type) throws Exception{
    public List<Map<String, Object>> getPrescriptionCostLowLevel(String level, String lowlevel, String area, String disease, String type) throws Exception {
        String quotaDate = elasticsearchUtil.getQuotaTime();
        //1.总量
        List<SaveModel> list = elasticsearchUtil.findListDateQuotaLevel1(quotaDate,area,Integer.parseInt(level),"61","2",lowlevel,disease);
        Map<String,Object> map = null;
        List<Map<String,Object>> countList = new ArrayList<>();
        if("1".equals(type)){
            for(SaveModel one:list){
        List<SaveModel> list = elasticsearchUtil.findListDateQuotaLevel1(quotaDate, area, Integer.parseInt(level), "61", "2", lowlevel, disease);
        Map<String, Object> map = null;
        List<Map<String, Object>> countList = new ArrayList<>();
        if ("1".equals(type)) {
            for (SaveModel one : list) {
                map = new HashMap<>();
                if(SaveModel.townLevel.equals(lowlevel)){
                    map.put("code",one.getTown());
                    map.put("name",one.getTownName());
                }else if(SaveModel.OrgLevel.equals(lowlevel)){
                    map.put("code",one.getHospital());
                    map.put("name",one.getHospitalName());
                }else if(SaveModel.teamLevel.equals(lowlevel)){
                    map.put("code",one.getTeam());
                    map.put("name",one.getTeamName());
                }
                map.put("val",decimalFormat.format(one.getResult1()/100));
                if (SaveModel.townLevel.equals(lowlevel)) {
                    map.put("code", one.getTown());
                    map.put("name", one.getTownName());
                } else if (SaveModel.OrgLevel.equals(lowlevel)) {
                    map.put("code", one.getHospital());
                    map.put("name", one.getHospitalName());
                } else if (SaveModel.teamLevel.equals(lowlevel)) {
                    map.put("code", one.getTeam());
                    map.put("name", one.getTeamName());
                }
                map.put("val", decimalFormat.format(one.getResult1() / 100));
                countList.add(map);
            }
        }else{
        } else {
            //2.平均值
            //去重获取总人数,计算人均费用
            String sql = "";
            for(SaveModel one:list){
            for (SaveModel one : list) {
                sql = "  select count(DISTINCT(s.patient)) as num from wlyy_prescription_pay p left join wlyy_prescription s on p.prescription_code = s. CODE  ";
                sql +=" and  p.trace_time <= "+one.getQuotaDate();
                sql += " and  p.trace_time <= " + one.getQuotaDate();
                Map<String, Object> count = jdbcTemplate.queryForMap(sql);
                map = new HashMap<>();
                if(SaveModel.townLevel.equals(lowlevel)){
                    map.put("code",one.getTown());
                    map.put("name",one.getTownName());
                }else if(SaveModel.OrgLevel.equals(lowlevel)){
                    map.put("code",one.getHospital());
                    map.put("name",one.getHospitalName());
                }else if(SaveModel.teamLevel.equals(lowlevel)){
                    map.put("code",one.getTeam());
                    map.put("name",one.getTeamName());
                }
                Long num = (Long)count.get("num");
                String avg = decimalFormat.format(one.getResult1()/num);
                map.put("val",avg);
                if (SaveModel.townLevel.equals(lowlevel)) {
                    map.put("code", one.getTown());
                    map.put("name", one.getTownName());
                } else if (SaveModel.OrgLevel.equals(lowlevel)) {
                    map.put("code", one.getHospital());
                    map.put("name", one.getHospitalName());
                } else if (SaveModel.teamLevel.equals(lowlevel)) {
                    map.put("code", one.getTeam());
                    map.put("name", one.getTeamName());
                }
                Long num = (Long) count.get("num");
                String avg = decimalFormat.format(one.getResult1() / num);
                map.put("val", avg);
                countList.add(map);
            }
        }
@ -3548,66 +3575,67 @@ public class StatisticsESService {
    /**
     * 获取中部费用平均值
     *
     * @param level
     * @param area
     * @param disease
     * @param startDate
     * @param endDate
     * @param type 1.按日,2.按周,3.按月
     * @param type      1.按日,2.按周,3.按月
     */
    public List<Map<String,Object>> getPrescriptionCostAvgLine(String level,String area,String disease,String startDate,String endDate,String type) throws Exception{
    public List<Map<String, Object>> getPrescriptionCostAvgLine(String level, String area, String disease, String startDate, String endDate, String type) throws Exception {
        startDate = elasticsearchUtil.changeTime(startDate += " 00:00:00");
        endDate = elasticsearchUtil.changeTime(endDate += " 23:59:59");
        List<SaveModel> list = elasticsearchUtil.findLineChartDateQuotaLevel1(startDate,endDate,area,Integer.parseInt(level),"61","2",type,disease);
        List<SaveModel> list = elasticsearchUtil.findLineChartDateQuotaLevel1(startDate, endDate, area, Integer.parseInt(level), "61", "2", type, disease);
        String sql = "";
        Map<String,Object> map = null;
        List<Map<String,Object>> countList = new ArrayList<>();
        for(SaveModel one:list){
        Map<String, Object> map = null;
        List<Map<String, Object>> countList = new ArrayList<>();
        for (SaveModel one : list) {
            sql = "  select count(DISTINCT(s.patient)) as num from wlyy_prescription_pay p left join wlyy_prescription s on p.prescription_code = s. CODE  ";
            sql += " and  p.trace_time <= "+one.getQuotaDate();
            if(SaveModel.townLevel.equals(level)||SaveModel.cityLevel.equals(level)){
                sql += " and LEFT(s.hospital,6) ='" + area+ "' ";
            }else if(SaveModel.OrgLevel.equals(level)){
                sql += " and s.hospital ='" + area+ "' ";
            }else if(SaveModel.teamLevel.equals(level)){
                sql += " and s.admin_team_id ='" + area+ "' ";
            sql += " and  p.trace_time <= " + one.getQuotaDate();
            if (SaveModel.townLevel.equals(level) || SaveModel.cityLevel.equals(level)) {
                sql += " and LEFT(s.hospital,6) ='" + area + "' ";
            } else if (SaveModel.OrgLevel.equals(level)) {
                sql += " and s.hospital ='" + area + "' ";
            } else if (SaveModel.teamLevel.equals(level)) {
                sql += " and s.admin_team_id ='" + area + "' ";
            }
            Map<String, Object> count = jdbcTemplate.queryForMap(sql);
            Long num = (Long)count.get("num");
            String avg = decimalFormat.format(one.getResult1()/num);
            Long num = (Long) count.get("num");
            String avg = decimalFormat.format(one.getResult1() / num);
            map = new HashMap<>();
            map.put("avg",avg);
            map.put("date",dateFormat.format(one.getQuotaDate()));
            map.put("avg", avg);
            map.put("date", dateFormat.format(one.getQuotaDate()));
            countList.add(map);
        }
        return countList;
    }
    public Map<String,Object> getPrescriptionCost(String level,String area,String disease) throws Exception{
    public Map<String, Object> getPrescriptionCost(String level, String area, String disease) throws Exception {
        SaveModel saveModel = null;
        String quotaDate = elasticsearchUtil.getQuotaTime();
        if(StringUtils.isNotEmpty(disease)){
            saveModel = elasticsearchUtil.findOneDateQuotaLevel1(quotaDate,area,Integer.parseInt(level),"61","2",disease);
        }else{
            saveModel = elasticsearchUtil.findOneDateQuotaLevel0(quotaDate,area,Integer.parseInt(level),"61","2");
        if (StringUtils.isNotEmpty(disease)) {
            saveModel = elasticsearchUtil.findOneDateQuotaLevel1(quotaDate, area, Integer.parseInt(level), "61", "2", disease);
        } else {
            saveModel = elasticsearchUtil.findOneDateQuotaLevel0(quotaDate, area, Integer.parseInt(level), "61", "2");
        }
        String sql = "  select count(DISTINCT(s.patient)) as num from wlyy_prescription_pay p left join wlyy_prescription s on p.prescription_code = s. CODE  ";
        sql += " and  p.trace_time <= "+dateFormat3.parse(quotaDate);
        if(SaveModel.townLevel.equals(level)||SaveModel.cityLevel.equals(level)){
            sql += " and LEFT(s.hospital,6) ='" + area+ "' ";
        }else if(SaveModel.OrgLevel.equals(level)){
            sql += " and s.hospital ='" + area+ "' ";
        }else if(SaveModel.teamLevel.equals(level)){
            sql += " and s.admin_team_id ='" + area+ "' ";
        sql += " and  p.trace_time <= " + dateFormat3.parse(quotaDate);
        if (SaveModel.townLevel.equals(level) || SaveModel.cityLevel.equals(level)) {
            sql += " and LEFT(s.hospital,6) ='" + area + "' ";
        } else if (SaveModel.OrgLevel.equals(level)) {
            sql += " and s.hospital ='" + area + "' ";
        } else if (SaveModel.teamLevel.equals(level)) {
            sql += " and s.admin_team_id ='" + area + "' ";
        }
        Map<String, Object> count = jdbcTemplate.queryForMap(sql);
        Long num = (Long)count.get("num");
        Map<String,Object> rs = new HashedMap();
        Long num = (Long) count.get("num");
        Map<String, Object> rs = new HashedMap();
        BigDecimal s = BigDecimal.valueOf(num);
        BigDecimal a = BigDecimal.valueOf(saveModel.getResult2()/num);
        rs.put("sum",s.divide(new BigDecimal(100)).setScale(2,BigDecimal.ROUND_HALF_UP));
        rs.put("avg",a.divide((new BigDecimal(100))).setScale(2,BigDecimal.ROUND_HALF_UP));
        BigDecimal a = BigDecimal.valueOf(saveModel.getResult2() / num);
        rs.put("sum", s.divide(new BigDecimal(100)).setScale(2, BigDecimal.ROUND_HALF_UP));
        rs.put("avg", a.divide((new BigDecimal(100))).setScale(2, BigDecimal.ROUND_HALF_UP));
        return rs;
    }
}