mitao
2024-03-18 a4befde9e479ff159d08202b7e231377a975406b
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TbFieldServiceImpl.java
@@ -1,11 +1,11 @@
package com.ruoyi.system.service.impl;
import cn.hutool.json.JSONArray;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.basic.PageDTO;
import com.ruoyi.common.enums.FieldInputTypeEnum;
import com.ruoyi.common.enums.FieldTypeEnum;
import com.ruoyi.common.enums.ShowStatusEnum;
import com.ruoyi.common.utils.BeanUtils;
import com.ruoyi.common.utils.CollUtils;
import com.ruoyi.common.utils.StringUtils;
@@ -20,13 +20,14 @@
import com.ruoyi.system.service.TbFieldCategoryService;
import com.ruoyi.system.service.TbFieldService;
import com.ruoyi.system.vo.FieldVO;
import lombok.Data;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.concurrent.CompletableFuture;
import java.util.stream.Collectors;
/**
@@ -72,14 +73,32 @@
    @Override
    public void showHide(ShowHideDTO dto) {
        log.info("======主线程执行showHide{}",Thread.currentThread().getName() );
        TbField field = this.getById(dto.getId());
        if (StringUtils.isNull(field)) {
            throw new RuntimeException("非法参数");
        }
        //隐藏字段
        this.lambdaUpdate().set(TbField::getStatus, dto.getStatus()).eq(TbField::getId, dto.getId()).update();
        //隐藏基础数据 TODO
        tbBasicDataConfigService.lambdaUpdate().eq(TbBasicDataConfig::getFieldId, dto.getId()).set(TbBasicDataConfig::getStatus, dto.getStatus()).update();
        //异步隐藏基础数据配置
        CompletableFuture.runAsync(() -> handleDataConfig(dto, field));
    }
    private void handleDataConfig(ShowHideDTO dto, TbField field) {
        log.info("======子线程执行handleDataConfig{}",Thread.currentThread().getName() );
        List<TbBasicDataConfig> list = tbBasicDataConfigService.lambdaQuery().eq(TbBasicDataConfig::getStatus, ShowStatusEnum.SHOW.getCode()).list();
        if (CollUtils.isNotEmpty(list)) {
            List<Integer> ids = list.stream().map(config -> {
                String fieldIdStr = config.getFieldIdStr();
                String[] split = fieldIdStr.split(",");
                //字符串数组转为List
                List<String> idList = new ArrayList<>(Arrays.asList(split));
                if (idList.contains(field.getId().toString())) {
                    return config.getId();
                }
                return null;
            }).collect(Collectors.toList());
            tbBasicDataConfigService.lambdaUpdate().set(TbBasicDataConfig::getStatus, dto.getStatus()).in(TbBasicDataConfig::getId, ids).update();
        }
    }
    @Override
@@ -101,38 +120,24 @@
    @Override
    public List<String> influencedData(Integer id) {
        List<TbBasicDataConfig> list = tbBasicDataConfigService.lambdaQuery().eq(TbBasicDataConfig::getFieldId, id).list();
        //List<TbBasicDataConfig> list = tbBasicDataConfigService.lambdaQuery().like(TbBasicDataConfig::getFieldIdStr, id).list();
        List<TbBasicDataConfig> list = tbBasicDataConfigService.lambdaQuery().eq(TbBasicDataConfig::getStatus, ShowStatusEnum.SHOW.getCode()).list();
        if (CollUtils.isEmpty(list)) {
            return CollUtils.emptyList();
        }
        return list.stream().map(TbBasicDataConfig::getTypeName).collect(Collectors.toList());
    }
    public static void main(String[] args) {
        String string = "蓝色_10,红色_20,绿色_30";
        String[] split = string.split(",");
        for (String s : split) {
            String[] split1 = s.split("_");
            System.out.println(split1[1]);
        List<String> collect = list.stream().map(config -> {
            String fieldIdStr = config.getFieldIdStr();
            String[] split = fieldIdStr.split(",");
            //字符串数组转为List
            List<String> idList = new ArrayList<>(Arrays.asList(split));
            if (idList.contains(id.toString())) {
                return config.getTypeName();
            }
            return null;
        }).collect(Collectors.toList());
        if (CollUtils.isEmpty(collect)) {
            return CollUtils.emptyList();
        }
        //百分比1_百分比2:得分
        String string1 = "10_20:50,20_30:50,30_40:60";
        CalculateDTO calculateDTO = new CalculateDTO();
        calculateDTO.setKey("10_20");
        calculateDTO.setValue("20");
        CalculateDTO calculateDTO1 = new CalculateDTO();
        calculateDTO1.setKey("20_30");
        calculateDTO1.setValue("30");
        List<CalculateDTO> list = new ArrayList<>();
        list.add(calculateDTO);
        list.add(calculateDTO1);
        JSONArray objects = new JSONArray(list);
        String jsonString = objects.toJSONString(2);
        System.err.println(jsonString);
        return collect;
    }
}
@Data
class CalculateDTO{
    private String key;
    private String value;
}