|
@ -12,6 +12,7 @@ import com.yihu.wlyy.statistics.etl.mycache.CachePool;
|
|
import com.yihu.wlyy.statistics.etl.role.*;
|
|
import com.yihu.wlyy.statistics.etl.role.*;
|
|
import com.yihu.wlyy.statistics.etl.storage.RedisStorage;
|
|
import com.yihu.wlyy.statistics.etl.storage.RedisStorage;
|
|
import com.yihu.wlyy.statistics.model.consult.ConsultTeam;
|
|
import com.yihu.wlyy.statistics.model.consult.ConsultTeam;
|
|
|
|
import com.yihu.wlyy.statistics.model.consult.ConsultTeamDto;
|
|
import com.yihu.wlyy.statistics.model.hosptial.Hospital;
|
|
import com.yihu.wlyy.statistics.model.hosptial.Hospital;
|
|
import com.yihu.wlyy.statistics.model.job.QuartzJobLog;
|
|
import com.yihu.wlyy.statistics.model.job.QuartzJobLog;
|
|
import com.yihu.wlyy.statistics.model.label.SignPatientLabelInfo;
|
|
import com.yihu.wlyy.statistics.model.label.SignPatientLabelInfo;
|
|
@ -24,6 +25,7 @@ import com.yihu.wlyy.statistics.util.DateUtil;
|
|
import com.yihu.wlyy.statistics.util.IdCardUtil;
|
|
import com.yihu.wlyy.statistics.util.IdCardUtil;
|
|
import com.yihu.wlyy.statistics.util.JsonUtil;
|
|
import com.yihu.wlyy.statistics.util.JsonUtil;
|
|
import com.yihu.wlyy.statistics.util.SpringUtil;
|
|
import com.yihu.wlyy.statistics.util.SpringUtil;
|
|
|
|
import org.apache.commons.collections.map.HashedMap;
|
|
import org.json.JSONArray;
|
|
import org.json.JSONArray;
|
|
import org.json.JSONObject;
|
|
import org.json.JSONObject;
|
|
import org.quartz.DisallowConcurrentExecution;
|
|
import org.quartz.DisallowConcurrentExecution;
|
|
@ -176,6 +178,8 @@ public class CurrentDayAllQuotaJob implements Job {
|
|
computequota_21();//统计今天的已经签约微信关注人数
|
|
computequota_21();//统计今天的已经签约微信关注人数
|
|
computequota_22();//未回复的咨询量
|
|
computequota_22();//未回复的咨询量
|
|
computequota_23();//及时回复的咨询量
|
|
computequota_23();//及时回复的咨询量
|
|
|
|
computequota_24();//及时回复的咨询量时间分布
|
|
|
|
computequota_25();//统计质询量总数
|
|
|
|
|
|
quartzJobLog.setJobContent(allContent.toString());
|
|
quartzJobLog.setJobContent(allContent.toString());
|
|
quartzJobLog.setJobName("实时统计");
|
|
quartzJobLog.setJobName("实时统计");
|
|
@ -252,7 +256,7 @@ public class CurrentDayAllQuotaJob implements Job {
|
|
if(consultIdMaps.size()>0){
|
|
if(consultIdMaps.size()>0){
|
|
sql="select admin_team_code,id,consult from wlyy_consult_team a where a.czrq< '"+tomorrow+"' and a.consult in ("+sb.toString()+")";
|
|
sql="select admin_team_code,id,consult from wlyy_consult_team a where a.czrq< '"+tomorrow+"' and a.consult in ("+sb.toString()+")";
|
|
}else{
|
|
}else{
|
|
sql="select admin_team_code,id,consult from wlyy_consult_team a where a.czrq< '"+tomorrow+ "' and a.consult ='noRey' ";
|
|
|
|
|
|
sql="select admin_team_code,id,consult from wlyy_consult_team a where a.czrq< '"+tomorrow+ "' and a.consult ='Rey' ";
|
|
} //抽取數據
|
|
} //抽取數據
|
|
List<ConsultTeam> consultTeams= SpringUtil.getBean(DBExtract.class).extract(ConsultTeam.class,sql);
|
|
List<ConsultTeam> consultTeams= SpringUtil.getBean(DBExtract.class).extract(ConsultTeam.class,sql);
|
|
|
|
|
|
@ -270,6 +274,56 @@ public class CurrentDayAllQuotaJob implements Job {
|
|
}
|
|
}
|
|
allContent.append("----------23-----------");
|
|
allContent.append("----------23-----------");
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
private void computequota_24() {
|
|
|
|
String quotaId="24";
|
|
|
|
try{
|
|
|
|
//查找Im库中的所有的医生ID
|
|
|
|
List<Map<String, Object>> ims = getConsultIdsByIm24();
|
|
|
|
|
|
|
|
//得到医生的id
|
|
|
|
List<String> consultIdMaps=new ArrayList<>();
|
|
|
|
ims.stream().forEach(map -> {
|
|
|
|
if (map.containsKey("consultId")) {
|
|
|
|
consultIdMaps.add(String.valueOf("'"+map.get("consultId")+"'"));
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
StringBuffer sb=new StringBuffer("");
|
|
|
|
for(int i=0;i<consultIdMaps.size();i++){
|
|
|
|
sb.append(consultIdMaps.get(i));
|
|
|
|
if(i<(consultIdMaps.size()-1)){
|
|
|
|
sb.append(",");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
String sql="";
|
|
|
|
//找出今天的咨询信息
|
|
|
|
if(consultIdMaps.size()>0){
|
|
|
|
sql="select admin_team_code,id,consult from wlyy_consult_team a where a.czrq< '"+tomorrow+"' and a.consult in ("+sb.toString()+")";
|
|
|
|
}else{
|
|
|
|
sql="select admin_team_code,id,consult from wlyy_consult_team a where a.czrq< '"+tomorrow+ "' and a.consult ='Rey' ";
|
|
|
|
} //抽取數據
|
|
|
|
List<ConsultTeam> consultTeams= SpringUtil.getBean(DBExtract.class).extract(ConsultTeam.class,sql);
|
|
|
|
|
|
|
|
List<ConsultTeamDto> consultTeamDtos = getConsultTeams(ims,consultTeams);
|
|
|
|
System.out.println("consultTeamDtos num:"+consultTeamDtos.size());
|
|
|
|
//過濾數據
|
|
|
|
FilterModel etlModels= consultDataFilter.filter2(consultTeamDtos,sql,null,ConsultDataFilter.level2ReplyTime);
|
|
|
|
//统计数据
|
|
|
|
List<Map<String, List<ETLModel>>> returnDatas= SpringUtil.getBean(Level1Role.class).elt(etlModels.getEtlModelList());
|
|
|
|
//统计数据 二级维度
|
|
|
|
List<Map<String, Map<String, List<ETLModel>>>> level2Data= SpringUtil.getBean(Level2Role.class).elt(returnDatas);
|
|
|
|
//保存数据
|
|
|
|
SpringUtil.getBean(RedisStorage.class).saveByLevel2(level2Data,null,quotaId,5,8);
|
|
|
|
|
|
|
|
allContent.append(JsonUtil.objToStr(etlModels.getLogModel()));
|
|
|
|
}catch (Exception e){
|
|
|
|
e.printStackTrace();
|
|
|
|
allContent.append("统计失败:"+e.getMessage());
|
|
|
|
}
|
|
|
|
allContent.append("----------24----------");
|
|
|
|
|
|
}
|
|
}
|
|
/**
|
|
/**
|
|
* 找出 im中的所有未回复的topic
|
|
* 找出 im中的所有未回复的topic
|
|
@ -305,7 +359,7 @@ public class CurrentDayAllQuotaJob implements Job {
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
* 找出 im中的所有未回复的topic
|
|
|
|
|
|
* 找出 im中的及时回复的topic
|
|
*
|
|
*
|
|
* @return
|
|
* @return
|
|
*/
|
|
*/
|
|
@ -322,6 +376,7 @@ public class CurrentDayAllQuotaJob implements Job {
|
|
" AND t.session_id = s.id " +
|
|
" AND t.session_id = s.id " +
|
|
" AND s.business_type=2 " +
|
|
" AND s.business_type=2 " +
|
|
" AND t.`reply`=1 " +
|
|
" AND t.`reply`=1 " +
|
|
|
|
" AND TIMESTAMPDIFF(SECOND ,t.reply_time,t.create_time) <86400 AND TIMESTAMPDIFF(SECOND ,t.reply_time,t.create_time) >0 "+
|
|
" AND t.create_time< '" + tomorrow + "'";
|
|
" AND t.create_time< '" + tomorrow + "'";
|
|
List<Map<String, Object>> ims = imjdbcTemplate.queryForList(sql);
|
|
List<Map<String, Object>> ims = imjdbcTemplate.queryForList(sql);
|
|
//得到医生的id
|
|
//得到医生的id
|
|
@ -337,6 +392,56 @@ public class CurrentDayAllQuotaJob implements Job {
|
|
return ids;
|
|
return ids;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* 找出 im中的及时回复的topic
|
|
|
|
*
|
|
|
|
* @return
|
|
|
|
*/
|
|
|
|
public List<Map<String, Object>> getConsultIdsByIm24() {
|
|
|
|
String sql = "SELECT DISTINCT t.id consultId ,t.reply_time replyTime" +
|
|
|
|
" FROM " +
|
|
|
|
" topics t, " +
|
|
|
|
" participants p, " +
|
|
|
|
" doctors d ," +
|
|
|
|
" sessions s " +
|
|
|
|
" WHERE " +
|
|
|
|
" p.participant_id = d.id " +
|
|
|
|
" AND t.session_id = p.session_id " +
|
|
|
|
" AND t.session_id = s.id " +
|
|
|
|
" AND s.business_type=2 " +
|
|
|
|
" AND t.`reply`=1 " +
|
|
|
|
" AND TIMESTAMPDIFF(SECOND ,t.reply_time,t.create_time) <86400 AND TIMESTAMPDIFF(SECOND ,t.reply_time,t.create_time) >0 "+
|
|
|
|
" AND t.create_time< '" + tomorrow + "'";
|
|
|
|
List<Map<String, Object>> ims = imjdbcTemplate.queryForList(sql);
|
|
|
|
|
|
|
|
return ims;
|
|
|
|
}
|
|
|
|
|
|
|
|
public List<ConsultTeamDto> getConsultTeams(List<Map<String, Object>> ims, List<ConsultTeam> consultTeams){
|
|
|
|
List<ConsultTeamDto> rs = new ArrayList<>();
|
|
|
|
if(consultTeams!=null&&consultTeams.size()>0&&ims!=null&&ims.size()>0){
|
|
|
|
|
|
|
|
//將List转换为Map,减小循环层级
|
|
|
|
Map<String,Object> mapList = new HashedMap();
|
|
|
|
for(Map<String, Object> m : ims){
|
|
|
|
mapList.put(m.get("consultId").toString(),m);
|
|
|
|
}
|
|
|
|
//合并结果集
|
|
|
|
for(ConsultTeam consultTeam :consultTeams){
|
|
|
|
ConsultTeamDto con = new ConsultTeamDto();
|
|
|
|
String key = consultTeam.getConsult();
|
|
|
|
Map<String, Object> ms = (Map<String, Object>)mapList.get(key);
|
|
|
|
con.setConsult(key);
|
|
|
|
con.setId(consultTeam.getId());
|
|
|
|
con.setAdminTeamCode(consultTeam.getAdminTeamCode());
|
|
|
|
con.setReplyTime((Date)ms.get("replyTime"));
|
|
|
|
rs.add(con);
|
|
|
|
}
|
|
|
|
return rs;
|
|
|
|
}
|
|
|
|
return rs;
|
|
|
|
}
|
|
|
|
|
|
private void computequota_21() {
|
|
private void computequota_21() {
|
|
try{
|
|
try{
|
|
//找出今天的签约信息 yesterday,now
|
|
//找出今天的签约信息 yesterday,now
|
|
@ -794,6 +899,26 @@ public class CurrentDayAllQuotaJob implements Job {
|
|
allContent.append("-----------10----------");
|
|
allContent.append("-----------10----------");
|
|
}
|
|
}
|
|
|
|
|
|
|
|
private void computequota_25() {
|
|
|
|
String quotaId="25";
|
|
|
|
try{
|
|
|
|
//找出总的咨询信息
|
|
|
|
String sql=" select * from wlyy_consult_team a where a.czrq< '"+tomorrow+"'";
|
|
|
|
//抽取數據
|
|
|
|
List<ConsultTeam> consultTeams= SpringUtil.getBean(DBExtract.class).extract(ConsultTeam.class,sql);
|
|
|
|
//過濾數據
|
|
|
|
FilterModel etlModels= consultDataFilter.filter(consultTeams,sql,null);
|
|
|
|
//统计数据
|
|
|
|
List<Map<String, List<ETLModel>>> returnDatas= SpringUtil.getBean(Level1Role.class).elt(etlModels.getEtlModelList());
|
|
|
|
//保存数据
|
|
|
|
SpringUtil.getBean(RedisStorage.class).saveByLevel1(returnDatas,null,quotaId);
|
|
|
|
allContent.append(JsonUtil.objToStr(etlModels.getLogModel()));
|
|
|
|
}catch (Exception e){
|
|
|
|
e.printStackTrace();
|
|
|
|
allContent.append("统计失败:"+e.getMessage());
|
|
|
|
}
|
|
|
|
allContent.append("----------25-----------");
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static String getDayString(Integer size) {
|
|
public static String getDayString(Integer size) {
|