| 
					
				 | 
			
			
				@ -1,5 +1,6 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				package com.yihu.jw.care.service.statistics; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.alibaba.fastjson.JSON; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.alibaba.fastjson.JSONArray; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.alibaba.fastjson.JSONObject; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.care.util.ConstantUtil; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -9,6 +10,7 @@ import com.yihu.jw.doctor.dao.BaseDoctorDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.doctor.dao.BaseDoctorHospitalDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.es.util.ElasticsearchUtil; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.es.util.SaveModel; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.im.util.ImUtil; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.org.dao.BaseOrgDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.util.date.DateUtil; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.apache.commons.collections.map.HashedMap; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -45,6 +47,8 @@ public class StatisticsService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private BaseOrgDao orgDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private StatisticsUtilService statisticsUtilService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private ImUtil imUtil; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private static final String defalutArea = "330100"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -156,6 +160,100 @@ public class StatisticsService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return json; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 平台人员实时统计 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public JSONObject platformPeople(){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        JSONObject result = new JSONObject(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        Integer olderTotal = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        Integer childTotal = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        Integer helperTotal = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        Integer teacherTotal = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        //老人 儿童注册人数 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String sql1 = "SELECT COUNT(*) c,archive_type from base_patient WHERE archive_type is  not null and del='1' GROUP BY archive_type"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        List<Map<String,Object>> list1 = jdbcTemplate.queryForList(sql1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        for(Map<String,Object> map:list1){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            String archive_type = map.get("archive_type").toString(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            Integer num = Integer.valueOf(map.get("c").toString()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if("1".equals(archive_type)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                olderTotal = num; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                continue; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if("2".equals(archive_type)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                childTotal = num; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        //助老员和教师注册人数 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String sql2 = "SELECT COUNT(a.id) c,a.doctor_level from base_doctor a,base_doctor_hospital h where a.id=h.doctor_code and a.del = '1' and h.del = '1' " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                "and a.doctor_level is not null and h.org_code not in ( " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                "SELECT dict_code from wlyy_hospital_sys_dict WHERE dict_name = 'jkzl_org'  " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                ") GROUP BY a.doctor_level"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        List<Map<String,Object>> list2 = jdbcTemplate.queryForList(sql2); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        for(Map<String,Object> map:list2){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            String archive_type = map.get("doctor_level").toString(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            Integer num = Integer.valueOf(map.get("c").toString()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if("2".equals(archive_type)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                helperTotal = num; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                continue; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if("3".equals(archive_type)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                teacherTotal = num; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        //helper 助老员,teacher 教师,child 幼儿,olderWx 老人公众号,olderPad 老人平板 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String onlineCount = imUtil.getOnlineCountByType(""); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        JSONObject jsonObject = JSON.parseObject(onlineCount).getJSONObject("data"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        //olderPad":0,"olderWx":0,"child":0,"teacher":0,"helper":0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        Integer helperOn = jsonObject.getInteger("helper"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        Integer teacherOn = jsonObject.getInteger("teacher"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        Integer childOn = jsonObject.getInteger("child"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        Integer olderWxOn = jsonObject.getInteger("olderWx"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        Integer olderPadOn = jsonObject.getInteger("olderPad"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        int repeatNum = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if(olderWxOn>0&&olderPadOn>0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            //2个都大于0 要计算重复的人数 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            String onlineOlderWx = imUtil.getOnlineListByType("olderWx"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            JSONObject olderWx = JSON.parseObject(onlineOlderWx); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            List<String> list = new ArrayList(olderWx.size()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            olderWx.entrySet().stream().forEach(one->{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                list.add(one.getKey()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            String onlineOlderPad = imUtil.getOnlineListByType("olderPad"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            JSONObject olderPad = JSON.parseObject(onlineOlderPad); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            for (Map.Entry<String,Object> s:olderPad.entrySet()){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                if(list.contains(s.getKey())){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    repeatNum++; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        Integer olderOff = olderTotal - olderWxOn - olderPadOn + repeatNum; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        olderOff = olderOff>0?olderOff:0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        Integer childOff = childTotal - childOn; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        Integer helperOff = helperTotal - helperOn; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        Integer teacherOff = teacherTotal - teacherOn; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        result.put("olderTotal",olderTotal); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        result.put("childTotal",childTotal); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        result.put("helperTotal",helperTotal); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        result.put("teacherTotal",teacherTotal); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        result.put("helperOn",helperOn); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        result.put("teacherOn",teacherOn); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        result.put("childOn",childOn); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        result.put("olderWxOn",olderWxOn); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        result.put("olderPadOn",olderPadOn); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        result.put("childOff",childOff); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        result.put("helperOff",helperOff); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        result.put("teacherOff",teacherOff); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        result.put("olderOff",olderOff); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return result; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 统计总数 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param endDate 
			 |