mitao
2024-12-02 950264a579736c1c51f1efe4baf0ac1476d5748c
bug修改
6个文件已添加
9个文件已修改
292 ■■■■ 已修改文件
finance-admin/src/main/java/com/finance/web/controller/service/ScreenService.java 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
finance-system/src/main/java/com/finance/system/domain/Region.java 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
finance-system/src/main/java/com/finance/system/mapper/RegionMapper.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
finance-system/src/main/java/com/finance/system/service/IRegionService.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
finance-system/src/main/java/com/finance/system/service/TbQuestionService.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
finance-system/src/main/java/com/finance/system/service/impl/AsyncServiceImpl.java 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
finance-system/src/main/java/com/finance/system/service/impl/RegionServiceImpl.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
finance-system/src/main/java/com/finance/system/service/impl/SysUserServiceImpl.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
finance-system/src/main/java/com/finance/system/service/impl/TbQuestionServiceImpl.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
finance-system/src/main/java/com/finance/system/service/impl/TbScoreServiceImpl.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
finance-system/src/main/java/com/finance/system/vo/DeptVO.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
finance-system/src/main/java/com/finance/system/vo/RegionVo.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
finance-system/src/main/java/com/finance/system/vo/ScoreRateDataVO.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
finance-system/src/main/resources/mapper/system/RegionMapper.xml 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
finance-system/src/main/resources/mapper/system/TbScoreMapper.xml 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
finance-admin/src/main/java/com/finance/web/controller/service/ScreenService.java
@@ -121,7 +121,7 @@
        ScoreRankVO scoreRankVO = tbScoreService.queryRankAndScoreByAreaCode("510000");
        riskAndTransferVO.setScoreRankVO(scoreRankVO);
        String previousQuarter = DateUtils.getPreviousQuarter();
        // previousQuarter = "2024年一季度";
        // previousQuarter = "2024年二季度";
        // 查询转移支付规模总额
        List<TbBasicData> list = tbBasicDataService.lambdaQuery()
                .select(TbBasicData::getTransferPaymentScale)
@@ -241,10 +241,10 @@
    public List<RiskRankingVO> riskRanking() throws Exception {
        DataScreenConfigVO riskLevel = tbDataScreenConfigService.getRiskLevel();
        List<RiskLevelVO> riskLevelVOList = formatRiskLevel(riskLevel);
        String previousQuarter = DateUtils.getPreviousQuarter();
        // previousQuarter = "2024年二季度";
        List<RiskRankingVO> voList = tbScoreService.queryRiskRanking(
                DateUtils.getPreviousQuarter());
        // List<RiskRankingVO> voList = tbScoreService.queryRiskRanking(
        //         "2024年一季度");
                previousQuarter);
        int rank = 1;
        for (RiskRankingVO riskRankingVO : voList) {
            riskRankingVO.setRank(rank++);
@@ -268,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);
@@ -284,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)
@@ -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,13 +554,13 @@
    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::getQuarter, previousQuarter).oneOpt();
@@ -587,7 +592,13 @@
                .likeRight(SysUser::getAreaCode, cityCode).or(cityCode.equals("5101"))
                .in(cityCode.equals("5101"), SysUser::getAreaCode, "510008", "510015", "510017",
                        "510025")
                .orderByAsc(!areaCode.equals("510100"), SysUser::getAreaCode)
                .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;
    }
