|
@ -164,13 +164,13 @@ public class StatisticsEsService {
|
|
|
|
|
|
//问诊量表格
|
|
|
//专家咨询数量
|
|
|
List<SaveModel> specialistSaveModels = elasticsearchUtil.findDateQuotaLevel0(startDate, endDate, area, level, "4", SaveModel.timeLevel_ZL,null,level2_type);
|
|
|
List<SaveModel> specialistSaveModels = elasticsearchUtil.findDateQuotaLevel1(startDate, endDate, area, level, index, SaveModel.timeLevel_ZL,"1",null,level2_type);
|
|
|
//协同门诊
|
|
|
List<SaveModel> syngySaveModels = elasticsearchUtil.findDateQuotaLevel1(startDate, endDate, area, level, index, SaveModel.timeLevel_ZL,"2",null,level2_type);
|
|
|
List<SaveModel> syngySaveModels = elasticsearchUtil.findDateQuotaLevel1(startDate, endDate, area, level, index, SaveModel.timeLevel_ZL,"12",null,level2_type);
|
|
|
//图文复诊
|
|
|
List<SaveModel> topicSaveModels = elasticsearchUtil.findDateQuotaLevel2(startDate, endDate, area, level, index, SaveModel.timeLevel_ZL,"1","1",null,level2_type);
|
|
|
List<SaveModel> topicSaveModels = elasticsearchUtil.findDateQuotaLevel1(startDate, endDate, area, level, index, SaveModel.timeLevel_ZL,"9",null,level2_type);
|
|
|
///视频复诊
|
|
|
List<SaveModel> vedioSaveModels = elasticsearchUtil.findDateQuotaLevel2(startDate, endDate, area, level, index, SaveModel.timeLevel_ZL,"1","2",null,level2_type);
|
|
|
List<SaveModel> vedioSaveModels = elasticsearchUtil.findDateQuotaLevel1(startDate, endDate, area, level, index, SaveModel.timeLevel_ZL,"16",null,level2_type);
|
|
|
JSONArray array = new JSONArray();
|
|
|
List<String> list = new ArrayList<>();
|
|
|
|
|
@ -196,7 +196,7 @@ public class StatisticsEsService {
|
|
|
Double synegy =0.0;
|
|
|
if (index.equalsIgnoreCase("3")){
|
|
|
specialist = 0.0;
|
|
|
}else if (index.equalsIgnoreCase("1")){
|
|
|
}else if (index.equalsIgnoreCase("5")){
|
|
|
for (SaveModel saveModel:specialistSaveModels){
|
|
|
if (level2_type.equals(SaveModel.deptLevel)){
|
|
|
if (StringUtils.isNoneBlank(saveModel.getDept())&&code.equalsIgnoreCase(saveModel.getDept())){
|
|
@ -402,15 +402,23 @@ public class StatisticsEsService {
|
|
|
JSONObject object = new JSONObject();
|
|
|
//协同门诊
|
|
|
SaveModel saveModel1 = null;
|
|
|
saveModel1 = elasticsearchUtil.findOneDateQuotaLevel1(endDate, endDate, area, level, index, SaveModel.timeLevel_DDL, "2");
|
|
|
saveModel1 = elasticsearchUtil.findOneDateQuotaLevel1(endDate, endDate, area, level, index, SaveModel.timeLevel_DDL, "12");
|
|
|
//图文复诊
|
|
|
SaveModel saveModel2 = null;
|
|
|
saveModel2 = elasticsearchUtil.findOneDateQuotaLevel2(endDate, endDate, area, level, index, SaveModel.timeLevel_DDL, "1","1");
|
|
|
//saveModel2 = elasticsearchUtil.findOneDateQuotaLevel2(endDate, endDate, area, level, index, SaveModel.timeLevel_DDL, "1","1");
|
|
|
saveModel2 = elasticsearchUtil.findOneDateQuotaLevel1(endDate, endDate, area, level, index, SaveModel.timeLevel_DDL, "9");
|
|
|
//视频复诊
|
|
|
SaveModel saveModel3 = null;
|
|
|
/*
|
|
|
saveModel3 = elasticsearchUtil.findOneDateQuotaLevel2(endDate, endDate, area, level, index, SaveModel.timeLevel_DDL, "1","2");
|
|
|
*/
|
|
|
saveModel3 = elasticsearchUtil.findOneDateQuotaLevel1(endDate, endDate, area, level, index, SaveModel.timeLevel_DDL, "16");
|
|
|
Double specialistCount =0.0;
|
|
|
if(index.equalsIgnoreCase("1")){
|
|
|
//专科咨询
|
|
|
SaveModel saveModel4 = null;
|
|
|
saveModel4 = elasticsearchUtil.findOneDateQuotaLevel1(endDate, endDate, area, level, index, SaveModel.timeLevel_DDL, "1");
|
|
|
specialistCount = saveModel4.getResult1();//专家咨询数量
|
|
|
/*if(index.equalsIgnoreCase("5")){
|
|
|
//专家咨询数量
|
|
|
SaveModel saveModel = null;
|
|
|
if (StringUtils.isNotEmpty(level2_type)) {
|
|
@ -422,7 +430,7 @@ public class StatisticsEsService {
|
|
|
|
|
|
}else if (index.equalsIgnoreCase("3")){
|
|
|
specialistCount = 0.0;
|
|
|
}
|
|
|
}*/
|
|
|
|
|
|
Double synergyCount = saveModel1.getResult1();//协同门诊数量
|
|
|
Double topicCount = saveModel2.getResult1();//图文复诊数量
|
|
@ -458,10 +466,10 @@ public class StatisticsEsService {
|
|
|
|
|
|
//问诊总量
|
|
|
SaveModel saveModel1 = null;
|
|
|
saveModel1 = elasticsearchUtil.findOneDateQuotaLevel0(endDate, endDate, area, level, index, SaveModel.timeLevel_DDL);
|
|
|
saveModel1 = elasticsearchUtil.findOneDateQuotaLevel0(startDate, endDate, area, level, index, SaveModel.timeLevel_ZL);
|
|
|
int total = saveModel1.getResult1().intValue();
|
|
|
|
|
|
List<SaveModel> saveModels = elasticsearchUtil.findDateQuotaLevel0(endDate,endDate,area,level,index,SaveModel.timeLevel_DDL,null,level2_type);
|
|
|
List<SaveModel> saveModels = elasticsearchUtil.findDateQuotaLevel0(startDate,endDate,area,level,index,SaveModel.timeLevel_ZL,null,level2_type);
|
|
|
|
|
|
List<JSONObject> result = new ArrayList<>();
|
|
|
for (SaveModel saveModel:saveModels){
|
|
@ -516,16 +524,16 @@ public class StatisticsEsService {
|
|
|
public JSONObject getOutPatientTypeline(String startDate, String endDate, String area, int level, String index, String level2_type) throws Exception {
|
|
|
JSONObject object = new JSONObject();
|
|
|
//专家咨询
|
|
|
JSONArray specialistArray = dateTotalStatistics2(startDate,endDate,area,level,"4",null,SaveModel.timeLevel_ZL,null);
|
|
|
JSONArray specialistArray = dateTotalStatistics2(startDate,endDate,area,level,index,"1",SaveModel.timeLevel_ZL,null);
|
|
|
object.put("specialistArray",specialistArray);
|
|
|
//协同复诊
|
|
|
JSONArray syngeryArray = dateTotalStatistics2(startDate,endDate,area,level,index,"2",SaveModel.timeLevel_ZL,null);
|
|
|
JSONArray syngeryArray = dateTotalStatistics2(startDate,endDate,area,level,index,"12",SaveModel.timeLevel_ZL,null);
|
|
|
object.put("syngeryArray",syngeryArray);
|
|
|
//图文复诊
|
|
|
JSONArray topicArray = dateTotalStatistics2(startDate,endDate,area,level,index,"1",SaveModel.timeLevel_ZL,"1");
|
|
|
JSONArray topicArray = dateTotalStatistics2(startDate,endDate,area,level,index,"9",SaveModel.timeLevel_ZL,null);
|
|
|
object.put("topicArray",topicArray);
|
|
|
//视频复诊
|
|
|
JSONArray vedioArray = dateTotalStatistics2(startDate,endDate,area,level,index,"1",SaveModel.timeLevel_ZL,"2");
|
|
|
JSONArray vedioArray = dateTotalStatistics2(startDate,endDate,area,level,index,"16",SaveModel.timeLevel_ZL,null);
|
|
|
object.put("vedioArray",vedioArray);
|
|
|
return object;
|
|
|
}
|
|
@ -797,13 +805,13 @@ public class StatisticsEsService {
|
|
|
object.put("data",array);
|
|
|
}else if (flag==2){//活跃医生
|
|
|
//图文
|
|
|
List<SaveModel> topicModels = elasticsearchUtil.findDateQuotaLevel2(startDate, endDate, area, level, index, SaveModel.timeLevel_ZL, "1","1",null, "6");
|
|
|
List<SaveModel> topicModels = elasticsearchUtil.findDateQuotaLevel1(startDate, endDate, area, level, index, SaveModel.timeLevel_ZL, "9",null, "6");
|
|
|
//视频
|
|
|
List<SaveModel> vedioModels = elasticsearchUtil.findDateQuotaLevel2(startDate, endDate, area, level, index, SaveModel.timeLevel_ZL, "1","2",null, "6");
|
|
|
List<SaveModel> vedioModels = elasticsearchUtil.findDateQuotaLevel1(startDate, endDate, area, level, index, SaveModel.timeLevel_ZL, "16",null, "6");
|
|
|
//协同
|
|
|
List<SaveModel> synegyModels = elasticsearchUtil.findDateQuotaLevel1(startDate, endDate, area, level, index, SaveModel.timeLevel_ZL, "2",null, "6");
|
|
|
List<SaveModel> synegyModels = elasticsearchUtil.findDateQuotaLevel1(startDate, endDate, area, level, index, SaveModel.timeLevel_ZL, "12",null, "6");
|
|
|
//专科
|
|
|
List<SaveModel> specialistModels = elasticsearchUtil.findDateQuotaLevel0(startDate, endDate, area, level,"4", SaveModel.timeLevel_ZL,null, "6");
|
|
|
List<SaveModel> specialistModels = elasticsearchUtil.findDateQuotaLevel1(startDate, endDate, area, level,index, SaveModel.timeLevel_ZL,"1",null, "6");
|
|
|
|
|
|
String deptSql = "select hd.CODE,hd.NAME from DICT_HOSPITAL_DEPT hd where CONSULT_DEPT_FLAG=1";
|
|
|
if (level==4){//科室
|
|
@ -1208,7 +1216,11 @@ public class StatisticsEsService {
|
|
|
for (SaveModel saveModel : saveModels) {
|
|
|
String range = "";
|
|
|
if (saveModel.getQuotaDate() != null) {
|
|
|
range = df.format(saveModel.getQuotaDate());
|
|
|
Calendar quotaDate = Calendar.getInstance();
|
|
|
quotaDate.setTime(saveModel.getQuotaDate());
|
|
|
quotaDate.add(Calendar.DATE, 6);
|
|
|
range = df.format(quotaDate.getTime());
|
|
|
|
|
|
}
|
|
|
JSONObject json = countResult.get(range);
|
|
|
// //因为上述时间集提前一天 但是前端是显示当前时间,所以这里给调整回去
|
|
@ -1384,4 +1396,202 @@ public class StatisticsEsService {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
|
|
|
/**
|
|
|
* 专科咨询统计总量
|
|
|
* @param startDate 开始时间
|
|
|
* @param endDate 结束时间
|
|
|
* @param area 区域
|
|
|
* @param level
|
|
|
* @param index
|
|
|
* @return
|
|
|
* @throws Exception
|
|
|
*/
|
|
|
public JSONObject getSpecialConsultHead(String startDate, String endDate, String area, int level, String index) throws Exception {
|
|
|
//总量
|
|
|
SaveModel saveModel = null;
|
|
|
//已回复
|
|
|
SaveModel saveModel1 = null;
|
|
|
//已结束
|
|
|
SaveModel saveModel2 = null;
|
|
|
//未回复
|
|
|
SaveModel saveModel3 = null;
|
|
|
//居民取消
|
|
|
SaveModel saveModel4 = null;
|
|
|
saveModel = elasticsearchUtil.findOneDateQuotaLevel0(endDate, endDate, area, level, "7", SaveModel.timeLevel_DDL);
|
|
|
saveModel1 = elasticsearchUtil.findOneDateQuotaLevel1(endDate, area, level, "6", SaveModel.timeLevel_DDL,"1");
|
|
|
saveModel3 = elasticsearchUtil.findOneDateQuotaLevel1(endDate, area, level, "6", SaveModel.timeLevel_DDL,"0");
|
|
|
saveModel4 = elasticsearchUtil.findOneDateQuotaLevel1(endDate, area, level, "7", SaveModel.timeLevel_DDL,"-1");
|
|
|
saveModel2 = elasticsearchUtil.findOneDateQuotaLevel1(endDate, area, level, "7", SaveModel.timeLevel_DDL,"1");
|
|
|
JSONObject object = new JSONObject();
|
|
|
object.put("specialConsultTotal",saveModel.getResult1());
|
|
|
object.put("haveReplyTotal",saveModel1.getResult1());
|
|
|
object.put("endTotal",saveModel2.getResult1());
|
|
|
object.put("notReplyTotal",saveModel3.getResult1());
|
|
|
object.put("cancelTotal",saveModel4.getResult1());
|
|
|
object.put("notReplyRate",getRange(saveModel3.getResult1().intValue(),saveModel.getResult1().intValue(),2));//未回复率
|
|
|
return object;
|
|
|
}
|
|
|
|
|
|
|
|
|
/**
|
|
|
* 专科咨询统计曲线
|
|
|
* @param startDate
|
|
|
* @param endDate
|
|
|
* @param area
|
|
|
* @param level
|
|
|
* @param index
|
|
|
* @param interval
|
|
|
* @param level2_type
|
|
|
* @return
|
|
|
* @throws Exception
|
|
|
*/
|
|
|
public JSONObject getSpecialConsultLine(String startDate, String endDate, String area, int level, String index,int interval, String level2_type) throws Exception {
|
|
|
//问诊量
|
|
|
JSONObject object = new JSONObject();
|
|
|
if (interval==1){
|
|
|
JSONArray array = dateTotalStatistics2(startDate,endDate,area,level,index,null,SaveModel.timeLevel_ZL,null);
|
|
|
object.put("data",array);
|
|
|
}else if (interval==2){
|
|
|
JSONArray array = weekTotalStatistics(startDate,endDate,area,level,index,null,SaveModel.timeLevel_ZL);
|
|
|
object.put("data",array);
|
|
|
}else if (interval==3){
|
|
|
JSONArray array = monthTotalStatistics2(startDate,endDate,area,level,index,null,SaveModel.timeLevel_ZL);
|
|
|
object.put("data",array);
|
|
|
}
|
|
|
return object;
|
|
|
}
|
|
|
|
|
|
|
|
|
/**
|
|
|
* 专科咨询统计表格
|
|
|
* @param startTime
|
|
|
* @param endTime
|
|
|
* @param level
|
|
|
* @param area
|
|
|
* @param lowLevel
|
|
|
* @return
|
|
|
* @throws Exception
|
|
|
*/
|
|
|
public JSONObject getConsultingStatisticsList(String startTime,String endTime,int level, String area, String lowLevel) throws Exception {
|
|
|
JSONObject result = new JSONObject();
|
|
|
// timeKey= "2017-11-01 00:00:00";
|
|
|
//已结束
|
|
|
List<SaveModel> endTotal = elasticsearchUtil.findListDateQuotaLevel1(endTime, endTime, area, level, "7", SaveModel.timeLevel_DDL, lowLevel,"1");
|
|
|
//咨询总数
|
|
|
List<SaveModel> total = elasticsearchUtil.findListDateQuotaLevel0(endTime, endTime, area, level, "6", SaveModel.timeLevel_DDL, lowLevel);
|
|
|
//未回复数
|
|
|
List<SaveModel> noRelyTotal = elasticsearchUtil.findListDateQuotaLevel1(endTime, endTime, area, level, "6", SaveModel.timeLevel_DDL, lowLevel,"0");
|
|
|
// JSONArray rely = new JSONArray(relyVal);
|
|
|
// JSONArray total = new JSONArray(relyTotal);
|
|
|
// JSONArray noRely = new JSONArray(noRelyTotal);
|
|
|
result.put("resultList", getCoutList(level, lowLevel, endTotal, total, noRelyTotal));
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
public List<Map<String, Object>> getCoutList(Integer level, String lowLevel, List<SaveModel> endConsult, List<SaveModel> total, List<SaveModel> noRely) {
|
|
|
Map<String, Object> relyMap = new HashMap<>();
|
|
|
Map<String, Object> totalMap = new HashMap<>();
|
|
|
Map<String, Object> noRelyMap = new HashMap<>();
|
|
|
org.json.JSONObject result = new org.json.JSONObject();
|
|
|
String low_level = StringUtils.isEmpty(lowLevel) ? String.valueOf(level + 1) : lowLevel;
|
|
|
//转换结束数
|
|
|
for (SaveModel saveModel : endConsult) {
|
|
|
if (SaveModel.doctorLevel.equals(low_level)) {
|
|
|
relyMap.put(saveModel.getDoctor(), saveModel);
|
|
|
} else if (SaveModel.deptLevel.equals(low_level)) {
|
|
|
relyMap.put(saveModel.getDept(), saveModel);
|
|
|
}else if (SaveModel.OrgLevel.equals(low_level)) {
|
|
|
relyMap.put(saveModel.getHospital(), saveModel);
|
|
|
}
|
|
|
}
|
|
|
;
|
|
|
|
|
|
//转换总咨询数
|
|
|
for (SaveModel saveModel : total) {
|
|
|
if (SaveModel.doctorLevel.equals(low_level)) {
|
|
|
totalMap.put(saveModel.getDoctor(), saveModel);
|
|
|
} else if (SaveModel.deptLevel.equals(low_level)) {
|
|
|
totalMap.put(saveModel.getDept(), saveModel);
|
|
|
}else if (SaveModel.OrgLevel.equals(low_level)) {
|
|
|
totalMap.put(saveModel.getHospital(), saveModel);
|
|
|
}
|
|
|
}
|
|
|
;
|
|
|
//转换已结束
|
|
|
for (SaveModel saveModel : noRely) {
|
|
|
if (SaveModel.doctorLevel.equals(low_level)) {
|
|
|
noRelyMap.put(saveModel.getDoctor(), saveModel);
|
|
|
} else if (SaveModel.deptLevel.equals(low_level)) {
|
|
|
noRelyMap.put(saveModel.getDept(), saveModel);
|
|
|
}else if (SaveModel.OrgLevel.equals(low_level)) {
|
|
|
noRelyMap.put(saveModel.getHospital(), saveModel);
|
|
|
}
|
|
|
}
|
|
|
;
|
|
|
List<Map<String, Object>> resultMaps = new ArrayList<>();
|
|
|
for (String key : totalMap.keySet()) {
|
|
|
Map<String, Object> rs = new HashMap<>();
|
|
|
SaveModel relyRs = (SaveModel) relyMap.get(key);
|
|
|
SaveModel totalRs = (SaveModel) totalMap.get(key);
|
|
|
SaveModel onRelyRs = (SaveModel) noRelyMap.get(key);
|
|
|
if (relyRs == null || totalRs == null || onRelyRs == null) {
|
|
|
continue;
|
|
|
}
|
|
|
//合并结果集
|
|
|
Integer totalNm = totalRs.getResult2().intValue();
|
|
|
Integer endNm = relyRs.getResult2().intValue();
|
|
|
Integer noRelyNm = onRelyRs.getResult2().intValue();
|
|
|
// rs.put("name", relyRs.get(area+"Name"));
|
|
|
if (SaveModel.doctorLevel.equals(low_level)) {
|
|
|
rs.put("name", relyRs.getDoctorName());
|
|
|
} else if (SaveModel.deptLevel.equals(low_level)) {
|
|
|
rs.put("name", relyRs.getDeptName());
|
|
|
} else if (SaveModel.OrgLevel.equals(low_level)) {
|
|
|
rs.put("name", relyRs.getHospitalName());
|
|
|
}
|
|
|
rs.put("noRelyCount", noRelyNm);
|
|
|
rs.put("endCount", endNm);
|
|
|
rs.put("total", totalNm);
|
|
|
rs.put("code", key);
|
|
|
if (totalNm != null && totalNm != 0) {
|
|
|
if (endNm != null && endNm != 0) {
|
|
|
double rr = (double) endNm / totalNm * 100;
|
|
|
DecimalFormat df = new DecimalFormat("0.00");
|
|
|
rs.put("endRate", df.format(rr) + "%");
|
|
|
rs.put("endDoubleRate", rr);
|
|
|
} else {
|
|
|
rs.put("endRate", "0.00%");
|
|
|
rs.put("endDoubleRate", 0.0);
|
|
|
}
|
|
|
if (noRelyNm != null && noRelyNm != 0) {
|
|
|
double rr = (double) noRelyNm / totalNm * 100;
|
|
|
DecimalFormat df = new DecimalFormat("0.00");
|
|
|
rs.put("noRelyRate", df.format(rr) + "%");
|
|
|
rs.put("noRelyDoubleRate", rr);
|
|
|
} else {
|
|
|
rs.put("noRelyRate", "0.00%");
|
|
|
rs.put("noRelyDoubleRate", 0.0);
|
|
|
}
|
|
|
|
|
|
} else {
|
|
|
rs.put("endRate", "0.00%");
|
|
|
rs.put("endDoubleRate", 0.0);
|
|
|
rs.put("noRelyRate", "0.00%");
|
|
|
rs.put("noRelyDoubleRate", 0.0);
|
|
|
}
|
|
|
resultMaps.add(rs);
|
|
|
}
|
|
|
//根据为回复数排序
|
|
|
Collections.sort(resultMaps, new Comparator<Map<String, Object>>() {
|
|
|
|
|
|
public int compare(Map<String, Object> o1, Map<String, Object> o2) {
|
|
|
return (Integer) o1.get("total") < (Integer) o2.get("total") ? 1 : ((Integer) o1.get("total") == (Integer) o2.get("total") ? 0 : -1);
|
|
|
}
|
|
|
});
|
|
|
return resultMaps;
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|