|
@ -22,6 +22,7 @@ import org.apache.commons.lang3.StringUtils;
|
|
|
import org.json.JSONArray;
|
|
|
import org.json.JSONObject;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.beans.factory.annotation.Value;
|
|
|
import org.springframework.data.redis.core.StringRedisTemplate;
|
|
|
import org.springframework.jdbc.core.BeanPropertyRowMapper;
|
|
|
import org.springframework.jdbc.core.JdbcTemplate;
|
|
@ -57,7 +58,10 @@ public class StatisticsESService {
|
|
|
private SystemDictService systemDictService;
|
|
|
@Autowired
|
|
|
private StatisticsAllService statisticsAllService;
|
|
|
|
|
|
@Value("${es.type.HealthEduArticlePatient}")
|
|
|
private String esType;
|
|
|
@Value("${es.index.HealthEduArticlePatient}")
|
|
|
private String esIndex;
|
|
|
@Autowired
|
|
|
private StatisticsService statisticsService;
|
|
|
|
|
@ -937,7 +941,7 @@ public class StatisticsESService {
|
|
|
json.put("amount", amount);
|
|
|
result.add(json);
|
|
|
}
|
|
|
if (saveModels!=null && saveModels.size()==1 && saveModels.get(0).getId()==null) {
|
|
|
if (saveModels!=null && saveModels.size()==1 && saveModels.get(0).getHospital()==null) {
|
|
|
List<Map<String,Object>> resultList = DateUtil.findDates(dateFormat.parse(startDate), dateFormat.parse(DateUtil.getNextDay(endDate,1)));
|
|
|
result.clear();
|
|
|
for (Map<String,Object> map : resultList){
|
|
@ -990,7 +994,11 @@ public class StatisticsESService {
|
|
|
String firstEnd = "";
|
|
|
// 结束日期
|
|
|
Calendar end = Calendar.getInstance();
|
|
|
end.setTime(DateUtil.strToDate(endDate, DateUtil.YYYY_MM_DD));
|
|
|
//因为统计时间是统计到当前时间的前一天,所以这里的时间是提前一天
|
|
|
Calendar temp = Calendar.getInstance();
|
|
|
temp.setTime(DateUtil.strToDate(endDate, DateUtil.YYYY_MM_DD));
|
|
|
temp.add(Calendar.DAY_OF_MONTH, -1);
|
|
|
end.setTime(temp.getTime());
|
|
|
// 起始日期为周几
|
|
|
int week = start.get(Calendar.DAY_OF_WEEK);
|
|
|
int incre = 7 - week + 1;
|
|
@ -1083,7 +1091,10 @@ public class StatisticsESService {
|
|
|
range = df.format(saveModel.getQuotaDate());
|
|
|
}
|
|
|
JSONObject json = countResult.get(range);
|
|
|
|
|
|
//因为上述时间集提前一天 但是前端是显示当前时间,所以这里给调整回去
|
|
|
if(range.equals(df.format(temp.getTime()))){
|
|
|
json.put("range",endDate);
|
|
|
}
|
|
|
if (json != null) {
|
|
|
long amount = saveModel.getResult2().longValue();
|
|
|
json.put("amount", amount);
|
|
@ -1133,7 +1144,11 @@ public class StatisticsESService {
|
|
|
start.setTime(DateUtil.strToDate(startDate, DateUtil.YYYY_MM_DD));
|
|
|
// 结束日期
|
|
|
Calendar end = Calendar.getInstance();
|
|
|
end.setTime(DateUtil.strToDate(endDate, DateUtil.YYYY_MM_DD));
|
|
|
//因为统计时间是统计到当前时间的前一天,所以这里的时间是提前一天
|
|
|
Calendar temp = Calendar.getInstance();
|
|
|
temp.setTime(DateUtil.strToDate(endDate, DateUtil.YYYY_MM_DD));
|
|
|
temp.add(Calendar.DAY_OF_MONTH, -1);
|
|
|
end.setTime(temp.getTime());
|
|
|
|
|
|
// 日期集合
|
|
|
List<Calendar> days = new ArrayList<>();
|
|
@ -1204,7 +1219,10 @@ public class StatisticsESService {
|
|
|
range = df.format(saveModel.getQuotaDate());
|
|
|
}
|
|
|
JSONObject json = countResult.get(range);
|
|
|
|
|
|
//因为上述时间集提前一天 但是前端是显示当前时间,所以这里给调整回去
|
|
|
if(range.equals(df.format(temp.getTime()))){
|
|
|
json.put("range",endDate);
|
|
|
}
|
|
|
if (json != null) {
|
|
|
long amount = saveModel.getResult2().longValue();
|
|
|
json.put("amount", amount);
|
|
@ -5156,31 +5174,105 @@ public class StatisticsESService {
|
|
|
return saveModel.getResult2().longValue();
|
|
|
}
|
|
|
|
|
|
public Map<String,Object> getLevelDeviceAndBinding(String area, int level, int sort, String lowLevel, String year) throws Exception {
|
|
|
String index_85 = "85";
|
|
|
String index_86= "86";
|
|
|
public Map<String,Object> getLevelDeviceAndBinding(String area, int level, int sort, String lowLevel, String year,String deviceType) throws Exception {
|
|
|
String index_85 = "85";//设备发放量统计指标
|
|
|
String index_86= "86";//设备绑定量统计指标
|
|
|
String index_87= "87";//设备使用量统计指标
|
|
|
String index_88= "88";//设备异常数据24H统计指标
|
|
|
//String lastDate = year + "-06-30";
|
|
|
//String timeKey = elasticsearchUtil.getQuotaTime();
|
|
|
String timeKey = DateUtil.getStringDateShort();
|
|
|
String timeKey = DateUtil.getStringDateShort();//当前时间
|
|
|
String mondayTime = DateUtil.getMondayOfThisDate(new Date());//本周一开始时间
|
|
|
String low_level = String.valueOf(StringUtils.isEmpty(lowLevel) ? (level + 1) : lowLevel);
|
|
|
List<Map<String, Object>> resultList = new ArrayList<>();
|
|
|
Map<String,Object> resultMap = new HashedMap();
|
|
|
DecimalFormat df = new DecimalFormat("0.00");
|
|
|
List<Map<String, Object>> resultList = new ArrayList<>();
|
|
|
|
|
|
//发放量
|
|
|
List<SaveModel> allAmountList = elasticsearchUtil.findDateQuotaLevel0(timeKey, timeKey, area, level, index_85, SaveModel.timeLevel_DDL, "", low_level);
|
|
|
//绑定量
|
|
|
List<SaveModel> bindingAmountList = elasticsearchUtil.findDateQuotaLevel0(timeKey, timeKey, area, level, index_86, SaveModel.timeLevel_DDL, "", low_level);
|
|
|
Integer totalAllNum = 0;
|
|
|
Integer totalBindingNum = 0;
|
|
|
for (SaveModel totalSaveModel : allAmountList){
|
|
|
totalAllNum += totalSaveModel.getResult2().intValue();
|
|
|
}
|
|
|
for (SaveModel bindSaveModel : bindingAmountList){
|
|
|
totalBindingNum += bindSaveModel.getResult2().intValue();
|
|
|
SaveModel grantSaveModel = null;
|
|
|
SaveModel bindingSaveModel = null;
|
|
|
List<SaveModel> useSaveModel = null;
|
|
|
SaveModel anomalySaveModel = null;
|
|
|
String allCountSql = "";
|
|
|
String anomalyCountSql ="";
|
|
|
// List<SaveModel> grantList = null;//发放量折线图
|
|
|
// List<SaveModel> bindingList = null;//绑定量折线图
|
|
|
List<SaveModel> allAmountList = null;//发放量列表
|
|
|
List<SaveModel> bindingAmountList = null;//绑定量列表
|
|
|
switch (deviceType){
|
|
|
case "1": {
|
|
|
grantSaveModel = elasticsearchUtil.findOneDateQuotaLevel1(timeKey,area,level, index_85,SaveModel.timeLevel_DDL,"hemopiezometer");
|
|
|
bindingSaveModel = elasticsearchUtil.findOneDateQuotaLevel1(timeKey,area,level, index_86,SaveModel.timeLevel_DDL,"hemopiezometer");
|
|
|
allCountSql = "SELECT COUNT(*) FROM device.wlyy_devices d where device_name like '%血压%'";
|
|
|
useSaveModel = elasticsearchUtil.findDateQuotaLevel1(mondayTime,timeKey, area, level, index_87, SaveModel.timeLevel_ZL, "hemopiezometer", null, null);
|
|
|
anomalySaveModel = elasticsearchUtil.findOneDateQuotaLevel1(timeKey,area,level, index_88,SaveModel.timeLevel_DDL,"hemopiezometer");
|
|
|
anomalyCountSql =" SELECT COUNT(d.id) FROM device.wlyy_patient_health_index d where d.type =1 and d.status=1 and d.del=1";
|
|
|
// grantList = elasticsearchUtil.findDateQuotaLevel1(timeKey,timeKey,area,level,index_85, SaveModel.timeLevel_DDL, "hemopiezometer", interval, null);
|
|
|
// bindingList = elasticsearchUtil.findDateQuotaLevel1(timeKey,timeKey,area,level,index_86, SaveModel.timeLevel_DDL, "hemopiezometer", interval, null);
|
|
|
allAmountList = elasticsearchUtil.findDateQuotaLevel1(timeKey, timeKey, area, level, index_85, SaveModel.timeLevel_DDL, "hemopiezometer","", low_level);
|
|
|
bindingAmountList = elasticsearchUtil.findDateQuotaLevel1(timeKey, timeKey, area, level, index_86, SaveModel.timeLevel_DDL, "hemopiezometer","", low_level);
|
|
|
break;
|
|
|
}
|
|
|
case "2": {
|
|
|
grantSaveModel = elasticsearchUtil.findOneDateQuotaLevel1(timeKey,area,level, index_85,SaveModel.timeLevel_DDL,"glucometer");
|
|
|
bindingSaveModel = elasticsearchUtil.findOneDateQuotaLevel1(timeKey,area,level, index_86,SaveModel.timeLevel_DDL,"glucometer");
|
|
|
allCountSql = "SELECT COUNT(*) FROM device.wlyy_devices d where device_name like '%血糖%'";
|
|
|
useSaveModel = elasticsearchUtil.findDateQuotaLevel1(mondayTime,timeKey, area, level, index_87, SaveModel.timeLevel_ZL, "glucometer", null, null);
|
|
|
anomalySaveModel = elasticsearchUtil.findOneDateQuotaLevel1(timeKey,area,level, index_88,SaveModel.timeLevel_DDL,"glucometer");
|
|
|
anomalyCountSql =" SELECT COUNT(d.id) FROM device.wlyy_patient_health_index d where d.type =2 and d.status=1 and d.del=1";
|
|
|
// elasticsearchUtil.findDateQuotaLevel1(timeKey,timeKey,area,level,index_85, SaveModel.timeLevel_DDL, "glucometer", interval, null);
|
|
|
// elasticsearchUtil.findDateQuotaLevel1(timeKey,timeKey,area,level,index_86, SaveModel.timeLevel_DDL, "glucometer", interval, null);
|
|
|
// grantList = elasticsearchUtil.findDateQuotaLevel1(timeKey,timeKey,area,level,index_85, SaveModel.timeLevel_DDL, "hemopiezometer", interval, null);
|
|
|
// bindingList = elasticsearchUtil.findDateQuotaLevel1(timeKey,timeKey,area,level,index_86, SaveModel.timeLevel_DDL, "hemopiezometer", interval, null);
|
|
|
allAmountList = elasticsearchUtil.findDateQuotaLevel1(timeKey, timeKey, area, level, index_85, SaveModel.timeLevel_DDL, "glucometer","", low_level);
|
|
|
bindingAmountList = elasticsearchUtil.findDateQuotaLevel1(timeKey, timeKey, area, level, index_86, SaveModel.timeLevel_DDL, "glucometer","", low_level);
|
|
|
break;
|
|
|
}
|
|
|
default: {
|
|
|
grantSaveModel = elasticsearchUtil.findOneDateQuotaLevel0(timeKey,area,level, index_85,SaveModel.timeLevel_DDL);
|
|
|
bindingSaveModel = elasticsearchUtil.findOneDateQuotaLevel0(timeKey,area,level, index_86,SaveModel.timeLevel_DDL);
|
|
|
anomalySaveModel = elasticsearchUtil.findOneDateQuotaLevel0(timeKey,area,level, index_88,SaveModel.timeLevel_DDL);
|
|
|
allCountSql = "SELECT COUNT(*) FROM device.wlyy_devices d ";
|
|
|
anomalyCountSql =" SELECT COUNT(d.id) FROM device.wlyy_patient_health_index d where d.status=1 and d.del=1";
|
|
|
useSaveModel = elasticsearchUtil.findDateQuotaLevel0(mondayTime,timeKey, area, level, index_87, SaveModel.timeLevel_ZL, null, null);
|
|
|
// grantList = elasticsearchUtil.findDateQuotaLevel0(timeKey,timeKey,area,level,index_85, SaveModel.timeLevel_DDL, interval, null);
|
|
|
// bindingList = elasticsearchUtil.findDateQuotaLevel0(timeKey,timeKey,area,level,index_86, SaveModel.timeLevel_DDL, interval, null);
|
|
|
allAmountList = elasticsearchUtil.findDateQuotaLevel0(timeKey, timeKey, area, level, index_85, SaveModel.timeLevel_DDL,"", low_level);
|
|
|
bindingAmountList = elasticsearchUtil.findDateQuotaLevel0(timeKey, timeKey, area, level, index_86, SaveModel.timeLevel_DDL, "", low_level);
|
|
|
|
|
|
}
|
|
|
}
|
|
|
|
|
|
Integer allCount = jdbcTemplate.queryForObject(allCountSql,Integer.class);
|
|
|
// Long total = elasticsearchUtil.excuteForLong(countSql,esIndex, esType);
|
|
|
|
|
|
resultMap.put("totalAll",allCount);//采购量
|
|
|
resultMap.put("totalGrant",grantSaveModel.getResult1());//发放量
|
|
|
resultMap.put("totalBinding",bindingSaveModel.getResult1());//绑定量
|
|
|
|
|
|
if(allCount>0){
|
|
|
resultMap.put("totalGrantRange",df.format( grantSaveModel.getResult1() > 0.0? ((grantSaveModel.getResult1())/(allCount * 1.0000)*100):0.0)+"%");//发放率
|
|
|
resultMap.put("totalBindingRange",df.format( bindingSaveModel.getResult1() > 0.0? ((bindingSaveModel.getResult1())/(grantSaveModel.getResult1() * 1.0000)*100):0.0)+"%");//绑定率
|
|
|
}else{
|
|
|
resultMap.put("totalGrantRange",0.0+"%");//发放率
|
|
|
resultMap.put("totalBindingRange",0.0+"%");//绑定率
|
|
|
}
|
|
|
Double totalUseAccount = useSaveModel.size()>0?useSaveModel.get(0).getResult1():0.0;
|
|
|
|
|
|
resultMap.put("totalUse",totalUseAccount);//本周使用量
|
|
|
if(grantSaveModel.getResult1()>0){
|
|
|
resultMap.put("totalUseRange",df.format( totalUseAccount > 0.0? ((totalUseAccount)/(grantSaveModel.getResult1() * 1.0000)*100):0.0)+"%");//本周使用率
|
|
|
}else{
|
|
|
resultMap.put("totalUseRange",0.0+"%");//本周使用率
|
|
|
}
|
|
|
Integer totalAnomaly = jdbcTemplate.queryForObject(anomalyCountSql,Integer.class);
|
|
|
resultMap.put("totalAnomaly",totalAnomaly);//异常数据量
|
|
|
resultMap.put("totalIntervene",anomalySaveModel.getResult1());//干预指导数
|
|
|
if(totalAnomaly>0){
|
|
|
resultMap.put("totalInterveneRange",df.format( anomalySaveModel.getResult1() > 0.0? ((anomalySaveModel.getResult1())/(totalAnomaly * 1.0000)*100):0.0)+"%");//异常数据24h干预指导率
|
|
|
}else{
|
|
|
resultMap.put("totalInterveneRange",0.0+"%");//异常数据24h干预指导率
|
|
|
}
|
|
|
resultMap.put("totalAll",totalAllNum);
|
|
|
resultMap.put("totalBinding",totalBindingNum);
|
|
|
resultMap.put("totalRange",getRange(totalBindingNum, totalAllNum, 2));
|
|
|
|
|
|
|
|
|
Map<String, Integer> allMap = new HashMap<>(); //发放量的的列表转map
|
|
|
if (allAmountList != null && allAmountList.size() > 0) {
|
|
@ -5202,7 +5294,6 @@ public class StatisticsESService {
|
|
|
|
|
|
if (resultList != null && resultList.size() > 0) {
|
|
|
Map<String, SaveModel> bingdingMap = new HashMap<>();
|
|
|
DecimalFormat df = new DecimalFormat("0.0000");
|
|
|
bindingAmountList.stream().forEach(one -> {
|
|
|
if ("5".equals(low_level)) {
|
|
|
bingdingMap.put(one.getTeam(), one);
|
|
@ -5261,6 +5352,117 @@ public class StatisticsESService {
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// public Map<String,Object> getLevelDeviceAndBinding(String area, int level, int sort, String lowLevel, String year) throws Exception {
|
|
|
// String index_85 = "85";
|
|
|
// String index_86= "86";
|
|
|
// //String lastDate = year + "-06-30";
|
|
|
// //String timeKey = elasticsearchUtil.getQuotaTime();
|
|
|
// String timeKey = DateUtil.getStringDateShort();
|
|
|
// String low_level = String.valueOf(StringUtils.isEmpty(lowLevel) ? (level + 1) : lowLevel);
|
|
|
// List<Map<String, Object>> resultList = new ArrayList<>();
|
|
|
// Map<String,Object> resultMap = new HashedMap();
|
|
|
//
|
|
|
// //发放量
|
|
|
// List<SaveModel> allAmountList = elasticsearchUtil.findDateQuotaLevel0(timeKey, timeKey, area, level, index_85, SaveModel.timeLevel_DDL, "", low_level);
|
|
|
// //绑定量
|
|
|
// List<SaveModel> bindingAmountList = elasticsearchUtil.findDateQuotaLevel0(timeKey, timeKey, area, level, index_86, SaveModel.timeLevel_DDL, "", low_level);
|
|
|
// Integer totalAllNum = 0;
|
|
|
// Integer totalBindingNum = 0;
|
|
|
// for (SaveModel totalSaveModel : allAmountList){
|
|
|
// totalAllNum += totalSaveModel.getResult2().intValue();
|
|
|
// }
|
|
|
// for (SaveModel bindSaveModel : bindingAmountList){
|
|
|
// totalBindingNum += bindSaveModel.getResult2().intValue();
|
|
|
// }
|
|
|
// resultMap.put("totalAll",totalAllNum);
|
|
|
// resultMap.put("totalBinding",totalBindingNum);
|
|
|
// resultMap.put("totalRange",getRange(totalBindingNum, totalAllNum, 2));
|
|
|
//
|
|
|
// Map<String, Integer> allMap = new HashMap<>(); //发放量的的列表转map
|
|
|
// if (allAmountList != null && allAmountList.size() > 0) {
|
|
|
// for (SaveModel saveModel : allAmountList) {
|
|
|
// if ("3".equals(low_level) && saveModel.getTown() != null) {
|
|
|
// allMap.put(saveModel.getTown(), saveModel.getResult2().intValue());
|
|
|
// } else if ("4".equals(low_level) && saveModel.getHospital() != null) {
|
|
|
// allMap.put(saveModel.getHospital(), saveModel.getResult2().intValue());
|
|
|
// } else if ("5".equals(low_level) && saveModel.getTeam() != null) {
|
|
|
// allMap.put(saveModel.getTeam(), saveModel.getResult2().intValue());
|
|
|
// } else {
|
|
|
// continue;
|
|
|
// }
|
|
|
// }
|
|
|
// }
|
|
|
//
|
|
|
// //自建结果集
|
|
|
// resultList = getLowLevelMapKey(level, low_level, area);
|
|
|
//
|
|
|
// if (resultList != null && resultList.size() > 0) {
|
|
|
// Map<String, SaveModel> bingdingMap = new HashMap<>();
|
|
|
// DecimalFormat df = new DecimalFormat("0.0000");
|
|
|
// bindingAmountList.stream().forEach(one -> {
|
|
|
// if ("5".equals(low_level)) {
|
|
|
// bingdingMap.put(one.getTeam(), one);
|
|
|
// } else if ("4".equals(low_level)) {
|
|
|
// bingdingMap.put(one.getHospital(), one);
|
|
|
// } else if ("3".equals(low_level)) {
|
|
|
// bingdingMap.put(one.getTown(), one);
|
|
|
// }
|
|
|
// });
|
|
|
// for (Map<String, Object> reMap : resultList) {
|
|
|
// reMap.put("amount", reMap.get("amount") != null ? Long.valueOf(reMap.get("amount").toString()) : 0L);
|
|
|
// int bindingAmount = 0;
|
|
|
// Integer allAmount = 0;
|
|
|
// //获取绑定数量
|
|
|
// if (bingdingMap != null && bingdingMap.size() > 0) {
|
|
|
// SaveModel one = bingdingMap.get(reMap.get("code").toString());
|
|
|
// if (one != null) {
|
|
|
// bindingAmount = one.getResult2().intValue();
|
|
|
// }
|
|
|
// }
|
|
|
// if (allMap != null && allMap.size() > 0) {
|
|
|
// allAmount = allMap.get(reMap.get("code").toString());
|
|
|
// if (allAmount == null) {
|
|
|
// allAmount = 0;
|
|
|
// }
|
|
|
// } else {
|
|
|
// }
|
|
|
// reMap.put("allNum", allAmount);
|
|
|
// reMap.put("bindingNum", bindingAmount);
|
|
|
// reMap.put("rate", getRange(bindingAmount, allAmount, 2));//续签率是 续签量/去年的签约数
|
|
|
// }
|
|
|
//
|
|
|
// if ((level == 2 && "5".equals(lowLevel)) || (level == 4) || (level == 3 && "5".equals(lowLevel))) {
|
|
|
// translateTeamLeaderName(resultList);
|
|
|
// }
|
|
|
// //对结果进行排序
|
|
|
// Collections.sort(resultList, new Comparator<Map<String, Object>>() {
|
|
|
// public int compare(Map<String, Object> o1, Map<String, Object> o2) {
|
|
|
// int map1value = (int) o1.get("allNum");
|
|
|
// int map2value = (int) o2.get("allNum");
|
|
|
//
|
|
|
// if (map1value - map2value > 0) {
|
|
|
// return sort == 1 ? -1 : 1;
|
|
|
// } else if (map1value - map2value < 0) {
|
|
|
// return sort == 1 ? 1 : -1;
|
|
|
// } else {
|
|
|
// return 0;
|
|
|
// }
|
|
|
// }
|
|
|
// });
|
|
|
// resultMap.put("list",resultList);
|
|
|
// return resultMap;
|
|
|
// } else {
|
|
|
// return new HashedMap();
|
|
|
// }
|
|
|
// }
|
|
|
|
|
|
|
|
|
/**
|
|
|
* 查询签约
|
|
|
*
|