mitao
2024-12-02 950264a579736c1c51f1efe4baf0ac1476d5748c
finance-admin/src/main/java/com/finance/web/controller/service/ScreenService.java
@@ -116,9 +116,12 @@
    }
    public RiskAndTransferVO getRiskAndTransfer() throws Exception {
        String previousQuarter = DateUtils.getPreviousQuarter();
        previousQuarter = "2024年一季度";
        RiskAndTransferVO riskAndTransferVO = new RiskAndTransferVO();
        // 查询省本级得分排名
        ScoreRankVO scoreRankVO = tbScoreService.queryRankAndScoreByAreaCode("510000");
        riskAndTransferVO.setScoreRankVO(scoreRankVO);
        String previousQuarter = DateUtils.getPreviousQuarter();
        // previousQuarter = "2024年二季度";
        // 查询转移支付规模总额
        List<TbBasicData> list = tbBasicDataService.lambdaQuery()
                .select(TbBasicData::getTransferPaymentScale)
@@ -134,11 +137,14 @@
        List<RiskLevelVO> riskLevelVOList = formatRiskLevel(riskLevel);
        riskAndTransferVO.setRiskLevelVOList(riskLevelVOList);
        RiskCountVO riskCountVO = new RiskCountVO();
        List<RiskMapVO> riskMapVOList = tbScoreService.getCurrentScoreList(previousQuarter, null);
        String[] noRiskArr = riskLevel.getNoRisk().split("-");
        String[] lowRiskArr = riskLevel.getLowRisk().split("-");
        String[] mediumRiskArr = riskLevel.getMediumRisk().split("-");
        String[] highRiskArr = riskLevel.getHighRisk().split("-");
        // 地图市域得分
        List<RiskMapVO> riskMapVOList = tbScoreService.getCityScore(previousQuarter,
                riskLevel);
        // List<RiskMapVO> riskMapVOList = tbScoreService.getCurrentScoreList(previousQuarter, null);
        String[] noRiskArr = riskLevel.getNoRisk().split("_");
        String[] lowRiskArr = riskLevel.getLowRisk().split("_");
        String[] mediumRiskArr = riskLevel.getMediumRisk().split("_");
        String[] highRiskArr = riskLevel.getHighRisk().split("_");
        List<RiskMapVO> cityRiskVO = riskMapVOList.stream()
                .filter(r -> r.getAreaLevel().equals(AreaLevelEnum.CITY))
                .collect(Collectors.toList());
@@ -153,7 +159,7 @@
        long mediumRiskCount = cityRiskVO.stream()
                .filter(item -> item.getScore() >= Double.parseDouble(mediumRiskArr[0])
                        && item.getScore() <= Double.parseDouble(mediumRiskArr[1])).count();
        riskCountVO.setHighRiskCount((int) mediumRiskCount);
        riskCountVO.setMediumRiskCount((int) mediumRiskCount);
        long highRiskCount = cityRiskVO.stream()
                .filter(item -> item.getScore() >= Double.parseDouble(highRiskArr[0])
                        && item.getScore() <= Double.parseDouble(highRiskArr[1])).count();
@@ -184,15 +190,16 @@
        // 查询风险配置对应得分
        // List<RiskMapVO> riskMapVOList = tbDataScreenScoreService.queryScore4Map(nowQuarter,
        //         riskLevel.getId());
        riskAndTransferVO.setRiskMapVOList(riskMapVOList);
        return riskAndTransferVO;
    }
    private List<RiskLevelVO> formatRiskLevel(DataScreenConfigVO riskLevel) {
        String[] noRiskArr = riskLevel.getNoRisk().split("-");
        String[] lowRiskArr = riskLevel.getLowRisk().split("-");
        String[] mediumRiskArr = riskLevel.getMediumRisk().split("-");
        String[] highRiskArr = riskLevel.getHighRisk().split("-");
        String[] noRiskArr = riskLevel.getNoRisk().split("_");
        String[] lowRiskArr = riskLevel.getLowRisk().split("_");
        String[] mediumRiskArr = riskLevel.getMediumRisk().split("_");
        String[] highRiskArr = riskLevel.getHighRisk().split("_");
        return handleRiskLevel(noRiskArr, lowRiskArr, mediumRiskArr,
                highRiskArr);
    }
