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.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.dto.FieldDTO;
|
import com.ruoyi.system.dto.ShowHideDTO;
|
import com.ruoyi.system.mapper.TbFieldMapper;
|
import com.ruoyi.system.query.FieldQuery;
|
import com.ruoyi.system.service.TbBasicDataConfigService;
|
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.List;
|
import java.util.stream.Collectors;
|
|
/**
|
* <p>
|
* 字段表 服务实现类
|
* </p>
|
*
|
* @author mitao
|
* @since 2024-03-13
|
*/
|
@Slf4j
|
@Service
|
@RequiredArgsConstructor
|
public class TbFieldServiceImpl extends ServiceImpl<TbFieldMapper, TbField> implements TbFieldService {
|
private final TbFieldCategoryService tbFieldCategoryService;
|
private final TbBasicDataConfigService tbBasicDataConfigService;
|
|
@Override
|
public void add(FieldDTO dto) {
|
//参数校验
|
Integer fieldType = dto.getFieldType();
|
//1:数字 2:文本 3:百分比
|
if (FieldTypeEnum.TEXT.getCode().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("内容设置不能为空");
|
}
|
}
|
TbField tbField = BeanUtils.copyBean(dto, TbField.class);
|
TbFieldCategory category1 = tbFieldCategoryService.getById(dto.getLevelOneCategoryId());
|
tbField.setLevelOneCategory(category1.getFieldCategoryName());
|
if (StringUtils.isNotNull(dto.getLevelTwoCategoryId())) {
|
TbFieldCategory category2 = tbFieldCategoryService.getById(dto.getLevelTwoCategoryId());
|
tbField.setLevelTwoCategory(category2.getFieldCategoryName());
|
}
|
if (StringUtils.isNotNull(dto.getLevelThreeCategoryId())) {
|
TbFieldCategory category3 = tbFieldCategoryService.getById(dto.getLevelThreeCategoryId());
|
tbField.setLevelThreeCategory(category3.getFieldCategoryName());
|
}
|
this.save(tbField);
|
}
|
|
@Override
|
public void showHide(ShowHideDTO dto) {
|
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();
|
}
|
|
@Override
|
public PageDTO<FieldVO> queryPage(FieldQuery query) {
|
Page<TbField> page = this.lambdaQuery()
|
.like(StringUtils.isNotEmpty(query.getFieldName()), TbField::getFieldName, query.getFieldName())
|
.like(StringUtils.isNotEmpty(query.getLevelOneCategory()), TbField::getLevelOneCategory, query.getLevelOneCategory())
|
.like(StringUtils.isNotEmpty(query.getLevelTwoCategory()), TbField::getLevelTwoCategory, query.getLevelTwoCategory())
|
.like(StringUtils.isNotEmpty(query.getLevelThreeCategory()), TbField::getLevelThreeCategory, query.getLevelThreeCategory())
|
.eq(StringUtils.isNotNull(query.getStatus()), TbField::getStatus, query.getStatus())
|
.eq(StringUtils.isNotNull(query.getFieldType()), TbField::getFieldType, query.getFieldType())
|
.orderByDesc(TbField::getCreateTime)
|
.page(new Page<>(query.getPageNum(), query.getPageSize()));
|
if (CollUtils.isEmpty(page.getRecords())) {
|
return PageDTO.empty(page);
|
}
|
return PageDTO.of(page, FieldVO.class);
|
}
|
|
@Override
|
public List<String> influencedData(Integer id) {
|
List<TbBasicDataConfig> list = tbBasicDataConfigService.lambdaQuery().eq(TbBasicDataConfig::getFieldId, id).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]);
|
}
|
//百分比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);
|
}
|
}
|
@Data
|
class CalculateDTO{
|
private String key;
|
private String value;
|
}
|