finance-system/src/main/java/com/finance/system/domain/Region.java
New file
@@ -0,0 +1,54 @@
package com.finance.system.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serializable;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
 * <p>
 * 省市区三级联动
 * </p>
 *
 * @author mitao
 * @since 2024-05-21
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("t_region")
@ApiModel(value = "Region对象", description = "省市区三级联动")
public class Region implements Serializable {
    private static final long serialVersionUID = 1L;
    @ApiModelProperty(value = "主键ID")
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;
    @ApiModelProperty(value = "城市名称")
    @TableField("name")
    private String name;
    @TableField("code")
    private String code;
    @TableField("citycode")
    private String citycode;
    @ApiModelProperty(value = "父级ID")
    @TableField("parent_id")
    private Integer parentId;
    @ApiModelProperty(value = "英文名称")
    @TableField("english")
    private String english;
}
finance-system/src/main/java/com/finance/system/mapper/RegionMapper.java
New file
@@ -0,0 +1,22 @@
package com.finance.system.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.finance.system.domain.Region;
import com.finance.system.vo.RegionVo;
import java.util.List;
/**
 * <p>
 * 省市区三级联动 Mapper 接口
 * </p>
 *
 * @author mitao
 * @since 2024-05-21
 */
public interface RegionMapper extends BaseMapper<Region> {
    List<RegionVo> listRegionVo();
    Region getRegionByCode(String code);
}
finance-system/src/main/java/com/finance/system/service/IRegionService.java
New file
@@ -0,0 +1,17 @@
package com.finance.system.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.finance.system.domain.Region;
/**
 * <p>
 * 省市区三级联动 服务类
 * </p>
 *
 * @author mitao
 * @since 2024-05-21
 */
public interface IRegionService extends IService<Region> {
    Region getParentByCode(String code);
}
finance-system/src/main/java/com/finance/system/service/TbQuestionService.java
@@ -20,7 +20,7 @@
    void addQuestion(QuestionDTO dto) throws Exception;
    void editQuestion(QuestionUpdDTO dto);
    void editQuestion(QuestionUpdDTO dto) throws Exception;
    PageDTO<QuestionVO> pageQuestion(QuestionQuery dto);
finance-system/src/main/java/com/finance/system/service/impl/AsyncServiceImpl.java
@@ -1,5 +1,7 @@
package com.finance.system.service.impl;
import static com.finance.common.enums.IndicatorItemEnum.INDICATOR_ITEM8;
import cn.hutool.core.date.DateUtil;
import com.alibaba.fastjson2.JSONArray;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@@ -346,23 +348,29 @@
                    score = res ? 0 : vo.getMaxScore();
                    break;
                case INDICATOR_ITEM9:
                    // 预算管理方面-“三保”保障情况-“三保”需求占可用财力的比重
                    BigDecimal au = getBigDecimal(sysUser.getAreaName(), deptFieldsMap,
                            BasicDataFieldEnum.BASIC_DATA_FIELD45);
                    BigDecimal r = getBigDecimal(sysUser.getAreaName(), deptFieldsMap,
                            BasicDataFieldEnum.BASIC_DATA_FIELD13);
                    res1 = validateDivisorValue(r);
                    score = 0D;
                    if (!res1) {
                    TbScore tbScore = scoreList.stream().filter(s -> s.getBasicDataConfigId()
                            .equals(INDICATOR_ITEM8.getCode())).findFirst().orElse(null);
                    if (tbScore != null) {
                        if (!res1 && tbScore.getScore() != 0) {
                        BigDecimal divided = au.divide(r, 4, RoundingMode.HALF_UP);
                        if (divided.compareTo(BigDecimal.valueOf(0.6D)) > 0) {
                            BigDecimal add = BigDecimal.valueOf(0.6D).subtract(divided)
                                    .multiply(BigDecimal.valueOf(100D))
                                    .divide(BigDecimal.valueOf(4D), 4, RoundingMode.HALF_UP)
                                    .add(BigDecimal.valueOf(8))
                                    .setScale(2, RoundingMode.HALF_UP);
                            score = add.compareTo(BigDecimal.ZERO) >= 0 ? add.doubleValue() : 0D;
                                        .setScale(1, RoundingMode.HALF_UP);
                                score = add.compareTo(BigDecimal.ZERO) >= 0 ? add.doubleValue()
                                        : 0D;
                        } else {
                            score = vo.getMaxScore();
                            }
                        }
                    }
                    break;
@@ -400,7 +408,7 @@
                                .divide(BigDecimal.valueOf(0.1D), 4, RoundingMode.HALF_UP)
                                .multiply(BigDecimal.valueOf(0.6D))
                                .add(BigDecimal.valueOf(3D))
                                .setScale(2, RoundingMode.HALF_UP);
                                .setScale(1, RoundingMode.HALF_UP);
                        part1 = add.compareTo(BigDecimal.ZERO) < 0 ? BigDecimal.ZERO : add;
                    } else {
                        part1 = BigDecimal.valueOf(3D);
@@ -433,7 +441,7 @@
                                    .multiply(BigDecimal.valueOf(100D))
                                    .divide(BigDecimal.valueOf(3D), 4, RoundingMode.HALF_UP)
                                    .add(BigDecimal.valueOf(vo.getMaxScore()))
                                    .setScale(2, RoundingMode.HALF_UP).doubleValue();
                                    .setScale(1, RoundingMode.HALF_UP).doubleValue();
                        } else {
                            score = vo.getMaxScore();
                        }
