mitao
2024-04-17 d68c61517a3a6d4ec4d47844c21bdc143f99cbab
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TbDataScreenConfigServiceImpl.java
@@ -18,6 +18,7 @@
import com.ruoyi.system.mapper.TbDataScreenConfigMapper;
import com.ruoyi.system.service.TbDataScreenConfigService;
import com.ruoyi.system.vo.DataScreenConfigVO;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
@@ -59,9 +60,9 @@
    @Override
    @Transactional(rollbackFor = Exception.class)
    public DataScreenConfigVO editRiskLevel(RiskLevelUpdDTO dto) {
        if (dto.areRiskLevelsDistinct()) {
       /* if (dto.areRiskLevelsDistinct()) {
            throw new ServiceException("得分范围不能重叠");
        }
        }*/
        //查询是否有该指标配置
        TbDataScreenConfig tbDataScreenConfig = this.lambdaQuery()
                .eq(TbDataScreenConfig::getType, DataScreenConfigEnum.RISK_LEVEL)
@@ -110,6 +111,7 @@
        }
    }
    //表达式校验
    public boolean hasConsecutiveDuplicates(List<CalculateItemDTO> calculateItemList) {
        return IntStream.range(1, calculateItemList.size())
                .anyMatch(i -> calculateItemList.get(i - 1).getValueType()
@@ -137,48 +139,58 @@
    @Override
    @Transactional(rollbackFor = Exception.class)
    public DataScreenConfigVO editDataIndicatorsConfig(DataIndicatorsUpdDTO dto) {
        //查询是否有该指标配置
        TbDataScreenConfig tbDataScreenConfig = this.lambdaQuery()
                .eq(TbDataScreenConfig::getType, DataScreenConfigEnum.DATA_INDICATORS)
                .eq(TbDataScreenConfig::getSubType,
                        dto.getSubType()).oneOpt().orElseGet(() -> BeanUtils.copyBean(dto,
                        TbDataScreenConfig.class));
        List<CalculateItemDTO> scoreCalculateList = dto.getScoreCalculateList();
        List<CalculateItemDTO> rateCalculateList = dto.getRateCalculateList();
        validateCalculateItemList(scoreCalculateList);
        validateCalculateItemList(rateCalculateList);
        String scoreCalculateFormulaJsonStr = JSON.toJSONString(scoreCalculateList);
        tbDataScreenConfig.setCalculateFormula(scoreCalculateFormulaJsonStr);
        String rateCalculateFormulaJsonStr = JSON.toJSONString(rateCalculateList);
        tbDataScreenConfig.setCalculateRateFormula(rateCalculateFormulaJsonStr);
        tbDataScreenConfig.setType(DataScreenConfigEnum.DATA_INDICATORS);
        this.saveOrUpdate(tbDataScreenConfig);
        DataScreenConfigVO dataScreenConfigVO = BeanUtils.copyBean(tbDataScreenConfig,
                DataScreenConfigVO.class);
        dataScreenConfigVO.setScoreCalculateList(scoreCalculateList);
        dataScreenConfigVO.setRateCalculateList(rateCalculateList);
        return dataScreenConfigVO;
    public List<DataScreenConfigVO> editDataIndicatorsConfig(List<DataIndicatorsUpdDTO> dtoList) {
        List<DataScreenConfigVO> vosList = new ArrayList<>();
        for (DataIndicatorsUpdDTO dto : dtoList) {
            //查询是否有该指标配置
            TbDataScreenConfig tbDataScreenConfig = this.lambdaQuery()
                    .eq(TbDataScreenConfig::getType, DataScreenConfigEnum.DATA_INDICATORS)
                    .eq(TbDataScreenConfig::getSubType,
                            dto.getSubType()).oneOpt().orElseGet(() -> BeanUtils.copyBean(dto,
                            TbDataScreenConfig.class));
            List<CalculateItemDTO> scoreCalculateList = dto.getScoreCalculateList();
            List<CalculateItemDTO> rateCalculateList = dto.getRateCalculateList();
            validateCalculateItemList(scoreCalculateList);
            validateCalculateItemList(rateCalculateList);
            String scoreCalculateFormulaJsonStr = JSON.toJSONString(scoreCalculateList);
            tbDataScreenConfig.setCalculateFormula(scoreCalculateFormulaJsonStr);
            String rateCalculateFormulaJsonStr = JSON.toJSONString(rateCalculateList);
            tbDataScreenConfig.setCalculateRateFormula(rateCalculateFormulaJsonStr);
            tbDataScreenConfig.setType(DataScreenConfigEnum.DATA_INDICATORS);
            this.saveOrUpdate(tbDataScreenConfig);
            DataScreenConfigVO dataScreenConfigVO = BeanUtils.copyBean(tbDataScreenConfig,
                    DataScreenConfigVO.class);
            dataScreenConfigVO.setScoreCalculateList(scoreCalculateList);
            dataScreenConfigVO.setRateCalculateList(rateCalculateList);
            vosList.add(dataScreenConfigVO);
        }
        return vosList;
    }
    @Override
    @Transactional(rollbackFor = Exception.class)
    public DataScreenConfigVO editFormalIndicatorsConfig(FormalIndicatorsUpdDTO dto) {
        //查询是否有该指标配置
        TbDataScreenConfig tbDataScreenConfig = this.lambdaQuery()
                .eq(TbDataScreenConfig::getType, DataScreenConfigEnum.FORMAL_INDICATORS)
                .eq(TbDataScreenConfig::getSubType,
                        dto.getSubType()).oneOpt().orElseGet(() -> BeanUtils.copyBean(dto,
                        TbDataScreenConfig.class));
        tbDataScreenConfig.setType(DataScreenConfigEnum.FORMAL_INDICATORS);
        List<CalculateItemDTO> calculateItemList = dto.getCalculateItemList();
        validateCalculateItemList(calculateItemList);
        String calculateFormulaJsonStr = JSON.toJSONString(calculateItemList);
        tbDataScreenConfig.setCalculateFormula(calculateFormulaJsonStr);
        this.saveOrUpdate(tbDataScreenConfig);
        DataScreenConfigVO dataScreenConfigVO = BeanUtils.copyBean(tbDataScreenConfig,
                DataScreenConfigVO.class);
        dataScreenConfigVO.setScoreCalculateList(calculateItemList);
        return dataScreenConfigVO;
    public List<DataScreenConfigVO> editFormalIndicatorsConfig(
            List<FormalIndicatorsUpdDTO> dtoList) {
        List<DataScreenConfigVO> vosList = new ArrayList<>();
        for (FormalIndicatorsUpdDTO dto : dtoList) {
            //查询是否有该指标配置
            TbDataScreenConfig tbDataScreenConfig = this.lambdaQuery()
                    .eq(TbDataScreenConfig::getType, DataScreenConfigEnum.FORMAL_INDICATORS)
                    .eq(TbDataScreenConfig::getSubType,
                            dto.getSubType()).oneOpt().orElseGet(() -> BeanUtils.copyBean(dto,
                            TbDataScreenConfig.class));
            tbDataScreenConfig.setType(DataScreenConfigEnum.FORMAL_INDICATORS);
            tbDataScreenConfig.setMaxScore(dto.getMaxScore());
            List<CalculateItemDTO> calculateItemList = dto.getCalculateItemList();
            validateCalculateItemList(calculateItemList);
            String calculateFormulaJsonStr = JSON.toJSONString(calculateItemList);
            tbDataScreenConfig.setCalculateFormula(calculateFormulaJsonStr);
            this.saveOrUpdate(tbDataScreenConfig);
            DataScreenConfigVO dataScreenConfigVO = BeanUtils.copyBean(tbDataScreenConfig,
                    DataScreenConfigVO.class);
            dataScreenConfigVO.setScoreCalculateList(calculateItemList);
            vosList.add(dataScreenConfigVO);
        }
        return vosList;
    }
}