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 { 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); } 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; } 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); } finance-system/src/main/java/com/finance/system/query/CalculateDetailQuery.java
@@ -30,4 +30,7 @@ @ApiModelProperty(value = "季度", hidden = true) private String previousQuarter; @ApiModelProperty(value = "得分排序 1=正序 2=倒序") private Integer sort; } finance-system/src/main/java/com/finance/system/query/ScoreCalculateDetailQuery.java
@@ -23,6 +23,6 @@ @ApiModelProperty(value = "部门名称") private String areaName; @ApiModelProperty(value = "季度", hidden = true) @ApiModelProperty(value = "季度") private String previousQuarter; } 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; 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: 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 = 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, 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); } 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(); } 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> 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,