Browse Source

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

chenweida 7 năm trước cách đây
mục cha
commit
9c35b91b3d

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

@ -93,69 +93,6 @@ public class StatisticsESService {
    }
//    /**
//     * 查询某一天父level下的子level 例如 查询市下面的团队,或者区下面的团队
//     *
//     * @param index      指标code
//     * @param area           机构code或者团队code或者town code或者city code
//     * @param timeLevel      1增量 2到达量
//     * @param level      父arealevel
//     * @param lowLevel 子arealevel
//     * @return
//     */
//    public List<SaveModel> findOneDateQuotaByChllevel(String startDate,
//                                                      String endDate,
//                                                      String index,
//                                                      String area,
//                                                      String timeLevel,
//                                                      String level,
//                                                      String lowLevel) {
//
//        //时间格式转换  yyyy-MM-dd转成 2017-07-17T00:00:00+0800
//        startDate = changeDate(startDate);
//        endDate = changeDate(endDate);
//
//        StringBuffer sql = new StringBuffer();
//        StringBuffer groupBy = new StringBuffer();
//        //根据 childAreaLevel   group by
//        if (SaveModel.teamLevel.equals(level)) {
//            sql.append("select team,teamName,result1,result2 from wlyy_quota_test where  ");
//            groupBy.append(" group by team,teamName");
//        } else if (SaveModel.OrgLevel.equals(level)) {
//            sql.append("select hospital,hospitalName,sum(result1) result1,sum(result2) result2 from wlyy_quota_test where  ");
//            groupBy.append(" group by hospital,hospitalName");
//        } else if (SaveModel.townLevel.equals(level)) {
//            sql.append("select town,townName,sum(result1) result1,sum(result2) result2 from wlyy_quota_test where ");
//            groupBy.append(" group by town,townName");
//        } else if (SaveModel.cityLevel.equals(level)) {
//            sql.append("select city,cityName,sum(result1) result1,sum(result2) result2 from wlyy_quota_test where  ");
//            groupBy.append(" group by city,cityName");
//        }
//
//        sql.append("  quotaCode='" + index + "'  ");
//        sql.append(" and timeLevel='" + timeLevel + "'  ");
//        sql.append(" and areaLevel='5'");
//        if(StringUtils.isNotEmpty(startDate)){
//            sql.append(" and quotaDate>='" + startDate + "'");
//        }
//        if(StringUtils.isNotEmpty(endDate)){
//            sql.append(" and quotaDate<='" + endDate + "'");
//        }
//        //查询code
//        if (SaveModel.teamLevel.equals(lowLevel)) {
//            sql.append(" and team='" + area + "'");
//        } else if (SaveModel.OrgLevel.equals(lowLevel)) {
//            sql.append(" and hospital='" + area + "'");
//        } else if (SaveModel.townLevel.equals(lowLevel)) {
//            sql.append(" and town='" + area + "'");
//        } else if (SaveModel.cityLevel.equals(lowLevel)) {
//            sql.append(" and city='" + area + "'");
//        }
//        sql.append(groupBy);
//        return elasticsearchUtil.excute(sql.toString(),SaveModel.class,"","");
//    }
    /**
     * 获取时间范围内按间隔统计指标增量
     *
@ -689,7 +626,7 @@ 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) {
            total = list.get(0).getResult2().longValue();
@ -2334,7 +2271,7 @@ public class StatisticsESService {
            if (StringUtils.isBlank(lowCode)) {
                yearsList = elasticsearchUtil.findDateQuotaLevel0(lastDate, lastDate, area, level, "1", "2", "", low_level);
            } else {
                yearsList = elasticsearchUtil.findDateQuotaLevel1(lastDate, lastDate, area, level, "17", "2",lowCode, "", low_level);
                yearsList = elasticsearchUtil.findDateQuotaLevel1(lastDate, lastDate, area, level, "17", "2", lowCode, "", low_level);
            }
            Map<String, SaveModel> resultMap = new HashMap<>();
@ -2995,7 +2932,6 @@ public class StatisticsESService {
                map.put("val", one.getResult2().longValue());
            }
        } else {
            //统计数据为空时,自建结果集
            List<Town> townList = null;
            List<Hospital> hospitalList = null;
@ -3105,7 +3041,7 @@ public class StatisticsESService {
        //因为一个处方可能有多个疾病状态 所以分开2个指标
        String index58 = "58";//统计长处方总数疾病和状态维度
        String index64 = "64";//统计长处方总数状态维度
        Map<String,Map<String, Object>> rs = new LinkedHashMap<>();
        Map<String, Map<String, Object>> rs = new LinkedHashMap<>();
        Calendar dd = Calendar.getInstance();//定义日期实例
        Date endDate = new Date();
@ -3118,7 +3054,7 @@ public class StatisticsESService {
            mc.put("month", date);
            mc.put("count", 0);
            dd.add(Calendar.MONTH, -1);
            rs.put(date,mc);
            rs.put(date, 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");
@ -3140,14 +3076,14 @@ public class StatisticsESService {
            }
        }
        //把数据设置到初始化的Map里面去
        for(SaveModel saveModel:resultList){
        for (SaveModel saveModel : resultList) {
            String monthKeyEs = "";
            if (saveModel.getQuotaDate() != null) {
                monthKeyEs = DateUtil.changeQuotaDate(saveModel.getQuotaDate());
            }
            if (StringUtils.isNotBlank(monthKeyEs) && rs.containsKey(monthKeyEs)) {
                Map<String, Object> oneMc = rs.get(monthKeyEs);
                oneMc.put("count",saveModel.getResult2());
                oneMc.put("count", saveModel.getResult2());
            }
        }
@ -3283,17 +3219,24 @@ public class StatisticsESService {
     * @return
     */
    public Map<String, Object> getPrescriptionAgeTotal(String level, String area, String disease) throws Exception {
        //统计长处方总数疾病和状态维度(去重相同患者)
        String index = "63";
        String index63 = "63";  //统计长处方总数疾病和状态维度(去重相同患者)
        String index68 = "68";  //统计长处方年龄人数(按照患者去重)
        Map<String, Object> map = new HashMap<>();
        String quotaDate = elasticsearchUtil.getQuotaTime();
        //统计年龄分布
        List<SaveModel> list = elasticsearchUtil.findOneDateQuotaLevel2(quotaDate, area, Integer.parseInt(level), index, "2", disease);
        //总数量
        SaveModel saveModel = elasticsearchUtil.findOneDateQuotaLevel0(quotaDate, area, Integer.parseInt(level), index, "2");
        List<SaveModel> list = null;
        SaveModel saveModel =null;
        if (org.springframework.util.StringUtils.isEmpty(disease)) {
            list = elasticsearchUtil.findListDateQuotaLevel1(quotaDate, area, Integer.parseInt(level), index68, SaveModel.timeLevel_DDL, null, null);
            //总数量
            saveModel = elasticsearchUtil.findOneDateQuotaLevel1NoSlaveKey1(quotaDate, area, Integer.parseInt(level), index68, SaveModel.timeLevel_DDL);
        } else {
            list = elasticsearchUtil.findListDateQuotaLevel2(quotaDate, area, Integer.parseInt(level), index63, SaveModel.timeLevel_DDL, null,null, disease);
            //总数量
            saveModel = elasticsearchUtil.findOneDateQuotaLevel2NoSlaveKey1(quotaDate, area, Integer.parseInt(level), index63, SaveModel.timeLevel_DDL, disease);
        }
        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));
