|
@ -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();
|
|
@ -2334,7 +2271,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<>();
|
|
@ -2995,7 +2932,6 @@ public class StatisticsESService {
|
|
|
map.put("val", one.getResult2().longValue());
|
|
|
}
|
|
|
} else {
|
|
|
|
|
|
//统计数据为空时,自建结果集
|
|
|
List<Town> townList = null;
|
|
|
List<Hospital> hospitalList = null;
|
|
@ -3105,7 +3041,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();
|
|
@ -3118,7 +3054,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");
|
|
@ -3140,14 +3076,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());
|
|
|
}
|
|
|
}
|
|
|
|
|
@ -3283,17 +3219,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));
|
|
@ -3320,7 +3263,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;//健管师配送集合
|
|
@ -3328,18 +3273,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");
|
|
|
|
|
|
}
|
|
|
|
|
@ -3375,6 +3320,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();//定义日期实例
|
|
@ -3396,9 +3343,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) {
|
|
@ -3427,17 +3374,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;
|
|
@ -3513,14 +3462,24 @@ 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 index63 = "63";//统计长处方年龄疾病人数(按照患者去重)
|
|
|
String index68 = "68";//统计长处方年龄人数(按照患者去重)
|
|
|
String quotaDate = elasticsearchUtil.getQuotaTime();
|
|
|
//1.总量
|
|
|
List<SaveModel> list = elasticsearchUtil.findListDateQuotaLevel1(quotaDate, area, Integer.parseInt(level), "61", "2", lowlevel, disease);
|
|
|
List<SaveModel> costList = null;
|
|
|
Map<String, SaveModel> costMap = new HashedMap();
|
|
|
List<SaveModel> numList = 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());
|
|
@ -3537,30 +3496,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) {
|
|
|
if (SaveModel.townLevel.equals(lowlevel)) {
|
|
|
costMap.put(one.getTown(), one);
|
|
|
} else if (SaveModel.OrgLevel.equals(lowlevel)) {
|
|
|
costMap.put(one.getHospital(), one);
|
|
|
} else if (SaveModel.teamLevel.equals(lowlevel)) {
|
|
|
costMap.put(one.getTeam(), one);
|
|
|
}
|
|
|
}
|
|
|
//获取人数
|
|
|
if (org.springframework.util.StringUtils.isEmpty(disease)) {
|
|
|
numList = elasticsearchUtil.findListDateQuotaLevel1NoSlaveKey1(quotaDate, area, Integer.parseInt(level), index68, SaveModel.timeLevel_DDL, lowlevel);
|
|
|
} else {
|
|
|
numList = elasticsearchUtil.findListDateQuotaLevel2NoSlaveKey1(quotaDate, area, Integer.parseInt(level), index63, SaveModel.timeLevel_DDL, lowlevel, disease);
|
|
|
}
|
|
|
for (SaveModel one : numList) {
|
|
|
String avg = "0.0";
|
|
|
map = new HashMap<>();
|
|
|
if (SaveModel.townLevel.equals(lowlevel)) {
|
|
|
map.put("code", one.getTown());
|
|
|
map.put("name", one.getTownName());
|
|
|
SaveModel costOne = costMap.get(one.getTown());
|
|
|
if (costOne != null) {
|
|
|
avg = decimalFormat.format(costOne.getResult1() / one.getResult1());
|
|
|
}
|
|
|
map.put("val", avg);
|
|
|
} else if (SaveModel.OrgLevel.equals(lowlevel)) {
|
|
|
map.put("code", one.getHospital());
|
|
|
map.put("name", one.getHospitalName());
|
|
|
SaveModel costOne = costMap.get(one.getHospital());
|
|
|
if (costOne != null) {
|
|
|
avg = decimalFormat.format(costOne.getResult1() / one.getResult1());
|
|
|
}
|
|
|
map.put("val", avg);
|
|
|
} else if (SaveModel.teamLevel.equals(lowlevel)) {
|
|
|
map.put("code", one.getTeam());
|
|
|
map.put("name", one.getTeamName());
|
|
|
SaveModel costOne = costMap.get(one.getTeam());
|
|
|
if (costOne != null) {
|
|
|
avg = decimalFormat.format(costOne.getResult1() / one.getResult1());
|
|
|
}
|
|
|
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);
|
|
|
}
|
|
|
}
|
|
@ -3578,80 +3557,100 @@ 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
|
|
|
String index63 = "63";//统计长处方年龄疾病人数(按照患者去重)
|
|
|
String index68 = "68";//统计长处方年龄人数(按照患者去重)
|
|
|
|
|
|
List<SaveModel> costList = null;
|
|
|
Map<String, SaveModel> costMap = new HashedMap();
|
|
|
List<SaveModel> numList = 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 + "'";
|
|
|
}
|
|
|
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 (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);
|
|
|
}
|
|
|
//获取人数
|
|
|
if (org.springframework.util.StringUtils.isEmpty(disease)) {
|
|
|
numList = elasticsearchUtil.findLineChartDateQuotaLevel1NoSlaveKey1(startDate, endDate, area, Integer.parseInt(level), index68, SaveModel.timeLevel_ZL, type);
|
|
|
} else {
|
|
|
numList = elasticsearchUtil.findLineChartDateQuotaLevel2NoSlaveKey1(startDate, endDate, area, Integer.parseInt(level), index63, SaveModel.timeLevel_ZL, type, disease);
|
|
|
}
|
|
|
//费用list转map
|
|
|
for (SaveModel one : costList) {
|
|
|
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 = new HashMap<>();
|
|
|
map.put("avg", avg);
|
|
|
if ("1".equals(type)) {
|
|
|
map.put("date", dateFormat.format(one.getQuotaDate()));
|
|
|
costMap.put(key, one);
|
|
|
}
|
|
|
|
|
|
} else if ("2".equals(type)) {
|
|
|
map.put("date", DateUtil.getWeekOfMonth(dateFormat.format(one.getQuotaDate())));
|
|
|
List<Map<String, Object>> countList = new ArrayList<>(); //map date avg
|
|
|
for (SaveModel one : numList) {
|
|
|
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 {
|
|
|
map.put("date", DateUtil.getMonth(dateFormat.format(one.getQuotaDate())));
|
|
|
key = DateUtil.getMonth(dateFormat.format(one.getQuotaDate()));
|
|
|
}
|
|
|
SaveModel costOne = costMap.get(key);
|
|
|
String avg = "0.0";
|
|
|
if (costOne != null) {
|
|
|
avg = decimalFormat.format(one.getResult1() / costOne.getResult1());
|
|
|
}
|
|
|
map.put("val", avg);
|
|
|
map.put("date", key);
|
|
|
|
|
|
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;
|
|
|
SaveModel numSaveModel = null;
|
|
|
String index61 = "61";//统计长处方费用总数疾病维度
|
|
|
String index66 = "66";//费用的指标code
|
|
|
String index63 = "63";//统计长处方年龄疾病人数(按照患者去重)
|
|
|
String index68 = "68";//统计长处方年龄人数(按照患者去重)
|
|
|
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");
|
|
|
costSaveModel = elasticsearchUtil.findOneDateQuotaLevel0(quotaDate, area, Integer.parseInt(level), index66, "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 + "' ";
|
|
|
if (StringUtils.isNotEmpty(disease)) {
|
|
|
numSaveModel = elasticsearchUtil.findOneDateQuotaLevel2NoSlaveKey1(quotaDate, area, Integer.parseInt(level), index63, "2", disease);
|
|
|
} else {
|
|
|
numSaveModel = elasticsearchUtil.findOneDateQuotaLevel1NoSlaveKey1(quotaDate, area, Integer.parseInt(level), index68, "2");
|
|
|
}
|
|
|
Map<String, Object> count = jdbcTemplate.queryForMap(sql);
|
|
|
Long num = (Long) count.get("num");
|
|
|
|
|
|
Long num = numSaveModel.getResult1().longValue();
|
|
|
Map<String, Object> rs = new HashedMap();
|
|
|
BigDecimal s = BigDecimal.valueOf(saveModel.getResult1());
|
|
|
BigDecimal s = BigDecimal.valueOf(costSaveModel.getResult1());
|
|
|
BigDecimal a = null;
|
|
|
|
|
|
if (num == 0) {
|
|
|
a = BigDecimal.valueOf(0.0);
|
|
|
} else {
|
|
|
a = BigDecimal.valueOf(saveModel.getResult1().longValue() / num);
|
|
|
a = BigDecimal.valueOf(costSaveModel.getResult1().longValue() / num);
|
|
|
}
|
|
|
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;
|
|
|
}
|
|
|
|