@@ -462,7 +470,7 @@
                        BigDecimal add = deptDividendValue.subtract(divided1)
                                .divide(BigDecimal.valueOf(5D), 4, RoundingMode.HALF_UP)
                                .add(BigDecimal.valueOf(vo.getMaxScore()))
                                .setScale(2, RoundingMode.HALF_UP);
                                .setScale(1, RoundingMode.HALF_UP);
                        score = add.compareTo(BigDecimal.ZERO) < 0 ? 0D : add.doubleValue();
                    } else {
                        score = vo.getMaxScore();
@@ -489,9 +497,10 @@
                            BasicDataFieldEnum.BASIC_DATA_FIELD15);// 696635
                    BigDecimal ab = getBigDecimal(sysUser.getAreaName(), deptFieldsMap,
                            BasicDataFieldEnum.BASIC_DATA_FIELD23); // 56552
                    BigDecimal add = t.add(ab).divide(month.multiply(
                                    BigDecimal.valueOf(12D)).multiply(BigDecimal.valueOf(0.05D)), 2,
                            RoundingMode.HALF_UP);
                    BigDecimal add = t.add(ab).divide(month, 4, RoundingMode.HALF_UP)
                            .multiply(BigDecimal.valueOf(12D))
                            .multiply(BigDecimal.valueOf(0.05D))
                            .setScale(1, RoundingMode.HALF_UP);
                    score = bk.compareTo(add) > 0 ? 0D : vo.getMaxScore();
                    break;
                case INDICATOR_ITEM20:
@@ -509,7 +518,7 @@
                                RoundingMode.HALF_UP);
                        score = d1.compareTo(d2) < 0 ? d1.divide(d2, 4, RoundingMode.HALF_UP)
                                .multiply(BigDecimal.valueOf(vo.getMaxScore()))
                                .setScale(2, RoundingMode.HALF_UP).doubleValue()
                                .setScale(1, RoundingMode.HALF_UP).doubleValue()
                                : vo.getMaxScore();
                    } else {
                        score = vo.getMaxScore();
@@ -641,7 +650,7 @@
            score = deptDivided.subtract(provinceDivided)
                    .multiply(BigDecimal.valueOf(100L))
                    .add(BigDecimal.valueOf(vo.getMaxScore()))
                    .setScale(2, RoundingMode.HALF_UP);
                    .setScale(1, RoundingMode.HALF_UP);
            score = score.compareTo(BigDecimal.ZERO) >= 0 ? score : BigDecimal.ZERO;
        } else {
            score = BigDecimal.valueOf(vo.getMaxScore());
@@ -672,7 +681,7 @@
            score = provinceDivided.subtract(deptDivided)
                    .multiply(BigDecimal.valueOf(100L))
                    .add(BigDecimal.valueOf(vo.getMaxScore()))
                    .setScale(2, RoundingMode.HALF_UP);
                    .setScale(1, RoundingMode.HALF_UP);
            score = score.compareTo(BigDecimal.ZERO) >= 0 ? score : BigDecimal.ZERO;
        }
        return score.doubleValue();
