|
@ -22,6 +22,7 @@ import org.apache.commons.lang3.StringUtils;
|
|
|
import org.json.JSONArray;
|
|
|
import org.json.JSONObject;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.data.redis.core.StringRedisTemplate;
|
|
|
import org.springframework.jdbc.core.BeanPropertyRowMapper;
|
|
|
import org.springframework.jdbc.core.JdbcTemplate;
|
|
|
import org.springframework.stereotype.Service;
|
|
@ -49,7 +50,10 @@ public class StatisticsESService {
|
|
|
HospitalDao hospitalDao;
|
|
|
@Autowired
|
|
|
TownDao townDao;
|
|
|
@Autowired
|
|
|
private StringRedisTemplate redisTemplate;
|
|
|
|
|
|
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
|
|
|
/**
|
|
|
* 获取上次统计时间
|
|
|
*
|
|
@ -59,34 +63,13 @@ public class StatisticsESService {
|
|
|
String date = DateUtil.dateToStrLong(new Date());
|
|
|
|
|
|
try {
|
|
|
// date = redisTemplate.opsForValue().get("quota:date");
|
|
|
// JestClient jestClient = elasticFactory.getJestClient();
|
|
|
//
|
|
|
// Bulk.Builder bulk = new Bulk.Builder().defaultIndex("health_edu_article_patient_test").defaultType("health_edu_article_patient_test");
|
|
|
// PrescriptionDispensaryCode ap = new PrescriptionDispensaryCode();
|
|
|
// ap.setCode("aaaa");
|
|
|
// ap.setType(2);
|
|
|
// Index index = new Index.Builder(ap).build();
|
|
|
// bulk.addAction(index);
|
|
|
// BulkResult br = jestClient.execute(bulk.build());
|
|
|
date = redisTemplate.opsForValue().get("quota:date");
|
|
|
} catch (Exception e) {
|
|
|
e.printStackTrace();
|
|
|
}
|
|
|
|
|
|
return date;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 获取时间戳
|
|
|
*
|
|
|
* @return
|
|
|
*/
|
|
|
public String getQuotaTimeStamp() {
|
|
|
// return redisTemplate.opsForValue().get("quota:timeKey");
|
|
|
return "";
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// /**
|
|
@ -166,10 +149,9 @@ public class StatisticsESService {
|
|
|
public JSONArray getDateIncrementDetail(String startDate, String endDate, String interval, String area, int level, String index, String level2_type) throws Exception {
|
|
|
List<SaveModel> list = null;
|
|
|
if(StringUtils.isNotEmpty(level2_type)) {
|
|
|
|
|
|
list = elasticsearchUtil.findDateQuotaLevel1(startDate,endDate,area,level,index,"1",level2_type,interval,null);
|
|
|
list = elasticsearchUtil.findLineChartDateQuotaLevel1(startDate,endDate,area,level,index,"1",interval,level2_type);
|
|
|
}else{
|
|
|
list = elasticsearchUtil.findDateQuotaLevel0(startDate,endDate,area,level,index,"1",interval,null);
|
|
|
list = elasticsearchUtil.findLineChartDateQuotaLevel0(startDate,endDate,area,level,index,"1",interval);
|
|
|
}
|
|
|
List<JSONObject> result = new ArrayList<>();
|
|
|
for (SaveModel saveModel:list){
|
|
@ -191,11 +173,13 @@ public class StatisticsESService {
|
|
|
* @return
|
|
|
*/
|
|
|
public long getIntervalIncrement(String startDate, String endDate, String area, int level, String index) throws Exception {
|
|
|
List<SaveModel> list = elasticsearchUtil.findDateQuotaLevel0(startDate,endDate,area,level,index,"1",null,null);
|
|
|
if(list.size()>0){
|
|
|
return list.get(0).getResult2();
|
|
|
|
|
|
// 截止日期包含当天,则获取最新的更新时间
|
|
|
if (endDate.compareTo(new SimpleDateFormat("yyyy-MM-dd").format(new Date())) >= 0) {
|
|
|
endDate = elasticsearchUtil.getQuotaTime();
|
|
|
}
|
|
|
return 0;
|
|
|
SaveModel saveModel = elasticsearchUtil.findOneDateQuotaLevel0(startDate,endDate,area,level,index,"1");
|
|
|
return saveModel.getResult2();
|
|
|
}
|
|
|
|
|
|
// /**
|
|
@ -270,18 +254,17 @@ public class StatisticsESService {
|
|
|
*/
|
|
|
public long getTotalAmount(String startDate, String endDate, String area, int level, String index, String level2_type) throws Exception {
|
|
|
|
|
|
List<SaveModel> list = null;
|
|
|
SaveModel saveModel = null;
|
|
|
// 截止日期包含当天,则获取最新的更新时间
|
|
|
if (endDate.compareTo(new SimpleDateFormat("yyyy-MM-dd").format(new Date())) >= 0) {
|
|
|
endDate = elasticsearchUtil.getQuotaTime();
|
|
|
}
|
|
|
if(StringUtils.isNotEmpty(level2_type)){
|
|
|
|
|
|
list = elasticsearchUtil.findDateQuotaLevel1(startDate,endDate,area,level,index,"1",level2_type,null,null);
|
|
|
saveModel = elasticsearchUtil.findOneDateQuotaLevel1(startDate,endDate,area,level,index,"1",level2_type);
|
|
|
}else{
|
|
|
list = elasticsearchUtil.findDateQuotaLevel0(startDate,endDate,area,level,index,"1",null,null);
|
|
|
}
|
|
|
// List<SaveModel> list = findDateQuotaLevel1(startDate,endDate,area,level,index,"1",level2_type,null,null);
|
|
|
if(list.size()>0){
|
|
|
return list.get(0).getResult2();
|
|
|
saveModel = elasticsearchUtil.findOneDateQuotaLevel0(startDate,endDate,area,level,index,"1");
|
|
|
}
|
|
|
return 0L;
|
|
|
return saveModel.getResult2();
|
|
|
}
|
|
|
|
|
|
/**
|
|
@ -305,14 +288,12 @@ public class StatisticsESService {
|
|
|
levelTemp = lowLevel;
|
|
|
}
|
|
|
List<SaveModel> list = null;
|
|
|
// if(StringUtils.isNotEmpty(level2_type)){
|
|
|
//
|
|
|
// list = findDateQuotaLevel1(startDate,endDate,area,level,index,"1",level2_type,null,lowLevel);
|
|
|
// }else{
|
|
|
// list = findDateQuotaLevel0(startDate,endDate,area,level,index,"1",null,lowLevel);
|
|
|
// }
|
|
|
list = lowLevel(startDate,endDate,area,level, index,"1",lowLevel,level2_type);
|
|
|
// List<SaveModel> list = findDateQuotaLevel1(startDate,endDate,area,level,index,"1",level2_type,null,lowLevel);
|
|
|
if(StringUtils.isNotEmpty(level2_type)){
|
|
|
|
|
|
list = elasticsearchUtil.findListDateQuotaLevel1(startDate,endDate,area,level,index,"1",lowLevel,level2_type);
|
|
|
}else{
|
|
|
list = elasticsearchUtil.findListDateQuotaLevel0(startDate,endDate,area,level,index,"1",lowLevel);
|
|
|
}
|
|
|
if (org.springframework.util.StringUtils.isEmpty(year)) {
|
|
|
year = Constant.getNowYear();
|
|
|
}
|
|
@ -357,96 +338,19 @@ public class StatisticsESService {
|
|
|
return new JSONArray(resultList);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 查询截止某个日期某个区域后机构各下级指标累计情况
|
|
|
*
|
|
|
* @param endDate 截止日期
|
|
|
* @param area 区域或机构代码
|
|
|
* @param level 级别
|
|
|
* @return
|
|
|
*/
|
|
|
public List lowLevel(String startDate,String endDate, String area, int level, String index,String timeLevel,String lowLevel,String slaveKey1){
|
|
|
StringBuffer sql = new StringBuffer();
|
|
|
StringBuffer groupBy = new StringBuffer();
|
|
|
String lowLevelField = "";
|
|
|
if(SaveModel.cityLevel.equals(level+"")){
|
|
|
lowLevelField=SaveModel.townLevel;
|
|
|
}else if(SaveModel.townLevel.equals(level+"")){
|
|
|
lowLevelField=SaveModel.OrgLevel;
|
|
|
}else if(SaveModel.OrgLevel.equals(level+"")){
|
|
|
lowLevelField=SaveModel.teamLevel;
|
|
|
}else{
|
|
|
lowLevelField=SaveModel.teamLevel;
|
|
|
}
|
|
|
if (SaveModel.teamLevel.equals(lowLevelField)) {
|
|
|
sql.append("select team,teamName,sum(result1) result1, sum(result2) result2 from wlyy_quota_test where ");
|
|
|
groupBy.append(" group by team,teamName");
|
|
|
} else if (SaveModel.OrgLevel.equals(lowLevelField)) {
|
|
|
sql.append("select hospital,hospitalName,sum(result1) result1,sum(result2) result2 from wlyy_quota_test where ");
|
|
|
groupBy.append(" group by hospital");
|
|
|
} else if (SaveModel.townLevel.equals(lowLevelField)) {
|
|
|
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(lowLevelField)) {
|
|
|
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 in("+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 + "'");
|
|
|
}
|
|
|
if(StringUtils.isNotEmpty(slaveKey1)){
|
|
|
sql.append(" and slaveKey1='"+slaveKey1+"' ");
|
|
|
}
|
|
|
|
|
|
if(StringUtils.isNotEmpty(lowLevel)){
|
|
|
|
|
|
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,"","");
|
|
|
}
|
|
|
|
|
|
|
|
|
public JSONArray getIndexLevelTwototal(String endDate, String area, int level, String index) throws Exception{
|
|
|
|
|
|
// List<SaveModel> list =findOneDateQuotaLevel2(endDate, area, level, index,"1","");
|
|
|
List<SaveModel> list = elasticsearchUtil.findDateQuotaLevel1(endDate,endDate,area,level,index,"2",null,null,null);
|
|
|
if (endDate.compareTo(dateFormat.format(new Date())) >= 0) {
|
|
|
endDate = elasticsearchUtil.getQuotaTime();
|
|
|
}
|
|
|
List<SaveModel> list = elasticsearchUtil.findOneDateQuotaLevel1(endDate,area,level,index,"2");
|
|
|
List<Map<String, Object>> resultList = new ArrayList<>();
|
|
|
DecimalFormat df = new DecimalFormat("0.0000");
|
|
|
long total = 0;
|
|
|
for (SaveModel saveModel:list) {
|
|
|
Map<String, Object> map = new HashMap<>();
|
|
|
// if (SaveModel.OrgLevel.equals(level+"")) {
|
|
|
// map.put("code",saveModel.getHospital());
|
|
|
// map.put("name",saveModel.getHospitalName());
|
|
|
// } else if (SaveModel.townLevel.equals(level+"")) {
|
|
|
// map.put("code",saveModel.getTown());
|
|
|
// map.put("name",saveModel.getTownName());
|
|
|
// } else if (SaveModel.cityLevel.equals(level+"")) {
|
|
|
// map.put("code",saveModel.getCity());
|
|
|
// map.put("name",saveModel.getCityName());
|
|
|
// } else if (SaveModel.teamLevel.equals(level+"")) {
|
|
|
// map.put("code",saveModel.getTeam());
|
|
|
// map.put("name",saveModel.getCityName());
|
|
|
// }
|
|
|
// map.put("amount",saveModel.getResult2());
|
|
|
// map.put("rate",df.format((saveModel.getResult2() * 1.0000) / populationBase.getNum() * 100));
|
|
|
// map.put("rateString",saveModel.getResult2()+"/"+populationBase.getNum());
|
|
|
map.put("code",saveModel.getSlaveKey1());
|
|
|
map.put("name",saveModel.getSlaveKey1Name());
|
|
|
map.put("amount", saveModel.getResult2());
|
|
@ -469,14 +373,11 @@ public class StatisticsESService {
|
|
|
}
|
|
|
if (!index.equals("8")) {
|
|
|
if (index.equals("36")) {
|
|
|
//获取最新的统计时间
|
|
|
String updateTime = elasticsearchUtil.getQuotaTime();
|
|
|
//如果是查询36的指标 那么除数是签约总数
|
|
|
List<SaveModel> list2 = elasticsearchUtil.findDateQuotaLevel1(endDate,endDate, area, level, "1","2",null,null,null);
|
|
|
Integer num=0;
|
|
|
if(list2.size()>0){
|
|
|
num = list2.get(0).getResult2();
|
|
|
}else{
|
|
|
throw new Exception("param num error");
|
|
|
}
|
|
|
SaveModel saveModel = elasticsearchUtil.findOneDateQuotaLevel0(updateTime,area,level,index,"2");
|
|
|
Integer num = saveModel.getResult2();
|
|
|
for (Map<String, Object> map:resultList) {
|
|
|
double rateG = (total > 0 ? ((long) map.get("amount")) * 1.0000 / num * 100 : 0);
|
|
|
map.put("rate", df.format(rateG));
|
|
@ -520,7 +421,7 @@ public class StatisticsESService {
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 获取一级指标达到量
|
|
|
* 获取一级指标到达量
|
|
|
*
|
|
|
* @param endDate 截止日期
|
|
|
* @param area 区域
|
|
@ -530,14 +431,11 @@ public class StatisticsESService {
|
|
|
*/
|
|
|
public long getIndexTotal(String endDate, String area, int level, String index,String timeLevel) throws Exception{
|
|
|
|
|
|
// List<SaveModel> list =findDateQuotaLevel1("",endDate, area, level, index,timeLevel,null,null);
|
|
|
List<SaveModel> list = elasticsearchUtil.findDateQuotaLevel0(endDate,endDate, area, level, index,timeLevel,null,null);
|
|
|
// List<SaveModel> list =elasticsearchUtil.excute(sql.toString(),SaveModel.class,"","");
|
|
|
if(list.size()>0){
|
|
|
|
|
|
return list.get(0).getResult2();
|
|
|
if (endDate.compareTo(dateFormat.format(new Date())) >= 0) {
|
|
|
endDate = elasticsearchUtil.getQuotaTime();
|
|
|
}
|
|
|
return 0;
|
|
|
SaveModel saveModel = elasticsearchUtil.findOneDateQuotaLevel0(endDate,area,level,index,timeLevel);
|
|
|
return saveModel.getResult2();
|
|
|
}
|
|
|
|
|
|
/**
|
|
@ -550,11 +448,8 @@ public class StatisticsESService {
|
|
|
*/
|
|
|
public long getWeiJiaoFei(String endDate, String area, int level) throws Exception{
|
|
|
|
|
|
List<SaveModel> list = elasticsearchUtil.findDateQuotaLevel1(endDate,endDate,area,level,"16","2","0",null,null);
|
|
|
if(list.size()>0){
|
|
|
return list.get(0).getResult2();
|
|
|
}
|
|
|
return 0;
|
|
|
SaveModel saveModel = elasticsearchUtil.findOneDateQuotaLevel1(endDate,area,level,"16","2","0");
|
|
|
return saveModel.getResult2();
|
|
|
}
|
|
|
|
|
|
|
|
@ -575,19 +470,13 @@ public class StatisticsESService {
|
|
|
renewIndex = "29";
|
|
|
}
|
|
|
String timeKey = elasticsearchUtil.getQuotaTime();
|
|
|
List<SaveModel> list = elasticsearchUtil.findDateQuotaLevel0(timeKey,timeKey,area,Integer.parseInt(level),renewIndex,"2",null,null);
|
|
|
int renewNum = 0;
|
|
|
if(list.size()>0){
|
|
|
renewNum = list.get(0).getResult2();
|
|
|
}
|
|
|
SaveModel saveModel = elasticsearchUtil.findOneDateQuotaLevel0(timeKey,area,Integer.parseInt(level),renewIndex,"2");
|
|
|
int renewNum = saveModel.getResult2();
|
|
|
//根据年度获取去年的签约数 签约指标是1
|
|
|
String date = year + "-06-30";
|
|
|
String index = "1";
|
|
|
List<SaveModel> list2 = elasticsearchUtil.findDateQuotaLevel0(date,date,area,Integer.parseInt(level),index,"2",null,null);
|
|
|
int signNum = 0;
|
|
|
if (list2.size()>0) {
|
|
|
signNum = list2.get(0).getResult2();
|
|
|
}
|
|
|
SaveModel saveModel2 = elasticsearchUtil.findOneDateQuotaLevel0(date,area,Integer.parseInt(level),index,"2");
|
|
|
int signNum = saveModel2.getResult2();
|
|
|
JSONObject jo = new JSONObject();
|
|
|
jo.put("yesterYearSign", signNum);//去年的签约量
|
|
|
jo.put("thisYearRenew", renewNum);//今年的续签量
|
|
@ -605,11 +494,8 @@ public class StatisticsESService {
|
|
|
*/
|
|
|
public JSONObject getSignRate(String endDate, String area, int level, String year) throws Exception {
|
|
|
|
|
|
long signAmount = 0;
|
|
|
List<SaveModel> list = elasticsearchUtil.findDateQuotaLevel0(endDate,endDate,area,level,"13","2",null,null);
|
|
|
if(list.size()>0){
|
|
|
signAmount = list.get(0).getResult2();
|
|
|
}
|
|
|
SaveModel saveModel = elasticsearchUtil.findOneDateQuotaLevel0(endDate,area,level,"13","2");
|
|
|
long signAmount = saveModel.getResult2();
|
|
|
PopulationBase peopleNum = getPopulationBase(area, year);
|
|
|
JSONObject json = new JSONObject();
|
|
|
DecimalFormat df = new DecimalFormat("0.0000");
|
|
@ -636,11 +522,11 @@ public class StatisticsESService {
|
|
|
* @return
|
|
|
*/
|
|
|
public JSONObject getSignTaskRate(String endDate, String area, int level, String year) throws Exception {
|
|
|
List<SaveModel> list = elasticsearchUtil.findDateQuotaLevel0(endDate,endDate,area,level,"13","2",null,null);
|
|
|
long signAmount = 0;
|
|
|
if(list.size()>0){
|
|
|
signAmount = list.get(0).getResult2();
|
|
|
if (endDate.compareTo(dateFormat.format(new Date())) >= 0) {
|
|
|
endDate = elasticsearchUtil.getQuotaTime();
|
|
|
}
|
|
|
SaveModel saveModel = elasticsearchUtil.findOneDateQuotaLevel0(endDate,area,level,"13","2");
|
|
|
long signAmount = saveModel.getResult2();
|
|
|
PopulationBase peopleNum = getPopulationBase(area, year);
|
|
|
DecimalFormat df = new DecimalFormat("0.0000");
|
|
|
JSONObject json = new JSONObject();
|