|  | @ -8,6 +8,7 @@ import com.yihu.jw.care.vo.NumVo;
 | 
	
		
			
				|  |  | import com.yihu.jw.dict.dao.DictHospitalDeptDao;
 | 
	
		
			
				|  |  | import com.yihu.jw.doctor.dao.BaseDoctorDao;
 | 
	
		
			
				|  |  | import com.yihu.jw.doctor.dao.BaseDoctorHospitalDao;
 | 
	
		
			
				|  |  | import com.yihu.jw.entity.base.doctor.BaseDoctorDO;
 | 
	
		
			
				|  |  | import com.yihu.jw.entity.base.login.BaseLoginLogDO;
 | 
	
		
			
				|  |  | import com.yihu.jw.entity.base.patient.BasePatientDO;
 | 
	
		
			
				|  |  | import com.yihu.jw.es.util.ElasticsearchUtil;
 | 
	
	
		
			
				|  | @ -54,8 +55,6 @@ public class StatisticsService {
 | 
	
		
			
				|  |  |     @Autowired
 | 
	
		
			
				|  |  |     private StatisticsUtilService statisticsUtilService;
 | 
	
		
			
				|  |  |     @Autowired
 | 
	
		
			
				|  |  |     private ImUtil imUtil;
 | 
	
		
			
				|  |  |     @Autowired
 | 
	
		
			
				|  |  |     private BasePatientDao patientDao;
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     private static final String defalutArea = "330100";
 | 
	
	
		
			
				|  | @ -227,42 +226,45 @@ public class StatisticsService {
 | 
	
		
			
				|  |  |         for (BaseLoginLogDO log:loginLogDOs) {
 | 
	
		
			
				|  |  |             JSONObject object = new JSONObject();
 | 
	
		
			
				|  |  |             object.put("patient",log.getUserId());
 | 
	
		
			
				|  |  |             BasePatientDO patient = patientDao.findById(log.getUserId());
 | 
	
		
			
				|  |  |             if (patient != null){
 | 
	
		
			
				|  |  |                 String archive_type = null;
 | 
	
		
			
				|  |  |             if("1".equals(log.getLoginType())){
 | 
	
		
			
				|  |  |                 //user
 | 
	
		
			
				|  |  |                 object.put("onLineFlag", 0);
 | 
	
		
			
				|  |  |                 object.put("archiveType","0");
 | 
	
		
			
				|  |  |             }else if("2".equals(log.getLoginType())){
 | 
	
		
			
				|  |  |                 //docotr
 | 
	
		
			
				|  |  |                 Integer onLineFlag =0;
 | 
	
		
			
				|  |  |                 if (patient.getArchiveType() == null){
 | 
	
		
			
				|  |  |                     continue;
 | 
	
		
			
				|  |  |                 }
 | 
	
		
			
				|  |  |                 switch (patient.getArchiveType().toString()){
 | 
	
		
			
				|  |  |                     case "1":
 | 
	
		
			
				|  |  |                         archive_type = "older";//老人
 | 
	
		
			
				|  |  |                         break;
 | 
	
		
			
				|  |  |                     case "2":
 | 
	
		
			
				|  |  |                         archive_type = "child";//新生儿
 | 
	
		
			
				|  |  |                         break;
 | 
	
		
			
				|  |  |                 }
 | 
	
		
			
				|  |  |                 object.put("archiveType",patient.getArchiveType());
 | 
	
		
			
				|  |  |                 object.put("residentialArea",patient.getResidentialArea());
 | 
	
		
			
				|  |  |                 String onLineStr = imUtil.findByUserIdAndType(log.getUserId().toString(),archive_type);
 | 
	
		
			
				|  |  |                 JSONObject oneLineObj = JSONObject.parseObject(onLineStr);
 | 
	
		
			
				|  |  |                 if (200 == oneLineObj.getInteger("status")){
 | 
	
		
			
				|  |  |                     if (oneLineObj.getInteger("data")>0){
 | 
	
		
			
				|  |  |                         onLineFlag=1;
 | 
	
		
			
				|  |  |                     }
 | 
	
		
			
				|  |  |                 BaseDoctorDO doctorDO = doctorDao.findOne(log.getUserId());
 | 
	
		
			
				|  |  |                 if(doctorDO!=null&&"1".equals(doctorDO.getOnline())){
 | 
	
		
			
				|  |  |                     onLineFlag=1;
 | 
	
		
			
				|  |  |                 }
 | 
	
		
			
				|  |  |                 object.put("onLineFlag", onLineFlag);
 | 
	
		
			
				|  |  |             } else {
 | 
	
		
			
				|  |  |                 Integer onLineFlag =0;
 | 
	
		
			
				|  |  |                 String onLineStr = imUtil.findByUserIdAndType(log.getUserId().toString(),"helper");
 | 
	
		
			
				|  |  |                 JSONObject oneLineObj = JSONObject.parseObject(onLineStr);
 | 
	
		
			
				|  |  |                 if (200 == oneLineObj.getInteger("status")){
 | 
	
		
			
				|  |  |                     if (oneLineObj.getInteger("data")>0){
 | 
	
		
			
				|  |  |                         onLineFlag=1;
 | 
	
		
			
				|  |  |                 object.put("archiveType","0");
 | 
	
		
			
				|  |  |             }else{
 | 
	
		
			
				|  |  |                 //居民
 | 
	
		
			
				|  |  |                 BasePatientDO patient = patientDao.findById(log.getUserId());
 | 
	
		
			
				|  |  |                 if (patient != null){
 | 
	
		
			
				|  |  |                     Integer onLineFlag =0;
 | 
	
		
			
				|  |  |                     if (patient.getArchiveType() == null){
 | 
	
		
			
				|  |  |                         continue;
 | 
	
		
			
				|  |  |                     }
 | 
	
		
			
				|  |  |                     switch (patient.getArchiveType().toString()){
 | 
	
		
			
				|  |  |                         case "1":
 | 
	
		
			
				|  |  |                             //老人
 | 
	
		
			
				|  |  |                             if(StringUtils.isNotBlank(patient.getOpenid())||"1".equals(patient.getOnline())){
 | 
	
		
			
				|  |  |                                 onLineFlag=1;
 | 
	
		
			
				|  |  |                             }
 | 
	
		
			
				|  |  |                             break;
 | 
	
		
			
				|  |  |                         case "2":
 | 
	
		
			
				|  |  |                             //新生儿
 | 
	
		
			
				|  |  |                             if(StringUtils.isNotBlank(patient.getOpenid())){
 | 
	
		
			
				|  |  |                                 onLineFlag=1;
 | 
	
		
			
				|  |  |                             }
 | 
	
		
			
				|  |  |                             break;
 | 
	
		
			
				|  |  |                     }
 | 
	
		
			
				|  |  |                     object.put("archiveType",patient.getArchiveType());
 | 
	
		
			
				|  |  |                     object.put("residentialArea",patient.getResidentialArea());
 | 
	
		
			
				|  |  |                     object.put("onLineFlag", onLineFlag);
 | 
	
		
			
				|  |  |                 }
 | 
	
		
			
				|  |  |                 object.put("onLineFlag", onLineFlag);
 | 
	
		
			
				|  |  |                 object.put("archiveType","0");
 | 
	
		
			
				|  |  |             }
 | 
	
		
			
				|  |  |             object.put("name",log.getName());
 | 
	
		
			
				|  |  |             object.put("createTime", DateUtil.dateToStrLong(log.getCreateTime()) );
 | 
	
	
		
			
				|  | @ -419,37 +421,49 @@ public class StatisticsService {
 | 
	
		
			
				|  |  |         Integer olderOn = 0;
 | 
	
		
			
				|  |  |         Integer olderWxOn = 0;
 | 
	
		
			
				|  |  |         Integer olderPadOn = 0;
 | 
	
		
			
				|  |  |         //老人 儿童注册人数
 | 
	
		
			
				|  |  |         String pateintFilter = "";
 | 
	
		
			
				|  |  |         String sqltmp = "SELECT GROUP_CONCAT(dict_code) orgCodes from wlyy_hospital_sys_dict WHERE dict_name = 'jkzl_child' or dict_name = 'jkzl_older'  ";
 | 
	
		
			
				|  |  |         List<Map<String,Object>> listtmp =  jdbcTemplate.queryForList(sqltmp);
 | 
	
		
			
				|  |  |         //儿童注册人数
 | 
	
		
			
				|  |  |         String childFilter = "";
 | 
	
		
			
				|  |  |         String sqlChildtmp = "SELECT GROUP_CONCAT(dict_code) orgCodes from wlyy_hospital_sys_dict WHERE dict_name = 'jkzl_child' or dict_name = 'jkzl_older'  ";
 | 
	
		
			
				|  |  |         List<Map<String,Object>> listtmp =  jdbcTemplate.queryForList(sqlChildtmp);
 | 
	
		
			
				|  |  |         if(listtmp.size()>0){
 | 
	
		
			
				|  |  |             String orgCodes = String.valueOf(listtmp.get(0).get("orgCodes"));
 | 
	
		
			
				|  |  |             orgCodes = orgCodes.replaceAll(",","','");
 | 
	
		
			
				|  |  |             pateintFilter = " and id not in ('"+orgCodes+"')";
 | 
	
		
			
				|  |  |             childFilter = " and id not in ('"+orgCodes+"')";
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |         String sqlchild = "SELECT COUNT(*) c,case 1 WHEN openid is not null then 1 WHEN a.on_line = '1' then 1 ELSE 0 end as online from base_patient a WHERE archive_type = 2" +
 | 
	
		
			
				|  |  |                 " and del='1' "+childFilter+" GROUP BY online";
 | 
	
		
			
				|  |  |         List<Map<String,Object>> listChild = jdbcTemplate.queryForList(sqlchild);
 | 
	
		
			
				|  |  |         for(Map<String,Object> map:listChild){
 | 
	
		
			
				|  |  |             Integer num = Integer.valueOf(map.get("c").toString());
 | 
	
		
			
				|  |  |             Integer online = Integer.valueOf(map.get("online").toString());
 | 
	
		
			
				|  |  |             if(online == 1){
 | 
	
		
			
				|  |  |                 childOn += num;
 | 
	
		
			
				|  |  |             }else{
 | 
	
		
			
				|  |  |                 childOff += num;
 | 
	
		
			
				|  |  |             }
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         //老人
 | 
	
		
			
				|  |  |         String oldFilter = "";
 | 
	
		
			
				|  |  |         String sqlOldtmp = "SELECT GROUP_CONCAT(dict_code) orgCodes from wlyy_hospital_sys_dict WHERE dict_name = 'jkzl_older' ";
 | 
	
		
			
				|  |  |         List<Map<String,Object>> listOldtmp =  jdbcTemplate.queryForList(sqlOldtmp);
 | 
	
		
			
				|  |  |         if(listOldtmp.size()>0){
 | 
	
		
			
				|  |  |             String orgCodes = String.valueOf(listOldtmp.get(0).get("orgCodes"));
 | 
	
		
			
				|  |  |             orgCodes = orgCodes.replaceAll(",","','");
 | 
	
		
			
				|  |  |             oldFilter = " and a.id not in ('"+orgCodes+"')";
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         String sql1 = "SELECT COUNT(*) c,archive_type*1 as archive_type,IFNULL(on_line,0) online from base_patient WHERE archive_type is  not null" +
 | 
	
		
			
				|  |  |                 " and del='1' "+pateintFilter+" GROUP BY archive_type,on_line";
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         String sql1 = "SELECT COUNT(*) c,IFNULL(on_line,0) online from base_patient a WHERE archive_type = 1" +
 | 
	
		
			
				|  |  |                 " and del='1' "+oldFilter+" GROUP BY on_line";
 | 
	
		
			
				|  |  |         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());
 | 
	
		
			
				|  |  |             Integer online = Integer.valueOf(map.get("online").toString());
 | 
	
		
			
				|  |  |             if("1".equals(archive_type)){
 | 
	
		
			
				|  |  |                 if(online == 1){
 | 
	
		
			
				|  |  |                     olderOn += num;
 | 
	
		
			
				|  |  |                 }else{
 | 
	
		
			
				|  |  |                     olderOff += num;
 | 
	
		
			
				|  |  |                 }
 | 
	
		
			
				|  |  |                 continue;
 | 
	
		
			
				|  |  |             }
 | 
	
		
			
				|  |  |             if("2".equals(archive_type)){
 | 
	
		
			
				|  |  |                 if(online == 1){
 | 
	
		
			
				|  |  |                     childOn += num;
 | 
	
		
			
				|  |  |                 }else{
 | 
	
		
			
				|  |  |                     childOff += num;
 | 
	
		
			
				|  |  |                 }
 | 
	
		
			
				|  |  |             if(online == 1){
 | 
	
		
			
				|  |  |                 olderOn += num;
 | 
	
		
			
				|  |  |             }else{
 | 
	
		
			
				|  |  |                 olderOff += num;
 | 
	
		
			
				|  |  |             }
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |         olderTotal = olderOff+olderOn;
 | 
	
	
		
			
				|  | @ -485,12 +499,6 @@ public class StatisticsService {
 | 
	
		
			
				|  |  |         teacherTotal = teacherOff+teacherOn;
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         //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
 | 
	
		
			
				|  |  |         olderWxOn = jsonObject.getInteger("olderWx");
 | 
	
		
			
				|  |  |         olderPadOn = jsonObject.getInteger("olderPad");
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         result.put("olderTotal",olderTotal);
 | 
	
		
			
				|  |  |         result.put("childTotal",childTotal);
 | 
	
		
			
				|  |  |         result.put("helperTotal",helperTotal);
 | 
	
	
		
			
				|  | @ -498,8 +506,6 @@ public class StatisticsService {
 | 
	
		
			
				|  |  |         result.put("helperOn",helperOn);
 | 
	
		
			
				|  |  |         result.put("teacherOn",teacherOn);
 | 
	
		
			
				|  |  |         result.put("childOn",childOn);
 | 
	
		
			
				|  |  |         result.put("olderWxOn",olderWxOn);
 | 
	
		
			
				|  |  |         result.put("olderPadOn",olderPadOn);
 | 
	
		
			
				|  |  |         result.put("olderOn",olderOn);
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         result.put("childOff",childOff);
 |