| | |
| | | import com.ruoyi.common.enums.FieldInputTypeEnum; |
| | | import com.ruoyi.common.enums.FieldTypeEnum; |
| | | import com.ruoyi.common.enums.ShowStatusEnum; |
| | | import com.ruoyi.common.exception.ServiceException; |
| | | import com.ruoyi.common.utils.BeanUtils; |
| | | import com.ruoyi.common.utils.CollUtils; |
| | | import com.ruoyi.common.utils.StringUtils; |
| | | import com.ruoyi.system.domain.TbBasicDataConfig; |
| | | import com.ruoyi.system.domain.TbField; |
| | | import com.ruoyi.system.domain.TbFieldCategory; |
| | | import com.ruoyi.system.domain.*; |
| | | import com.ruoyi.system.dto.FieldDTO; |
| | | import com.ruoyi.system.dto.ShowHideDTO; |
| | | import com.ruoyi.system.dto.update.FieldUpdateDTO; |
| | | import com.ruoyi.system.mapper.TbBasicDataMapper; |
| | | import com.ruoyi.system.mapper.TbFieldMapper; |
| | | import com.ruoyi.system.query.FieldQuery; |
| | | import com.ruoyi.system.service.TbBasicDataConfigService; |
| | | import com.ruoyi.system.service.TbBasicDataFieldService; |
| | | import com.ruoyi.system.service.TbFieldCategoryService; |
| | | import com.ruoyi.system.service.TbFieldService; |
| | | import com.ruoyi.system.utils.FieldBuildUtil; |
| | | import com.ruoyi.system.vo.BasicDataFieldVO; |
| | | import com.ruoyi.system.vo.FieldVO; |
| | | import com.ruoyi.system.vo.FieldsTreeVO; |
| | | 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.*; |
| | | import java.util.concurrent.CompletableFuture; |
| | | import java.util.stream.Collectors; |
| | | |
| | |
| | | public class TbFieldServiceImpl extends ServiceImpl<TbFieldMapper, TbField> implements TbFieldService { |
| | | private final TbFieldCategoryService tbFieldCategoryService; |
| | | private final TbBasicDataConfigService tbBasicDataConfigService; |
| | | private final TbBasicDataMapper tbBasicDataMapper; |
| | | private final TbBasicDataFieldService tbBasicDataFieldService; |
| | | |
| | | @Override |
| | | public void add(FieldDTO dto) { |
| | | //参数校验 |
| | | Integer fieldType = dto.getFieldType(); |
| | | FieldTypeEnum fieldType = dto.getFieldType(); |
| | | //1:数字 2:文本 3:百分比 |
| | | if (FieldTypeEnum.TEXT.getCode().equals(fieldType)) { |
| | | if (FieldTypeEnum.TEXT.equals(fieldType)) { |
| | | if (StringUtils.isNull(dto.getTextInputType())) { |
| | | throw new RuntimeException("输入类型不能为空"); |
| | | } else if (FieldInputTypeEnum.FIXED_CONTENT.getCode().equals(dto.getTextInputType()) && StringUtils.isBlank(dto.getTextContent())) { |
| | | throw new RuntimeException("内容设置不能为空"); |
| | | throw new ServiceException("输入类型不能为空"); |
| | | } else if (FieldInputTypeEnum.FIXED_CONTENT.equals(dto.getTextInputType()) && StringUtils.isBlank(dto.getTextContent())) { |
| | | throw new ServiceException("内容设置不能为空"); |
| | | } |
| | | } |
| | | TbField tbField = BeanUtils.copyBean(dto, TbField.class); |
| | |
| | | log.info("======主线程执行showHide{}",Thread.currentThread().getName() ); |
| | | TbField field = this.getById(dto.getId()); |
| | | if (StringUtils.isNull(field)) { |
| | | throw new RuntimeException("非法参数"); |
| | | throw new ServiceException("非法参数"); |
| | | } |
| | | //隐藏字段 |
| | | this.lambdaUpdate().set(TbField::getStatus, dto.getStatus()).eq(TbField::getId, dto.getId()).update(); |
| | |
| | | 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 -> { |
| | | List<Long> ids = list.stream().map(config -> { |
| | | String fieldIdStr = config.getFieldIdStr(); |
| | | String[] split = fieldIdStr.split(","); |
| | | //字符串数组转为List |
| | |
| | | } |
| | | |
| | | @Override |
| | | public List<String> influencedData(Integer id) { |
| | | //List<TbBasicDataConfig> list = tbBasicDataConfigService.lambdaQuery().like(TbBasicDataConfig::getFieldIdStr, id).list(); |
| | | List<TbBasicDataConfig> list = tbBasicDataConfigService.lambdaQuery().eq(TbBasicDataConfig::getStatus, ShowStatusEnum.SHOW.getCode()).list(); |
| | | public String influencedData(Long id) { |
| | | List<TbBasicDataConfig> list = tbBasicDataConfigService.lambdaQuery().eq(TbBasicDataConfig::getStatus, ShowStatusEnum.SHOW).list(); |
| | | if (CollUtils.isEmpty(list)) { |
| | | return CollUtils.emptyList(); |
| | | return ""; |
| | | } |
| | | List<String> collect = list.stream().map(config -> { |
| | | String collect = list.stream().map(config -> { |
| | | String fieldIdStr = config.getFieldIdStr(); |
| | | String[] split = fieldIdStr.split(","); |
| | | //字符串数组转为List |
| | | List<String> idList = new ArrayList<>(Arrays.asList(split)); |
| | | List<String> idList = Arrays.asList(split); |
| | | if (idList.contains(id.toString())) { |
| | | return config.getTypeName(); |
| | | } |
| | | return null; |
| | | }).collect(Collectors.toList()); |
| | | if (CollUtils.isEmpty(collect)) { |
| | | return CollUtils.emptyList(); |
| | | }).filter(Objects::nonNull).collect(Collectors.joining(",")); |
| | | if (StringUtils.isBlank(collect)) { |
| | | return ""; |
| | | } |
| | | return collect; |
| | | } |
| | | |
| | | @Override |
| | | public void update(FieldUpdateDTO dto) { |
| | | TbField field = this.getById(dto.getId()); |
| | | if (Objects.isNull(field)) { |
| | | throw new ServiceException("参数异常"); |
| | | } |
| | | TbField tbField = BeanUtils.copyBean(dto, TbField.class); |
| | | this.updateById(tbField); |
| | | } |
| | | |
| | | @Override |
| | | public BasicDataFieldVO getHistoryFields(Long id) { |
| | | // 从数据库中获取基本数据 |
| | | TbBasicData basicData = tbBasicDataMapper.selectById(id); |
| | | if (Objects.isNull(basicData)) { |
| | | throw new ServiceException("非法参数"); |
| | | } |
| | | BasicDataFieldVO vo = BeanUtils.copyBean(basicData, BasicDataFieldVO.class); |
| | | // 查询动态字段 |
| | | List<TbBasicDataField> basicDataFields = tbBasicDataFieldService.lambdaQuery().eq(TbBasicDataField::getBasicDataId, basicData.getId()).list(); |
| | | // 获取所有字段ID |
| | | Set<Long> fieldIds = basicDataFields.stream().map(TbBasicDataField::getFieldId).collect(Collectors.toSet()); |
| | | // 根据字段ID查询字段信息并构建字段ID到字段对象的映射 |
| | | Map<Long, TbField> fieldMap = this.lambdaQuery().in(!fieldIds.isEmpty(), TbField::getId, fieldIds).list().stream().collect(Collectors.toMap(TbField::getId, e -> e)); |
| | | // 根节点 |
| | | List<FieldsTreeVO> root = new ArrayList<>(); |
| | | basicDataFields.stream().filter(item -> item.getFieldId()==-1).findFirst().ifPresent(item ->{ |
| | | FieldsTreeVO fieldsTreeVO = new FieldsTreeVO(); |
| | | fieldsTreeVO.setId(item.getFieldId()); |
| | | fieldsTreeVO.setName("转移支付规模"); |
| | | fieldsTreeVO.setValue(item.getFieldValue()); |
| | | fieldsTreeVO.setCategory(Boolean.FALSE); |
| | | root.add(fieldsTreeVO); |
| | | }); |
| | | basicDataFields.stream().filter(item -> item.getFieldId()==-2).findFirst().ifPresent(item ->{ |
| | | FieldsTreeVO fieldsTreeVO = new FieldsTreeVO(); |
| | | fieldsTreeVO.setId(item.getFieldId()); |
| | | fieldsTreeVO.setName("当期GDP"); |
| | | fieldsTreeVO.setValue(item.getFieldValue()); |
| | | fieldsTreeVO.setCategory(Boolean.FALSE); |
| | | root.add(fieldsTreeVO); |
| | | }); |
| | | FieldBuildUtil.buildTreeStructure(basicDataFields, fieldMap, root); |
| | | FieldsTreeVO fieldsTreeVO = new FieldsTreeVO(); |
| | | fieldsTreeVO.setId(-3L); |
| | | fieldsTreeVO.setName("备注"); |
| | | fieldsTreeVO.setValue(vo.getRemark()); |
| | | fieldsTreeVO.setCategory(Boolean.FALSE); |
| | | root.add(fieldsTreeVO); |
| | | vo.setFields(root); |
| | | return vo; |
| | | } |
| | | } |