From 3a6f2b349aaac3fd9f895c16f7d833252a2158ab Mon Sep 17 00:00:00 2001 From: mitao <2763622819@qq.com> Date: 星期五, 23 八月 2024 15:26:25 +0800 Subject: [PATCH] bug修改 --- finance-admin/src/main/java/com/finance/web/controller/api/CurrentQuarterController.java | 1 finance-system/src/main/java/com/finance/system/service/impl/TbOperLogServiceImpl.java | 1 finance-system/src/main/resources/mapper/system/TbBasicDataMapper.xml | 9 +++ finance-system/src/main/java/com/finance/system/service/impl/TbScoreServiceImpl.java | 19 ++++++ finance-system/src/main/java/com/finance/system/query/CalculateDetailQuery.java | 5 + finance-admin/src/main/java/com/finance/web/controller/api/HistoryDataController.java | 2 finance-system/src/main/java/com/finance/system/service/impl/TbDataScreenConfigServiceImpl.java | 8 ++ finance-system/src/main/java/com/finance/system/service/impl/AsyncServiceImpl.java | 54 +++++++++++++----- finance-system/src/main/java/com/finance/system/service/impl/TbBasicDataServiceImpl.java | 2 finance-system/src/main/resources/mapper/system/TbScoreMapper.xml | 6 ++ finance-admin/src/main/java/com/finance/web/controller/service/ScreenService.java | 20 +++--- finance-system/src/main/java/com/finance/system/mapper/TbBasicDataMapper.java | 3 + finance-system/src/main/java/com/finance/system/service/TbScoreService.java | 3 + finance-system/src/main/java/com/finance/system/query/ScoreCalculateDetailQuery.java | 4 14 files changed, 105 insertions(+), 32 deletions(-) diff --git a/finance-admin/src/main/java/com/finance/web/controller/api/CurrentQuarterController.java b/finance-admin/src/main/java/com/finance/web/controller/api/CurrentQuarterController.java index ca43d79..1634b9b 100644 --- a/finance-admin/src/main/java/com/finance/web/controller/api/CurrentQuarterController.java +++ b/finance-admin/src/main/java/com/finance/web/controller/api/CurrentQuarterController.java @@ -167,7 +167,6 @@ */ @PostMapping("/score-calculate-detail") @ApiOperation("得分计算-查看详情") - @ApiImplicitParam(name = "areaName", value = "部门名称", required = false, dataType = "string", paramType = "query", dataTypeClass = String.class) public R<ScoreCalculateDetailVO> scoreCalculateDetail( @Validated @RequestBody ScoreCalculateDetailQuery query) { try { diff --git a/finance-admin/src/main/java/com/finance/web/controller/api/HistoryDataController.java b/finance-admin/src/main/java/com/finance/web/controller/api/HistoryDataController.java index 75a415b..8ad69b4 100644 --- a/finance-admin/src/main/java/com/finance/web/controller/api/HistoryDataController.java +++ b/finance-admin/src/main/java/com/finance/web/controller/api/HistoryDataController.java @@ -190,7 +190,7 @@ public R<ScoreCalculateDetailVO> scoreCalculateDetail( @Validated @RequestBody ScoreCalculateDetailQuery query) { try { - return R.ok(tbScoreService.scoreCalculateDetail(query)); + return R.ok(tbScoreService.scoreCalculateHistoryDetail(query)); } catch (Exception e) { throw new RuntimeException(e); } diff --git a/finance-admin/src/main/java/com/finance/web/controller/service/ScreenService.java b/finance-admin/src/main/java/com/finance/web/controller/service/ScreenService.java index 0024565..d48f5cd 100644 --- a/finance-admin/src/main/java/com/finance/web/controller/service/ScreenService.java +++ b/finance-admin/src/main/java/com/finance/web/controller/service/ScreenService.java @@ -135,10 +135,10 @@ 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("-"); + 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()); @@ -189,10 +189,10 @@ } 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); } @@ -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); @@ -582,7 +582,7 @@ .select(SysUser::getAreaCode, SysUser::getAreaName, SysUser::getAreaAlias, SysUser::getUserId).eq(SysUser::getUserType, UserTypeEnum.DEPARTMENT) - .ne(SysUser::getAreaCode, areaCode) + .ne(SysUser::getAreaLevel, AreaLevelEnum.CITY) .likeRight(SysUser::getAreaCode, cityCode).list(); return list; } diff --git a/finance-system/src/main/java/com/finance/system/mapper/TbBasicDataMapper.java b/finance-system/src/main/java/com/finance/system/mapper/TbBasicDataMapper.java index 655d909..dccb69c 100644 --- a/finance-system/src/main/java/com/finance/system/mapper/TbBasicDataMapper.java +++ b/finance-system/src/main/java/com/finance/system/mapper/TbBasicDataMapper.java @@ -33,4 +33,7 @@ List<FieldAndScoreDataVO> getFieldAndScoreData(@Param("areaCode") String areaCode, @Param("nowQuarter") String nowQuarter, @Param("yearType") Integer yearType, @Param("isAll") Integer isAll); + + List<String> getKuKuanBaoZhangShuiPingByAreaCode(@Param("areaCode") String areaCode, + @Param("year") String year); } diff --git a/finance-system/src/main/java/com/finance/system/query/CalculateDetailQuery.java b/finance-system/src/main/java/com/finance/system/query/CalculateDetailQuery.java index e0a733e..5163019 100644 --- a/finance-system/src/main/java/com/finance/system/query/CalculateDetailQuery.java +++ b/finance-system/src/main/java/com/finance/system/query/CalculateDetailQuery.java @@ -27,7 +27,10 @@ @ApiModelProperty(value = "部门区划代码") private String areaCode; - + @ApiModelProperty(value = "季度", hidden = true) private String previousQuarter; + + @ApiModelProperty(value = "得分排序 1=正序 2=倒序") + private Integer sort; } diff --git a/finance-system/src/main/java/com/finance/system/query/ScoreCalculateDetailQuery.java b/finance-system/src/main/java/com/finance/system/query/ScoreCalculateDetailQuery.java index 6dbab43..f018df4 100644 --- a/finance-system/src/main/java/com/finance/system/query/ScoreCalculateDetailQuery.java +++ b/finance-system/src/main/java/com/finance/system/query/ScoreCalculateDetailQuery.java @@ -22,7 +22,7 @@ @ApiModelProperty(value = "部门名称") private String areaName; - - @ApiModelProperty(value = "季度", hidden = true) + + @ApiModelProperty(value = "季度") private String previousQuarter; } diff --git a/finance-system/src/main/java/com/finance/system/service/TbScoreService.java b/finance-system/src/main/java/com/finance/system/service/TbScoreService.java index d683fd3..0ff9c03 100644 --- a/finance-system/src/main/java/com/finance/system/service/TbScoreService.java +++ b/finance-system/src/main/java/com/finance/system/service/TbScoreService.java @@ -34,6 +34,9 @@ ScoreCalculateDetailVO scoreCalculateDetail(ScoreCalculateDetailQuery query) throws Exception; + ScoreCalculateDetailVO scoreCalculateHistoryDetail(ScoreCalculateDetailQuery query) + throws Exception; + List<ScoreRankVO> queryTotalScoreList(); ScoreRankVO queryRankAndScoreByAreaCode(String areaCode) throws Exception; diff --git a/finance-system/src/main/java/com/finance/system/service/impl/AsyncServiceImpl.java b/finance-system/src/main/java/com/finance/system/service/impl/AsyncServiceImpl.java index 811f8ab..45382d1 100644 --- a/finance-system/src/main/java/com/finance/system/service/impl/AsyncServiceImpl.java +++ b/finance-system/src/main/java/com/finance/system/service/impl/AsyncServiceImpl.java @@ -319,11 +319,11 @@ provinceDividendValue = getProvinceBigDecimal(provinceFieldsMap, BasicDataFieldEnum.BASIC_DATA_FIELD7); provinceDivisorValue = getProvinceBigDecimal(provinceFieldsMap, - BasicDataFieldEnum.BASIC_DATA_FIELD7); + BasicDataFieldEnum.BASIC_DATA_FIELD13); res1 = validateDivisorValue(deptDivisorValue); res2 = validateDivisorValue(provinceDivisorValue); score = 0D; - if (!res1 && res2) { + if (!res1 && !res2) { score = getScore2(deptDividendValue, deptDivisorValue, provinceDividendValue, provinceDivisorValue, vo); } @@ -389,26 +389,34 @@ BigDecimal currentData = getBigDecimal(sysUser.getAreaName(), deptFieldsMap, BasicDataFieldEnum.BASIC_DATA_FIELD35); BigDecimal part1; - BigDecimal part2; + BigDecimal part2 = BigDecimal.ZERO; if (currentData.compareTo(BigDecimal.valueOf(0.8D)) < 0) { BigDecimal add = currentData.subtract(BigDecimal.valueOf(0.8D)) .divide(BigDecimal.valueOf(0.1D), 2, RoundingMode.HALF_UP) .multiply(BigDecimal.valueOf(0.6D)) - .add(BigDecimal.valueOf(4D)); + .add(BigDecimal.valueOf(3D)); part1 = add.compareTo(BigDecimal.ZERO) < 0 ? BigDecimal.ZERO : add; } else { - part1 = BigDecimal.valueOf(4D); + part1 = BigDecimal.valueOf(3D); } - BigDecimal first = getBigDecimal(sysUser.getAreaName(), deptFieldsMap, - BasicDataFieldEnum.BASIC_DATA_FIELD36); - BigDecimal second = getBigDecimal(sysUser.getAreaName(), deptFieldsMap, - BasicDataFieldEnum.BASIC_DATA_FIELD37); - BigDecimal third = getBigDecimal(sysUser.getAreaName(), deptFieldsMap, - BasicDataFieldEnum.BASIC_DATA_FIELD38); - part2 = first.compareTo(BigDecimal.valueOf(0.3D)) < 0 - || second.compareTo(BigDecimal.valueOf(0.3D)) < 0 || third.compareTo( - BigDecimal.valueOf(0.3D)) < 0 ? BigDecimal.ZERO - : BigDecimal.valueOf(2D); + // BigDecimal first = getBigDecimal(sysUser.getAreaName(), deptFieldsMap, + // BasicDataFieldEnum.BASIC_DATA_FIELD36); + // BigDecimal second = getBigDecimal(sysUser.getAreaName(), deptFieldsMap, + // BasicDataFieldEnum.BASIC_DATA_FIELD37); + // BigDecimal third = getBigDecimal(sysUser.getAreaName(), deptFieldsMap, + // BasicDataFieldEnum.BASIC_DATA_FIELD38); + String year = tbBasicData.getQuarter().substring(0, 4); + List<BigDecimal> kuKuanList = tbBasicDataMapper.getKuKuanBaoZhangShuiPingByAreaCode( + sysUser.getAreaCode(), + year).stream() + .map(BigDecimal::new) + .collect(Collectors.toList()); + + part2 = kuKuanList.stream() + .anyMatch(item -> item.compareTo(BigDecimal.valueOf(0.3D)) <= 0) + ? BigDecimal.ZERO + : BigDecimal.valueOf(3D); + score = part1.add(part2).doubleValue(); break; case INDICATOR_ITEM14: @@ -417,6 +425,20 @@ BasicDataFieldEnum.BASIC_DATA_FIELD15); deptDivisorValue = getBigDecimal(sysUser.getAreaName(), deptFieldsMap, BasicDataFieldEnum.BASIC_DATA_FIELD14); + String substring = tbBasicData.getQuarter().substring(4); + if (substring.equals("四季度")) { + // 使用全年评价 + BigDecimal divide = deptDividendValue.divide(deptDivisorValue, 2, + RoundingMode.HALF_UP); + if (divide.compareTo(BigDecimal.valueOf(0.98D)) < 0) { + score = divide.subtract(BigDecimal.valueOf(0.98D)) + .multiply(BigDecimal.valueOf(100D)) + .divide(BigDecimal.valueOf(3D), 2, RoundingMode.HALF_UP) + .add(BigDecimal.valueOf(vo.getMaxScore())).doubleValue(); + } else { + score = vo.getMaxScore(); + } + } score = getScoreByMonth(deptDividendValue, deptDivisorValue, month, vo); break; case INDICATOR_ITEM15: @@ -490,6 +512,8 @@ score = d1.compareTo(d2) < 0 ? d1.divide(d2, 2, RoundingMode.HALF_UP) .multiply(BigDecimal.valueOf(vo.getMaxScore())).doubleValue() : vo.getMaxScore(); + } else { + score = vo.getMaxScore(); } break; case INDICATOR_ITEM21: diff --git a/finance-system/src/main/java/com/finance/system/service/impl/TbBasicDataServiceImpl.java b/finance-system/src/main/java/com/finance/system/service/impl/TbBasicDataServiceImpl.java index 8060fbc..bc7243a 100644 --- a/finance-system/src/main/java/com/finance/system/service/impl/TbBasicDataServiceImpl.java +++ b/finance-system/src/main/java/com/finance/system/service/impl/TbBasicDataServiceImpl.java @@ -455,6 +455,7 @@ field.getFieldValue(), tbOperlogList, result.toString()); } } + tbOperLogService.saveBatch(tbOperlogList); } private static void wrapOperLog(LoginUser loginUser, TbBasicData tbBasicData, String before, @@ -1152,6 +1153,7 @@ BeanUtils.copyBean(dto, BasicDataDTO.class), fieldMap)); TbBasicData tbBasicData = BeanUtils.copyBean(dto, TbBasicData.class); + tbBasicData.setDeptAreaCode(basicData.getDeptAreaCode()); tbBasicData.setQuarter(basicData.getQuarter()); // 保存基础数据动态字段数据 List<TbBasicDataField> tbBasicDataFields = diff --git a/finance-system/src/main/java/com/finance/system/service/impl/TbDataScreenConfigServiceImpl.java b/finance-system/src/main/java/com/finance/system/service/impl/TbDataScreenConfigServiceImpl.java index 6aaa352..ab70a5c 100644 --- a/finance-system/src/main/java/com/finance/system/service/impl/TbDataScreenConfigServiceImpl.java +++ b/finance-system/src/main/java/com/finance/system/service/impl/TbDataScreenConfigServiceImpl.java @@ -68,10 +68,14 @@ .eq(TbDataScreenConfig::getType, DataScreenConfigEnum.RISK_LEVEL) .oneOpt().orElseGet(() -> BeanUtils.copyBean(dto, TbDataScreenConfig.class)); - List<CalculateItemDTO> calculateItemList = dto.getCalculateItemList(); + // List<CalculateItemDTO> calculateItemList = dto.getCalculateItemList(); // validateCalculateItemList(calculateItemList); - String numberCalculateFormulaJsonStr = JSON.toJSONString(calculateItemList); + // String numberCalculateFormulaJsonStr = JSON.toJSONString(calculateItemList); // tbDataScreenConfig.setCalculateFormula(numberCalculateFormulaJsonStr); + tbDataScreenConfig.setNoRisk(dto.getNoRisk()); + tbDataScreenConfig.setLowRisk(dto.getLowRisk()); + tbDataScreenConfig.setMediumRisk(dto.getMediumRisk()); + tbDataScreenConfig.setHighRisk(dto.getHighRisk()); tbDataScreenConfig.setType(DataScreenConfigEnum.RISK_LEVEL); this.saveOrUpdate(tbDataScreenConfig); DataScreenConfigVO dataScreenConfigVO = BeanUtils.copyBean(tbDataScreenConfig, diff --git a/finance-system/src/main/java/com/finance/system/service/impl/TbOperLogServiceImpl.java b/finance-system/src/main/java/com/finance/system/service/impl/TbOperLogServiceImpl.java index a57d8a8..90d23e2 100644 --- a/finance-system/src/main/java/com/finance/system/service/impl/TbOperLogServiceImpl.java +++ b/finance-system/src/main/java/com/finance/system/service/impl/TbOperLogServiceImpl.java @@ -35,6 +35,7 @@ .between(StringUtils.isNotBlank(query.getStartTime()) && StringUtils.isNotBlank( query.getEndTime()), TbOperLog::getCreateTime, query.getStartTime(), query.getEndTime()) + .orderByDesc(TbOperLog::getCreateTime) .page(new Page<>(query.getPageNum(), query.getPageSize())); return PageDTO.of(page, OperLogVO.class); } 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..60174f3 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 @@ -84,6 +84,25 @@ } @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()); + vo.setList(pageVO.getRecords()); + return vo; + } + + @Override public List<ScoreRankVO> queryTotalScoreList() { return baseMapper.queryTotalScoreList(); } diff --git a/finance-system/src/main/resources/mapper/system/TbBasicDataMapper.xml b/finance-system/src/main/resources/mapper/system/TbBasicDataMapper.xml index f5124c4..93c3f67 100644 --- a/finance-system/src/main/resources/mapper/system/TbBasicDataMapper.xml +++ b/finance-system/src/main/resources/mapper/system/TbBasicDataMapper.xml @@ -123,5 +123,14 @@ </if> </where> </select> + <select id="getKuKuanBaoZhangShuiPingByAreaCode" resultType="java.lang.String"> + SELECT + tbdc.field_value + FROM tb_basic_data tbd LEFT JOIN tb_basic_data_field tbdc ON tbd.id = tbdc.basic_data_id + <where> + tbd.`quarter` LIKE CONCAT(#{year},'%') AND tbd.dept_area_code = #{areaCode} AND tbdc.field_id + IN (36,37,38) + </where> + </select> </mapper> diff --git a/finance-system/src/main/resources/mapper/system/TbScoreMapper.xml b/finance-system/src/main/resources/mapper/system/TbScoreMapper.xml index 959a260..bb66666 100644 --- a/finance-system/src/main/resources/mapper/system/TbScoreMapper.xml +++ b/finance-system/src/main/resources/mapper/system/TbScoreMapper.xml @@ -121,6 +121,12 @@ </if> group by su.area_code </where> + <if test="query.sort == 1"> + ORDER BY ts.score ASC + </if> + <if test="query.sort == 2"> + ORDER BY ts.score DESC + </if> </select> <select id="getCurrentScoreList" resultType="com.finance.system.vo.RiskMapVO"> SELECT SUM(ts.score) score, -- Gitblit v1.7.1