瀏覽代碼

Merge branch 'dev' of chenweida/patient-co-management into dev

chenweida 7 年之前
父節點
當前提交
b808d336f2

+ 305 - 182
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/service/app/statisticsES/StatisticsESService.java

@ -90,8 +90,6 @@ public class StatisticsESService {
    }
//    /**
//     * 查询某一天父level下的子level 例如 查询市下面的团队,或者区下面的团队
//     *
@ -167,23 +165,24 @@ public class StatisticsESService {
     * @return
     */
    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<SaveModel> list = null;
        if (StringUtils.isNotEmpty(level2_type)) {
            list = elasticsearchUtil.findDateQuotaLevel1(startDate,endDate,area,level,index,"1",level2_type,interval,null);
        }else{
            list = elasticsearchUtil.findDateQuotaLevel0(startDate,endDate,area,level,index,"1",interval,null);
            list = elasticsearchUtil.findDateQuotaLevel1(startDate, endDate, area, level, index, "1", level2_type, interval, null);
        } else {
            list = elasticsearchUtil.findDateQuotaLevel0(startDate, endDate, area, level, index, "1", interval, null);
        }
        List<JSONObject> result = new ArrayList<>();
        for (SaveModel saveModel:list){
        for (SaveModel saveModel : list) {
            JSONObject range = new JSONObject();
            range.put("range", DateUtil.dateToStr(saveModel.getQuotaDate(),"yyyy-MM-dd"));
            range.put("range", DateUtil.dateToStr(saveModel.getQuotaDate(), "yyyy-MM-dd"));
            range.put("amount", saveModel.getResult2());
            result.add(range);
        }
        return new JSONArray(result);
    }
    /**
     * 获取某个指标在某个期间的增长量
     *
@ -194,8 +193,8 @@ 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){
        List<SaveModel> list = elasticsearchUtil.findDateQuotaLevel0(startDate, endDate, area, level, index, "1", null, null);
        if (list.size() > 0) {
            return list.get(0).getResult2();
        }
        return 0;
@ -260,8 +259,6 @@ public class StatisticsESService {
//    }
    /**
     * 查询截止某个日期累计量
     *
@ -271,17 +268,17 @@ public class StatisticsESService {
     * @param level2_type level2_type的类型
     * @return
     */
    public long getTotalAmount(String startDate, String endDate, String area, int level, String index, String level2_type)  throws Exception {
    public long getTotalAmount(String startDate, String endDate, String area, int level, String index, String level2_type) throws Exception {
        List<SaveModel>  list = null;
        if(StringUtils.isNotEmpty(level2_type)){
        List<SaveModel> list = null;
        if (StringUtils.isNotEmpty(level2_type)) {
            list = elasticsearchUtil.findDateQuotaLevel1(startDate,endDate,area,level,index,"1",level2_type,null,null);
        }else{
            list = elasticsearchUtil.findDateQuotaLevel0(startDate,endDate,area,level,index,"1",null,null);
            list = elasticsearchUtil.findDateQuotaLevel1(startDate, endDate, area, level, index, "1", level2_type, null, null);
        } 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){
        if (list.size() > 0) {
            return list.get(0).getResult2();
        }
        return 0L;
@ -303,43 +300,43 @@ public class StatisticsESService {
        if (!org.springframework.util.StringUtils.isEmpty(year)) {
            startDate = year + "-06-30' ";
        }
        String levelTemp = level+"";
        if(StringUtils.isNotEmpty(lowLevel)){
        String levelTemp = level + "";
        if (StringUtils.isNotEmpty(lowLevel)) {
            levelTemp = lowLevel;
        }
        List<SaveModel>  list = null;
        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 = 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 (org.springframework.util.StringUtils.isEmpty(year)) {
            year = Constant.getNowYear();
        }
        List<Map<String, Object>> resultList = new ArrayList<>();
        PopulationBase populationBase = getPopulationBase(area,year);
        PopulationBase populationBase = getPopulationBase(area, year);
        DecimalFormat df = new DecimalFormat("0.0000");
        for (SaveModel saveModel:list) {
        for (SaveModel saveModel : list) {
            Map<String, Object> map = new HashMap<>();
            if (SaveModel.OrgLevel.equals(levelTemp)) {
                map.put("code",saveModel.getHospital());
                map.put("name",saveModel.getHospitalName());
                map.put("code", saveModel.getHospital());
                map.put("name", saveModel.getHospitalName());
            } else if (SaveModel.townLevel.equals(levelTemp)) {
                map.put("code",saveModel.getTown());
                map.put("name",saveModel.getTownName());
                map.put("code", saveModel.getTown());
                map.put("name", saveModel.getTownName());
            } else if (SaveModel.cityLevel.equals(levelTemp)) {
                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("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("amount", saveModel.getResult2());
            map.put("rate", df.format((saveModel.getResult2() * 1.0000) / populationBase.getNum() * 100));
            map.put("rateString", saveModel.getResult2() + "/" + populationBase.getNum());
            resultList.add(map);
        }
        Collections.sort(resultList, new Comparator<Map<String, Object>>() {
@ -368,18 +365,18 @@ public class StatisticsESService {
     * @param level   级别
     * @return
     */
    public List lowLevel(String startDate,String endDate, String area, int level, String index,String timeLevel,String lowLevel,String slaveKey1){
    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.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 ");
@ -394,20 +391,20 @@ public class StatisticsESService {
            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("  quotaCode in(" + index + ")  ");
        sql.append(" and timeLevel='" + timeLevel + "'  ");
        sql.append(" and areaLevel='5'");
        if(StringUtils.isNotEmpty(startDate)){
        if (StringUtils.isNotEmpty(startDate)) {
            sql.append(" and quotaDate>='" + startDate + "'");
        }
        if(StringUtils.isNotEmpty(endDate)){
        if (StringUtils.isNotEmpty(endDate)) {
            sql.append(" and quotaDate<='" + endDate + "'");
        }
        if(StringUtils.isNotEmpty(slaveKey1)){
            sql.append(" and slaveKey1='"+slaveKey1+"'  ");
        if (StringUtils.isNotEmpty(slaveKey1)) {
            sql.append(" and slaveKey1='" + slaveKey1 + "'  ");
        }
        if(StringUtils.isNotEmpty(lowLevel)){
        if (StringUtils.isNotEmpty(lowLevel)) {
            if (SaveModel.teamLevel.equals(lowLevel)) {
                sql.append(" and team='" + area + "'");
@ -421,18 +418,18 @@ public class StatisticsESService {
        }
        sql.append(groupBy);
        return elasticsearchUtil.excute(sql.toString(),SaveModel.class,"","");
        return elasticsearchUtil.excute(sql.toString(), SaveModel.class, "", "");
    }
    public JSONArray getIndexLevelTwototal(String endDate, String area, int level, String index) throws Exception{
    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);
        List<SaveModel> list = elasticsearchUtil.findDateQuotaLevel1(endDate, endDate, area, level, index, "2", null, null, null);
        List<Map<String, Object>> resultList = new ArrayList<>();
        DecimalFormat df = new DecimalFormat("0.0000");
        long total = 0;
        for (SaveModel saveModel:list) {
        for (SaveModel saveModel : list) {
            Map<String, Object> map = new HashMap<>();
//            if (SaveModel.OrgLevel.equals(level+"")) {
//                map.put("code",saveModel.getHospital());
@ -450,8 +447,8 @@ public class StatisticsESService {
//            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("code", saveModel.getSlaveKey1());
            map.put("name", saveModel.getSlaveKey1Name());
            map.put("amount", saveModel.getResult2());
            if (index.equals("7")) {
                // 分组指标总数算法
@ -473,20 +470,20 @@ public class StatisticsESService {
        if (!index.equals("8")) {
            if (index.equals("36")) {
                //如果是查询36的指标 那么除数是签约总数
                List<SaveModel> list2 = elasticsearchUtil.findDateQuotaLevel1(endDate,endDate, area, level, "1","2",null,null,null);
                Integer num=0;
                if(list2.size()>0){
                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{
                } else {
                    throw new Exception("param num error");
                }
                for (Map<String, Object> map:resultList) {
                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));
                    map.put("rateString", ((long) map.get("amount")) + "/" + num);
                }
            }else{
                for (Map<String, Object> map:resultList) {
            } else {
                for (Map<String, Object> map : resultList) {
                    double rateG = (total > 0 ? ((int) map.get("amount")) * 1.0000 / total * 100 : 0);
                    map.put("rate", df.format(rateG));
                    map.put("rateString", ((int) map.get("amount")) + "/" + total);
@ -531,12 +528,12 @@ public class StatisticsESService {
     * @param level   级别
     * @return
     */
    public long getIndexTotal(String endDate, String area, int level, String index,String timeLevel) throws Exception{
    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.findDateQuotaLevel0(endDate, endDate, area, level, index, timeLevel, null, null);
//        List<SaveModel> list =elasticsearchUtil.excute(sql.toString(),SaveModel.class,"","");
        if(list.size()>0){
        if (list.size() > 0) {
            return list.get(0).getResult2();
        }
@ -551,10 +548,10 @@ public class StatisticsESService {
     * @param level   级别
     * @return
     */
    public long getWeiJiaoFei(String endDate, String area, int level) throws Exception{
    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){
        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;
@ -578,17 +575,17 @@ public class StatisticsESService {
            renewIndex = "29";
        }
        String timeKey = elasticsearchUtil.getQuotaTime();
        List<SaveModel> list = elasticsearchUtil.findDateQuotaLevel0(timeKey,timeKey,area,Integer.parseInt(level),renewIndex,"2",null,null);
        List<SaveModel> list = elasticsearchUtil.findDateQuotaLevel0(timeKey, timeKey, area, Integer.parseInt(level), renewIndex, "2", null, null);
        int renewNum = 0;
        if(list.size()>0){
        if (list.size() > 0) {
            renewNum = list.get(0).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);
        List<SaveModel> list2 = elasticsearchUtil.findDateQuotaLevel0(date, date, area, Integer.parseInt(level), index, "2", null, null);
        int signNum = 0;
        if (list2.size()>0) {
        if (list2.size() > 0) {
            signNum = list2.get(0).getResult2();
        }
        JSONObject jo = new JSONObject();
@ -609,8 +606,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){
        List<SaveModel> list = elasticsearchUtil.findDateQuotaLevel0(endDate, endDate, area, level, "13", "2", null, null);
        if (list.size() > 0) {
            signAmount = list.get(0).getResult2();
        }
        PopulationBase peopleNum = getPopulationBase(area, year);
@ -639,9 +636,9 @@ 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);
        List<SaveModel> list = elasticsearchUtil.findDateQuotaLevel0(endDate, endDate, area, level, "13", "2", null, null);
        long signAmount = 0;
        if(list.size()>0){
        if (list.size() > 0) {
            signAmount = list.get(0).getResult2();
        }
        PopulationBase peopleNum = getPopulationBase(area, year);
@ -671,9 +668,9 @@ public class StatisticsESService {
     * @return
     */
    public JSONObject getGroupInfo(String endDate, String lowCode, String area, int level, String year) throws Exception {
        List<SaveModel> list = elasticsearchUtil.findDateQuotaLevel1(endDate,endDate,area,level,"17","2",lowCode,null,null);
        List<SaveModel> list = elasticsearchUtil.findDateQuotaLevel1(endDate, endDate, area, level, "17", "2", lowCode, null, null);
        long total = 0;
        if(list.size()>0){
        if (list.size() > 0) {
            total = list.get(0).getResult2();
        }
        int num = 0;
@ -738,15 +735,15 @@ public class StatisticsESService {
     * @param level
     * @return
     */
    public JSONArray getSixFiveStatistics(String endDate, String area, int level) throws Exception{
        List<SaveModel> list = elasticsearchUtil.findDateQuotaLevel2(endDate,endDate,area,level,"12","2","6",null,null,null);
    public JSONArray getSixFiveStatistics(String endDate, String area, int level) throws Exception {
        List<SaveModel> list = elasticsearchUtil.findDateQuotaLevel2(endDate, endDate, area, level, "12", "2", "6", null, null, null);
        List<Map<String, Object>> resultList = new ArrayList<>();
        for (int i = 0; i < list.size(); i++) {
            Map<String, Object> data = new HashMap<>();
            data.put("code", list.get(i).getSlaveKey2());
            data.put("name", list.get(i).getSlaveKey2Name());
            data.put("amount",list.get(i).getResult2());
            data.put("amount", list.get(i).getResult2());
            resultList.add(data);
        }
@ -805,10 +802,10 @@ public class StatisticsESService {
     * @param level
     * @return
     */
    public long getSixFiveTotal(String endDate, String area, int level) throws Exception{
    public long getSixFiveTotal(String endDate, String area, int level) throws Exception {
        List<SaveModel> list = elasticsearchUtil.findDateQuotaLevel1(endDate,endDate,area,level,"8","2","6",null,null);
        if(list.size()>0){
        List<SaveModel> list = elasticsearchUtil.findDateQuotaLevel1(endDate, endDate, area, level, "8", "2", "6", null, null);
        if (list.size() > 0) {
            return list.get(0).getResult2();
        }
        return 0;
@ -852,15 +849,15 @@ public class StatisticsESService {
        json.put("taskNum", taskNum);
        List<SaveModel> list = null;
        if(StringUtils.isNotEmpty(lowCode)){
        if (StringUtils.isNotEmpty(lowCode)) {
            //一级维度
            list = elasticsearchUtil.findDateQuotaLevel1(startDate,endDate,area,level,index,"2",lowCode,interval+"",null);
        }else{
            list = elasticsearchUtil.findDateQuotaLevel0(startDate,endDate,area,level,index,"2",interval+"",null);
            list = elasticsearchUtil.findDateQuotaLevel1(startDate, endDate, area, level, index, "2", lowCode, interval + "", null);
        } else {
            list = elasticsearchUtil.findDateQuotaLevel0(startDate, endDate, area, level, index, "2", interval + "", null);
        }
        SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
        List<JSONObject> result = new ArrayList<>();
        for (SaveModel saveModel:list) {
        for (SaveModel saveModel : list) {
            JSONObject range = new JSONObject();
            range.put("range", df.format(saveModel.getQuotaDate()));
            range.put("amount", saveModel.getResult2());
@ -959,23 +956,24 @@ public class StatisticsESService {
        String low_level = String.valueOf(org.springframework.util.StringUtils.isEmpty(lowLevel) ? (level - 1) : lowLevel);
        List<Map<String, Object>> resultList = new ArrayList<>();
        List<SaveModel> esModelList= (List<SaveModel>) elasticsearchUtil.findListDateQuotaLevel1(date,area,level,index,SaveModel.timeLevel_DDL,lowLevel,lowCode);
        List<SaveModel> esModelList = (List<SaveModel>) elasticsearchUtil.findListDateQuotaLevel1(date, area, level, index, SaveModel.timeLevel_DDL, lowLevel, lowCode);
        if(esModelList!=null&&esModelList.size()>0){
            esModelList.stream().forEach(one->{
                Map<String, Object> maps=new HashMap<String, Object>();
                maps.put("amount",one.getResult1());
        if (esModelList != null && esModelList.size() > 0) {
            for (SaveModel one : esModelList) {
                Map<String, Object> maps = new HashMap<String, Object>();
                maps.put("amount", one.getResult1());
                if (low_level.equals("3")) {
                    maps.put("code",one.getTown());
                    maps.put("name",one.getTownName());
                    maps.put("code", one.getTown());
                    maps.put("name", one.getTownName());
                } else if (low_level.equals("2")) {
                    maps.put("code",one.getHospital());
                    maps.put("name",one.getHospitalName());
                    maps.put("code", one.getHospital());
                    maps.put("name", one.getHospitalName());
                } else if (low_level.equals("1")) {
                    maps.put("code",one.getTeam());
                    maps.put("name",one.getTeamName());
                    maps.put("code", one.getTeam());
                    maps.put("name", one.getTeamName());
                }
            });
                resultList.add(maps);
            }
        }
        // 结果为空时,自建结果集
        if (resultList == null || resultList.size() < 1) {
@ -1116,6 +1114,7 @@ public class StatisticsESService {
        }
        return rs;
    }
    /**
     * 获取所有团队长信息
     *
@ -1155,23 +1154,24 @@ public class StatisticsESService {
        String low_level = String.valueOf(org.springframework.util.StringUtils.isEmpty(lowLevel) ? (level - 1) : lowLevel);
        List<Map<String, Object>> resultList = new ArrayList<>();
        List<SaveModel> esModelList= (List<SaveModel>) elasticsearchUtil.findListDateQuotaLevel1(date,area,level,index,SaveModel.timeLevel_DDL,lowLevel,lowCode);
        List<SaveModel> esModelList = (List<SaveModel>) elasticsearchUtil.findListDateQuotaLevel1(date, area, level, index, SaveModel.timeLevel_DDL, lowLevel, lowCode);
        if(esModelList!=null&&esModelList.size()>0){
            esModelList.stream().forEach(one->{
                Map<String, Object> maps=new HashMap<String, Object>();
                maps.put("amount",one.getResult1());
        if (esModelList != null && esModelList.size() > 0) {
            for (SaveModel one : esModelList) {
                Map<String, Object> maps = new HashMap<String, Object>();
                maps.put("amount", one.getResult1());
                if (low_level.equals("3")) {
                    maps.put("code",one.getTown());
                    maps.put("name",one.getTownName());
                    maps.put("code", one.getTown());
                    maps.put("name", one.getTownName());
                } else if (low_level.equals("2")) {
                    maps.put("code",one.getHospital());
                    maps.put("name",one.getHospitalName());
                    maps.put("code", one.getHospital());
                    maps.put("name", one.getHospitalName());
                } else if (low_level.equals("1")) {
                    maps.put("code",one.getTeam());
                    maps.put("name",one.getTeamName());
                    maps.put("code", one.getTeam());
                    maps.put("name", one.getTeamName());
                }
            });
                resultList.add(maps);
            }
        }
        // 结果为空时,自建结果集
@ -1268,14 +1268,14 @@ public class StatisticsESService {
        if (resultList != null) {
            DecimalFormat df = new DecimalFormat("0.0000");
            Iterator iterator  = resultList.iterator();
            while (iterator.hasNext()){
                Map<String, Object> map  = (Map<String, Object>)iterator.next();
            Iterator iterator = resultList.iterator();
            while (iterator.hasNext()) {
                Map<String, Object> map = (Map<String, Object>) iterator.next();
                Integer expenseStatus0amountNum = expenseStatus0.get(map.get("code").toString());
                Integer expenseStatus1amountNum = expenseStatus1.get(map.get("code").toString());
                Integer expenseStatus1SigjnNum = expenseStatus1Sigjn.get(map.get("code").toString());
                if(expenseStatus0amountNum==null||expenseStatus1amountNum==null||expenseStatus1SigjnNum==null){
                if (expenseStatus0amountNum == null || expenseStatus1amountNum == null || expenseStatus1SigjnNum == null) {
                    iterator.remove();
                    continue;
                }
@ -1344,17 +1344,15 @@ public class StatisticsESService {
     */
    private Map<String, Integer> getByIndex(String date, String area, int level, String index, int sort, String lowLevel, SimpleDateFormat dateFormat) throws Exception {
        Map<String, Integer> returnMap = new HashMap<>();
        List<SaveModel> esModelList= (List<SaveModel>) elasticsearchUtil.findListDateQuotaLevel0(date,area,level,index,SaveModel.timeLevel_DDL,lowLevel);
        if(esModelList!=null&&esModelList.size()>0){
            esModelList.stream().forEach(one->{
                Map<String, Object> maps=new HashMap<String, Object>();
                maps.put("amount",one.getResult1());
        List<SaveModel> esModelList = (List<SaveModel>) elasticsearchUtil.findListDateQuotaLevel0(date, area, level, index, SaveModel.timeLevel_DDL, lowLevel);
        if (esModelList != null && esModelList.size() > 0) {
            esModelList.stream().forEach(one -> {
                if (lowLevel.equals("3")) {
                    returnMap.put(one.getTown(),one.getResult1());
                    returnMap.put(one.getTown(), one.getResult1());
                } else if (lowLevel.equals("2")) {
                    returnMap.put(one.getHospital(),one.getResult1());
                    returnMap.put(one.getHospital(), one.getResult1());
                } else if (lowLevel.equals("1")) {
                    returnMap.put(one.getTeam(),one.getResult1());
                    returnMap.put(one.getTeam(), one.getResult1());
                }
            });
        }
@ -1363,53 +1361,54 @@ public class StatisticsESService {
    }
    public String getAvgAllInfo(int level, String area, String lowLevel) throws Exception {
        JSONObject returnJo=new JSONObject();
        JSONArray ja=new JSONArray();
        JSONObject returnJo = new JSONObject();
        JSONArray ja = new JSONArray();
        //市级
        if (level == 4) {
            if (StringUtils.isBlank(lowLevel)) {
                List<SaveModel> esModelList= (List<SaveModel>) elasticsearchUtil.findListDateQuotaLevel0(DateUtil.dateToStrShort(new Date()),area,level,"28",SaveModel.timeLevel_DDL,"3");
                esModelList.forEach(one->{
                    JSONObject jo=new JSONObject();
                    jo.put("name",one.getTownName());
                    jo.put("code",one.getTown());
                    jo.put("avgCount",getRangeDouuble(one.getResult1(),one.getResult2(),2));
                List<SaveModel> esModelList = (List<SaveModel>) elasticsearchUtil.findListDateQuotaLevel0(DateUtil.dateToStrShort(new Date()), area, level, "28", SaveModel.timeLevel_DDL, "3");
                esModelList.forEach(one -> {
                    JSONObject jo = new JSONObject();
                    jo.put("name", one.getTownName());
                    jo.put("code", one.getTown());
                    jo.put("avgCount", getRangeDouuble(one.getResult1(), one.getResult2(), 2));
                    ja.put(jo);
                });
            } else {
                List<SaveModel> esModelList= (List<SaveModel>) elasticsearchUtil.findListDateQuotaLevel0(DateUtil.dateToStrShort(new Date()),area,level,"28",SaveModel.timeLevel_DDL,"2");
                esModelList.forEach(one->{
                    JSONObject jo=new JSONObject();
                    jo.put("name",one.getHospitalName());
                    jo.put("code",one.getHospital());
                    jo.put("avgCount",getRangeDouuble(one.getResult1(),one.getResult2(),2));
                List<SaveModel> esModelList = (List<SaveModel>) elasticsearchUtil.findListDateQuotaLevel0(DateUtil.dateToStrShort(new Date()), area, level, "28", SaveModel.timeLevel_DDL, "2");
                esModelList.forEach(one -> {
                    JSONObject jo = new JSONObject();
                    jo.put("name", one.getHospitalName());
                    jo.put("code", one.getHospital());
                    jo.put("avgCount", getRangeDouuble(one.getResult1(), one.getResult2(), 2));
                    ja.put(jo);
                });
            }
        } else if (level == 3) {
            List<SaveModel> esModelList= (List<SaveModel>) elasticsearchUtil.findListDateQuotaLevel0(DateUtil.dateToStrShort(new Date()),area,level,"28",SaveModel.timeLevel_DDL,"2");
            esModelList.forEach(one->{
                JSONObject jo=new JSONObject();
                jo.put("name",one.getHospitalName());
                jo.put("code",one.getHospital());
                jo.put("avgCount",getRangeDouuble(one.getResult1(),one.getResult2(),2));
            List<SaveModel> esModelList = (List<SaveModel>) elasticsearchUtil.findListDateQuotaLevel0(DateUtil.dateToStrShort(new Date()), area, level, "28", SaveModel.timeLevel_DDL, "2");
            esModelList.forEach(one -> {
                JSONObject jo = new JSONObject();
                jo.put("name", one.getHospitalName());
                jo.put("code", one.getHospital());
                jo.put("avgCount", getRangeDouuble(one.getResult1(), one.getResult2(), 2));
                ja.put(jo);
            });
        } else if (level == 2) {
            List<SaveModel> esModelList= (List<SaveModel>) elasticsearchUtil.findListDateQuotaLevel0(DateUtil.dateToStrShort(new Date()),area,level,"28",SaveModel.timeLevel_DDL,"1");
            esModelList.forEach(one->{
                JSONObject jo=new JSONObject();
                jo.put("name",one.getTeam());
                jo.put("code",one.getTeamName());
                jo.put("avgCount",getRangeDouuble(one.getResult1(),one.getResult2(),2));
            List<SaveModel> esModelList = (List<SaveModel>) elasticsearchUtil.findListDateQuotaLevel0(DateUtil.dateToStrShort(new Date()), area, level, "28", SaveModel.timeLevel_DDL, "1");
            esModelList.forEach(one -> {
                JSONObject jo = new JSONObject();
                jo.put("name", one.getTeam());
                jo.put("code", one.getTeamName());
                jo.put("avgCount", getRangeDouuble(one.getResult1(), one.getResult2(), 2));
                ja.put(jo);
            });
           translateTeamLeaderName(ja);
            translateTeamLeaderName(ja);
        }
        returnJo.put("data",ja);
        returnJo.put("data", ja);
        return returnJo.toString();
    }
    /**
     * 13.17两个指标团队显示团队长
     * 查询某个级别的某个指标到达量
@ -1428,23 +1427,24 @@ public class StatisticsESService {
        String low_level = String.valueOf(org.springframework.util.StringUtils.isEmpty(lowLevel) ? (level - 1) : lowLevel);
        List<Map<String, Object>> resultList = new ArrayList<>();
        List<SaveModel> esModelList= (List<SaveModel>) elasticsearchUtil.findListDateQuotaLevel0(date,area,level,index,SaveModel.timeLevel_DDL,lowLevel);
        List<SaveModel> esModelList = (List<SaveModel>) elasticsearchUtil.findListDateQuotaLevel0(date, area, level, index, SaveModel.timeLevel_DDL, lowLevel);
        if(esModelList!=null&&esModelList.size()>0){
            esModelList.stream().forEach(one->{
                Map<String, Object> maps=new HashMap<String, Object>();
                maps.put("amount",one.getResult1());
        if (esModelList != null && esModelList.size() > 0) {
            for (SaveModel one : esModelList) {
                Map<String, Object> maps = new HashMap<String, Object>();
                maps.put("amount", one.getResult1());
                if (low_level.equals("3")) {
                    maps.put("code",one.getTown());
                    maps.put("name",one.getTownName());
                    maps.put("code", one.getTown());
                    maps.put("name", one.getTownName());
                } else if (low_level.equals("2")) {
                    maps.put("code",one.getHospital());
                    maps.put("name",one.getHospitalName());
                    maps.put("code", one.getHospital());
                    maps.put("name", one.getHospitalName());
                } else if (low_level.equals("1")) {
                    maps.put("code",one.getTeam());
                    maps.put("name",one.getTeamName());
                    maps.put("code", one.getTeam());
                    maps.put("name", one.getTeamName());
                }
            });
                resultList.add(maps);
            }
        }
        // 结果为空时,自建结果集
@ -1503,6 +1503,7 @@ public class StatisticsESService {
            return new JSONArray();
        }
    }
    /**
     * 查询某个级别的某个指标到达量
     *
@ -1520,23 +1521,24 @@ public class StatisticsESService {
        String low_level = String.valueOf(org.springframework.util.StringUtils.isEmpty(lowLevel) ? (level - 1) : lowLevel);
        List<Map<String, Object>> resultList = new ArrayList<>();
        List<SaveModel> esModelList= (List<SaveModel>) elasticsearchUtil.findListDateQuotaLevel0(date,area,level,index,SaveModel.timeLevel_DDL,lowLevel);
        List<SaveModel> esModelList = (List<SaveModel>) elasticsearchUtil.findListDateQuotaLevel0(date, area, level, index, SaveModel.timeLevel_DDL, lowLevel);
        if(esModelList!=null&&esModelList.size()>0){
            esModelList.stream().forEach(one->{
                Map<String, Object> maps=new HashMap<String, Object>();
                maps.put("amount",one.getResult1());
        if (esModelList != null && esModelList.size() > 0) {
            for (SaveModel one : esModelList) {
                Map<String, Object> maps = new HashMap<String, Object>();
                maps.put("amount", one.getResult1());
                if (low_level.equals("3")) {
                    maps.put("code",one.getTown());
                    maps.put("name",one.getTownName());
                    maps.put("code", one.getTown());
                    maps.put("name", one.getTownName());
                } else if (low_level.equals("2")) {
                    maps.put("code",one.getHospital());
                    maps.put("name",one.getHospitalName());
                    maps.put("code", one.getHospital());
                    maps.put("name", one.getHospitalName());
                } else if (low_level.equals("1")) {
                    maps.put("code",one.getTeam());
                    maps.put("name",one.getTeamName());
                    maps.put("code", one.getTeam());
                    maps.put("name", one.getTeamName());
                }
            });
                resultList.add(maps);
            }
        }
        // 结果为空时,自建结果集
@ -1588,4 +1590,125 @@ public class StatisticsESService {
            return new JSONArray();
        }
    }
    /**
     * 查询某个日期范围内某个区域或机构各下级指标增量情况
     *
     * @param startDate 起始日期
     * @param endDate   结束日期
     * @param area      区域或机构代码
     * @param level     级别
     * @param index     指标
     * @return
     */
    public JSONArray getLowLevelIncrementDetail(String startDate, String endDate, String area, int level, String index, int sort, String low_level) throws Exception {
        List<Map<String, Object>> resultList = new ArrayList<>();
        List<SaveModel> esModelList = (List<SaveModel>) elasticsearchUtil.findListDateQuotaLevel0(startDate, area, level, index, 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.getResult1());
                if (low_level.equals("3")) {
                    maps.put("code", one.getTown());
                    maps.put("name", one.getTownName());
                } else if (low_level.equals("2")) {
                    maps.put("code", one.getHospital());
                    maps.put("name", one.getHospitalName());
                } else if (low_level.equals("1")) {
                    maps.put("code", one.getTeam());
                    maps.put("name", one.getTeamName());
                }
                resultList.add(maps);
            }
        }
        // 结果为空时,自建结果集
        if (resultList == null || resultList.size() < 1) {
            resultList = new ArrayList<>();
            if (low_level.equals("3")) {
                List<Town> towns = townDao.findByCityCode(area);
                if (towns != null) {
                    for (Town town : towns) {
                        Map<String, Object> obj = new HashMap<>();
                        obj.put("code", town.getCode());
                        obj.put("name", town.getName());
                        obj.put("amount", "0");
                        obj.put("rate", Double.valueOf("0.0000"));
                        resultList.add(obj);
                    }
                }
            } else if (low_level.equals("2")) {
                List<Town> towns = new ArrayList<>();
                if (level == 4) {
                    towns = townDao.findByCityCode(area);
                } else if (level == 3) {
                    Town town = townDao.findByCode(area);
                    towns.add(town);
                }
                if (towns != null && towns.size() > 0) {
                    for (Town town : towns) {
                        List<Hospital> hospitals = hospitalDao.findByTownCode(town.getCode());
                        for (Hospital hos : hospitals) {
                            Map<String, Object> obj = new HashMap<>();
                            obj.put("code", hos.getCode());
                            obj.put("name", hos.getName());
                            obj.put("amount", "0");
                            resultList.add(obj);
                        }
                    }
                }
            } else if (low_level.equals("1")) {
                List<Hospital> hospitals = new ArrayList<>();
                if (level == 4) {
                    hospitals = hospitalDao.findByCity(area);
                } else if (level == 3) {
                    hospitals = hospitalDao.findByTownCode(area);
                } else {
                    Hospital hos = hospitalDao.findByCode(area);
                    if (hos != null) {
                        hospitals.add(hos);
                    }
                }
                if (hospitals != null && hospitals.size() > 0) {
                    for (Hospital hos : hospitals) {
                        List<AdminTeam> teams = adminTeamDao.findByOrgCode(hos.getCode());
                        for (AdminTeam team : teams) {
                            Map<String, Object> obj = new HashMap<>();
                            obj.put("code", String.valueOf(team.getId()));
                            obj.put("name", team.getName());
                            obj.put("amount", "0");
                            resultList.add(obj);
                        }
                    }
                }
            }
        }
        if (resultList != null) {
            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();
        }
    }
}

+ 75 - 2
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/web/statistic/EsStatisticsController.java

@ -4,6 +4,7 @@ import com.yihu.wlyy.service.app.statistics.StatisticsAllService;
import com.yihu.wlyy.service.app.statistics.StatisticsService;
import com.yihu.wlyy.service.app.statisticsES.StatisticsESService;
import com.yihu.wlyy.util.Constant;
import com.yihu.wlyy.util.ValueComparator;
import com.yihu.wlyy.web.BaseController;
import io.swagger.annotations.Api;
import org.apache.commons.lang3.StringUtils;
@ -17,6 +18,11 @@ import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;
/**
 * Created by chenweida on 2017/10/13.
 */
@ -216,8 +222,75 @@ public class EsStatisticsController extends BaseController {
        try {
            String[] indexes = index.split(",");
            JSONObject result = new JSONObject();
            JSONArray jsonArray = statisticsESService.getLowLevelTotalDetail(endDate, area, level, index, sort, lowLevel, null, year);
            result.put("index_" + indexes[0], jsonArray);
            JSONArray returnJa = new JSONArray();
            List<JSONArray> jsonArrays = new ArrayList<>();
            /**新版统计代码start**/
            JSONArray jsonArray1 = statisticsESService.getLowLevelTotalDetail(endDate, area, level, indexes[0], sort, lowLevel, null, year);
            jsonArrays.add(jsonArray1);
            /**新版统计代码end**/
            /**旧版统计代码start**/
            JSONArray jsonArray2 = null;
            if (Constant.getNowYearByDate(endDate).equals(year)) {
                jsonArray2 = statisticsESService.getLowLevelIncrementDetail(endDate, endDate, area, level, indexes[1], sort, lowLevel);
            }else{
                String date=Integer.valueOf(year)+1+"-06-30";
                jsonArray2 = statisticsESService.getLowLevelIncrementDetail(date, date, area, level, indexes[1], sort, lowLevel);
            }
            jsonArrays.add(jsonArray2);
            /**旧版统计代码end**/
            //遍历合并2个指标中key值一样的
            if (jsonArrays.get(1).length() == 0) {
                //如果只有一个指标的时候 另外一个指标默认是0
                for (int i = 0; i < jsonArrays.get(0).length(); i++) {
                    //未回复咨询不存在的时候默认是0
                    JSONObject map1 = jsonArrays.get(0).getJSONObject(i);
                    String amount = map1.get("amount").toString() + ",0";
                    map1.put("amount", amount);
                    returnJa.put(map1);
                }
            } else {
                //如果是2个指标的时候,分别放入map中,以减少查询次数
                Map<String, JSONObject> in = new TreeMap<>();
                ValueComparator vc = new ValueComparator(in);
                Map<String, JSONObject> index2 = new TreeMap<>();
                for (int i = 0; i < jsonArrays.get(0).length(); i++) {
                    JSONObject map1 = jsonArrays.get(0).getJSONObject(i);
                    in.put(map1.get("code").toString(), map1);
                }
                Map<String, JSONObject> index1 = new TreeMap<>(vc);
                index1.putAll(in);
                for (int i = 0; i < jsonArrays.get(1).length(); i++) {
                    JSONObject map1 = jsonArrays.get(1).getJSONObject(i);
                    index2.put(map1.get("code").toString(), map1);
                }
                for (Map.Entry<String, JSONObject> one : index1.entrySet()) {
                    JSONObject map1 = one.getValue();
                    JSONObject map2 = index2.get(one.getKey());
                    String amount1="0";
                    if(map1!=null&&map1.has("amount")){
                        amount1=map1.get("amount").toString();
                    }
                    String amount2="0";
                    if(map2!=null&&map2.has("amount")){
                        amount2=map2.get("amount").toString();
                    }
                    String amount = amount1 + "," + amount2;
                    map1.put("amount", amount);
                    returnJa.put(map1);
                }
            }
            if (level == 2) {
                statisticsAllService.translateTeamLeaderNameByCode(returnJa);
            }
            result.put("index_" + indexes[0], returnJa);
            return write(200, "查询成功", "data", result);
        } catch (Exception e)