|
@ -35,10 +35,13 @@ import org.springframework.data.domain.PageRequest;
|
|
|
import org.springframework.jdbc.core.BeanPropertyRowMapper;
|
|
|
import org.springframework.jdbc.core.JdbcTemplate;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
import javax.persistence.Transient;
|
|
|
import javax.persistence.criteria.CriteriaBuilder;
|
|
|
import java.awt.print.Pageable;
|
|
|
import java.text.DecimalFormat;
|
|
|
import java.text.SimpleDateFormat;
|
|
|
import java.util.*;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
@ -73,6 +76,8 @@ public class StatisticsService {
|
|
|
private SystemMessageDao messageDao;
|
|
|
@Autowired
|
|
|
private PatientDeviceDao patientDeviceDao;
|
|
|
@Autowired
|
|
|
private SystemMessageDao systemMessageDao;
|
|
|
|
|
|
private static final String defalutArea = "330100";
|
|
|
|
|
@ -692,6 +697,30 @@ public class StatisticsService {
|
|
|
//能力评估 从签约时服务标签取
|
|
|
res.put("levelList",capacityAssessment(null,null,null));
|
|
|
|
|
|
//居民健康标签
|
|
|
List<SaveModel> list = elasticsearchUtil.findDateAllQuotaLevel1(endDate,endDate,area,level,"47",SaveModel.timeLevel_DDL,null,null,"2");
|
|
|
JSONArray labelArr = new JSONArray();
|
|
|
Long total = 0l;
|
|
|
for(int i=0;i<list.size();i++){
|
|
|
SaveModel saveModel = list.get(i);
|
|
|
JSONObject json = new JSONObject();
|
|
|
if (saveModel.getResult2().longValue()==0&&StringUtils.isBlank(saveModel.getSlaveKey1())){
|
|
|
continue;
|
|
|
}
|
|
|
if ("0".equals(saveModel.getSlaveKey1())){//去除60岁以下老人
|
|
|
continue;
|
|
|
}
|
|
|
json.put("num",saveModel.getResult2().longValue());
|
|
|
json.put("code",saveModel.getSlaveKey1());
|
|
|
json.put("name",saveModel.getSlaveKey1Name());
|
|
|
total+=saveModel.getResult2().longValue();
|
|
|
labelArr.add(json);
|
|
|
}
|
|
|
JSONObject arrTmp = new JSONObject();
|
|
|
arrTmp.put("patientLabelTotal",total);
|
|
|
arrTmp.put("patientLabelList",labelArr);
|
|
|
res.put("patientLabelStatistic",arrTmp);
|
|
|
|
|
|
//年龄分布 50
|
|
|
// ageList = elasticsearchUtil.findDateAllQuotaLevel1(endDate, endDate, area, level, "50", SaveModel.timeLevel_DDL,null,null,"2");
|
|
|
List<SaveModel> ageList = elasticsearchUtil.findDateAllQuotaLevel1(endDate,endDate,area,level,"50",SaveModel.timeLevel_DDL,null,null,"2");
|
|
@ -1038,18 +1067,19 @@ public class StatisticsService {
|
|
|
SaveModel saveModelAdd = elasticsearchUtil.findOneDateQuotaLevel0(start, endDate, area, level, "46", SaveModel.timeLevel_ZL,areaLevel);
|
|
|
res.put("index_"+46+"_add",saveModelAdd.getResult2().longValue());
|
|
|
}
|
|
|
String sql = "SELECT dict_code code from wlyy_hospital_sys_dict WHERE dict_name = 'security_server_dict'";//46指标一级纬度
|
|
|
List<String> dictCodes = jdbcTemplate.queryForList(sql,String.class);
|
|
|
JSONArray addDetail = new JSONArray();
|
|
|
for (String dictCode:dictCodes){
|
|
|
if(StringUtils.isNotBlank(type)){
|
|
|
//周/月 增量
|
|
|
String start = statisticsUtilService.calStart(endDate,type);
|
|
|
SaveModel saveModelAdd = elasticsearchUtil.findOneDateQuotaLevel1(start,endDate, area,level, "46", SaveModel.timeLevel_ZL, dictCode,areaLevel);
|
|
|
if(StringUtils.isNotBlank(type)){
|
|
|
//周/月 增量
|
|
|
String start = statisticsUtilService.calStart(endDate,type);
|
|
|
|
|
|
List<SaveModel> saveModelAdds = elasticsearchUtil.findDateQuotaLevelList(start,endDate, area,level, "46", SaveModel.timeLevel_ZL, "3",null,null,null);
|
|
|
for (SaveModel saveModelTmp:saveModelAdds){
|
|
|
JSONObject json = new JSONObject();
|
|
|
json.put("num",saveModelAdd.getResult2().longValue());
|
|
|
json.put("code",saveModelAdd.getSlaveKey1());
|
|
|
json.put("name",saveModelAdd.getSlaveKey1Name());
|
|
|
SaveModel saveMode2 = elasticsearchUtil.findOneDateQuotaLevels(endDate,endDate, area,level, "46", SaveModel.timeLevel_DDL, "3",null,null,saveModelTmp.getSlaveKey3());
|
|
|
json.put("total",saveMode2.getResult2().longValue());
|
|
|
json.put("num",saveModelTmp.getResult2().longValue());
|
|
|
json.put("code",saveModelTmp.getSlaveKey3());
|
|
|
json.put("name",saveModelTmp.getSlaveKey3Name());
|
|
|
addDetail.add(json);
|
|
|
}
|
|
|
}
|
|
@ -1086,10 +1116,29 @@ public class StatisticsService {
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
public Page<SystemMessageDO> getAllDeviceLostMessage(String area,Integer page,Integer size){
|
|
|
PageRequest pageRequest = new PageRequest(page - 1, size);
|
|
|
Page<SystemMessageDO> systemMessageDOS = messageDao.getByType("43",pageRequest);
|
|
|
return systemMessageDOS;
|
|
|
public PageEnvelop getAllDeviceLostMessage(String area,Integer page,Integer size){
|
|
|
page = page>0?page-1:0;
|
|
|
String sql ="select GROUP_CONCAT(id) id,type,title,sender,sender_name senderName,\n" +
|
|
|
"receiver,receiver_name receiverName,relation_code relationCode,\n" +
|
|
|
"data,is_read isRead,create_time createTime,sender_photo\n" +
|
|
|
"from base_system_message where type=43 and del=1 GROUP BY relation_code order by createTime desc ";
|
|
|
|
|
|
Long count = jdbcTemplate.queryForObject(" select count(id) from ("+sql+")A ",Long.class);
|
|
|
sql +=" limit "+page*size+","+size ;
|
|
|
List<Map<String,Object>> list = jdbcTemplate.queryForList(sql);
|
|
|
|
|
|
return PageEnvelop.getSuccessListWithPage("查询成功",list,page++,size,count);
|
|
|
|
|
|
}
|
|
|
|
|
|
@Transactional
|
|
|
public void delMessageRead(String msgId){
|
|
|
if (StringUtils.isNotBlank(msgId)){
|
|
|
String[] ids = msgId.split(",");
|
|
|
if (ids.length>0){
|
|
|
systemMessageDao.delMessage(ids);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
public JSONObject deviceUsingInfo(String area){
|
|
@ -1109,13 +1158,14 @@ public class StatisticsService {
|
|
|
result.put("deviceAll",total);//物联率分母总数 设备总数(包括库存)
|
|
|
result.put("lost",lost);//失联数
|
|
|
result.put("notLost",use);//物联数 被人绑定了就是物联
|
|
|
result.put("notLost",use);//失联数分母总数 发出的设备数
|
|
|
result.put("deviceAll2",use);//失联数分母总数 发出的设备数
|
|
|
result.put("iotRange",commonUtil.getRange(use,total));
|
|
|
result.put("LostRange",commonUtil.getRange(lost,use));
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
public PageEnvelop getSecurityOrderList(String area,String status, String svrDesc,String topicItem, Integer page, Integer pageSize){
|
|
|
page = page>1?page-1:0;
|
|
|
JSONArray result = new JSONArray();
|
|
|
|
|
|
String sqlCount = "select count(ord.id) from base_security_monitoring_order ord INNER JOIN base_patient p on p.id = ord.patient " +
|
|
@ -1189,6 +1239,117 @@ public class StatisticsService {
|
|
|
return PageEnvelop.getSuccessListWithPage("success",result,page,pageSize,count);
|
|
|
}
|
|
|
|
|
|
public JSONObject getSecurityTab(String area,String status,String svrDesc,String topicItem){
|
|
|
|
|
|
if (StringUtils.isNotBlank(area)){
|
|
|
|
|
|
}
|
|
|
|
|
|
JSONObject result = new JSONObject();
|
|
|
result.put("status_-2",0);//误报警
|
|
|
result.put("status_-1",0);//已取消
|
|
|
result.put("status_0",0);//已完成
|
|
|
result.put("status_1",0);//预警中
|
|
|
result.put("status_all",0);//
|
|
|
result.put("svr_all",0);//
|
|
|
|
|
|
Map<String,String> serverTmp = new HashMap<>();
|
|
|
|
|
|
String sql = " select py_code,dict_value from wlyy_hospital_sys_dict where dict_name='security_server_dict' ";
|
|
|
List<Map<String,Object>> servers = jdbcTemplate.queryForList(sql);
|
|
|
for (Map<String,Object> server:servers){
|
|
|
result.put("svr_"+server.get("py_code").toString(),0);
|
|
|
serverTmp.put(server.get("dict_value").toString(),server.get("py_code").toString());
|
|
|
}
|
|
|
sql = "select ord.status,ord.serve_desc,count(ord.id) count from base_security_monitoring_order ord INNER JOIN base_patient p on p.id = ord.patient " +
|
|
|
"where 1=1 ";
|
|
|
String fliter = " ";
|
|
|
|
|
|
if (org.apache.commons.lang3.StringUtils.isNotBlank(status)){
|
|
|
fliter+=" and ord.status='"+Integer.parseInt(status)+"' ";
|
|
|
}
|
|
|
if (org.apache.commons.lang3.StringUtils.isNotBlank(svrDesc)){
|
|
|
fliter+=" and ord.serve_desc='"+svrDesc+"' ";
|
|
|
}
|
|
|
if (org.apache.commons.lang3.StringUtils.isNotBlank(topicItem)){
|
|
|
fliter+=" and ord.topic_item='"+topicItem+"' ";
|
|
|
}
|
|
|
fliter+=" group by ord.status,ord.serve_desc ";
|
|
|
List<Map<String,Object>> sqlResult = jdbcTemplate.queryForList(sql+fliter);
|
|
|
String pyCode = "";
|
|
|
for (Map<String,Object> map:sqlResult){
|
|
|
result.put("status_"+map.get("status"),result.getInteger("status_"+map.get("status"))+Integer.parseInt(map.get("count").toString()));
|
|
|
pyCode = serverTmp.get(map.get("serve_desc"))==null?null:serverTmp.get(map.get("serve_desc")).toString();
|
|
|
if (org.apache.commons.lang3.StringUtils.isNotBlank(pyCode)){
|
|
|
result.put("svr_"+pyCode,result.getInteger("svr_"+pyCode)+Integer.parseInt(map.get("count").toString()));
|
|
|
result.put("status_all",result.getInteger("status_all")+Integer.parseInt(map.get("count").toString()));
|
|
|
result.put("svr_all",result.getInteger("svr_all")+Integer.parseInt(map.get("count").toString()));
|
|
|
}
|
|
|
}
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
public JSONObject statisticsSecurityWarnInfo(String endDate,String area,Integer level,String index) throws Exception {
|
|
|
JSONObject res = new JSONObject();
|
|
|
String[] indexes = index.split(",");
|
|
|
for(String ind:indexes){
|
|
|
String areaLevel="6";
|
|
|
String sql = " select area_level from wlyy_job_config_new where id='"+ind+"' ";
|
|
|
List<String> areaLevels = jdbcTemplate.queryForList(sql,String.class);
|
|
|
if (areaLevels.size()>0){
|
|
|
areaLevel = areaLevels.get(0);
|
|
|
}
|
|
|
JSONArray jsonArray = new JSONArray();
|
|
|
long total = 0l;
|
|
|
//总量
|
|
|
List<SaveModel> list = elasticsearchUtil.findDateAllQuotaLevel1(endDate,endDate,area,level,ind,SaveModel.timeLevel_DDL,null,null,areaLevel);
|
|
|
for(int i=0;i<list.size();i++){
|
|
|
SaveModel saveModel = list.get(i);
|
|
|
JSONObject json = new JSONObject();
|
|
|
if (saveModel.getResult2().longValue()==0&&StringUtils.isBlank(saveModel.getSlaveKey1())){
|
|
|
continue;
|
|
|
}
|
|
|
if ("0".equals(saveModel.getSlaveKey1())){
|
|
|
continue;
|
|
|
}
|
|
|
json.put("num",saveModel.getResult2().longValue());
|
|
|
json.put("code",saveModel.getSlaveKey1());
|
|
|
json.put("name",saveModel.getSlaveKey1Name());
|
|
|
total+=saveModel.getResult2().longValue();
|
|
|
jsonArray.add(json);
|
|
|
}
|
|
|
res.put("index_"+ind+"_total",total);
|
|
|
res.put("index_"+ind,jsonArray);
|
|
|
if("46".equals(ind)){
|
|
|
//安防响应 误报警+完成
|
|
|
SaveModel saveModel = elasticsearchUtil.findOneDateQuotaLevel2NoSlaveKey1(endDate,area,level,"46","2","-2",areaLevel);
|
|
|
long finish = saveModel.getResult2().longValue();
|
|
|
saveModel = elasticsearchUtil.findOneDateQuotaLevel2NoSlaveKey1(endDate,area,level,"46","2","0",areaLevel);
|
|
|
finish += saveModel.getResult2().longValue();
|
|
|
res.put("index_"+46+"_finish",finish);
|
|
|
//安防误报警
|
|
|
saveModel = elasticsearchUtil.findOneDateQuotaLevel2NoSlaveKey1(endDate,area,level,"46","2","-2",areaLevel);
|
|
|
res.put("index_"+46+"_error",saveModel.getResult2().longValue());
|
|
|
}
|
|
|
}
|
|
|
//误报警率分析
|
|
|
return res;
|
|
|
}
|
|
|
|
|
|
public JSONArray statisticsSecurityTrend(String startDate,String endDate,String area,Integer level,String index) throws Exception {
|
|
|
//安防总数
|
|
|
List<SaveModel> saveModels = elasticsearchUtil.findDateQuotaLevel0(startDate,endDate,area,level,index,SaveModel.timeLevel_DDL,SaveModel.interval_day,null);
|
|
|
JSONArray jsonArray = new JSONArray();
|
|
|
for (SaveModel tmp:saveModels){
|
|
|
JSONObject jsonTmp = new JSONObject();
|
|
|
jsonTmp.put("count",tmp.getResult2().longValue());
|
|
|
jsonTmp.put("timeDay",DateUtil.dateToStr(tmp.getQuotaDate(),DateUtil.YYYY_MM_DD));
|
|
|
jsonTmp.put("time",DateUtil.dateToStr(tmp.getQuotaDate(),DateUtil.yyyy_MM_dd_HH_mm_ss));
|
|
|
jsonArray.add(jsonTmp);
|
|
|
}
|
|
|
return jsonArray;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 计算开始时间
|
|
|
* @param endDate
|
|
@ -1211,4 +1372,11 @@ public class StatisticsService {
|
|
|
}
|
|
|
return DateUtil.dateToStrShort(cal.getTime());
|
|
|
}
|
|
|
|
|
|
public List searchBySql(String sql){
|
|
|
if (sql.startsWith("select")||sql.startsWith("SELECT")){
|
|
|
return elasticsearchUtil.searchBySql(sql);
|
|
|
}
|
|
|
return null;
|
|
|
}
|
|
|
}
|