@ -3320,7 +3263,9 @@ public class StatisticsESService {
    }
    public Map<String, Object> getPrescriptionDispatchingTotal(int level, String area, String disease) throws Exception {
        String index = "62";
        String index62 = "62";//统计长处方配送方式和疾病维度
        String index67 = "67";//统计长处方配送方式维度
        SaveModel selt = null;//自取集合
        SaveModel delivery = null;//物流配送集合
        SaveModel healthDoctor = null;//健管师配送集合
@ -3328,18 +3273,18 @@ public class StatisticsESService {
        //type二级指标,disease一级指标
        if (StringUtils.isNotBlank(disease)) {
            //自取
            selt = elasticsearchUtil.findOneDateQuotaLevel2(quotaTime, area, level, index, "2", disease, "1");
            selt = elasticsearchUtil.findOneDateQuotaLevel2(quotaTime, area, level, index62, SaveModel.timeLevel_DDL, disease, "1");
            //物流配送
            delivery = elasticsearchUtil.findOneDateQuotaLevel2(quotaTime, area, level, index, "2", disease, "2");
            delivery = elasticsearchUtil.findOneDateQuotaLevel2(quotaTime, area, level, index62, SaveModel.timeLevel_DDL, disease, "2");
            //健管师配送
            healthDoctor = elasticsearchUtil.findOneDateQuotaLevel2(quotaTime, area, level, index, "2", disease, "3");
            healthDoctor = elasticsearchUtil.findOneDateQuotaLevel2(quotaTime, area, level, index62, SaveModel.timeLevel_DDL, disease, "3");
        } else {
            //自取
            selt = elasticsearchUtil.findOneDateQuotaLevel2NoSlaveKey1(quotaTime, area, level, index, SaveModel.timeLevel_DDL, "1");
            selt = elasticsearchUtil.findOneDateQuotaLevel1(quotaTime, area, level, index67, SaveModel.timeLevel_DDL, "1");
            //物流配送
            delivery = elasticsearchUtil.findOneDateQuotaLevel2NoSlaveKey1(quotaTime, area, level, index, SaveModel.timeLevel_DDL, "2");
            delivery = elasticsearchUtil.findOneDateQuotaLevel1(quotaTime, area, level, index67, SaveModel.timeLevel_DDL, "2");
            //健管师配送
            healthDoctor = elasticsearchUtil.findOneDateQuotaLevel2NoSlaveKey1(quotaTime, area, level, index, SaveModel.timeLevel_DDL, "3");
            healthDoctor = elasticsearchUtil.findOneDateQuotaLevel1(quotaTime, area, level, index67, SaveModel.timeLevel_DDL, "3");
        }
@ -3375,6 +3320,8 @@ public class StatisticsESService {
     * @return
     */
    public List<Map<String, Object>> getPrescriptionDispatchingHistogram(int level, String area, String disease, String type) throws Exception {
        String index62 = "62";//统计长处方配送方式和疾病维度
        String index67 = "67";//统计长处方配送方式维度
        List<Map<String, Object>> rs = new ArrayList<>();
        Calendar dd = Calendar.getInstance();//定义日期实例
@ -3396,9 +3343,9 @@ public class StatisticsESService {
        List<SaveModel> resultList = new ArrayList<>();
        if (StringUtils.isNotBlank(disease)) {
            resultList = elasticsearchUtil.findLineChartDateQuotaLevel2(startTime, endTime, area, level, "62", "2", "3", disease, type);
            resultList = elasticsearchUtil.findLineChartDateQuotaLevel2(startTime, endTime, area, level, index62, SaveModel.timeLevel_DDL, SaveModel.interval_month, disease, type);
        } else {
            resultList = elasticsearchUtil.findLineChartDateQuotaLevel2NoSlaveKey1(startTime, endTime, area, level, "62", "2", "3", type);
            resultList = elasticsearchUtil.findLineChartDateQuotaLevel1(startTime, endTime, area, level, index67, SaveModel.timeLevel_DDL, SaveModel.interval_month, type);
        }
        for (Map<String, Object> m : rs) {
@ -3427,17 +3374,19 @@ public class StatisticsESService {
     */
    public List<Map<String, Object>> getPrescriptionDispatchingLowLevel(int level, String lowlevel, String area, String disease, String type) throws Exception {
        String index = "62";
        String index62 = "62";//统计长处方配送方式和疾病维度
        String index67 = "67";//统计长处方配送方式维度
        String quotaDate = elasticsearchUtil.getQuotaTime();
        List<SaveModel> saveModels = new ArrayList<>();
        List<Map<String, Object>> rs = new ArrayList<>();
        if (StringUtils.isNotBlank(disease)) {
            //类型 1.自取,2.快递配送,3.健管师配送
            saveModels = elasticsearchUtil.findListDateQuotaLevel2(quotaDate, area, level, index, SaveModel.timeLevel_DDL, lowlevel, disease, type);
            saveModels = elasticsearchUtil.findListDateQuotaLevel2(quotaDate, area, level, index62, SaveModel.timeLevel_DDL, lowlevel, disease, type);
        } else {
            saveModels = elasticsearchUtil.findListDateQuotaLevel2NoSlaveKey1(quotaDate, area, level, index, SaveModel.timeLevel_DDL, lowlevel, type);
            saveModels = elasticsearchUtil.findListDateQuotaLevel1(quotaDate, area, level, index67, SaveModel.timeLevel_DDL, lowlevel, type);
        }
        if ("5".equals(lowlevel)) {
        if (SaveModel.teamLevel.equals(lowlevel)) {
            translateTeamLeaderName2(saveModels);
        }
        Map<String, Object> map = null;
@ -3513,14 +3462,24 @@ public class StatisticsESService {
     * @return
     */
    public List<Map<String, Object>> getPrescriptionCostLowLevel(String level, String lowlevel, String area, String disease, String type) throws Exception {
        String index61 = "61";//统计长处方费用总数疾病维度
        String index66 = "66";//费用的指标code
        String index63 = "63";//统计长处方年龄疾病人数(按照患者去重)
        String index68 = "68";//统计长处方年龄人数(按照患者去重)
        String quotaDate = elasticsearchUtil.getQuotaTime();
        //1.总量
        List<SaveModel> list = elasticsearchUtil.findListDateQuotaLevel1(quotaDate, area, Integer.parseInt(level), "61", "2", lowlevel, disease);
        List<SaveModel> costList = null;
        Map<String, SaveModel> costMap = new HashedMap();
        List<SaveModel> numList = null;
        //获取费用
        if (org.springframework.util.StringUtils.isEmpty(disease)) {
            costList = elasticsearchUtil.findListDateQuotaLevel0(quotaDate, area, Integer.parseInt(level), index66, SaveModel.timeLevel_DDL, lowlevel);
        } else {
            costList = elasticsearchUtil.findListDateQuotaLevel1(quotaDate, area, Integer.parseInt(level), index61, SaveModel.timeLevel_DDL, lowlevel, disease);
        }
        Map<String, Object> map = null;
        List<Map<String, Object>> countList = new ArrayList<>();
        if ("1".equals(type)) {
            for (SaveModel one : list) {
            for (SaveModel one : costList) {
                map = new HashMap<>();
                if (SaveModel.townLevel.equals(lowlevel)) {
                    map.put("code", one.getTown());
@ -3537,30 +3496,50 @@ public class StatisticsESService {
            }
        } else {
            //2.平均值
            //去重获取总人数,计算人均费用
            String sql = "";
            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();
                Map<String, Object> count = jdbcTemplate.queryForMap(sql);
            //费用list转map
            for (SaveModel one : costList) {
                if (SaveModel.townLevel.equals(lowlevel)) {
                    costMap.put(one.getTown(), one);
                } else if (SaveModel.OrgLevel.equals(lowlevel)) {
                    costMap.put(one.getHospital(), one);
                } else if (SaveModel.teamLevel.equals(lowlevel)) {
                    costMap.put(one.getTeam(), one);
                }
            }
            //获取人数
            if (org.springframework.util.StringUtils.isEmpty(disease)) {
                numList = elasticsearchUtil.findListDateQuotaLevel1NoSlaveKey1(quotaDate, area, Integer.parseInt(level), index68, SaveModel.timeLevel_DDL, lowlevel);
            } else {
                numList = elasticsearchUtil.findListDateQuotaLevel2NoSlaveKey1(quotaDate, area, Integer.parseInt(level), index63, SaveModel.timeLevel_DDL, lowlevel, disease);
            }
            for (SaveModel one : numList) {
                String avg = "0.0";
                map = new HashMap<>();
                if (SaveModel.townLevel.equals(lowlevel)) {
                    map.put("code", one.getTown());
                    map.put("name", one.getTownName());
                    SaveModel costOne = costMap.get(one.getTown());
                    if (costOne != null) {
                        avg = decimalFormat.format(costOne.getResult1() / one.getResult1());
                    }
                    map.put("val", avg);
                } else if (SaveModel.OrgLevel.equals(lowlevel)) {
                    map.put("code", one.getHospital());
                    map.put("name", one.getHospitalName());
                    SaveModel costOne = costMap.get(one.getHospital());
                    if (costOne != null) {
                        avg = decimalFormat.format(costOne.getResult1() / one.getResult1());
                    }
                    map.put("val", avg);
                } else if (SaveModel.teamLevel.equals(lowlevel)) {
                    map.put("code", one.getTeam());
                    map.put("name", one.getTeamName());
                    SaveModel costOne = costMap.get(one.getTeam());
                    if (costOne != null) {
                        avg = decimalFormat.format(costOne.getResult1() / one.getResult1());
                    }
                    map.put("val", avg);
                }
                Long num = (Long) count.get("num");
                String avg = "0.0";
                if (num != 0) {
                    avg = decimalFormat.format(one.getResult1() / num);
                }
                map.put("val", avg);
                countList.add(map);
            }
        }
@ -3578,80 +3557,100 @@ public class StatisticsESService {
     * @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 {
        String index61 = "61";//统计长处方费用总数疾病维度
        String index66 = "66";//费用的指标code
        String index63 = "63";//统计长处方年龄疾病人数(按照患者去重)
        String index68 = "68";//统计长处方年龄人数(按照患者去重)
        List<SaveModel> costList = null;
        Map<String, SaveModel> costMap = new HashedMap();
        List<SaveModel> numList = null;
        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);
        String sql = "";
        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 <= '" + dateFormat3.format(one.getQuotaDate())+"'";
            if ( SaveModel.cityLevel.equals(level)) {
                sql += " and LEFT(s.hospital,4) ='" + area.substring(0,4) + "' ";
            }else if (SaveModel.townLevel.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 = "0.0";
            if (num != 0) {
                avg = decimalFormat.format(one.getResult1() / num);
        //获取费用
        if (org.springframework.util.StringUtils.isEmpty(disease)) {
            costList = elasticsearchUtil.findLineChartDateQuotaLevel0(startDate, endDate, area, Integer.parseInt(level), index66, SaveModel.timeLevel_ZL, type);
        } else {
            costList = elasticsearchUtil.findLineChartDateQuotaLevel1(startDate, endDate, area, Integer.parseInt(level), index61, SaveModel.timeLevel_ZL, type, disease);
        }
        //获取人数
        if (org.springframework.util.StringUtils.isEmpty(disease)) {
            numList = elasticsearchUtil.findLineChartDateQuotaLevel1NoSlaveKey1(startDate, endDate, area, Integer.parseInt(level), index68, SaveModel.timeLevel_ZL, type);
        } else {
            numList = elasticsearchUtil.findLineChartDateQuotaLevel2NoSlaveKey1(startDate, endDate, area, Integer.parseInt(level), index63, SaveModel.timeLevel_ZL, type, disease);
        }
        //费用list转map
        for (SaveModel one : costList) {
            String key = null;
            if (SaveModel.interval_day.equals(type)) {
                key = dateFormat.format(one.getQuotaDate());
            } else if (SaveModel.interval_week.equals(type)) {
                key = dateFormat.format(one.getQuotaDate());
            } else {
                key = DateUtil.getMonth(dateFormat.format(one.getQuotaDate()));
            }
            map = new HashMap<>();
            map.put("avg", avg);
            if ("1".equals(type)) {
                map.put("date", dateFormat.format(one.getQuotaDate()));
            costMap.put(key, one);
        }
            } else if ("2".equals(type)) {
                map.put("date", DateUtil.getWeekOfMonth(dateFormat.format(one.getQuotaDate())));
        List<Map<String, Object>> countList = new ArrayList<>(); //map date avg
        for (SaveModel one : numList) {
            Map<String, Object> map = new HashMap<>();
            //获取key
            String key = null;
            if (SaveModel.interval_day.equals(type)) {
                key = dateFormat.format(one.getQuotaDate());
            } else if (SaveModel.interval_week.equals(type)) {
                key = dateFormat.format(one.getQuotaDate());
            } else {
                map.put("date", DateUtil.getMonth(dateFormat.format(one.getQuotaDate())));
                key = DateUtil.getMonth(dateFormat.format(one.getQuotaDate()));
            }
            SaveModel costOne = costMap.get(key);
            String avg = "0.0";
            if (costOne != null) {
                avg = decimalFormat.format(one.getResult1() / costOne.getResult1());
            }
            map.put("val", avg);
            map.put("date", key);
            countList.add(map);
        }
        return countList;
    }
    public Map<String, Object> getPrescriptionCost(String level, String area, String disease) throws Exception {
        SaveModel saveModel = null;
        String index = "61";//费用的指标code
        SaveModel costSaveModel = null;
        SaveModel numSaveModel = null;
        String index61 = "61";//统计长处方费用总数疾病维度
        String index66 = "66";//费用的指标code
        String index63 = "63";//统计长处方年龄疾病人数(按照患者去重)
        String index68 = "68";//统计长处方年龄人数(按照患者去重)
        String quotaDate = elasticsearchUtil.getQuotaTime();
        if (StringUtils.isNotEmpty(disease)) {
            saveModel = elasticsearchUtil.findOneDateQuotaLevel1(quotaDate, area, Integer.parseInt(level), index, "2", disease);
            costSaveModel = elasticsearchUtil.findOneDateQuotaLevel1(quotaDate, area, Integer.parseInt(level), index61, "2", disease);
        } else {
            saveModel = elasticsearchUtil.findOneDateQuotaLevel1NoSlaveKey1(quotaDate, area, Integer.parseInt(level), index, "2");
            costSaveModel = elasticsearchUtil.findOneDateQuotaLevel0(quotaDate, area, Integer.parseInt(level), index66, "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.create_time <= '" + quotaDate+"'";
        if ( SaveModel.cityLevel.equals(level)) {
            sql += " and LEFT(s.hospital,4) ='" + area.substring(0,4) + "' ";
        }else if (SaveModel.townLevel.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 + "' ";
        if (StringUtils.isNotEmpty(disease)) {
            numSaveModel = elasticsearchUtil.findOneDateQuotaLevel2NoSlaveKey1(quotaDate, area, Integer.parseInt(level), index63, "2", disease);
        } else {
            numSaveModel = elasticsearchUtil.findOneDateQuotaLevel1NoSlaveKey1(quotaDate, area, Integer.parseInt(level), index68, "2");
        }
        Map<String, Object> count = jdbcTemplate.queryForMap(sql);
        Long num = (Long) count.get("num");
        Long num = numSaveModel.getResult1().longValue();
        Map<String, Object> rs = new HashedMap();
        BigDecimal s = BigDecimal.valueOf(saveModel.getResult1());
        BigDecimal s = BigDecimal.valueOf(costSaveModel.getResult1());
        BigDecimal a = null;
        if (num == 0) {
            a = BigDecimal.valueOf(0.0);
        } else {
            a = BigDecimal.valueOf(saveModel.getResult1().longValue() / num);
            a = BigDecimal.valueOf(costSaveModel.getResult1().longValue() / num);
        }
        rs.put("sum", s.divide(new BigDecimal(100)).setScale(2, BigDecimal.ROUND_HALF_UP));//费用总计  单位是0 所以除以100四舍五入
        rs.put("avg", a.divide((new BigDecimal(100))).setScale(2, BigDecimal.ROUND_HALF_UP));//人均费用  单位是0 所以除以100四舍五入
        rs.put("sum", s.divide(new BigDecimal(100)).setScale(2, BigDecimal.ROUND_HALF_UP));//费用总计  单位是分 所以除以100四舍五入
        rs.put("avg", a.divide((new BigDecimal(100))).setScale(2, BigDecimal.ROUND_HALF_UP));//人均费用  单位是分 所以除以100四舍五入
        return rs;
    }

+ 71 - 21
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/util/ElasticsearchUtil.java

@ -39,6 +39,8 @@ public class ElasticsearchUtil {
    private Logger logger = LoggerFactory.getLogger(ElasticsearchUtil.class);
    private final String commonParams="xmijk_quota";
    @Autowired
    private ElasticFactory elasticFactory;
    @Autowired
@ -366,25 +368,25 @@ public class ElasticsearchUtil {
        if (SaveModel.teamLevel.equals(low_level)) {
            sql.append("select team,teamName,slaveKey1,slaveKey1Name,sum(result1) result1, sum(result2) result2 from " + esIndex + " where ");
            groupBy.append("  group by team,teamName");
            if (!org.springframework.util.StringUtils.isEmpty(slaveKey1)) {
            if (!org.springframework.util.StringUtils.isEmpty(slaveKey1)||commonParams.equals(slaveKey1)) {
                groupBy.append(",slaveKey1,slaveKey1Name");
            }
        } else if (SaveModel.OrgLevel.equals(low_level)) {
            sql.append("select hospital,hospitalName,slaveKey1,slaveKey1Name,sum(result1) result1,sum(result2) result2 from " + esIndex + " where ");
            groupBy.append("  group by hospital,hospitalName");
            if (!org.springframework.util.StringUtils.isEmpty(slaveKey1)) {
            if (!org.springframework.util.StringUtils.isEmpty(slaveKey1)||commonParams.equals(slaveKey1)) {
                groupBy.append(",slaveKey1,slaveKey1Name");
            }
        } else if (SaveModel.townLevel.equals(low_level)) {
            sql.append("select town,townName,slaveKey1,slaveKey1Name,sum(result1) result1,sum(result2) result2 from " + esIndex + " where ");
            groupBy.append("  group by town,townName" );
            if (!org.springframework.util.StringUtils.isEmpty(slaveKey1)) {
            if (!org.springframework.util.StringUtils.isEmpty(slaveKey1)||commonParams.equals(slaveKey1)) {
                groupBy.append(",slaveKey1,slaveKey1Name");
            }
        } else if (SaveModel.cityLevel.equals(low_level)) {
            sql.append("select city,cityName,slaveKey1,slaveKey1Name,sum(result1) result1,sum(result2) result2 from " + esIndex + " where ");
            groupBy.append("  group by city,cityName");
            if (!org.springframework.util.StringUtils.isEmpty(slaveKey1)) {
            if (!org.springframework.util.StringUtils.isEmpty(slaveKey1)||commonParams.equals(slaveKey1)) {
                groupBy.append(",slaveKey1,slaveKey1Name");
            }
        }
@ -411,7 +413,7 @@ public class ElasticsearchUtil {
        if (StringUtils.isNotEmpty(endDate)) {
            sql.append(" and quotaDate<='" + endDate + "'");
        }
        if (StringUtils.isNotEmpty(slaveKey1)) {
        if (StringUtils.isNotEmpty(slaveKey1)&&!commonParams.equals(slaveKey1)) {
            sql.append(" and slaveKey1='" + slaveKey1 + "'  ");
        }
@ -473,37 +475,37 @@ public class ElasticsearchUtil {
        if (SaveModel.teamLevel.equals(low_level)) {
            sql.append("select team,teamName,slaveKey1,slaveKey1Name,slaveKey2,slaveKey2Name,result1,result2 from " + esIndex + " where ");
            groupBy.append("  group by team,teamName");
            if (!org.springframework.util.StringUtils.isEmpty(slaveKey1)) {
            if (!org.springframework.util.StringUtils.isEmpty(slaveKey1)||commonParams.equals(slaveKey1)) {
                groupBy.append(",slaveKey1,slaveKey1Name");
            }
            if (!org.springframework.util.StringUtils.isEmpty(slaveKey2)) {
            if (!org.springframework.util.StringUtils.isEmpty(slaveKey2)||commonParams.equals(slaveKey2)) {
                groupBy.append(",slaveKey2,slaveKey2Name");
            }
        } else if (SaveModel.OrgLevel.equals(low_level)) {
            sql.append("select hospital,hospitalName,sum(result1) result1,sum(result2) result2 from " + esIndex + " where ");
            groupBy.append("  group by hospital,hospitalName");
            if (!org.springframework.util.StringUtils.isEmpty(slaveKey1)) {
            if (!org.springframework.util.StringUtils.isEmpty(slaveKey1)||commonParams.equals(slaveKey1)) {
                groupBy.append(",slaveKey1,slaveKey1Name");
            }
            if (!org.springframework.util.StringUtils.isEmpty(slaveKey2)) {
            if (!org.springframework.util.StringUtils.isEmpty(slaveKey2)||commonParams.equals(slaveKey2)) {
                groupBy.append(",slaveKey2,slaveKey2Name");
            }
        } else if (SaveModel.townLevel.equals(low_level)) {
            sql.append("select town,townName,slaveKey1,slaveKey1Name,slaveKey2,slaveKey2Name,sum(result1) result1,sum(result2) result2 from " + esIndex + " where ");
            groupBy.append("  group by town,townName");
            if (!org.springframework.util.StringUtils.isEmpty(slaveKey1)) {
            if (!org.springframework.util.StringUtils.isEmpty(slaveKey1)||commonParams.equals(slaveKey1)) {
                groupBy.append(",slaveKey1,slaveKey1Name");
            }
            if (!org.springframework.util.StringUtils.isEmpty(slaveKey2)) {
            if (!org.springframework.util.StringUtils.isEmpty(slaveKey2)||commonParams.equals(slaveKey2)) {
                groupBy.append(",slaveKey2,slaveKey2Name");
            }
        } else if (SaveModel.cityLevel.equals(low_level)) {
            sql.append("select city,cityName,slaveKey1,slaveKey1Name,slaveKey2,slaveKey2Name,sum(result1) result1,sum(result2) result2 from " + esIndex + " where ");
            groupBy.append("  group by city,cityName");
            if (!org.springframework.util.StringUtils.isEmpty(slaveKey1)) {
            if (!org.springframework.util.StringUtils.isEmpty(slaveKey1)||commonParams.equals(slaveKey1)) {
                groupBy.append(",slaveKey1,slaveKey1Name");
            }
            if (!org.springframework.util.StringUtils.isEmpty(slaveKey2)) {
            if (!org.springframework.util.StringUtils.isEmpty(slaveKey2)||commonParams.equals(slaveKey2)) {
                groupBy.append(",slaveKey2,slaveKey2Name");
            }
        }
@ -529,10 +531,10 @@ public class ElasticsearchUtil {
        if (StringUtils.isNotEmpty(endDate)) {
            sql.append(" and quotaDate<='" + endDate + "'");
        }
        if (StringUtils.isNotBlank(slaveKey1)) {
        if (StringUtils.isNotBlank(slaveKey1)&&(!commonParams.equals(slaveKey1))) {
            sql.append(" and slaveKey1='" + slaveKey1 + "'");
        }
        if (StringUtils.isNotBlank(slaveKey2)) {
        if (StringUtils.isNotBlank(slaveKey2)&&(!commonParams.equals(slaveKey2))) {
            sql.append(" and slaveKey2='" + slaveKey2 + "'");
        }
@ -636,6 +638,9 @@ public class ElasticsearchUtil {
     * @return
     */
    public SaveModel findOneDateQuotaLevel1(String quotaDate, String area, int level, String index, String timelevel, String slaveKey1) throws Exception {
        if(org.springframework.util.StringUtils.isEmpty(slaveKey1)){
            slaveKey1=commonParams;
        }
        List list = findDateQuotaLevel1(quotaDate, quotaDate, area, level, index, timelevel,  slaveKey1, null, null);
        return (SaveModel) list.get(0);
    }
@ -669,6 +674,9 @@ public class ElasticsearchUtil {
     * @return
     */
    public SaveModel findOneDateQuotaLevel1(String startDate, String endDate, String area, int level, String index, String timelevel, String slaveKey1) throws Exception {
        if(org.springframework.util.StringUtils.isEmpty(slaveKey1)){
            slaveKey1=commonParams;
        }
        List list = findDateQuotaLevel1(startDate, endDate, area, level, index, timelevel,  slaveKey1, null, null);
        return (SaveModel) list.get(0);
    }
@ -685,7 +693,7 @@ public class ElasticsearchUtil {
     * @return
     */
    public List<SaveModel> findOneDateQuotaLevel1(String quotaDate, String area, int level, String index, String timelevel) throws Exception {
        List list = findDateQuotaLevel1(quotaDate, quotaDate, area, level, index, timelevel, null, null, null);
        List list = findDateQuotaLevel1(quotaDate, quotaDate, area, level, index, timelevel, commonParams, null, null);
        return list;
    }
@ -700,7 +708,7 @@ public class ElasticsearchUtil {
     * @return
     */
    public List<SaveModel> findOneDateQuotaLevel1(String startDate, String endDate, String area, int level, String index, String timelevel) throws Exception {
        List list = findDateQuotaLevel1(startDate, endDate, area, level, index, timelevel,  null, null, null);
        List list = findDateQuotaLevel1(startDate, endDate, area, level, index, timelevel,  commonParams, null, null);
        return list;
    }
@ -718,6 +726,12 @@ public class ElasticsearchUtil {
     * @return
     */
    public SaveModel findOneDateQuotaLevel2(String quotaDate, String area, int level, String index, String timelevel, String slaveKey1, String slaveKey2) throws Exception {
        if(org.springframework.util.StringUtils.isEmpty(slaveKey1)){
            slaveKey1=commonParams;
        }
        if(org.springframework.util.StringUtils.isEmpty(slaveKey2)){
            slaveKey2=commonParams;
        }
        List list = findDateQuotaLevel2(quotaDate, quotaDate, area, level, index, timelevel, slaveKey1, slaveKey2, null, null);
        return (SaveModel) list.get(0);
    }
@ -751,7 +765,7 @@ public class ElasticsearchUtil {
     * @param slaveKey1 二级维度的key
     * @return
     */
    public SaveModel findOneDateQuotaLevel2NoSlave2(String quotaDate, String area, int level, String index, String timelevel, String slaveKey1) throws Exception {
    public SaveModel findOneDateQuotaLevel2NoSlaveKey2(String quotaDate, String area, int level, String index, String timelevel, String slaveKey1) throws Exception {
        List list = findDateQuotaLevel2(quotaDate, quotaDate, area, level, index, timelevel, slaveKey1, null, null, null);
        return (SaveModel) list.get(0);
    }
@ -771,6 +785,12 @@ public class ElasticsearchUtil {
     * @return
     */
    public SaveModel findOneDateQuotaLevel2(String startDate, String endDate, String area, int level, String index, String timelevel, String slaveKey1, String slaveKey2) throws Exception {
        if(org.springframework.util.StringUtils.isEmpty(slaveKey1)){
            slaveKey1=commonParams;
        }
        if(org.springframework.util.StringUtils.isEmpty(slaveKey2)){
            slaveKey2=commonParams;
        }
        List list = findDateQuotaLevel2(startDate, endDate, area, level, index, timelevel, slaveKey1, slaveKey2, null, null);
        return (SaveModel) list.get(0);
    }
@ -788,7 +808,10 @@ public class ElasticsearchUtil {
     * @return
     */
    public List<SaveModel> findOneDateQuotaLevel2(String quotaDate, String area, int level, String index, String timelevel, String slaveKey1) throws Exception {
        List list = findDateQuotaLevel2(quotaDate, quotaDate, area, level, index, timelevel, slaveKey1, null, null, null);
        if(org.springframework.util.StringUtils.isEmpty(slaveKey1)){
            slaveKey1=commonParams;
        }
        List list = findDateQuotaLevel2(quotaDate, quotaDate, area, level, index, timelevel, slaveKey1, commonParams, null, null);
        return list;
    }
@ -828,6 +851,9 @@ public class ElasticsearchUtil {
     * @return
     */
    public List<SaveModel> findLineChartDateQuotaLevel1(String startDate, String endDate, String area, int level, String index, String timelevel, String interval, String slaveKey1) throws Exception {
        if(org.springframework.util.StringUtils.isEmpty(slaveKey1)){
            slaveKey1=commonParams;
        }
        List list = findDateQuotaLevel1(startDate, endDate, area, level, index, timelevel,  slaveKey1, interval, null);
        return list;
    }
@ -866,6 +892,12 @@ public class ElasticsearchUtil {
     * @return
     */
    public List<SaveModel> findLineChartDateQuotaLevel2(String startDate, String endDate, String area, int level, String index, String timelevel, String interval, String slaveKey1, String slaveKey2) throws Exception {
        if(org.springframework.util.StringUtils.isEmpty(slaveKey1)){
            slaveKey1=commonParams;
        }
        if(org.springframework.util.StringUtils.isEmpty(slaveKey2)){
            slaveKey2=commonParams;
        }
        List list = findDateQuotaLevel2(startDate, endDate, area, level, index, timelevel, slaveKey1, slaveKey2, interval, null);
        return list;
    }
@ -983,6 +1015,9 @@ public class ElasticsearchUtil {
     * @return
     */
    public List<SaveModel> findListDateQuotaLevel1(String quotaDate, String area, int level, String index, String timelevel, String lowLevel, String slaveKey1) throws Exception {
        if(org.springframework.util.StringUtils.isEmpty(slaveKey1)){
            slaveKey1=commonParams;
        }
        List list = findDateQuotaLevel1(quotaDate, quotaDate, area, level, index, timelevel, slaveKey1, null, lowLevel);
        return list;
    }
@ -1020,6 +1055,9 @@ public class ElasticsearchUtil {
     * @return
     */
    public List<SaveModel> findListDateQuotaLevel1(String startDate, String endDate, String area, int level, String index, String timelevel, String lowLevel, String slaveKey1) throws Exception {
        if(org.springframework.util.StringUtils.isEmpty(slaveKey1)){
            slaveKey1=commonParams;
        }
        List list = findDateQuotaLevel1(startDate, endDate, area, level, index, timelevel, slaveKey1, null, lowLevel);
        return list;
    }
@ -1040,17 +1078,23 @@ public class ElasticsearchUtil {
     * @return
     */
    public List<SaveModel> findListDateQuotaLevel2(String quotaDate, String area, int level, String index, String timelevel, String lowLevel, String slaveKey1, String slaveKey2) throws Exception {
        if(org.springframework.util.StringUtils.isEmpty(slaveKey1)){
            slaveKey1=commonParams;
        }
        if(org.springframework.util.StringUtils.isEmpty(slaveKey2)){
            slaveKey2=commonParams;
        }
        List list = findDateQuotaLevel2(quotaDate, quotaDate, area, level, index, timelevel, slaveKey1, slaveKey2, null, lowLevel);
        return list;
    }
    public List<SaveModel> findListDateQuotaLevel2NoSlaveKey1(String quotaDate, String area, int level, String index, String timelevel, String lowLevel, String slaveKey2) throws Exception {
        List list = findDateQuotaLevel2(quotaDate, quotaDate, area, level, index, timelevel, null, slaveKey2, null, lowLevel);
        List list = findDateQuotaLevel2(quotaDate, quotaDate, area, level, index, timelevel, null, slaveKey2, commonParams, lowLevel);
        return list;
    }
    public List<SaveModel> findListDateQuotaLevel2NoSlaveKey2(String quotaDate, String area, int level, String index, String timelevel, String lowLevel, String slaveKey1) throws Exception {
        List list = findDateQuotaLevel2(quotaDate, quotaDate, area, level, index, timelevel, slaveKey1, null, null, lowLevel);
        List list = findDateQuotaLevel2(quotaDate, quotaDate, area, level, index, timelevel, slaveKey1, commonParams, null, lowLevel);
        return list;
    }
@ -1076,6 +1120,12 @@ public class ElasticsearchUtil {
     * @return
     */
    public List<SaveModel> findListDateQuotaLevel2(String startDate, String endDate, String area, int level, String index, String timelevel, String lowLevel, String slaveKey1, String slaveKey2) throws Exception {
        if(org.springframework.util.StringUtils.isEmpty(slaveKey1)){
            slaveKey1=commonParams;
        }
        if(org.springframework.util.StringUtils.isEmpty(slaveKey2)){
            slaveKey2=commonParams;
        }
        List list = findDateQuotaLevel2(startDate, endDate, area, level, index, timelevel, slaveKey1, slaveKey2, null, lowLevel);
        return list;
    }