Prechádzať zdrojové kódy

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

chenweida 7 rokov pred
rodič
commit
2338bcc832

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

@ -189,7 +189,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");
        return saveModel.getResult2();
        return saveModel.getResult2().longValue();
    }
//    /**
@ -270,7 +270,7 @@ public class StatisticsESService {
        }else{
            saveModel = elasticsearchUtil.findOneDateQuotaLevel0(startDate,endDate,area,level,index,"1");
        }
        return saveModel.getResult2();
        return saveModel.getResult2().longValue();
    }
    /**
@ -321,9 +321,9 @@ public class StatisticsESService {
                map.put("code",saveModel.getTeam());
                map.put("name",saveModel.getCityName());
            }
            map.put("amount",Long.parseLong(saveModel.getResult2()+""));
            map.put("amount",saveModel.getResult2().longValue());
            map.put("rate",df.format((saveModel.getResult2() * 1.0000) / populationBase.getNum() * 100));
            map.put("rateString",saveModel.getResult2()+"/"+populationBase.getNum());
            map.put("rateString",saveModel.getResult2().longValue()+"/"+populationBase.getNum());
            resultList.add(map);
        }
        Collections.sort(resultList, new Comparator<Map<String, Object>>() {
@ -359,7 +359,7 @@ public class StatisticsESService {
            Map<String, Object> map = new HashMap<>();
            map.put("code",saveModel.getSlaveKey1());
            map.put("name",saveModel.getSlaveKey1Name());
            map.put("amount",Long.parseLong(saveModel.getResult2()+""));
            map.put("amount",saveModel.getResult2().longValue());
            if (index.equals("7")) {
                // 分组指标总数算法
                String code = saveModel.getSlaveKey2();
@ -441,7 +441,7 @@ public class StatisticsESService {
            endDate = elasticsearchUtil.getQuotaTime();
        }
        SaveModel saveModel = elasticsearchUtil.findOneDateQuotaLevel0(endDate,area,level,index,timeLevel);
        return saveModel.getResult2();
        return saveModel.getResult2().longValue();
    }
    /**
@ -455,7 +455,7 @@ public class StatisticsESService {
    public long getWeiJiaoFei(String endDate, String area, int level) throws Exception{
        SaveModel saveModel = elasticsearchUtil.findOneDateQuotaLevel1(endDate,area,level,"16","2","0");
        return saveModel.getResult2();
        return saveModel.getResult2().longValue();
    }
@ -477,12 +477,12 @@ public class StatisticsESService {
        }
        String timeKey = elasticsearchUtil.getQuotaTime();
        SaveModel saveModel = elasticsearchUtil.findOneDateQuotaLevel0(timeKey,area,Integer.parseInt(level),renewIndex,"2");
        int renewNum = saveModel.getResult2();
        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");
        int signNum = saveModel2.getResult2();
        int signNum = saveModel2.getResult2().intValue();
        JSONObject jo = new JSONObject();
        jo.put("yesterYearSign", signNum);//去年的签约量
        jo.put("thisYearRenew", renewNum);//今年的续签量
@ -501,7 +501,7 @@ public class StatisticsESService {
    public JSONObject getSignRate(String endDate, String area, int level, String year) throws Exception {
        SaveModel saveModel = elasticsearchUtil.findOneDateQuotaLevel0(endDate,area,level,"13","2");
        long signAmount = saveModel.getResult2();
        long signAmount = saveModel.getResult2().longValue();
        PopulationBase peopleNum = getPopulationBase(area, year);
        JSONObject json = new JSONObject();
        DecimalFormat df = new DecimalFormat("0.0000");
@ -532,7 +532,7 @@ public class StatisticsESService {
            endDate = elasticsearchUtil.getQuotaTime();
        }
        SaveModel saveModel = elasticsearchUtil.findOneDateQuotaLevel0(endDate,area,level,"13","2");
        long signAmount = saveModel.getResult2();
        long signAmount = saveModel.getResult2().longValue();
        PopulationBase peopleNum = getPopulationBase(area, year);
        DecimalFormat df = new DecimalFormat("0.0000");
        JSONObject json = new JSONObject();
@ -563,7 +563,7 @@ public class StatisticsESService {
        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();
            total = list.get(0).getResult2().longValue();
        }
        int num = 0;
        int taskNum = 0;
@ -675,7 +675,7 @@ public class StatisticsESService {
            endDate = elasticsearchUtil.getQuotaTime();
        }
        SaveModel saveModel = elasticsearchUtil.findOneDateQuotaLevel1(endDate,area,level,"8","2","6");
        return saveModel.getResult2();
        return saveModel.getResult2().longValue();
    }
    /**
@ -727,7 +727,7 @@ public class StatisticsESService {
        for (SaveModel saveModel:list) {
            JSONObject range = new JSONObject();
            range.put("range", df.format(saveModel.getQuotaDate()));
            range.put("amount", saveModel.getResult2());
            range.put("amount", saveModel.getResult2().longValue());
            result.add(range);
        }
        json.put("data", new ArrayList<>(result));
@ -1026,7 +1026,7 @@ public class StatisticsESService {
        if (esModelList != null && esModelList.size() > 0) {
            for (SaveModel one : esModelList) {
                Map<String, Object> maps = new HashMap<String, Object>();
                maps.put("amount", one.getResult1());
                maps.put("amount", one.getResult2().longValue());
                if (low_level.equals("3")) {
                    maps.put("code", one.getTown());
                    maps.put("name", one.getTownName());
@ -1250,7 +1250,7 @@ public class StatisticsESService {
                    JSONObject jo = new JSONObject();
                    jo.put("name", one.getTownName());
                    jo.put("code", one.getTown());
                    jo.put("avgCount", getRangeDouuble(one.getResult1(), one.getResult2(), 2));
                    jo.put("avgCount", getRangeDouuble(one.getResult1(), one.getResult2().intValue(), 2));
                    ja.put(jo);
                });
            } else {
@ -1259,7 +1259,7 @@ public class StatisticsESService {
                    JSONObject jo = new JSONObject();
                    jo.put("name", one.getHospitalName());
                    jo.put("code", one.getHospital());
                    jo.put("avgCount", getRangeDouuble(one.getResult1(), one.getResult2(), 2));
                    jo.put("avgCount", getRangeDouuble(one.getResult1(), one.getResult2().intValue(), 2));
                    ja.put(jo);
                });
            }
@ -1269,7 +1269,7 @@ public class StatisticsESService {
                JSONObject jo = new JSONObject();
                jo.put("name", one.getHospitalName());
                jo.put("code", one.getHospital());
                jo.put("avgCount", getRangeDouuble(one.getResult1(), one.getResult2(), 2));
                jo.put("avgCount", getRangeDouuble(one.getResult1(), one.getResult2().intValue(), 2));
                ja.put(jo);
            });
        } else if (level == 2) {
@ -1279,7 +1279,7 @@ public class StatisticsESService {
                JSONObject jo = new JSONObject();
                jo.put("name", one.getTeam());
                jo.put("code", one.getTeamName());
                jo.put("avgCount", getRangeDouuble(one.getResult1(), one.getResult2(), 2));
                jo.put("avgCount", getRangeDouuble(one.getResult1(), one.getResult2().intValue(), 2));
                ja.put(jo);
            });
            translateTeamLeaderName(ja);
@ -1311,7 +1311,7 @@ public class StatisticsESService {
        if (esModelList != null && esModelList.size() > 0) {
            for (SaveModel one : esModelList) {
                Map<String, Object> maps = new HashMap<String, Object>();
                maps.put("amount", one.getResult1());
                maps.put("amount", one.getResult2().intValue());
                if (low_level.equals("3")) {
                    maps.put("code", one.getTown());
                    maps.put("name", one.getTownName());
@ -1405,7 +1405,7 @@ public class StatisticsESService {
        if (esModelList != null && esModelList.size() > 0) {
            for (SaveModel one : esModelList) {
                Map<String, Object> maps = new HashMap<String, Object>();
                maps.put("amount", one.getResult1());
                maps.put("amount", one.getResult2().intValue());
                if (low_level.equals("3")) {
                    maps.put("code", one.getTown());
                    maps.put("name", one.getTownName());
@ -1680,9 +1680,9 @@ public class StatisticsESService {
                continue;
            }
            //合并结果集
            Integer totalNm = totalRs.getResult2();
            Integer relyNm = relyRs.getResult2();
            Integer noRelyNm = onRelyRs.getResult2();
            Integer totalNm = totalRs.getResult2().intValue();
            Integer relyNm = relyRs.getResult2().intValue();
            Integer noRelyNm = onRelyRs.getResult2().intValue();
//            rs.put("name", relyRs.get(area+"Name"));
            if(level==4){
                rs.put("name", relyRs.getHospitalName());
@ -1875,9 +1875,9 @@ public class StatisticsESService {
        //合并结果集
        Map<String, Object> rs = new HashMap<>();
        Integer totalNm = total.getResult2();
        Integer relyNm = rely.getResult2();
        Integer noRelyNm = onRely.getResult2();
        Integer totalNm = total.getResult2().intValue();
        Integer relyNm = rely.getResult2().intValue();
        Integer noRelyNm = onRely.getResult2().intValue();
//        rs.put("name", rely.get(area + "Name"));
        if (SaveModel.cityLevel.equals(level+"")) {
            rs.put("code", rely.getCity());
@ -1970,8 +1970,8 @@ public class StatisticsESService {
                //转签量
                switchSaveModel=elasticsearchUtil.findOneDateQuotaLevel0(timeKey,area,level,renewIndex,"2");
            }
            int renewNum = renewSaveModel.getResult2();
            int switchNum = switchSaveModel.getResult2();
            int renewNum = renewSaveModel.getResult2().intValue();
            int switchNum = switchSaveModel.getResult2().intValue();
            //根据年度获取去年的签约数 签约指标是1
            if(StringUtils.isNoneBlank(lowCode)){
@ -1991,7 +1991,7 @@ public class StatisticsESService {
                signSaveModel=elasticsearchUtil.findOneDateQuotaLevel0(date,area,level,signIndex,"2");
            }
            //签约量
            int signNum = signSaveModel.getResult2();
            int signNum = signSaveModel.getResult2().intValue();
            jo.put("yesterYearSign", signNum);//去年的签约量
            jo.put("thisYearRenew", renewNum);//今年的续签量
            jo.put("thisYearSwithch", switchNum);//今年的转签量
@ -2056,7 +2056,7 @@ public class StatisticsESService {
    private int getLevel1NumForRedis(String index, String level, String code, String timeKey) throws Exception{
        SaveModel saveModel = elasticsearchUtil.findOneDateQuotaLevel0(timeKey,code,Integer.parseInt(level),index,"2");
        return saveModel.getResult2();
        return saveModel.getResult2().intValue();
    }
    /**
     * 通用的方法 获取二级维度的数据列表
@ -2214,11 +2214,11 @@ public class StatisticsESService {
        if (renewSaveModels != null && renewSaveModels.size() > 0) {
            for (SaveModel saveModel : renewSaveModels) {
                if ("3".equals(low_level)) {
                    renewMap.put(saveModel.getTown(), saveModel.getResult2());
                    renewMap.put(saveModel.getTown(), saveModel.getResult2().intValue());
                } else if ("4".equals(low_level)) {
                    renewMap.put(saveModel.getHospital(), saveModel.getResult2());
                    renewMap.put(saveModel.getHospital(), saveModel.getResult2().intValue());
                } else if ("5".equals(low_level)) {
                    renewMap.put(saveModel.getTeam(), saveModel.getResult2());
                    renewMap.put(saveModel.getTeam(), saveModel.getResult2().intValue());
                } else {
                    continue;
                }
@ -2267,7 +2267,7 @@ public class StatisticsESService {
                    int signNum = 0;
                    int renewNum = renewMap.get(reMap.get("code").toString());
                    if (one != null) {
                        signNum = Integer.valueOf(one.getResult2());
                        signNum = one.getResult2().intValue();
                    }
                    reMap.put("rate", getRange(renewNum, signNum, 2));//续签率是 续签量/去年的签约数
                    reMap.put("signNum", signNum);
@ -2299,4 +2299,83 @@ public class StatisticsESService {
            return new JSONArray();
        }
    }
    /**
     * 统计微信绑定率
     *
     * @return
     */
    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");
        Integer bindCout = saveModel1.getResult2().intValue();
        Integer signCout = saveModel2.getResult2().intValue();
        if ((bindCout != null || bindCout != 0) && (signCout != null && signCout != 0)) {
            double rate = (double) bindCout / signCout * 100;
            DecimalFormat df = new DecimalFormat("###.00");
            result.put("bindRate", df.format(rate) + "%");
        } else {
            result.put("bindRate", "0.00%");
        }
        return result;
    }
    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");
        //
        String sql = "SELECT count(1) as num FROM wlyy_doctor d WHERE d.czrq<= ? ";
        if (SaveModel.cityLevel.equals(level)) {
            sql += " and d.city = ? ";
            //区级
        } else if (SaveModel.townLevel.equals(level)) {
            sql += " and d.town = ? ";
            //机构
        } else if (SaveModel.OrgLevel.equals(level)) {
            sql += " and d.hospital = ? ";
        }
        Map<String, Object> rs = null;
        JSONArray jsRs = new JSONArray();
        DecimalFormat df = new DecimalFormat("0.00");
        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")+""));
            json.put("socre", df.format(rr));
            jsRs.put(json);
        }
        return jsRs;
    }
    /**
     * 统计当前团队,签约人数,服务次数,平均满意度
     *
     * @return
     */
    public JSONArray getStatTitleInfo(String doctor, String startDate, String endDate) throws Exception {
        AdminTeam admin = adminTeamDao.findByLeaderCode(doctor);
        if (admin == null) {
            throw new RuntimeException("未找到团队信息");
        }
        SaveModel saveModel = elasticsearchUtil.findOneDateQuotaLevel0(startDate,endDate,admin.getId()+"",Integer.parseInt(SaveModel.teamLevel),"1","2");
        //计算签约总数
        Long sc = saveModel.getResult2().longValue();
        //查找续签表未转移的记录
        //3.平均满意度
        SaveModel saveModel2 = elasticsearchUtil.findOneDateQuotaLevel0(startDate,endDate,admin.getId()+"",Integer.parseInt(SaveModel.teamLevel),"1","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());
        Double avgCout = saveModel2.getResult1()/(Integer)map.get("num");
        return null;
    }
}

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

