Jelajahi Sumber

统计工作报告

trick9191 7 tahun lalu
induk
melakukan
3c1cdd3ae7

+ 274 - 24
patient-co-wlyy/src/main/java/com/yihu/wlyy/service/app/statistics/StatisticsService.java

@ -1743,21 +1743,6 @@ public class StatisticsService extends BaseService {
        //查找续签表未转移的记录
        String renew_sql = "SELECT COUNT(1) renewCount FROM wlyy_sign_family_renew t WHERE t.admin_team_code ="+id+" AND t.czrq >='"+startDate+"' AND t.czrq<='"+endDate+"' AND t.status =1 AND t.expenses_status ='1' AND t.is_valid =0";
        //2.统计服务次数
        //咨询量
        String consult_sql = "SELECT COUNT(1) AS consultCount FROM wlyy_consult_team t WHERE t.admin_team_code = "+id+" AND t.czrq <='"+endDate+"' AND t.czrq >='"+startDate+"'";
        //获取待预约
        String reservation_sql = "SELECT COUNT(1) AS reservationCount FROM wlyy_patient_reservation  w WHERE w.admin_team_code ="+id+" AND w.czrq <='"+endDate+"' AND w.czrq >='"+startDate+"'";
        //获取健康教育
        String article_sql = "SELECT COUNT(1) AS articleCount FROM wlyy_health_edu_article_patient w WHERE  w.admin_team_code ="+id+" AND w.czrq <='"+endDate+"' AND w.czrq >='"+startDate+"'";
        //获取健康指导
        String guidance_sql = "SELECT COUNT(1) AS guidanceCount  FROM wlyy_patient_health_guidance w WHERE w.admin_team_code ="+id+" AND w.czrq <='"+endDate+"' AND w.czrq >='"+startDate+"'";
        //随访数目
        String followup_sql ="SELECT COUNT(1) from wlyy_followup w WHERE w.admin_team_code="+id+" AND  w.create_time >='"+startDate+"' AND w.create_time<='"+endDate+"' AND w.followup_class IS NOT NULL ";
        //3.平均满意度
        String avg_sql="SELECT ROUND(AVG(s.score),1) avgScore FROM wlyy_consult c LEFT JOIN wlyy_evaluate_score s ON c.`code` = s.consult WHERE c.czrq>='"+startDate+"' AND c.czrq<='"+endDate+"' AND s.doctor in(select m.doctor_code from wlyy_admin_team_member m where m.team_id="+id+")";
@ -1768,29 +1753,32 @@ public class StatisticsService extends BaseService {
        Map<String,Object> renewCount = jdbcTemplate.queryForMap(renew_sql);
        //计算签约总数
        Integer sc = (Integer)signCount.get("signCount");
        Integer rc = (Integer)renewCount.get("renewCount");
        Long sc = (Long)signCount.get("signCount");
        Long rc = (Long)renewCount.get("renewCount");
        JSONObject signTotal =new JSONObject();
        signTotal.put("signTotal",sc+rc);
        rs.put(signTotal);
        //获取待预约
        Map<String,Object> consultCout= jdbcTemplate.queryForMap(consult_sql);
        //获取咨詢數
        Map<String,Object> consultCout= getConsultByteam(id ,startDate ,endDate);
        rs.put(consultCout);
        //获取待预约
        Map<String,Object> reservationCout= jdbcTemplate.queryForMap(reservation_sql);
        Map<String,Object> reservationCout = getReservationByteam(id ,startDate ,endDate);
        rs.put(reservationCout);
        //获取健康教育
        Map<String,Object> articleCout= jdbcTemplate.queryForMap(article_sql);
        Map<String,Object> articleCout= getEduArticleByTeam(id,startDate,endDate);
        rs.put(articleCout);
        //获取健康指导
        Map<String,Object> guidanceCout= jdbcTemplate.queryForMap(guidance_sql);
        Map<String,Object> guidanceCout= getGuidanceByTeam(id,startDate,endDate);
        rs.put(guidanceCout);
        //随访数目
        Map<String,Object> followupCout= jdbcTemplate.queryForMap(followup_sql);
        Map<String,Object> followupCout= getArticleByTeam(id,startDate,endDate);
        rs.put(followupCout);
        //平均满意度
        Map<String,Object> avgCout= jdbcTemplate.queryForMap(avg_sql);
        if(avgCout.get("avgScore")==null){
            avgCout.put("avgScore",0);
        }
        rs.put(avgCout);
        return rs;
@ -1915,10 +1903,16 @@ public class StatisticsService extends BaseService {
            String timeKey = redisTemplate.opsForValue().get("quota:timeKey");
            //当前时间获取未回复咨询总数
            String noReyVal = redisTemplate.opsForValue().get("quota:22:1:"+id+":"+timeKey);
            if(StringUtils.isBlank(noReyVal)){
                throw new RuntimeException("未找到截止日期数据");
            }
            JSONObject nr = new JSONObject(noReyVal);
            noRelyEndCount = nr.getLong("num");
            //获取当前时间咨询总数
            String totalVal = redisTemplate.opsForValue().get("quota:25:1:"+id+":"+timeKey);
            if(StringUtils.isBlank(totalVal)){
                throw new RuntimeException("未找到截止日期数据");
            }
            JSONObject tr = new JSONObject(totalVal);
            totalEndCount = tr.getLong("num");
        }else{
@ -1943,7 +1937,263 @@ public class StatisticsService extends BaseService {
        JSONObject rs = new JSONObject();
        rs.put("onReyCount",noRelyEndCount-noRelystartCount);
        rs.put("totalCount",totalstartCount-totalEndCount);
        rs.put("totalCount",totalEndCount-totalstartCount);
        return rs;
    }
    public JSONArray getServiceRankingList(String doctor ,String startDate,String endDate){
        AdminTeam admin =  adminTeamDao.findByLeaderCode(doctor);
        if(admin==null){
            throw new RuntimeException("未找到团队信息");
        }
        Long id = admin.getId();
        String orgcode = admin.getOrgCode();
        JSONArray rs = new JSONArray();
        //咨询团队排行SQL
        String crc_sql = "SELECT s.rowno AS consultRK FROM " +
                " ( " +
                "   select (@rowNum :=@rowNum + 1) AS rowno,t.count,t.admin_team_code " +
                "   FROM (" +
                "       SELECT COUNT(1) AS count,w.admin_team_code " +
                "       FROM wlyy_consult_team  w " +
                "       WHERE w.czrq>='"+startDate+" 00:00:00' AND w.czrq <='"+endDate+" 23:59:59' AND w.admin_team_code IN( " +
                "       SELECT " +
                "       m.id FROM wlyy_admin_team m " +
                "       WHERE m.org_code ='"+orgcode+"'" +
                "       ) " +
                "   GROUP BY w.admin_team_code " +
                "   ORDER BY count DESC " +
                "   )t," +
                "   (SELECT(@rowNum := 0)) b " +
                " ) s " +
                " WHERE s.admin_team_code ="+id;
        List<Map<String,Object>> crc = jdbcTemplate.queryForList(crc_sql);
        if(crc!=null&&crc.size()>0){
            rs.put(crc.get(0));
        }else{
            Map<String,Object> map = new HashMap<>();
            map.put("consultRK",0);
            rs.put(map);
        }
        //随访量排行
        String frc_sql ="SELECT s.rowno AS followupRK FROM " +
                "( " +
                " select (@rowNum :=@rowNum + 1) AS rowno,t.count,t.admin_team_code  " +
                " from ( " +
                " SELECT COUNT(1) AS count,w.admin_team_code " +
                " FROM wlyy_followup  w " +
                " WHERE w.org_code = '"+orgcode+"'  " +
                " AND w.admin_team_code IS NOT NULL " +
                " AND w.create_time >='"+startDate+" 00:00:00' AND w.create_time <='"+endDate+" 23:59:59'"+
                " GROUP BY w.admin_team_code  " +
                " ORDER BY count DESC " +
                " ) t, " +
                " (SELECT(@rowNum := 0)) b " +
                ") s  " +
                "WHERE s.admin_team_code ="+id;
        List<Map<String,Object>> frc = jdbcTemplate.queryForList(frc_sql);
        if(frc!=null&&frc.size()>0){
            rs.put(frc.get(0));
        }else{
            Map<String,Object> map = new HashMap<>();
            map.put("followupRK",0);
            rs.put(map);
        }
        //待预约量排行
        String resrc_sql = "SELECT s.rowno AS reservationRK from " +
                "( " +
                "  SELECT (@rowNum :=@rowNum + 1) AS rowno,t.reservationCount,t.admin_team_code \n" +
                "   FROM ( " +
                "   SELECT COUNT(1) AS reservationCount,w.admin_team_code " +
                "   FROM wlyy_patient_reservation  w " +
                "   WHERE w.czrq>='"+startDate+" 00:00:00' AND w.czrq <='"+endDate+" 23:59:59' AND " +
                "   w.org_code ='"+orgcode+"'" +
                "   AND w.doctor is not null " +
                "   AND w.admin_team_code IS NOT NULL " +
                "   GROUP BY w.admin_team_code " +
                "   ORDER BY reservationCount DESC " +
                "   ) t,(SELECT(@rowNum := 0)) b " +
                ") s  " +
                "WHERE s.admin_team_code ="+id;
        List<Map<String,Object>> resrc = jdbcTemplate.queryForList(resrc_sql);
        if(resrc!=null&&resrc.size()>0){
            rs.put(resrc.get(0));
        }else{
            Map<String,Object> map = new HashMap<>();
            map.put("reservationRK",0);
            rs.put(map);
        }
        //健康指导排行
        String grc_sql ="SELECT s.rowno AS guidanceRK FROM " +
                "( " +
                " SELECT (@rowNum :=@rowNum + 1) AS rowno,t.count,t.admin_team_code " +
                " FROM (" +
                " SELECT COUNT(1) AS count,w.admin_team_code " +
                " FROM wlyy_patient_health_guidance w " +
                " WHERE w.czrq>='"+startDate+" 00:00:00' AND w.czrq <='"+endDate+" 23:59:59' " +
                " AND  w.admin_team_code IN( " +
                " SELECT m.id FROM wlyy_admin_team m" +
                "   WHERE m.org_code ='"+orgcode+"'" +
                "   ) " +
                " GROUP BY w.admin_team_code " +
                " ORDER BY count DESC " +
                "   ) t," +
                "(SELECT(@rowNum := 0)) b " +
                " ) s " +
                "WHERE s.admin_team_code ="+id;
        List<Map<String,Object>> grc = jdbcTemplate.queryForList(grc_sql);
        if(grc!=null&&grc.size()>0){
            rs.put(grc.get(0));
        }else{
            Map<String,Object> map = new HashMap<>();
            map.put("guidanceRK",0);
            rs.put(map);
        }
        //健康教育排行
        String edurc_sql ="SELECT s.rowno AS articleRK FROM " +
                "( " +
                " SELECT (@rowNum :=@rowNum + 1) AS rowno,t.count,t.admin_team_code " +
                " FROM ( " +
                " SELECT COUNT(1) AS count,w.admin_team_code " +
                " FROM wlyy_health_edu_article_patient w " +
                " WHERE w.czrq>='"+startDate+" 00:00:00' AND w.czrq <='"+endDate+" 23:59:59' AND " +
                " w.admin_team_code IN(" +
                " SELECT m.id FROM wlyy_admin_team m " +
                " WHERE m.org_code ='"+orgcode+"'" +
                "   ) " +
                "   GROUP BY w.admin_team_code " +
                "   ORDER BY count DESC " +
                ") t," +
                "(SELECT(@rowNum := 0)) b" +
                ") s " +
                "WHERE s.admin_team_code ="+id;
        List<Map<String,Object>> edurc = jdbcTemplate.queryForList(edurc_sql);
        if(edurc!=null&&edurc.size()>0){
            rs.put(edurc.get(0));
        }else{
            Map<String,Object> map = new HashMap<>();
            map.put("articleRK",0);
            rs.put(map);
        }
        return rs;
    }
    /**
     * 获取咨询数
     * @param id
     * @param startDate
     * @param endDate
     * @return
     */
    public Map<String,Object> getConsultByteam(Long id ,String startDate ,String endDate){
        startDate = startDate+" 00:00:00";
        endDate = endDate+" 23:59:59";
        //咨询量
        String consult_sql = "SELECT COUNT(1) AS consultCount FROM wlyy_consult_team t WHERE t.admin_team_code = "+id+" AND t.czrq <='"+endDate+"' AND t.czrq >='"+startDate+"'";
        //获取咨詢數
        Map<String,Object> consultCout= jdbcTemplate.queryForMap(consult_sql);
        if(consultCout.get("consultCount")==null){
            consultCout.put("consultCount",0);
        }
        return consultCout;
    }
    public Map<String,Object> getReservationByteam(Long id ,String startDate ,String endDate){
        startDate = startDate+" 00:00:00";
        endDate = endDate+" 23:59:59";
        //获取待预约
        String reservation_sql = "SELECT COUNT(1) AS reservationCount FROM wlyy_patient_reservation  w WHERE w.admin_team_code ="+id+" AND w.czrq <='"+endDate+"' AND w.czrq >='"+startDate+"'";
        //获取待预约
        Map<String,Object> reservationCout= jdbcTemplate.queryForMap(reservation_sql);
        if(reservationCout.get("reservationCount")==null){
            reservationCout.put("reservationCount",0);
        }
        return reservationCout;
    }
    public Map<String,Object> getEduArticleByTeam(Long id ,String startDate ,String endDate){
        startDate = startDate+" 00:00:00";
        endDate = endDate+" 23:59:59";
        //获取健康教育
        String article_sql = "SELECT COUNT(1) AS articleCount FROM wlyy_health_edu_article_patient w WHERE  w.admin_team_code ="+id+" AND w.czrq <='"+endDate+"' AND w.czrq >='"+startDate+"'";
        //获取健康教育
        Map<String,Object> articleCout= jdbcTemplate.queryForMap(article_sql);
        if(articleCout.get("articleCount")==null){
            articleCout.put("articleCount",0);
        }
        return articleCout;
    }
    public Map<String,Object> getGuidanceByTeam(Long id ,String startDate ,String endDate){
        startDate = startDate+" 00:00:00";
        endDate = endDate+" 23:59:59";
        //获取健康指导
        String guidance_sql = "SELECT COUNT(1) AS guidanceCount  FROM wlyy_patient_health_guidance w WHERE w.admin_team_code ="+id+" AND w.czrq <='"+endDate+"' AND w.czrq >='"+startDate+"'";
        //获取健康指导
        Map<String,Object> guidanceCout= jdbcTemplate.queryForMap(guidance_sql);
        if(guidanceCout.get("guidanceCount")==null){
            guidanceCout.put("guidanceCount",0);
        }
        return guidanceCout;
    }
    public Map<String,Object> getArticleByTeam(Long id ,String startDate ,String endDate){
        startDate = startDate+" 00:00:00";
        endDate = endDate+" 23:59:59";
        //随访数目
        String followup_sql ="SELECT COUNT(1) AS followupCount from wlyy_followup w WHERE w.admin_team_code="+id+" AND  w.create_time >='"+startDate+"' AND w.create_time<='"+endDate+"' AND w.followup_class IS NOT NULL ";
        //随访数目
        Map<String,Object> followupCout= jdbcTemplate.queryForMap(followup_sql);
        if(followupCout.get("followupCount")==null){
            followupCout.put("followupCount",0);
        }
        return followupCout;
    }
    /***
     * 获取平均折线图
     * @param doctor
     * @param startDate
     * @param endDate
     * @param type 0 周,1月
     * @return
     */
    public JSONArray getAvgLine(String doctor,String startDate,String endDate,String type){
        AdminTeam admin =  adminTeamDao.findByLeaderCode(doctor);
        if(admin==null){
            throw new RuntimeException("未找到团队信息");
        }
        Long id = admin.getId();
        startDate = startDate+" 00:00:00";
        endDate = endDate+" 23:59:59";
        String sql ;
        //周计算
        if("0".equals(type)){
            sql = "SELECT DATE_FORMAT(t.czrq,'%Y-%m-%d') AS dateNo,ifnull(ROUND(AVG(s.score),1),0)  as avgCount " +
                    "    FROM  wlyy_consult_team t" +
                    "    LEFT JOIN wlyy_doctor d ON d.code = t.doctor " +
                    "    LEFT JOIN wlyy_evaluate_score s ON s.doctor = t.doctor  " +
                    " WHERE t.czrq <='"+endDate+"' AND t.czrq >='"+startDate+"'" +
                    " AND t.admin_team_code =" +id+
                    " GROUP BY dateNo ";
        }else{
            sql = "SELECT (DATE_FORMAT(t.czrq,'%v')-DATE_FORMAT('"+startDate+"','%v')+1) AS weekNo,ifnull(ROUND(AVG(s.score),1),0)  as avgCount " +
                    "    FROM  wlyy_consult_team t " +
                    "    LEFT JOIN wlyy_doctor d ON d.code = t.doctor " +
                    "    LEFT JOIN wlyy_evaluate_score s ON s.doctor = t.doctor " +
                    " WHERE t.czrq <='"+endDate+"' AND t.czrq >='"+startDate+"'" +
                    " AND t.admin_team_code =" +id+
                    " GROUP BY weekNo";
        }
        List<Map<String,Object>> rs = jdbcTemplate.queryForList(sql);
        JSONArray js = new JSONArray(rs);
        return js;
    }
}

+ 1 - 1
patient-co-wlyy/src/main/java/com/yihu/wlyy/task/PushMsgTask.java

@ -527,7 +527,7 @@ public class PushMsgTask {
                keyword1.setValue(json.getString("keyword1"));
                m.put("keyword1", keyword1);
            } else if (type == 16) {
                temp.setUrl(url + "xuqian/html/information.html?openid=" + openid);
                temp.setUrl(url + "xuqian/html/information.html?openid=" + openid+"&changeDoctor="+1);
                temp.setTemplate_id(SystemConf.getInstance().getSystemProperties().getProperty("template_doctor_survey"));
                WechatTemplateData keyword1 = new WechatTemplateData();
                keyword1.setColor("#000000");

+ 46 - 1
patient-co-wlyy/src/main/java/com/yihu/wlyy/web/statistic/StatisticsController.java

@ -725,7 +725,10 @@ public class StatisticsController extends BaseController {
    public String getStatTitleInfo(@RequestParam(required = true)String startDate,
                                   @RequestParam(required = true)String endDate){
        try {
            return write(200, "查询成功", "data", statisticsService.getStatTitleInfo(getUID(),startDate,endDate));
            //return write(200, "查询成功", "data", statisticsService.getStatTitleInfo("xh1D201703150222",startDate,endDate));
        } catch (Exception e) {
            error(e);
            return error(-1, "查询失败");
@ -737,7 +740,7 @@ public class StatisticsController extends BaseController {
     * @param startDate
     * @param endDate
     * @param signType 0 签约,1 续签
     * @param type
     * @param type 0 按周,1 按月
     * @return
     */
    @RequestMapping("/getSignCountLineByType")
@ -750,8 +753,10 @@ public class StatisticsController extends BaseController {
            //判断是签约还是续签
            if("0".equals(signType)){
                return write(200, "查询成功", "data", statisticsService.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", statisticsService.getRenewCountLineByType("xh1D201703150222",type,startDate,endDate));
            }
        } catch (Exception e) {
            error(e);
@ -773,12 +778,52 @@ public class StatisticsController extends BaseController {
                                    @RequestParam(required = true)String isNow){
        try {
            return write(200, "查询成功", "data", statisticsService.getReyStatbyTeam(getUID(),startDate,endDate,isNow));
            //return write(200, "查询成功", "data", statisticsService.getReyStatbyTeam("xh1D201703150222",startDate,endDate,isNow));
        } catch (Exception e) {
            error(e);
            return error(-1, "查询失败");
        }
    }
    /**
     * 获取机构内服务排行
     * @param startDate
     * @param endDate
     * @return
     */
    @RequestMapping("/getServiceRankingList")
    @ResponseBody
    public String getServiceRankingList(@RequestParam(required = true)String startDate,
                                        @RequestParam(required = true)String endDate){
        try {
            return write(200, "查询成功", "data", statisticsService.getServiceRankingList(getUID(),startDate,endDate));
            //return write(200, "查询成功", "data", statisticsService.getServiceRankingList("xh1D201703150222",startDate,endDate));
        } catch (Exception e) {
            error(e);
            return error(-1, "查询失败");
        }
    }
    /**
     *  获取平均值统计折线图
     * @param startDate
     * @param endDate
     * @param type 0周,1月
     * @return
     */
    @RequestMapping("/getAvgLine")
    @ResponseBody
    public String getAvgLine(@RequestParam(required = true)String startDate,
                             @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", statisticsService.getAvgLine("xh1D201703150222",startDate,endDate,type));
        } catch (Exception e) {
            error(e);
            return error(-1, "查询失败");
        }
    }
}