|
@ -21,6 +21,7 @@ import io.searchbox.client.JestClient;
|
|
|
import io.searchbox.core.Bulk;
|
|
|
import io.searchbox.core.BulkResult;
|
|
|
import io.searchbox.core.Index;
|
|
|
import org.apache.commons.collections.ArrayStack;
|
|
|
import org.apache.commons.collections.map.HashedMap;
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
import org.json.JSONArray;
|
|
@ -92,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,"","");
|
|
|
// }
|
|
|
|
|
|
|
|
|
/**
|
|
|
* 获取时间范围内按间隔统计指标增量
|
|
|
*
|
|
@ -500,42 +438,45 @@ public class StatisticsESService {
|
|
|
|
|
|
/**
|
|
|
* 缴费和未交费的人数
|
|
|
*
|
|
|
* @param endDate
|
|
|
* @param area
|
|
|
* @param level
|
|
|
* @return
|
|
|
* @throws Exception
|
|
|
*/
|
|
|
public JSONArray getPayPremiums(String endDate, String area, int level)throws Exception{
|
|
|
public JSONArray getPayPremiums(String endDate, String area, int level) throws Exception {
|
|
|
//已缴费
|
|
|
SaveModel paidSaveModel = elasticsearchUtil.findOneDateQuotaLevel0(endDate,endDate,area,level,"1","2");
|
|
|
SaveModel paidSaveModel = elasticsearchUtil.findOneDateQuotaLevel0(endDate, endDate, area, level, "1", "2");
|
|
|
//未交费
|
|
|
SaveModel noPaySaveModel = elasticsearchUtil.findOneDateQuotaLevel0(endDate,endDate,area,level,"14","2");
|
|
|
SaveModel noPaySaveModel = elasticsearchUtil.findOneDateQuotaLevel0(endDate, endDate, area, level, "14", "2");
|
|
|
|
|
|
List<Map<String, Object>> resultList = new ArrayList<>();
|
|
|
DecimalFormat df = new DecimalFormat("0.0000");
|
|
|
long paidTotal = paidSaveModel.getResult2().longValue();
|
|
|
Map<String,Object> map1 = new HashedMap();
|
|
|
Map<String, Object> map1 = new HashedMap();
|
|
|
|
|
|
long noPayTotal = noPaySaveModel.getResult2().longValue();
|
|
|
Map<String,Object> map2 = new HashedMap();
|
|
|
Map<String, Object> map2 = new HashedMap();
|
|
|
|
|
|
//求签约总数
|
|
|
long totalNum = paidTotal+noPayTotal;
|
|
|
long totalNum = paidTotal + noPayTotal;
|
|
|
|
|
|
map1.put("code","1");
|
|
|
map1.put("amount",paidTotal);
|
|
|
map1.put("name","已缴费人数");
|
|
|
map1.put("code", "1");
|
|
|
map1.put("amount", paidTotal);
|
|
|
map1.put("name", "已缴费人数");
|
|
|
double rateG = (paidTotal > 0 ? paidTotal * 1.0000 / totalNum * 100 : 0);
|
|
|
map1.put("rate", df.format(rateG));;
|
|
|
map1.put("rate", df.format(rateG));
|
|
|
;
|
|
|
map1.put("rateString", paidTotal + "/" + totalNum);
|
|
|
resultList.add(map1);
|
|
|
|
|
|
map2.put("code","0");
|
|
|
map2.put("amount",noPayTotal);
|
|
|
map2.put("name","未缴费人数");
|
|
|
map2.put("code", "0");
|
|
|
map2.put("amount", noPayTotal);
|
|
|
map2.put("name", "未缴费人数");
|
|
|
double rateG2 = (noPayTotal > 0 ? noPayTotal * 1.0000 / totalNum * 100 : 0);
|
|
|
map2.put("rate", df.format(rateG2));;
|
|
|
map2.put("rate", df.format(rateG2));
|
|
|
;
|
|
|
map2.put("rateString", noPayTotal + "/" + totalNum);
|
|
|
resultList.add(map2);
|
|
|
|
|
@ -685,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", 1,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();
|
|
@ -815,11 +756,11 @@ public class StatisticsESService {
|
|
|
* @return
|
|
|
*/
|
|
|
public JSONObject getDateTotal(String startDate, String endDate, int interval, String area, int level, String index, String lowCode, String year) throws Exception {
|
|
|
|
|
|
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
|
|
|
int taskNum = 0;
|
|
|
JSONObject json = new JSONObject();
|
|
|
|
|
|
if (level < 5 && org.springframework.util.StringUtils.isEmpty(lowCode)) {
|
|
|
if (level < Integer.valueOf(SaveModel.townLevel) && org.springframework.util.StringUtils.isEmpty(lowCode)) {
|
|
|
|
|
|
PopulationBase peopleNum = getPopulationBase(area, year);
|
|
|
if (peopleNum != null) {
|
|
@ -840,23 +781,333 @@ public class StatisticsESService {
|
|
|
}
|
|
|
|
|
|
json.put("taskNum", taskNum);
|
|
|
List<SaveModel> list = null;
|
|
|
if (StringUtils.isNotEmpty(lowCode)) {
|
|
|
//一级维度
|
|
|
list = elasticsearchUtil.findLineChartDateQuotaLevel1(startDate, endDate, area, level, index, "2", interval + "", lowCode);
|
|
|
} else {
|
|
|
list = elasticsearchUtil.findLineChartDateQuotaLevel0(startDate, endDate, area, level, index, "2", interval + "");
|
|
|
if (interval == 1) {
|
|
|
JSONArray jsonArray = dateTotalStatistics(startDate, endDate, area, level, index, lowCode);
|
|
|
json.put("data", jsonArray);
|
|
|
return json;
|
|
|
} else if (interval == 2) {
|
|
|
JSONArray jsonArray = weekTotalStatistics(startDate, endDate, area, level, index, lowCode);
|
|
|
json.put("data", jsonArray);
|
|
|
return json;
|
|
|
} else if (interval == 3) {
|
|
|
JSONArray jsonArray = monthTotalStatistics(startDate, endDate, area, level, index, lowCode);
|
|
|
json.put("data", jsonArray);
|
|
|
return json;
|
|
|
}
|
|
|
return json;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 总体分析 折线图 绑定微信 按日
|
|
|
*
|
|
|
* @param startDate
|
|
|
* @param endDate
|
|
|
* @param area
|
|
|
* @param level
|
|
|
* @param index
|
|
|
* @param lowCode
|
|
|
* @return
|
|
|
* @throws ParseException
|
|
|
*/
|
|
|
public JSONArray dateTotalStatistics(String startDate, String endDate, String area, int level, String index, String lowCode) throws Exception {
|
|
|
|
|
|
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);
|
|
|
}
|
|
|
List<JSONObject> result = new ArrayList<>();
|
|
|
for (SaveModel saveModel : list) {
|
|
|
if (saveModels != null) {
|
|
|
// 计算结果
|
|
|
for (SaveModel saveModel : saveModels) {
|
|
|
JSONObject json = new JSONObject();
|
|
|
String range = df.format(saveModel.getQuotaDate());
|
|
|
long amount = saveModel.getResult2().longValue();
|
|
|
json.put("range", range);
|
|
|
json.put("amount", amount);
|
|
|
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;
|
|
|
}
|
|
|
}
|
|
|
});
|
|
|
|
|
|
return new JSONArray(result);
|
|
|
} else {
|
|
|
return new JSONArray();
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 按周统计 折线图
|
|
|
*
|
|
|
* @param startDate
|
|
|
* @param endDate
|
|
|
* @param area
|
|
|
* @param level
|
|
|
* @param index
|
|
|
* @param lowCode
|
|
|
* @return
|
|
|
* @throws Exception
|
|
|
*/
|
|
|
private JSONArray weekTotalStatistics(String startDate, String endDate, String area, int level, String index, String lowCode) throws Exception {
|
|
|
|
|
|
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
|
|
|
// 起始日期
|
|
|
Calendar start = Calendar.getInstance();
|
|
|
start.setTime(DateUtil.strToDate(startDate, DateUtil.YYYY_MM_DD));
|
|
|
// 第一个统计周期结束日期
|
|
|
String firstEnd = "";
|
|
|
// 结束日期
|
|
|
Calendar end = Calendar.getInstance();
|
|
|
end.setTime(DateUtil.strToDate(endDate, DateUtil.YYYY_MM_DD));
|
|
|
// 起始日期为周几
|
|
|
int week = start.get(Calendar.DAY_OF_WEEK);
|
|
|
int incre = 7 - week + 1;
|
|
|
|
|
|
// 日期集合
|
|
|
List<Calendar> days = new ArrayList<>();
|
|
|
days.add(start);
|
|
|
boolean flag = true;
|
|
|
int i = 0;
|
|
|
|
|
|
if (startDate.compareTo(endDate) == 0) {
|
|
|
flag = false;
|
|
|
days.add(end);
|
|
|
firstEnd = df.format(end.getTime());
|
|
|
}
|
|
|
|
|
|
// 计算统计日期
|
|
|
while (flag) {
|
|
|
Calendar next = Calendar.getInstance();
|
|
|
next.setTime(days.get(days.size() - 1).getTime());
|
|
|
|
|
|
if (i == 0) {
|
|
|
if (incre != 7) {
|
|
|
next.add(Calendar.DATE, incre);
|
|
|
}
|
|
|
} else {
|
|
|
next.add(Calendar.DATE, 7);
|
|
|
}
|
|
|
if (next.getTime().before(DateUtil.strToDate(endDate, "yyyy-MM-dd"))) {
|
|
|
days.add(next);
|
|
|
if (i == 0) {
|
|
|
firstEnd = df.format(next.getTime());
|
|
|
}
|
|
|
} else {
|
|
|
days.add(end);
|
|
|
flag = false;
|
|
|
if (i == 0) {
|
|
|
firstEnd = df.format(end.getTime());
|
|
|
}
|
|
|
}
|
|
|
|
|
|
i++;
|
|
|
}
|
|
|
|
|
|
// 结果集
|
|
|
Map<String, JSONObject> countResult = new HashMap<>();
|
|
|
|
|
|
// 算出每个查询周期
|
|
|
for (int j = 0; j < days.size() - 1; j++) {
|
|
|
String startStr = "";
|
|
|
String endStr = df.format(days.get(j + 1).getTime());
|
|
|
|
|
|
// 起始、截止日期
|
|
|
if (j == 0) {
|
|
|
startStr = df.format(days.get(j).getTime());
|
|
|
} else {
|
|
|
Calendar cal = Calendar.getInstance();
|
|
|
cal.setTime(days.get(j).getTime());
|
|
|
cal.add(Calendar.DATE, 1);
|
|
|
startStr = df.format(cal.getTime());
|
|
|
}
|
|
|
|
|
|
JSONObject range = new JSONObject();
|
|
|
range.put("range", df.format(saveModel.getQuotaDate()));
|
|
|
range.put("amount", saveModel.getResult2().longValue());
|
|
|
result.add(range);
|
|
|
range.put("range", endStr);
|
|
|
range.put("amount", 0);
|
|
|
countResult.put(endStr, range);
|
|
|
}
|
|
|
|
|
|
if (startDate.equals(df.format(new Date()))) {
|
|
|
Calendar preDate = Calendar.getInstance();
|
|
|
preDate.setTime(df.parse(endDate));
|
|
|
preDate.add(Calendar.DATE, -1);
|
|
|
|
|
|
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 (saveModels != null) {
|
|
|
// 计算结果
|
|
|
for (SaveModel saveModel : saveModels) {
|
|
|
String range = df.format(saveModel.getQuotaDate());
|
|
|
JSONObject json = countResult.get(range);
|
|
|
|
|
|
if (json != null) {
|
|
|
long amount = saveModel.getResult2().longValue();
|
|
|
json.put("amount", amount);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
List<JSONObject> result = new ArrayList<>(countResult.values());
|
|
|
|
|
|
// 排序
|
|
|
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 {
|
|
|
return new JSONArray();
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 按月统计 折线图
|
|
|
*
|
|
|
* @param startDate
|
|
|
* @param endDate
|
|
|
* @param area
|
|
|
* @param level
|
|
|
* @param index
|
|
|
* @param lowCode
|
|
|
* @return
|
|
|
* @throws Exception
|
|
|
*/
|
|
|
private JSONArray monthTotalStatistics(String startDate, String endDate, String area, int level, String index, String lowCode) throws Exception {
|
|
|
|
|
|
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
|
|
|
|
|
|
// 起始日期
|
|
|
Calendar start = Calendar.getInstance();
|
|
|
start.setTime(DateUtil.strToDate(startDate, DateUtil.YYYY_MM_DD));
|
|
|
// 结束日期
|
|
|
Calendar end = Calendar.getInstance();
|
|
|
end.setTime(DateUtil.strToDate(endDate, DateUtil.YYYY_MM_DD));
|
|
|
|
|
|
// 日期集合
|
|
|
List<Calendar> days = new ArrayList<>();
|
|
|
days.add(start);
|
|
|
|
|
|
boolean flag = true;
|
|
|
int k = 0;
|
|
|
|
|
|
if (startDate.compareTo(endDate) == 0) {
|
|
|
flag = false;
|
|
|
days.add(end);
|
|
|
}
|
|
|
|
|
|
// 统计日期计算
|
|
|
while (flag) {
|
|
|
Calendar next = Calendar.getInstance();
|
|
|
next.setTime(days.get(days.size() - 1).getTime());
|
|
|
if (k == 0) {
|
|
|
next.add(Calendar.MONTH, 1);
|
|
|
} else {
|
|
|
next.add(Calendar.MONTH, 2);
|
|
|
}
|
|
|
next.set(Calendar.DAY_OF_MONTH, 1);
|
|
|
next.add(Calendar.DAY_OF_MONTH, -1);
|
|
|
|
|
|
if (next.getTime().before(DateUtil.strToDate(endDate, "yyyy-MM-dd"))) {
|
|
|
days.add(next);
|
|
|
} else {
|
|
|
days.add(end);
|
|
|
flag = false;
|
|
|
}
|
|
|
k++;
|
|
|
}
|
|
|
|
|
|
// 统计结果
|
|
|
Map<String, JSONObject> countResult = new HashMap<>();
|
|
|
|
|
|
for (int i = 0; i < days.size() - 1; i++) {
|
|
|
String endStr = df.format(days.get(i + 1).getTime());
|
|
|
|
|
|
JSONObject range = new JSONObject();
|
|
|
|
|
|
range.put("range", endStr);
|
|
|
range.put("amount", 0);
|
|
|
|
|
|
countResult.put(endStr, range);
|
|
|
}
|
|
|
|
|
|
if (startDate.equals(df.format(new Date()))) {
|
|
|
Calendar preDate = Calendar.getInstance();
|
|
|
preDate.setTime(df.parse(endDate));
|
|
|
preDate.add(Calendar.DATE, -1);
|
|
|
|
|
|
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 (saveModels != null) {
|
|
|
// 计算结果
|
|
|
for (SaveModel saveModel : saveModels) {
|
|
|
String range = df.format(saveModel.getQuotaDate());
|
|
|
JSONObject json = countResult.get(range);
|
|
|
|
|
|
if (json != null) {
|
|
|
long amount = saveModel.getResult2().longValue();
|
|
|
json.put("amount", amount);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
List<JSONObject> result = new ArrayList<>(countResult.values());
|
|
|
|
|
|
// 排序
|
|
|
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 {
|
|
|
return new JSONArray();
|
|
|
}
|
|
|
json.put("data", new ArrayList<>(result));
|
|
|
return json;
|
|
|
}
|
|
|
|
|
|
|
|
@ -950,12 +1201,12 @@ public class StatisticsESService {
|
|
|
if (date.compareTo(dateFormat.format(new Date())) >= 0) {
|
|
|
date = elasticsearchUtil.getQuotaTime();
|
|
|
}
|
|
|
List<SaveModel> esModelList = (List<SaveModel>) elasticsearchUtil.findListDateQuotaLevel1(date, area, level, index, SaveModel.timeLevel_DDL, low_level, lowCode);
|
|
|
|
|
|
List<SaveModel> esModelList = (List<SaveModel>) elasticsearchUtil.findListDateQuotaLevel1(date, area, level, index, SaveModel.timeLevel_DDL, low_level, low_level);
|
|
|
//esModelList=elasticsearchUtil.findDateQuotaLevel1(date,date,area,level,index,SaveModel.timeLevel_DDL,1,lowCode,"",low_level);
|
|
|
if (esModelList != null && esModelList.size() > 0) {
|
|
|
for (SaveModel one : esModelList) {
|
|
|
Map<String, Object> maps = new HashMap<String, Object>();
|
|
|
maps.put("amount", one.getResult1().intValue());
|
|
|
maps.put("amount", one.getResult2().intValue());
|
|
|
if (low_level.equals("3")) {
|
|
|
maps.put("code", one.getTown());
|
|
|
maps.put("name", one.getTownName());
|
|
@ -1331,7 +1582,7 @@ public class StatisticsESService {
|
|
|
//如果分母为0 分子为0 返回0%
|
|
|
return 0;
|
|
|
}
|
|
|
Double size = first / second;
|
|
|
Double size = first / second;
|
|
|
DecimalFormat df = new DecimalFormat("0.0");//格式化小数,不足的补0
|
|
|
String filesize = df.format(size);
|
|
|
return Double.valueOf(filesize);
|
|
@ -1556,7 +1807,7 @@ public class StatisticsESService {
|
|
|
if (date.compareTo(dateFormat.format(new Date())) >= 0) {
|
|
|
date = elasticsearchUtil.getQuotaTime();
|
|
|
}
|
|
|
List<SaveModel> esModelList = (List<SaveModel>) elasticsearchUtil.findListDateQuotaLevel0( date, area, level, index, SaveModel.timeLevel_DDL, low_level);
|
|
|
List<SaveModel> esModelList = (List<SaveModel>) elasticsearchUtil.findListDateQuotaLevel0(date, area, level, index, SaveModel.timeLevel_DDL, low_level);
|
|
|
|
|
|
if (esModelList != null && esModelList.size() > 0) {
|
|
|
for (SaveModel one : esModelList) {
|
|
@ -1763,7 +2014,7 @@ public class StatisticsESService {
|
|
|
timeKey = elasticsearchUtil.getQuotaTime();
|
|
|
} else {
|
|
|
Integer coutYear = Integer.parseInt(year);
|
|
|
timeKey = coutYear+1 + "-06-30";
|
|
|
timeKey = coutYear + 1 + "-06-30";
|
|
|
}
|
|
|
}
|
|
|
// timeKey= "2017-11-01 00:00:00";
|
|
@ -1789,12 +2040,12 @@ public class StatisticsESService {
|
|
|
* @param onRely
|
|
|
* @return
|
|
|
*/
|
|
|
public List<Map<String, Object>> getCoutList(Integer level, String lowLevel,List<SaveModel> rely, List<SaveModel> total, List<SaveModel> onRely) {
|
|
|
public List<Map<String, Object>> getCoutList(Integer level, String lowLevel, List<SaveModel> rely, List<SaveModel> total, List<SaveModel> onRely) {
|
|
|
Map<String, Object> relyMap = new HashMap<>();
|
|
|
Map<String, Object> totalMap = new HashMap<>();
|
|
|
Map<String, Object> onRelyMap = new HashMap<>();
|
|
|
JSONObject result = new JSONObject();
|
|
|
String low_level=StringUtils.isEmpty(lowLevel)?String.valueOf(level+1):lowLevel;
|
|
|
String low_level = StringUtils.isEmpty(lowLevel) ? String.valueOf(level + 1) : lowLevel;
|
|
|
//转换回复数
|
|
|
for (SaveModel saveModel : rely) {
|
|
|
if (SaveModel.teamLevel.equals(low_level)) {
|
|
@ -1918,7 +2169,7 @@ public class StatisticsESService {
|
|
|
if (Constant.getNowYear().equals(year)) {
|
|
|
quotaTime = elasticsearchUtil.getQuotaTime();
|
|
|
} else {
|
|
|
quotaTime = Integer.valueOf(year)+1 + "-6-30";
|
|
|
quotaTime = Integer.valueOf(year) + 1 + "-6-30";
|
|
|
}
|
|
|
}
|
|
|
// quotaTime = "2017-10-19 00:00:00";
|
|
@ -1946,8 +2197,8 @@ public class StatisticsESService {
|
|
|
public JSONObject getConsultingTitle(int level, String area, String year) throws Exception {
|
|
|
JSONObject result = new JSONObject();
|
|
|
String quotaDate = elasticsearchUtil.getQuotaTime();
|
|
|
if(!Constant.getNowYear().equals(year)){
|
|
|
quotaDate = Integer.valueOf(year)+1 + "-06-30";
|
|
|
if (!Constant.getNowYear().equals(year)) {
|
|
|
quotaDate = Integer.valueOf(year) + 1 + "-06-30";
|
|
|
}
|
|
|
|
|
|
SaveModel relyVal = elasticsearchUtil.findOneDateQuotaLevel0(quotaDate, quotaDate, area, level, "23", "2");
|
|
@ -2203,13 +2454,13 @@ public class StatisticsESService {
|
|
|
// Map<String, Object> expenseStatus1Sigjn = getByIndexSingle(date, area, level, "1",dateFormat);
|
|
|
SaveModel expenseStatus1Sigjn = elasticsearchUtil.findOneDateQuotaLevel0(date, area, level, "1", "2");
|
|
|
JSONObject jsonObject = new JSONObject();
|
|
|
if (Integer.valueOf(SaveModel.teamLevel)==level) {
|
|
|
if (Integer.valueOf(SaveModel.teamLevel) == level) {
|
|
|
jsonObject.put("name", expenseStatus1Sigjn.getTeamName());
|
|
|
} else if (Integer.valueOf(SaveModel.OrgLevel)==level) {
|
|
|
} else if (Integer.valueOf(SaveModel.OrgLevel) == level) {
|
|
|
jsonObject.put("name", expenseStatus1Sigjn.getHospitalName());
|
|
|
} else if (Integer.valueOf(SaveModel.townLevel)==level) {
|
|
|
} else if (Integer.valueOf(SaveModel.townLevel) == level) {
|
|
|
jsonObject.put("name", expenseStatus1Sigjn.getTownName());
|
|
|
} else if (Integer.valueOf(SaveModel.cityLevel)==level) {
|
|
|
} else if (Integer.valueOf(SaveModel.cityLevel) == level) {
|
|
|
jsonObject.put("name", expenseStatus1Sigjn.getCityName());
|
|
|
}
|
|
|
jsonObject.put("code", area);
|
|
@ -2298,10 +2549,10 @@ public class StatisticsESService {
|
|
|
|
|
|
if (StringUtils.isEmpty(lowCode)) {
|
|
|
//续签量
|
|
|
renewSaveModels = elasticsearchUtil.findDateQuotaLevel0(timeKey, timeKey, area, level, index, "2","", low_level);
|
|
|
renewSaveModels = elasticsearchUtil.findDateQuotaLevel0(timeKey, timeKey, area, level, index, "2", "", low_level);
|
|
|
} else {
|
|
|
//续签量
|
|
|
renewSaveModels = elasticsearchUtil.findDateQuotaLevel1(DateUtil.getNextDay(new Date(),-1), DateUtil.getNextDay(new Date(),-1), area, level, index, "2",1,lowCode,"",low_level);
|
|
|
renewSaveModels = elasticsearchUtil.findDateQuotaLevel1(DateUtil.getNextDay(new Date(), -1), DateUtil.getNextDay(new Date(), -1), area, level, index, "2", lowCode, "", low_level);
|
|
|
//renewSaveModels = elasticsearchUtil.findDateQuotaLevel1(timeKey, timeKey, area, level, index, "2",1,lowCode,"",low_level);
|
|
|
|
|
|
}
|
|
@ -2328,9 +2579,9 @@ public class StatisticsESService {
|
|
|
//查询去年的签约转map
|
|
|
List<SaveModel> yearsList = new ArrayList();
|
|
|
if (StringUtils.isBlank(lowCode)) {
|
|
|
yearsList = elasticsearchUtil.findDateQuotaLevel0(lastDate,lastDate, area, level, "1", "2", "",low_level);
|
|
|
yearsList = elasticsearchUtil.findDateQuotaLevel0(lastDate, lastDate, area, level, "1", "2", "", low_level);
|
|
|
} else {
|
|
|
yearsList = elasticsearchUtil.findDateQuotaLevel1(lastDate, lastDate, area, level, "17", "2", 1, lowCode,"",low_level);
|
|
|
yearsList = elasticsearchUtil.findDateQuotaLevel1(lastDate, lastDate, area, level, "17", "2", lowCode, "", low_level);
|
|
|
}
|
|
|
|
|
|
Map<String, SaveModel> resultMap = new HashMap<>();
|
|
@ -2357,8 +2608,8 @@ public class StatisticsESService {
|
|
|
}
|
|
|
if (renewMap != null && renewMap.size() > 0) {
|
|
|
renewNum = renewMap.get(reMap.get("code").toString());
|
|
|
if (renewNum==null){
|
|
|
renewNum=0;
|
|
|
if (renewNum == null) {
|
|
|
renewNum = 0;
|
|
|
}
|
|
|
} else {
|
|
|
}
|
|
@ -2755,52 +3006,52 @@ public class StatisticsESService {
|
|
|
String index = "58";
|
|
|
Map<String, Object> rs = new HashedMap();
|
|
|
//总数
|
|
|
List<SaveModel> totalList = elasticsearchUtil.findListDateQuotaLevel0(startDate, endDate, String.valueOf(adminTeamId), Integer.valueOf(SaveModel.teamLevel), index, "2", null);
|
|
|
SaveModel total = elasticsearchUtil.findOneDateQuotaLevel0(startDate, endDate, String.valueOf(adminTeamId), Integer.valueOf(SaveModel.teamLevel), index, "2");
|
|
|
//进行中
|
|
|
List<SaveModel> processingList = elasticsearchUtil.findListDateQuotaLevel0(startDate, endDate, String.valueOf(adminTeamId), Integer.valueOf(SaveModel.teamLevel), index, "2", "1");
|
|
|
SaveModel processing = elasticsearchUtil.findOneDateQuotaLevel1(startDate, endDate, String.valueOf(adminTeamId), Integer.valueOf(SaveModel.teamLevel), index, "2", "1");
|
|
|
//已完成
|
|
|
List<SaveModel> finishedList = elasticsearchUtil.findListDateQuotaLevel0(startDate, endDate, String.valueOf(adminTeamId), Integer.valueOf(SaveModel.teamLevel), index, "2", "2");
|
|
|
SaveModel finished = elasticsearchUtil.findOneDateQuotaLevel1(startDate, endDate, String.valueOf(adminTeamId), Integer.valueOf(SaveModel.teamLevel), index, "2", "2");
|
|
|
//已经取消
|
|
|
List<SaveModel> canceledList = elasticsearchUtil.findListDateQuotaLevel0(startDate, endDate, String.valueOf(adminTeamId), Integer.valueOf(SaveModel.teamLevel), index, "2", "3");
|
|
|
SaveModel canceled = elasticsearchUtil.findOneDateQuotaLevel1(startDate, endDate, String.valueOf(adminTeamId), Integer.valueOf(SaveModel.teamLevel), index, "2", "3");
|
|
|
//审核不通过
|
|
|
List<SaveModel> unPassList = elasticsearchUtil.findListDateQuotaLevel0(startDate, endDate, String.valueOf(adminTeamId), Integer.valueOf(SaveModel.teamLevel), index, "2", "4");
|
|
|
SaveModel unPass = elasticsearchUtil.findOneDateQuotaLevel1(startDate, endDate, String.valueOf(adminTeamId), Integer.valueOf(SaveModel.teamLevel), index, "2", "4");
|
|
|
//其他原因取消
|
|
|
List<SaveModel> otherList = elasticsearchUtil.findListDateQuotaLevel0(startDate, endDate, String.valueOf(adminTeamId), Integer.valueOf(SaveModel.teamLevel), index, "2", "5");
|
|
|
SaveModel other = elasticsearchUtil.findOneDateQuotaLevel1(startDate, endDate, String.valueOf(adminTeamId), Integer.valueOf(SaveModel.teamLevel), index, "2", "5");
|
|
|
|
|
|
//总数
|
|
|
if (totalList != null && totalList.size() > 0) {
|
|
|
rs.put("total", totalList.get(0).getResult2());
|
|
|
if (total != null) {
|
|
|
rs.put("total", total.getResult2());
|
|
|
} else {
|
|
|
rs.put("total", 0);
|
|
|
}
|
|
|
|
|
|
//进行中
|
|
|
if (processingList != null && processingList.size() > 0) {
|
|
|
rs.put("processingCount", processingList.get(0).getResult2());
|
|
|
if (processing != null) {
|
|
|
rs.put("processingCount", processing.getResult2());
|
|
|
} else {
|
|
|
rs.put("processingCount", 0);
|
|
|
}
|
|
|
//已完成
|
|
|
if (finishedList != null && finishedList.size() > 0) {
|
|
|
rs.put("finishCount", finishedList.get(0).getResult2());
|
|
|
if (finished != null) {
|
|
|
rs.put("finishCount", finished.getResult2());
|
|
|
} else {
|
|
|
rs.put("finishCount", 0);
|
|
|
}
|
|
|
//已取消
|
|
|
if (canceledList != null && canceledList.size() > 0) {
|
|
|
rs.put("patientCancelCount", canceledList.get(0).getResult2());
|
|
|
if (canceled != null) {
|
|
|
rs.put("patientCancelCount", canceled.getResult2());
|
|
|
} else {
|
|
|
rs.put("patientCancelCount", 0);
|
|
|
}
|
|
|
//审核不通过
|
|
|
if (unPassList != null && unPassList.size() > 0) {
|
|
|
rs.put("noReviewedCount", unPassList.get(0).getResult2());
|
|
|
if (unPass != null) {
|
|
|
rs.put("noReviewedCount", unPass.getResult2());
|
|
|
} else {
|
|
|
rs.put("noReviewedCount", 0);
|
|
|
}
|
|
|
//其他原因取消
|
|
|
if (otherList != null && otherList.size() > 0) {
|
|
|
rs.put("payOuttimeCount", otherList.get(0).getResult2());
|
|
|
if (other != null) {
|
|
|
rs.put("payOuttimeCount", other.getResult2());
|
|
|
} else {
|
|
|
rs.put("payOuttimeCount", 0);
|
|
|
}
|
|
@ -2808,7 +3059,9 @@ public class StatisticsESService {
|
|
|
}
|
|
|
|
|
|
public Map<String, Object> getPrescriptionCount(int level, String area, String disease) throws Exception {
|
|
|
String index = "58";
|
|
|
//因为一个处方可能有多个疾病状态 所以分开2个指标
|
|
|
String index58 = "58";//统计长处方总数疾病和状态维度
|
|
|
String index64 = "64";//统计长处方总数状态维度
|
|
|
Map<String, Object> rs = new HashedMap();
|
|
|
SaveModel total = null;
|
|
|
SaveModel processing = null;
|
|
@ -2819,39 +3072,39 @@ public class StatisticsESService {
|
|
|
String quotaDate = elasticsearchUtil.getQuotaTime();
|
|
|
//总数
|
|
|
if (StringUtils.isNotBlank(disease)) {
|
|
|
total = elasticsearchUtil.findOneDateQuotaLevel1(quotaDate, area, level, index, SaveModel.timeLevel_DDL, disease);
|
|
|
total = elasticsearchUtil.findOneDateQuotaLevel2NoSlaveKey1(quotaDate, area, level, index58, SaveModel.timeLevel_DDL, disease);
|
|
|
} else {
|
|
|
total = elasticsearchUtil.findOneDateQuotaLevel0(quotaDate, area, level, index, SaveModel.timeLevel_DDL);
|
|
|
total = elasticsearchUtil.findOneDateQuotaLevel1NoSlaveKey1(quotaDate, area, level, index64, SaveModel.timeLevel_DDL);
|
|
|
}
|
|
|
//进行中
|
|
|
if (StringUtils.isNotBlank(disease)) {
|
|
|
processing = elasticsearchUtil.findOneDateQuotaLevel2(quotaDate, area, level, index, SaveModel.timeLevel_DDL, disease, "1");
|
|
|
processing = elasticsearchUtil.findOneDateQuotaLevel2(quotaDate, area, level, index58, SaveModel.timeLevel_DDL, disease, "1");
|
|
|
} else {
|
|
|
processing = elasticsearchUtil.findOneDateQuotaLevel2NoSlaveKey1(quotaDate, area, level, index, SaveModel.timeLevel_DDL, "1");
|
|
|
processing = elasticsearchUtil.findOneDateQuotaLevel1(quotaDate, area, level, index64, SaveModel.timeLevel_DDL, "1");
|
|
|
}
|
|
|
//已完成
|
|
|
if (StringUtils.isNotBlank(disease)) {
|
|
|
finished = elasticsearchUtil.findOneDateQuotaLevel2(quotaDate, area, level, index, SaveModel.timeLevel_DDL, disease, "2");
|
|
|
finished = elasticsearchUtil.findOneDateQuotaLevel2(quotaDate, area, level, index58, SaveModel.timeLevel_DDL, disease, "2");
|
|
|
} else {
|
|
|
finished = elasticsearchUtil.findOneDateQuotaLevel2NoSlaveKey1(quotaDate, area, level, index, SaveModel.timeLevel_DDL, "2");
|
|
|
finished = elasticsearchUtil.findOneDateQuotaLevel1(quotaDate, area, level, index64, SaveModel.timeLevel_DDL, "2");
|
|
|
}
|
|
|
//已经取消
|
|
|
if (StringUtils.isNotBlank(disease)) {
|
|
|
canceled = elasticsearchUtil.findOneDateQuotaLevel2(quotaDate, area, level, index, SaveModel.timeLevel_DDL, disease, "3");
|
|
|
canceled = elasticsearchUtil.findOneDateQuotaLevel2(quotaDate, area, level, index58, SaveModel.timeLevel_DDL, disease, "3");
|
|
|
} else {
|
|
|
canceled = elasticsearchUtil.findOneDateQuotaLevel2NoSlaveKey1(quotaDate, area, level, index, SaveModel.timeLevel_DDL, "3");
|
|
|
canceled = elasticsearchUtil.findOneDateQuotaLevel1(quotaDate, area, level, index64, SaveModel.timeLevel_DDL, "3");
|
|
|
}
|
|
|
//审核不通过
|
|
|
if (StringUtils.isNotBlank(disease)) {
|
|
|
unPass = elasticsearchUtil.findOneDateQuotaLevel2(quotaDate, area, level, index, SaveModel.timeLevel_DDL, disease, "4");
|
|
|
unPass = elasticsearchUtil.findOneDateQuotaLevel2(quotaDate, area, level, index58, SaveModel.timeLevel_DDL, disease, "4");
|
|
|
} else {
|
|
|
unPass = elasticsearchUtil.findOneDateQuotaLevel2NoSlaveKey1(quotaDate, area, level, index, SaveModel.timeLevel_DDL, "4");
|
|
|
unPass = elasticsearchUtil.findOneDateQuotaLevel1(quotaDate, area, level, index64, SaveModel.timeLevel_DDL, "4");
|
|
|
}
|
|
|
//其他原因取消
|
|
|
if (StringUtils.isNotBlank(disease)) {
|
|
|
other = elasticsearchUtil.findOneDateQuotaLevel2(quotaDate, area, level, index, SaveModel.timeLevel_DDL, disease, "5");
|
|
|
other = elasticsearchUtil.findOneDateQuotaLevel2(quotaDate, area, level, index58, SaveModel.timeLevel_DDL, disease, "5");
|
|
|
} else {
|
|
|
other = elasticsearchUtil.findOneDateQuotaLevel2NoSlaveKey1(quotaDate, area, level, index, SaveModel.timeLevel_DDL, "5");
|
|
|
other = elasticsearchUtil.findOneDateQuotaLevel1(quotaDate, area, level, index64, SaveModel.timeLevel_DDL, "5");
|
|
|
}
|
|
|
|
|
|
//总数
|
|
@ -2966,8 +3219,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) {
|
|
@ -2989,7 +3250,6 @@ public class StatisticsESService {
|
|
|
map.put("val", one.getResult2().longValue());
|
|
|
}
|
|
|
} else {
|
|
|
|
|
|
//统计数据为空时,自建结果集
|
|
|
List<Town> townList = null;
|
|
|
List<Hospital> hospitalList = null;
|
|
@ -3063,14 +3323,14 @@ public class StatisticsESService {
|
|
|
Long num = (Long) count.get("num");
|
|
|
Map<String, Object> map = new HashMap<>();
|
|
|
DecimalFormat decimalFormat = new DecimalFormat("0.00");//构造方法的字符格式这里如果小数不足2位,会以0补足.
|
|
|
if(num==0){
|
|
|
if (num == 0) {
|
|
|
map.put("0ageRate", 0.0);
|
|
|
map.put("7ageRate", 0.0);
|
|
|
map.put("19ageRate", 0.0);
|
|
|
map.put("31ageRate", 0.0);
|
|
|
map.put("51ageRate", 0.0);
|
|
|
map.put("65ageRate", 0.0);
|
|
|
}else{
|
|
|
} else {
|
|
|
|
|
|
Double ageRate = list.get(0).getResult2() / num;
|
|
|
map.put("0ageRate", decimalFormat.format(ageRate));
|
|
@ -3096,13 +3356,15 @@ public class StatisticsESService {
|
|
|
* @return
|
|
|
*/
|
|
|
public List<Map<String, Object>> getPrescriptionTotalHistogram(int level, String area, String disease, String type) throws Exception {
|
|
|
String index = "58";
|
|
|
List<Map<String, Object>> rs = new ArrayList<>();
|
|
|
//因为一个处方可能有多个疾病状态 所以分开2个指标
|
|
|
String index58 = "58";//统计长处方总数疾病和状态维度
|
|
|
String index64 = "64";//统计长处方总数状态维度
|
|
|
Map<String, Map<String, Object>> rs = new LinkedHashMap<>();
|
|
|
|
|
|
Calendar dd = Calendar.getInstance();//定义日期实例
|
|
|
Date endDate = new Date();
|
|
|
dd.setTime(endDate);
|
|
|
|
|
|
//初始化近半年的月份
|
|
|
for (int i = 1; i < 7; i++) {
|
|
|
Map<String, Object> mc = new HashedMap();
|
|
|
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
|
|
@ -3110,7 +3372,7 @@ public class StatisticsESService {
|
|
|
mc.put("month", date);
|
|
|
mc.put("count", 0);
|
|
|
dd.add(Calendar.MONTH, -1);
|
|
|
rs.add(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");
|
|
@ -3119,37 +3381,31 @@ public class StatisticsESService {
|
|
|
//类型0.总量,1.进行中,2.已完成,3.居民取消,4.审核不通过,5.其他原因取消
|
|
|
if ("0".equals(type)) {
|
|
|
//总数
|
|
|
resultList = elasticsearchUtil.findLineChartDateQuotaLevel2NoSlaveKey2(startTime, endTime, area, level, index, "1", "3", disease);
|
|
|
resultList = elasticsearchUtil.findLineChartDateQuotaLevel2NoSlaveKey2(startTime, endTime, area, level, index58, "1", "3", disease);
|
|
|
} else {
|
|
|
resultList = elasticsearchUtil.findLineChartDateQuotaLevel2(startTime, endTime, area, level, index, "1", "3", disease, type);
|
|
|
resultList = elasticsearchUtil.findLineChartDateQuotaLevel2(startTime, endTime, area, level, index58, "1", "3", disease, type);
|
|
|
}
|
|
|
} else {
|
|
|
if ("0".equals(type)) {
|
|
|
//总数
|
|
|
resultList = elasticsearchUtil.findLineChartDateQuotaLevel2NoSlaveKey1NoSlaveKey2(startTime, endTime, area, level, index, "1", "3");
|
|
|
resultList = elasticsearchUtil.findLineChartDateQuotaLevel1NoSlaveKey1(startTime, endTime, area, level, index64, "1", "3");
|
|
|
} else {
|
|
|
resultList = elasticsearchUtil.findLineChartDateQuotaLevel2NoSlaveKey1(startTime, endTime, area, level, index, "1", "3", type);
|
|
|
resultList = elasticsearchUtil.findLineChartDateQuotaLevel1(startTime, endTime, area, level, index64, "1", "3", type);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
for (Map<String, Object> m : rs) {
|
|
|
Iterator iterator = resultList.iterator();
|
|
|
while (iterator.hasNext()) {
|
|
|
SaveModel saveModel = (SaveModel) iterator.next();
|
|
|
String monthKey = (String) m.get("month");
|
|
|
String monthKeyEs = "";
|
|
|
if (saveModel.getQuotaDate() != null) {
|
|
|
monthKeyEs = DateUtil.changeQuotaDate(saveModel.getQuotaDate());
|
|
|
m.put("month", monthKeyEs);
|
|
|
}
|
|
|
if (StringUtils.isNotBlank(monthKeyEs) && monthKey.equals(monthKeyEs)) {
|
|
|
m.put("count", saveModel.getResult2());
|
|
|
} else {
|
|
|
m.put("count", 0);
|
|
|
}
|
|
|
//把数据设置到初始化的Map里面去
|
|
|
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());
|
|
|
}
|
|
|
}
|
|
|
return rs;
|
|
|
|
|
|
return new ArrayList<>(rs.values());
|
|
|
}
|
|
|
|
|
|
/**
|
|
@ -3163,51 +3419,33 @@ public class StatisticsESService {
|
|
|
*/
|
|
|
public List<Map<String, Object>> getPrescriptionTotalLowLevel(int level, String lowlevel, String area, String disease, String type) throws Exception {
|
|
|
String quotaDate = elasticsearchUtil.getQuotaTime();
|
|
|
String index = "58";
|
|
|
//因为一个处方可能有多个疾病状态 所以分开2个指标
|
|
|
String index58 = "58";//统计长处方总数疾病和状态维度
|
|
|
String index64 = "64";//统计长处方总数状态维度
|
|
|
|
|
|
List<SaveModel> saveModels = new ArrayList<>();
|
|
|
List<Map<String, Object>> rs = new ArrayList<>();
|
|
|
//一级维度
|
|
|
if (StringUtils.isEmpty(disease)) {
|
|
|
//类型 1.总量,2.已完成,3.居民取消,4.审核不通过,5.进行中,6.其他原因取消
|
|
|
// if ("1".equals(type)) {
|
|
|
// saveModels = elasticsearchUtil.findListDateQuotaLevel0(quotaDate, area, level, index, "2", lowlevel);
|
|
|
// } else if ("2".equals(type) || "3".equals(type) || "4".equals(type)) {
|
|
|
// saveModels = elasticsearchUtil.findListDateQuotaLevel1(quotaDate, area, level, index, "2", lowlevel, type);
|
|
|
// } else if ("5".equals(type)) {
|
|
|
// saveModels = elasticsearchUtil.findListDateQuotaLevel1(quotaDate, area, level, index, "2", lowlevel, "1");
|
|
|
// } else if ("6".equals(type)) {
|
|
|
// saveModels = elasticsearchUtil.findListDateQuotaLevel1(quotaDate, area, level, index, "2", lowlevel, "5");
|
|
|
// }
|
|
|
if ("1".equals(type)) {
|
|
|
//总数
|
|
|
saveModels = elasticsearchUtil.findListDateQuotaLevel0(quotaDate,area,level,index,SaveModel.timeLevel_DDL,lowlevel);
|
|
|
} else if("2".equals(type) || "3".equals(type) || "4".equals(type)){
|
|
|
saveModels = elasticsearchUtil.findListDateQuotaLevel2NoSlaveKey1(quotaDate,area,level,index,SaveModel.timeLevel_DDL,lowlevel,type);
|
|
|
} else if("5".equals(type)){
|
|
|
saveModels = elasticsearchUtil.findListDateQuotaLevel2NoSlaveKey1(quotaDate,area,level,index,SaveModel.timeLevel_DDL,lowlevel,"1");
|
|
|
saveModels = elasticsearchUtil.findListDateQuotaLevel1NoSlaveKey1(quotaDate, area, level, index64, SaveModel.timeLevel_DDL, lowlevel);
|
|
|
} else if ("2".equals(type) || "3".equals(type) || "4".equals(type)) {
|
|
|
saveModels = elasticsearchUtil.findListDateQuotaLevel1(quotaDate, area, level, index64, SaveModel.timeLevel_DDL, lowlevel, type);
|
|
|
} else if ("5".equals(type)) {
|
|
|
saveModels = elasticsearchUtil.findListDateQuotaLevel1(quotaDate, area, level, index64, SaveModel.timeLevel_DDL, lowlevel, "1");
|
|
|
} else if ("6".equals(type)) {
|
|
|
saveModels = elasticsearchUtil.findListDateQuotaLevel2NoSlaveKey1(quotaDate,area,level,index,SaveModel.timeLevel_DDL,lowlevel,"5");
|
|
|
}
|
|
|
} else {
|
|
|
//类型 1.总量,2.已完成,3.居民取消,4.审核不通过,5.进行中,6.其他原因取消
|
|
|
// if ("1".equals(type)) {
|
|
|
// saveModels = elasticsearchUtil.findListDateQuotaLevel1(quotaDate, area, level, index, "2", lowlevel, disease);
|
|
|
// } else if ("2".equals(type) || "3".equals(type) || "4".equals(type)) {
|
|
|
// saveModels = elasticsearchUtil.findListDateQuotaLevel2(quotaDate, area, level, index, "2", lowlevel, disease, type);
|
|
|
// } else if ("5".equals(type)) {
|
|
|
// saveModels = elasticsearchUtil.findListDateQuotaLevel2(quotaDate, area, level, index, "2", lowlevel, disease, "1");
|
|
|
// } else if ("6".equals(type)) {
|
|
|
// saveModels = elasticsearchUtil.findListDateQuotaLevel2(quotaDate, area, level, index, "2", lowlevel, disease, "5");
|
|
|
// }
|
|
|
saveModels = elasticsearchUtil.findListDateQuotaLevel1(quotaDate, area, level, index64, SaveModel.timeLevel_DDL, lowlevel, "5");
|
|
|
}
|
|
|
} else {
|
|
|
if ("1".equals(type)) {
|
|
|
//总数String quotaDate, String area, int level, String index, String timelevel,String lowLevel, String slaveKey2
|
|
|
saveModels = elasticsearchUtil.findListDateQuotaLevel1(quotaDate,area,level,index,"2",lowlevel,disease);
|
|
|
} else if("2".equals(type) || "3".equals(type) || "4".equals(type)){
|
|
|
saveModels = elasticsearchUtil.findListDateQuotaLevel2(quotaDate, area, level, index, "2", lowlevel, disease, type);
|
|
|
} else if("5".equals(type)){
|
|
|
saveModels = elasticsearchUtil.findListDateQuotaLevel2(quotaDate, area, level, index, "2", lowlevel, disease, "1");
|
|
|
} else if("6".equals(type)){
|
|
|
saveModels = elasticsearchUtil.findListDateQuotaLevel2(quotaDate, area, level, index, "2", lowlevel, disease, "5");
|
|
|
saveModels = elasticsearchUtil.findListDateQuotaLevel2NoSlaveKey2(quotaDate, area, level, index58, "2", lowlevel, disease);
|
|
|
} else if ("2".equals(type) || "3".equals(type) || "4".equals(type)) {
|
|
|
saveModels = elasticsearchUtil.findListDateQuotaLevel2(quotaDate, area, level, index58, "2", lowlevel, disease, type);
|
|
|
} else if ("5".equals(type)) {
|
|
|
saveModels = elasticsearchUtil.findListDateQuotaLevel2(quotaDate, area, level, index58, "2", lowlevel, disease, "1");
|
|
|
} else if ("6".equals(type)) {
|
|
|
saveModels = elasticsearchUtil.findListDateQuotaLevel2(quotaDate, area, level, index58, "2", lowlevel, disease, "5");
|
|
|
}
|
|
|
}
|
|
|
if ("5".equals(lowlevel)) {
|
|
@ -3217,9 +3455,9 @@ public class StatisticsESService {
|
|
|
if (saveModels.size() > 0) {
|
|
|
for (SaveModel one : saveModels) {
|
|
|
map = new HashMap<>();
|
|
|
if (Integer.parseInt(lowlevel) >= level) {
|
|
|
lowlevel = String.valueOf(level + 1);
|
|
|
}
|
|
|
// if (Integer.parseInt(lowlevel) >= level) {
|
|
|
// lowlevel = String.valueOf(level + 1);
|
|
|
// }
|
|
|
if (SaveModel.townLevel.equals(lowlevel)) {
|
|
|
map.put("code", one.getTown());
|
|
|
map.put("name", one.getTownName());
|
|
@ -3231,12 +3469,11 @@ 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;
|
|
@ -3269,8 +3506,9 @@ public class StatisticsESService {
|
|
|
map.put("val", 0);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
rs.add(map);
|
|
|
}
|
|
|
rs.add(map);
|
|
|
return rs;
|
|
|
}
|
|
|
|
|
@ -3299,17 +3537,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));
|
|
@ -3336,7 +3581,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;//健管师配送集合
|
|
@ -3344,18 +3591,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");
|
|
|
|
|
|
}
|
|
|
|
|
@ -3391,6 +3638,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();//定义日期实例
|
|
@ -3412,9 +3661,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) {
|
|
@ -3443,17 +3692,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;
|
|
@ -3474,12 +3725,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;
|
|
@ -3495,25 +3744,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;
|
|
|
}
|
|
|
|
|
@ -3529,14 +3783,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());
|
|
@ -3553,30 +3817,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);
|
|
|
}
|
|
|
}
|
|
@ -3594,75 +3878,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.townLevel.equals(level) || SaveModel.cityLevel.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);
|
|
|
}
|
|
|
//获取人数
|
|
|
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<String, Object> count = jdbcTemplate.queryForMap(sql);
|
|
|
Long num = (Long) count.get("num");
|
|
|
costMap.put(key, one);
|
|
|
}
|
|
|
|
|
|
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 {
|
|
|
key = DateUtil.getMonth(dateFormat.format(one.getQuotaDate()));
|
|
|
}
|
|
|
SaveModel costOne = costMap.get(key);
|
|
|
String avg = "0.0";
|
|
|
if(num!=0){
|
|
|
avg = decimalFormat.format(one.getResult1() / num);
|
|
|
if (costOne != null) {
|
|
|
avg = decimalFormat.format(one.getResult1() / costOne.getResult1());
|
|
|
}
|
|
|
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";
|
|
|
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.findOneDateQuotaLevel0(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.townLevel.equals(level) || SaveModel.cityLevel.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(num);
|
|
|
BigDecimal s = BigDecimal.valueOf(costSaveModel.getResult1());
|
|
|
BigDecimal a = null;
|
|
|
if(num==0){
|
|
|
a = BigDecimal.valueOf(0.0);
|
|
|
}else{
|
|
|
|
|
|
a = BigDecimal.valueOf(saveModel.getResult2().longValue() / num);
|
|
|
if (num == 0) {
|
|
|
a = BigDecimal.valueOf(0.0);
|
|
|
} else {
|
|
|
a = BigDecimal.valueOf(costSaveModel.getResult1().longValue() / num);
|
|
|
}
|
|
|
rs.put("sum", s.divide(new BigDecimal(100)).setScale(2, BigDecimal.ROUND_HALF_UP));
|
|
|
rs.put("avg", a.divide((new BigDecimal(100))).setScale(2, BigDecimal.ROUND_HALF_UP));
|
|
|
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;
|
|
|
}
|
|
|
|
|
@ -3675,7 +3984,7 @@ public class StatisticsESService {
|
|
|
json.put("avgCount", getRangeDouuble(saveModel.getResult1(), saveModel.getResult2().intValue(), 2));
|
|
|
|
|
|
|
|
|
resultJSON.put("rs",json);
|
|
|
resultJSON.put("rs", json);
|
|
|
return resultJSON;
|
|
|
}
|
|
|
}
|