@ -102,7 +102,7 @@ public class ElasticsearchUtil {
                        } else if (value instanceof Integer) {
                            clazz.getMethod(key, Integer.class).invoke(saveModel, value);
                        } else if (value instanceof Double) {
                            clazz.getMethod(key, Integer.class).invoke(saveModel, ((Double) value).intValue());
                            clazz.getMethod(key, Double.class).invoke(saveModel, value);
                        } else if (value instanceof java.util.Date) {
                            clazz.getMethod(key, java.util.Date.class).invoke(saveModel, value);
                        }
@ -202,7 +202,7 @@ public class ElasticsearchUtil {
                    } else if (value instanceof Integer) {
                        clazz.getMethod(key, Integer.class).invoke(saveModel, value);
                    } else if (value instanceof Double) {
                        clazz.getMethod(key, Integer.class).invoke(saveModel, ((Double) value).intValue());
                        clazz.getMethod(key, Double.class).invoke(saveModel, value);
                    } else if (value instanceof java.util.Date) {
                        clazz.getMethod(key, java.util.Date.class).invoke(saveModel, value);
                    }

+ 4 - 4
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/web/quota/vo/SaveModel.java

@ -72,9 +72,9 @@ public class SaveModel {
    private String slaveKey4Name;
    private Double result1 = 0.0;//统计结果
    private Double result1 = 0.0;//统计结果(如:评分总合)
    private Integer result2 = 0;//统计结果
    private Double result2 = 0.0;//统计结果
    private String areaLevel;// 1 省 2 市 3 区县 4 机构 5团队
    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyyMMdd'T'HHmmss.SSS'Z'")
@ -165,11 +165,11 @@ public class SaveModel {
        this.result1 = result1;
    }
    public Integer getResult2() {
    public Double getResult2() {
        return result2;
    }
    public void setResult2(Integer result2) {
    public void setResult2(Double result2) {
        this.result2 = result2;
    }

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

@ -775,7 +775,7 @@ public class EsStatisticsController extends BaseController {
    @ResponseBody
    public String getBindingRate() {
        try {
            return write(200, "查询成功", "data", statisticsService.getBindingRate());
            return write(200, "查询成功", "data", statisticsESService.getBindingRate());
        } catch (Exception e) {
            e.printStackTrace();
            return error(-1, "查询失败");
@ -793,6 +793,7 @@ public class EsStatisticsController extends BaseController {
    @ResponseBody
    public String getAVGSocre(@RequestParam(required = true) String level, @RequestParam(required = true) String area) {
        try {
            level = elasticsearchUtil.changeLevel(Integer.parseInt(level))+"";
            return write(200, "查询成功", "data", statisticsService.getAVGSocre(level, area));
        } catch (Exception e) {
            e.printStackTrace();
@ -812,7 +813,8 @@ public class EsStatisticsController extends BaseController {
                                     @RequestParam(required = true) String statDate,
                                     @RequestParam(required = true) String endDate) {
        try {
            return write(200, "查询成功", "data", statisticsService.getAVGSocreByMonth(level, area, statDate, endDate));
            level = elasticsearchUtil.changeLevel(Integer.parseInt(level))+"";
            return write(200, "查询成功", "data", statisticsESService.getAVGSocreByMonth(level, area, statDate, endDate));
        } catch (Exception e) {
            error(e);
            return error(-1, "查询失败");