From 18891c60ab1c06a4acc85d0ec54dee50d1b1a19f Mon Sep 17 00:00:00 2001 From: mitao <2763622819@qq.com> Date: 星期一, 07 四月 2025 17:20:07 +0800 Subject: [PATCH] bug修改 --- finance-system/src/main/java/com/finance/system/service/impl/TbScoreServiceImpl.java | 99 ++++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 96 insertions(+), 3 deletions(-) diff --git a/finance-system/src/main/java/com/finance/system/service/impl/TbScoreServiceImpl.java b/finance-system/src/main/java/com/finance/system/service/impl/TbScoreServiceImpl.java index 570f678..44a0ced 100644 --- a/finance-system/src/main/java/com/finance/system/service/impl/TbScoreServiceImpl.java +++ b/finance-system/src/main/java/com/finance/system/service/impl/TbScoreServiceImpl.java @@ -4,10 +4,13 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.finance.common.basic.PageDTO; 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; import com.finance.common.utils.CollUtils; import com.finance.common.utils.DateUtils; +import com.finance.system.constants.QuarterConstant; import com.finance.system.domain.TbBasicDataConfig; import com.finance.system.domain.TbScore; import com.finance.system.mapper.TbScoreMapper; @@ -16,8 +19,10 @@ import com.finance.system.query.HistoryScoreQuery; import com.finance.system.query.ScoreCalculateDetailQuery; import com.finance.system.query.ScoreQuery; +import com.finance.system.service.ISysUserService; import com.finance.system.service.TbBasicDataConfigService; import com.finance.system.service.TbScoreService; +import com.finance.system.vo.DataScreenConfigVO; import com.finance.system.vo.DeptCalculateDetailVO; import com.finance.system.vo.RiskMapVO; import com.finance.system.vo.RiskRankingVO; @@ -25,6 +30,8 @@ import com.finance.system.vo.ScoreDetailVO; import com.finance.system.vo.ScoreRankVO; import com.finance.system.vo.ScoreVO; +import java.util.ArrayList; +import java.util.Arrays; import java.util.List; import java.util.Objects; import java.util.stream.Collectors; @@ -47,6 +54,7 @@ TbScoreService { private final TbBasicDataConfigService basicDataConfigService; + private final ISysUserService sysUserService; @Override public Page<ScoreVO> pageScore(ScoreQuery query, Page<ScoreVO> page) { @@ -74,8 +82,27 @@ vo.setCalculateType(config.getCalculateType()); Page<ScoreDetailVO> page = new Page<>(query.getPageNum(), query.getPageSize()); String previousQuarter = DateUtils.getPreviousQuarter(); - previousQuarter = "2024年一季度"; + previousQuarter = QuarterConstant.CURRENT_QUARTER; query.setPreviousQuarter(previousQuarter); + Page<ScoreDetailVO> pageVO = baseMapper.scoreCalculateDetail(query, page); + vo.setTotal(pageVO.getTotal()); + vo.setPages(pageVO.getPages()); + vo.setList(pageVO.getRecords()); + return vo; + } + + @Override + public ScoreCalculateDetailVO scoreCalculateHistoryDetail(ScoreCalculateDetailQuery query) + throws Exception { + // 查询计算类型 + TbBasicDataConfig config = basicDataConfigService.getById(query.getId()); + if (Objects.isNull(config)) { + throw new ServiceException("非法参数"); + } + ScoreCalculateDetailVO vo = new ScoreCalculateDetailVO(); + vo.setTypeName(config.getTypeName()); + vo.setCalculateType(config.getCalculateType()); + Page<ScoreDetailVO> page = new Page<>(query.getPageNum(), query.getPageSize()); Page<ScoreDetailVO> pageVO = baseMapper.scoreCalculateDetail(query, page); vo.setTotal(pageVO.getTotal()); vo.setPages(pageVO.getPages()); @@ -91,7 +118,7 @@ @Override public ScoreRankVO queryRankAndScoreByAreaCode(String areaCode) throws Exception { String previousQuarter = DateUtils.getPreviousQuarter(); - previousQuarter = "2024年一季度"; + previousQuarter = QuarterConstant.CURRENT_QUARTER; List<ScoreRankVO> voList = baseMapper.queryRankAndScoreByAreaCode(areaCode, previousQuarter); if (CollUtils.isNotEmpty(voList)) { @@ -129,7 +156,8 @@ vo.setCalculateType(config.getCalculateType()); Page<ScoreDetailVO> page = new Page<>(query.getPageNum(), query.getPageSize()); String previousQuarter = DateUtils.getPreviousQuarter(); - previousQuarter = "2023年一季度"; + previousQuarter = QuarterConstant.CURRENT_QUARTER; + query.setPreviousQuarter(previousQuarter); Page<ScoreDetailVO> pageVO = baseMapper.fieldsDetail(query, page, areaCodeList); vo.setTotal(pageVO.getTotal()); vo.setPages(pageVO.getPages()); @@ -155,4 +183,69 @@ public List<RiskMapVO> getScoreByYearType(String areaCode, String quarter) { return baseMapper.getScoreByYearType(areaCode, quarter); } + + @Override + public List<RiskMapVO> getCityScore(String previousQuarter, DataScreenConfigVO riskLevel) { + // 查询城市部门 + List<SysUser> cityList = getCityList(); + List<RiskMapVO> riskMapVOList = new ArrayList<>(); + for (SysUser sysUser : cityList) { + RiskMapVO vo = new RiskMapVO(); + vo.setAreaCode(sysUser.getAreaCode()); + vo.setAreaName(sysUser.getAreaName()); + vo.setAreaLevel(sysUser.getAreaLevel()); + String areaCode = sysUser.getAreaCode(); + areaCode = areaCode.substring(0, 4); + Double totalAverageScore = baseMapper.getCityAverageScore(areaCode, + previousQuarter); + // 查询区县的得分 + List<Double> countyScoreList = baseMapper.getCountyScoreList(areaCode, previousQuarter); + // 将风险范围解析为列表,只解析一次 + List<Double> mediumRange = Arrays.stream(riskLevel.getMediumRisk().split("_")) + .map(Double::valueOf) + .collect(Collectors.toList()); + + List<Double> noRiskRange = Arrays.stream(riskLevel.getNoRisk().split("_")) + .map(Double::valueOf) + .collect(Collectors.toList()); + + // 计算中等风险和无风险的数量 + long mediumCount = 0; + long noCount = 0; + for (Double score : countyScoreList) { + if (score >= mediumRange.get(0) && score <= mediumRange.get(1)) { + mediumCount++; + } else if (score >= noRiskRange.get(0) && score <= noRiskRange.get(1)) { + noCount++; + } + } + // 当中等风险的数量大于总数的1/3,总分减一 + if ((double) mediumCount / (double) countyScoreList.size() > 0.33) { + totalAverageScore = totalAverageScore - 1D; + } + // 当无风险的数量大于总数的1/3,总分加一 + if ((double) noCount / (double) countyScoreList.size() > 0.33) { + totalAverageScore = totalAverageScore + 1D; + } + vo.setScore(totalAverageScore); + riskMapVOList.add(vo); + } + return riskMapVOList; + } + + public List<SysUser> getCityList() { + List<SysUser> list = sysUserService.lambdaQuery() + .eq(SysUser::getAreaLevel, AreaLevelEnum.CITY) + .list(); + return list; + } + + public List<SysUser> getChildrenList(String areaCode) { + String cityCode = areaCode.substring(0, 4); + List<SysUser> list = sysUserService.lambdaQuery() + .select(SysUser::getAreaCode, SysUser::getAreaName, SysUser::getAreaAlias, + SysUser::getUserId).eq(SysUser::getUserType, + UserTypeEnum.DEPARTMENT).likeRight(SysUser::getAreaCode, cityCode).list(); + return list; + } } -- Gitblit v1.7.1