Просмотр исходного кода

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

lyr 8 лет назад
Родитель
Сommit
4648698728

+ 383 - 203
patient-co-wlyy/src/main/java/com/yihu/wlyy/service/app/statistics/StatisticsService.java

@ -146,12 +146,76 @@ public class StatisticsService extends BaseService {
        }
    }
    /**
     * 获取一级指标达到量
     *
     * @param endDate 截止日期
     * @param area    区域
     * @param index   指标
     * @param level   级别
     * @return
     */
    public long getIndexTotal(String endDate,String area, int level , String index) {
        int todayAmount = 0;
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
        String dateCon = endDate;
        if (endDate.compareTo(dateFormat.format(new Date())) >= 0) {
            Calendar calendar = Calendar.getInstance();
            calendar.add(Calendar.DATE, -1);
            dateCon = dateFormat.format(calendar.getTime());
        }
        // 查询语句
        String sql = " select " +
                "     ifnull(result,'0') amount" +
                " from  " +
                "     wlyy_quota_result " +
                " where " +
                "     quato_code = ? " +
                "   and level1_type = ? and del = '1'" +
                "   and quota_date = ? ";
        if (level == 4) {
            // 市级别
            sql += " and city = ? ";
        } else if (level == 3) {
            // 区、城镇级别
            sql += " and town = ? ";
        } else if (level == 2) {
            // 机构级别
            sql += " and org_code = ? ";
        } else if (level == 1) {
            sql += " and qkdoctor_code = ?";
        }
        // 截止日期包含当天,则从redis查询当天统计数据
        if (endDate.compareTo(new SimpleDateFormat("yyyy-MM-dd").format(new Date())) >= 0) {
            String val = redisTemplate.opsForValue().get("quota:" + index + ":" + level + ":" + area);
            if (!StringUtils.isEmpty(val)) {
                JSONObject valJson = new JSONObject(val);
                if (valJson.has("num") && valJson.getInt("num") > 0) {
                    todayAmount = valJson.getInt("num");
                }
            }
        }
        List<Map<String, Object>> result = jdbcTemplate.queryForList(sql, new Object[]{index,level, dateCon, area});
        if (result != null && result.size() > 0) {
            return (result.get(0).get("amount") != null ? (Long.valueOf(result.get(0).get("amount").toString()) + todayAmount) : todayAmount);
        } else {
            return 0;
        }
    }
    /**
     * 获取缴费
     *
     * @param endDate 截止日期
     * @param area 区域
     * @param level 级别
     * @param area    区域
     * @param level   级别
     * @return
     */
    public long getWeiJiaoFei(String endDate, String area, int level) {
@ -171,7 +235,7 @@ public class StatisticsService extends BaseService {
                " from  " +
                "     wlyy_quota_result " +
                " where " +
                "     quato_code = '14' " +
                "     quato_code = '16' " +
                "   and level1_type = ? and del = '1'" +
                "   and level2_type = '0' " +
                "   and quota_date = ? ";
@ -192,7 +256,7 @@ public class StatisticsService extends BaseService {
        // 截止日期包含当天,则从redis查询当天统计数据
        if (endDate.compareTo(new SimpleDateFormat("yyyy-MM-dd").format(new Date())) >= 0) {
            String val = redisTemplate.opsForValue().get("quota:14:" + level + ":" + area);
            String val = redisTemplate.opsForValue().get("quota:16:" + level + ":" + area);
            if (!StringUtils.isEmpty(val)) {
                JSONObject valJson = new JSONObject(val);
                if (valJson.has("num") && valJson.getInt("num") > 0) {
@ -220,7 +284,7 @@ public class StatisticsService extends BaseService {
     */
    public JSONObject getSignRate(String endDate, String area, int level) throws Exception {
        JSONObject json = new JSONObject();
        long signAmount = getTotalAmount(endDate, area, level, SIGN);
        long signAmount = getIndexTotal(endDate, area, level, "13");
        PopulationBase peopleNum = peopleNumDao.findByCodeAndYear(area, Calendar.getInstance().get(Calendar.YEAR));
        DecimalFormat df = new DecimalFormat("0.0000");
@ -247,7 +311,7 @@ public class StatisticsService extends BaseService {
     */
    public JSONObject getSignTaskRate(String endDate, String area, int level) throws Exception {
        JSONObject json = new JSONObject();
        long signAmount = getTotalAmount(endDate, area, level, SIGN);
        long signAmount = getIndexTotal(endDate, area, level, "13");
        PopulationBase peopleNum = peopleNumDao.findByCodeAndYear(area, Calendar.getInstance().get(Calendar.YEAR));
        DecimalFormat df = new DecimalFormat("0.0000");
@ -264,19 +328,6 @@ public class StatisticsService extends BaseService {
        return json;
    }
    /**
     * 查询截止某个日期累计建档率
     *
     * @param endDate 截止日期
     * @param area    区域或机构代码
     * @param level   级别
     * @return
     */
    public String getFilingRate(String endDate, String area, int level) {
        return "";
    }
    /**
     * 获取某个指标在某个期间的增长量
     *
@ -333,134 +384,6 @@ public class StatisticsService extends BaseService {
        }
    }
    /**
     * 查询截止某个日期某个区域后机构各下级累计签约情况
     *
     * @param endDate 截止日期
     * @param area    区域或机构代码
     * @param level   级别
     * @return
     */
    public JSONArray getLowLevelSignDetail(String endDate, String area, int level) {
        String areaField = "";
        String lowLevelField = "";
        String lowLevelName = "";
        if (level == 4) {
            // 市级别
            areaField = "city";
            lowLevelField = "town";
            lowLevelName = "town_name";
        } else if (level == 3) {
            // 区、城镇级别
            areaField = "town";
            lowLevelField = "org_code";
            lowLevelName = "org_name";
        } else if (level == 2) {
            // 机构级别
            areaField = "org_code";
            lowLevelField = "qkdoctor_code";
            lowLevelName = "qkdoctor_name";
        } else if (level == 1) {
        }
        // 查询语句
        String sql = " select " +
                "     ifnull(a." + lowLevelField + ",'') code " +
                "     ,ifnull(a." + lowLevelName + ",'') 'name' " +
                "     ,sum(a.result) amount ";
//        if(level > 3) {
//            sql += "     ,sum(a.result)*1.00/b.num*100 rate";
//        }
        sql += " from  " +
                "     wlyy_quota_result a";
//        if(level > 3) {
//            sql += "  inner join " +
//                    "     wlyy_people_num b" +
//                    "  on a." + lowLevelField + " = b.code ";
//        }
        sql += " where " +
                "     a.quato_code = '" + SIGN + "' " +
                "   and a.level1_type = ? and a.del = '1'" +
                "   and a.quota_date <= ? " +
                "   and a." + areaField + " = ? " +
                " group by a." + lowLevelField + ",a." + lowLevelName;
        List<Map<String, Object>> resultList = jdbcTemplate.queryForList(sql, new Object[]{level - 1, endDate, area});
        if (resultList != null) {
            DecimalFormat df = new DecimalFormat("0.00");
            for (Map<String, Object> map : resultList) {
                map.put("amount", map.get("amount") != null ? Math.round(Double.valueOf(map.get("amount").toString())) : 0);
//                if(level > 3){
//                    map.put("rate",df.format(map.get("rate") != null ? map.get("rate") : 0));
//                }
            }
            return new JSONArray(resultList);
        } else {
            return new JSONArray();
        }
    }
    /**
     * 查询截止某个日期某个区域后机构各下级累计建档情况
     *
     * @param endDate 截止日期
     * @param area    区域或机构代码
     * @param level   级别
     * @return
     */
    public JSONArray getLowLevelFilingDetail(String endDate, String area, int level) {
        String areaField = "";
        String lowLevelField = "";
        String lowLevelName = "";
        if (level == 4) {
            // 市级别
            areaField = "city";
            lowLevelField = "town";
            lowLevelName = "town_name";
        } else if (level == 3) {
            // 区、城镇级别
            areaField = "town";
            lowLevelField = "org_code";
            lowLevelName = "org_name";
        } else if (level == 2) {
            // 机构级别
            areaField = "org_code";
            lowLevelField = "qkdoctor_code";
            lowLevelName = "qkdoctor_name";
        } else if (level == 1) {
        }
        // 查询语句
        String sql = " select " +
                "     ifnull(" + lowLevelField + ",'') code " +
                "     ,ifnull(" + lowLevelName + ",'') 'name' " +
                "     ,sum(result) amount" +
                " from  " +
                "     wlyy_quota_result " +
                " where " +
                "     quato_code = '' " +
                "   and level1_type = '1' and del = '1'" +
                "   and quota_date <= ? " +
                "   and " + areaField + " = ? " +
                " group by " + lowLevelField + "," + lowLevelName;
        List<Map<String, Object>> resultList = jdbcTemplate.queryForList(sql, new Object[]{endDate, area});
        if (resultList != null) {
            for (Map<String, Object> map : resultList) {
                map.put("amount", map.get("amount") != null ? Math.round(Double.valueOf(map.get("amount").toString())) : 0);
            }
            return new JSONArray(resultList);
        } else {
            return new JSONArray();
        }
    }
    /**
     * 查询截止某个日期某个区域后机构各下级指标累计情况
     *
@ -1456,7 +1379,7 @@ public class StatisticsService extends BaseService {
                Map<String, Object> manbing = new HashMap<>();
                manbing.put("code", "2");
                manbing.put("name", "慢病人群65岁以下");
                manbing.put("name", "慢病人群");
                manbing.put("amount", Double.valueOf("0.0"));
                resultList.add(manbing);
@ -1483,12 +1406,6 @@ public class StatisticsService extends BaseService {
                tnbGxy.put("name", "高血压和糖尿病");
                tnbGxy.put("amount", Double.valueOf("0.0"));
                resultList.add(tnb);
                Map<String, Object> mn65LowGxy = new HashMap<>();
                mn65LowGxy.put("code", "7");
                mn65LowGxy.put("name", "慢病人群65岁以上");
                mn65LowGxy.put("amount", Double.valueOf("0.0"));
                resultList.add(mn65LowGxy);
            } else if (index.equals(AGE)) {
                Map<String, Object> map1 = new HashMap<>();
                map1.put("code", "1");
@ -1597,7 +1514,7 @@ public class StatisticsService extends BaseService {
                if (index.equals(GROUP)) {
                    // 分组指标总数算法
                    String code = map.get("code") != null ? String.valueOf(map.get("code")) : "";
                    if (code.equals("1") || code.equals("2") || code.equals("7") || code.equals("3")) {
                    if (code.equals("1") || code.equals("2") || code.equals("3")) {
                        total += (long) map.get("amount");
                    }
                } else if (index.equals("16")) {
@ -1645,14 +1562,21 @@ public class StatisticsService extends BaseService {
    /**
     * 统计65以上人群数据
     *
     * @param startDate
     * @param endDate
     * @param area
     * @param level
     * @return
     */
    public JSONArray getSixFiveStatistics(String startDate, String endDate, String area, int level) {
    public JSONArray getSixFiveStatistics(String endDate, String area, int level) {
        String areaField = "";
        SimpleDateFormat datef = new SimpleDateFormat("yyyy-MM-dd");
        String dateCon = endDate;
        if (endDate.compareTo(datef.format(new Date())) == 0) {
            Calendar calendar = Calendar.getInstance();
            calendar.add(Calendar.DATE, -1);
            dateCon = datef.format(calendar.getTime());
        }
        if (level == 4) {
            // 市级别
@ -1672,7 +1596,7 @@ public class StatisticsService extends BaseService {
        String sql = " select " +
                "     ifnull(level3_type,'') code " +
                "     ,ifnull(level3_type_name,'') 'name' " +
                "     ,ifnull(sum(result),0.0) amount" +
                "     ,ifnull(result,0.0) amount" +
                " from  " +
                "     wlyy_quota_result " +
                " where " +
@ -1681,21 +1605,13 @@ public class StatisticsService extends BaseService {
                "   and level1_type = ? and del = '1'";
        if (!org.apache.commons.lang3.StringUtils.isEmpty(startDate)) {
            sql += "   and quota_date >= ? ";
        }
        sql += "   and quota_date <= ? " +
        sql += "   and quota_date = ? " +
                "   and " + areaField + " = ? " +
                " group by level3_type,level3_type_name";
        List<Map<String, Object>> resultList = null;
        if (org.apache.commons.lang3.StringUtils.isEmpty(startDate)) {
            resultList = jdbcTemplate.queryForList(sql, new Object[]{level, endDate, area});
        } else {
            resultList = jdbcTemplate.queryForList(sql, new Object[]{level, startDate, endDate, area});
        }
        resultList = jdbcTemplate.queryForList(sql, new Object[]{level, dateCon, area});
        if (resultList == null || resultList.size() < 1) {
            resultList = new ArrayList<>();
@ -1730,7 +1646,7 @@ public class StatisticsService extends BaseService {
                map.put("amount", map.get("amount") == null ? 0 : Math.round(Double.valueOf(map.get("amount").toString())));
                // 当天数据统计
                if (endDate.compareTo(new SimpleDateFormat("yyyy-MM-dd").format(new Date())) >= 0) {
                if (endDate.compareTo(new SimpleDateFormat("yyyy-MM-dd").format(new Date())) == 0) {
                    String code = map.get("code") != null ? String.valueOf(map.get("code")) : "";
                    String val = redisTemplate.opsForValue().get("quota:12:" + level + ":6:" + code + ":" + area);
                    if (!StringUtils.isEmpty(val)) {
@ -1743,7 +1659,7 @@ public class StatisticsService extends BaseService {
            }
            // 65岁以上人群总数统计
            long sixFiveTotal = getSixFiveTotal(startDate, endDate, area, level);
            long sixFiveTotal = getSixFiveTotal(endDate, area, level);
            Map<String, Object> sixFive = new HashMap<>();
            sixFive.put("code", "0");
@ -1760,15 +1676,22 @@ public class StatisticsService extends BaseService {
    /**
     * 获取65岁以上人群总数
     *
     * @param startDate
     * @param endDate
     * @param area
     * @param level
     * @return
     */
    public long getSixFiveTotal(String startDate, String endDate, String area, int level) {
    public long getSixFiveTotal(String endDate, String area, int level) {
        String areaField = "";
        long total = 0;
        SimpleDateFormat datef = new SimpleDateFormat("yyyy-MM-dd");
        String dateCon = endDate;
        if (endDate.compareTo(datef.format(new Date())) == 0) {
            Calendar calendar = Calendar.getInstance();
            calendar.add(Calendar.DATE, -1);
            dateCon = datef.format(calendar.getTime());
        }
        if (level == 4) {
            // 市级别
@ -1786,7 +1709,7 @@ public class StatisticsService extends BaseService {
        // 查询语句
        String sql = " select " +
                "     ifnull(sum(result),0.0) amount" +
                "     ifnull(result,0.0) amount" +
                " from  " +
                "     wlyy_quota_result " +
                " where " +
@ -1795,31 +1718,25 @@ public class StatisticsService extends BaseService {
                "   and level1_type = ? and del = '1'";
        if (!org.apache.commons.lang3.StringUtils.isEmpty(startDate)) {
            sql += "   and quota_date >= ? ";
        }
        sql += "   and quota_date <= ? " +
        sql += "   and quota_date = ? " +
                "   and " + areaField + " = ? ";
        Map<String, Object> result = null;
        if (org.apache.commons.lang3.StringUtils.isEmpty(startDate)) {
            result = jdbcTemplate.queryForMap(sql, new Object[]{level, endDate, area});
        } else {
            result = jdbcTemplate.queryForMap(sql, new Object[]{level, startDate, endDate, area});
        }
        result = jdbcTemplate.queryForMap(sql, new Object[]{level, dateCon, area});
        if (result != null && result.containsKey("amount")) {
            total += (result.get("amount") == null ? 0 : Math.round(Double.valueOf(result.get("amount").toString())));
        }
        String code = "6";
        String val = redisTemplate.opsForValue().get("quota:8:" + level + ":" + code + ":" + area);
        if (!StringUtils.isEmpty(val)) {
            JSONObject valJson = new JSONObject(val);
            if (valJson.has("num") && valJson.getInt("num") > 0) {
                total += valJson.getInt("num");
        if (endDate.compareTo(datef.format(new Date())) == 0) {
            String code = "6";
            String val = redisTemplate.opsForValue().get("quota:8:" + level + ":" + code + ":" + area);
            if (!StringUtils.isEmpty(val)) {
                JSONObject valJson = new JSONObject(val);
                if (valJson.has("num") && valJson.getInt("num") > 0) {
                    total += valJson.getInt("num");
                }
            }
        }
@ -1982,7 +1899,7 @@ public class StatisticsService extends BaseService {
                map.put("amount", map.get("amount") != null ? Long.valueOf(map.get("amount").toString()) : 0L);
                // 截止日期包含当天,则从redis查询当天统计数据
                if (date.compareTo(dateFormat.format(new Date())) >= 0) {
                if (date.compareTo(dateFormat.format(new Date())) == 0) {
                    String code = map.get("code") != null ? String.valueOf(map.get("code")) : "";
                    String val = redisTemplate.opsForValue().get("quota:" + index + ":" + low_level + ":" + code);
                    if (!StringUtils.isEmpty(val)) {
@ -2176,10 +2093,10 @@ public class StatisticsService extends BaseService {
            countResult.put(startStr, range);
        }
        if(startDate.equals(df.format(new Date()))){
        if (startDate.equals(df.format(new Date()))) {
            Calendar preDate = Calendar.getInstance();
            preDate.setTime(df.parse(endDate));
            preDate.add(Calendar.DATE,-1);
            preDate.add(Calendar.DATE, -1);
            startDate = df.format(preDate.getTime());
        }
@ -2201,10 +2118,10 @@ public class StatisticsService extends BaseService {
        if (resultList != null) {
            String preStr = "";
            if (endDate.equals(df.format(new Date()))){
            if (endDate.equals(df.format(new Date()))) {
                Calendar preDate = Calendar.getInstance();
                preDate.setTime(df.parse(endDate));
                preDate.add(Calendar.DATE,-1);
                preDate.add(Calendar.DATE, -1);
                preStr = df.format(preDate.getTime());
            }
@ -2216,10 +2133,10 @@ public class StatisticsService extends BaseService {
                    long resultAmount = map.get("amount") != null ? Long.valueOf(map.get("amount").toString()) : 0L;
                    range.put("amount", amount + resultAmount);
                }
                if(org.apache.commons.lang3.StringUtils.isNotEmpty(preStr) &&
                        preStr.equals(map.get("range").toString())){
                if (org.apache.commons.lang3.StringUtils.isNotEmpty(preStr) &&
                        preStr.equals(map.get("range").toString())) {
                    JSONObject range = (JSONObject) countResult.get(endDate);
                    if(range != null) {
                    if (range != null) {
                        long amount = range.getLong("amount");
                        long resultAmount = map.get("amount") != null ? Long.valueOf(map.get("amount").toString()) : 0L;
                        range.put("amount", amount + resultAmount);
@ -2374,10 +2291,10 @@ public class StatisticsService extends BaseService {
            countResult.put(endStr, range);
        }
        if(startDate.equals(df.format(new Date()))){
        if (startDate.equals(df.format(new Date()))) {
            Calendar preDate = Calendar.getInstance();
            preDate.setTime(df.parse(endDate));
            preDate.add(Calendar.DATE,-1);
            preDate.add(Calendar.DATE, -1);
            startDate = df.format(preDate.getTime());
        }
@ -2402,7 +2319,7 @@ public class StatisticsService extends BaseService {
            if (endDate.equals(df.format(new Date()))) {
                Calendar preDate = Calendar.getInstance();
                preDate.setTime(df.parse(endDate));
                preDate.add(Calendar.DATE,-1);
                preDate.add(Calendar.DATE, -1);
                pre = df.format(preDate.getTime());
            }
@ -2571,10 +2488,10 @@ public class StatisticsService extends BaseService {
            countResult.put(endStr, range);
        }
        if(startDate.equals(df.format(new Date()))){
        if (startDate.equals(df.format(new Date()))) {
            Calendar preDate = Calendar.getInstance();
            preDate.setTime(df.parse(endDate));
            preDate.add(Calendar.DATE,-1);
            preDate.add(Calendar.DATE, -1);
            startDate = df.format(preDate.getTime());
        }
@ -2599,7 +2516,7 @@ public class StatisticsService extends BaseService {
            if (endDate.equals(df.format(new Date()))) {
                Calendar preDate = Calendar.getInstance();
                preDate.setTime(df.parse(endDate));
                preDate.add(Calendar.DATE,-1);
                preDate.add(Calendar.DATE, -1);
                pre = df.format(preDate.getTime());
            }
            // 计算结果
@ -2645,4 +2562,267 @@ public class StatisticsService extends BaseService {
    }
    /**
     * 获取二级指标的到达量
     *
     * @param endDate
     * @param area
     * @param level
     * @param index
     * @return
     */
    public JSONArray getIndexLevelTwototal(String endDate, String area, int level, String index) {
        String areaField = "";
        SimpleDateFormat datef = new SimpleDateFormat("yyyy-MM-dd");
        String dateCon = endDate;
        if (endDate.compareTo(datef.format(new Date())) == 0) {
            Calendar calendar = Calendar.getInstance();
            calendar.add(Calendar.DATE, -1);
            dateCon = datef.format(calendar.getTime());
        }
        if (level == 4) {
            // 市级别
            areaField = "city";
        } else if (level == 3) {
            // 区、城镇级别
            areaField = "town";
        } else if (level == 2) {
            // 机构级别
            areaField = "org_code";
        } else if (level == 1) {
            // 团队
            areaField = "qkdoctor_code";
        }
        // 查询语句
        String sql = " select " +
                "     ifnull(level2_type,'') code " +
                "     ,ifnull(level2_type_name,'') 'name' " +
                "     ,ifnull(result,0.0) amount" +
                " from  " +
                "     wlyy_quota_result " +
                " where " +
                "     quato_code = '" + index + "' " +
                "   and level1_type = ? and del = '1'";
        sql += "   and quota_date = ? " +
                "   and " + areaField + " = ? " +
                " group by level2_type,level2_type_name";
        List<Map<String, Object>> resultList = null;
        resultList = jdbcTemplate.queryForList(sql, new Object[]{level, dateCon, area});
        if (resultList == null || resultList.size() < 1) {
            resultList = new ArrayList<>();
            if (index.equals(SEX)) {
                Map<String, Object> women = new HashMap<>();
                women.put("code", "1");
                women.put("name", "女");
                women.put("amount", Double.valueOf("0.0"));
                resultList.add(women);
                Map<String, Object> man = new HashMap<>();
                man.put("code", "2");
                man.put("name", "男");
                man.put("amount", Double.valueOf("0.0"));
                resultList.add(man);
                Map<String, Object> unknown = new HashMap<>();
                unknown.put("code", "3");
                unknown.put("name", "未知");
                unknown.put("amount", Double.valueOf("0.0"));
                resultList.add(unknown);
            } else if (index.equals(GROUP)) {
                Map<String, Object> normal = new HashMap<>();
                normal.put("code", "1");
                normal.put("name", "普通人群");
                normal.put("amount", Double.valueOf("0.0"));
                resultList.add(normal);
                Map<String, Object> manbing = new HashMap<>();
                manbing.put("code", "2");
                manbing.put("name", "慢病人群");
                manbing.put("amount", Double.valueOf("0.0"));
                resultList.add(manbing);
                Map<String, Object> upsixfive = new HashMap<>();
                upsixfive.put("code", "3");
                upsixfive.put("name", "65岁以上人群");
                upsixfive.put("amount", Double.valueOf("0.0"));
                resultList.add(upsixfive);
                Map<String, Object> gxy = new HashMap<>();
                gxy.put("code", "4");
                gxy.put("name", "高血压");
                gxy.put("amount", Double.valueOf("0.0"));
                resultList.add(gxy);
                Map<String, Object> tnb = new HashMap<>();
                tnb.put("code", "5");
                tnb.put("name", "糖尿病");
                tnb.put("amount", Double.valueOf("0.0"));
                resultList.add(tnb);
                Map<String, Object> tnbGxy = new HashMap<>();
                tnbGxy.put("code", "6");
                tnbGxy.put("name", "高血压和糖尿病");
                tnbGxy.put("amount", Double.valueOf("0.0"));
                resultList.add(tnb);
//                Map<String, Object> mn65LowGxy = new HashMap<>();
//                mn65LowGxy.put("code", "7");
//                mn65LowGxy.put("name", "慢病人群65岁以上");
//                mn65LowGxy.put("amount", Double.valueOf("0.0"));
//                resultList.add(mn65LowGxy);
            } else if (index.equals(AGE)) {
                Map<String, Object> map1 = new HashMap<>();
                map1.put("code", "1");
                map1.put("name", "0~6");
                map1.put("amount", Double.valueOf("0.0"));
                resultList.add(map1);
                Map<String, Object> map2 = new HashMap<>();
                map2.put("code", "2");
                map2.put("name", "7~18");
                map2.put("amount", Double.valueOf("0.0"));
                resultList.add(map2);
                Map<String, Object> map3 = new HashMap<>();
                map3.put("code", "3");
                map3.put("name", "18~30");
                map3.put("amount", Double.valueOf("0.0"));
                resultList.add(map3);
                Map<String, Object> map4 = new HashMap<>();
                map4.put("code", "4");
                map4.put("name", "30~50");
                map4.put("amount", Double.valueOf("0.0"));
                resultList.add(map4);
                Map<String, Object> map5 = new HashMap<>();
                map5.put("code", "5");
                map5.put("name", "50~65");
                map5.put("amount", Double.valueOf("0.0"));
                resultList.add(map5);
                Map<String, Object> map6 = new HashMap<>();
                map6.put("code", "6");
                map6.put("name", "50~65");
                map6.put("amount", Double.valueOf("0.0"));
                resultList.add(map6);
            } else if (index.equals("16")) {
                Map<String, Object> map1 = new HashMap<>();
                map1.put("code", "0");
                map1.put("name", "未缴费人数");
                map1.put("amount", Double.valueOf("0.0"));
                resultList.add(map1);
                Map<String, Object> map2 = new HashMap<>();
                map2.put("code", "1");
                map2.put("name", "已缴费人数");
                map2.put("amount", Double.valueOf("0.0"));
                resultList.add(map2);
                Map<String, Object> map3 = new HashMap<>();
                map3.put("code", "2");
                map3.put("name", "已退费人数");
                map3.put("amount", Double.valueOf("0.0"));
                resultList.add(map3);
            } else if (index.equals("15")) {
                Map<String, Object> map1 = new HashMap<>();
                map1.put("code", "0");
                map1.put("name", "未标注");
                map1.put("amount", Double.valueOf("0.0"));
                resultList.add(map1);
                Map<String, Object> map2 = new HashMap<>();
                map2.put("code", "1");
                map2.put("name", "健康人群");
                map2.put("amount", Double.valueOf("0.0"));
                resultList.add(map2);
                Map<String, Object> map3 = new HashMap<>();
                map3.put("code", "2");
                map3.put("name", "患病人群");
                map3.put("amount", Double.valueOf("0.0"));
                resultList.add(map3);
                Map<String, Object> map4 = new HashMap<>();
                map4.put("code", "3");
                map4.put("name", "高危人群");
                map4.put("amount", Double.valueOf("0.0"));
                resultList.add(map4);
                Map<String, Object> map5 = new HashMap<>();
                map5.put("code", "4");
                map5.put("name", "恢复期人群");
                map5.put("amount", Double.valueOf("0.0"));
                resultList.add(map5);
            }
        }
        if (resultList != null) {
            long total = 0;
            for (Map<String, Object> map : resultList) {
                map.put("amount", map.get("amount") == null ? 0 : Math.round(Double.valueOf(map.get("amount").toString())));
                // 当天数据统计
                if (endDate.compareTo(new SimpleDateFormat("yyyy-MM-dd").format(new Date())) == 0) {
                    String code = map.get("code") != null ? String.valueOf(map.get("code")) : "";
                    String val = redisTemplate.opsForValue().get("quota:" + index + ":" + level + ":" + code + ":" + area);
                    if (!StringUtils.isEmpty(val)) {
                        JSONObject valJson = new JSONObject(val);
                        if (valJson.has("num") && valJson.getInt("num") > 0) {
                            map.put("amount", (long) map.get("amount") + valJson.getInt("num"));
                        }
                    }
                }
                if (index.equals(GROUP)) {
                    // 分组指标总数算法
                    String code = map.get("code") != null ? String.valueOf(map.get("code")) : "";
                    if (code.equals("1") || code.equals("2") || code.equals("3")) {
                        total += (long) map.get("amount");
                    }
                } else if (index.equals("16")) {
                    String code = map.get("code") != null ? String.valueOf(map.get("code")) : "";
                    if (!code.equals("2")) {
                        total += (long) map.get("amount");
                    }
                } else {
                    total += (long) map.get("amount");
                }
            }
            if (!index.equals(AGE)) {
                DecimalFormat df = new DecimalFormat("0.0000");
                for (Map<String, Object> map : resultList) {
                    double rateG = (total > 0 ? ((long) map.get("amount")) * 1.0000 / total * 100 : 0);
                    map.put("rate", df.format(rateG));
                }
            }
            if (index.equals(SEX) && resultList.size() > 0) {
                int i = 0;
                boolean flag = false;
                for (; i < resultList.size(); i++) {
                    if (resultList.get(i).get("code") != null && String.valueOf(resultList.get(i).get("code")).equals("3")
                            && String.valueOf(resultList.get(i).get("amount")).equals("0")) {
                        flag = true;
                        break;
                    }
                }
                if (flag) {
                    resultList.remove(i);
                }
            }
            return new JSONArray(resultList);
        } else {
            return new JSONArray();
        }
    }
}

+ 49 - 22
patient-co-wlyy/src/main/java/com/yihu/wlyy/web/statistic/StatisticsController.java

@ -32,12 +32,12 @@ public class StatisticsController extends BaseController {
     */
    @RequestMapping(value = "/time")
    @ResponseBody
    public String getStatisticsTime(){
        try{
            return write(200,"查询成功","data",statisticsService.getStatisticsTime());
        }catch (Exception e){
    public String getStatisticsTime() {
        try {
            return write(200, "查询成功", "data", statisticsService.getStatisticsTime());
        } catch (Exception e) {
            e.printStackTrace();
            return error(-1,"查询失败");
            return error(-1, "查询失败");
        }
    }
@ -140,13 +140,13 @@ public class StatisticsController extends BaseController {
     */
    @RequestMapping("/lowlevel_increment")
    @ResponseBody
    public String getIndexLowLevelIncrement(String startDate, String endDate, String area, int level, String index, int sort,String lowLevel) {
    public String getIndexLowLevelIncrement(String startDate, String endDate, String area, int level, String index, int sort, String lowLevel) {
        try {
            String[] indexes = index.split(",");
            JSONObject result = new JSONObject();
            for (String idx : indexes) {
                result.put("index_" + idx, statisticsService.getLowLevelIncrementDetail(startDate, endDate, area, level, idx, sort,lowLevel));
                result.put("index_" + idx, statisticsService.getLowLevelIncrementDetail(startDate, endDate, area, level, idx, sort, lowLevel));
            }
            return write(200, "查询成功", "data", result);
@ -201,7 +201,7 @@ public class StatisticsController extends BaseController {
            JSONObject result = new JSONObject();
            for (String idx : indexes) {
                result.put("index_" + idx, statisticsService.getLevelTwoIndexIncrement(startDate, endDate, area, level, idx));
                result.put("index_" + idx, statisticsService.getIndexLevelTwototal(endDate, area, level, idx));
            }
            return write(200, "查询成功", "data", result);
@ -226,15 +226,15 @@ public class StatisticsController extends BaseController {
        try {
            JSONObject result = new JSONObject();
            long sign = statisticsService.getTotalAmount(endDate, area, level, "1");
            long sign = statisticsService.getIndexTotal(endDate, area, level, "13");
            long weiJf = statisticsService.getWeiJiaoFei(endDate, area, level);
            JSONObject signRate = statisticsService.getSignRate(endDate,area,level);
            JSONObject signTaskRate = statisticsService.getSignTaskRate(endDate,area,level);
            JSONObject signRate = statisticsService.getSignRate(endDate, area, level);
            JSONObject signTaskRate = statisticsService.getSignTaskRate(endDate, area, level);
            result.put("sign",sign);
            result.put("expenses",weiJf);
            result.put("signRate",signRate);
            result.put("signTaskRate",signTaskRate);
            result.put("sign", sign);
            result.put("expenses", weiJf);
            result.put("signRate", signRate);
            result.put("signTaskRate", signTaskRate);
            return write(200, "查询成功", "data", result);
        } catch (Exception e) {
@ -254,14 +254,14 @@ public class StatisticsController extends BaseController {
     */
    @RequestMapping(value = "/sixfive_statistics")
    @ResponseBody
    public String getSixFiveStatistics(String startDate, String endDate, String area, int level){
        try{
            JSONArray result = statisticsService.getSixFiveStatistics(startDate,endDate,area,level);
    public String getSixFiveStatistics(String startDate, String endDate, String area, int level) {
        try {
            JSONArray result = statisticsService.getSixFiveStatistics(endDate, area, level);
            return write(200,"查询成功","data",result);
        }catch (Exception e){
            return write(200, "查询成功", "data", result);
        } catch (Exception e) {
            e.printStackTrace();
            return error(-1,"查询失败");
            return error(-1, "查询失败");
        }
    }
@ -278,7 +278,7 @@ public class StatisticsController extends BaseController {
     */
    @RequestMapping(value = "/interval_total")
    @ResponseBody
    public String indexIntervalTotal(String startDate, String endDate, int interval, String area, int level, String index){
    public String indexIntervalTotal(String startDate, String endDate, int interval, String area, int level, String index) {
        try {
            String[] indexes = index.split(",");
            JSONObject result = new JSONObject();
@ -322,4 +322,31 @@ public class StatisticsController extends BaseController {
            return error(-1, "查询失败");
        }
    }
    /**
     * 二级指标到达量
     *
     * @param date
     * @param area
     * @param level
     * @param index
     * @return
     */
    @RequestMapping(value = "/leveltwo_all")
    @ResponseBody
    public String getIndexLevelTwoTotal(String date, String area, int level, String index) {
        try {
            String[] indexes = index.split(",");
            JSONObject result = new JSONObject();
            for (String idx : indexes) {
                result.put("index_" + idx, statisticsService.getIndexLevelTwototal(date, area, level, idx));
            }
            return write(200, "查询成功", "data", result);
        } catch (Exception e) {
            e.printStackTrace();
            return error(-1, "查询失败");
        }
    }
}