Explorar o código

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

chenweida %!s(int64=7) %!d(string=hai) anos
pai
achega
3971e12242

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

@ -756,11 +756,11 @@ public class StatisticsESService {
     * @return
     */
    public JSONObject getDateTotal(String startDate, String endDate, int interval, String area, int level, String index, String lowCode, String year) throws Exception {
        SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
        int taskNum = 0;
        JSONObject json = new JSONObject();
        if (level < 5 && org.springframework.util.StringUtils.isEmpty(lowCode)) {
        if (level < Integer.valueOf(SaveModel.townLevel) && org.springframework.util.StringUtils.isEmpty(lowCode)) {
            PopulationBase peopleNum = getPopulationBase(area, year);
            if (peopleNum != null) {
@ -781,23 +781,331 @@ public class StatisticsESService {
        }
        json.put("taskNum", taskNum);
        List<SaveModel> list = null;
        if (StringUtils.isNotEmpty(lowCode)) {
            //一级维度
            list = elasticsearchUtil.findLineChartDateQuotaLevel1(startDate, endDate, area, level, index, "2", interval + "", lowCode);
        } else {
            list = elasticsearchUtil.findLineChartDateQuotaLevel0(startDate, endDate, area, level, index, "2", interval + "");
        if (interval == 1){
            JSONArray jsonArray = dateTotalStatistics(startDate, endDate, area, level, index, lowCode);
            json.put("data", jsonArray);
            return json;
        } else if (interval == 2) {
            JSONArray jsonArray = weekTotalStatistics(startDate, endDate, area, level, index, lowCode);
            json.put("data", jsonArray);
            return json;
        } else if (interval == 3) {
            JSONArray jsonArray = monthTotalStatistics(startDate, endDate, area, level, index, lowCode);
            json.put("data", jsonArray);
            return json;
        }
        return json;
    }
    /**
     * 总体分析 折线图 绑定微信 按日
     * @param startDate
     * @param endDate
     * @param area
     * @param level
     * @param index
     * @param lowCode
     * @return
     * @throws ParseException
     */
    public JSONArray dateTotalStatistics(String startDate, String endDate, String area, int level, String index, String lowCode) throws Exception {
        SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
        List<SaveModel> saveModels = new ArrayList<>();
        //startDate = DateUtil.getNextDay(startDate,-1);
        if (StringUtils.isNotBlank(lowCode)){
            saveModels = elasticsearchUtil.findLineChartDateQuotaLevel1(startDate,endDate,area,level,index,SaveModel.timeLevel_DDL,SaveModel.interval_day,lowCode);
        }else{
            saveModels = elasticsearchUtil.findLineChartDateQuotaLevel0(startDate,endDate,area,level,index,SaveModel.timeLevel_DDL,SaveModel.interval_day);
        }
        List<JSONObject> result = new ArrayList<>();
        for (SaveModel saveModel : list) {
        if (saveModels != null) {
            // 计算结果
            for (SaveModel saveModel : saveModels) {
                JSONObject json = new JSONObject();
                String range = df.format(saveModel.getQuotaDate());
                long amount = saveModel.getResult2().longValue();
                json.put("range", range);
                json.put("amount", amount);
                result.add(json);
            }
        // 排序
        result.sort(new Comparator<JSONObject>() {
            @Override
            public int compare(JSONObject o1, JSONObject o2) {
                if (o1.getString("range").compareTo(o2.getString("range")) > 0) {
                    return 1;
                } else if (o1.getString("range").compareTo(o2.getString("range")) < 0) {
                    return -1;
                } else {
                    return 0;
                }
            }
        });
            return new JSONArray(result);
        } else {
            return new JSONArray();
        }
    }
    /**
     * 按周统计 折线图
     * @param startDate
     * @param endDate
     * @param area
     * @param level
     * @param index
     * @param lowCode
     * @return
     * @throws Exception
     */
    private JSONArray weekTotalStatistics(String startDate, String endDate, String area, int level, String index, String lowCode) throws Exception {
        SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
        // 起始日期
        Calendar start = Calendar.getInstance();
        start.setTime(DateUtil.strToDate(startDate, DateUtil.YYYY_MM_DD));
        // 第一个统计周期结束日期
        String firstEnd = "";
        // 结束日期
        Calendar end = Calendar.getInstance();
        end.setTime(DateUtil.strToDate(endDate, DateUtil.YYYY_MM_DD));
        // 起始日期为周几
        int week = start.get(Calendar.DAY_OF_WEEK);
        int incre = 7 - week + 1;
        // 日期集合
        List<Calendar> days = new ArrayList<>();
        days.add(start);
        boolean flag = true;
        int i = 0;
        if (startDate.compareTo(endDate) == 0) {
            flag = false;
            days.add(end);
            firstEnd = df.format(end.getTime());
        }
        // 计算统计日期
        while (flag) {
            Calendar next = Calendar.getInstance();
            next.setTime(days.get(days.size() - 1).getTime());
            if (i == 0) {
                if (incre != 7) {
                    next.add(Calendar.DATE, incre);
                }
            } else {
                next.add(Calendar.DATE, 7);
            }
            if (next.getTime().before(DateUtil.strToDate(endDate, "yyyy-MM-dd"))) {
                days.add(next);
                if (i == 0) {
                    firstEnd = df.format(next.getTime());
                }
            } else {
                days.add(end);
                flag = false;
                if (i == 0) {
                    firstEnd = df.format(end.getTime());
                }
            }
            i++;
        }
        // 结果集
        Map<String, JSONObject> countResult = new HashMap<>();
        // 算出每个查询周期
        for (int j = 0; j < days.size() - 1; j++) {
            String startStr = "";
            String endStr = df.format(days.get(j + 1).getTime());
            // 起始、截止日期
            if (j == 0) {
                startStr = df.format(days.get(j).getTime());
            } else {
                Calendar cal = Calendar.getInstance();
                cal.setTime(days.get(j).getTime());
                cal.add(Calendar.DATE, 1);
                startStr = df.format(cal.getTime());
            }
            JSONObject range = new JSONObject();
            range.put("range", df.format(saveModel.getQuotaDate()));
            range.put("amount", saveModel.getResult2().longValue());
            result.add(range);
            range.put("range", endStr);
            range.put("amount", 0);
            countResult.put(endStr, range);
        }
        if (startDate.equals(df.format(new Date()))) {
            Calendar preDate = Calendar.getInstance();
            preDate.setTime(df.parse(endDate));
            preDate.add(Calendar.DATE, -1);
            startDate = df.format(preDate.getTime());
        }
        List<SaveModel> saveModels = new ArrayList<>();
        if (StringUtils.isNotBlank(lowCode)){
            saveModels = elasticsearchUtil.findLineChartDateQuotaLevel1(startDate,endDate,area,level,index,SaveModel.timeLevel_DDL,SaveModel.interval_day,lowCode);
        }else{
            saveModels = elasticsearchUtil.findLineChartDateQuotaLevel0(startDate,endDate,area,level,index,SaveModel.timeLevel_DDL,SaveModel.interval_day);
        }
        if (saveModels != null) {
            // 计算结果
            for (SaveModel saveModel : saveModels) {
                String range = df.format(saveModel.getQuotaDate());
                JSONObject json = countResult.get(range);
                if (json != null) {
                    long amount = saveModel.getResult2().longValue();
                    json.put("amount", amount);
                }
            }
            List<JSONObject> result = new ArrayList<>(countResult.values());
            // 排序
            result.sort(new Comparator<JSONObject>() {
                @Override
                public int compare(JSONObject o1, JSONObject o2) {
                    if (o1.getString("range").compareTo(o2.getString("range")) > 0) {
                        return 1;
                    } else if (o1.getString("range").compareTo(o2.getString("range")) < 0) {
                        return -1;
                    } else {
                        return 0;
                    }
                }
            });
            return new JSONArray(result);
        } else {
            return new JSONArray();
        }
    }
    /**
     * 按月统计 折线图
     * @param startDate
     * @param endDate
     * @param area
     * @param level
     * @param index
     * @param lowCode
     * @return
     * @throws Exception
     */
    private JSONArray monthTotalStatistics(String startDate, String endDate, String area, int level, String index, String lowCode) throws Exception {
        SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
        // 起始日期
        Calendar start = Calendar.getInstance();
        start.setTime(DateUtil.strToDate(startDate, DateUtil.YYYY_MM_DD));
        // 结束日期
        Calendar end = Calendar.getInstance();
        end.setTime(DateUtil.strToDate(endDate, DateUtil.YYYY_MM_DD));
        // 日期集合
        List<Calendar> days = new ArrayList<>();
        days.add(start);
        boolean flag = true;
        int k = 0;
        if (startDate.compareTo(endDate) == 0) {
            flag = false;
            days.add(end);
        }
        // 统计日期计算
        while (flag) {
            Calendar next = Calendar.getInstance();
            next.setTime(days.get(days.size() - 1).getTime());
            if (k == 0) {
                next.add(Calendar.MONTH, 1);
            } else {
                next.add(Calendar.MONTH, 2);
            }
            next.set(Calendar.DAY_OF_MONTH, 1);
            next.add(Calendar.DAY_OF_MONTH, -1);
            if (next.getTime().before(DateUtil.strToDate(endDate, "yyyy-MM-dd"))) {
                days.add(next);
            } else {
                days.add(end);
                flag = false;
            }
            k++;
        }
        // 统计结果
        Map<String, JSONObject> countResult = new HashMap<>();
        for (int i = 0; i < days.size() - 1; i++) {
            String endStr = df.format(days.get(i + 1).getTime());
            JSONObject range = new JSONObject();
            range.put("range", endStr);
            range.put("amount", 0);
            countResult.put(endStr, range);
        }
        if (startDate.equals(df.format(new Date()))) {
            Calendar preDate = Calendar.getInstance();
            preDate.setTime(df.parse(endDate));
            preDate.add(Calendar.DATE, -1);
            startDate = df.format(preDate.getTime());
        }
        List<SaveModel> saveModels = new ArrayList<>();
        if (StringUtils.isNotBlank(lowCode)){
            saveModels = elasticsearchUtil.findLineChartDateQuotaLevel1(startDate,endDate,area,level,index,SaveModel.timeLevel_DDL,SaveModel.interval_day,lowCode);
        }else{
            saveModels = elasticsearchUtil.findLineChartDateQuotaLevel0(startDate,endDate,area,level,index,SaveModel.timeLevel_DDL,SaveModel.interval_day);
        }
        if (saveModels != null) {
            // 计算结果
            for (SaveModel saveModel : saveModels) {
                String range = df.format(saveModel.getQuotaDate());
                JSONObject json = countResult.get(range);
                if (json != null) {
                    long amount = saveModel.getResult2().longValue();
                    json.put("amount", amount);
                }
            }
            List<JSONObject> result = new ArrayList<>(countResult.values());
            // 排序
            result.sort(new Comparator<JSONObject>() {
                @Override
                public int compare(JSONObject o1, JSONObject o2) {
                    if (o1.getString("range").compareTo(o2.getString("range")) > 0) {
                        return 1;
                    } else if (o1.getString("range").compareTo(o2.getString("range")) < 0) {
                        return -1;
                    } else {
                        return 0;
                    }
                }
            });
            return new JSONArray(result);
        } else {
            return new JSONArray();
        }
        json.put("data", new ArrayList<>(result));
        return json;
    }
@ -891,12 +1199,12 @@ public class StatisticsESService {
        if (date.compareTo(dateFormat.format(new Date())) >= 0) {
            date = elasticsearchUtil.getQuotaTime();
        }
        List<SaveModel> esModelList = (List<SaveModel>) elasticsearchUtil.findListDateQuotaLevel1(date, area, level, index, SaveModel.timeLevel_DDL, low_level, lowCode);
        List<SaveModel> esModelList = (List<SaveModel>) elasticsearchUtil.findListDateQuotaLevel1(date, area, level, index, SaveModel.timeLevel_DDL, low_level, low_level);
        //esModelList=elasticsearchUtil.findDateQuotaLevel1(date,date,area,level,index,SaveModel.timeLevel_DDL,1,lowCode,"",low_level);
        if (esModelList != null && esModelList.size() > 0) {
            for (SaveModel one : esModelList) {
                Map<String, Object> maps = new HashMap<String, Object>();
                maps.put("amount", one.getResult1().intValue());
                maps.put("amount", one.getResult2().intValue());
                if (low_level.equals("3")) {
                    maps.put("code", one.getTown());
                    maps.put("name", one.getTownName());
@ -2696,52 +3004,52 @@ public class StatisticsESService {
        String index = "58";
        Map<String, Object> rs = new HashedMap();
        //总数
        List<SaveModel> totalList = elasticsearchUtil.findListDateQuotaLevel0(startDate, endDate, String.valueOf(adminTeamId), Integer.valueOf(SaveModel.teamLevel), index, "2", null);
        SaveModel total = elasticsearchUtil.findOneDateQuotaLevel0(startDate, endDate, String.valueOf(adminTeamId), Integer.valueOf(SaveModel.teamLevel), index, "2");
        //进行中
        List<SaveModel> processingList = elasticsearchUtil.findListDateQuotaLevel0(startDate, endDate, String.valueOf(adminTeamId), Integer.valueOf(SaveModel.teamLevel), index, "2", "1");
        SaveModel processing = elasticsearchUtil.findOneDateQuotaLevel1(startDate, endDate, String.valueOf(adminTeamId), Integer.valueOf(SaveModel.teamLevel), index, "2", "1");
        //已完成
        List<SaveModel> finishedList = elasticsearchUtil.findListDateQuotaLevel0(startDate, endDate, String.valueOf(adminTeamId), Integer.valueOf(SaveModel.teamLevel), index, "2", "2");
        SaveModel finished = elasticsearchUtil.findOneDateQuotaLevel1(startDate, endDate, String.valueOf(adminTeamId), Integer.valueOf(SaveModel.teamLevel), index, "2", "2");
        //已经取消
        List<SaveModel> canceledList = elasticsearchUtil.findListDateQuotaLevel0(startDate, endDate, String.valueOf(adminTeamId), Integer.valueOf(SaveModel.teamLevel), index, "2", "3");
        SaveModel canceled = elasticsearchUtil.findOneDateQuotaLevel1(startDate, endDate, String.valueOf(adminTeamId), Integer.valueOf(SaveModel.teamLevel), index, "2", "3");
        //审核不通过
        List<SaveModel> unPassList = elasticsearchUtil.findListDateQuotaLevel0(startDate, endDate, String.valueOf(adminTeamId), Integer.valueOf(SaveModel.teamLevel), index, "2", "4");
        SaveModel unPass = elasticsearchUtil.findOneDateQuotaLevel1(startDate, endDate, String.valueOf(adminTeamId), Integer.valueOf(SaveModel.teamLevel), index, "2", "4");
        //其他原因取消
        List<SaveModel> otherList = elasticsearchUtil.findListDateQuotaLevel0(startDate, endDate, String.valueOf(adminTeamId), Integer.valueOf(SaveModel.teamLevel), index, "2", "5");
        SaveModel other = elasticsearchUtil.findOneDateQuotaLevel1(startDate, endDate, String.valueOf(adminTeamId), Integer.valueOf(SaveModel.teamLevel), index, "2", "5");
        //总数
        if (totalList != null && totalList.size() > 0) {
            rs.put("total", totalList.get(0).getResult2());
        if (total != null) {
            rs.put("total", total.getResult2());
        } else {
            rs.put("total", 0);
        }
        //进行中
        if (processingList != null && processingList.size() > 0) {
            rs.put("processingCount", processingList.get(0).getResult2());
        if (processing != null) {
            rs.put("processingCount", processing.getResult2());
        } else {
            rs.put("processingCount", 0);
        }
        //已完成
        if (finishedList != null && finishedList.size() > 0) {
            rs.put("finishCount", finishedList.get(0).getResult2());
        if (finished != null) {
            rs.put("finishCount", finished.getResult2());
        } else {
            rs.put("finishCount", 0);
        }
        //已取消
        if (canceledList != null && canceledList.size() > 0) {
            rs.put("patientCancelCount", canceledList.get(0).getResult2());
        if (canceled != null) {
            rs.put("patientCancelCount", canceled.getResult2());
        } else {
            rs.put("patientCancelCount", 0);
        }
        //审核不通过
        if (unPassList != null && unPassList.size() > 0) {
            rs.put("noReviewedCount", unPassList.get(0).getResult2());
        if (unPass != null) {
            rs.put("noReviewedCount", unPass.getResult2());
        } else {
            rs.put("noReviewedCount", 0);
        }
        //其他原因取消
        if (otherList != null && otherList.size() > 0) {
            rs.put("payOuttimeCount", otherList.get(0).getResult2());
        if (other != null) {
            rs.put("payOuttimeCount", other.getResult2());
        } else {
            rs.put("payOuttimeCount", 0);
        }