| 
					
				 | 
			
			
				@ -28,6 +28,8 @@ import org.springframework.beans.factory.annotation.Autowired; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.springframework.jdbc.core.JdbcTemplate; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.springframework.stereotype.Service; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import javax.xml.soap.SAAJMetaFactory; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import java.security.acl.LastOwnerException; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import java.text.DecimalFormat; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import java.text.ParseException; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import java.text.SimpleDateFormat; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -153,12 +155,36 @@ public class StatisticsEsService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (interval==1){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            JSONArray array = dateTotalStatistics2(startDate,endDate,area,level,index,null,SaveModel.timeLevel_ZL,null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            object.put("data",array); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            JSONArray array1 = dateTotalStatistics2(startDate,endDate,area,level,"5","1",SaveModel.timeLevel_ZL,null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            object.put("specialistData",array1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            JSONArray array2 = dateTotalStatistics2(startDate,endDate,area,level,"5","9",SaveModel.timeLevel_ZL,null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            object.put("topicData",array2); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            JSONArray array3 = dateTotalStatistics2(startDate,endDate,area,level,"5","12",SaveModel.timeLevel_ZL,null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            object.put("synergyData",array3); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            JSONArray array4 = dateTotalStatistics2(startDate,endDate,area,level,"5","16",SaveModel.timeLevel_ZL,null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            object.put("vedioData",array4); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        }else if (interval==2){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            JSONArray array = weekTotalStatistics(startDate,endDate,area,level,index,null,SaveModel.timeLevel_ZL); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            object.put("data",array); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            JSONArray array1 = weekTotalStatistics(startDate,endDate,area,level,"5","1",SaveModel.timeLevel_ZL); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            object.put("specialistData",array1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            JSONArray array2 = weekTotalStatistics(startDate,endDate,area,level,"5","9",SaveModel.timeLevel_ZL); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            object.put("topicData",array2); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            JSONArray array3 = weekTotalStatistics(startDate,endDate,area,level,"5","12",SaveModel.timeLevel_ZL); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            object.put("synergyData",array3); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            JSONArray array4 = weekTotalStatistics(startDate,endDate,area,level,"5","16",SaveModel.timeLevel_ZL); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            object.put("vedioData",array4); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        }else if (interval==3){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            JSONArray array = monthTotalStatistics2(startDate,endDate,area,level,index,null,SaveModel.timeLevel_ZL); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            object.put("data",array); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            JSONArray array1 = monthTotalStatistics2(startDate,endDate,area,level,"5","1",SaveModel.timeLevel_ZL); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            object.put("specialistData",array1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            JSONArray array2 = monthTotalStatistics2(startDate,endDate,area,level,"5","9",SaveModel.timeLevel_ZL); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            object.put("topicData",array2); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            JSONArray array3 = monthTotalStatistics2(startDate,endDate,area,level,"5","12",SaveModel.timeLevel_ZL); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            object.put("synergyData",array3); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            JSONArray array4 = monthTotalStatistics2(startDate,endDate,area,level,"5","16",SaveModel.timeLevel_ZL); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            object.put("vedioData",array4); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (StringUtils.isNoneBlank(level2_type)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -976,6 +1002,17 @@ public class StatisticsEsService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return filesize + "%"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public String getTwoRange(int first, int second, int i) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (second == 0 && first > 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            return "100%"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } else if (second == 0 && first == 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            return "0%"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        float size = (float) (first * 100) / second; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        DecimalFormat df = new DecimalFormat("0.00");//格式化小数,不足的补0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String filesize = df.format(size); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return filesize + "%"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public Double getDoubleRange(Double first, Double second, int i) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (second == 0 && first > 0) { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -1409,6 +1446,141 @@ public class StatisticsEsService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 按月统计 折线图-排班 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param startDate 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param endDate 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param area 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param level 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param index 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param lowCode 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @throws Exception 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private JSONArray monthTotalStatistics2AndMonth(String startDate, String endDate, String area, int level, String index, String lowCode, String timelevel) throws Exception { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        // 起始日期 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        Calendar start = Calendar.getInstance(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        start.setTime(DateUtil.strToDate(startDate, DateUtil.YYYY_MM_DD)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        // 结束日期 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        Calendar end = Calendar.getInstance(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        //因为统计时间是统计到当前时间的前一天,所以这里的时间是提前一天 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        Calendar temp = Calendar.getInstance(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        temp.setTime(DateUtil.strToDate(endDate, DateUtil.YYYY_MM_DD)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//        temp.add(Calendar.DAY_OF_MONTH, -1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        end.setTime(temp.getTime()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        // 日期集合 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        List<Calendar> days = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        days.add(start); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        boolean flag = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        int k = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (startDate.compareTo(endDate) == 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            flag = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       /*     days.add(end);*/ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        // 统计日期计算 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        while (flag) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            Calendar next = Calendar.getInstance(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            next.setTime(days.get(days.size() - 1).getTime()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if (k == 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                next.add(Calendar.MONTH, 1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                next.add(Calendar.MONTH, 1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            /*next.set(Calendar.DAY_OF_MONTH, 1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            next.add(Calendar.DAY_OF_MONTH, -1);*/ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if (next.getTime().before(DateUtil.strToDate(endDate, "yyyy-MM-dd"))) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                days.add(next); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         /*       days.add(end);*/ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                flag = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            k++; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        // 统计结果 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        Map<String, JSONObject> countResult = new HashMap<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        for (int i = 0; i < days.size(); i++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            String endStr = df.format(days.get(i).getTime()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            JSONObject range = new JSONObject(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            range.put("range", endStr); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            range.put("amount", 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            range.put("num",0.0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            countResult.put(endStr, range); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (startDate.equals(df.format(new Date()))) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            Calendar preDate = Calendar.getInstance(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            preDate.setTime(df.parse(endDate)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            startDate = df.format(preDate.getTime()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        List<SaveModel> saveModels = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (StringUtils.isNotBlank(lowCode)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            saveModels = elasticsearchUtil.findDateQuotaLevel0AndPaibanLine(startDate, endDate, area, level, index, timelevel, SaveModel.interval_month, lowCode); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            saveModels = elasticsearchUtil.findDateQuotaLevel0AndPaibanLine(startDate, endDate, area, level, index, timelevel, SaveModel.interval_month,null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (saveModels != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            // 计算结果 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            for (SaveModel saveModel : saveModels) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                String range = ""; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                if (saveModel.getQuotaDate() != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    range = df.format(saveModel.getQuotaDate()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                JSONObject json = countResult.get(range); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                //因为上述时间集提前一天  但是前端是显示当前时间,所以这里给调整回去 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                /*if (range.equals(df.format(temp.getTime()))) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    json.put("range", endDate); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                }*/ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                if (json != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    long amount = saveModel.getResult2().longValue(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    double num = saveModel.getResult1(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    json.put("amount", amount); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    json.put("num",num); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            List<JSONObject> result = new ArrayList<>(countResult.values()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            // 排序 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            result.sort(new Comparator<JSONObject>() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                public int compare(JSONObject o1, JSONObject o2) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    if (o1.getString("range").compareTo(o2.getString("range")) > 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        return 1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    } else if (o1.getString("range").compareTo(o2.getString("range")) < 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        return -1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        return 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            JSONArray jsonArray = new JSONArray(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            for (JSONObject object:result){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                jsonArray.add(object); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            return jsonArray; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            return new JSONArray(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 专科咨询统计总量 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param startDate 开始时间 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -1505,6 +1677,111 @@ public class StatisticsEsService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return result; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public List<Map<String, Object>> getCoutList1(Integer level, String lowLevel, List<SaveModel> endConsult, List<SaveModel> total, List<SaveModel> noReceive) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        Map<String, Object> relyMap = new HashMap<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        Map<String, Object> totalMap = new HashMap<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        Map<String, Object> noReceiveMap = 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 : noReceive) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if (SaveModel.doctorLevel.equals(low_level)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                noReceiveMap.put(saveModel.getDoctor(), saveModel); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } else if (SaveModel.deptLevel.equals(low_level)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                noReceiveMap.put(saveModel.getDept(), saveModel); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            }else if (SaveModel.OrgLevel.equals(low_level)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                noReceiveMap.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) noReceiveMap.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("noReceiveCount", 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; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    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<>(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -1671,7 +1948,7 @@ public class StatisticsEsService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    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(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -1711,7 +1988,7 @@ public class StatisticsEsService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            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) { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -1723,5 +2000,940 @@ public class StatisticsEsService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 医生排班 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param startTime 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param endTime 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param index 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param level 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param area 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @throws Exception 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public JSONObject getScheduleTotal(String startTime,String endTime,String index,Integer level, String area) throws Exception { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        JSONObject jsonObject = new JSONObject(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String condition = ""; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (SaveModel.cityLevel.equalsIgnoreCase(level.toString())){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            condition +=""; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        }else if (SaveModel.OrgLevel.equalsIgnoreCase(level.toString())){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            condition +=" and dh.org_code ='"+area+"' "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        }else if (SaveModel.townLevel.equalsIgnoreCase(level.toString())){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            condition +=" "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        }else if (SaveModel.deptLevel.equalsIgnoreCase(level.toString())){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            condition +=" and dh.dept_code = '"+area+"'"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        }else if (SaveModel.doctorLevel.equalsIgnoreCase(level.toString())){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            condition +=" and dh.doctor_code = '"+area+"'"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String sql = "SELECT COUNT(*) total FROM `base_doctor_role` dr LEFT JOIN base_doctor_hospital dh ON dr.doctor_code = dh.doctor_code where dr.role_code='specialist' "+condition; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        List<Map<String,Object>> mapList = jdbcTemplate.queryForList(sql); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        Long doctorCount = 0L; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (mapList!=null&&mapList.size()!=0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            doctorCount = Long.parseLong(mapList.get(0).get("total").toString()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        List<SaveModel> saveModels = elasticsearchUtil.findLineChartDateQuotaLevel0(startTime, endTime, area, level, index, SaveModel.timeLevel_ZL, SaveModel.interval_day); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        Set<String> set = new HashSet<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        Long days = 0L; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        for (SaveModel saveModel1:saveModels){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if(saveModel1.getResult1()!=0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                days+=1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        List<SaveModel> saveModels1 = elasticsearchUtil.findDateQuotaLevel0(startTime, endTime, area, level, index, SaveModel.timeLevel_ZL, SaveModel.interval_day,SaveModel.doctorLevel); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        for (SaveModel saveModel1:saveModels1){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if(saveModel1.getResult1()!=0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                set.add(saveModel1.getDoctor()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        Integer total = set.size(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        jsonObject.put("rate",getTwoRange(total,doctorCount.intValue(),0));//排班比例 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        jsonObject.put("doctorCount",doctorCount); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        jsonObject.put("days",days); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        jsonObject.put("total",total); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return  jsonObject; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 通用查询曲线 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param startDate 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param endDate 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param area 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param level 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param index 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param interval 1按日统计,2按周统计,3按月统计 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @throws Exception 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public JSONObject getScheduleLine(String startDate, String endDate, String area, int level, String index,int interval) 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 = monthTotalStatistics2AndMonth(startDate,endDate,area,level,index,null,SaveModel.timeLevel_ZL); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            object.put("data",array); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return object; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public JSONObject getScheduleList(String startTime,String endTime,String index,int level, String area, String lowLevel) throws Exception { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        JSONObject result1 = new JSONObject(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        List<SaveModel> total = elasticsearchUtil.findDateQuotaLevel0(startTime, endTime, area, level, index, SaveModel.timeLevel_ZL,null, lowLevel); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        List<SaveModel> total1 = elasticsearchUtil.findDateQuotaLevel0AndPaibanList(startTime, endTime, area, level, index, SaveModel.timeLevel_ZL,null, lowLevel); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        Map<String, Object> totalMap = new HashMap<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String low_level = StringUtils.isEmpty(lowLevel) ? String.valueOf(level + 1) : lowLevel; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        List<String> codes = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        for (SaveModel saveModel:total){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            for (SaveModel saveModel1:total1){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                if (SaveModel.doctorLevel.equals(low_level)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    if (saveModel.getDoctor().equalsIgnoreCase(saveModel1.getDoctor())){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        saveModel.setResult1(saveModel1.getResult1()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        saveModel.setResult2(saveModel1.getResult2()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        codes.add(saveModel1.getDoctor()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                } else if (SaveModel.deptLevel.equals(low_level)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    if (saveModel.getDept().equalsIgnoreCase(saveModel1.getDept())){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        saveModel.setResult1(saveModel1.getResult1()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        saveModel.setResult2(saveModel1.getResult2()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        codes.add(saveModel1.getDept()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                }else if (SaveModel.OrgLevel.equals(low_level)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    if (saveModel.getHospital().equalsIgnoreCase(saveModel1.getHospital())){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        saveModel.setResult1(saveModel1.getResult1()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        saveModel.setResult2(saveModel1.getResult2()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        codes.add(saveModel1.getHospital()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        for (SaveModel saveModel:total){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if (SaveModel.doctorLevel.equals(low_level)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                if (!codes.contains(saveModel.getDoctor())){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    saveModel.setResult1(0.0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    saveModel.setResult2(0.0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } else if (SaveModel.deptLevel.equals(low_level)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                if (!codes.contains(saveModel.getDept())){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    saveModel.setResult1(0.0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    saveModel.setResult2(0.0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            }else if (SaveModel.OrgLevel.equals(low_level)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                if (!codes.contains(saveModel.getHospital())){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    saveModel.setResult1(0.0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    saveModel.setResult2(0.0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        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()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                BaseDoctorDO doctorDO = doctorDao.findById(totalRs.getDoctor()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                rs.put("doctorJob",doctorDO.getJobTitleName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 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("total") < (Double) o2.get("total") ? 1 : ((Double) o1.get("total") == (Double) o2.get("total") ? 0 : -1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        result1.put("resultList", resultMaps); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return result1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 咨询统计总量 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param startDate 开始时间 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param endDate 结束时间 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param area 区域 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param level 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param index 专家咨询6,图文复诊11,专家协同13,视频复诊15 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @throws Exception 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public JSONObject getConsultHead(String startDate, String endDate, String area, int level, String index) throws Exception { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        JSONObject object = new JSONObject(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (index.equalsIgnoreCase("6")){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            //总量 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            SaveModel saveModel = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            //已回复 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            SaveModel saveModel1 = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            //已结束 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            SaveModel saveModel2 = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            //未回复 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            SaveModel saveModel3 = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            //居民取消 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            SaveModel saveModel4 = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            //进行中 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            SaveModel saveModel5 = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            String index1= (Integer.parseInt(index)+1)+""; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            saveModel = elasticsearchUtil.findOneDateQuotaLevel0(startDate, endDate, area, level, index1, SaveModel.timeLevel_ZL); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            saveModel1 = elasticsearchUtil.findOneDateQuotaLevel1(startDate, area, level, index, SaveModel.timeLevel_ZL,"1"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            saveModel3 = elasticsearchUtil.findOneDateQuotaLevel1(startDate, area, level, index, SaveModel.timeLevel_ZL,"0"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            saveModel4 = elasticsearchUtil.findOneDateQuotaLevel1(startDate, area, level, index1, SaveModel.timeLevel_ZL,"-1"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            saveModel5 = elasticsearchUtil.findOneDateQuotaLevel1(startDate, area, level, index1, SaveModel.timeLevel_ZL,"0"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            saveModel2 = elasticsearchUtil.findOneDateQuotaLevel1(startDate, area, level, index1, SaveModel.timeLevel_ZL,"1"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            object.put("consultTotal",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));//未回复率 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        }else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            //总量 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            SaveModel saveModel = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            //已接诊 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            SaveModel saveModel1 = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            //未接诊 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            SaveModel saveModel2 = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            //已结束 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            SaveModel saveModel3 = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            //居民取消 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            SaveModel saveModel4 = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         /*   //进行中 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            SaveModel saveModel5 = null;*/ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            String index1= (Integer.parseInt(index)+1)+""; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            saveModel = elasticsearchUtil.findOneDateQuotaLevel0(startDate, endDate, area, level, index1, SaveModel.timeLevel_ZL); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            saveModel1 = elasticsearchUtil.findOneDateQuotaLevel1(startDate, area, level, index1, SaveModel.timeLevel_ZL,"1"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            saveModel3 = elasticsearchUtil.findOneDateQuotaLevel1(startDate, area, level, index, SaveModel.timeLevel_ZL,"2"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            saveModel4 = elasticsearchUtil.findOneDateQuotaLevel1(startDate, area, level, index, SaveModel.timeLevel_ZL,"-1"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				/* 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            saveModel5 = elasticsearchUtil.findOneDateQuotaLevel1(startDate, area, level, index1, SaveModel.timeLevel_ZL,"0"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				*/ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            saveModel2 = elasticsearchUtil.findOneDateQuotaLevel1(startDate, area, level, index1, SaveModel.timeLevel_ZL,"0"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            object.put("consultTotal",saveModel.getResult1());//咨询总量 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            object.put("haveReceiveTotal",saveModel1.getResult1());//已接诊 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            object.put("noReceiveTotal",saveModel2.getResult1());//未接诊 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            object.put("endTotal",saveModel3.getResult1());//已结束 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            object.put("cancelTotal",saveModel4.getResult1());//居民取消 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				/*            object.put("comingTotal",saveModel5.getResult1());*/ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            object.put("notReceiveRate",getRange(saveModel2.getResult1().intValue(),saveModel.getResult1().intValue(),2));//未接诊比例 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return object; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 咨询统计曲线 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param startDate 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param endDate 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param area 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param level 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param index 专家咨询6,图文复诊11,专家协同13,视频复诊15 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param interval 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param level2_type 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @throws Exception 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public JSONObject getConsultLine(String startDate, String endDate, String area, int level, String index,int interval, String level2_type) throws Exception { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String index1= (Integer.parseInt(index)+1)+""; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        //问诊量 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        JSONObject object = new JSONObject(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (interval==1){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            JSONArray array = dateTotalStatistics2(startDate,endDate,area,level,index1,null,SaveModel.timeLevel_ZL,null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            object.put("data",array); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        }else if (interval==2){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            JSONArray array = weekTotalStatistics(startDate,endDate,area,level,index1,null,SaveModel.timeLevel_ZL); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            object.put("data",array); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        }else if (interval==3){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            JSONArray array = monthTotalStatistics2(startDate,endDate,area,level,index1,null,SaveModel.timeLevel_ZL); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            object.put("data",array); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return object; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 咨询统计表格 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param startTime 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param endTime 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param level 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param area 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param lowLevel 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param  index 专家咨询6,图文复诊11,专家协同13,视频复诊15 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @throws Exception 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public JSONObject getConsultingList(String startTime,String endTime,int level, String area, String lowLevel,String index) throws Exception { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        JSONObject result = new JSONObject(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if(index.equalsIgnoreCase("6")){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            String index1= (Integer.parseInt(index)+1)+""; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            //已结束 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            List<SaveModel> endTotal = elasticsearchUtil.findListDateQuotaLevel1(startTime, endTime, area, level, index1, SaveModel.timeLevel_ZL, lowLevel,"1"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            //咨询总数 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            List<SaveModel> total = elasticsearchUtil.findListDateQuotaLevel0(startTime, endTime, area, level, index1, SaveModel.timeLevel_ZL, lowLevel); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            //未回复数 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            List<SaveModel> noRelyTotal = elasticsearchUtil.findListDateQuotaLevel1(startTime, endTime, area, level, index, SaveModel.timeLevel_ZL, lowLevel,"0"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            result.put("resultList", getCoutList(level, lowLevel, endTotal, total, noRelyTotal)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        }else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            String index1= (Integer.parseInt(index)+1)+""; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            //未接诊 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            List<SaveModel> noReceiveTotal = elasticsearchUtil.findListDateQuotaLevel1(startTime, endTime, area, level, index1, SaveModel.timeLevel_ZL, lowLevel,"0"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            //咨询总数 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            List<SaveModel> total = elasticsearchUtil.findListDateQuotaLevel0(startTime, endTime, area, level, index1, SaveModel.timeLevel_ZL, lowLevel); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            //已结束 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            List<SaveModel> endTotal = elasticsearchUtil.findListDateQuotaLevel1(startTime, endTime, area, level, index, SaveModel.timeLevel_ZL, lowLevel,"2"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            result.put("resultList", getCoutList1(level, lowLevel, endTotal, total, noReceiveTotal)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return result; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * app端首页门诊量统计 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param startDate 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param endDate 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param area 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param level 专家咨询6,图文复诊11,专家协同13,视频复诊15 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param index 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @throws Exception 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public JSONObject getConsultTotalApp(String startDate, String endDate, String area, int level, String index) throws Exception { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        JSONObject object = new JSONObject(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String str[] = new String[]{}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (StringUtils.isNoneBlank(index)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            str =index.split(","); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        for (int i=0;i<str.length;i++){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            String index1 = (Integer.parseInt(str[i])+1)+""; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            SaveModel saveModel = elasticsearchUtil.findOneDateQuotaLevel0(startDate, endDate, area, level,index1 , SaveModel.timeLevel_ZL); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            object.put("index_"+str[i],saveModel.getResult1()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return object; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * app端门诊量统计维度-圆形比例 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param startDate 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param endDate 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param area 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param level 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @throws Exception 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public JSONObject getConsultCircularApp(String startDate, String endDate, String area, int level) throws Exception { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        JSONObject object = new JSONObject(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        //协同门诊 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        SaveModel saveModel1 = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        saveModel1 = elasticsearchUtil.findOneDateQuotaLevel0(startDate, endDate, area, level, "14", SaveModel.timeLevel_ZL); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        //图文复诊 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        SaveModel saveModel2 = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        saveModel2 = elasticsearchUtil.findOneDateQuotaLevel0(startDate, endDate, area, level, "12", SaveModel.timeLevel_ZL); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        //视频复诊 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        SaveModel saveModel3 = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        saveModel3 = elasticsearchUtil.findOneDateQuotaLevel0(startDate, endDate, area, level, "16", SaveModel.timeLevel_ZL); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        Double specialistCount =0.0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        //专科咨询 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        SaveModel saveModel4 = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        saveModel4 = elasticsearchUtil.findOneDateQuotaLevel0(startDate, endDate, area, level, "7", SaveModel.timeLevel_ZL); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        specialistCount = saveModel4.getResult1();//专家咨询数量 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        Double synergyCount = saveModel1.getResult1();//协同门诊数量 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        Double topicCount = saveModel2.getResult1();//图文复诊数量 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        Double videoCount = saveModel3.getResult1();//视频复诊数量 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        Double total = specialistCount+synergyCount+topicCount+videoCount;//总量 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        object.put("specialistCount",specialistCount);//专家咨询数 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        object.put("specialistRate",getRange(specialistCount.intValue(),total.intValue(),0)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        object.put("synergyCount",synergyCount);//专家咨询数 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        object.put("synergyRate",getRange(synergyCount.intValue(),total.intValue(),0)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        object.put("topicCount",topicCount);//图文复诊数量 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        object.put("topicRate",getRange(topicCount.intValue(),total.intValue(),0)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        object.put("videoCount",videoCount);//视频复诊数量 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        object.put("videoRate",getRange(videoCount.intValue(),total.intValue(),0)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        object.put("total",total); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return object; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * app端门诊量统计-按照日周月 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param startDate 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param endDate 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param area 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param level 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param index 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param interval 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param level2_type 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @throws Exception 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public JSONObject getConsultLineApp(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; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 门诊量统计-app端 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param startTime 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param endTime 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param level 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param area 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param lowLevel 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param index 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @throws Exception 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public JSONObject getConsultListApp(String startTime,String endTime,int level, String area, String lowLevel,String index) throws Exception { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        JSONObject result1 = new JSONObject(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        //门诊量总数 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        List<SaveModel> total = elasticsearchUtil.findListDateQuotaLevel0(startTime, endTime, area, level, index, SaveModel.timeLevel_ZL, 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 consultNm = 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("consultRate",getDoubleRange(consultNm,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("total") < (Double) o2.get("total") ? 1 : ((Double) o1.get("total") == (Double) o2.get("total") ? 0 : -1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        result1.put("resultList", resultMaps); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return result1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 咨询统计曲线-PC 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param startDate 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param endDate 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param area 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param level 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param index 专家咨询6,图文复诊11,专家协同13,视频复诊15 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param interval 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param level2_type 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @throws Exception 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public JSONObject getConsultLinePC(String startDate, String endDate, String area, int level, String index,int interval, String level2_type) throws Exception { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String index1= (Integer.parseInt(index)+1)+""; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        //问诊量 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        JSONObject object = new JSONObject(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (interval==1){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if (index.equalsIgnoreCase("6")){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                JSONArray array = dateTotalStatistics2(startDate,endDate,area,level,index1,null,SaveModel.timeLevel_ZL,null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                object.put("totalData",array);//新增量 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                JSONArray array1 = dateTotalStatistics2(startDate,endDate,area,level,index,"0",SaveModel.timeLevel_ZL,null);//未回复 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                object.put("noReplyData",array1);//未回复 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                JSONArray array2 = dateTotalStatistics2(startDate,endDate,area,level,index,"1",SaveModel.timeLevel_ZL,null);//已回复 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                object.put("replyData",array2);//已回复 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                JSONArray array3 = dateTotalStatistics2(startDate,endDate,area,level,index1,"0",SaveModel.timeLevel_ZL,null);//进行中 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                object.put("commingData",array3);//进行中 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                JSONArray array4 = dateTotalStatistics2(startDate,endDate,area,level,index1,"1",SaveModel.timeLevel_ZL,null);//已完成 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                object.put("endData",array4);//已完成 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            }else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                JSONArray array = dateTotalStatistics2(startDate,endDate,area,level,index1,null,SaveModel.timeLevel_ZL,null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                object.put("totalData",array);//新增量 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                JSONArray array1 = dateTotalStatistics2(startDate,endDate,area,level,index1,"0",SaveModel.timeLevel_ZL,null);//未接诊 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                object.put("noReceiveData",array1);//未接诊 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                JSONArray array2 = dateTotalStatistics2(startDate,endDate,area,level,index1,"1",SaveModel.timeLevel_ZL,null);//已接诊 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                object.put("haveReceiveData",array2);//已接诊 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                JSONArray array3 = dateTotalStatistics2(startDate,endDate,area,level,index,"-1",SaveModel.timeLevel_ZL,null);//患者取消 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                object.put("concleData",array3);//患者取消 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                JSONArray array4 = dateTotalStatistics2(startDate,endDate,area,level,index,"2",SaveModel.timeLevel_ZL,null);//已结束 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                object.put("endData",array4);//已结束 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        }else if (interval==2){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if (index.equalsIgnoreCase("6")){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                JSONArray array = weekTotalStatistics(startDate,endDate,area,level,index1,null,SaveModel.timeLevel_ZL); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                object.put("totalData",array);//新增量 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                JSONArray array1 = weekTotalStatistics(startDate,endDate,area,level,index,"0",SaveModel.timeLevel_ZL);//未回复 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                object.put("noReplyData",array1);;//未回复 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                JSONArray array2 = weekTotalStatistics(startDate,endDate,area,level,index,"1",SaveModel.timeLevel_ZL);//已回复 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                object.put("replyData",array2);//已回复 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                JSONArray array3 = weekTotalStatistics(startDate,endDate,area,level,index1,"0",SaveModel.timeLevel_ZL);//进行中 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                object.put("commingData",array3);//进行中 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                JSONArray array4 = weekTotalStatistics(startDate,endDate,area,level,index1,"1",SaveModel.timeLevel_ZL);//已完成 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                object.put("endData",array3);//进行中 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            }else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                JSONArray array = weekTotalStatistics(startDate,endDate,area,level,index1,null,SaveModel.timeLevel_ZL); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                object.put("totalData",array);//新增量 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                JSONArray array1 = weekTotalStatistics(startDate,endDate,area,level,index1,"0",SaveModel.timeLevel_ZL);//未接诊 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                object.put("noReceiveData",array1);;//未接诊 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                JSONArray array2 = weekTotalStatistics(startDate,endDate,area,level,index1,"1",SaveModel.timeLevel_ZL);//已接诊 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                object.put("haveReceiveData",array2);//已接诊 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                JSONArray array3 = weekTotalStatistics(startDate,endDate,area,level,index,"-1",SaveModel.timeLevel_ZL);//患者取消 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                object.put("concleData",array3);//患者取消 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                JSONArray array4 = weekTotalStatistics(startDate,endDate,area,level,index,"2",SaveModel.timeLevel_ZL);//已结束 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                object.put("endData",array3);//已结束 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        }else if (interval==3){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if (index.equalsIgnoreCase("6")){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                JSONArray array = monthTotalStatistics2(startDate,endDate,area,level,index1,null,SaveModel.timeLevel_ZL); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                object.put("totalData",array); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                JSONArray array1 = monthTotalStatistics2(startDate,endDate,area,level,index,"0",SaveModel.timeLevel_ZL); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                object.put("noReplyData",array1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                JSONArray array2 = monthTotalStatistics2(startDate,endDate,area,level,index,"1",SaveModel.timeLevel_ZL); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                object.put("replyData",array2); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                JSONArray array3 = monthTotalStatistics2(startDate,endDate,area,level,index1,"0",SaveModel.timeLevel_ZL); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                object.put("commingData",array3); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                JSONArray array4 = monthTotalStatistics2(startDate,endDate,area,level,index1,"1",SaveModel.timeLevel_ZL); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                object.put("endData",array4); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            }else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                JSONArray array = monthTotalStatistics2(startDate,endDate,area,level,index1,null,SaveModel.timeLevel_ZL); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                object.put("totalData",array); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                JSONArray array1 = monthTotalStatistics2(startDate,endDate,area,level,index1,"0",SaveModel.timeLevel_ZL); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                object.put("noReceiveData",array1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                JSONArray array2 = monthTotalStatistics2(startDate,endDate,area,level,index1,"1",SaveModel.timeLevel_ZL); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                object.put("haveReceiveData",array2); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                JSONArray array3 = monthTotalStatistics2(startDate,endDate,area,level,index,"-1",SaveModel.timeLevel_ZL); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                object.put("concleData",array3); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                JSONArray array4 = monthTotalStatistics2(startDate,endDate,area,level,index,"2",SaveModel.timeLevel_ZL); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                object.put("endData",array4); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return object; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 咨询统计表格-PC 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param startTime 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param endTime 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param level 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param area 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param lowLevel 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param  index 专家咨询6,图文复诊11,专家协同13,视频复诊15 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @throws Exception 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public JSONObject getConsultingListPC(String startTime,String endTime,int level, String area, String lowLevel,String index) throws Exception { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        JSONObject result = new JSONObject(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String index1= (Integer.parseInt(index)+1)+""; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//        timeKey= "2017-11-01 00:00:00"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if(index.equalsIgnoreCase("6")){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            //已结束 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            List<SaveModel> endTotal = elasticsearchUtil.findListDateQuotaLevel1(startTime, endTime, area, level, index1, SaveModel.timeLevel_ZL, lowLevel,"1"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            //进行中 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            List<SaveModel> comingTotal = elasticsearchUtil.findListDateQuotaLevel1(startTime, endTime, area, level, index1, SaveModel.timeLevel_ZL, lowLevel,"0"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            //咨询总数 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            List<SaveModel> total = elasticsearchUtil.findListDateQuotaLevel0(startTime, endTime, area, level, index1, SaveModel.timeLevel_ZL, lowLevel); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            //未回复数 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            List<SaveModel> noRelyTotal = elasticsearchUtil.findListDateQuotaLevel1(startTime, endTime, area, level, index, SaveModel.timeLevel_ZL, lowLevel,"0"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            //已回复数 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            List<SaveModel> relyTotal = elasticsearchUtil.findListDateQuotaLevel1(startTime, endTime, area, level, index, SaveModel.timeLevel_ZL, lowLevel,"1"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            result.put("resultList", getCoutListPC(level, lowLevel, endTotal, total, noRelyTotal,relyTotal,comingTotal)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        }else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            //已结束 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            List<SaveModel> endTotal = elasticsearchUtil.findListDateQuotaLevel1(startTime, endTime, area, level, index, SaveModel.timeLevel_ZL, lowLevel,"2"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            //居民取消 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            List<SaveModel> concleTotal = elasticsearchUtil.findListDateQuotaLevel1(startTime, endTime, area, level, index, SaveModel.timeLevel_ZL, lowLevel,"-1"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            //咨询总数 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            List<SaveModel> total = elasticsearchUtil.findListDateQuotaLevel0(startTime, endTime, area, level, index1, SaveModel.timeLevel_ZL, lowLevel); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            //已接诊 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            List<SaveModel> haveReceiveTotal = elasticsearchUtil.findListDateQuotaLevel1(startTime, endTime, area, level, index, SaveModel.timeLevel_ZL, lowLevel,"1"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            //未接诊 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            List<SaveModel> noReceiveTotal = elasticsearchUtil.findListDateQuotaLevel1(startTime, endTime, area, level, index, SaveModel.timeLevel_ZL, lowLevel,"0"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            result.put("resultList", getCoutListPC1(level, lowLevel, endTotal, total, haveReceiveTotal,noReceiveTotal,concleTotal)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return result; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 在线复诊、协同复诊转换 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param level 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param lowLevel 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param endConsult 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param total 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public List<Map<String, Object>> getCoutListPC1(Integer level, String lowLevel, List<SaveModel> endConsult, List<SaveModel> total, List<SaveModel> haveReceive,List<SaveModel> noReceive,List<SaveModel> concle) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        Map<String, Object> endMap = new HashMap<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        Map<String, Object> totalMap = new HashMap<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        Map<String, Object> noReceiveMap = new HashMap<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        Map<String, Object> concleMap = new HashMap<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        Map<String, Object> haveReceiveMap = 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)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                endMap.put(saveModel.getDoctor(), saveModel); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } else if (SaveModel.deptLevel.equals(low_level)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                endMap.put(saveModel.getDept(), saveModel); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            }else if (SaveModel.OrgLevel.equals(low_level)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                endMap.put(saveModel.getHospital(), saveModel); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        //转换已接诊 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        for (SaveModel saveModel : haveReceive) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if (SaveModel.doctorLevel.equals(low_level)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                haveReceiveMap.put(saveModel.getDoctor(), saveModel); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } else if (SaveModel.deptLevel.equals(low_level)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                haveReceiveMap.put(saveModel.getDept(), saveModel); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            }else if (SaveModel.OrgLevel.equals(low_level)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                haveReceiveMap.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 : noReceive) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if (SaveModel.doctorLevel.equals(low_level)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                noReceiveMap.put(saveModel.getDoctor(), saveModel); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } else if (SaveModel.deptLevel.equals(low_level)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                noReceiveMap.put(saveModel.getDept(), saveModel); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            }else if (SaveModel.OrgLevel.equals(low_level)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                noReceiveMap.put(saveModel.getHospital(), saveModel); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        //转换已取消 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        for (SaveModel saveModel : concle) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if (SaveModel.doctorLevel.equals(low_level)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                concleMap.put(saveModel.getDoctor(), saveModel); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } else if (SaveModel.deptLevel.equals(low_level)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                concleMap.put(saveModel.getDept(), saveModel); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            }else if (SaveModel.OrgLevel.equals(low_level)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                concleMap.put(saveModel.getHospital(), saveModel); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        List<Map<String, Object>> resultMaps = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        for (String key : totalMap.keySet()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            Map<String, Object> rs = new HashMap<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            SaveModel endRs = (SaveModel) endMap.get(key); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            SaveModel totalRs = (SaveModel) totalMap.get(key); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            SaveModel concleRs = (SaveModel) concleMap.get(key); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            SaveModel noReceiveRs = (SaveModel) noReceiveMap.get(key); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            SaveModel haveReceiveRs = (SaveModel) haveReceiveMap.get(key); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if (endRs == null || totalRs == null || concleRs == null || noReceiveRs==null || haveReceiveRs == null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                continue; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            //合并结果集 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            Integer totalNm = totalRs.getResult2().intValue(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            Integer endNm = endRs.getResult2().intValue(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            Integer concleNm = concleRs.getResult2().intValue(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            Integer noReceiveNm = noReceiveRs.getResult2().intValue(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            Integer haveReceiveNm = haveReceiveRs.getResult2().intValue(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//            rs.put("name", relyRs.get(area+"Name")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if (SaveModel.doctorLevel.equals(low_level)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                rs.put("name", endRs.getDoctorName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } else if (SaveModel.deptLevel.equals(low_level)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                rs.put("name", endRs.getDeptName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } else if (SaveModel.OrgLevel.equals(low_level)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                rs.put("name", endRs.getHospitalName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            rs.put("concleCount", concleNm); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            rs.put("endCount", endNm); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            rs.put("total", totalNm); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            rs.put("noReceiveCount", noReceiveNm); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            rs.put("haveReceiveCount", haveReceiveNm); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            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 (Integer) o1.get("total") < (Integer) o2.get("total") ? 1 : ((Integer) o1.get("total") == (Integer) o2.get("total") ? 0 : -1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return resultMaps; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public List<Map<String, Object>> getCoutListPC(Integer level, String lowLevel, List<SaveModel> endConsult, List<SaveModel> total, List<SaveModel> noRely,List<SaveModel> reply,List<SaveModel> coming) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        Map<String, Object> endMap = new HashMap<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        Map<String, Object> totalMap = new HashMap<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        Map<String, Object> noRelyMap = new HashMap<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        Map<String, Object> relyMap = new HashMap<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        Map<String, Object> comingMap = 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)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                endMap.put(saveModel.getDoctor(), saveModel); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } else if (SaveModel.deptLevel.equals(low_level)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                endMap.put(saveModel.getDept(), saveModel); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            }else if (SaveModel.OrgLevel.equals(low_level)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                endMap.put(saveModel.getHospital(), saveModel); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        //转换进行数 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        for (SaveModel saveModel : coming) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if (SaveModel.doctorLevel.equals(low_level)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                comingMap.put(saveModel.getDoctor(), saveModel); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } else if (SaveModel.deptLevel.equals(low_level)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                comingMap.put(saveModel.getDept(), saveModel); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            }else if (SaveModel.OrgLevel.equals(low_level)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                comingMap.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); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        //转换已回复 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        for (SaveModel saveModel : reply) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            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); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        List<Map<String, Object>> resultMaps = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        for (String key : totalMap.keySet()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            Map<String, Object> rs = new HashMap<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            SaveModel endRs = (SaveModel) endMap.get(key); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            SaveModel totalRs = (SaveModel) totalMap.get(key); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            SaveModel onRelyRs = (SaveModel) noRelyMap.get(key); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            SaveModel relyRs = (SaveModel) relyMap.get(key); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            SaveModel comingRs = (SaveModel) relyMap.get(key); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if (endRs == null || totalRs == null || onRelyRs == null || relyRs==null || comingRs == null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                continue; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            //合并结果集 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            Integer totalNm = totalRs.getResult2().intValue(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            Integer endNm = endRs.getResult2().intValue(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            Integer noRelyNm = onRelyRs.getResult2().intValue(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            Integer relyNm = relyRs.getResult2().intValue(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            Integer comingNm = comingRs.getResult2().intValue(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//            rs.put("name", relyRs.get(area+"Name")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if (SaveModel.doctorLevel.equals(low_level)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                rs.put("name", endRs.getDoctorName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } else if (SaveModel.deptLevel.equals(low_level)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                rs.put("name", endRs.getDeptName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } else if (SaveModel.OrgLevel.equals(low_level)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                rs.put("name", endRs.getHospitalName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            rs.put("noRelyCount", noRelyNm); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            rs.put("endCount", endNm); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            rs.put("total", totalNm); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            rs.put("relyCount", relyNm); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            rs.put("comingCount", comingNm); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            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 6专家,13协同,17、在线复诊 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param timeLevel 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @throws Exception 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public JSONObject getIndexTotalApp(String startDate, String endDate, String area, int level, String index,String timeLevel) throws Exception { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        JSONObject object = new JSONObject(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String str[] = new String[]{}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (StringUtils.isNoneBlank(index)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            str =index.split(","); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        for (int i=0;i<str.length;i++){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            String index1 = (Integer.parseInt(str[i])+1)+""; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if (index1.equalsIgnoreCase("12")){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                SaveModel saveModel1 = null;//图文 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                SaveModel saveModel2 = null;//视频 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                if (timeLevel.equalsIgnoreCase(SaveModel.timeLevel_ZL)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    saveModel1 = elasticsearchUtil.findOneDateQuotaLevel0(startDate, endDate, area, level,"12" , SaveModel.timeLevel_ZL); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    saveModel2 = elasticsearchUtil.findOneDateQuotaLevel0(startDate, endDate, area, level,"16" , SaveModel.timeLevel_ZL); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                }else if (timeLevel.equalsIgnoreCase(SaveModel.timeLevel_DDL)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    saveModel1 = elasticsearchUtil.findOneDateQuotaLevel0(endDate, endDate, area, level,"12" , SaveModel.timeLevel_DDL); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    saveModel2 = elasticsearchUtil.findOneDateQuotaLevel0(endDate, endDate, area, level,"16" , SaveModel.timeLevel_DDL); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                Double topicTotal = saveModel1.getResult1(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                Double vedioTotal = saveModel2.getResult1(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                object.put("index_11_15",vedioTotal+topicTotal);//在线复诊 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            }else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                SaveModel saveModel = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                if (timeLevel.equalsIgnoreCase(SaveModel.timeLevel_ZL)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    saveModel = elasticsearchUtil.findOneDateQuotaLevel0(startDate, endDate, area, level,index1 , SaveModel.timeLevel_ZL); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                }else if (timeLevel.equalsIgnoreCase(SaveModel.timeLevel_DDL)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    saveModel = elasticsearchUtil.findOneDateQuotaLevel0(endDate, endDate, area, level,index1 , SaveModel.timeLevel_DDL); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                object.put("index_"+str[i],saveModel.getResult1()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return object; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				} 
			 |