|
@ -540,7 +540,7 @@ public class StatisticsService {
|
|
|
//离线的设备数 超过6小时未受理的预警数 超6小时未响应服务(审核照料发起6小时未接单)
|
|
|
sqltmp = " select count(distinct pd.device_sn) total ,pd.device_type from wlyy_patient_device pd INNER JOIN wlyy_devices dev on pd.device_sn = dev.device_code " +
|
|
|
" INNER JOIN base_patient p on pd.user = p.id and pd.del=0 and p.del=1 " +
|
|
|
"where (dev.contact_status=0 or dev.contact_status is null ) and pd.user "+userfilter;
|
|
|
"where dev.contact_status=0 and pd.user "+userfilter;
|
|
|
sqltmp += " group by pd.device_type ";
|
|
|
List<Map<String,Object>> offlineDevices = jdbcTemplate.queryForList(sqltmp);//离线设备
|
|
|
Long count = 0l;
|
|
@ -2253,7 +2253,7 @@ public class StatisticsService {
|
|
|
//照护老人 : 签约老人+有设备未签约的
|
|
|
String sign_OldSql = "SELECT SUM(a.zf_num) AS zf_num FROM ( SELECT count(DISTINCT id) zf_num FROM base_patient WHERE sign_status = 1 AND del = 1 AND id NOT IN (SELECT dict_code from wlyy_hospital_sys_dict WHERE dict_name = 'jkzl_older')" ;
|
|
|
sign_OldSql+=" UNION ALL ";
|
|
|
sign_OldSql += " SELECT COUNT( DISTINCT a.id ) zf_num FROM base_patient a WHERE a.archive_type = 1 AND a.sign_status = 0 AND register = '1' AND a.del = '1' AND EXISTS ( SELECT 1 FROM wlyy_patient_device pd WHERE pd.USER = a.id AND pd.del = 0 ) ) a";
|
|
|
sign_OldSql += " SELECT COUNT( DISTINCT a.id ) zf_num FROM base_patient a WHERE a.archive_type = 1 AND a.sign_status = 0 AND a.del = '1' AND EXISTS ( SELECT 1 FROM wlyy_patient_device pd WHERE pd.USER = a.id AND pd.del = 0 ) ) a";
|
|
|
|
|
|
//需照护老人 : 未签约 register=1 - 有设备未签约的
|
|
|
String unSign_oldSql = "SELECT COUNT(*) c from base_patient a WHERE archive_type = 1 and a.register = 1 and (sign_status=0 or sign_status is null ) and del='1' and not EXISTS (select 1 from wlyy_patient_device pd where pd.user = a.id and pd.del=0) ";
|
|
@ -3233,7 +3233,8 @@ public class StatisticsService {
|
|
|
" 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 i.del = 1 " +
|
|
|
" AND p.del = 1 " +
|
|
|
" AND sr.`status` = 1 " +
|
|
|
" AND CONVERT ( sr.patient USING utf8 ) = p.id " +
|
|
|
" AND r.team_code = t.id " +
|
|
@ -3277,7 +3278,7 @@ public class StatisticsService {
|
|
|
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 += " ORDER BY id DESC limit " + page + "," + size + "";
|
|
|
|
|
|
sql = sql.replace("<testUserSql>",testUserSql);
|
|
|
List<Map<String, Object>> list = jdbcTemplate.queryForList(sql);
|
|
@ -3712,8 +3713,8 @@ public class StatisticsService {
|
|
|
if (StringUtils.isNotBlank(name)) nameSql = " AND p.name LIKE '%" + name + "%'";
|
|
|
if (StringUtils.isNotBlank(deviceSn)) deviceSnSql = " AND pd.device_sn = '" + deviceSn + "'";
|
|
|
|
|
|
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' OR dict_name ='jkzl_helper' OR dict_name= 'jkzl_olderRelative' OR dict_name ='jkzl_user') ";
|
|
|
String filter="AND pd.USER 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 ) ";
|
|
|
/*String sqltmp = " SELECT GROUP_CONCAT(dict_code) orgCodes from wlyy_hospital_sys_dict WHERE (dict_name = 'jkzl_child' or dict_name = 'jkzl_older' OR dict_name ='jkzl_helper' OR dict_name= 'jkzl_olderRelative' OR dict_name ='jkzl_user') ";
|
|
|
List<Map<String,Object>> listtmp = jdbcTemplate.queryForList(sqltmp);
|
|
|
if(listtmp.size()>0){
|
|
|
String orgCodes = String.valueOf(listtmp.get(0).get("orgCodes"));
|
|
@ -3721,46 +3722,58 @@ public class StatisticsService {
|
|
|
orgCodes = orgCodes.replaceAll(",","','");
|
|
|
filter = " and p.id not in ('"+orgCodes+"') ";
|
|
|
}
|
|
|
}
|
|
|
}*/
|
|
|
|
|
|
page = page>0?page-1:0;
|
|
|
|
|
|
String deviceSql = "";
|
|
|
if ("jk".equals(type)) {
|
|
|
categoryCodeSql = " AND ( pd.category_code = 1 OR pd.category_code = 2 )";
|
|
|
categoryCodeSql = " AND pd.device_type = 0 ";
|
|
|
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,pd.category_code as categoryCode" +
|
|
|
deviceSql = "SELECT p.id AS patient,pd.id AS id,pd.device_name AS deviceName,pd.device_sn AS deviceSn,dd.photo,'健康设备' AS deviceType,p.`name`,p.mobile,p.phone,wd.contact_status * 1 AS contactStatus,pd.category_code as categoryCode " +
|
|
|
" 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 "+filter + 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 " +filter+ nameSql + deviceSnSql + categoryCodeSql + contactStatusSql;
|
|
|
" wlyy_patient_device pd " +
|
|
|
" INNER JOIN wlyy_devices wd ON pd.device_sn = wd.device_code " +
|
|
|
" INNER JOIN base_patient p ON pd.USER = p.id AND pd.del = 0 AND p.del = 1 " +
|
|
|
" LEFT JOIN dm_device dd ON pd.category_code = dd.category_code " +
|
|
|
"WHERE " +
|
|
|
" 1=1 "+filter + nameSql + deviceSnSql + categoryCodeSql + contactStatusSql;
|
|
|
totalSql = "SELECT count(pd.id) FROM " +
|
|
|
" wlyy_patient_device pd " +
|
|
|
" INNER JOIN wlyy_devices wd ON pd.device_sn = wd.device_code " +
|
|
|
" INNER JOIN base_patient p ON pd.USER = p.id AND pd.del = 0 AND p.del = 1 " +
|
|
|
" LEFT JOIN dm_device dd ON pd.category_code = dd.category_code " +
|
|
|
" WHERE " +
|
|
|
" 1=1 "+filter + nameSql + deviceSnSql + categoryCodeSql + contactStatusSql;
|
|
|
|
|
|
}
|
|
|
|
|
|
if ("af".equals(type) || StringUtils.isBlank(type)) {
|
|
|
categoryCodeSql = " AND pd.category_code > 2 ";
|
|
|
categoryCodeSql = " AND pd.device_type = 1 ";
|
|
|
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,pd.category_code as categoryCode " +
|
|
|
deviceSql = "SELECT p.id AS patient,pd.id AS id,pd.device_name AS deviceName,pd.device_sn AS deviceSn,dd.photo,'安防设备' AS deviceType,p.`name`,p.mobile,p.phone,wd.contact_status * 1 AS contactStatus,pd.category_code as categoryCode " +
|
|
|
" 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 " +filter+nameSql + deviceSnSql + categoryCodeSql + contactStatusSql;
|
|
|
" wlyy_patient_device pd " +
|
|
|
" INNER JOIN wlyy_devices wd ON pd.device_sn = wd.device_code " +
|
|
|
" INNER JOIN base_patient p ON pd.USER = p.id AND pd.del = 0 AND p.del = 1 " +
|
|
|
" LEFT JOIN dm_device dd ON pd.category_code = dd.category_code " +
|
|
|
"WHERE " +
|
|
|
" 1=1 "+filter + nameSql + deviceSnSql + categoryCodeSql + contactStatusSql;
|
|
|
totalSql = "SELECT count(pd.id) FROM " +
|
|
|
" wlyy_patient_device pd " +
|
|
|
" INNER JOIN wlyy_devices wd ON pd.device_sn = wd.device_code " +
|
|
|
" INNER JOIN base_patient p ON pd.USER = p.id AND pd.del = 0 AND p.del = 1 " +
|
|
|
" LEFT JOIN dm_device dd ON pd.category_code = dd.category_code " +
|
|
|
" WHERE " +
|
|
|
" 1=1 "+filter + 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 " +filter+nameSql + deviceSnSql + categoryCodeSql + contactStatusSql;
|
|
|
}
|
|
|
|
|
|
deviceSql += " GROUP BY id LIMIT " + page*size + "," + size + " ";
|
|
|
deviceSql += " GROUP BY pd.id LIMIT " + page*size + "," + size + " ";
|
|
|
|
|
|
List<Map<String, Object>> deviceList = jdbcTemplate.queryForList(deviceSql);
|
|
|
List<String> list = jdbcTemplate.queryForList(totalSql, String.class);
|
|
@ -3820,7 +3833,7 @@ public class StatisticsService {
|
|
|
//离线设备数量
|
|
|
String offLineDeviceSql="select count(distinct pd.device_sn) total from wlyy_patient_device pd INNER JOIN wlyy_devices dev on pd.device_sn = dev.device_code " +
|
|
|
" INNER JOIN base_patient p on pd.user = p.id and pd.del=0 and p.del=1 " +
|
|
|
" where (dev.contact_status=0 or dev.contact_status is null ) and pd.device_type = "+type+" AND pd.user NOT IN ("+testUsqlSql+") group by pd.device_type";
|
|
|
" where dev.contact_status=0 and pd.device_type = "+type+" AND pd.user NOT IN ("+testUsqlSql+") group by pd.device_type";
|
|
|
|
|
|
//设备总数
|
|
|
String deviceTotalSql = "SELECT count(DISTINCT device_code) FROM wlyy_devices WHERE (device_code IS NOT NULL OR device_code <> '') AND device_type = "+type+"";
|
|
@ -3840,8 +3853,13 @@ public class StatisticsService {
|
|
|
" INNER JOIN base_patient p on pd.user = p.id and pd.del=0 and p.del=1 " +
|
|
|
" where pd.device_type = "+type+" AND EXISTS(SELECT 1 FROM device_data_push_log pl WHERE pl.device_sn = pd.device_sn "+deviceCategorySql+" AND DATE_SUB(CURDATE(), INTERVAL 7 DAY) <= pl.create_time ) AND pd.user NOT IN ("+testUsqlSql+") group by pd.device_type";
|
|
|
|
|
|
//设备类型总数
|
|
|
String deviceCodeTotalSql ="SELECT count(DISTINCT device_code) FROM wlyy_devices WHERE (device_code IS NOT NULL OR device_code <> '') AND category_code = '"+deviceCategory+"'";
|
|
|
|
|
|
//long start=System.currentTimeMillis();
|
|
|
List<Integer> total = jdbcTemplate.queryForList(typeTotalSql, Integer.class);
|
|
|
//long end=System.currentTimeMillis();
|
|
|
//System.out.println("类型数量运行多少毫秒:" + "=" + (end-start));
|
|
|
jsonObject.put("typeTotal",total.get(0));
|
|
|
total = jdbcTemplate.queryForList(offLineDeviceSql,Integer.class);
|
|
|
jsonObject.put("offLineDevice",total.get(0));
|
|
@ -3850,9 +3868,10 @@ public class StatisticsService {
|
|
|
total = jdbcTemplate.queryForList(lineDeviceSql,Integer.class);
|
|
|
jsonObject.put("lineDevice",total.get(0));
|
|
|
total = jdbcTemplate.queryForList(sevenDayUseSql,Integer.class);
|
|
|
Integer deviceCodeTotal = jdbcTemplate.queryForObject(deviceCodeTotalSql,Integer.class);
|
|
|
Float num = 0F;
|
|
|
if (total.size()>0) {
|
|
|
num= (float)total.get(0)/(float)Integer.parseInt(jsonObject.get("deviceTotal").toString());
|
|
|
num= (float)total.get(0)/(float)deviceCodeTotal;
|
|
|
}
|
|
|
jsonObject.put("sevenDayUse",num*100);
|
|
|
return jsonObject;
|