Browse Source

es代码提交

liuwenbin 7 years ago
parent
commit
93da24933b

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

@ -58,6 +58,7 @@ public class StatisticsESService {
    SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
    SimpleDateFormat dateFormat2 = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssXX");
    SimpleDateFormat dateFormat3 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    /**
     * 获取上次统计时间
     *
@ -2361,21 +2362,287 @@ public class StatisticsESService {
     * @return
     */
    public JSONArray getStatTitleInfo(String doctor, String startDate, String endDate) throws Exception {
        JSONArray rs = new JSONArray();
        AdminTeam admin = adminTeamDao.findByLeaderCode(doctor);
        if (admin == null) {
            throw new RuntimeException("未找到团队信息");
        }
        //1.计算签约总数
        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);
        rs.put(signTotal);
        //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");
        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);
        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());
        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());
        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());
        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());
        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());
        rs.put(followupCout);
        return rs;
    }
    /**
     * 查询签约
     *
     * @param type      0 按周,1 按月
     * @param startDate
     * @param endDate
     * @return
     */
    public JSONArray getSignCountLineByType(String doctor, String type, String startDate, String endDate) throws Exception {
        AdminTeam admin = adminTeamDao.findByLeaderCode(doctor);
        if (admin == null) {
            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<Map<String, Object>> rs = new ArrayList<>();
        for (SaveModel saveModel:list) {
            Map<String, Object> map = new HashMap<>();
            map.put("applyDate",dateFormat3.format(saveModel.getQuotaDate()));
            map.put("signCount",saveModel.getResult2().longValue());
            rs.add(map);
        }
        JSONArray rsJs = new JSONArray(rs);
        return rsJs;
    }
    /**
     * 查询续签约
     *
     * @param type      0 按周,1 按月
     * @param startDate
     * @param endDate
     * @return
     */
    public JSONArray getRenewCountLineByType(String doctor, String type, String startDate, String endDate) throws Exception {
        AdminTeam admin = adminTeamDao.findByLeaderCode(doctor);
        if (admin == null) {
            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<Map<String, Object>> rs = new ArrayList<>();
        for (SaveModel saveModel:list) {
            Map<String, Object> map = new HashMap<>();
            map.put("applyDate",dateFormat3.format(saveModel.getQuotaDate()));
            map.put("signCount",saveModel.getResult2().longValue());
            rs.add(map);
        }
        JSONArray rsJs = new JSONArray(rs);
        return rsJs;
    }
    /**
     * 获取咨询数和未回复数
     * @param doctor
     * @param startDate
     * @param endDate
     * @param isNow
     * @return
     */
    public JSONObject getReyStatbyTeamNow(String doctor, String startDate, String endDate, String isNow) throws Exception{
        AdminTeam admin = adminTeamDao.findByLeaderCode(doctor);
        if (admin == null) {
            throw new RuntimeException("未找到团队信息");
        }
        Long id = admin.getId();
        //家庭医生、健康咨询到达量
        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");
        Long noReyCount = saveModel.getResult2().longValue();
        JSONObject rs = new JSONObject();
        rs.put("onReyCount", noReyCount);
        rs.put("totalCount", totalCount);
        return rs;
    }
    /***
     * 获取平均折线图
     *
     * @param doctor
     * @param startDate
     * @param endDate
     * @param type      0 周,1月
     * @return
     */
    public JSONArray getAvgLine(String doctor, String startDate, String endDate, String type) throws Exception{
        AdminTeam admin = adminTeamDao.findByLeaderCode(doctor);
        if (admin == null) {
            throw new RuntimeException("未找到团队信息");
        }
        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+"");
        SaveModel saveModel = null;
        Map<String, Object> map = null;
        List<Map<String, Object>> rs = null;
                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){
                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()));
            }
            map.put("avgCount",avgCount);
            rs.add(map);
        }
        return new JSONArray(rs);
    }
    /**
     * 获取团队月或周咨询未回复和总数折线图
     *
     * @param teamCode
     * @param startDate
     * @param endDate
     * @param type      0周,1月
     * @return
     */
    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+"");
        //咨询总数
        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) {
            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("noRely",one.getResult2().longValue());
            noReyList.add(map);
        }
        List<Map<String, Object>> totalList = new ArrayList<>();
        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("noRely",one.getResult2().longValue());
            totalList.add(map);
        }
        JSONObject result = new JSONObject();
        result.put("noReyList", noReyList);
        result.put("totalList", totalList);
        return result;
    }
    /**
     * 获取团队随访量折线统计图(弃用)
     *
     * @param type
     * @param teamCode
     * @param startDate
     * @param endDate
     * @return
     */
    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+"");
        Map<String, Object> map = null;
        List<Map<String, Object>> totalList = new ArrayList<>();
        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("followupCount",one.getResult2().longValue());
            totalList.add(map);
        }
        return null;
    }
    /**
     * 获取待预约量团队统计折线图
     * @param teamCode
     * @param startDate
     * @param endDate
     * @param type
     * @return
     */
    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+"");
        Map<String, Object> map = null;
        List<Map<String, Object>> totalList = new ArrayList<>();
        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("reservationCount",one.getResult2().longValue());
            totalList.add(map);
        }
        return new JSONArray(totalList);
    }
}

+ 14 - 0
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/util/DateUtil.java