@@ -234,26 +241,26 @@
    public List<RiskRankingVO> riskRanking() throws Exception {
        DataScreenConfigVO riskLevel = tbDataScreenConfigService.getRiskLevel();
        List<RiskLevelVO> riskLevelVOList = formatRiskLevel(riskLevel);
        // List<RiskRankingVO> voList = tbScoreService.queryRiskRanking(
        //         DateUtils.getPreviousQuarter());
        String previousQuarter = DateUtils.getPreviousQuarter();
        // previousQuarter = "2024年二季度";
        List<RiskRankingVO> voList = tbScoreService.queryRiskRanking(
                "2024年一季度");
                previousQuarter);
        int rank = 1;
        for (RiskRankingVO riskRankingVO : voList) {
            riskRankingVO.setRank(rank++);
            for (RiskLevelVO vo : riskLevelVOList) {
                if (vo.getRiskLevel().equals(RiskLevelEnum.L1)
                        && riskRankingVO.getScore() <= vo.getMin()) {
                    riskRankingVO.setRiskLevel(vo.getRiskLevel().getCode());
                }
                // if (vo.getRiskLevel().equals(RiskLevelEnum.L1)
                //         && riskRankingVO.getScore() <= vo.getMin()) {
                //     riskRankingVO.setRiskLevel(vo.getRiskLevel().getCode());
                // }
                if (riskRankingVO.getScore() >= vo.getMin()
                        && riskRankingVO.getScore() <= vo.getMax()) {
                    riskRankingVO.setRiskLevel(vo.getRiskLevel().getCode());
                }
                if (vo.getRiskLevel().equals(RiskLevelEnum.L4)
                        && riskRankingVO.getScore() >= vo.getMax()) {
                    riskRankingVO.setRiskLevel(vo.getRiskLevel().getCode());
                }
                // if (vo.getRiskLevel().equals(RiskLevelEnum.L4)
                //         && riskRankingVO.getScore() >= vo.getMax()) {
                //     riskRankingVO.setRiskLevel(vo.getRiskLevel().getCode());
                // }
            }
        }
        return voList;
@@ -261,7 +268,7 @@
    public List<QuestionVO> queryQuestions() throws Exception {
        String previousQuarter = DateUtils.getPreviousQuarter();
        previousQuarter = "2024年一季度";
        // previousQuarter = "2024年二季度";
        List<TbQuestion> list = tbQuestionService.lambdaQuery()
                .eq(TbQuestion::getQuarter, previousQuarter).list();
        return BeanUtils.copyList(list, QuestionVO.class);
@@ -277,7 +284,7 @@
        dataAnalysisVO.setRank(scoreRankVO.getRank());
        dataAnalysisVO.setScore(scoreRankVO.getScore());
        String previousQuarter = DateUtils.getPreviousQuarter();
        previousQuarter = "2024年一季度";
        // previousQuarter = "2024年二季度";
        // 查询问题
        List<TbQuestion> list = tbQuestionService.lambdaQuery()
                .eq(TbQuestion::getQuarter, previousQuarter)
@@ -302,18 +309,11 @@
        // 查询风险等级
        List<RiskMapVO> currentScoreList = tbScoreService.getCurrentScoreList(previousQuarter,
                areaCode);
        for (RiskMapVO tbDataScreenScore : currentScoreList) {
            for (RiskLevelVO vo : riskLevelVOList) {
                if (vo.getRiskLevel().equals(RiskLevelEnum.L1)
                        && tbDataScreenScore.getScore() <= vo.getMin()) {
                    dataAnalysisVO.setRiskLevel(vo.getRiskLevel().getCode());
                }
                if (tbDataScreenScore.getScore() >= vo.getMin()
                        && tbDataScreenScore.getScore() <= vo.getMax()) {
                    dataAnalysisVO.setRiskLevel(vo.getRiskLevel().getCode());
                }
                if (vo.getRiskLevel().equals(RiskLevelEnum.L4)
                        && tbDataScreenScore.getScore() >= vo.getMax()) {
                    dataAnalysisVO.setRiskLevel(vo.getRiskLevel().getCode());
                }
            }
@@ -322,7 +322,7 @@
        List<FieldAndScoreDataVO> voList =
                tbBasicDataService.getFieldAndScoreData(areaCode, previousQuarter, 1, 2);
        List<FieldAndScoreDataVO> lastYearList =
                tbBasicDataService.getFieldAndScoreData(areaCode, previousQuarter, 2, 2);
                tbBasicDataService.getFieldAndScoreData(areaCode, lastYearQuarter, 2, 2);
        // 查询四个指标下的三级指标
        List<FieldAndScoreDataVO> allDeptVoList =
                tbBasicDataService.getFieldAndScoreData(areaCode, previousQuarter, 1, 1);
@@ -365,6 +365,7 @@
                scoreRateDataVO.setScore(0D);
                scoreRateDataVO.setSubType(SubTypeEnum.getEnumByCode(i + 1));
                scoreRateDataVO.setScoreRate(0D);
                scoreRateDataVO.setMaxScore(0D);
            } else {
                Double indicatorOne = getLevelThreeIndicators(voList, indicatorList.get(i)).stream()
                        .map(FieldAndScoreDataVO::getScore).reduce(Double::sum)
@@ -382,6 +383,9 @@
                        .divide(BigDecimal.valueOf(voList.get(i).getLevelOneIndicatorMaxScore()), 2,
                                RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100L))
                        .doubleValue());
                scoreRateDataVO.setMaxScore(
                        getLevelThreeIndicators(voList, indicatorList.get(i)).get(0)
                                .getLevelOneIndicatorMaxScore());
            }
            result.add(scoreRateDataVO);
        }
