|
@ -2711,10 +2711,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, SaveModel.timeLevel_DDL, "", low_level);
|
|
|
} else {
|
|
|
//续签量
|
|
|
renewSaveModels = elasticsearchUtil.findDateQuotaLevel1(timeKey,timeKey, area, level, index, "2", lowCode, "", low_level);
|
|
|
renewSaveModels = elasticsearchUtil.findDateQuotaLevel1(timeKey,timeKey, area, level, index, SaveModel.timeLevel_DDL, lowCode, "", low_level);
|
|
|
|
|
|
}
|
|
|
|
|
@ -2740,9 +2740,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", SaveModel.timeLevel_DDL, "", low_level);
|
|
|
} else {
|
|
|
yearsList = elasticsearchUtil.findDateQuotaLevel1(lastDate, lastDate, area, level, "17", "2", lowCode, "", low_level);
|
|
|
yearsList = elasticsearchUtil.findDateQuotaLevel1(lastDate, lastDate, area, level, "17", SaveModel.timeLevel_DDL, lowCode, "", low_level);
|
|
|
}
|
|
|
|
|
|
Map<String, SaveModel> resultMap = new HashMap<>();
|
|
@ -4272,21 +4272,27 @@ public class StatisticsESService {
|
|
|
totalModelList = (List<SaveModel>) elasticsearchUtil.findListDateQuotaLevel0(date, area, level, "1", SaveModel.timeLevel_DDL, low_level);
|
|
|
}
|
|
|
|
|
|
Map<String, Object> signOnlineMap = new HashMap<String, Object>();
|
|
|
if (esModelList != null && esModelList.size() > 0) {
|
|
|
for (SaveModel one : esModelList) {
|
|
|
Map<String, Object> maps = new HashMap<String, Object>();
|
|
|
maps.put("amount", one.getResult2().intValue());
|
|
|
//signOnlineMap.put("amount", one.getResult2().intValue());
|
|
|
/*if (low_level.equals("3") && one.getTown() != null) {
|
|
|
signOnlineMap.put("code", one.getTown());
|
|
|
signOnlineMap.put("name", one.getTownName());
|
|
|
} else if (low_level.equals("4") && one.getHospital() != null) {
|
|
|
signOnlineMap.put("code", one.getHospital());
|
|
|
signOnlineMap.put("name", one.getHospitalName());
|
|
|
} else if (low_level.equals("5") && one.getTeam() != null) {
|
|
|
signOnlineMap.put("code", one.getTeam());
|
|
|
signOnlineMap.put("name", one.getTeamName());
|
|
|
}*/
|
|
|
if (low_level.equals("3") && one.getTown() != null) {
|
|
|
maps.put("code", one.getTown());
|
|
|
maps.put("name", one.getTownName());
|
|
|
signOnlineMap.put(one.getTown(), one.getResult2().longValue());
|
|
|
} else if (low_level.equals("4") && one.getHospital() != null) {
|
|
|
maps.put("code", one.getHospital());
|
|
|
maps.put("name", one.getHospitalName());
|
|
|
signOnlineMap.put(one.getHospital(), one.getResult2().longValue());
|
|
|
} else if (low_level.equals("5") && one.getTeam() != null) {
|
|
|
maps.put("code", one.getTeam());
|
|
|
maps.put("name", one.getTeamName());
|
|
|
signOnlineMap.put(one.getTeam(), one.getResult2().longValue());
|
|
|
}
|
|
|
resultList.add(maps);
|
|
|
}
|
|
|
}
|
|
|
|
|
@ -4294,39 +4300,39 @@ public class StatisticsESService {
|
|
|
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 (resultList != null && resultList.size()>0) {
|
|
|
//查询今年的线上续签转map
|
|
|
Map<String, SaveModel> resultMap = new HashMap<>();
|
|
|
totalModelList.stream().forEach(one->{
|
|
|
if ("5".equals(low_level)) {
|
|
|
resultMap.put(one.getTeam(), one);
|
|
|
} else if ("4".equals(low_level)) {
|
|
|
resultMap.put(one.getHospital(), one);
|
|
|
} else if ("3".equals(low_level)) {
|
|
|
resultMap.put(one.getTown(), one);
|
|
|
}
|
|
|
});
|
|
|
|
|
|
/*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());
|
|
|
for (Map<String, Object> reMap : resultList) {
|
|
|
reMap.put("amount", reMap.get("amount") != null ? Long.valueOf(reMap.get("amount").toString()) : 0L);
|
|
|
Long signNun = 0L;
|
|
|
Long signOnlineNum = 0L;
|
|
|
//获取签约量
|
|
|
if (resultMap != null && resultMap.size() > 0) {
|
|
|
SaveModel one = resultMap.get(reMap.get("code").toString());
|
|
|
if (one != null) {
|
|
|
signNun = one.getResult2().longValue();
|
|
|
}
|
|
|
}*/
|
|
|
}
|
|
|
if (signOnlineMap != null && signOnlineMap.size() > 0) {
|
|
|
signOnlineNum = (Long) signOnlineMap.get(String.valueOf(reMap.get("code")));
|
|
|
if (signOnlineNum == null) {
|
|
|
signOnlineNum = 0L;
|
|
|
}
|
|
|
}
|
|
|
reMap.put("signNun", signNun);
|
|
|
reMap.put("signOnlineNum", signOnlineNum);
|
|
|
reMap.put("rate", getRange(signOnlineNum.intValue(), signNun.intValue(), 2));//线上签约率是 线上签约量/签约量
|
|
|
}
|
|
|
|
|
|
if ((level == 2 && "5".equals(lowLevel)) || (level == 4) || (level == 3 && "5".equals(lowLevel))) {
|
|
@ -4335,8 +4341,8 @@ public class StatisticsESService {
|
|
|
|
|
|
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");
|
|
|
long map1value = (long) o1.get("signOnlineNum");
|
|
|
long map2value = (long) o2.get("signOnlineNum");
|
|
|
|
|
|
if (map1value - map2value > 0) {
|
|
|
return sort == 1 ? -1 : 1;
|
|
@ -4353,6 +4359,16 @@ public class StatisticsESService {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 线上续签率
|
|
|
*
|
|
|
* @param index
|
|
|
* @param level
|
|
|
* @param area
|
|
|
* @param year
|
|
|
* @param lowCode
|
|
|
* @return
|
|
|
*/
|
|
|
public JSONObject getRenewPercentOnline(String index, Integer level, String area, String year, String lowCode) {
|
|
|
JSONObject jo = new JSONObject();
|
|
|
String renewOnlineIndex = "";//线上续签index
|
|
@ -4441,4 +4457,271 @@ public class StatisticsESService {
|
|
|
}
|
|
|
return jo;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 线上续签各等级地区的列表
|
|
|
* @param area
|
|
|
* @param level
|
|
|
* @param index
|
|
|
* @param sort
|
|
|
* @param lowLevel
|
|
|
* @param year
|
|
|
* @param lowCode
|
|
|
* @return
|
|
|
* @throws Exception
|
|
|
*/
|
|
|
public JSONArray getLevelTwoLowLevelTotalRenewOnline(String area, int level, String index, int sort, String lowLevel, String year, String lowCode) throws Exception {
|
|
|
|
|
|
String timeKey = elasticsearchUtil.getQuotaTime();
|
|
|
String low_level = String.valueOf(StringUtils.isEmpty(lowLevel) ? (level + 1) : lowLevel);
|
|
|
String renewIndex = "";//续签指标
|
|
|
if (level==3){//区
|
|
|
if (StringUtils.isNotBlank(lowCode)){
|
|
|
renewIndex="44";
|
|
|
}else{
|
|
|
renewIndex="54";
|
|
|
}
|
|
|
}
|
|
|
if (level==4){//社区
|
|
|
if (StringUtils.isNotBlank(lowCode)){
|
|
|
renewIndex="43";
|
|
|
}else{
|
|
|
renewIndex="53";
|
|
|
}
|
|
|
}
|
|
|
if (level==5){//团队
|
|
|
if (StringUtils.isNotBlank(lowCode)){
|
|
|
renewIndex="42";
|
|
|
}else{
|
|
|
renewIndex="52";
|
|
|
}
|
|
|
}
|
|
|
List<Map<String, Object>> resultList = new ArrayList<>();//续签量
|
|
|
Map<String, Integer> renewMap = new HashMap<>(); //续签的的列表转map
|
|
|
List<SaveModel> renewSaveModels = new ArrayList<SaveModel>();
|
|
|
List<SaveModel> renewOnlineList = new ArrayList<SaveModel>();
|
|
|
|
|
|
if (StringUtils.isEmpty(lowCode)) {
|
|
|
//续签量
|
|
|
renewSaveModels = elasticsearchUtil.findDateQuotaLevel0(timeKey, timeKey, area, level, renewIndex, SaveModel.timeLevel_DDL, "", low_level);
|
|
|
//线上续签量
|
|
|
renewOnlineList = elasticsearchUtil.findDateQuotaLevel0(timeKey, timeKey, area, level, index, SaveModel.timeLevel_DDL, "", low_level);
|
|
|
} else {
|
|
|
//续签量
|
|
|
renewSaveModels = elasticsearchUtil.findDateQuotaLevel1(timeKey,timeKey, area, level, renewIndex, SaveModel.timeLevel_DDL, lowCode, "", low_level);
|
|
|
//线上续签量
|
|
|
renewOnlineList = elasticsearchUtil.findDateQuotaLevel1(timeKey, timeKey, area, level, index, SaveModel.timeLevel_DDL, lowCode, "", low_level);
|
|
|
}
|
|
|
|
|
|
if (renewSaveModels != null && renewSaveModels.size() > 0) {
|
|
|
for (SaveModel saveModel : renewSaveModels) {
|
|
|
if ("3".equals(low_level) && saveModel.getTown() != null) {
|
|
|
renewMap.put(saveModel.getTown(), saveModel.getResult2().intValue());
|
|
|
} else if ("4".equals(low_level) && saveModel.getHospital() != null) {
|
|
|
renewMap.put(saveModel.getHospital(), saveModel.getResult2().intValue());
|
|
|
} else if ("5".equals(low_level) && saveModel.getTeam() != null) {
|
|
|
renewMap.put(saveModel.getTeam(), saveModel.getResult2().intValue());
|
|
|
} else {
|
|
|
continue;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
//自建结果集
|
|
|
resultList = getLowLevelMapKey(level, low_level, area);
|
|
|
|
|
|
if (resultList != null && resultList.size() > 0) {
|
|
|
//查询今年的线上续签转map
|
|
|
Map<String, SaveModel> resultMap = new HashMap<>();
|
|
|
renewOnlineList.stream().forEach(one -> {
|
|
|
if ("5".equals(low_level)) {
|
|
|
resultMap.put(one.getTeam(), one);
|
|
|
} else if ("4".equals(low_level)) {
|
|
|
resultMap.put(one.getHospital(), one);
|
|
|
} else if ("3".equals(low_level)) {
|
|
|
resultMap.put(one.getTown(), one);
|
|
|
}
|
|
|
});
|
|
|
for (Map<String, Object> reMap : resultList) {
|
|
|
reMap.put("amount", reMap.get("amount") != null ? Long.valueOf(reMap.get("amount").toString()) : 0L);
|
|
|
int renewOnlineNum = 0;
|
|
|
Integer renewNum = 0;
|
|
|
//获取线上续签数量
|
|
|
if (resultMap != null && resultMap.size() > 0) {
|
|
|
SaveModel one = resultMap.get(reMap.get("code").toString());
|
|
|
if (one != null) {
|
|
|
renewOnlineNum = one.getResult2().intValue();
|
|
|
}
|
|
|
}
|
|
|
if (renewMap != null && renewMap.size() > 0) {
|
|
|
renewNum = renewMap.get(reMap.get("code").toString());
|
|
|
if (renewNum == null) {
|
|
|
renewNum = 0;
|
|
|
}
|
|
|
}
|
|
|
reMap.put("renewNum", renewNum);
|
|
|
reMap.put("renewOnlineNum", renewOnlineNum);
|
|
|
reMap.put("rate", getRange(renewOnlineNum, renewNum, 2));//线上续签率是 线上续签量/续签量
|
|
|
}
|
|
|
|
|
|
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) {
|
|
|
int map1value = (int) o1.get("renewOnlineNum");
|
|
|
int map2value = (int) o2.get("renewOnlineNum");
|
|
|
|
|
|
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();
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 居民分析--线上和线下缴费
|
|
|
* @param level
|
|
|
* @param area
|
|
|
* @param year
|
|
|
* @return
|
|
|
*/
|
|
|
public JSONObject getSignPayOnline(Integer level, String area, String year) {
|
|
|
JSONObject jo = new JSONObject();
|
|
|
String timeKey ="";
|
|
|
try{
|
|
|
if (StringUtils.isNotEmpty(year)) {
|
|
|
if (Constant.getNowYear().equals(year)) {
|
|
|
timeKey = elasticsearchUtil.getQuotaTime();
|
|
|
} else {
|
|
|
Integer coutYear = Integer.parseInt(year);
|
|
|
timeKey = coutYear + 1 + "-06-30";
|
|
|
}
|
|
|
}
|
|
|
//获取已缴费的总人数
|
|
|
SaveModel signSaveModel = elasticsearchUtil.findOneDateQuotaLevel0(timeKey,area,level,"1",SaveModel.timeLevel_DDL);
|
|
|
//获取线上缴费的人数
|
|
|
SaveModel signPayOnlineSaveModel = elasticsearchUtil.findOneDateQuotaLevel0(timeKey,area,level,"82",SaveModel.timeLevel_DDL);
|
|
|
int signNum = signSaveModel.getResult2().intValue();
|
|
|
int signPayOnlineNum = signPayOnlineSaveModel.getResult2().intValue();
|
|
|
//线下缴费=已缴费的总人数-线上缴费
|
|
|
int signPayUnderNum = signNum-signPayOnlineNum;
|
|
|
jo.put("signPayOnlineNum", signPayOnlineNum);//线上缴费数量
|
|
|
jo.put("signPayUnderNum", signPayUnderNum);//线下缴费数量
|
|
|
jo.put("signPayOnlineRate", getRange(signPayOnlineNum, signNum, 2));//线上缴费率 50.00%
|
|
|
jo.put("signPayUnderRate", getRange(signPayUnderNum, signNum, 2));//线下缴费率 50.00%
|
|
|
} catch (Exception e) {
|
|
|
e.getMessage();
|
|
|
jo.put("status", "0");
|
|
|
jo.put("error", "查询失败" + e.getMessage());
|
|
|
return jo;
|
|
|
}
|
|
|
return jo;
|
|
|
}
|
|
|
|
|
|
public JSONArray getLowLevelSignPayOnline(String area, int level, String index, int sort, String lowLevel, String year) throws Exception {
|
|
|
|
|
|
String timeKey = "";
|
|
|
if (StringUtils.isNotEmpty(year)) {
|
|
|
if (Constant.getNowYear().equals(year)) {
|
|
|
timeKey = elasticsearchUtil.getQuotaTime();
|
|
|
} else {
|
|
|
Integer coutYear = Integer.parseInt(year);
|
|
|
timeKey = coutYear + 1 + "-06-30";
|
|
|
}
|
|
|
}
|
|
|
String low_level = String.valueOf(StringUtils.isEmpty(lowLevel) ? (level + 1) : lowLevel);
|
|
|
List<Map<String, Object>> resultList = new ArrayList<>();
|
|
|
Map<String, Integer> onlineMap = new HashMap<>();
|
|
|
List<SaveModel> signList = new ArrayList<SaveModel>();
|
|
|
List<SaveModel> signPayOnlineList = new ArrayList<SaveModel>();
|
|
|
|
|
|
//总缴费人数
|
|
|
signList = elasticsearchUtil.findDateQuotaLevel0(timeKey, timeKey, area, level, "1", SaveModel.timeLevel_DDL, "", low_level);
|
|
|
//线上缴费人数
|
|
|
signPayOnlineList = elasticsearchUtil.findDateQuotaLevel0(timeKey, timeKey, area, level, index, SaveModel.timeLevel_DDL, "", low_level);
|
|
|
|
|
|
if (signPayOnlineList != null && signPayOnlineList.size() > 0) {
|
|
|
for (SaveModel saveModel : signPayOnlineList) {
|
|
|
if ("3".equals(low_level) && saveModel.getTown() != null) {
|
|
|
onlineMap.put(saveModel.getTown(), saveModel.getResult2().intValue());
|
|
|
} else if ("4".equals(low_level) && saveModel.getHospital() != null) {
|
|
|
onlineMap.put(saveModel.getHospital(), saveModel.getResult2().intValue());
|
|
|
} else if ("5".equals(low_level) && saveModel.getTeam() != null) {
|
|
|
onlineMap.put(saveModel.getTeam(), saveModel.getResult2().intValue());
|
|
|
} else {
|
|
|
continue;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
//自建结果集
|
|
|
resultList = getLowLevelMapKey(level, low_level, area);
|
|
|
|
|
|
if (resultList != null && resultList.size() > 0) {
|
|
|
//查询今年的线上续签转map
|
|
|
Map<String, SaveModel> resultMap = new HashMap<>();
|
|
|
signList.stream().forEach(one -> {
|
|
|
if ("5".equals(low_level)) {
|
|
|
resultMap.put(one.getTeam(), one);
|
|
|
} else if ("4".equals(low_level)) {
|
|
|
resultMap.put(one.getHospital(), one);
|
|
|
} else if ("3".equals(low_level)) {
|
|
|
resultMap.put(one.getTown(), one);
|
|
|
}
|
|
|
});
|
|
|
for (Map<String, Object> reMap : resultList) {
|
|
|
//reMap.put("amount", reMap.get("amount") != null ? Long.valueOf(reMap.get("amount").toString()) : 0L);
|
|
|
int signNum = 0;
|
|
|
Integer signPayOnlineNum = 0;
|
|
|
//获取总缴费人数
|
|
|
if (resultMap != null && resultMap.size() > 0) {
|
|
|
SaveModel one = resultMap.get(String.valueOf(reMap.get("code")));
|
|
|
if (one != null) {
|
|
|
signNum = one.getResult2().intValue();
|
|
|
}
|
|
|
}
|
|
|
//获取线上缴费人数
|
|
|
if (onlineMap != null && onlineMap.size() > 0) {
|
|
|
signPayOnlineNum = onlineMap.get(String.valueOf(reMap.get("code")));
|
|
|
if (signPayOnlineNum == null) {
|
|
|
signPayOnlineNum = 0;
|
|
|
}
|
|
|
}
|
|
|
reMap.put("signNum", signNum);
|
|
|
reMap.put("signPayOnlineNum", signPayOnlineNum);
|
|
|
}
|
|
|
|
|
|
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) {
|
|
|
int map1value = (int) o1.get("signPayOnlineNum");
|
|
|
int map2value = (int) o2.get("signPayOnlineNum");
|
|
|
|
|
|
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();
|
|
|
}
|
|
|
}
|
|
|
}
|