|  | @ -329,9 +329,13 @@ public class StatisticsService {
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         JSONObject res = new JSONObject();
 | 
	
		
			
				|  |  |         //医疗机构
 | 
	
		
			
				|  |  |         String medicalInstitutionSql = "SELECT COUNT(1) FROM base_org WHERE (type = 1 OR type = 2) AND del = 1 " + orgFilter;
 | 
	
		
			
				|  |  |         //养老机构
 | 
	
		
			
				|  |  |         String elderlyCarServiceSql = "SELECT COUNT(1) FROM base_org WHERE type = 3 AND del = 1 and code not in ('zdjsylfwyxgszhfgs') " + orgFilter;
 | 
	
		
			
				|  |  |         //托育机构
 | 
	
		
			
				|  |  |         String childcareInstitutionsssSql = "SELECT COUNT(1) FROM base_org WHERE type = 4 AND del = 1" + orgFilter;
 | 
	
		
			
				|  |  |         //照料中心
 | 
	
		
			
				|  |  |         String careCenterNumSql = "SELECT COUNT(1) FROM base_org WHERE type = 6 AND del = 1" + orgFilter;
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         //社工和教师注册人数
 | 
	
	
		
			
				|  | @ -347,18 +351,22 @@ public class StatisticsService {
 | 
	
		
			
				|  |  |         for (Map<String, Object> map : list2) {
 | 
	
		
			
				|  |  |             String archive_type = map.get("doctor_level").toString();
 | 
	
		
			
				|  |  |             Integer num = Integer.valueOf(map.get("c").toString());
 | 
	
		
			
				|  |  |             //医生
 | 
	
		
			
				|  |  |             if ("1".equals(archive_type)) {
 | 
	
		
			
				|  |  |                 doctorNum = num;
 | 
	
		
			
				|  |  |                 continue;
 | 
	
		
			
				|  |  |             }
 | 
	
		
			
				|  |  |             //社工
 | 
	
		
			
				|  |  |             if ("2".equals(archive_type)) {
 | 
	
		
			
				|  |  |                 helperNum = num;
 | 
	
		
			
				|  |  |                 continue;
 | 
	
		
			
				|  |  |             }
 | 
	
		
			
				|  |  |             //助老员
 | 
	
		
			
				|  |  |             if ("4".equals(archive_type)) {
 | 
	
		
			
				|  |  |                 helper4Num = num;
 | 
	
		
			
				|  |  |                 continue;
 | 
	
		
			
				|  |  |             }
 | 
	
		
			
				|  |  |             //教师
 | 
	
		
			
				|  |  |             if ("3".equals(archive_type)) {
 | 
	
		
			
				|  |  |                 teacherNum = num;
 | 
	
		
			
				|  |  |             }
 | 
	
	
		
			
				|  | @ -367,7 +375,7 @@ public class StatisticsService {
 | 
	
		
			
				|  |  |         Integer elderlyCarServiceNum = jdbcTemplate.queryForObject(elderlyCarServiceSql, Integer.class);
 | 
	
		
			
				|  |  |         Integer childcareInstitutionsssNum = jdbcTemplate.queryForObject(childcareInstitutionsssSql, Integer.class);
 | 
	
		
			
				|  |  |         Integer careCenterNum = jdbcTemplate.queryForObject(careCenterNumSql, Integer.class);
 | 
	
		
			
				|  |  |         res.put("medicalInstitutionNum", medicalInstitutionNum);             //医疗结构
 | 
	
		
			
				|  |  |         res.put("medicalInstitutionNum", medicalInstitutionNum);             //医疗机构
 | 
	
		
			
				|  |  |         res.put("elderlyCarServiceNum", elderlyCarServiceNum);               //养老机构
 | 
	
		
			
				|  |  |         res.put("childcareInstitutionsssNum", childcareInstitutionsssNum);   //托育机构
 | 
	
		
			
				|  |  |         res.put("careCenterNum", careCenterNum);   //照料中心
 | 
	
	
		
			
				|  | @ -378,6 +386,83 @@ public class StatisticsService {
 | 
	
		
			
				|  |  |         return res;
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     /**
 | 
	
		
			
				|  |  |      * 获取机构列表
 | 
	
		
			
				|  |  |      * @param type 类型。1医疗机构,3养老机构,4托育机构,6照料中心
 | 
	
		
			
				|  |  |      * @param page
 | 
	
		
			
				|  |  |      * @param pageSize
 | 
	
		
			
				|  |  |      * @param name 名字模糊搜索
 | 
	
		
			
				|  |  |      * @return
 | 
	
		
			
				|  |  |      */
 | 
	
		
			
				|  |  |     public PageEnvelop getOrgListByPage(String type,Integer page,Integer pageSize,String name){
 | 
	
		
			
				|  |  |         page = page>0?page-1:0;
 | 
	
		
			
				|  |  |         String orgFilter = "";
 | 
	
		
			
				|  |  |         String sqlOrg = "SELECT GROUP_CONCAT(dict_code) orgCodes from wlyy_hospital_sys_dict WHERE dict_name = 'jkzl_org' ";
 | 
	
		
			
				|  |  |         List<Map<String, Object>> listOrg = jdbcTemplate.queryForList(sqlOrg);
 | 
	
		
			
				|  |  |         if (listOrg.size() > 0) {
 | 
	
		
			
				|  |  |             String orgCodes = String.valueOf(listOrg.get(0).get("orgCodes"));
 | 
	
		
			
				|  |  |             orgCodes = orgCodes.replaceAll(",", "','");
 | 
	
		
			
				|  |  |             orgFilter = " and code not in ('" + orgCodes + "')";
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         String typeSql = "";
 | 
	
		
			
				|  |  |         if("1".equals(type)){
 | 
	
		
			
				|  |  |             typeSql = " and (type = 1 OR type = 2) ";
 | 
	
		
			
				|  |  |         }else if("3".equals(type)){
 | 
	
		
			
				|  |  |             typeSql = " and type = "+type + " and code not in ('zdjsylfwyxgszhfgs')  ";
 | 
	
		
			
				|  |  |         } else {
 | 
	
		
			
				|  |  |             typeSql = " and type = "+type;
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |         if(StringUtils.isNotBlank(name)){
 | 
	
		
			
				|  |  |             typeSql = typeSql + " and name like '%"+name+"%' ";
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |         String sql = "SELECT id,code,name,alias,type,brief,address,photo,intro,mobile FROM base_org WHERE del = 1 "+typeSql+orgFilter;
 | 
	
		
			
				|  |  |         String orderSql = " ORDER BY sort limit "+page*pageSize+","+pageSize;
 | 
	
		
			
				|  |  |         String countSql = "SELECT count(*) FROM base_org WHERE del = 1 "+typeSql+orgFilter;
 | 
	
		
			
				|  |  |         List<Map<String, Object>> list = jdbcTemplate.queryForList(sql+orderSql);
 | 
	
		
			
				|  |  |         Long count = jdbcTemplate.queryForObject(countSql,Long.class);
 | 
	
		
			
				|  |  |         return PageEnvelop.getSuccessListWithPage("获取成功",list,page,pageSize,count);
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     /**
 | 
	
		
			
				|  |  |      *
 | 
	
		
			
				|  |  |      * @param type 类型。1医生,2社工,3教师,4助老员
 | 
	
		
			
				|  |  |      * @param page
 | 
	
		
			
				|  |  |      * @param pageSize
 | 
	
		
			
				|  |  |      * @param name
 | 
	
		
			
				|  |  |      * @param idCard
 | 
	
		
			
				|  |  |      * @return
 | 
	
		
			
				|  |  |      */
 | 
	
		
			
				|  |  |     public PageEnvelop getUserListByPage(String type,Integer page,Integer pageSize,String name,String idCard){
 | 
	
		
			
				|  |  |         page = page>0?page-1:0;
 | 
	
		
			
				|  |  |         String selectSql = "SELECT a.id,a.name,\n" +
 | 
	
		
			
				|  |  |                 " CASE\n" +
 | 
	
		
			
				|  |  |                 " a.sex \n" +
 | 
	
		
			
				|  |  |                 " WHEN 1 THEN\n" +
 | 
	
		
			
				|  |  |                 " '男' \n" +
 | 
	
		
			
				|  |  |                 " WHEN 2 THEN\n" +
 | 
	
		
			
				|  |  |                 " '女' ELSE a.sex \n" +
 | 
	
		
			
				|  |  |                 " END AS sex,\n" +
 | 
	
		
			
				|  |  |                 " TIMESTAMPDIFF(YEAR,a.birthday,now()) AS age,\n" +
 | 
	
		
			
				|  |  |                 " a.doctor_level,a.mobile,h.org_name,a.idcard ";
 | 
	
		
			
				|  |  |         String countSql = " select count(a.id)";
 | 
	
		
			
				|  |  |         String fromSql = " 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'  )  and a.doctor_level="+type+"  ";
 | 
	
		
			
				|  |  |         if(StringUtils.isNotBlank(name)){
 | 
	
		
			
				|  |  |             fromSql+=" and a.name like '%"+name+"%' ";
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |         if(StringUtils.isNotBlank(idCard)){
 | 
	
		
			
				|  |  |             fromSql+=" and a.idcard like '%"+idCard+"%' ";
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |         Long count = jdbcTemplate.queryForObject(countSql + fromSql, Long.class);
 | 
	
		
			
				|  |  |         fromSql+=" limit "+page*pageSize+","+pageSize;
 | 
	
		
			
				|  |  |         List<Map<String, Object>> list = jdbcTemplate.queryForList(selectSql + fromSql);
 | 
	
		
			
				|  |  |         return PageEnvelop.getSuccessListWithPage("获取成功",list,page,pageSize,count);
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     // v0.7.0实时数据 照护对象、检测设备、紧急救助
 | 
	
		
			
				|  |  |     public JSONObject realTimeDataNew() throws Exception {
 | 
	
		
			
				|  |  |         JSONObject res = new JSONObject();
 | 
	
	
		
			
				|  | @ -482,10 +567,16 @@ public class StatisticsService {
 | 
	
		
			
				|  |  |         return res;
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     public PageEnvelop getAllDynamics(Integer page, Integer size) {
 | 
	
		
			
				|  |  |     public PageEnvelop getAllDynamics(Integer page, Integer size,String beginTime,String endTime) {
 | 
	
		
			
				|  |  |         List result = new ArrayList<>();
 | 
	
		
			
				|  |  |         Date date = DateUtil.getPreDays(new Date(), -7);
 | 
	
		
			
				|  |  |         String dateStr = DateUtil.dateToStrLong(date);
 | 
	
		
			
				|  |  |         String dateStr = "";
 | 
	
		
			
				|  |  |         if(StringUtils.isBlank(beginTime) && StringUtils.isBlank(endTime)){
 | 
	
		
			
				|  |  |             Date date = DateUtil.getPreDays(new Date(), -7);
 | 
	
		
			
				|  |  |             dateStr = " and create_time>='" + DateUtil.dateToStrLong(date) +"' ";
 | 
	
		
			
				|  |  |         }else {
 | 
	
		
			
				|  |  |             dateStr = " and create_time>='" + beginTime+"' and create_time<='"+endTime+"' ";
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         String filter = " ";
 | 
	
		
			
				|  |  |         String sqltmp = "SELECT GROUP_CONCAT(dict_code) orgCodes from wlyy_hospital_sys_dict WHERE dict_name = 'jkzl_child' or dict_name = 'jkzl_older' " +
 | 
	
	
		
			
				|  | @ -499,8 +590,8 @@ public class StatisticsService {
 | 
	
		
			
				|  |  |             }
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         String sql = "select * from base_login_log where login_type<>1 and create_time>='" + dateStr + "' " + filter + " order by create_time desc limit " + (page - 1) * size + "," + size;
 | 
	
		
			
				|  |  |         String sqlCount = "select count(id) from base_login_log where login_type<>1 and create_time>='" + dateStr + "' " + filter;
 | 
	
		
			
				|  |  |         String sql = "select * from base_login_log where login_type<>1 " + dateStr + filter + " order by create_time desc limit " + (page - 1) * size + "," + size;
 | 
	
		
			
				|  |  |         String sqlCount = "select count(id) from base_login_log where login_type<>1 " + dateStr + filter;
 | 
	
		
			
				|  |  |         Long count = jdbcTemplate.queryForObject(sqlCount, Long.class);
 | 
	
		
			
				|  |  |         List<BaseLoginLogDO> loginLogDOs = jdbcTemplate.query(sql, new BeanPropertyRowMapper(BaseLoginLogDO.class));
 | 
	
		
			
				|  |  |         for (BaseLoginLogDO log : loginLogDOs) {
 | 
	
	
		
			
				|  | @ -691,6 +782,9 @@ public class StatisticsService {
 | 
	
		
			
				|  |  |      * @param level 区域等级 2市3区4机构5团队6医生
 | 
	
		
			
				|  |  |      */
 | 
	
		
			
				|  |  |     public JSONObject platformPeople(String area,Integer level) {
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         boolean b = StringUtils.isNotBlank(area) && 5 == level;
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         String areaFilter = " ";
 | 
	
		
			
				|  |  |         JSONObject result = new JSONObject();
 | 
	
		
			
				|  |  |         Integer olderTotal = 0;
 | 
	
	
		
			
				|  | @ -717,6 +811,9 @@ public class StatisticsService {
 | 
	
		
			
				|  |  |         Integer unSignOlderTotal=0;
 | 
	
		
			
				|  |  |         Integer unSignOlderOff=0;
 | 
	
		
			
				|  |  |         Integer unSignOlderOn=0;
 | 
	
		
			
				|  |  |         Integer streetOldTotal = 0;
 | 
	
		
			
				|  |  |         Integer streetOldOff = 0;
 | 
	
		
			
				|  |  |         Integer streetOldOn = 0;
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         //儿童注册人数
 | 
	
	
		
			
				|  | @ -750,13 +847,13 @@ public class StatisticsService {
 | 
	
		
			
				|  |  |             oldFilter = " and a.id not in ('" + orgCodes + "')";
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         if (org.apache.commons.lang3.StringUtils.isNotBlank(area)&&5==level){
 | 
	
		
			
				|  |  |         if (b){
 | 
	
		
			
				|  |  |             areaFilter = " and EXISTS ( select 1 from " +
 | 
	
		
			
				|  |  |                     "base_service_package_sign_record sr,base_service_package_record r, base_service_package_item i,base_service_package pack " +
 | 
	
		
			
				|  |  |                     " where sr.id = r.sign_id and sr.status=1 and r.service_package_id = i.service_package_id and r.service_package_id = pack.id " +
 | 
	
		
			
				|  |  |                     " and i.del = 1  and sr.`status`=1 and CONVERT(sr.patient USING utf8)  = a.id and r.team_code='"+area+"') OR ( a.saas_id = '"+area+"')";
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |         String sql1 = "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 = 1 and (a.sign_status=1 or a.register = 1) " +
 | 
	
		
			
				|  |  |         String sql1 = "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 = 1 and a.sign_status=1 " +
 | 
	
		
			
				|  |  |                 " and del='1' "+areaFilter+" " + oldFilter + " GROUP BY online";
 | 
	
		
			
				|  |  |         List<Map<String, Object>> list1 = jdbcTemplate.queryForList(sql1);
 | 
	
		
			
				|  |  |         for (Map<String, Object> map : list1) {
 | 
	
	
		
			
				|  | @ -771,8 +868,14 @@ public class StatisticsService {
 | 
	
		
			
				|  |  |         olderTotal = olderOff + olderOn;
 | 
	
		
			
				|  |  |         childTotal = childOff + childOn;
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         sql1 = "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 = 1 and (sign_status=0 or sign_status is null ) " +
 | 
	
		
			
				|  |  |                 " and del='1' " + oldFilter + " GROUP BY online";
 | 
	
		
			
				|  |  |         // 社区老人
 | 
	
		
			
				|  |  |         String unSignOldAreaSql ="";
 | 
	
		
			
				|  |  |         if (b) {
 | 
	
		
			
				|  |  |             unSignOldAreaSql = " AND saas_id = '"+area+"'";
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         sql1 = "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 = 1 and a.register = 1 and (sign_status=0 or sign_status is null ) " +
 | 
	
		
			
				|  |  |                 " and del='1' " + oldFilter + unSignOldAreaSql + " GROUP BY online";
 | 
	
		
			
				|  |  |         list1 = jdbcTemplate.queryForList(sql1);
 | 
	
		
			
				|  |  |         for (Map<String, Object> map : list1) {
 | 
	
		
			
				|  |  |             Integer num = Integer.valueOf(map.get("c").toString());
 | 
	
	
		
			
				|  | @ -784,9 +887,27 @@ public class StatisticsService {
 | 
	
		
			
				|  |  |             }
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |         unSignOlderTotal = unSignOlderOff+unSignOlderOn;
 | 
	
		
			
				|  |  |         //街道老人
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         String testUserSql = "(SELECT dict_code from wlyy_hospital_sys_dict WHERE (dict_name = 'jkzl_older' OR dict_name = 'jkzl_user') AND (dict_code IS NOT null OR dict_code = ''))";
 | 
	
		
			
				|  |  |         String needCareOldSql = "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 = 1 and a.register = 2 and (sign_status=0 or sign_status is null ) " +
 | 
	
		
			
				|  |  |                 " and del='1' AND id NOT IN " + testUserSql +unSignOldAreaSql+ " GROUP BY online";
 | 
	
		
			
				|  |  |         list1 = jdbcTemplate.queryForList(needCareOldSql);
 | 
	
		
			
				|  |  |         for (Map<String, Object> map : list1) {
 | 
	
		
			
				|  |  |             Integer num = Integer.valueOf(map.get("c").toString());
 | 
	
		
			
				|  |  |             Integer online = Integer.valueOf(map.get("online").toString());
 | 
	
		
			
				|  |  |             if (online == 1) {
 | 
	
		
			
				|  |  |                 streetOldOn += num;
 | 
	
		
			
				|  |  |             } else {
 | 
	
		
			
				|  |  |                 streetOldOff += num;
 | 
	
		
			
				|  |  |             }
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |         streetOldTotal = streetOldOff+streetOldOn;
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         //社工和教师注册人数
 | 
	
		
			
				|  |  |         if (org.apache.commons.lang3.StringUtils.isNotBlank(area)&&5==level){
 | 
	
		
			
				|  |  |         if (b){
 | 
	
		
			
				|  |  |             areaFilter = " and EXISTS ( select 1 from base_team_member mem where mem.doctor_code = a.id " +
 | 
	
		
			
				|  |  |                     " and mem.team_code='"+area+"' and mem.del=1 )  ";
 | 
	
		
			
				|  |  |         }
 | 
	
	
		
			
				|  | @ -836,7 +957,7 @@ public class StatisticsService {
 | 
	
		
			
				|  |  |             orgCodes = orgCodes.replaceAll(",", "','");
 | 
	
		
			
				|  |  |             olderRelativeFilter = " and t2.id not in ('" + orgCodes + "') ";
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |         if (org.apache.commons.lang3.StringUtils.isNotBlank(area)&&5==level){
 | 
	
		
			
				|  |  |         if (b){
 | 
	
		
			
				|  |  |             //有社区只查询该社区老人的家属列表
 | 
	
		
			
				|  |  |             areaFilter = " and EXISTS ( select 1 from " +
 | 
	
		
			
				|  |  |                     "base_service_package_sign_record sr,base_service_package_record r, base_service_package_item i,base_service_package pack " +
 | 
	
	
		
			
				|  | @ -864,7 +985,7 @@ public class StatisticsService {
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |         olderFamilyTotal = olderFamilyOff+olderFamilyOn;
 | 
	
		
			
				|  |  |         //家属绑定老人数量
 | 
	
		
			
				|  |  |         if (org.apache.commons.lang3.StringUtils.isNotBlank(area)&&5==level){
 | 
	
		
			
				|  |  |         if (b){
 | 
	
		
			
				|  |  |             areaFilter = " and EXISTS ( select 1 from " +
 | 
	
		
			
				|  |  |                     "base_service_package_sign_record sr,base_service_package_record r, base_service_package_item i,base_service_package pack " +
 | 
	
		
			
				|  |  |                     " where sr.id = r.sign_id and sr.status=1 and r.service_package_id = i.service_package_id and r.service_package_id = pack.id " +
 | 
	
	
		
			
				|  | @ -876,7 +997,7 @@ public class StatisticsService {
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         olderFamilyBinding = jdbcTemplate.queryForObject(sql2,Integer.class);
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         //helper 社工,teacher 教师,child 幼儿,olderWx 老人公众号,olderPad 老人平板 olderFamily老人家属
 | 
	
		
			
				|  |  |         //helper 社工,teacher 教师,child 幼儿,olderWx 老人公众号,olderPad 老人平板 olderFamily老人家属  street 街道老人二次导入朝辉街道
 | 
	
		
			
				|  |  |         //helper4助老员 unSignOlder社区老人
 | 
	
		
			
				|  |  |         result.put("olderTotal", olderTotal);
 | 
	
		
			
				|  |  |         result.put("olderOn", olderOn);
 | 
	
	
		
			
				|  | @ -884,6 +1005,9 @@ public class StatisticsService {
 | 
	
		
			
				|  |  |         result.put("childTotal", childTotal);
 | 
	
		
			
				|  |  |         result.put("childOn", childOn);
 | 
	
		
			
				|  |  |         result.put("childOff", childOff);
 | 
	
		
			
				|  |  |         result.put("streetOldOn",streetOldOn);
 | 
	
		
			
				|  |  |         result.put("streetOldTotal",streetOldTotal);
 | 
	
		
			
				|  |  |         result.put("streetOldOff",streetOldOff);
 | 
	
		
			
				|  |  |         result.put("unSignOlderTotal", unSignOlderTotal);
 | 
	
		
			
				|  |  |         result.put("unSignOlderOff", unSignOlderOff);
 | 
	
		
			
				|  |  |         result.put("unSignOlderOn", unSignOlderOn);
 | 
	
	
		
			
				|  | @ -2930,59 +3054,545 @@ public class StatisticsService {
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     /**
 | 
	
		
			
				|  |  |      * 获取招呼老人基本信息
 | 
	
		
			
				|  |  |      * 获取照护老人+幼儿基本信息
 | 
	
		
			
				|  |  |      * 签约老人+未签约有设备的
 | 
	
		
			
				|  |  |      *
 | 
	
		
			
				|  |  |      */
 | 
	
		
			
				|  |  |     public JSONObject  findTendOld(Integer page,Integer size){
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         String sql = "SELECT DISTINCT p.id AS id,p.`name` AS `name`, p.sex AS sex,CASE WHEN LENGTH( p.idcard )= 18 THEN\n" +
 | 
	
		
			
				|  |  |                 "\t\tYEAR (\n" +
 | 
	
		
			
				|  |  |                 "\t\t\tnow()) - YEAR (\n" +
 | 
	
		
			
				|  |  |                 "\t\tsubstring( p.idcard, 7, 8 )) \n" +
 | 
	
		
			
				|  |  |                 "\t\tWHEN LENGTH( p.idcard )= 15 THEN\n" +
 | 
	
		
			
				|  |  |                 "\t\tYEAR (\n" +
 | 
	
		
			
				|  |  |                 "\t\t\tnow()) - YEAR (\n" +
 | 
	
		
			
				|  |  |                 "\t\tSTR_TO_DATE( CONCAT( '19', substring( p.idcard, 7, 2 )), '%Y' )) ELSE NULL \n" +
 | 
	
		
			
				|  |  |                 "\tEND AS age,\n" +
 | 
	
		
			
				|  |  |                 "\tp.mobile AS mobile,\n" +
 | 
	
		
			
				|  |  |                 "\tp.address AS address,\n" +
 | 
	
		
			
				|  |  |                 "\tt.`name` AS orgName,\n" +
 | 
	
		
			
				|  |  |                 "\tGROUP_CONCAT( DISTINCT d.NAME SEPARATOR ',' ) AS doctorName \n" +
 | 
	
		
			
				|  |  |                 "FROM base_patient p, base_service_package_sign_record sr, base_service_package_record r,base_service_package_item i, base_service_package pack,base_team t,base_team_member tm,base_doctor d \n" +
 | 
	
		
			
				|  |  |                 "WHERE sr.id = r.sign_id  AND sr.STATUS = 1 AND r.service_package_id = i.service_package_id  AND r.service_package_id = pack.id  AND i.del = 1  AND sr.`status` = 1  AND CONVERT ( sr.patient USING utf8 ) = p.id \n" +
 | 
	
		
			
				|  |  |                 "\tAND r.team_code = t.id AND tm.team_code = t.id AND d.id = tm.doctor_code AND p.id NOT IN (SELECT DISTINCT dict_code from wlyy_hospital_sys_dict WHERE (dict_name = 'jkzl_child' or dict_name = 'jkzl_older' \n" +
 | 
	
		
			
				|  |  |                 "                  or dict_name = 'jkzl_user' or dict_name = 'jkzl_helper'  or dict_name = 'jkzl_teacher' ) and dict_code is not null)\n" +
 | 
	
		
			
				|  |  |                 "GROUP BY p.idcard UNION SELECT p.id AS id,p.`name` AS `name`, p.sex AS sex,\n" +
 | 
	
		
			
				|  |  |                 "CASE\n" +
 | 
	
		
			
				|  |  |                 "\t\tWHEN LENGTH( p.idcard )= 18 THEN\n" +
 | 
	
		
			
				|  |  |                 "\t\tYEAR (\n" +
 | 
	
		
			
				|  |  |                 "\t\t\tnow()) - YEAR (\n" +
 | 
	
		
			
				|  |  |                 "\t\tsubstring( p.idcard, 7, 8 )) \n" +
 | 
	
		
			
				|  |  |                 "\t\tWHEN LENGTH( p.idcard )= 15 THEN\n" +
 | 
	
		
			
				|  |  |                 "\t\tYEAR (\n" +
 | 
	
		
			
				|  |  |                 "\t\t\tnow()) - YEAR (\n" +
 | 
	
		
			
				|  |  |                 "\t\tSTR_TO_DATE( CONCAT( '19', substring( p.idcard, 7, 2 )), '%Y' )) ELSE NULL \n" +
 | 
	
		
			
				|  |  |                 "\tEND AS age,\n" +
 | 
	
		
			
				|  |  |                 "\tp.mobile AS mobile,\n" +
 | 
	
		
			
				|  |  |                 "\tp.address AS address,\n" +
 | 
	
		
			
				|  |  |                 "\tp.address AS orgName,\n" +
 | 
	
		
			
				|  |  |                 "\t'' AS doctorName \n" +
 | 
	
		
			
				|  |  |                 "FROM base_patient p INNER JOIN wlyy_patient_device d ON p.id = d.`user` \n" +
 | 
	
		
			
				|  |  |                 "WHERE p.sign_status = 0  AND p.del = 1  AND d.del = 0 AND p.id NOT IN (SELECT DISTINCT dict_code from wlyy_hospital_sys_dict WHERE (dict_name = 'jkzl_child' or dict_name = 'jkzl_older' \n" +
 | 
	
		
			
				|  |  |                 "                  or dict_name = 'jkzl_user' or dict_name = 'jkzl_helper'  or dict_name = 'jkzl_teacher' ) and dict_code is not null) ORDER BY id\n";
 | 
	
		
			
				|  |  |     public JSONObject  findTendOld(Integer type,Integer page,Integer size,String idcard,String name,String orgName){
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         String sql = "";
 | 
	
		
			
				|  |  |         String orgNameSql = "";
 | 
	
		
			
				|  |  |         String orgNameSql2 = "";
 | 
	
		
			
				|  |  |         String nameSql = "";
 | 
	
		
			
				|  |  |         String idcardSql = "";
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         if (StringUtils.isNotBlank(name)){
 | 
	
		
			
				|  |  |              nameSql = " and p.name like '%"+name+"%'";
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |         if (StringUtils.isNotBlank(idcard)){
 | 
	
		
			
				|  |  |              idcardSql = " and p.idcard = '"+idcard+"'";
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |         if (StringUtils.isNotBlank(orgName)){
 | 
	
		
			
				|  |  |              orgNameSql  = " and t.name ='"+orgName+"'";
 | 
	
		
			
				|  |  |              orgNameSql2 = " and p.residential_area = '"+orgName+"'";
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         switch (type) {
 | 
	
		
			
				|  |  |             case 1:
 | 
	
		
			
				|  |  |                 sql = " SELECT DISTINCT p.id AS id,p.`name` AS `name`,p.sex AS sex, p.idcard AS idcard, " +
 | 
	
		
			
				|  |  |                         " CASE WHEN LENGTH( p.idcard )= 18 THEN " +
 | 
	
		
			
				|  |  |                         "  YEAR ( now()) - YEAR (substring( p.idcard, 7, 8 )) WHEN LENGTH( p.idcard )= 15 THEN " +
 | 
	
		
			
				|  |  |                         "  YEAR ( now()) - YEAR (STR_TO_DATE( CONCAT( '19', substring( p.idcard, 7, 2 )), '%Y' )) ELSE NULL  " +
 | 
	
		
			
				|  |  |                         " END AS age, p.mobile AS mobile, p.address AS address, t.`name` AS orgName, " +
 | 
	
		
			
				|  |  |                         " GROUP_CONCAT( DISTINCT d.NAME SEPARATOR ',' ) AS doctorName  FROM " +
 | 
	
		
			
				|  |  |                         " base_patient p,base_service_package_sign_record sr,base_service_package_record r,base_service_package_item i,base_service_package pack,base_team t,base_team_member tm,base_doctor d  " +
 | 
	
		
			
				|  |  |                         " WHERE " +
 | 
	
		
			
				|  |  |                         " sr.id = r.sign_id  " +
 | 
	
		
			
				|  |  |                         " AND sr.STATUS = 1  " +
 | 
	
		
			
				|  |  |                         " AND r.service_package_id = i.service_package_id  " +
 | 
	
		
			
				|  |  |                         " AND r.service_package_id = pack.id  " +
 | 
	
		
			
				|  |  |                         " AND i.del = 1  " +
 | 
	
		
			
				|  |  |                         " AND sr.`status` = 1  " +
 | 
	
		
			
				|  |  |                         " AND CONVERT ( sr.patient USING utf8 ) = p.id  " +
 | 
	
		
			
				|  |  |                         " AND r.team_code = t.id  " +
 | 
	
		
			
				|  |  |                         " AND tm.team_code = t.id " +
 | 
	
		
			
				|  |  |                         " AND p.archive_type = 1 " +nameSql+idcardSql+orgNameSql+
 | 
	
		
			
				|  |  |                         " AND d.id = tm.doctor_code <testUserSql>  " +
 | 
	
		
			
				|  |  |                         " GROUP BY p.idcard " +
 | 
	
		
			
				|  |  |                         " UNION " +
 | 
	
		
			
				|  |  |                         " SELECT " +
 | 
	
		
			
				|  |  |                         " p.id AS id,p.`name` AS `name`, p.sex AS sex, p.idcard AS idcard, " +
 | 
	
		
			
				|  |  |                         " CASE WHEN LENGTH( p.idcard )= 18 THEN " +
 | 
	
		
			
				|  |  |                         "  YEAR (now()) - YEAR ( substring( p.idcard, 7, 8 ))  " +
 | 
	
		
			
				|  |  |                         "  WHEN LENGTH( p.idcard )= 15 THEN " +
 | 
	
		
			
				|  |  |                         "  YEAR (now()) - YEAR (STR_TO_DATE( CONCAT( '19', substring( p.idcard, 7, 2 )), '%Y' )) ELSE NULL  " +
 | 
	
		
			
				|  |  |                         " END AS age, " +
 | 
	
		
			
				|  |  |                         " p.mobile AS mobile,p.address AS address, p.residential_area AS orgName,'' AS doctorName  " +
 | 
	
		
			
				|  |  |                         " FROM " +
 | 
	
		
			
				|  |  |                         " base_patient p INNER JOIN wlyy_patient_device d ON p.id = d.`user`  " +
 | 
	
		
			
				|  |  |                         " WHERE p.sign_status = 0 AND p.del = 1 AND d.del = 0 AND p.archive_type = 1 " + nameSql+idcardSql+orgNameSql2+
 | 
	
		
			
				|  |  |                         " <testUserSql>  " +
 | 
	
		
			
				|  |  |                         " GROUP BY p.idcard  ";
 | 
	
		
			
				|  |  |                 break;
 | 
	
		
			
				|  |  |             case 2:
 | 
	
		
			
				|  |  |                 sql +=" SELECT DISTINCT p.id AS id, p.`name` AS `name`,  p.sex AS sex,  p.idcard AS idcard," +
 | 
	
		
			
				|  |  |                         " CASE WHEN LENGTH( p.idcard )= 18 THEN  " +
 | 
	
		
			
				|  |  |                         " YEAR ( now()) - YEAR (substring( p.idcard, 7, 8 ))   " +
 | 
	
		
			
				|  |  |                         " WHEN LENGTH( p.idcard )= 15 THEN YEAR (now()) - YEAR (STR_TO_DATE( CONCAT( '19', substring( p.idcard, 7, 2 )), '%Y' )) ELSE NULL   " +
 | 
	
		
			
				|  |  |                         " END AS age,p.mobile AS mobile,p.address AS address  " +
 | 
	
		
			
				|  |  |                         " FROM base_patient p  " +
 | 
	
		
			
				|  |  |                         " WHERE p.archive_type = 2 and p.del = 1 "+nameSql+idcardSql+" <testUserSql>";
 | 
	
		
			
				|  |  |                 break;
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         page = (page - 1) * size;
 | 
	
		
			
				|  |  |         String testUserSql = "AND p.id NOT IN (SELECT DISTINCT dict_code FROM wlyy_hospital_sys_dict" +
 | 
	
		
			
				|  |  |                 " WHERE( dict_name = 'jkzl_child' OR dict_name = 'jkzl_older' OR dict_name = 'jkzl_user') AND dict_code IS NOT NULL ) ";
 | 
	
		
			
				|  |  |         sql += "  ORDER BY id limit " + page + "," + size + "";
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         sql = sql.replace("<testUserSql>",testUserSql);
 | 
	
		
			
				|  |  |         List<Map<String, Object>> list = jdbcTemplate.queryForList(sql);
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         JSONObject jsonObject = new JSONObject();
 | 
	
		
			
				|  |  |         jsonObject.put("data", list);
 | 
	
		
			
				|  |  |         jsonObject.put("userTotal", list.size());
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         page = (page-1)*size;
 | 
	
		
			
				|  |  |         return jsonObject;
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     //对应的社区
 | 
	
		
			
				|  |  |     public List<Map<String, Object>> findOldOrg() {
 | 
	
		
			
				|  |  |         String sql = " SELECT t.`name`,t.id FROM base_team t WHERE t.org_code IN(SELECT code FROM base_org WHERE type = '3' AND `code`" +
 | 
	
		
			
				|  |  |                 " not IN(SELECT DISTINCT dict_code FROM wlyy_hospital_sys_dict WHERE dict_name = 'jkzl_org'))  GROUP BY t.`name`";
 | 
	
		
			
				|  |  |         return jdbcTemplate.queryForList(sql);
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     //超时工单
 | 
	
		
			
				|  |  |     public JSONObject overTimeOrderList(Integer type,Integer page ,Integer size ,String name,String idcard,String orgCode){
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         String nameSql = "";
 | 
	
		
			
				|  |  |         String idcardSql = "";
 | 
	
		
			
				|  |  |         String orgCodeSql = "";
 | 
	
		
			
				|  |  |         String total = "";
 | 
	
		
			
				|  |  |         String sql = "";
 | 
	
		
			
				|  |  |         if (StringUtils.isNotBlank(name)) {
 | 
	
		
			
				|  |  |             nameSql = " AND p.`name` like '%"+name+"%'";
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |         if (StringUtils.isNotBlank(idcard)) {
 | 
	
		
			
				|  |  |             idcardSql = " AND p.idcard = '"+idcard+"'";
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |         if (StringUtils.isNotBlank(idcard)) {
 | 
	
		
			
				|  |  |             orgCodeSql = " AND t.id = '"+orgCode+"'";
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         String testUserSql = " NOT IN ( SELECT DISTINCT dict_code FROM wlyy_hospital_sys_dict WHERE ( dict_name = 'jkzl_child' OR dict_name = 'jkzl_older' OR dict_name = 'jkzl_user' OR dict_name= 'jkzl_olderRelative' ) AND dict_code IS NOT NULL ) ";
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         if (page==0)page=1;
 | 
	
		
			
				|  |  |         if (size==0)size=10;
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         page = (page - 1) * size;
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         switch (type) {
 | 
	
		
			
				|  |  |             case 1:
 | 
	
		
			
				|  |  |                 sql = " SELECT DISTINCT" +
 | 
	
		
			
				|  |  |                         " p.name, o.`status`, o.id AS orderId,DATE_FORMAT(o.create_time,'%Y-%m-%d %H:%i:%s') as create_time ," +
 | 
	
		
			
				|  |  |                         " GROUP_CONCAT( DISTINCT d.NAME SEPARATOR ',' ) AS doctorName," +
 | 
	
		
			
				|  |  |                         " GROUP_CONCAT( DISTINCT d.mobile SEPARATOR ',' ) AS dmobile," +
 | 
	
		
			
				|  |  |                         " p.mobile AS pmobile, p.address AS address, t.`name` AS orgName," +
 | 
	
		
			
				|  |  |                         " '紧急预警' AS ewtype, 1 AS type,  o.serve_address AS serviceAddress " +
 | 
	
		
			
				|  |  |                         "FROM " +
 | 
	
		
			
				|  |  |                         " base_emergency_assistance_order o  INNER JOIN base_patient p ON o.patient = p.id, base_service_package_sign_record sr, " +
 | 
	
		
			
				|  |  |                         " base_service_package_record r,base_service_package_item i, base_service_package pack,base_team t,base_team_member tm, " +
 | 
	
		
			
				|  |  |                         " base_doctor d WHERE o.STATUS = 1  AND o.patient "+testUserSql+" " +
 | 
	
		
			
				|  |  |                         " AND ( TIMESTAMPDIFF( HOUR, o.create_time, now()) >= 1 )  " +
 | 
	
		
			
				|  |  |                         " AND NOT EXISTS ( SELECT 1 FROM base_emergency_warn_log log WHERE log.order_id = o.id )  " +
 | 
	
		
			
				|  |  |                         " AND sr.id = r.sign_id  " +
 | 
	
		
			
				|  |  |                         " AND sr.STATUS = 1  " +
 | 
	
		
			
				|  |  |                         " AND r.service_package_id = i.service_package_id  " +
 | 
	
		
			
				|  |  |                         " AND r.service_package_id = pack.id  " +
 | 
	
		
			
				|  |  |                         " AND i.del = 1  " +
 | 
	
		
			
				|  |  |                         " AND sr.`status` = 1  " +
 | 
	
		
			
				|  |  |                         " AND CONVERT ( sr.patient USING utf8 ) = p.id  " +
 | 
	
		
			
				|  |  |                         " AND r.team_code = t.id  " +
 | 
	
		
			
				|  |  |                         " AND tm.team_code = t.id  " +
 | 
	
		
			
				|  |  |                         " AND p.archive_type = 1  " +
 | 
	
		
			
				|  |  |                         " AND d.id = tm.doctor_code  " +orgCodeSql+idcardSql+nameSql+
 | 
	
		
			
				|  |  |                         " union all " +
 | 
	
		
			
				|  |  |                         "SELECT DISTINCT p.name,  o.`status`, o.id AS orderId, DATE_FORMAT(o.create_time,'%Y-%m-%d %H:%i:%s') as create_time, " +
 | 
	
		
			
				|  |  |                         " GROUP_CONCAT( DISTINCT d.NAME SEPARATOR ',' ) AS doctorName, " +
 | 
	
		
			
				|  |  |                         " GROUP_CONCAT( DISTINCT d.mobile SEPARATOR ',' ) AS dmobile, " +
 | 
	
		
			
				|  |  |                         " p.mobile AS pmobile, p.address AS address, t.`name` AS orgName, " +
 | 
	
		
			
				|  |  |                         " o.serve_desc AS ewtype, 2 AS type, o.serve_address AS serviceAddress " +
 | 
	
		
			
				|  |  |                         "FROM " +
 | 
	
		
			
				|  |  |                         " base_security_monitoring_order o INNER JOIN base_patient p ON o.patient = p.id , " +
 | 
	
		
			
				|  |  |                         " base_service_package_sign_record sr,base_service_package_record r,  base_service_package_item i,  base_service_package pack, " +
 | 
	
		
			
				|  |  |                         " base_team t,  base_team_member tm, base_doctor d  " +
 | 
	
		
			
				|  |  |                         " WHERE " +
 | 
	
		
			
				|  |  |                         " o.STATUS = 1  " +
 | 
	
		
			
				|  |  |                         " AND o.patient  "+testUserSql+" " +
 | 
	
		
			
				|  |  |                         " AND ( TIMESTAMPDIFF( HOUR, o.create_time, now()) >= 1 )  " +
 | 
	
		
			
				|  |  |                         " AND NOT EXISTS (SELECT 1 FROM base_emergency_warn_log log WHERE log.order_id = o.id) " +
 | 
	
		
			
				|  |  |                         " AND sr.id = r.sign_id  " +
 | 
	
		
			
				|  |  |                         " AND sr.STATUS = 1  " +
 | 
	
		
			
				|  |  |                         " AND r.service_package_id = i.service_package_id  " +
 | 
	
		
			
				|  |  |                         " AND r.service_package_id = pack.id  " +
 | 
	
		
			
				|  |  |                         " AND i.del = 1  " +
 | 
	
		
			
				|  |  |                         " AND sr.`status` = 1  " +
 | 
	
		
			
				|  |  |                         " AND CONVERT ( sr.patient USING utf8 ) = p.id  " +
 | 
	
		
			
				|  |  |                         " AND r.team_code = t.id  " +
 | 
	
		
			
				|  |  |                         " AND tm.team_code = t.id  " +
 | 
	
		
			
				|  |  |                         " AND p.archive_type = 1  " + orgCodeSql+idcardSql+nameSql+
 | 
	
		
			
				|  |  |                         " AND d.id = tm.doctor_code ";
 | 
	
		
			
				|  |  |                 total = overTimeOrderListTotalSql(1,nameSql,idcardSql,orgCodeSql);
 | 
	
		
			
				|  |  |                 break;
 | 
	
		
			
				|  |  |             case 2:
 | 
	
		
			
				|  |  |                 sql = "SELECT DISTINCT o.id as orderId, p.`name`, p.mobile,DATE_FORMAT(o.create_time,'%Y-%m-%d %H:%i:%s') as create_time , fd.NAME AS lifeName, bo.NAME AS serviceOrgName, bo.mobile AS orgMobile, t.`name` AS area   " +
 | 
	
		
			
				|  |  |                         " FROM " +
 | 
	
		
			
				|  |  |                         " base_life_care_order o  " +
 | 
	
		
			
				|  |  |                         " INNER JOIN base_patient p ON o.patient = p.id  " +
 | 
	
		
			
				|  |  |                         " LEFT JOIN base_life_care_fee_detail fd ON o.id = fd.order_id  " +
 | 
	
		
			
				|  |  |                         " LEFT JOIN base_org bo ON o.hospital = bo.`code`,  " +
 | 
	
		
			
				|  |  |                         " base_service_package_sign_record sr,  " +
 | 
	
		
			
				|  |  |                         " base_service_package_record r,  " +
 | 
	
		
			
				|  |  |                         " base_service_package_item i,  " +
 | 
	
		
			
				|  |  |                         " base_service_package pack,  " +
 | 
	
		
			
				|  |  |                         " base_team t   " +
 | 
	
		
			
				|  |  |                         " WHERE  " +
 | 
	
		
			
				|  |  |                         "  o.STATUS = 1   " +
 | 
	
		
			
				|  |  |                         "  AND o.patient "+testUserSql+"  " +
 | 
	
		
			
				|  |  |                         "  AND ( TIMESTAMPDIFF( HOUR, o.create_time, now()) >= 6 )   " +
 | 
	
		
			
				|  |  |                         "  AND sr.id = r.sign_id   " +
 | 
	
		
			
				|  |  |                         "  AND sr.STATUS = 1   " +
 | 
	
		
			
				|  |  |                         "  AND r.service_package_id = i.service_package_id   " +
 | 
	
		
			
				|  |  |                         "  AND r.service_package_id = pack.id   " +
 | 
	
		
			
				|  |  |                         "  AND i.del = 1   " +
 | 
	
		
			
				|  |  |                         "  AND sr.`status` = 1   " +
 | 
	
		
			
				|  |  |                         "  AND CONVERT ( sr.patient USING utf8 ) = p.id   " +
 | 
	
		
			
				|  |  |                         "  AND r.team_code = t.id   " +
 | 
	
		
			
				|  |  |                         "  AND p.archive_type = 1 "+nameSql+idcardSql+orgCodeSql+" UNION ALL  " +
 | 
	
		
			
				|  |  |                         "SELECT DISTINCT co.id as orderId, p.`name`, p.mobile, DATE_FORMAT(co.create_time,'%Y-%m-%d %H:%i:%s') as create_time, fd.NAME AS lifeName, co.hospital_name AS serviceOrgName,bo.mobile AS orgMobile, p.residential_area AS area   " +
 | 
	
		
			
				|  |  |                         "FROM  " +
 | 
	
		
			
				|  |  |                         "  base_life_care_order co  " +
 | 
	
		
			
				|  |  |                         "  LEFT JOIN base_patient p ON co.patient = p.id  " +
 | 
	
		
			
				|  |  |                         "  LEFT JOIN base_life_care_fee_detail fd ON co.id = fd.order_id  " +
 | 
	
		
			
				|  |  |                         "  LEFT JOIN base_org bo ON co.hospital = bo.`code`   " +
 | 
	
		
			
				|  |  |                         "WHERE  " +
 | 
	
		
			
				|  |  |                         "  p.sign_status <> 1   " +
 | 
	
		
			
				|  |  |                         "  AND co.`status` = 1   " +
 | 
	
		
			
				|  |  |                         "  AND p.id "+testUserSql+""+nameSql+idcardSql+orgCodeSql;
 | 
	
		
			
				|  |  |                 total = overTimeOrderListTotalSql(2,nameSql,idcardSql,orgCodeSql);
 | 
	
		
			
				|  |  |                 break;
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         sql += "GROUP BY orderId ORDER BY create_time DESC LIMIT "+page+","+size+" ";
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         sql += " limit "+page+","+size+"";
 | 
	
		
			
				|  |  |         List<Map<String, Object>> list = jdbcTemplate.queryForList(sql);
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         List<Map<String, Object>> list = jdbcTemplate.queryForList(sql);
 | 
	
		
			
				|  |  |         JSONObject jsonObject = new JSONObject();
 | 
	
		
			
				|  |  |         jsonObject.put("data",list);
 | 
	
		
			
				|  |  |         jsonObject.put("oldTotal",list.size());
 | 
	
		
			
				|  |  |         jsonObject.put("list",list);
 | 
	
		
			
				|  |  |         jsonObject.put("total",total);
 | 
	
		
			
				|  |  |         return jsonObject;
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     //紧急安防工单列表
 | 
	
		
			
				|  |  |     public JSONObject emeSecOrderList(Integer status,String name,String idcard,String orgCode,Integer page,Integer size){
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         if (page==null) page=1;
 | 
	
		
			
				|  |  |         if (size==null) size=10;
 | 
	
		
			
				|  |  |         page = (page-1)*size;
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         String statusSql ="AND  o.`status` <> -1";
 | 
	
		
			
				|  |  |         String nameSql = "";
 | 
	
		
			
				|  |  |         String idcardSql = "";
 | 
	
		
			
				|  |  |         String orgCodeSql = "";
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         if (StringUtils.isNotBlank(name)){
 | 
	
		
			
				|  |  |             nameSql = " AND p.`name` LIKE '%"+name+"%'";
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |         if (StringUtils.isNotBlank(idcard)){
 | 
	
		
			
				|  |  |             idcardSql = "AND p.idcard = '"+idcard+"'";
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |         if (StringUtils.isNotBlank(orgCode)){
 | 
	
		
			
				|  |  |             orgCodeSql =" AND t.id = '"+orgCode+"'";
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |         if (null!=status){
 | 
	
		
			
				|  |  |             statusSql = "AND o.status = "+status+"";
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         String sql = "SELECT p.name,o.`status`,o.id AS orderId,DATE_FORMAT( o.create_time, '%Y-%m-%d %H:%i:%s' ) AS create_time, " +
 | 
	
		
			
				|  |  |                 " GROUP_CONCAT( DISTINCT d.NAME SEPARATOR ',' ) AS doctorName, " +
 | 
	
		
			
				|  |  |                 " GROUP_CONCAT( DISTINCT d.mobile SEPARATOR ',' ) AS dmobile, " +
 | 
	
		
			
				|  |  |                 " p.mobile AS pmobile, p.address AS address,t.`name` AS orgName, " +
 | 
	
		
			
				|  |  |                 " '紧急预警' AS ewtype, 1 AS type,o.serve_address AS serviceAddress  " +
 | 
	
		
			
				|  |  |                 " FROM " +
 | 
	
		
			
				|  |  |                 " base_emergency_assistance_order o " +
 | 
	
		
			
				|  |  |                 " LEFT JOIN base_patient p ON o.patient = p.id " +
 | 
	
		
			
				|  |  |                 " LEFT JOIN base_service_package_sign_record sr ON CONVERT( sr.patient USING utf8 ) = p.id AND sr.STATUS = 1 AND sr.`status` = 1   " +
 | 
	
		
			
				|  |  |                 " LEFT JOIN base_service_package_record r ON sr.id = r.sign_id  " +
 | 
	
		
			
				|  |  |                 " LEFT JOIN base_service_package_item i ON r.service_package_id = i.service_package_id  AND i.del = 1  " +
 | 
	
		
			
				|  |  |                 " LEFT JOIN base_service_package pack ON r.service_package_id = pack.id  " +
 | 
	
		
			
				|  |  |                 " LEFT JOIN base_team t ON r.team_code = t.id " +
 | 
	
		
			
				|  |  |                 " LEFT JOIN base_team_member tm ON tm.team_code = t.id " +
 | 
	
		
			
				|  |  |                 " LEFT JOIN base_doctor d ON d.id = tm.doctor_code " +
 | 
	
		
			
				|  |  |                 "WHERE 1=1 " +
 | 
	
		
			
				|  |  |                  statusSql+nameSql+idcardSql+orgCodeSql+
 | 
	
		
			
				|  |  |                 " AND o.org_code NOT IN ( SELECT DISTINCT dict_code FROM wlyy_hospital_sys_dict WHERE dict_name = 'jkzl_org' AND dict_code IS NOT NULL )  GROUP BY o.id " +
 | 
	
		
			
				|  |  |                 " UNION ALL " +
 | 
	
		
			
				|  |  |                 " SELECT p.name,o.`status`,o.id AS orderId,DATE_FORMAT( o.create_time, '%Y-%m-%d %H:%i:%s' ) AS create_time, " +
 | 
	
		
			
				|  |  |                 " GROUP_CONCAT( DISTINCT d.NAME SEPARATOR ',' ) AS doctorName, " +
 | 
	
		
			
				|  |  |                 " GROUP_CONCAT( DISTINCT d.mobile SEPARATOR ',' ) AS dmobile, " +
 | 
	
		
			
				|  |  |                 " p.mobile AS pmobile,p.address AS address,t.`name` AS orgName, " +
 | 
	
		
			
				|  |  |                 " o.serve_desc AS ewtype,2 AS type,o.serve_address AS serviceAddress  " +
 | 
	
		
			
				|  |  |                 "FROM " +
 | 
	
		
			
				|  |  |                 " base_security_monitoring_order o " +
 | 
	
		
			
				|  |  |                 " LEFT JOIN base_patient p ON o.patient = p.id " +
 | 
	
		
			
				|  |  |                 " LEFT JOIN base_service_package_sign_record sr ON CONVERT ( sr.patient USING utf8 ) = p.id AND sr.`status` = 1  " +
 | 
	
		
			
				|  |  |                 " LEFT JOIN base_service_package_record r ON sr.id = r.sign_id  " +
 | 
	
		
			
				|  |  |                 " LEFT JOIN base_service_package_item i ON r.service_package_id = i.service_package_id  AND i.del = 1  " +
 | 
	
		
			
				|  |  |                 " LEFT JOIN base_service_package pack ON r.service_package_id = pack.id  " +
 | 
	
		
			
				|  |  |                 " LEFT JOIN base_team t ON r.team_code = t.id  " +
 | 
	
		
			
				|  |  |                 " LEFT JOIN base_team_member tm ON tm.team_code = t.id  " +
 | 
	
		
			
				|  |  |                 " LEFT JOIN base_doctor d ON d.id = tm.doctor_code  " +
 | 
	
		
			
				|  |  |                 " WHERE 1=1 " +
 | 
	
		
			
				|  |  |                   statusSql+nameSql+idcardSql+orgCodeSql+
 | 
	
		
			
				|  |  |                 " AND p.id NOT IN ( SELECT DISTINCT dict_code FROM wlyy_hospital_sys_dict WHERE ( dict_name = 'jkzl_child' OR dict_name = 'jkzl_older' OR dict_name = 'jkzl_user' OR dict_name= 'jkzl_olderRelative' ) AND dict_code IS NOT NULL ) " +
 | 
	
		
			
				|  |  |                 " GROUP BY o.id  ORDER BY create_time DESC LIMIT "+page+","+size+"";
 | 
	
		
			
				|  |  |         List<Map<String, Object>> list = jdbcTemplate.queryForList(sql);
 | 
	
		
			
				|  |  |         JSONObject jsonObject = new JSONObject();
 | 
	
		
			
				|  |  |         jsonObject.put("list",list);
 | 
	
		
			
				|  |  |         jsonObject.put("total",emeSecOrderListTotalSql(nameSql,idcardSql,orgCodeSql,statusSql));
 | 
	
		
			
				|  |  |         return jsonObject;
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     private String emeSecOrderListTotalSql(String nameSql,String idcardSql,String orgCodeSql,String statusSql){
 | 
	
		
			
				|  |  |         String sql ="SELECT SUM(a.total) FROM(\n" +
 | 
	
		
			
				|  |  |                 "SELECT \n" +
 | 
	
		
			
				|  |  |                 "\tcount(DISTINCT o.id) AS total \n" +
 | 
	
		
			
				|  |  |                 "FROM\n" +
 | 
	
		
			
				|  |  |                 "\tbase_emergency_assistance_order o\n" +
 | 
	
		
			
				|  |  |                 "\tLEFT JOIN base_patient p ON o.patient = p.id\n" +
 | 
	
		
			
				|  |  |                 "\tLEFT JOIN base_service_package_sign_record sr ON CONVERT( sr.patient USING utf8 ) = p.id AND sr.STATUS = 1 AND sr.`status` = 1 \t\n" +
 | 
	
		
			
				|  |  |                 "\tLEFT JOIN base_service_package_record r ON sr.id = r.sign_id \n" +
 | 
	
		
			
				|  |  |                 "\tLEFT JOIN base_service_package_item i ON r.service_package_id = i.service_package_id  AND i.del = 1 \n" +
 | 
	
		
			
				|  |  |                 "\tLEFT JOIN base_service_package pack ON r.service_package_id = pack.id \n" +
 | 
	
		
			
				|  |  |                 "\tLEFT JOIN base_team t ON r.team_code = t.id\n" +
 | 
	
		
			
				|  |  |                 "\tLEFT JOIN\tbase_team_member tm ON tm.team_code = t.id\n" +
 | 
	
		
			
				|  |  |                 "\tLEFT JOIN base_doctor d ON d.id = tm.doctor_code\n" +
 | 
	
		
			
				|  |  |                 "WHERE\t\n" +
 | 
	
		
			
				|  |  |                 "\t1=1 \n " +statusSql+nameSql+idcardSql+orgCodeSql+
 | 
	
		
			
				|  |  |                 "  AND  o.`status` <> -1\n" +
 | 
	
		
			
				|  |  |                 "\tAND o.org_code NOT IN ( SELECT DISTINCT dict_code FROM wlyy_hospital_sys_dict WHERE dict_name = 'jkzl_org' AND dict_code IS NOT NULL )  \n" +
 | 
	
		
			
				|  |  |                 "UNION ALL\n" +
 | 
	
		
			
				|  |  |                 "SELECT \n" +
 | 
	
		
			
				|  |  |                 "\tcount(DISTINCT o.id) AS total \n" +
 | 
	
		
			
				|  |  |                 "FROM\n" +
 | 
	
		
			
				|  |  |                 "\tbase_security_monitoring_order o\n" +
 | 
	
		
			
				|  |  |                 "\tLEFT JOIN base_patient p ON o.patient = p.id\n" +
 | 
	
		
			
				|  |  |                 "\tLEFT JOIN base_service_package_sign_record sr ON CONVERT ( sr.patient USING utf8 ) = p.id AND sr.`status` = 1 \n" +
 | 
	
		
			
				|  |  |                 "  LEFT JOIN\tbase_service_package_record r ON sr.id = r.sign_id \n" +
 | 
	
		
			
				|  |  |                 "\tLEFT JOIN base_service_package_item i ON r.service_package_id = i.service_package_id  AND i.del = 1 \n" +
 | 
	
		
			
				|  |  |                 "\tLEFT JOIN base_service_package pack ON r.service_package_id = pack.id \n" +
 | 
	
		
			
				|  |  |                 "\tLEFT JOIN base_team t ON r.team_code = t.id \n" +
 | 
	
		
			
				|  |  |                 "\tLEFT JOIN base_team_member tm ON tm.team_code = t.id \n" +
 | 
	
		
			
				|  |  |                 "\tLEFT JOIN base_doctor d ON d.id = tm.doctor_code \n" +
 | 
	
		
			
				|  |  |                 "WHERE 1=1 \n" +
 | 
	
		
			
				|  |  |                 "\t\n" +statusSql+nameSql+idcardSql+orgCodeSql+
 | 
	
		
			
				|  |  |                 "\tAND p.id NOT IN ( SELECT DISTINCT dict_code FROM wlyy_hospital_sys_dict WHERE ( dict_name = 'jkzl_child' OR dict_name = 'jkzl_older' OR dict_name = 'jkzl_user' OR dict_name= 'jkzl_olderRelative' ) AND dict_code IS NOT NULL )\n" +
 | 
	
		
			
				|  |  |                 ") a";
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         List<String> list = jdbcTemplate.queryForList(sql, String.class);
 | 
	
		
			
				|  |  |         return list.get(0);
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     private String overTimeOrderListTotalSql(Integer type,String nameSql,String idcardSql,String orgCodeSql){
 | 
	
		
			
				|  |  |         String sql = "";
 | 
	
		
			
				|  |  |        switch (type){
 | 
	
		
			
				|  |  |            case 1:
 | 
	
		
			
				|  |  |                 sql = "SELECT SUM(a.total) FROM (\n" +
 | 
	
		
			
				|  |  |                        "\tSELECT \n" +
 | 
	
		
			
				|  |  |                        "\t\tcount(DISTINCT o.id) AS total\n" +
 | 
	
		
			
				|  |  |                        "\tFROM\n" +
 | 
	
		
			
				|  |  |                        "\t\tbase_emergency_assistance_order o\n" +
 | 
	
		
			
				|  |  |                        "\t\tINNER JOIN base_patient p ON o.patient = p.id,\n" +
 | 
	
		
			
				|  |  |                        "\t\tbase_service_package_sign_record sr,\n" +
 | 
	
		
			
				|  |  |                        "\t\tbase_service_package_record r,\n" +
 | 
	
		
			
				|  |  |                        "\t\tbase_service_package_item i,\n" +
 | 
	
		
			
				|  |  |                        "\t\tbase_service_package pack,\n" +
 | 
	
		
			
				|  |  |                        "\t\tbase_team t,\n" +
 | 
	
		
			
				|  |  |                        "\t\tbase_team_member tm,\n" +
 | 
	
		
			
				|  |  |                        "\t\tbase_doctor d \n" +
 | 
	
		
			
				|  |  |                        "\tWHERE\n" +
 | 
	
		
			
				|  |  |                        "\t\to.STATUS = 1 \n" +
 | 
	
		
			
				|  |  |                        "\t\tAND o.patient NOT IN ( SELECT DISTINCT dict_code FROM wlyy_hospital_sys_dict WHERE ( dict_name = 'jkzl_child' OR dict_name = 'jkzl_older' OR dict_name = 'jkzl_user' ) AND dict_code IS NOT NULL ) \n" +
 | 
	
		
			
				|  |  |                        "\t\tAND ( TIMESTAMPDIFF( HOUR, o.create_time, now()) >= 6 ) \n" +
 | 
	
		
			
				|  |  |                        "\t\tAND NOT EXISTS ( SELECT 1 FROM base_emergency_warn_log log WHERE log.order_id = o.id ) \n" +
 | 
	
		
			
				|  |  |                        "\t\tAND sr.id = r.sign_id \n" +
 | 
	
		
			
				|  |  |                        "\t\tAND sr.STATUS = 1 \n" +
 | 
	
		
			
				|  |  |                        "\t\tAND r.service_package_id = i.service_package_id \n" +
 | 
	
		
			
				|  |  |                        "\t\tAND r.service_package_id = pack.id \n" +
 | 
	
		
			
				|  |  |                        "\t\tAND i.del = 1 \n" +
 | 
	
		
			
				|  |  |                        "\t\tAND sr.`status` = 1 \n" +
 | 
	
		
			
				|  |  |                        "\t\tAND CONVERT ( sr.patient USING utf8 ) = p.id \n" +
 | 
	
		
			
				|  |  |                        "\t\tAND r.team_code = t.id \n" +
 | 
	
		
			
				|  |  |                        "\t\tAND tm.team_code = t.id \n" +
 | 
	
		
			
				|  |  |                        "\t\tAND p.archive_type = 1 \n" +
 | 
	
		
			
				|  |  |                        "\t\tAND d.id = tm.doctor_code "+nameSql+idcardSql+orgCodeSql+" UNION ALL\n" +
 | 
	
		
			
				|  |  |                        "\tSELECT \n" +
 | 
	
		
			
				|  |  |                        "\t\tCOUNT(DISTINCT o.id) AS total\n" +
 | 
	
		
			
				|  |  |                        "\tFROM\n" +
 | 
	
		
			
				|  |  |                        "\t\tbase_security_monitoring_order o\n" +
 | 
	
		
			
				|  |  |                        "\t\tINNER JOIN base_patient p ON o.patient = p.id,\n" +
 | 
	
		
			
				|  |  |                        "\t\tbase_service_package_sign_record sr,\n" +
 | 
	
		
			
				|  |  |                        "\t\tbase_service_package_record r,\n" +
 | 
	
		
			
				|  |  |                        "\t\tbase_service_package_item i,\n" +
 | 
	
		
			
				|  |  |                        "\t\tbase_service_package pack,\n" +
 | 
	
		
			
				|  |  |                        "\t\tbase_team t,\n" +
 | 
	
		
			
				|  |  |                        "\t\tbase_team_member tm,\n" +
 | 
	
		
			
				|  |  |                        "\t\tbase_doctor d \n" +
 | 
	
		
			
				|  |  |                        "\tWHERE\n" +
 | 
	
		
			
				|  |  |                        "\t\to.STATUS = 1 \n" +
 | 
	
		
			
				|  |  |                        "\t\tAND o.patient NOT IN ( SELECT DISTINCT dict_code FROM wlyy_hospital_sys_dict WHERE ( dict_name = 'jkzl_child' OR dict_name = 'jkzl_older' OR dict_name = 'jkzl_user' ) AND dict_code IS NOT NULL ) \n" +
 | 
	
		
			
				|  |  |                        "\t\tAND ( TIMESTAMPDIFF( HOUR, o.create_time, now()) >= 6 ) \n" +
 | 
	
		
			
				|  |  |                        "\t\tAND NOT EXISTS ( SELECT 1 FROM base_emergency_warn_log log WHERE log.order_id = o.id ) \n" +
 | 
	
		
			
				|  |  |                        "\t\tAND sr.id = r.sign_id \n" +
 | 
	
		
			
				|  |  |                        "\t\tAND sr.STATUS = 1 \n" +
 | 
	
		
			
				|  |  |                        "\t\tAND r.service_package_id = i.service_package_id \n" +
 | 
	
		
			
				|  |  |                        "\t\tAND r.service_package_id = pack.id \n" +
 | 
	
		
			
				|  |  |                        "\t\tAND i.del = 1 \n" +
 | 
	
		
			
				|  |  |                        "\t\tAND sr.`status` = 1 \n" +
 | 
	
		
			
				|  |  |                        "\t\tAND CONVERT ( sr.patient USING utf8 ) = p.id \n" +
 | 
	
		
			
				|  |  |                        "\t\tAND r.team_code = t.id \n" +
 | 
	
		
			
				|  |  |                        "\t\tAND tm.team_code = t.id "+nameSql+idcardSql+orgCodeSql+" \n" +
 | 
	
		
			
				|  |  |                        "\t\tAND p.archive_type = 1 \n" +
 | 
	
		
			
				|  |  |                        "\t\tAND d.id = tm.doctor_code) a";
 | 
	
		
			
				|  |  |                break;
 | 
	
		
			
				|  |  |            case 2:
 | 
	
		
			
				|  |  |                sql = "SELECT\n" +
 | 
	
		
			
				|  |  |                        "\tSUM( a.total ) \n" +
 | 
	
		
			
				|  |  |                        "FROM\n" +
 | 
	
		
			
				|  |  |                        "\t(\n" +
 | 
	
		
			
				|  |  |                        "\tSELECT\n" +
 | 
	
		
			
				|  |  |                        "\t\tcount( DISTINCT o.id ) AS total \n" +
 | 
	
		
			
				|  |  |                        "\tFROM\n" +
 | 
	
		
			
				|  |  |                        "\t\tbase_life_care_order o\n" +
 | 
	
		
			
				|  |  |                        "\t\tINNER JOIN base_patient p ON o.patient = p.id\n" +
 | 
	
		
			
				|  |  |                        "\t\tLEFT JOIN base_life_care_fee_detail fd ON o.id = fd.order_id\n" +
 | 
	
		
			
				|  |  |                        "\t\tLEFT JOIN base_org bo ON o.hospital = bo.`code`,\n" +
 | 
	
		
			
				|  |  |                        "\t\tbase_service_package_sign_record sr,\n" +
 | 
	
		
			
				|  |  |                        "\t\tbase_service_package_record r,\n" +
 | 
	
		
			
				|  |  |                        "\t\tbase_service_package_item i,\n" +
 | 
	
		
			
				|  |  |                        "\t\tbase_service_package pack,\n" +
 | 
	
		
			
				|  |  |                        "\t\tbase_team t \n" +
 | 
	
		
			
				|  |  |                        "\tWHERE\n" +
 | 
	
		
			
				|  |  |                        "\t\to.STATUS = 1 \n" +
 | 
	
		
			
				|  |  |                        "\t\tAND o.patient NOT IN ( SELECT DISTINCT dict_code FROM wlyy_hospital_sys_dict WHERE ( dict_name = 'jkzl_child' OR dict_name = 'jkzl_older' OR dict_name = 'jkzl_user' ) AND dict_code IS NOT NULL ) \n" +
 | 
	
		
			
				|  |  |                        "\t\tAND ( TIMESTAMPDIFF( HOUR, o.create_time, now()) >= 6 ) \n" +
 | 
	
		
			
				|  |  |                        "\t\tAND sr.id = r.sign_id \n" +
 | 
	
		
			
				|  |  |                        "\t\tAND sr.STATUS = 1 \n" +
 | 
	
		
			
				|  |  |                        "\t\tAND r.service_package_id = i.service_package_id \n" +
 | 
	
		
			
				|  |  |                        "\t\tAND r.service_package_id = pack.id \n" +
 | 
	
		
			
				|  |  |                        "\t\tAND i.del = 1 \n" +
 | 
	
		
			
				|  |  |                        "\t\tAND sr.`status` = 1 \n" +
 | 
	
		
			
				|  |  |                        "\t\tAND CONVERT ( sr.patient USING utf8 ) = p.id \n" +
 | 
	
		
			
				|  |  |                        "\t\tAND r.team_code = t.id \n" +
 | 
	
		
			
				|  |  |                        "\t\tAND p.archive_type = 1 "+nameSql+idcardSql+orgCodeSql+" UNION ALL\n" +
 | 
	
		
			
				|  |  |                        "\tSELECT\n" +
 | 
	
		
			
				|  |  |                        "\t\tcount( DISTINCT co.id ) AS total \n" +
 | 
	
		
			
				|  |  |                        "\tFROM\n" +
 | 
	
		
			
				|  |  |                        "\t\tbase_life_care_order co\n" +
 | 
	
		
			
				|  |  |                        "\t\tLEFT JOIN base_patient p ON co.patient = p.id\n" +
 | 
	
		
			
				|  |  |                        "\t\tLEFT JOIN base_life_care_fee_detail fd ON co.id = fd.order_id\n" +
 | 
	
		
			
				|  |  |                        "\t\tLEFT JOIN base_org bo ON co.hospital = bo.`code`\n" +
 | 
	
		
			
				|  |  |                        "\t\tLEFT JOIN base_team t ON t.org_code = bo.CODE \n" +
 | 
	
		
			
				|  |  |                        "\tWHERE\n" +
 | 
	
		
			
				|  |  |                        "\t\tp.sign_status <> 1 \n" +
 | 
	
		
			
				|  |  |                        "\t\tAND co.`status` = 1 "+nameSql+idcardSql+orgCodeSql+" \n" +
 | 
	
		
			
				|  |  |                        "\t\tAND p.id NOT IN ( SELECT DISTINCT dict_code FROM wlyy_hospital_sys_dict WHERE ( dict_name = 'jkzl_child' OR dict_name = 'jkzl_older' OR dict_name = 'jkzl_user' ) AND dict_code IS NOT NULL ) \n" +
 | 
	
		
			
				|  |  |                        "\t) a";
 | 
	
		
			
				|  |  |                break;
 | 
	
		
			
				|  |  |        }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         List<String> list = jdbcTemplate.queryForList(sql, String.class);
 | 
	
		
			
				|  |  |         return list.get(0);
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     //健康设备-安防设备 列表
 | 
	
		
			
				|  |  |     public PageEnvelop healthySecurityDeviceList(String name, String deviceSn, String categoryCode, String contactStatus, String type, Integer page, Integer size) {
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         String nameSql = "";
 | 
	
		
			
				|  |  |         String deviceSnSql = "";
 | 
	
		
			
				|  |  |         String categoryCodeSql = "";
 | 
	
		
			
				|  |  |         String contactStatusSql = "";
 | 
	
		
			
				|  |  |         String totalSql = "";
 | 
	
		
			
				|  |  |         if (StringUtils.isNotBlank(contactStatus))
 | 
	
		
			
				|  |  |             contactStatusSql = " AND wd.contact_status = '" + contactStatus + "'";
 | 
	
		
			
				|  |  |         if (StringUtils.isNotBlank(name)) nameSql = " AND p.name LIKE '%" + name + "%'";
 | 
	
		
			
				|  |  |         if (StringUtils.isNotBlank(deviceSn)) deviceSnSql = " AND pd.device_sn = '" + deviceSn + "'";
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         if (page == null) page = 1;
 | 
	
		
			
				|  |  |         if (size == null) size = 10;
 | 
	
		
			
				|  |  |         page = (page - 1) * size;
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         String deviceSql = "";
 | 
	
		
			
				|  |  |         if ("jk".equals(type)) {
 | 
	
		
			
				|  |  |             categoryCodeSql = " AND ( pd.category_code = 1 OR pd.category_code = 2 )";
 | 
	
		
			
				|  |  |             if (StringUtils.isNotBlank(categoryCode))
 | 
	
		
			
				|  |  |                 categoryCodeSql = " AND pd.category_code = '" + categoryCode + "'";
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |             deviceSql = "SELECT DISTINCT  p.id AS patient, pd.id as id,pd.device_name AS deviceName,pd.device_sn AS deviceSn,'健康设备' AS deviceType,p.`name`," +
 | 
	
		
			
				|  |  |                     " p.mobile,p.phone,dd.photo,wd.contact_status * 1 AS contactStatus" +
 | 
	
		
			
				|  |  |                     " FROM " +
 | 
	
		
			
				|  |  |                     " wlyy_patient_device pd LEFT JOIN base_patient p ON pd.`user` = p.id LEFT JOIN dm_device dd ON pd.category_code = dd.category_code " +
 | 
	
		
			
				|  |  |                     " LEFT JOIN wlyy_devices wd ON wd.device_code = pd.device_sn WHERE " +
 | 
	
		
			
				|  |  |                     " pd.del = 0 " + nameSql + deviceSnSql + categoryCodeSql + contactStatusSql;
 | 
	
		
			
				|  |  |             totalSql = "SELECT count(DISTINCT pd.id) FROM " +
 | 
	
		
			
				|  |  |                     " wlyy_patient_device pd LEFT JOIN base_patient p ON pd.`user` = p.id LEFT JOIN dm_device dd ON pd.category_code = dd.category_code " +
 | 
	
		
			
				|  |  |                     " LEFT JOIN wlyy_devices wd ON wd.device_code = pd.device_sn WHERE " +
 | 
	
		
			
				|  |  |                     " pd.del = 0 " + nameSql + deviceSnSql + categoryCodeSql + contactStatusSql;
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         if ("af".equals(type) || StringUtils.isBlank(type)) {
 | 
	
		
			
				|  |  |             categoryCodeSql = " AND pd.category_code > 2 ";
 | 
	
		
			
				|  |  |             if (StringUtils.isNotBlank(categoryCode))
 | 
	
		
			
				|  |  |                 categoryCodeSql = " AND pd.category_code = '" + categoryCode + "'";
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |             deviceSql = " SELECT DISTINCT  p.id AS patient,pd.id AS id ,pd.device_name AS deviceName,pd.device_sn AS deviceSn,'安防设备' AS deviceType,p.`name`,p.mobile,p.phone,dd.photo,wd.contact_status * 1 AS contactStatus " +
 | 
	
		
			
				|  |  |                     " FROM " +
 | 
	
		
			
				|  |  |                     " wlyy_patient_device pd LEFT JOIN base_patient p ON pd.`user` = p.id LEFT JOIN dm_device dd ON pd.category_code = dd.category_code " +
 | 
	
		
			
				|  |  |                     " LEFT JOIN wlyy_devices wd ON wd.device_code = pd.device_sn WHERE " +
 | 
	
		
			
				|  |  |                     " pd.del = 0 " + nameSql + deviceSnSql + categoryCodeSql + contactStatusSql;
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |             totalSql = " SELECT count(DISTINCT p.id) FROM " +
 | 
	
		
			
				|  |  |                     " wlyy_patient_device pd LEFT JOIN base_patient p ON pd.`user` = p.id LEFT JOIN dm_device dd ON pd.category_code = dd.category_code " +
 | 
	
		
			
				|  |  |                     " LEFT JOIN wlyy_devices wd ON wd.device_code = pd.device_sn WHERE " +
 | 
	
		
			
				|  |  |                     " pd.del = 0 " + nameSql + deviceSnSql + categoryCodeSql + contactStatusSql;
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         deviceSql += " GROUP BY id LIMIT " + page + "," + size + " ";
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         List<Map<String, Object>> deviceList = jdbcTemplate.queryForList(deviceSql);
 | 
	
		
			
				|  |  |         List<String> list = jdbcTemplate.queryForList(totalSql, String.class);
 | 
	
		
			
				|  |  |         JSONArray jsonArray = new JSONArray();
 | 
	
		
			
				|  |  |         for (Map<String, Object> map : deviceList) {
 | 
	
		
			
				|  |  |             Map<String, Object> signInfoMap = patientSignInfo(map.get("patient").toString());
 | 
	
		
			
				|  |  |             if (null!=signInfoMap) {
 | 
	
		
			
				|  |  |                 map.put("orgName", signInfoMap.get("orgName"));
 | 
	
		
			
				|  |  |                 jsonArray.add(map);
 | 
	
		
			
				|  |  |             }
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |         return PageEnvelop.getSuccessListWithPage("success", jsonArray, page, size, Long.parseLong(list.get(0)));
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     //获取对应设备名称
 | 
	
		
			
				|  |  |     public List<Map<String, Object>> deviceNameList(String type){
 | 
	
		
			
				|  |  |         String sql = "SELECT `name`,category_code FROM dm_device WHERE device_type = "+type+" GROUP BY category_code";
 | 
	
		
			
				|  |  |         return  jdbcTemplate.queryForList(sql);
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     private Map<String, Object> patientSignInfo(String patient){
 | 
	
		
			
				|  |  |         String signSql ="SELECT p.NAME,p.id AS id, " +
 | 
	
		
			
				|  |  |                 "  GROUP_CONCAT( DISTINCT d.NAME SEPARATOR ',' ) AS doctorName," +
 | 
	
		
			
				|  |  |                 "  GROUP_CONCAT( DISTINCT d.mobile SEPARATOR ',' ) AS dmobile," +
 | 
	
		
			
				|  |  |                 "  p.mobile AS pmobile, p.address AS address,t.`name` AS orgName " +
 | 
	
		
			
				|  |  |                 "  FROM " +
 | 
	
		
			
				|  |  |                 "  base_patient p " +
 | 
	
		
			
				|  |  |                 "  INNER JOIN base_service_package_sign_record sr ON CONVERT( sr.patient USING utf8 ) = p.id AND sr.STATUS = 1 AND sr.`status` = 1 " +
 | 
	
		
			
				|  |  |                 "  INNER JOIN base_service_package_record r ON sr.id = r.sign_id  " +
 | 
	
		
			
				|  |  |                 "  INNER JOIN base_service_package_item i ON r.service_package_id = i.service_package_id  AND i.del = 1  " +
 | 
	
		
			
				|  |  |                 "  INNER JOIN base_service_package pack ON r.service_package_id = pack.id  " +
 | 
	
		
			
				|  |  |                 "  INNER JOIN base_team t ON r.team_code = t.id " +
 | 
	
		
			
				|  |  |                 "  INNER JOIN base_team_member tm ON tm.team_code = t.id " +
 | 
	
		
			
				|  |  |                 "  INNER JOIN base_doctor d ON d.id = tm.doctor_code " +
 | 
	
		
			
				|  |  |                 "  WHERE 1=1 and p.id = '"+patient+"' " +
 | 
	
		
			
				|  |  |                 "  AND p.id NOT IN ( SELECT DISTINCT dict_code FROM wlyy_hospital_sys_dict WHERE (dict_name = 'jkzl_user' OR dict_name = 'jkzl_older' ) AND dict_code IS NOT NULL )  GROUP BY id\n";
 | 
	
		
			
				|  |  |         List<Map<String, Object>> list = jdbcTemplate.queryForList(signSql);
 | 
	
		
			
				|  |  |         return list.size()>0?list.get(0):null;
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | }
 |