liuwenbin 7 rokov pred
rodič
commit
0d5d7f79d5

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

@ -348,9 +348,9 @@ public class StatisticsESService {
    public JSONArray getIndexLevelTwototal(String endDate, String area, int level, String index) throws Exception{
        if (endDate.compareTo(dateFormat.format(new Date())) >= 0) {
            endDate = elasticsearchUtil.getQuotaTime();
        }
//        if (endDate.compareTo(dateFormat.format(new Date())) >= 0) {
//            endDate = elasticsearchUtil.getQuotaTime();
//        }
        List<SaveModel> list = elasticsearchUtil.findOneDateQuotaLevel1(endDate,area,level,index,"2");
        List<Map<String, Object>> resultList = new ArrayList<>();
        DecimalFormat df = new DecimalFormat("0.0000");
@ -380,9 +380,9 @@ public class StatisticsESService {
        if (!index.equals("8")) {
            if (index.equals("36")) {
                //获取最新的统计时间
                String updateTime = elasticsearchUtil.getQuotaTime();
//                String updateTime = elasticsearchUtil.getQuotaTime();
                //如果是查询36的指标 那么除数是签约总数
                SaveModel saveModel = elasticsearchUtil.findOneDateQuotaLevel0(updateTime,area,level,"1","2");
                SaveModel saveModel = elasticsearchUtil.findOneDateQuotaLevel0(endDate,area,level,"1","2");
                Long num = Long.parseLong(saveModel.getResult2()+"");
                for (Map<String, Object> map:resultList) {
                    double rateG = (total > 0 ? ((long) map.get("amount")) * 1.0000 / num * 100 : 0);
@ -1603,19 +1603,25 @@ public class StatisticsESService {
        //最新更新时间
        String timeKey = elasticsearchUtil.getQuotaTime();
        if(StringUtils.isNotEmpty(year)){
            Integer coutYear = Integer.parseInt(year) + 1;
            timeKey = coutYear+"-06-30";
            if (Constant.getNowYear().equals(year)) {
                timeKey = elasticsearchUtil.getQuotaTime();
            }else{
                Integer coutYear = Integer.parseInt(year);
                timeKey = coutYear+"-06-30";
            }
        }
//        timeKey= "2017-10-19 00:00:00";
        //及时回复数
        List<SaveModel> relyVal = elasticsearchUtil.findListDateQuotaLevel0(timeKey,area,level,"23","2",lowLevel);
        //咨询总数
        List<SaveModel> relyTotal = elasticsearchUtil.findListDateQuotaLevel0(timeKey,area,level,"25","2",lowLevel);
        //未回复数
        List<SaveModel> noRelyTotal = elasticsearchUtil.findListDateQuotaLevel0(timeKey,area,level,"22","2",lowLevel);
        JSONArray rely = new JSONArray(relyVal);
        JSONArray total = new JSONArray(relyTotal);
        JSONArray noRely = new JSONArray(noRelyTotal);
        result.put("resultList", getCoutList(level,rely, total, noRely));
//        JSONArray rely = new JSONArray(relyVal);
//        JSONArray total = new JSONArray(relyTotal);
//        JSONArray noRely = new JSONArray(noRelyTotal);
        result.put("resultList", getCoutList(level,relyVal, relyTotal, noRelyTotal));
        return result;
    }
@ -1628,52 +1634,63 @@ public class StatisticsESService {
     * @param onRely
     * @return
     */
    public List<Map<String, Object>> getCoutList(Integer level,JSONArray rely, JSONArray total, JSONArray 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();
        //将List转换为Map,Key为要比较的CODE,降低循环层数
        String area = "";
        if(level==4){
            area = "city";
        }else if(level==3){
            area = "town";
        }else if(level==2){
            area = "hospital";
        }
        //转换回复数
        Iterator iterator = rely.iterator();
        while (iterator.hasNext()) {
            JSONObject jsonObject = (JSONObject) iterator.next();
            relyMap.put(jsonObject.get(area).toString(), jsonObject);
        }
        for(SaveModel saveModel:rely){
            if(level==4){
                relyMap.put(saveModel.getHospital(), saveModel);
            }else if(level==3){
                relyMap.put(saveModel.getTown(), saveModel);
            }else if(level==2){
                relyMap.put(saveModel.getCity(), saveModel);
            }
        };
        //转换总咨询数
        Iterator iterator2 = total.iterator();
        while (iterator2.hasNext()) {
            JSONObject jsonObject = (JSONObject) iterator2.next();
            totalMap.put(jsonObject.get(area).toString(), jsonObject);
        }
        for(SaveModel saveModel:total){
            if(level==4){
                relyMap.put(saveModel.getHospital(), saveModel);
            }else if(level==3){
                relyMap.put(saveModel.getTown(), saveModel);
            }else if(level==2){
                relyMap.put(saveModel.getCity(), saveModel);
            }
        };
        //转换总咨询数
        Iterator iterator3 = onRely.iterator();
        while (iterator3.hasNext()) {
            JSONObject jsonObject = (JSONObject) iterator3.next();
            onRelyMap.put(jsonObject.get(area).toString(), jsonObject);
        }
        for(SaveModel saveModel:onRely){
            if(level==4){
                relyMap.put(saveModel.getHospital(), saveModel);
            }else if(level==3){
                relyMap.put(saveModel.getTown(), saveModel);
            }else if(level==2){
                relyMap.put(saveModel.getCity(), saveModel);
            }
        };
        List<Map<String, Object>> resultMaps = new ArrayList<>();
        for (String key : totalMap.keySet()) {
            Map<String, Object> rs = new HashMap<>();
            JSONObject relyRs = (JSONObject) relyMap.get(key);
            JSONObject totalRs = (JSONObject) totalMap.get(key);
            JSONObject onRelyRs = (JSONObject) onRelyMap.get(key);
            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){
                continue;
            }
            //合并结果集
            Integer totalNm = totalRs.getInt("result2");
            Integer relyNm = relyRs.getInt("result2");
            Integer noRelyNm = onRelyRs.getInt("result2");
            rs.put("name", relyRs.get(area+"Name"));
            Integer totalNm = totalRs.getResult2();
            Integer relyNm = relyRs.getResult2();
            Integer noRelyNm = onRelyRs.getResult2();
//            rs.put("name", relyRs.get(area+"Name"));
            if(level==4){
                rs.put("name", relyRs.getHospitalName());
            }else if(level==3){
                rs.put("name", relyRs.getTownName());
            }else if(level==2){
                rs.put("name", relyRs.getCityName());
            }
            rs.put("noRelyCount", noRelyNm);
            rs.put("relyCount", relyNm);
            rs.put("total", totalNm);
@ -1706,7 +1723,7 @@ public class StatisticsESService {
            }
            resultMaps.add(rs);
        }
        if(level==2){
        if(level==4){
            Map<Integer, Map<String, Object>> leaders = getAllTeamLeaders();
            if (resultMaps != null && resultMaps.size() > 0) {
                for (Map<String, Object> r : resultMaps) {
@ -1739,10 +1756,33 @@ public class StatisticsESService {
        JSONObject result = new JSONObject();
        String quotaTime = elasticsearchUtil.getQuotaTime();
        if(StringUtils.isNotEmpty(year)){
            quotaTime = year+"-6-30";
            if (Constant.getNowYear().equals(year)) {
                quotaTime = elasticsearchUtil.getQuotaTime();
            }else{
                quotaTime = year+"-6-30 00:00:00";
            }
        }
//        quotaTime = "2017-10-19 00:00:00";
        List<SaveModel> list = elasticsearchUtil.findOneDateQuotaLevel1(quotaTime,area,Integer.parseInt(level),"24","2");
        JSONArray array = new JSONArray(list);
        JSONArray array = new JSONArray();
        for(SaveModel saveModel : list){
            JSONObject jsonObject = new JSONObject();
//            if(SaveModel.cityLevel.equals(level)){
//
//                jsonObject.put("code",saveModel.getCity());
//                jsonObject.put("name",saveModel.getCityName());
//            }else if(SaveModel.townLevel.equals(level)){
//                jsonObject.put("code",saveModel.getTown());
//                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());
            array.put(jsonObject);
        }
        result.put("resultList", array);
        return result;
    }
@ -1760,100 +1800,126 @@ public class StatisticsESService {
        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");
        JSONObject relyObject = new JSONObject(relyVal);
        JSONObject totalObject = new JSONObject(relyTotal);
        JSONObject onRelyObject = new JSONObject(onRelyTotal);
        JSONArray rely = new JSONArray();
        rely.put(relyObject);
        JSONArray total = new JSONArray();
        total.put(totalObject);
        JSONArray onRely = new JSONArray();
        onRely.put(onRelyObject);
        result.put("result", getCoutListTitle(level,rely, total, onRely));
//        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(quotaDate,area,level,"23","2");
        SaveModel relyTotal = elasticsearchUtil.findOneDateQuotaLevel0(quotaDate,area,level,"25","2");
        SaveModel onRelyTotal = elasticsearchUtil.findOneDateQuotaLevel0(quotaDate,area,level,"22","2");
//        JSONObject relyObject = new JSONObject(relyVal);
//        JSONObject totalObject = new JSONObject(relyTotal);
//        JSONObject onRelyObject = new JSONObject(onRelyTotal);
//        JSONArray rely = new JSONArray();
//        rely.put(relyObject);
//        JSONArray total = new JSONArray();
//        total.put(totalObject);
//        JSONArray onRely = new JSONArray();
//        onRely.put(onRelyObject);
        result.put("result", getCoutListTitle(level,relyVal, relyTotal, onRelyTotal));
        return result;
    }
    public List<Map<String, Object>> getCoutListTitle(Integer level,JSONArray rely, JSONArray total, JSONArray 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<>();
        Map<String, Object> onRelyMap = new HashMap<>();
        JSONObject result = new JSONObject();
        //将List转换为Map,Key为要比较的CODE,降低循环层数
        String area = "";
        if (level == 4) {
            area = "city";
        } else if (level == 3) {
            area = "town";
        } else if (level == 2) {
            area = "hospital";
        }
        //转换回复数
        Iterator iterator = rely.iterator();
        while (iterator.hasNext()) {
            JSONObject jsonObject = (JSONObject) iterator.next();
            relyMap.put(jsonObject.get(area).toString(), jsonObject);
        }
        //转换总咨询数
        Iterator iterator2 = total.iterator();
        while (iterator2.hasNext()) {
            JSONObject jsonObject = (JSONObject) iterator2.next();
            totalMap.put(jsonObject.get(area).toString(), jsonObject);
        }
        //转换总咨询数
        Iterator iterator3 = onRely.iterator();
        while (iterator3.hasNext()) {
            JSONObject jsonObject = (JSONObject) iterator3.next();
            onRelyMap.put(jsonObject.get(area).toString(), jsonObject);
        }
        List<Map<String, Object>> resultMaps = new ArrayList<>();
        for (String key : totalMap.keySet()) {
            Map<String, Object> rs = new HashMap<>();
            JSONObject relyRs = (JSONObject) relyMap.get(key);
            JSONObject totalRs = (JSONObject) totalMap.get(key);
            JSONObject onRelyRs = (JSONObject) onRelyMap.get(key);
            if (relyRs == null || totalRs == null || onRelyRs == null) {
                continue;
            }
            //合并结果集
            Integer totalNm = totalRs.getInt("result2");
            Integer relyNm = relyRs.getInt("result2");
            Integer noRelyNm = onRelyRs.getInt("result2");
            rs.put("name", relyRs.get(area + "Name"));
            rs.put("noRelyCount", noRelyNm);
            rs.put("relyCount", relyNm);
            rs.put("total", totalNm);
            rs.put("code", key);
            if (totalNm != null && totalNm != 0) {
                if (relyNm != null && relyNm != 0) {
                    double rr = (double) relyNm / totalNm * 100;
                    DecimalFormat df = new DecimalFormat("0.00");
                    rs.put("relyRate", df.format(rr) + "%");
                    rs.put("relyDoubleRate", rr);
                } else {
                    rs.put("relyRate", "0.00%");
                    rs.put("relyDoubleRate", 0.0);
                }
                if (noRelyNm != null && noRelyNm != 0) {
                    double rr = (double) noRelyNm / totalNm * 100;
                    DecimalFormat df = new DecimalFormat("0.00");
                    rs.put("noRelyRate", df.format(rr) + "%");
                    rs.put("noRelyDoubleRate", rr);
                } else {
                    rs.put("noRelyRate", "0.00%");
                    rs.put("noRelyDoubleRate", 0.0);
                }
//        for (String key : totalMap.keySet()) {
//            Map<String, Object> rs = new HashMap<>();
//            JSONObject relyRs = (JSONObject) relyMap.get(key);
//            JSONObject totalRs = (JSONObject) totalMap.get(key);
//            JSONObject onRelyRs = (JSONObject) onRelyMap.get(key);
//            if (relyRs == null || totalRs == null || onRelyRs == null) {
//                continue;
//            }
//            //合并结果集
//            Integer totalNm = totalRs.getInt("result2");
//            Integer relyNm = relyRs.getInt("result2");
//            Integer noRelyNm = onRelyRs.getInt("result2");
//            rs.put("name", relyRs.get(area + "Name"));
//            rs.put("noRelyCount", noRelyNm);
//            rs.put("relyCount", relyNm);
//            rs.put("total", totalNm);
//            rs.put("code", key);
//            if (totalNm != null && totalNm != 0) {
//                if (relyNm != null && relyNm != 0) {
//                    double rr = (double) relyNm / totalNm * 100;
//                    DecimalFormat df = new DecimalFormat("0.00");
//                    rs.put("relyRate", df.format(rr) + "%");
//                    rs.put("relyDoubleRate", rr);
//                } else {
//                    rs.put("relyRate", "0.00%");
//                    rs.put("relyDoubleRate", 0.0);
//                }
//                if (noRelyNm != null && noRelyNm != 0) {
//                    double rr = (double) noRelyNm / totalNm * 100;
//                    DecimalFormat df = new DecimalFormat("0.00");
//                    rs.put("noRelyRate", df.format(rr) + "%");
//                    rs.put("noRelyDoubleRate", rr);
//                } else {
//                    rs.put("noRelyRate", "0.00%");
//                    rs.put("noRelyDoubleRate", 0.0);
//                }
//
//            } else {
//                rs.put("relyRate", "0.00%");
//                rs.put("relyDoubleRate", 0.0);
//                rs.put("noRelyRate", "0.00%");
//                rs.put("noRelyDoubleRate", 0.0);
//            }
//            resultMaps.add(rs);
//        }
        //合并结果集
        Map<String, Object> rs = new HashMap<>();
        Integer totalNm = total.getResult2();
        Integer relyNm = rely.getResult2();
        Integer noRelyNm = onRely.getResult2();
//        rs.put("name", rely.get(area + "Name"));
        if (SaveModel.cityLevel.equals(level+"")) {
            rs.put("code", rely.getCity());
            rs.put("name", rely.getCityName());
        } else if (SaveModel.townLevel.equals(level+"")) {
            rs.put("code", rely.getTown());
            rs.put("name", rely.getTownName());
        } else if (SaveModel.OrgLevel.equals(level+"")) {
            rs.put("code", rely.getHospital());
            rs.put("name", rely.getHospitalName());
        }
        rs.put("noRelyCount", noRelyNm);
        rs.put("relyCount", relyNm);
        rs.put("total", totalNm);
//        rs.put("code", key);
        if (totalNm != null && totalNm != 0) {
            if (relyNm != null && relyNm != 0) {
                double rr = (double) relyNm / totalNm * 100;
                DecimalFormat df = new DecimalFormat("0.00");
                rs.put("relyRate", df.format(rr) + "%");
                rs.put("relyDoubleRate", rr);
            } else {
                rs.put("relyRate", "0.00%");
                rs.put("relyDoubleRate", 0.0);
            }
            if (noRelyNm != null && noRelyNm != 0) {
                double rr = (double) noRelyNm / totalNm * 100;
                DecimalFormat df = new DecimalFormat("0.00");
                rs.put("noRelyRate", df.format(rr) + "%");
                rs.put("noRelyDoubleRate", rr);
            } else {
                rs.put("noRelyRate", "0.00%");
                rs.put("noRelyDoubleRate", 0.0);
            }
            resultMaps.add(rs);
        } else {
            rs.put("relyRate", "0.00%");
            rs.put("relyDoubleRate", 0.0);
            rs.put("noRelyRate", "0.00%");
            rs.put("noRelyDoubleRate", 0.0);
        }
        resultMaps.add(rs);
        return resultMaps;
    }
@ -1950,7 +2016,7 @@ public class StatisticsESService {
        JSONObject jo = new JSONObject();
        //获取统计的最新事件
        String quotaDate = elasticsearchUtil.getQuotaTime();
//        quotaDate = "2017-10-19 00:00:00";
        //获取转签人数
        int switchNum = getLevel1NumForRedis(switchIndex, level, code, quotaDate);
        //获取转签分布
@ -2013,20 +2079,9 @@ public class StatisticsESService {
        JSONArray switchJo = new JSONArray();
        list.stream().forEach(one->{
            Map<String,Object> map = new HashMap<>();
            map.put("date",new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(one.getQuotaDate()));
            if (SaveModel.teamLevel.equals(level)) {
                map.put("code",one.getTeam());
                map.put("name",one.getTeamName());
            } else if (SaveModel.OrgLevel.equals(level)) {
                map.put("code",one.getHospital());
                map.put("name",one.getHospitalName());
            } else if (SaveModel.townLevel.equals(level)) {
                map.put("code",one.getTown());
                map.put("name",one.getTownName());
            } else if (SaveModel.cityLevel.equals(level)) {
                map.put("code",one.getCity());
                map.put("name",one.getCityName());
            }
            map.put("date",timeKey);
            map.put("code",one.getSlaveKey1());
            map.put("name",one.getSlaveKey1Name());
            map.put("num",one.getResult2());
            switchJo.put(map);
        });

+ 5 - 0
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/util/ElasticsearchUtil.java

@ -530,6 +530,11 @@ public class ElasticsearchUtil {
    public String getQuotaTime() {
        String date = redisTemplate.opsForValue().get("quota:date");
//        date = date.replace(" ","T")+"+0800";
        try {
            date = new SimpleDateFormat("yyyy-MM-dd").format(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(date));
        }catch (ParseException e) {
            e.printStackTrace();
        }
        return date;
    }

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

@ -392,7 +392,7 @@ public class EsStatisticsController extends BaseController {
//                JSONObject signRate = statisticsAllService.getSignRate(endDate, area, level,year);
//                JSONObject signTaskRate = statisticsAllService.getSignTaskRate(endDate, area, level,year);
                long sign = statisticsESService.getIndexTotal(endDate, area, level, "13", "2");
                long sign = statisticsESService.getIndexTotal(endDate, area, level, "1", "2");
                long weiJf = statisticsESService.getWeiJiaoFei(endDate, area, level);
                JSONObject jo = statisticsESService.getRenewPercent(level + "", area, Constant.getNowYear());
                JSONObject signRate = statisticsESService.getSignRate(endDate, area, level, year);
@ -672,15 +672,15 @@ public class EsStatisticsController extends BaseController {
                lowlevel = elasticsearchUtil.changeLevel(Integer.parseInt(lowlevel))+"";
            }
            JSONObject data = null;
            if (Constant.getNowYear().equals(year)) {
                data = statisticsESService.getConsultingStatisticsList(level, area, lowlevel, null);
            } else if (org.springframework.util.StringUtils.isEmpty(year)) {
                data = statisticsESService.getConsultingStatisticsList(level, area, lowlevel, null);
//                data = statisticsService.getConsultingStatisticsListAll(level, area, lowlevel, year);
            } else {
//            if (Constant.getNowYear().equals(year)) {
//                data = statisticsESService.getConsultingStatisticsList(level, area, lowlevel, null);
//            } else if (org.springframework.util.StringUtils.isEmpty(year)) {
//                data = statisticsESService.getConsultingStatisticsList(level, area, lowlevel, null);
////                data = statisticsService.getConsultingStatisticsListAll(level, area, lowlevel, year);
//            } else {
                data = statisticsESService.getConsultingStatisticsList(level, area, lowlevel, year);
            }
            data = statisticsESService.getConsultingStatisticsList(level, area, lowlevel, year);
//            }
            if (data != null) {
                return write(200, "查询成功", "data", data);
            } else {