|
@ -586,9 +586,9 @@ public class StatisticsESService {
|
|
* @param level 级别
|
|
* @param level 级别
|
|
* @return
|
|
* @return
|
|
*/
|
|
*/
|
|
public JSONObject getSignRate(String endDate, String area, int level, String year) throws Exception {
|
|
|
|
|
|
public JSONObject getSignRate(String endDate, String area, int level, String year,String index) throws Exception {
|
|
|
|
|
|
SaveModel saveModel = elasticsearchUtil.findOneDateQuotaLevel0(endDate, area, level, "1", "2");
|
|
|
|
|
|
SaveModel saveModel = elasticsearchUtil.findOneDateQuotaLevel0(endDate, area, level, index, SaveModel.timeLevel_DDL);
|
|
long signAmount = saveModel.getResult2().longValue();
|
|
long signAmount = saveModel.getResult2().longValue();
|
|
PopulationBase peopleNum = getPopulationBase(area, year);
|
|
PopulationBase peopleNum = getPopulationBase(area, year);
|
|
JSONObject json = new JSONObject();
|
|
JSONObject json = new JSONObject();
|
|
@ -686,6 +686,73 @@ public class StatisticsESService {
|
|
return json;
|
|
return json;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* 查询截止某个日期线上签约率
|
|
|
|
* @author zhangdan 2017-11-27
|
|
|
|
*
|
|
|
|
* @param endDate
|
|
|
|
* @param area
|
|
|
|
* @param level
|
|
|
|
* @param year
|
|
|
|
* @param signAmount
|
|
|
|
* @return
|
|
|
|
* @throws Exception
|
|
|
|
*/
|
|
|
|
public JSONObject getSignOnlineRate(String endDate, String area, int level, String year,long signAmount) throws Exception {
|
|
|
|
if (endDate.compareTo(dateFormat.format(new Date())) >= 0) {
|
|
|
|
endDate = elasticsearchUtil.getQuotaTime();
|
|
|
|
}
|
|
|
|
SaveModel saveModel = elasticsearchUtil.findOneDateQuotaLevel0(endDate, area, level, "72", "2");
|
|
|
|
long signOnLineAmount = saveModel.getResult2().longValue();
|
|
|
|
DecimalFormat df = new DecimalFormat("0.0000");
|
|
|
|
JSONObject json = new JSONObject();
|
|
|
|
json.put("rate", (signOnLineAmount>0 ? df.format((signOnLineAmount * 1.0000) / signAmount * 100):0));
|
|
|
|
json.put("rateString", signOnLineAmount + "/" + signAmount);
|
|
|
|
json.put("signOnline", signOnLineAmount);
|
|
|
|
json.put("sign", signAmount);
|
|
|
|
return json;
|
|
|
|
}
|
|
|
|
|
|
|
|
public JSONObject getGroupInfoOnline(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> onlineList = elasticsearchUtil.findDateQuotaLevel1(endDate, endDate, area, level, "17", "2", lowCode, null, null);
|
|
|
|
long total = 0;
|
|
|
|
long onlineTotal = 0;
|
|
|
|
if (list.size() > 0) {
|
|
|
|
total = list.get(0).getResult2().longValue();
|
|
|
|
}
|
|
|
|
if (onlineList.size() > 0) {
|
|
|
|
onlineTotal = onlineList.get(0).getResult2().longValue();
|
|
|
|
}
|
|
|
|
int num = 0;
|
|
|
|
PopulationBase peopleNum = getPopulationBase(area, year);
|
|
|
|
if (peopleNum != null) {
|
|
|
|
if (lowCode.equals("3")) {
|
|
|
|
num = peopleNum.getSixFiveNum();
|
|
|
|
} else if (lowCode.equals("1")) {
|
|
|
|
num = peopleNum.getGxyNum();
|
|
|
|
} else if (lowCode.equals("2")) {
|
|
|
|
num = peopleNum.getTnbNum();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
JSONObject json = new JSONObject();
|
|
|
|
DecimalFormat df = new DecimalFormat("0.0000");
|
|
|
|
json.put("sign", total);
|
|
|
|
JSONObject signRate = new JSONObject();
|
|
|
|
signRate.put("sign", total);
|
|
|
|
signRate.put("people", num);
|
|
|
|
signRate.put("rate", df.format((total * 1.0000) / num * 100));
|
|
|
|
signRate.put("rateString", total + "/" + num);
|
|
|
|
json.put("signRate", signRate);
|
|
|
|
JSONObject signOnlineRate = new JSONObject();
|
|
|
|
signOnlineRate.put("signOnline", onlineTotal);
|
|
|
|
signOnlineRate.put("sign", total);
|
|
|
|
signOnlineRate.put("rate", df.format((onlineTotal * 1.0000) / total * 100));
|
|
|
|
signOnlineRate.put("rateString", onlineTotal + "/" + total);
|
|
|
|
json.put("signOnlineRate", signOnlineRate);
|
|
|
|
return json;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
* 获取2个数的百分比
|
|
* 获取2个数的百分比
|
|
@ -1782,7 +1849,7 @@ public class StatisticsESService {
|
|
map.put("signRegulationNum", signRegulationNum);//调控量
|
|
map.put("signRegulationNum", signRegulationNum);//调控量
|
|
|
|
|
|
if (!low_level.equals("5")) {
|
|
if (!low_level.equals("5")) {
|
|
String code = map.get("code").toString();
|
|
|
|
|
|
String code = String.valueOf(map.get("code"));
|
|
PopulationBase peopleNum = getPopulationBase(code, year);
|
|
PopulationBase peopleNum = getPopulationBase(code, year);
|
|
if (peopleNum != null) {
|
|
if (peopleNum != null) {
|
|
map.put("rate", df.format(((long) map.get("amount") * 1.0000) / peopleNum.getNum() * 100));
|
|
map.put("rate", df.format(((long) map.get("amount") * 1.0000) / peopleNum.getNum() * 100));
|
|
@ -4173,5 +4240,205 @@ public class StatisticsESService {
|
|
return resultJSON;
|
|
return resultJSON;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* 线上签约各个地区等级的到达量情况
|
|
|
|
* @author zhangdan 2017-11-28
|
|
|
|
*
|
|
|
|
* @param date
|
|
|
|
* @param area
|
|
|
|
* @param level
|
|
|
|
* @param index
|
|
|
|
* @param sort
|
|
|
|
* @param lowLevel
|
|
|
|
* @param year
|
|
|
|
* @return
|
|
|
|
* @throws Exception
|
|
|
|
*/
|
|
|
|
public JSONArray getLowLevelTotalOnlineTeamLeader(String date, String area, int level, String index, int sort, String lowLevel, String year,String lowCode) throws Exception {
|
|
|
|
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
|
|
|
|
String low_level = String.valueOf(org.springframework.util.StringUtils.isEmpty(lowLevel) ? (level + 1) : lowLevel);
|
|
|
|
List<Map<String, Object>> resultList = new ArrayList<>();
|
|
|
|
|
|
|
|
if (date.compareTo(dateFormat.format(new Date())) >= 0) {
|
|
|
|
date = elasticsearchUtil.getQuotaTime();
|
|
|
|
}
|
|
|
|
List<SaveModel> esModelList = null;
|
|
|
|
List<SaveModel> totalModelList = null;
|
|
|
|
if (StringUtils.isNotEmpty(lowCode)){
|
|
|
|
esModelList = (List<SaveModel>) elasticsearchUtil.findListDateQuotaLevel1(date, area, level, index, SaveModel.timeLevel_DDL, low_level,lowCode);
|
|
|
|
totalModelList = (List<SaveModel>) elasticsearchUtil.findListDateQuotaLevel1(date, area, level, "17", SaveModel.timeLevel_DDL, low_level,lowCode);
|
|
|
|
}else{
|
|
|
|
esModelList = (List<SaveModel>) elasticsearchUtil.findListDateQuotaLevel0(date, area, level, index, SaveModel.timeLevel_DDL, low_level);
|
|
|
|
totalModelList = (List<SaveModel>) elasticsearchUtil.findListDateQuotaLevel0(date, area, level, "1", SaveModel.timeLevel_DDL, low_level);
|
|
|
|
}
|
|
|
|
|
|
|
|
if (esModelList != null && esModelList.size() > 0) {
|
|
|
|
for (SaveModel one : esModelList) {
|
|
|
|
Map<String, Object> maps = new HashMap<String, Object>();
|
|
|
|
maps.put("amount", one.getResult2().intValue());
|
|
|
|
if (low_level.equals("3") && one.getTown() != null) {
|
|
|
|
maps.put("code", one.getTown());
|
|
|
|
maps.put("name", one.getTownName());
|
|
|
|
} else if (low_level.equals("4") && one.getHospital() != null) {
|
|
|
|
maps.put("code", one.getHospital());
|
|
|
|
maps.put("name", one.getHospitalName());
|
|
|
|
} else if (low_level.equals("5") && one.getTeam() != null) {
|
|
|
|
maps.put("code", one.getTeam());
|
|
|
|
maps.put("name", one.getTeamName());
|
|
|
|
}
|
|
|
|
resultList.add(maps);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// 结果为空时,自建结果集
|
|
|
|
if (resultList == null || resultList.size() < 1) {
|
|
|
|
resultList = getLowLevelMapKey(level, low_level, area);
|
|
|
|
}
|
|
|
|
if (resultList != null) {
|
|
|
|
DecimalFormat df = new DecimalFormat("0.0000");
|
|
|
|
for (int i = 0; i < resultList.size(); i++) {
|
|
|
|
Map<String, Object> map = resultList.get(i);
|
|
|
|
long signOnline =Long.valueOf(String.valueOf(map.get("amount")));
|
|
|
|
map.put("amount", map.get("amount") != null ? signOnline : 0L);
|
|
|
|
for (SaveModel totalOne : totalModelList) {
|
|
|
|
if (low_level.equals("3") && String.valueOf(map.get("code")).equals(totalOne.getTown())) {
|
|
|
|
map.put("signAmount",totalOne.getResult2().longValue());
|
|
|
|
map.put("rate",df.format(signOnline*1.0/totalOne.getResult2().longValue()*1000));
|
|
|
|
} else if (low_level.equals("4") && String.valueOf(map.get("code")).equals(totalOne.getHospital())) {
|
|
|
|
map.put("signAmount",totalOne.getResult2().longValue());
|
|
|
|
map.put("rate",df.format(signOnline*1.0/totalOne.getResult2().longValue()*1000));
|
|
|
|
} else if (low_level.equals("5") && totalOne.getTeam() != null) {
|
|
|
|
map.put("signAmount",totalOne.getResult2().longValue());
|
|
|
|
map.put("rate",df.format(signOnline*1.0/totalOne.getResult2().longValue()*1000));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/*if (!low_level.equals("5")) {
|
|
|
|
String code = String.valueOf(map.get("code"));
|
|
|
|
PopulationBase peopleNum = getPopulationBase(code, year);
|
|
|
|
if (peopleNum != null) {
|
|
|
|
map.put("rate", df.format(((long) map.get("amount") * 1.0000) / peopleNum.getNum() * 100));
|
|
|
|
map.put("taskRate", df.format(((long) map.get("amount") * 1.0000) / peopleNum.getTaskNum() * 100));
|
|
|
|
map.put("targetRate", df.format(peopleNum.getTaskNum() * 1.0000 / peopleNum.getNum() * 100));
|
|
|
|
map.put("rateString", map.get("amount") + "/" + peopleNum.getNum());
|
|
|
|
map.put("taskRateString", map.get("amount") + "/" + peopleNum.getTaskNum());
|
|
|
|
map.put("targetRateString", peopleNum.getTaskNum() + "/" + peopleNum.getNum());
|
|
|
|
map.put("num", peopleNum.getNum());
|
|
|
|
map.put("task", peopleNum.getTaskNum());
|
|
|
|
}
|
|
|
|
}*/
|
|
|
|
}
|
|
|
|
|
|
|
|
if ((level == 2 && "5".equals(lowLevel)) || (level == 4) || (level == 3 && "5".equals(lowLevel))) {
|
|
|
|
translateTeamLeaderName(resultList);
|
|
|
|
}
|
|
|
|
|
|
|
|
Collections.sort(resultList, new Comparator<Map<String, Object>>() {
|
|
|
|
public int compare(Map<String, Object> o1, Map<String, Object> o2) {
|
|
|
|
long map1value = (long) o1.get("amount");
|
|
|
|
long map2value = (long) o2.get("amount");
|
|
|
|
|
|
|
|
if (map1value - map2value > 0) {
|
|
|
|
return sort == 1 ? -1 : 1;
|
|
|
|
} else if (map1value - map2value < 0) {
|
|
|
|
return sort == 1 ? 1 : -1;
|
|
|
|
} else {
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
});
|
|
|
|
return new JSONArray(resultList);
|
|
|
|
} else {
|
|
|
|
return new JSONArray();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
public JSONObject getRenewPercentOnline(String index, Integer level, String area, String year, String lowCode) {
|
|
|
|
JSONObject jo = new JSONObject();
|
|
|
|
String renewOnlineIndex = "";//线上续签index
|
|
|
|
String signIndex ="1";
|
|
|
|
String renewIndex = index;//续签index.
|
|
|
|
String date = year + "-06-30";
|
|
|
|
try {
|
|
|
|
if (level == 5) {
|
|
|
|
//团队的线上续签
|
|
|
|
if (StringUtils.isNoneBlank(lowCode)) {
|
|
|
|
//服务类型维度
|
|
|
|
renewOnlineIndex = "81";
|
|
|
|
} else {
|
|
|
|
renewOnlineIndex = "77";
|
|
|
|
}
|
|
|
|
} else if (level == 4) {
|
|
|
|
//社区的线上续签
|
|
|
|
if (StringUtils.isNoneBlank(lowCode)) {
|
|
|
|
//服务类型维度
|
|
|
|
renewOnlineIndex = "80";
|
|
|
|
} else {
|
|
|
|
renewOnlineIndex = "76";
|
|
|
|
}
|
|
|
|
} else if (level ==3){
|
|
|
|
//区的线上续签
|
|
|
|
if (StringUtils.isNoneBlank(lowCode)) {
|
|
|
|
//服务类型维度
|
|
|
|
renewOnlineIndex = "79";
|
|
|
|
} else {
|
|
|
|
renewOnlineIndex = "75";
|
|
|
|
}
|
|
|
|
}else{
|
|
|
|
//市的线上续签
|
|
|
|
if (StringUtils.isNoneBlank(lowCode)) {
|
|
|
|
//服务类型维度
|
|
|
|
renewOnlineIndex = "78";
|
|
|
|
} else {
|
|
|
|
renewOnlineIndex = "74";
|
|
|
|
}
|
|
|
|
}
|
|
|
|
String timeKey = elasticsearchUtil.getQuotaTime();
|
|
|
|
SaveModel renewSaveModel = new SaveModel();
|
|
|
|
SaveModel signSaveModel = new SaveModel();
|
|
|
|
SaveModel renewOnlineSaveMolde = new SaveModel();
|
|
|
|
if (StringUtils.isNotBlank(lowCode)) {
|
|
|
|
//续签量
|
|
|
|
renewSaveModel = elasticsearchUtil.findOneDateQuotaLevel1(timeKey, area, level, renewIndex, SaveModel.timeLevel_DDL, lowCode);
|
|
|
|
//线上续签量
|
|
|
|
renewOnlineSaveMolde = elasticsearchUtil.findOneDateQuotaLevel1(timeKey,area,level,renewOnlineIndex,SaveModel.timeLevel_DDL,lowCode);
|
|
|
|
} else {
|
|
|
|
//续签量
|
|
|
|
renewSaveModel = elasticsearchUtil.findOneDateQuotaLevel0(timeKey, area, level, renewIndex, SaveModel.timeLevel_DDL);
|
|
|
|
renewOnlineSaveMolde = elasticsearchUtil.findOneDateQuotaLevel0(timeKey,area,level,renewOnlineIndex,SaveModel.timeLevel_DDL);
|
|
|
|
}
|
|
|
|
int renewNum = renewSaveModel.getResult2().intValue();
|
|
|
|
int renewOnlineNum = renewOnlineSaveMolde.getResult2().intValue();
|
|
|
|
//根据年度获取去年的签约数 签约指标是1
|
|
|
|
if (StringUtils.isNoneBlank(lowCode)) {
|
|
|
|
if ("3".equals(lowCode)) {
|
|
|
|
//老年人
|
|
|
|
lowCode = "3";
|
|
|
|
} else if ("4".equals(lowCode)) {
|
|
|
|
//高血压
|
|
|
|
lowCode = "1";
|
|
|
|
} else if ("5".equals(lowCode)) {
|
|
|
|
//糖尿病
|
|
|
|
lowCode = "2";
|
|
|
|
}
|
|
|
|
signIndex = "17";
|
|
|
|
signSaveModel = elasticsearchUtil.findOneDateQuotaLevel1(date, area, level, signIndex, SaveModel.timeLevel_DDL, lowCode);
|
|
|
|
} else {
|
|
|
|
signSaveModel = elasticsearchUtil.findOneDateQuotaLevel0(date, area, level, signIndex, SaveModel.timeLevel_DDL);
|
|
|
|
}
|
|
|
|
//签约量
|
|
|
|
int signNum = signSaveModel.getResult2().intValue();
|
|
|
|
jo.put("yesterYearSign", signNum);//去年的签约量
|
|
|
|
jo.put("thisYearRenew", renewNum);//今年的续签量
|
|
|
|
jo.put("thisYearRenewOnline",renewOnlineNum);//今年的线上续签量
|
|
|
|
jo.put("renewRange", getRange(renewNum, signNum, 2));//续签率 50.00%
|
|
|
|
jo.put("renewRangeOnline", getRange(renewOnlineNum, renewNum, 2));//线上续签率 50.00%
|
|
|
|
} catch (Exception e) {
|
|
|
|
e.getMessage();
|
|
|
|
jo.put("status", "0");
|
|
|
|
jo.put("error", "查询失败" + e.getMessage());
|
|
|
|
return jo;
|
|
|
|
}
|
|
|
|
return jo;
|
|
|
|
}
|
|
}
|
|
}
|