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