@@ -744,18 +753,19 @@
    private Double getScoreByMonth(BigDecimal deptDividendValue, BigDecimal deptDivisorValue,
            BigDecimal currentMonth, BasicDataConfigVO vo) {
        double score;
        BigDecimal divided1 = deptDividendValue.divide(deptDivisorValue, 2,
        BigDecimal divided1 = deptDividendValue.divide(deptDivisorValue, 4,
                RoundingMode.HALF_UP);
        BigDecimal divided2 = currentMonth.divide(BigDecimal.valueOf(12D), 2,
        BigDecimal divided2 = currentMonth.divide(BigDecimal.valueOf(12D), 4,
                RoundingMode.HALF_UP);
        if (divided1.compareTo(
                currentMonth.divide(BigDecimal.valueOf(12D), 2, RoundingMode.HALF_UP))
                currentMonth.divide(BigDecimal.valueOf(12D), 4, RoundingMode.HALF_UP))
                < 0) {
            BigDecimal add = divided1.subtract(divided2)
                    .multiply(BigDecimal.valueOf(100D))
                    .divide(BigDecimal.valueOf(5D), 2,
                    .divide(BigDecimal.valueOf(5D), 4,
                            RoundingMode.HALF_UP)
                    .add(BigDecimal.valueOf(vo.getMaxScore()));
                    .add(BigDecimal.valueOf(vo.getMaxScore()))
                    .setScale(1, RoundingMode.HALF_UP);
            score = add.compareTo(BigDecimal.ZERO) < 0 ? 0D : add.doubleValue();
        } else {
            score = vo.getMaxScore();
@@ -783,6 +793,7 @@
    @Override
    public void subtractScoreWithFixedRules(String deptAreaCode) throws Exception {
        String previousQuarter = DateUtils.getPreviousQuarter();
        // previousQuarter = "2024年二季度";
        TbBasicData tbBasicData = tbBasicDataMapper.selectOne(
                Wrappers.lambdaQuery(TbBasicData.class).eq(TbBasicData::getQuarter, previousQuarter)
                        .eq(TbBasicData::getDeptAreaCode, deptAreaCode));
@@ -829,15 +840,16 @@
                    // 23:风险防控方面-债务管理-隐性债务化解
                    questionList = getQuestList(list, deptAreaCode,
                            QuestionTypeEnum.ENUM6);
                    score = CollUtils.isNotEmpty(questionList) ? vo.getMaxScore() : -3D;
                    score = CollUtils.isNotEmpty(questionList) ? -3D : vo.getMaxScore();
                    break;
                case INDICATOR_ITEM24:
                    // 24:风险防控方面-债务管理-日常监督发现问题
                    questionList = getQuestList(list, deptAreaCode,
                            QuestionTypeEnum.ENUM7);
                    if (CollUtils.isNotEmpty(questionList)) {
                        score = -18D + questionList.size() * -1D;
                        score = questionList.size() * -1D;
                    }
                    break;
                case INDICATOR_ITEM25:
                    // 25:风险防控方面-日常监督发现问题
                    questionList = getQuestList(list, deptAreaCode,
finance-system/src/main/java/com/finance/system/service/impl/RegionServiceImpl.java
New file
@@ -0,0 +1,24 @@
package com.finance.system.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.finance.system.domain.Region;
import com.finance.system.mapper.RegionMapper;
import com.finance.system.service.IRegionService;
import org.springframework.stereotype.Service;
/**
 * <p>
 * 省市区三级联动 服务实现类
 * </p>
 *
 * @author mitao
 * @since 2024-05-21
 */
@Service
public class RegionServiceImpl extends ServiceImpl<RegionMapper, Region> implements IRegionService {
    @Override
    public Region getParentByCode(String code) {
        return baseMapper.getRegionByCode(code);
    }
}
finance-system/src/main/java/com/finance/system/service/impl/SysUserServiceImpl.java
@@ -7,6 +7,7 @@
import com.finance.common.constant.UserConstants;
import com.finance.common.core.domain.entity.SysRole;
import com.finance.common.core.domain.entity.SysUser;
import com.finance.common.enums.AreaLevelEnum;
import com.finance.common.enums.UserTypeEnum;
import com.finance.common.exception.ServiceException;
import com.finance.common.utils.BeanUtils;
@@ -14,6 +15,7 @@
import com.finance.common.utils.StringUtils;
import com.finance.common.utils.bean.BeanValidators;
import com.finance.common.utils.spring.SpringUtils;
import com.finance.system.domain.Region;
import com.finance.system.domain.SysPost;
import com.finance.system.domain.SysUserPost;
import com.finance.system.domain.SysUserRole;
@@ -23,6 +25,7 @@
import com.finance.system.mapper.SysUserPostMapper;
import com.finance.system.mapper.SysUserRoleMapper;
import com.finance.system.query.SysUserQuery;
import com.finance.system.service.IRegionService;
import com.finance.system.service.ISysConfigService;
import com.finance.system.service.ISysUserService;
import com.finance.system.vo.DeptVO;
@@ -70,6 +73,8 @@
    @Autowired
    protected Validator validator;
    @Autowired
    private IRegionService regionService;
    /**
     * 根据条件分页查询用户列表
@@ -623,6 +628,15 @@
                        deptName)
                .orderByDesc(SysUser::getCreateTime)
                .list();
        return BeanUtils.copyList(list, DeptVO.class);
        List<DeptVO> deptVOS = BeanUtils.copyList(list, DeptVO.class);
        deptVOS = deptVOS.stream()
                .filter(item -> null != item.getAreaLevel() && item.getAreaLevel()
                        .equals(AreaLevelEnum.COUNTY)).peek(item -> {
                    Region region = regionService.getParentByCode(item.getAreaCode());
                    if (region != null) {
                        item.setCityName(region.getName());
                    }
                }).collect(Collectors.toList());
        return deptVOS;
    }
}
finance-system/src/main/java/com/finance/system/service/impl/TbQuestionServiceImpl.java
@@ -48,17 +48,18 @@
        TbQuestion tbQuestion = BeanUtils.copyBean(dto, TbQuestion.class);
        tbQuestion.setType(dto.getType());
        String previousQuarter = DateUtils.getPreviousQuarter();
        // previousQuarter = "2024年一季度";
        // previousQuarter = "2024年二季度";
        tbQuestion.setQuarter(previousQuarter);
        this.save(tbQuestion);
        asyncService.subtractScoreWithFixedRules(dto.getDeptAreaCode());
    }
    @Override
    public void editQuestion(QuestionUpdDTO dto) {
    public void editQuestion(QuestionUpdDTO dto) throws Exception {
        TbQuestion tbQuestion = BeanUtils.copyBean(dto, TbQuestion.class);
        tbQuestion.setType(dto.getType());
        this.updateById(tbQuestion);
        asyncService.subtractScoreWithFixedRules(dto.getDeptAreaCode());
    }
    @Override
finance-system/src/main/java/com/finance/system/service/impl/TbScoreServiceImpl.java
@@ -117,7 +117,7 @@
    @Override
    public ScoreRankVO queryRankAndScoreByAreaCode(String areaCode) throws Exception {
        String previousQuarter = DateUtils.getPreviousQuarter();
        // previousQuarter = "2024年一季度";
        // previousQuarter = "2024年二季度";
        List<ScoreRankVO> voList = baseMapper.queryRankAndScoreByAreaCode(areaCode,
                previousQuarter);
        if (CollUtils.isNotEmpty(voList)) {
@@ -155,7 +155,8 @@
        vo.setCalculateType(config.getCalculateType());
        Page<ScoreDetailVO> page = new Page<>(query.getPageNum(), query.getPageSize());
        String previousQuarter = DateUtils.getPreviousQuarter();
        previousQuarter = "2023年一季度";
        // previousQuarter = "2024年二季度";
        query.setPreviousQuarter(previousQuarter);
        Page<ScoreDetailVO> pageVO = baseMapper.fieldsDetail(query, page, areaCodeList);
        vo.setTotal(pageVO.getTotal());
        vo.setPages(pageVO.getPages());
finance-system/src/main/java/com/finance/system/vo/DeptVO.java
@@ -19,6 +19,9 @@
    @ApiModelProperty(value = "部门id")
    private Long userId;
    @ApiModelProperty(value = "所属市")
    private String cityName;
    @ApiModelProperty(value = "部门地区")
    private String areaName;
finance-system/src/main/java/com/finance/system/vo/RegionVo.java
New file
@@ -0,0 +1,27 @@
package com.finance.system.vo;
import io.swagger.annotations.ApiModelProperty;
import java.util.List;
import lombok.Data;
@Data
public class RegionVo {
    @ApiModelProperty(value = "区域代码")
    private String value;
    @ApiModelProperty(value = "区域名称")
    private String label;
    @ApiModelProperty(value = "子级列表")
    private List<RegionVo> children;
    @ApiModelProperty(value = "id")
    private Long id;
    @ApiModelProperty(value = "父级id")
    private Long parentId;
    @ApiModelProperty(value = "层级")
    private Integer level;
}
finance-system/src/main/java/com/finance/system/vo/ScoreRateDataVO.java
@@ -19,6 +19,9 @@
    @ApiModelProperty("得分率")
    private Double scoreRate;
    @ApiModelProperty("总分")
    private Double maxScore;
    @ApiModelProperty(value = "配置类型子类型(1=指标一 2=指标二 3=指标三 4=指标四)")
    private SubTypeEnum subType;
    
finance-system/src/main/resources/mapper/system/RegionMapper.xml
New file
@@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.finance.system.mapper.RegionMapper">
  <select id="listRegionVo" resultType="com.finance.system.vo.RegionVo">
    SELECT tr.id id, tr.parent_id parentId, tr.level level, tr.code value, tr.name label
    FROM t_region tr
  </select>
  <select id="getRegionByCode" resultType="com.finance.system.domain.Region"
    parameterType="java.lang.String">
    SELECT t2.*
    FROM t_region t1
           JOIN t_region t2 ON t1.parent_id = t2.id
    WHERE t1.code = #{code}
  </select>
</mapper>
finance-system/src/main/resources/mapper/system/TbScoreMapper.xml
@@ -72,19 +72,9 @@
      CURDATE())
      AND su.user_id in (SELECT user_id
      FROM sys_user
      WHERE (
      (
      #{areaCode} = '510000'
      AND area_code LIKE CONCAT( SUBSTRING( #{areaCode}, 1, 2 ), '%' ))
      OR (
      #{areaCode} != '510000'
      AND area_code LIKE CONCAT( SUBSTRING( #{areaCode}, 1, 4 ), '%' ))
      OR (
      #{areaCode}= '510100'
      AND area_code IN ( '510008', '510015', '510017', '510025' ))
      WHERE user_type = 2
      AND area_level in (1,2,3,4)
      )
      AND user_type = 2
      AND area_level in (1,2,3,4))
    </where>
    GROUP BY tbc.dept_area_code
@@ -127,7 +117,7 @@
        AND su.area_code=#{query.areaCode}
      </if>
      <if test="query.previousQuarter != null and query.previousQuarter != ''">
        AND tbd.quarter=#{previousQuarter}
        AND tbd.quarter=#{query.previousQuarter}
      </if>
      group by su.area_code
    </where>