|  | @ -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();
 |  |             JSONArray array = new JSONArray();
 | 
												
													
														
															|  |             List<String> list = new ArrayList<>();
 |  |             List<String> list = new ArrayList<>();
 | 
												
													
														
															|  | 
 |  | 
 | 
												
											
												
													
														
															|  | @ -196,7 +196,7 @@ public class StatisticsEsService {
 | 
												
													
														
															|  |                 Double synegy =0.0;
 |  |                 Double synegy =0.0;
 | 
												
													
														
															|  |                 if (index.equalsIgnoreCase("3")){
 |  |                 if (index.equalsIgnoreCase("3")){
 | 
												
													
														
															|  |                     specialist = 0.0;
 |  |                     specialist = 0.0;
 | 
												
													
														
															|  |                 }else if (index.equalsIgnoreCase("1")){
 |  | 
 | 
												
													
														
															|  | 
 |  |                 }else if (index.equalsIgnoreCase("5")){
 | 
												
													
														
															|  |                     for (SaveModel saveModel:specialistSaveModels){
 |  |                     for (SaveModel saveModel:specialistSaveModels){
 | 
												
													
														
															|  |                         if (level2_type.equals(SaveModel.deptLevel)){
 |  |                         if (level2_type.equals(SaveModel.deptLevel)){
 | 
												
													
														
															|  |                             if (StringUtils.isNoneBlank(saveModel.getDept())&&code.equalsIgnoreCase(saveModel.getDept())){
 |  |                             if (StringUtils.isNoneBlank(saveModel.getDept())&&code.equalsIgnoreCase(saveModel.getDept())){
 | 
												
											
												
													
														
															|  | @ -402,15 +402,23 @@ public class StatisticsEsService {
 | 
												
													
														
															|  |         JSONObject object = new JSONObject();
 |  |         JSONObject object = new JSONObject();
 | 
												
													
														
															|  |         //协同门诊
 |  |         //协同门诊
 | 
												
													
														
															|  |         SaveModel saveModel1 = null;
 |  |         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;
 |  |         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;
 |  |         SaveModel saveModel3 = null;
 | 
												
													
														
															|  | 
 |  | /*
 | 
												
													
														
															|  |         saveModel3 = elasticsearchUtil.findOneDateQuotaLevel2(endDate, endDate, area, level, index, SaveModel.timeLevel_DDL, "1","2");
 |  |         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;
 |  |         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;
 |  |             SaveModel saveModel = null;
 | 
												
													
														
															|  |             if (StringUtils.isNotEmpty(level2_type)) {
 |  |             if (StringUtils.isNotEmpty(level2_type)) {
 | 
												
											
												
													
														
															|  | @ -422,7 +430,7 @@ public class StatisticsEsService {
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |         }else if (index.equalsIgnoreCase("3")){
 |  |         }else if (index.equalsIgnoreCase("3")){
 | 
												
													
														
															|  |             specialistCount = 0.0;
 |  |             specialistCount = 0.0;
 | 
												
													
														
															|  |         }
 |  | 
 | 
												
													
														
															|  | 
 |  |         }*/
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |         Double synergyCount = saveModel1.getResult1();//协同门诊数量
 |  |         Double synergyCount = saveModel1.getResult1();//协同门诊数量
 | 
												
													
														
															|  |         Double topicCount = saveModel2.getResult1();//图文复诊数量
 |  |         Double topicCount = saveModel2.getResult1();//图文复诊数量
 | 
												
											
												
													
														
															|  | @ -458,10 +466,10 @@ public class StatisticsEsService {
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |         //问诊总量
 |  |         //问诊总量
 | 
												
													
														
															|  |         SaveModel saveModel1 = null;
 |  |         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();
 |  |         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<>();
 |  |         List<JSONObject> result = new ArrayList<>();
 | 
												
													
														
															|  |         for (SaveModel saveModel:saveModels){
 |  |         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 {
 |  |     public JSONObject getOutPatientTypeline(String startDate, String endDate, String area, int level, String index, String level2_type) throws Exception {
 | 
												
													
														
															|  |         JSONObject object = new JSONObject();
 |  |         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);
 |  |         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);
 |  |         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);
 |  |         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);
 |  |         object.put("vedioArray",vedioArray);
 | 
												
													
														
															|  |         return object;
 |  |         return object;
 | 
												
													
														
															|  |     }
 |  |     }
 | 
												
											
												
													
														
															|  | @ -797,13 +805,13 @@ public class StatisticsEsService {
 | 
												
													
														
															|  |             object.put("data",array);
 |  |             object.put("data",array);
 | 
												
													
														
															|  |         }else if (flag==2){//活跃医生
 |  |         }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";
 |  |             String deptSql = "select hd.CODE,hd.NAME from DICT_HOSPITAL_DEPT hd where CONSULT_DEPT_FLAG=1";
 | 
												
													
														
															|  |             if (level==4){//科室
 |  |             if (level==4){//科室
 | 
												
											
												
													
														
															|  | @ -969,6 +977,18 @@ public class StatisticsEsService {
 | 
												
													
														
															|  |     }
 |  |     }
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  | 
 |  |     public Double getDoubleRange(Double first, Double second, int i) {
 | 
												
													
														
															|  | 
 |  |         if (second == 0 && first > 0) {
 | 
												
													
														
															|  | 
 |  |             return 100.0;
 | 
												
													
														
															|  | 
 |  |         } else if (second == 0 && first == 0) {
 | 
												
													
														
															|  | 
 |  |             return 0.0;
 | 
												
													
														
															|  | 
 |  |         }
 | 
												
													
														
															|  | 
 |  |         Double size =first / second;
 | 
												
													
														
															|  | 
 |  |         DecimalFormat df = new DecimalFormat("0.00");//格式化小数,不足的补0
 | 
												
													
														
															|  | 
 |  |         Double filesize = Double.parseDouble(df.format(size));
 | 
												
													
														
															|  | 
 |  |         return filesize ;
 | 
												
													
														
															|  | 
 |  |     }
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |     /**
 |  |     /**
 | 
												
													
														
															|  |      * 总体分析 折线图 按日--0级维度1级维度
 |  |      * 总体分析 折线图 按日--0级维度1级维度
 | 
												
													
														
															|  |      *
 |  |      *
 | 
												
											
												
													
														
															|  | @ -1208,7 +1228,11 @@ public class StatisticsEsService {
 | 
												
													
														
															|  |             for (SaveModel saveModel : saveModels) {
 |  |             for (SaveModel saveModel : saveModels) {
 | 
												
													
														
															|  |                 String range = "";
 |  |                 String range = "";
 | 
												
													
														
															|  |                 if (saveModel.getQuotaDate() != null) {
 |  |                 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);
 |  |                 JSONObject json = countResult.get(range);
 | 
												
													
														
															|  | //                //因为上述时间集提前一天  但是前端是显示当前时间,所以这里给调整回去
 |  | //                //因为上述时间集提前一天  但是前端是显示当前时间,所以这里给调整回去
 | 
												
											
												
													
														
															|  | @ -1384,4 +1408,320 @@ 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 saveModel5 = 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");
 | 
												
													
														
															|  | 
 |  |         saveModel5 = elasticsearchUtil.findOneDateQuotaLevel1(endDate, area, level, "7", SaveModel.timeLevel_DDL,"0");
 | 
												
													
														
															|  | 
 |  |         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("comingTotal",saveModel5.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;
 | 
												
													
														
															|  | 
 |  |     }
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  | 
 |  |     /**
 | 
												
													
														
															|  | 
 |  |      * 服务评分平均分
 | 
												
													
														
															|  | 
 |  |      * @param startDate
 | 
												
													
														
															|  | 
 |  |      * @param endDate
 | 
												
													
														
															|  | 
 |  |      * @param area
 | 
												
													
														
															|  | 
 |  |      * @param level
 | 
												
													
														
															|  | 
 |  |      * @param index
 | 
												
													
														
															|  | 
 |  |      * @return
 | 
												
													
														
															|  | 
 |  |      * @throws Exception
 | 
												
													
														
															|  | 
 |  |      */
 | 
												
													
														
															|  | 
 |  |     public JSONObject getScoreHead(String startDate, String endDate, String area, int level, String index) throws Exception {
 | 
												
													
														
															|  | 
 |  |         //总评分
 | 
												
													
														
															|  | 
 |  |         SaveModel saveModel = null;
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  | 
 |  |         saveModel = elasticsearchUtil.findOneDateQuotaLevel0(endDate, endDate, area, level, index, SaveModel.timeLevel_DDL);
 | 
												
													
														
															|  | 
 |  |         JSONObject object = new JSONObject();
 | 
												
													
														
															|  | 
 |  |         Double scoreTotal = saveModel.getResult1();//总评分
 | 
												
													
														
															|  | 
 |  |         Double people = saveModel.getResult2();//评价总人数
 | 
												
													
														
															|  | 
 |  |         object.put("scoreTotal",scoreTotal);//总评分
 | 
												
													
														
															|  | 
 |  |         object.put("people",people);//总人数
 | 
												
													
														
															|  | 
 |  |         object.put("scoreRate",getDoubleRange(scoreTotal,people,0));//平均评分
 | 
												
													
														
															|  | 
 |  |         return object;
 | 
												
													
														
															|  | 
 |  |     }
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  | 
 |  |     /**
 | 
												
													
														
															|  | 
 |  |      * 服务评分曲线
 | 
												
													
														
															|  | 
 |  |      * @param startDate
 | 
												
													
														
															|  | 
 |  |      * @param endDate
 | 
												
													
														
															|  | 
 |  |      * @param area
 | 
												
													
														
															|  | 
 |  |      * @param level
 | 
												
													
														
															|  | 
 |  |      * @param index
 | 
												
													
														
															|  | 
 |  |      * @param interval
 | 
												
													
														
															|  | 
 |  |      * @param level2_type
 | 
												
													
														
															|  | 
 |  |      * @return
 | 
												
													
														
															|  | 
 |  |      * @throws Exception
 | 
												
													
														
															|  | 
 |  |      */
 | 
												
													
														
															|  | 
 |  |     public JSONObject getScoreLine(String startDate, String endDate, String area, int level, String index,int interval, String level2_type) throws Exception {
 | 
												
													
														
															|  | 
 |  |         //服务评分
 | 
												
													
														
															|  | 
 |  |         JSONObject object = new JSONObject();
 | 
												
													
														
															|  | 
 |  |         JSONArray array = new JSONArray();
 | 
												
													
														
															|  | 
 |  |         if (interval==1){
 | 
												
													
														
															|  | 
 |  |             array = dateTotalStatistics2(startDate,endDate,area,level,index,null,SaveModel.timeLevel_ZL,null);
 | 
												
													
														
															|  | 
 |  |         }else if (interval==2){
 | 
												
													
														
															|  | 
 |  |             array = weekTotalStatistics(startDate,endDate,area,level,index,null,SaveModel.timeLevel_ZL);
 | 
												
													
														
															|  | 
 |  |         }else if (interval==3){
 | 
												
													
														
															|  | 
 |  |             array = monthTotalStatistics2(startDate,endDate,area,level,index,null,SaveModel.timeLevel_ZL);
 | 
												
													
														
															|  | 
 |  |         }
 | 
												
													
														
															|  | 
 |  |         for (int i=0;i<array.size();i++){
 | 
												
													
														
															|  | 
 |  |             JSONObject jsonObject = array.getJSONObject(i);
 | 
												
													
														
															|  | 
 |  |             Long amount = jsonObject.getLong("amount");
 | 
												
													
														
															|  | 
 |  |             Double num = jsonObject.getDouble("num");
 | 
												
													
														
															|  | 
 |  |             jsonObject.put("scoreRate",getDoubleRange(num,amount.doubleValue(),0));
 | 
												
													
														
															|  | 
 |  |         }
 | 
												
													
														
															|  | 
 |  |         object.put("data",array);
 | 
												
													
														
															|  | 
 |  |         return object;
 | 
												
													
														
															|  | 
 |  |     }
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  | 
 |  |     public JSONObject getScoreList(String startTime,String endTime,int level, String area, String lowLevel) throws Exception {
 | 
												
													
														
															|  | 
 |  |         JSONObject result1 = new JSONObject();
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  | 
 |  |         //咨询总数
 | 
												
													
														
															|  | 
 |  |         List<SaveModel> total = elasticsearchUtil.findListDateQuotaLevel0(endTime, endTime, area, level, "9", SaveModel.timeLevel_DDL, lowLevel);
 | 
												
													
														
															|  | 
 |  |         Map<String, Object> totalMap = new HashMap<>();
 | 
												
													
														
															|  | 
 |  |         org.json.JSONObject result = new org.json.JSONObject();
 | 
												
													
														
															|  | 
 |  |         String low_level = StringUtils.isEmpty(lowLevel) ? String.valueOf(level + 1) : lowLevel;
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  | 
 |  |         //转换总咨询数
 | 
												
													
														
															|  | 
 |  |         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);
 | 
												
													
														
															|  | 
 |  |             }
 | 
												
													
														
															|  | 
 |  |         }
 | 
												
													
														
															|  | 
 |  |         ;
 | 
												
													
														
															|  | 
 |  |         List<Map<String, Object>> resultMaps = new ArrayList<>();
 | 
												
													
														
															|  | 
 |  |         for (String key : totalMap.keySet()) {
 | 
												
													
														
															|  | 
 |  |             Map<String, Object> rs = new HashMap<>();
 | 
												
													
														
															|  | 
 |  |             SaveModel totalRs = (SaveModel) totalMap.get(key);
 | 
												
													
														
															|  | 
 |  |             if (totalRs == null) {
 | 
												
													
														
															|  | 
 |  |                 continue;
 | 
												
													
														
															|  | 
 |  |             }
 | 
												
													
														
															|  | 
 |  |             //合并结果集
 | 
												
													
														
															|  | 
 |  |             Double totalNm = totalRs.getResult2();//总人数
 | 
												
													
														
															|  | 
 |  |             Double scoreNm = totalRs.getResult1();//总分数
 | 
												
													
														
															|  | 
 |  |             if (SaveModel.doctorLevel.equals(low_level)) {
 | 
												
													
														
															|  | 
 |  |                 rs.put("name", totalRs.getDoctorName());
 | 
												
													
														
															|  | 
 |  |             } else if (SaveModel.deptLevel.equals(low_level)) {
 | 
												
													
														
															|  | 
 |  |                 rs.put("name", totalRs.getDeptName());
 | 
												
													
														
															|  | 
 |  |             } else if (SaveModel.OrgLevel.equals(low_level)) {
 | 
												
													
														
															|  | 
 |  |                 rs.put("name", totalRs.getHospitalName());
 | 
												
													
														
															|  | 
 |  |             }
 | 
												
													
														
															|  | 
 |  |             rs.put("total", totalNm);
 | 
												
													
														
															|  | 
 |  |             rs.put("scoreRate",getDoubleRange(scoreNm,totalNm,0));
 | 
												
													
														
															|  | 
 |  |             rs.put("code", key);
 | 
												
													
														
															|  | 
 |  |             resultMaps.add(rs);
 | 
												
													
														
															|  | 
 |  |         }
 | 
												
													
														
															|  | 
 |  |         //根据为回复数排序
 | 
												
													
														
															|  | 
 |  |         Collections.sort(resultMaps, new Comparator<Map<String, Object>>() {
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  | 
 |  |             public int compare(Map<String, Object> o1, Map<String, Object> o2) {
 | 
												
													
														
															|  | 
 |  |                 return (Double) o1.get("scoreRate") < (Double) o2.get("scoreRate") ? 1 : ((Double) o1.get("scoreRate") == (Double) o2.get("scoreRate") ? 0 : -1);
 | 
												
													
														
															|  | 
 |  |             }
 | 
												
													
														
															|  | 
 |  |         });
 | 
												
													
														
															|  | 
 |  |         result1.put("resultList", resultMaps);
 | 
												
													
														
															|  | 
 |  |         return result1;
 | 
												
													
														
															|  | 
 |  |     }
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  | }
 |  | }
 |