|
@ -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;
|
|
|
}
|
|
|
}
|