|
@ -93,69 +93,6 @@ public class StatisticsESService {
|
|
|
}
|
|
|
|
|
|
|
|
|
// /**
|
|
|
// * 查询某一天父level下的子level 例如 查询市下面的团队,或者区下面的团队
|
|
|
// *
|
|
|
// * @param index 指标code
|
|
|
// * @param area 机构code或者团队code或者town code或者city code
|
|
|
// * @param timeLevel 1增量 2到达量
|
|
|
// * @param level 父arealevel
|
|
|
// * @param lowLevel 子arealevel
|
|
|
// * @return
|
|
|
// */
|
|
|
// public List<SaveModel> findOneDateQuotaByChllevel(String startDate,
|
|
|
// String endDate,
|
|
|
// String index,
|
|
|
// String area,
|
|
|
// String timeLevel,
|
|
|
// String level,
|
|
|
// String lowLevel) {
|
|
|
//
|
|
|
// //时间格式转换 yyyy-MM-dd转成 2017-07-17T00:00:00+0800
|
|
|
// startDate = changeDate(startDate);
|
|
|
// endDate = changeDate(endDate);
|
|
|
//
|
|
|
// StringBuffer sql = new StringBuffer();
|
|
|
// StringBuffer groupBy = new StringBuffer();
|
|
|
// //根据 childAreaLevel group by
|
|
|
// if (SaveModel.teamLevel.equals(level)) {
|
|
|
// sql.append("select team,teamName,result1,result2 from wlyy_quota_test where ");
|
|
|
// groupBy.append(" group by team,teamName");
|
|
|
// } else if (SaveModel.OrgLevel.equals(level)) {
|
|
|
// sql.append("select hospital,hospitalName,sum(result1) result1,sum(result2) result2 from wlyy_quota_test where ");
|
|
|
// groupBy.append(" group by hospital,hospitalName");
|
|
|
// } else if (SaveModel.townLevel.equals(level)) {
|
|
|
// sql.append("select town,townName,sum(result1) result1,sum(result2) result2 from wlyy_quota_test where ");
|
|
|
// groupBy.append(" group by town,townName");
|
|
|
// } else if (SaveModel.cityLevel.equals(level)) {
|
|
|
// sql.append("select city,cityName,sum(result1) result1,sum(result2) result2 from wlyy_quota_test where ");
|
|
|
// groupBy.append(" group by city,cityName");
|
|
|
// }
|
|
|
//
|
|
|
// sql.append(" quotaCode='" + index + "' ");
|
|
|
// sql.append(" and timeLevel='" + timeLevel + "' ");
|
|
|
// sql.append(" and areaLevel='5'");
|
|
|
// if(StringUtils.isNotEmpty(startDate)){
|
|
|
// sql.append(" and quotaDate>='" + startDate + "'");
|
|
|
// }
|
|
|
// if(StringUtils.isNotEmpty(endDate)){
|
|
|
// sql.append(" and quotaDate<='" + endDate + "'");
|
|
|
// }
|
|
|
// //查询code
|
|
|
// if (SaveModel.teamLevel.equals(lowLevel)) {
|
|
|
// sql.append(" and team='" + area + "'");
|
|
|
// } else if (SaveModel.OrgLevel.equals(lowLevel)) {
|
|
|
// sql.append(" and hospital='" + area + "'");
|
|
|
// } else if (SaveModel.townLevel.equals(lowLevel)) {
|
|
|
// sql.append(" and town='" + area + "'");
|
|
|
// } else if (SaveModel.cityLevel.equals(lowLevel)) {
|
|
|
// sql.append(" and city='" + area + "'");
|
|
|
// }
|
|
|
// sql.append(groupBy);
|
|
|
// return elasticsearchUtil.excute(sql.toString(),SaveModel.class,"","");
|
|
|
// }
|
|
|
|
|
|
|
|
|
/**
|
|
|
* 获取时间范围内按间隔统计指标增量
|
|
|
*
|
|
@ -689,7 +626,7 @@ public class StatisticsESService {
|
|
|
* @return
|
|
|
*/
|
|
|
public JSONObject getGroupInfo(String endDate, String lowCode, String area, int level, String year) throws Exception {
|
|
|
List<SaveModel> list = elasticsearchUtil.findDateQuotaLevel1(endDate, endDate, area, level, "17", "2", lowCode, null, null);
|
|
|
List<SaveModel> list = elasticsearchUtil.findDateQuotaLevel1(endDate, endDate, area, level, "17", "2", lowCode, null, null);
|
|
|
long total = 0;
|
|
|
if (list.size() > 0) {
|
|
|
total = list.get(0).getResult2().longValue();
|
|
@ -844,7 +781,7 @@ public class StatisticsESService {
|
|
|
}
|
|
|
|
|
|
json.put("taskNum", taskNum);
|
|
|
if (interval == 1){
|
|
|
if (interval == 1) {
|
|
|
JSONArray jsonArray = dateTotalStatistics(startDate, endDate, area, level, index, lowCode);
|
|
|
json.put("data", jsonArray);
|
|
|
return json;
|
|
@ -862,6 +799,7 @@ public class StatisticsESService {
|
|
|
|
|
|
/**
|
|
|
* 总体分析 折线图 绑定微信 按日
|
|
|
*
|
|
|
* @param startDate
|
|
|
* @param endDate
|
|
|
* @param area
|
|
@ -876,10 +814,10 @@ public class StatisticsESService {
|
|
|
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
|
|
|
List<SaveModel> saveModels = new ArrayList<>();
|
|
|
//startDate = DateUtil.getNextDay(startDate,-1);
|
|
|
if (StringUtils.isNotBlank(lowCode)){
|
|
|
saveModels = elasticsearchUtil.findLineChartDateQuotaLevel1(startDate,endDate,area,level,index,SaveModel.timeLevel_DDL,SaveModel.interval_day,lowCode);
|
|
|
}else{
|
|
|
saveModels = elasticsearchUtil.findLineChartDateQuotaLevel0(startDate,endDate,area,level,index,SaveModel.timeLevel_DDL,SaveModel.interval_day);
|
|
|
if (StringUtils.isNotBlank(lowCode)) {
|
|
|
saveModels = elasticsearchUtil.findLineChartDateQuotaLevel1(startDate, endDate, area, level, index, SaveModel.timeLevel_DDL, SaveModel.interval_day, lowCode);
|
|
|
} else {
|
|
|
saveModels = elasticsearchUtil.findLineChartDateQuotaLevel0(startDate, endDate, area, level, index, SaveModel.timeLevel_DDL, SaveModel.interval_day);
|
|
|
}
|
|
|
List<JSONObject> result = new ArrayList<>();
|
|
|
if (saveModels != null) {
|
|
@ -893,19 +831,19 @@ public class StatisticsESService {
|
|
|
result.add(json);
|
|
|
}
|
|
|
|
|
|
// 排序
|
|
|
result.sort(new Comparator<JSONObject>() {
|
|
|
@Override
|
|
|
public int compare(JSONObject o1, JSONObject o2) {
|
|
|
if (o1.getString("range").compareTo(o2.getString("range")) > 0) {
|
|
|
return 1;
|
|
|
} else if (o1.getString("range").compareTo(o2.getString("range")) < 0) {
|
|
|
return -1;
|
|
|
} else {
|
|
|
return 0;
|
|
|
// 排序
|
|
|
result.sort(new Comparator<JSONObject>() {
|
|
|
@Override
|
|
|
public int compare(JSONObject o1, JSONObject o2) {
|
|
|
if (o1.getString("range").compareTo(o2.getString("range")) > 0) {
|
|
|
return 1;
|
|
|
} else if (o1.getString("range").compareTo(o2.getString("range")) < 0) {
|
|
|
return -1;
|
|
|
} else {
|
|
|
return 0;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
});
|
|
|
});
|
|
|
|
|
|
return new JSONArray(result);
|
|
|
} else {
|
|
@ -915,6 +853,7 @@ public class StatisticsESService {
|
|
|
|
|
|
/**
|
|
|
* 按周统计 折线图
|
|
|
*
|
|
|
* @param startDate
|
|
|
* @param endDate
|
|
|
* @param area
|
|
@ -1012,12 +951,11 @@ public class StatisticsESService {
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
List<SaveModel> saveModels = new ArrayList<>();
|
|
|
if (StringUtils.isNotBlank(lowCode)){
|
|
|
saveModels = elasticsearchUtil.findLineChartDateQuotaLevel1(startDate,endDate,area,level,index,SaveModel.timeLevel_DDL,SaveModel.interval_day,lowCode);
|
|
|
}else{
|
|
|
saveModels = elasticsearchUtil.findLineChartDateQuotaLevel0(startDate,endDate,area,level,index,SaveModel.timeLevel_DDL,SaveModel.interval_day);
|
|
|
if (StringUtils.isNotBlank(lowCode)) {
|
|
|
saveModels = elasticsearchUtil.findLineChartDateQuotaLevel1(startDate, endDate, area, level, index, SaveModel.timeLevel_DDL, SaveModel.interval_day, lowCode);
|
|
|
} else {
|
|
|
saveModels = elasticsearchUtil.findLineChartDateQuotaLevel0(startDate, endDate, area, level, index, SaveModel.timeLevel_DDL, SaveModel.interval_day);
|
|
|
}
|
|
|
|
|
|
if (saveModels != null) {
|
|
@ -1056,6 +994,7 @@ public class StatisticsESService {
|
|
|
|
|
|
/**
|
|
|
* 按月统计 折线图
|
|
|
*
|
|
|
* @param startDate
|
|
|
* @param endDate
|
|
|
* @param area
|
|
@ -1131,10 +1070,10 @@ public class StatisticsESService {
|
|
|
startDate = df.format(preDate.getTime());
|
|
|
}
|
|
|
List<SaveModel> saveModels = new ArrayList<>();
|
|
|
if (StringUtils.isNotBlank(lowCode)){
|
|
|
saveModels = elasticsearchUtil.findLineChartDateQuotaLevel1(startDate,endDate,area,level,index,SaveModel.timeLevel_DDL,SaveModel.interval_day,lowCode);
|
|
|
}else{
|
|
|
saveModels = elasticsearchUtil.findLineChartDateQuotaLevel0(startDate,endDate,area,level,index,SaveModel.timeLevel_DDL,SaveModel.interval_day);
|
|
|
if (StringUtils.isNotBlank(lowCode)) {
|
|
|
saveModels = elasticsearchUtil.findLineChartDateQuotaLevel1(startDate, endDate, area, level, index, SaveModel.timeLevel_DDL, SaveModel.interval_day, lowCode);
|
|
|
} else {
|
|
|
saveModels = elasticsearchUtil.findLineChartDateQuotaLevel0(startDate, endDate, area, level, index, SaveModel.timeLevel_DDL, SaveModel.interval_day);
|
|
|
}
|
|
|
|
|
|
if (saveModels != null) {
|
|
@ -2642,7 +2581,7 @@ public class StatisticsESService {
|
|
|
if (StringUtils.isBlank(lowCode)) {
|
|
|
yearsList = elasticsearchUtil.findDateQuotaLevel0(lastDate, lastDate, area, level, "1", "2", "", low_level);
|
|
|
} else {
|
|
|
yearsList = elasticsearchUtil.findDateQuotaLevel1(lastDate, lastDate, area, level, "17", "2",lowCode, "", low_level);
|
|
|
yearsList = elasticsearchUtil.findDateQuotaLevel1(lastDate, lastDate, area, level, "17", "2", lowCode, "", low_level);
|
|
|
}
|
|
|
|
|
|
Map<String, SaveModel> resultMap = new HashMap<>();
|
|
@ -3290,8 +3229,16 @@ public class StatisticsESService {
|
|
|
|
|
|
public List<Map<String, Object>> getPrescriptionAgeLowLevel(String level, String lowlevel, String area, String disease) throws Exception {
|
|
|
|
|
|
String index63 = "63"; //统计长处方总数疾病和状态维度(去重相同患者)
|
|
|
String index68 = "68"; //统计长处方年龄人数(按照患者去重)
|
|
|
|
|
|
String quotaDate = elasticsearchUtil.getQuotaTime();
|
|
|
List<SaveModel> list = elasticsearchUtil.findListDateQuotaLevel1(quotaDate, area, Integer.parseInt(level), "63", "2", lowlevel, disease);
|
|
|
List<SaveModel> list = null;
|
|
|
if (org.springframework.util.StringUtils.isEmpty(disease)) {
|
|
|
list = elasticsearchUtil.findListDateQuotaLevel1NoSlaveKey1(quotaDate, area, Integer.parseInt(level), index68, SaveModel.timeLevel_DDL, lowlevel);
|
|
|
} else {
|
|
|
list = elasticsearchUtil.findListDateQuotaLevel2NoSlaveKey1(quotaDate, area, Integer.parseInt(level), index63, SaveModel.timeLevel_DDL, lowlevel, disease);
|
|
|
}
|
|
|
Map<String, Object> map = null;
|
|
|
List<Map<String, Object>> rs = new ArrayList<>();
|
|
|
if (list.size() > 0) {
|
|
@ -3313,7 +3260,6 @@ public class StatisticsESService {
|
|
|
map.put("val", one.getResult2().longValue());
|
|
|
}
|
|
|
} else {
|
|
|
|
|
|
//统计数据为空时,自建结果集
|
|
|
List<Town> townList = null;
|
|
|
List<Hospital> hospitalList = null;
|
|
@ -3350,6 +3296,20 @@ public class StatisticsESService {
|
|
|
}
|
|
|
}
|
|
|
rs.add(map);
|
|
|
Collections.sort(rs, new Comparator<Map<String, Object>>() {
|
|
|
public int compare(Map<String, Object> o1, Map<String, Object> o2) {
|
|
|
Integer map1value = Integer.valueOf(String.valueOf(o1.get("val")));
|
|
|
Integer map2value = Integer.valueOf(String.valueOf(o2.get("val")));
|
|
|
|
|
|
if (map1value - map2value > 0) {
|
|
|
return -1;
|
|
|
} else if (map1value - map2value < 0) {
|
|
|
return 1;
|
|
|
} else {
|
|
|
return 0;
|
|
|
}
|
|
|
}
|
|
|
});
|
|
|
return rs;
|
|
|
}
|
|
|
|
|
@ -3423,7 +3383,7 @@ public class StatisticsESService {
|
|
|
//因为一个处方可能有多个疾病状态 所以分开2个指标
|
|
|
String index58 = "58";//统计长处方总数疾病和状态维度
|
|
|
String index64 = "64";//统计长处方总数状态维度
|
|
|
Map<String,Map<String, Object>> rs = new LinkedHashMap<>();
|
|
|
Map<String, Map<String, Object>> rs = new LinkedHashMap<>();
|
|
|
|
|
|
Calendar dd = Calendar.getInstance();//定义日期实例
|
|
|
Date endDate = new Date();
|
|
@ -3436,7 +3396,7 @@ public class StatisticsESService {
|
|
|
mc.put("month", date);
|
|
|
mc.put("count", 0);
|
|
|
dd.add(Calendar.MONTH, -1);
|
|
|
rs.put(date,mc);
|
|
|
rs.put(date, mc);
|
|
|
}
|
|
|
String startTime = DateUtil.dateToStr(dd.getTime(), "YYYY-MM-dd HH:mm:ss");
|
|
|
String endTime = DateUtil.dateToStr(new Date(), "YYYY-MM-dd HH:mm:ss");
|
|
@ -3458,14 +3418,14 @@ public class StatisticsESService {
|
|
|
}
|
|
|
}
|
|
|
//把数据设置到初始化的Map里面去
|
|
|
for(SaveModel saveModel:resultList){
|
|
|
for (SaveModel saveModel : resultList) {
|
|
|
String monthKeyEs = "";
|
|
|
if (saveModel.getQuotaDate() != null) {
|
|
|
monthKeyEs = DateUtil.changeQuotaDate(saveModel.getQuotaDate());
|
|
|
}
|
|
|
if (StringUtils.isNotBlank(monthKeyEs) && rs.containsKey(monthKeyEs)) {
|
|
|
Map<String, Object> oneMc = rs.get(monthKeyEs);
|
|
|
oneMc.put("count",saveModel.getResult2());
|
|
|
oneMc.put("count", saveModel.getResult2());
|
|
|
}
|
|
|
}
|
|
|
|
|
@ -3573,6 +3533,20 @@ public class StatisticsESService {
|
|
|
|
|
|
rs.add(map);
|
|
|
}
|
|
|
Collections.sort(rs, new Comparator<Map<String, Object>>() {
|
|
|
public int compare(Map<String, Object> o1, Map<String, Object> o2) {
|
|
|
Integer map1value = Integer.valueOf(String.valueOf(o1.get("val")));
|
|
|
Integer map2value = Integer.valueOf(String.valueOf(o2.get("val")));
|
|
|
|
|
|
if (map1value - map2value > 0) {
|
|
|
return -1;
|
|
|
} else if (map1value - map2value < 0) {
|
|
|
return 1;
|
|
|
} else {
|
|
|
return 0;
|
|
|
}
|
|
|
}
|
|
|
});
|
|
|
return rs;
|
|
|
}
|
|
|
|
|
@ -3601,17 +3575,24 @@ public class StatisticsESService {
|
|
|
* @return
|
|
|
*/
|
|
|
public Map<String, Object> getPrescriptionAgeTotal(String level, String area, String disease) throws Exception {
|
|
|
//统计长处方总数疾病和状态维度(去重相同患者)
|
|
|
String index = "63";
|
|
|
String index63 = "63"; //统计长处方总数疾病和状态维度(去重相同患者)
|
|
|
String index68 = "68"; //统计长处方年龄人数(按照患者去重)
|
|
|
Map<String, Object> map = new HashMap<>();
|
|
|
String quotaDate = elasticsearchUtil.getQuotaTime();
|
|
|
//统计年龄分布
|
|
|
List<SaveModel> list = elasticsearchUtil.findOneDateQuotaLevel2(quotaDate, area, Integer.parseInt(level), index, "2", disease);
|
|
|
|
|
|
//总数量
|
|
|
SaveModel saveModel = elasticsearchUtil.findOneDateQuotaLevel0(quotaDate, area, Integer.parseInt(level), index, "2");
|
|
|
List<SaveModel> list = null;
|
|
|
SaveModel saveModel = null;
|
|
|
if (org.springframework.util.StringUtils.isEmpty(disease)) {
|
|
|
list = elasticsearchUtil.findListDateQuotaLevel1(quotaDate, area, Integer.parseInt(level), index68, SaveModel.timeLevel_DDL, null, null);
|
|
|
//总数量
|
|
|
saveModel = elasticsearchUtil.findOneDateQuotaLevel1NoSlaveKey1(quotaDate, area, Integer.parseInt(level), index68, SaveModel.timeLevel_DDL);
|
|
|
} else {
|
|
|
list = elasticsearchUtil.findListDateQuotaLevel2(quotaDate, area, Integer.parseInt(level), index63, SaveModel.timeLevel_DDL, null, null, disease);
|
|
|
//总数量
|
|
|
saveModel = elasticsearchUtil.findOneDateQuotaLevel2NoSlaveKey1(quotaDate, area, Integer.parseInt(level), index63, SaveModel.timeLevel_DDL, disease);
|
|
|
}
|
|
|
|
|
|
Double num = saveModel.getResult2();
|
|
|
Map<String, Object> map = new HashMap<>();
|
|
|
DecimalFormat decimalFormat = new DecimalFormat("0.00");//构造方法的字符格式这里如果小数不足2位,会以0补足.
|
|
|
Double ageRate = list.get(0).getResult2() / num;
|
|
|
map.put("0ageRate", decimalFormat.format(ageRate));
|
|
@ -3638,7 +3619,9 @@ public class StatisticsESService {
|
|
|
}
|
|
|
|
|
|
public Map<String, Object> getPrescriptionDispatchingTotal(int level, String area, String disease) throws Exception {
|
|
|
String index = "62";
|
|
|
String index62 = "62";//统计长处方配送方式和疾病维度
|
|
|
String index67 = "67";//统计长处方配送方式维度
|
|
|
|
|
|
SaveModel selt = null;//自取集合
|
|
|
SaveModel delivery = null;//物流配送集合
|
|
|
SaveModel healthDoctor = null;//健管师配送集合
|
|
@ -3646,18 +3629,18 @@ public class StatisticsESService {
|
|
|
//type二级指标,disease一级指标
|
|
|
if (StringUtils.isNotBlank(disease)) {
|
|
|
//自取
|
|
|
selt = elasticsearchUtil.findOneDateQuotaLevel2(quotaTime, area, level, index, "2", disease, "1");
|
|
|
selt = elasticsearchUtil.findOneDateQuotaLevel2(quotaTime, area, level, index62, SaveModel.timeLevel_DDL, disease, "1");
|
|
|
//物流配送
|
|
|
delivery = elasticsearchUtil.findOneDateQuotaLevel2(quotaTime, area, level, index, "2", disease, "2");
|
|
|
delivery = elasticsearchUtil.findOneDateQuotaLevel2(quotaTime, area, level, index62, SaveModel.timeLevel_DDL, disease, "2");
|
|
|
//健管师配送
|
|
|
healthDoctor = elasticsearchUtil.findOneDateQuotaLevel2(quotaTime, area, level, index, "2", disease, "3");
|
|
|
healthDoctor = elasticsearchUtil.findOneDateQuotaLevel2(quotaTime, area, level, index62, SaveModel.timeLevel_DDL, disease, "3");
|
|
|
} else {
|
|
|
//自取
|
|
|
selt = elasticsearchUtil.findOneDateQuotaLevel2NoSlaveKey1(quotaTime, area, level, index, SaveModel.timeLevel_DDL, "1");
|
|
|
selt = elasticsearchUtil.findOneDateQuotaLevel1(quotaTime, area, level, index67, SaveModel.timeLevel_DDL, "1");
|
|
|
//物流配送
|
|
|
delivery = elasticsearchUtil.findOneDateQuotaLevel2NoSlaveKey1(quotaTime, area, level, index, SaveModel.timeLevel_DDL, "2");
|
|
|
delivery = elasticsearchUtil.findOneDateQuotaLevel1(quotaTime, area, level, index67, SaveModel.timeLevel_DDL, "2");
|
|
|
//健管师配送
|
|
|
healthDoctor = elasticsearchUtil.findOneDateQuotaLevel2NoSlaveKey1(quotaTime, area, level, index, SaveModel.timeLevel_DDL, "3");
|
|
|
healthDoctor = elasticsearchUtil.findOneDateQuotaLevel1(quotaTime, area, level, index67, SaveModel.timeLevel_DDL, "3");
|
|
|
|
|
|
}
|
|
|
|
|
@ -3693,6 +3676,8 @@ public class StatisticsESService {
|
|
|
* @return
|
|
|
*/
|
|
|
public List<Map<String, Object>> getPrescriptionDispatchingHistogram(int level, String area, String disease, String type) throws Exception {
|
|
|
String index62 = "62";//统计长处方配送方式和疾病维度
|
|
|
String index67 = "67";//统计长处方配送方式维度
|
|
|
|
|
|
List<Map<String, Object>> rs = new ArrayList<>();
|
|
|
Calendar dd = Calendar.getInstance();//定义日期实例
|
|
@ -3714,9 +3699,9 @@ public class StatisticsESService {
|
|
|
|
|
|
List<SaveModel> resultList = new ArrayList<>();
|
|
|
if (StringUtils.isNotBlank(disease)) {
|
|
|
resultList = elasticsearchUtil.findLineChartDateQuotaLevel2(startTime, endTime, area, level, "62", "2", "3", disease, type);
|
|
|
resultList = elasticsearchUtil.findLineChartDateQuotaLevel2(startTime, endTime, area, level, index62, SaveModel.timeLevel_DDL, SaveModel.interval_month, disease, type);
|
|
|
} else {
|
|
|
resultList = elasticsearchUtil.findLineChartDateQuotaLevel2NoSlaveKey1(startTime, endTime, area, level, "62", "2", "3", type);
|
|
|
resultList = elasticsearchUtil.findLineChartDateQuotaLevel1(startTime, endTime, area, level, index67, SaveModel.timeLevel_DDL, SaveModel.interval_month, type);
|
|
|
}
|
|
|
|
|
|
for (Map<String, Object> m : rs) {
|
|
@ -3745,17 +3730,19 @@ public class StatisticsESService {
|
|
|
*/
|
|
|
public List<Map<String, Object>> getPrescriptionDispatchingLowLevel(int level, String lowlevel, String area, String disease, String type) throws Exception {
|
|
|
|
|
|
String index = "62";
|
|
|
String index62 = "62";//统计长处方配送方式和疾病维度
|
|
|
String index67 = "67";//统计长处方配送方式维度
|
|
|
|
|
|
String quotaDate = elasticsearchUtil.getQuotaTime();
|
|
|
List<SaveModel> saveModels = new ArrayList<>();
|
|
|
List<Map<String, Object>> rs = new ArrayList<>();
|
|
|
if (StringUtils.isNotBlank(disease)) {
|
|
|
//类型 1.自取,2.快递配送,3.健管师配送
|
|
|
saveModels = elasticsearchUtil.findListDateQuotaLevel2(quotaDate, area, level, index, SaveModel.timeLevel_DDL, lowlevel, disease, type);
|
|
|
saveModels = elasticsearchUtil.findListDateQuotaLevel2(quotaDate, area, level, index62, SaveModel.timeLevel_DDL, lowlevel, disease, type);
|
|
|
} else {
|
|
|
saveModels = elasticsearchUtil.findListDateQuotaLevel2NoSlaveKey1(quotaDate, area, level, index, SaveModel.timeLevel_DDL, lowlevel, type);
|
|
|
saveModels = elasticsearchUtil.findListDateQuotaLevel1(quotaDate, area, level, index67, SaveModel.timeLevel_DDL, lowlevel, type);
|
|
|
}
|
|
|
if ("5".equals(lowlevel)) {
|
|
|
if (SaveModel.teamLevel.equals(lowlevel)) {
|
|
|
translateTeamLeaderName2(saveModels);
|
|
|
}
|
|
|
Map<String, Object> map = null;
|
|
@ -3776,12 +3763,10 @@ public class StatisticsESService {
|
|
|
map.put("name", one.getTeamName());
|
|
|
}
|
|
|
map.put("val", one.getResult2().longValue());
|
|
|
rs.add(map);
|
|
|
}
|
|
|
} else {
|
|
|
|
|
|
//统计数据为空时,自建结果集
|
|
|
// List<Map<String, Object>> resultList = new ArrayList<>();
|
|
|
// resultList = getLowLevelMapKey(level, lowlevel, area);
|
|
|
List<Town> townList = null;
|
|
|
List<Hospital> hospitalList = null;
|
|
|
List<AdminTeam> adminTeams = null;
|
|
@ -3797,25 +3782,30 @@ public class StatisticsESService {
|
|
|
}
|
|
|
if (SaveModel.townLevel.equals(lowlevel)) {
|
|
|
for (Town one : townList) {
|
|
|
map = new HashMap<>();
|
|
|
map.put("code", one.getCode());
|
|
|
map.put("name", one.getName());
|
|
|
map.put("val", 0);
|
|
|
rs.add(map);
|
|
|
}
|
|
|
} else if (SaveModel.OrgLevel.equals(lowlevel)) {
|
|
|
for (Hospital one : hospitalList) {
|
|
|
map = new HashMap<>();
|
|
|
map.put("code", one.getCode());
|
|
|
map.put("name", one.getName());
|
|
|
map.put("val", 0);
|
|
|
rs.add(map);
|
|
|
}
|
|
|
} else if (SaveModel.teamLevel.equals(lowlevel)) {
|
|
|
for (AdminTeam one : adminTeams) {
|
|
|
map = new HashMap<>();
|
|
|
map.put("code", one.getLeaderCode());
|
|
|
map.put("name", one.getName());
|
|
|
map.put("val", 0);
|
|
|
rs.add(map);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
rs.add(map);
|
|
|
return rs;
|
|
|
}
|
|
|
|
|
@ -3831,14 +3821,20 @@ public class StatisticsESService {
|
|
|
* @return
|
|
|
*/
|
|
|
public List<Map<String, Object>> getPrescriptionCostLowLevel(String level, String lowlevel, String area, String disease, String type) throws Exception {
|
|
|
|
|
|
String index61 = "61";//统计长处方费用总数疾病维度
|
|
|
String index66 = "66";//费用的指标code
|
|
|
String quotaDate = elasticsearchUtil.getQuotaTime();
|
|
|
//1.总量
|
|
|
List<SaveModel> list = elasticsearchUtil.findListDateQuotaLevel1(quotaDate, area, Integer.parseInt(level), "61", "2", lowlevel, disease);
|
|
|
List<SaveModel> costList = null;
|
|
|
//获取费用
|
|
|
if (org.springframework.util.StringUtils.isEmpty(disease)) {
|
|
|
costList = elasticsearchUtil.findListDateQuotaLevel0(quotaDate, area, Integer.parseInt(level), index66, SaveModel.timeLevel_DDL, lowlevel);
|
|
|
} else {
|
|
|
costList = elasticsearchUtil.findListDateQuotaLevel1(quotaDate, area, Integer.parseInt(level), index61, SaveModel.timeLevel_DDL, lowlevel, disease);
|
|
|
}
|
|
|
Map<String, Object> map = null;
|
|
|
List<Map<String, Object>> countList = new ArrayList<>();
|
|
|
if ("1".equals(type)) {
|
|
|
for (SaveModel one : list) {
|
|
|
for (SaveModel one : costList) {
|
|
|
map = new HashMap<>();
|
|
|
if (SaveModel.townLevel.equals(lowlevel)) {
|
|
|
map.put("code", one.getTown());
|
|
@ -3855,33 +3851,50 @@ public class StatisticsESService {
|
|
|
}
|
|
|
} else {
|
|
|
//2.平均值
|
|
|
//去重获取总人数,计算人均费用
|
|
|
String sql = "";
|
|
|
for (SaveModel one : list) {
|
|
|
sql = " select count(DISTINCT(s.patient)) as num from wlyy_prescription_pay p left join wlyy_prescription s on p.prescription_code = s. CODE ";
|
|
|
sql += " and p.trace_time <= " + one.getQuotaDate();
|
|
|
Map<String, Object> count = jdbcTemplate.queryForMap(sql);
|
|
|
//费用list转map
|
|
|
|
|
|
for (SaveModel one : costList) {
|
|
|
String avg = "0.0";
|
|
|
map = new HashMap<>();
|
|
|
if (SaveModel.townLevel.equals(lowlevel)) {
|
|
|
map.put("code", one.getTown());
|
|
|
map.put("name", one.getTownName());
|
|
|
if (one != null&&one.getResult2()>0) {
|
|
|
avg = decimalFormat.format(one.getResult1() / (one.getResult2()*100));
|
|
|
}
|
|
|
map.put("val", avg);
|
|
|
} else if (SaveModel.OrgLevel.equals(lowlevel)) {
|
|
|
map.put("code", one.getHospital());
|
|
|
map.put("name", one.getHospitalName());
|
|
|
if (one != null&&one.getResult2()>0) {
|
|
|
avg = decimalFormat.format(one.getResult1() / (one.getResult2()*100));
|
|
|
}
|
|
|
map.put("val", avg);
|
|
|
} else if (SaveModel.teamLevel.equals(lowlevel)) {
|
|
|
map.put("code", one.getTeam());
|
|
|
map.put("name", one.getTeamName());
|
|
|
if (one != null&&one.getResult2()>0) {
|
|
|
avg = decimalFormat.format(one.getResult1() / (one.getResult2()*100));
|
|
|
}
|
|
|
map.put("val", avg);
|
|
|
}
|
|
|
Long num = (Long) count.get("num");
|
|
|
String avg = "0.0";
|
|
|
if (num != 0) {
|
|
|
|
|
|
avg = decimalFormat.format(one.getResult1() / num);
|
|
|
}
|
|
|
map.put("val", avg);
|
|
|
countList.add(map);
|
|
|
}
|
|
|
}
|
|
|
Collections.sort(countList, new Comparator<Map<String, Object>>() {
|
|
|
public int compare(Map<String, Object> o1, Map<String, Object> o2) {
|
|
|
Double map1value = Double.valueOf(String.valueOf(o1.get("val")));
|
|
|
Double map2value = Double.valueOf(String.valueOf(o2.get("val")));
|
|
|
|
|
|
if (map1value - map2value > 0) {
|
|
|
return -1;
|
|
|
} else if (map1value - map2value < 0) {
|
|
|
return 1;
|
|
|
} else {
|
|
|
return 0;
|
|
|
}
|
|
|
}
|
|
|
});
|
|
|
return countList;
|
|
|
}
|
|
|
|
|
@ -3896,80 +3909,66 @@ public class StatisticsESService {
|
|
|
* @param type 1.按日,2.按周,3.按月
|
|
|
*/
|
|
|
public List<Map<String, Object>> getPrescriptionCostAvgLine(String level, String area, String disease, String startDate, String endDate, String type) throws Exception {
|
|
|
String index61 = "61";//统计长处方费用总数疾病维度
|
|
|
String index66 = "66";//费用的指标code
|
|
|
|
|
|
List<SaveModel> costList = null;
|
|
|
|
|
|
startDate = elasticsearchUtil.changeTime(startDate += " 00:00:00");
|
|
|
endDate = elasticsearchUtil.changeTime(endDate += " 23:59:59");
|
|
|
List<SaveModel> list = elasticsearchUtil.findLineChartDateQuotaLevel1(startDate, endDate, area, Integer.parseInt(level), "61", "2", type, disease);
|
|
|
String sql = "";
|
|
|
Map<String, Object> map = null;
|
|
|
List<Map<String, Object>> countList = new ArrayList<>();
|
|
|
for (SaveModel one : list) {
|
|
|
sql = " select count(DISTINCT(s.patient)) as num from wlyy_prescription_pay p left join wlyy_prescription s on p.prescription_code = s. CODE ";
|
|
|
sql += " and p.trace_time <= '" + dateFormat3.format(one.getQuotaDate())+"'";
|
|
|
if ( SaveModel.cityLevel.equals(level)) {
|
|
|
sql += " and LEFT(s.hospital,4) ='" + area.substring(0,4) + "' ";
|
|
|
}else if (SaveModel.townLevel.equals(level) ) {
|
|
|
sql += " and LEFT(s.hospital,6) ='" + area + "' ";
|
|
|
} else if (SaveModel.OrgLevel.equals(level)) {
|
|
|
sql += " and s.hospital ='" + area + "' ";
|
|
|
} else if (SaveModel.teamLevel.equals(level)) {
|
|
|
sql += " and s.admin_team_id ='" + area + "'";
|
|
|
//获取费用
|
|
|
if (org.springframework.util.StringUtils.isEmpty(disease)) {
|
|
|
costList = elasticsearchUtil.findLineChartDateQuotaLevel0(startDate, endDate, area, Integer.parseInt(level), index66, SaveModel.timeLevel_ZL, type);
|
|
|
} else {
|
|
|
costList = elasticsearchUtil.findLineChartDateQuotaLevel1(startDate, endDate, area, Integer.parseInt(level), index61, SaveModel.timeLevel_ZL, type, disease);
|
|
|
}
|
|
|
|
|
|
List<Map<String, Object>> countList = new ArrayList<>(); //map date avg
|
|
|
for (SaveModel one : costList) {
|
|
|
Map<String, Object> map = new HashMap<>();
|
|
|
//获取key
|
|
|
String key = null;
|
|
|
if (SaveModel.interval_day.equals(type)) {
|
|
|
key = dateFormat.format(one.getQuotaDate());
|
|
|
} else if (SaveModel.interval_week.equals(type)) {
|
|
|
key = dateFormat.format(one.getQuotaDate());
|
|
|
} else {
|
|
|
key = DateUtil.getMonth(dateFormat.format(one.getQuotaDate()));
|
|
|
}
|
|
|
Map<String, Object> count = jdbcTemplate.queryForMap(sql);
|
|
|
Long num = (Long) count.get("num");
|
|
|
String avg = "0.0";
|
|
|
if (num != 0) {
|
|
|
avg = decimalFormat.format(one.getResult1() / num);
|
|
|
if (one.getResult2()!=0) {
|
|
|
avg = decimalFormat.format(one.getResult1() / (one.getResult2()*100));
|
|
|
}
|
|
|
map = new HashMap<>();
|
|
|
map.put("avg", avg);
|
|
|
if ("1".equals(type)) {
|
|
|
map.put("date", dateFormat.format(one.getQuotaDate()));
|
|
|
map.put("val", avg);
|
|
|
map.put("date", key);
|
|
|
|
|
|
} else if ("2".equals(type)) {
|
|
|
map.put("date", DateUtil.getWeekOfMonth(dateFormat.format(one.getQuotaDate())));
|
|
|
} else {
|
|
|
map.put("date", DateUtil.getMonth(dateFormat.format(one.getQuotaDate())));
|
|
|
}
|
|
|
countList.add(map);
|
|
|
}
|
|
|
return countList;
|
|
|
}
|
|
|
|
|
|
public Map<String, Object> getPrescriptionCost(String level, String area, String disease) throws Exception {
|
|
|
SaveModel saveModel = null;
|
|
|
String index = "61";//费用的指标code
|
|
|
SaveModel costSaveModel = null;
|
|
|
String index61 = "61";//统计长处方费用总数疾病维度
|
|
|
String index66 = "66";//费用的指标code
|
|
|
String quotaDate = elasticsearchUtil.getQuotaTime();
|
|
|
if (StringUtils.isNotEmpty(disease)) {
|
|
|
saveModel = elasticsearchUtil.findOneDateQuotaLevel1(quotaDate, area, Integer.parseInt(level), index, "2", disease);
|
|
|
costSaveModel = elasticsearchUtil.findOneDateQuotaLevel1(quotaDate, area, Integer.parseInt(level), index61, "2", disease);
|
|
|
} else {
|
|
|
saveModel = elasticsearchUtil.findOneDateQuotaLevel1NoSlaveKey1(quotaDate, area, Integer.parseInt(level), index, "2");
|
|
|
}
|
|
|
//获取人数
|
|
|
String sql = " select count(DISTINCT(s.patient)) as num from wlyy_prescription_pay p left join wlyy_prescription s on p.prescription_code = s. CODE ";
|
|
|
sql += " and p.create_time <= '" + quotaDate+"'";
|
|
|
if ( SaveModel.cityLevel.equals(level)) {
|
|
|
sql += " and LEFT(s.hospital,4) ='" + area.substring(0,4) + "' ";
|
|
|
}else if (SaveModel.townLevel.equals(level) ) {
|
|
|
sql += " and LEFT(s.hospital,6) ='" + area + "' ";
|
|
|
} else if (SaveModel.OrgLevel.equals(level)) {
|
|
|
sql += " and s.hospital ='" + area + "' ";
|
|
|
} else if (SaveModel.teamLevel.equals(level)) {
|
|
|
sql += " and s.admin_team_id ='" + area + "' ";
|
|
|
costSaveModel = elasticsearchUtil.findOneDateQuotaLevel0(quotaDate, area, Integer.parseInt(level), index66, "2");
|
|
|
}
|
|
|
Map<String, Object> count = jdbcTemplate.queryForMap(sql);
|
|
|
Long num = (Long) count.get("num");
|
|
|
|
|
|
Map<String, Object> rs = new HashedMap();
|
|
|
BigDecimal s = BigDecimal.valueOf(saveModel.getResult1());
|
|
|
BigDecimal s = BigDecimal.valueOf(costSaveModel.getResult1());
|
|
|
BigDecimal a = null;
|
|
|
|
|
|
if (num == 0) {
|
|
|
if (costSaveModel.getResult2() == 0.0D) {
|
|
|
a = BigDecimal.valueOf(0.0);
|
|
|
} else {
|
|
|
a = BigDecimal.valueOf(saveModel.getResult1().longValue() / num);
|
|
|
a = BigDecimal.valueOf(costSaveModel.getResult1().longValue() / costSaveModel.getResult2().longValue());
|
|
|
}
|
|
|
rs.put("sum", s.divide(new BigDecimal(100)).setScale(2, BigDecimal.ROUND_HALF_UP));//费用总计 单位是0 所以除以100四舍五入
|
|
|
rs.put("avg", a.divide((new BigDecimal(100))).setScale(2, BigDecimal.ROUND_HALF_UP));//人均费用 单位是0 所以除以100四舍五入
|
|
|
rs.put("sum", s.divide(new BigDecimal(100)).setScale(2, BigDecimal.ROUND_HALF_UP));//费用总计 单位是分 所以除以100四舍五入
|
|
|
rs.put("avg", a.divide((new BigDecimal(100))).setScale(2, BigDecimal.ROUND_HALF_UP));//人均费用 单位是分 所以除以100四舍五入
|
|
|
return rs;
|
|
|
}
|
|
|
|