@@ -425,7 +429,8 @@
                        .orElse(BigDecimal.ZERO).setScale(2, RoundingMode.HALF_UP).doubleValue();
                scoreDataVO.setLastScore(indicatorOneLastYear);
                scoreDataVO.setScore(indicatorOne);
                scoreDataVO.setMaxScore(voList.get(0).getLevelOneIndicatorMaxScore());
                scoreDataVO.setMaxScore(getLevelThreeIndicators(voList, indicatorList.get(i)).get(0)
                        .getLevelOneIndicatorMaxScore());
                scoreDataVO.setSubType(SubTypeEnum.getEnumByCode(i + 1));
            }
            scoreDataVOList.add(scoreDataVO);
@@ -549,16 +554,15 @@
    public List<DeptCalculateDetailVO> deptCalculateDetail(DeptCalculateDetailQuery query)
            throws Exception {
        String previousQuarter = DateUtils.getPreviousQuarter();
        previousQuarter = "2024年一季度";
        // previousQuarter = "2024年二季度";
        return tbScoreService.deptCalculateDetail(query, previousQuarter);
    }
    public CurrentFieldsDetailVO viewRawData(String areaCode) throws Exception {
        String previousQuarter = DateUtils.getPreviousQuarter();
        previousQuarter = "2024年一季度";
        // previousQuarter = "2024年二季度";
        Optional<TbBasicData> basicDataOptional = tbBasicDataService.lambdaQuery()
                .eq(TbBasicData::getDeptAreaCode, areaCode)
                .eq(TbBasicData::getStatus, ReportingStatusEnum.FILLED)
                .eq(TbBasicData::getQuarter, previousQuarter).oneOpt();
        if (basicDataOptional.isPresent()) {
            return tbBasicDataService.fieldsDetails(basicDataOptional.get().getId()).getData();
@@ -578,12 +582,24 @@
    public List<SysUser> getCountyList(String areaCode) {
        String cityCode = areaCode.substring(0, 4);
        if (areaCode.equals("510000")) {
            cityCode = areaCode.substring(0, 3);
        }
        List<SysUser> list = sysUserService.lambdaQuery()
                .select(SysUser::getAreaCode, SysUser::getAreaName, SysUser::getAreaAlias,
                        SysUser::getUserId).eq(SysUser::getUserType,
                        UserTypeEnum.DEPARTMENT)
                .ne(SysUser::getAreaCode, areaCode)
                .likeRight(SysUser::getAreaCode, cityCode).list();
                .likeRight(SysUser::getAreaCode, cityCode).or(cityCode.equals("5101"))
                .in(cityCode.equals("5101"), SysUser::getAreaCode, "510008", "510015", "510017",
                        "510025")
                .or(cityCode.equals("5106"))
                .eq(cityCode.equals("5106"), SysUser::getAreaCode, "510049")
                .or(cityCode.equals("5109"))
                .eq(cityCode.equals("5109"), SysUser::getAreaCode, "510077")
                .orderByAsc(!areaCode.equals("510100") && !areaCode.equals("510600")
                                && !areaCode.equals("510900"),
                        SysUser::getAreaCode)
                .list();
        return list;
    }
}