chenweida 8 rokov pred
rodič
commit
13205b0e2e

+ 2 - 27
patient-co-wlyy/src/main/java/com/yihu/wlyy/service/app/statistics/StatisticsAllService.java

@ -2866,7 +2866,7 @@ public class StatisticsAllService extends BaseService {
        return filesize + "%";
    }
    public JSONArray getLevelTwoLowLevelTotalSignAndRenew(String date, String area, int level, String index, int sort, String lowLevel, String lowCode, String year) throws Exception {
    public JSONArray getLevelTwoLowLevelTotalSignAndRenew( String area, int level, String index, int sort, String lowLevel, String year) throws Exception {
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
        String lastDate = year + "-06-30";
@ -2875,26 +2875,7 @@ public class StatisticsAllService extends BaseService {
        String low_level = String.valueOf(StringUtils.isEmpty(lowLevel) ? (level - 1) : lowLevel);
        List<Map<String, Object>> resultList = new ArrayList<>();//续签量
        //获取续签量
        JSONArray renewJA = getLevel2ListForRedis("29", level + "", lowLevel, area, timeKey);
        //获取续入量
        String indexTemp = "";
        if ("1".equals(lowLevel)) {
            indexTemp = "34";//团队的签入指标
        } else if ("2".equals(lowLevel)) {
            indexTemp = "38";//机构的签入指标
        } else {
            indexTemp = "40";//区的签入指标
        }
        JSONArray signInJA = getLevel2ListForRedis(indexTemp, level + "", lowLevel, area, timeKey);
        //签入的列表转map
        Map<String, Integer> signInMap = new HashMap<>();
        if (signInJA != null && signInJA.length() > 0) {
            for (int i = 0; i < signInJA.length(); i++) {
                JSONObject jo = signInJA.getJSONObject(i);
                signInMap.put(jo.getString("code"), jo.getInt("num"));
            }
        }
        JSONArray renewJA = getLevel2ListForRedis(index, level + "", lowLevel, area, timeKey);
        //续签的的列表转map
        Map<String, Integer> renewMap = new HashMap<>();
@ -2914,13 +2895,10 @@ public class StatisticsAllService extends BaseService {
                map.put("amount", map.get("amount") != null ? Long.valueOf(map.get("amount").toString()) : 0L);
                //获取去年签约的人数 默认是上个年度的最后一天
                WlyyQuotaResult redisNum = findOneQuotaResult(lastDate, Integer.valueOf(low_level), "1", map.get("code").toString());
                Integer signId = signInMap.get(map.get("code").toString()) == null ? 0 : signInMap.get(map.get("code").toString());
                if (redisNum == null) {
                    int signNum = 0;
                    int renewNum =renewMap.get(map.get("code").toString());
                    int signInNum=signInMap.get(map.get("code").toString());
                    signNum = Integer.valueOf(0);
                    renewNum = renewNum-signInNum; //续签量等于 续签量-签入量
                    map.put("rate", getRange(renewNum, signNum, 2));
                    map.put("signNum", 0);
                    map.put("renewNum", renewNum);
@ -2929,10 +2907,7 @@ public class StatisticsAllService extends BaseService {
                    if (peopleNum != null) {
                        int signNum = 0;
                        int renewNum =renewMap.get(map.get("code").toString());
                        int signInNum=signInMap.get(map.get("code").toString());
                        signNum = Integer.valueOf(redisNum.getResult());
                        renewNum = renewNum-signInNum; //续签量等于 续签量-签入量
                        map.put("rate", getRange(renewNum, signNum, 2));
                        map.put("signNum", signNum);
                        map.put("renewNum", renewNum);

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

@ -144,7 +144,7 @@ public class StatisticsService extends BaseService {
            sql += " and level2_type = '" + level2_type + "'";
        }
        Map<String, Object> result = jdbcTemplate.queryForMap(sql, new Object[]{level, endDate, area});
        Map<String, Object> result = jdbcTemplate.queryForMap(sql, level, endDate, area);
        // 截止日期包含当天,则从redis查询当天统计数据
        if (endDate.compareTo(new SimpleDateFormat("yyyy-MM-dd").format(new Date())) >= 0) {
@ -206,7 +206,7 @@ public class StatisticsService extends BaseService {
            sql += " and qkdoctor_code = ?";
        }
        Map<String, Object> result = jdbcTemplate.queryForMap(sql, new Object[]{level, startDate, endDate, area});
        Map<String, Object> result = jdbcTemplate.queryForMap(sql, level, startDate, endDate, area);
        // 截止日期包含当天,则从redis查询当天统计数据
        if (endDate.compareTo(new SimpleDateFormat("yyyy-MM-dd").format(new Date())) >= 0) {
@ -310,7 +310,7 @@ public class StatisticsService extends BaseService {
            sql += " order by amount asc ";
        }
        List<Map<String, Object>> resultList = jdbcTemplate.queryForList(sql, new Object[]{low_level, endDate, area});
        List<Map<String, Object>> resultList = jdbcTemplate.queryForList(sql, low_level, endDate, area);
        // 结果为空时,自建结果集
        if (resultList == null || resultList.size() < 1) {
@ -525,7 +525,7 @@ public class StatisticsService extends BaseService {
            sql += " order by amount asc ";
        }
        List<Map<String, Object>> resultList = jdbcTemplate.queryForList(sql, new Object[]{low_level, startDate, endDate, area});
        List<Map<String, Object>> resultList = jdbcTemplate.queryForList(sql, low_level, startDate, endDate, area);
        // 结果为空时,自建结果集
        if (resultList == null || resultList.size() < 1) {
@ -771,7 +771,7 @@ public class StatisticsService extends BaseService {
        if (resultList != null) {
            for (Map<String, Object> map : resultList) {
                if (countResult.containsKey(map.get("range").toString())) {
                    JSONObject range = (JSONObject) countResult.get(map.get("range").toString());
                    JSONObject range = countResult.get(map.get("range").toString());
                    long amount = range.getLong("amount");
                    long resultAmount = map.get("amount") != null ? Math.round(Double.valueOf(map.get("amount").toString())) : 0;
                    range.put("amount", amount + resultAmount);
@ -1647,7 +1647,7 @@ public class StatisticsService extends BaseService {
            sql += " AND d.hospital = ? ";
        }
        Map<String, Object> rs = jdbcTemplate.queryForMap(sql, new Object[]{area});
        Map<String, Object> rs = jdbcTemplate.queryForMap(sql, area);
        JSONObject json = new JSONObject();
@ -1681,7 +1681,7 @@ public class StatisticsService extends BaseService {
        sql += " GROUP BY mt order by mt DESC ";
        List<Map<String, Object>> rs = jdbcTemplate.queryForList(sql, new Object[]{statDate, endDate, area});
        List<Map<String, Object>> rs = jdbcTemplate.queryForList(sql, statDate, endDate, area);
        Map<String, Object> map = new HashMap<>();
        if (rs != null && rs.size() > 0) {
            //降低循环层级
@ -2866,14 +2866,14 @@ public class StatisticsService extends BaseService {
        List<Map<String, Object>> couTotal = jdbcTemplate.queryForList(couTotalSQL);
        if (couTotal != null && couTotal.size() > 0) {
            Map<String, Object> couTotalMap = couTotal.get(0);
            total = (Long) couTotalMap.get("total") == null ? 0L : (Long) couTotalMap.get("total");
            total = couTotalMap.get("total") == null ? 0L : (Long) couTotalMap.get("total");
        }
        rs.put("total", total);
        List<Map<String, Object>> reyTotal = jdbcTemplate.queryForList(reyTotalSql);
        if (reyTotal != null && reyTotal.size() > 0) {
            Map<String, Object> reyTotalMap = reyTotal.get(0);
            relyOnTime = (Long) reyTotalMap.get("total") == null ? 0L : (Long) reyTotalMap.get("total");
            relyOnTime = reyTotalMap.get("total") == null ? 0L : (Long) reyTotalMap.get("total");
        }
        if (total != 0L && relyOnTime != 0L) {
            double rr = (double) relyOnTime / total * 100;
@ -2887,7 +2887,7 @@ public class StatisticsService extends BaseService {
        List<Map<String, Object>> addTotal = jdbcTemplate.queryForList(addTotalSql);
        if (addTotal != null && addTotal.size() > 0) {
            Map<String, Object> addTotalMap = addTotal.get(0);
            addNumber = (Long) addTotalMap.get("total") == null ? 0L : (Long) addTotalMap.get("total");
            addNumber = addTotalMap.get("total") == null ? 0L : (Long) addTotalMap.get("total");
        }
        //本周或月增量
        rs.put("addNumber", addNumber);
@ -2895,7 +2895,7 @@ public class StatisticsService extends BaseService {
        List<Map<String, Object>> noRelyTotal = jdbcTemplate.queryForList(noRelySql);
        if (noRelyTotal != null && noRelyTotal.size() > 0) {
            Map<String, Object> noRelyTotalMap = noRelyTotal.get(0);
            noRelyNumber = (Long) noRelyTotalMap.get("total") == null ? 0L : (Long) noRelyTotalMap.get("total");
            noRelyNumber = noRelyTotalMap.get("total") == null ? 0L : (Long) noRelyTotalMap.get("total");
        }
        rs.put("noRelyNumber", noRelyNumber);
        return rs;
@ -4027,12 +4027,30 @@ public class StatisticsService extends BaseService {
    }
    public JSONObject getRenewPercentAndChangePercent(String level, String code, String year) {
        String renewIndex="";
        String switchIndex="";
        if("2".equals(level)){
            //团队的续签量
            renewIndex="42";
            //团队的转签
            switchIndex="37";
        }else if("2".equals(level)){
            //社区的续签量
            renewIndex="43";
            //社区的转签
            switchIndex="45";
        }else{
            //区和市的续签量
            renewIndex="44";
            //区和市的转签
            switchIndex="46";
        }
        JSONObject jo = new JSONObject();
        //获取时间戳
        String timeKey = redisTemplate.opsForValue().get("quota:timeKey");
        //从redis中获取最新的续签数据  续签指标是29
        int renewNum = getLevel1NumForRedis("29", level, code, timeKey);
        ;
        int renewNum = getLevel1NumForRedis(renewIndex, level, code, timeKey);
        //根据年度获取去年的签约数 签约指标是1
        String date = year + "-06-30";
        String index = "1";
@ -4042,7 +4060,7 @@ public class StatisticsService extends BaseService {
            signNum = Integer.valueOf(wlyyQuotaResult.getResult());
        }
        //从redis中获取最新的转签数据  指标是37
        int switchNum = getLevel1NumForRedis("37", level, code, timeKey);
        int switchNum = getLevel1NumForRedis(switchIndex, level, code, timeKey);
        jo.put("yesterYearSign", signNum);//去年的签约量
        jo.put("thisYearRenew", renewNum);//今年的续签量
        jo.put("thisYearSwithch", switchNum);//今年的转签量
@ -4053,18 +4071,19 @@ public class StatisticsService extends BaseService {
    }
    public JSONObject getRenewAnalysis(String level, String code) {
    public JSONObject getRenewAnalysis(String switchIndex,String switchIndexReson,String signIn,String signOut,String level, String code) {
        JSONObject jo = new JSONObject();
        String timeKey = redisTemplate.opsForValue().get("quota:timeKey");
        //获取签入人数
        int switchNum = getLevel1NumForRedis("37", level, code, timeKey);
        int switchNum = getLevel1NumForRedis(switchIndex, level, code, timeKey);
        //获取转签分布
        JSONArray switchJO = getLevel2JsonObjectForRedis("30", level, code, timeKey);
        JSONArray switchJO = getLevel2JsonObjectForRedis(switchIndexReson, level, code, timeKey);
        //获取签入人数
        int inNum = getLevel1NumForRedis("34", level, code, timeKey);
        int inNum = getLevel1NumForRedis(signIn, level, code, timeKey);
        //获取签出人数
        int outNum = getLevel1NumForRedis("35", level, code, timeKey);
        int outNum = getLevel1NumForRedis(signOut, level, code, timeKey);
        int changeTeam = getLevel1NumForRedis("31", level, code, timeKey);//夸团队的数目
        int changeHospital = getLevel1NumForRedis("32", level, code, timeKey);//夸社区的数目

+ 48 - 5
patient-co-wlyy/src/main/java/com/yihu/wlyy/web/statistic/StatisticsController.java

@ -1438,7 +1438,40 @@ public class StatisticsController extends BaseController {
            @RequestParam(required = true) String level,
            @RequestParam(required = true) String code) {
        try {
            return write(200, "查询成功", "data", statisticsService.getRenewAnalysis(level, code));
            String switchIndex="";
            String switchIndexReson="";
            String signIn="";
            String signOut="";
            if("1".equals(level)){
                //团队的转签人数
                switchIndex="37";
                //团队的转签原因
                switchIndexReson="30";
                //团队的签入
                signIn="34";
                //团队的签出
                signOut="35";
            }else if("2".equals(level)){
                //社区的续签量
                switchIndex="45";
                //社区的转签原因
                switchIndexReson="47";
                //社区的签入
                signIn="38";
                //社区的签出
                signOut="39";
            }else{
                //区和市的续签量
                switchIndex="46";
                //区和市的转签原因
                switchIndexReson="48";
                //区和市的签入
                signIn="40";
                //区和市的签出
                signOut="41";
            }
            return write(200, "查询成功", "data", statisticsService.getRenewAnalysis(switchIndex,switchIndexReson,signIn,signOut,level, code));
        } catch (Exception e) {
            error(e);
            return error(-1, "查询失败");
@ -1462,7 +1495,6 @@ public class StatisticsController extends BaseController {
    /**
     * 去年的签约量,续签量和续签率 列表
     *
     * @param date
     * @param area
     * @param level   level1_type等级 1:团队 2社区机构 3区级 4市级
     * @param sort    0:升序 1:降序
@ -1471,12 +1503,11 @@ public class StatisticsController extends BaseController {
     */
    @RequestMapping("/lowlevel_all_sign_renew")
    @ResponseBody
    public String getIndexLowLevelTotalSignAndRenew(@RequestParam(required = true) String date,
    public String getIndexLowLevelTotalSignAndRenew(
                                                    @RequestParam(required = true) String area,
                                                    @RequestParam(required = true) int level,
                                                    @RequestParam(required = true) int sort,
                                                    @RequestParam(required = false) String lowLevel,
                                                    @RequestParam(required = false) String lowCode,
                                                    @RequestParam(required = false) String year) {
        try {
@ -1488,8 +1519,20 @@ public class StatisticsController extends BaseController {
            if(org.springframework.util.StringUtils.isEmpty(lowLevel)){
                lowLevel=level-1+"";
            }
            String index="";
            if(1==level){
                //团队的续签量
                index="42";
            }else if(2==level){
                //社区的续签量
                index="43";
            }else{
                //区和市的续签量
                index="44";
            }
            result.put("index_29" , statisticsAllService.getLevelTwoLowLevelTotalSignAndRenew(date, area, level, "29", sort, lowLevel, lowCode,year));
            result.put("index_29" , statisticsAllService.getLevelTwoLowLevelTotalSignAndRenew( area, level, index, sort, lowLevel,year));
            return write(200, "查询成功", "data", result);
        } catch (Exception e) {