@ -1063,4 +1063,18 @@ public class DateUtil {
		return y+m+d;
	}
	public static int getWeekOfMonth(String dateString){
		Date date = strToDate(dateString);
		return getWeekOfMonth(date);
	}
	public static int getWeekOfMonth(Date date){
		Calendar calendar = Calendar.getInstance();
		calendar.setTime(date);
		int weekOfMonth = calendar.get(Calendar.WEEK_OF_MONTH);
		return weekOfMonth;
	}
}

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

@ -832,7 +832,7 @@ public class EsStatisticsController extends BaseController {
                                   @RequestParam(required = true) String endDate) {
        try {
            return write(200, "查询成功", "data", statisticsService.getStatTitleInfo(getUID(), startDate, endDate));
            return write(200, "查询成功", "data", statisticsESService.getStatTitleInfo(getUID(), startDate, endDate));
            //return write(200, "查询成功", "data", statisticsService.getStatTitleInfo("zbqD201703150228",startDate,endDate));
        } catch (Exception e) {
@ -859,10 +859,10 @@ public class EsStatisticsController extends BaseController {
        try {
            //判断是签约还是续签
            if ("0".equals(signType)) {
                return write(200, "查询成功", "data", statisticsService.getSignCountLineByType(getUID(), type, startDate, endDate));
                return write(200, "查询成功", "data", statisticsESService.getSignCountLineByType(getUID(), type, startDate, endDate));
                //return write(200, "查询成功", "data", statisticsService.getSignCountLineByType("xh1D201703150222",type,startDate,endDate));
            } else {
                return write(200, "查询成功", "data", statisticsService.getRenewCountLineByType(getUID(), type, startDate, endDate));
                return write(200, "查询成功", "data", statisticsESService.getRenewCountLineByType(getUID(), type, startDate, endDate));
                //return write(200, "查询成功", "data", statisticsService.getRenewCountLineByType("xh1D201703150222",type,startDate,endDate));
            }
        } catch (Exception e) {
@ -885,7 +885,7 @@ public class EsStatisticsController extends BaseController {
                                   @RequestParam(required = true) String endDate,
                                   @RequestParam(required = true) String isNow) {
        try {
            return write(200, "查询成功", "data", statisticsService.getReyStatbyTeamNow(getUID(), startDate, endDate, isNow));
            return write(200, "查询成功", "data", statisticsESService.getReyStatbyTeamNow(getUID(), startDate, endDate, isNow));
            //return write(200, "查询成功", "data", statisticsService.getReyStatbyTeamNow("zbqD201703150228",startDate,endDate,isNow));
        } catch (Exception e) {
            error(e);
@ -927,7 +927,7 @@ public class EsStatisticsController extends BaseController {
                             @RequestParam(required = true) String endDate,
                             @RequestParam(required = true) String type) {
        try {
            return write(200, "查询成功", "data", statisticsService.getAvgLine(getUID(), startDate, endDate, type));
            return write(200, "查询成功", "data", statisticsESService.getAvgLine(getUID(), startDate, endDate, type));
            // return write(200, "查询成功", "data", statisticsService.getAvgLine("xh1D201703150222",startDate,endDate,type));
        } catch (Exception e) {
            error(e);
@ -967,7 +967,7 @@ public class EsStatisticsController extends BaseController {
                                      @RequestParam(required = true) String endDate,
                                      @RequestParam(required = true) String type) {
        try {
            return write(200, "查询成功", "data", statisticsService.getTeamConsultCount(teamCode, startDate, endDate, type));
            return write(200, "查询成功", "data", statisticsESService.getTeamConsultCount(teamCode, startDate, endDate, type));
        } catch (Exception e) {
            error(e);
            return error(-1, "查询失败");
@ -975,7 +975,7 @@ public class EsStatisticsController extends BaseController {
    }
    /**
     * 计算团队医生月或周咨询未回复和总数折线图
     * 计算团队某个医生月或周咨询未回复和总数折线图
     *
     * @param teamCode
     * @param startDate
@ -1000,7 +1000,7 @@ public class EsStatisticsController extends BaseController {
    }
    /**
     * 获取团队内这成员,未回复数,总数,结束咨询数
     * 获取某个团队内所有成员,未回复数,总数,结束咨询数
     *
     * @param teamCode
     * @param startDate
@ -1024,7 +1024,7 @@ public class EsStatisticsController extends BaseController {
    }
    /**
     * 获取Doctor咨询结果
     * 获取某个Doctor咨询结果
     *
     * @param doctor
     * @param teamCode
@ -1047,7 +1047,7 @@ public class EsStatisticsController extends BaseController {
    }
    /**
     * 获取团队随访量折线统计图
     * 获取团队随访量折线统计图(弃用)
     *
     * @param type
     * @param teamCode
@ -1133,7 +1133,7 @@ public class EsStatisticsController extends BaseController {
    }
    /**
     * 获取待预约量团队统计则线图
     * 获取待预约量团队统计折线图
     *
     * @param teamCode
     * @param type
@ -1148,7 +1148,7 @@ public class EsStatisticsController extends BaseController {
                                 @RequestParam(required = true) String startDate,
                                 @RequestParam(required = true) String endDate) {
        try {
            return write(200, "查询成功", "data", statisticsService.getTeamResLine(teamCode, startDate, endDate, type));
            return write(200, "查询成功", "data", statisticsESService.getTeamResLine(teamCode, startDate, endDate, type));
        } catch (Exception e) {
            error(e);
            return error(-1, "查询失败");