farm模块-区域多选转换工具类

This commit is contained in:
顾君禹
2025-08-26 09:16:31 +08:00
parent 1f6f186df6
commit 331beccc5c
2 changed files with 128 additions and 0 deletions

View File

@@ -0,0 +1,73 @@
package cn.iocoder.yudao.module.farm.framework.util;
import cn.hutool.core.util.StrUtil;
import lombok.extern.slf4j.Slf4j;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
/**
* 地区代码转换工具类
* 用于在数据库字符串(逗号分隔)和Java集合之间转换
*
* @author 芋道源码
*/
@Slf4j
public class AreaCodeUtil {
/**
* 分隔符 - 用于分隔不同的地区代码组合
*/
private static final String SEPARATOR = "|";
/**
* 将地区代码集合转换为数据库存储的字符串
*
* @param areaCodeList 地区代码集合
* @return 逗号分隔的字符串,如果集合为空则返回null
*/
public static String toDatabaseString(List<String> areaCodeList) {
if (areaCodeList == null || areaCodeList.isEmpty()) {
return null;
}
// 过滤空字符串并去重
List<String> filteredList = areaCodeList.stream()
.filter(StrUtil::isNotBlank)
.distinct()
.collect(Collectors.toList());
if (filteredList.isEmpty()) {
return null;
}
return String.join(SEPARATOR, filteredList);
}
/**
* 将数据库字符串转换为地区代码集合
* 注意:这里使用特殊的分隔符 "|" 来分隔不同的地区代码组合
* 因为地区代码本身包含逗号,如 "120000,120100,120118"
*
* @param databaseString 数据库中的字符串
* @return 地区代码集合,如果字符串为空则返回空集合
*/
public static List<String> toAreaCodeList(String databaseString) {
if (StrUtil.isBlank(databaseString)) {
return new ArrayList<>();
}
try {
// 使用 "|" 作为分隔符,因为地区代码本身包含逗号
return Arrays.stream(databaseString.split("\\|"))
.map(String::trim)
.filter(StrUtil::isNotBlank)
.distinct()
.collect(Collectors.toList());
} catch (Exception e) {
log.error("转换地区代码集合失败,原始字符串: {}", databaseString, e);
return new ArrayList<>();
}
}
}

View File

@@ -0,0 +1,55 @@
package cn.iocoder.yudao.module.farm.framework.util;
import cn.iocoder.yudao.module.farm.controller.admin.modelmanagement.vo.ModelManagementRespVO;
import cn.iocoder.yudao.module.farm.dal.dataobject.modelmanagement.ModelManagementDO;
import java.util.List;
/**
* 模型管理转换工具类
* 确保所有接口返回格式统一
*
* @author 芋道源码
*/
public class ModelManagementConvertUtil {
/**
* 将 ModelManagementDO 转换为 ModelManagementRespVO
* 确保 suitablePlantingAreas 字段格式统一
*/
public static ModelManagementRespVO convertToRespVO(ModelManagementDO modelManagementDO) {
if (modelManagementDO == null) {
return null;
}
ModelManagementRespVO respVO = new ModelManagementRespVO();
// 手动设置基础字段,避免BeanUtils处理复杂类型
respVO.setId(modelManagementDO.getId());
respVO.setModelName(modelManagementDO.getModelName());
respVO.setSpeciesId(modelManagementDO.getSpeciesId());
respVO.setSpeciesName(modelManagementDO.getSpeciesName());
respVO.setCycle(modelManagementDO.getCycle());
respVO.setHarvest(modelManagementDO.getHarvest());
respVO.setDescription(modelManagementDO.getDescription());
respVO.setCreateTime(modelManagementDO.getCreateTime());
respVO.setBaseId(modelManagementDO.getBaseId());
respVO.setBaseName(modelManagementDO.getBaseName());
respVO.setPlotId(modelManagementDO.getPlotId());
respVO.setPlotName(modelManagementDO.getPlotName());
respVO.setTenantId(modelManagementDO.getTenantId());
respVO.setIsRelease(modelManagementDO.getIsRelease());
respVO.setQuoteCount(modelManagementDO.getQuoteCount());
respVO.setSpeciesImage(modelManagementDO.getSpeciesImage());
respVO.setReleaseTime(modelManagementDO.getReleaseTime());
// 设置suitablePlantingAreas字段,转换为前端期望的对象格式
List<String> areasList = modelManagementDO.getSuitablePlantingAreasList();
respVO.setSuitablePlantingAreasFromStringList(areasList);
// 设置speciesImageList字段,触发自动转换
respVO.setSpeciesImageList(modelManagementDO.getSpeciesImageList());
return respVO;
}
}