This commit is contained in:
zt
2025-03-10 10:07:55 +08:00
parent efdd835429
commit 11255deebc
10 changed files with 146 additions and 31 deletions

View File

@ -0,0 +1,24 @@
package com.ruoyi.common.core.domain.model;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
@ApiModel("地区节点 Response VO")
@Data
public class AreaNodeRespVO {
@ApiModelProperty("编号")
private Integer id;
@ApiModelProperty("名字")
private String name;
/**
* 子节点
*/
private List<AreaNodeRespVO> children;
}

View File

@ -38,7 +38,9 @@ public enum RecruitApplyStatus
return info;
}
//任务详情里面务工者人员状态
public static List<String> getTaskStatus(){
return Arrays.asList(BGT_PASS.getCode(),WGZ_PASS.getCode(),WORKING.getCode(), OUT_WORK.getCode());
}
}

View File

@ -1,5 +1,7 @@
package com.ruoyi.common.utils;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.io.resource.ResourceUtil;
import cn.hutool.core.lang.Assert;
import cn.hutool.core.text.csv.CsvRow;
@ -7,11 +9,11 @@ import cn.hutool.core.text.csv.CsvUtil;
import com.ruoyi.common.core.domain.Area;
import com.ruoyi.common.enums.AreaType;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors;
/**
* 区域工具类
@ -19,6 +21,7 @@ import java.util.Map;
* @author 芋道源码
*/
@Slf4j
@Component
public class AreaUtils {
/**
@ -32,32 +35,40 @@ public class AreaUtils {
*/
private static Map<Integer, Area> areas;
private AreaUtils() {
long now = System.currentTimeMillis();
areas = new HashMap<>();
areas.put(Area.ID_GLOBAL, new Area(Area.ID_GLOBAL, "全球", 0,
null, new ArrayList<>()));
// 从 csv 中加载数据
List<CsvRow> rows = CsvUtil.getReader().read(ResourceUtil.getUtf8Reader("area.csv")).getRows();
rows.remove(0); // 删除 header
for (CsvRow row : rows) {
// 创建 Area 对象
Area area = new Area(Integer.valueOf(row.get(0)), row.get(1), Integer.valueOf(row.get(2)),
null, new ArrayList<>());
// 添加到 areas 中
areas.put(area.getId(), area);
}
private AreaUtils() {
long now = System.currentTimeMillis();
areas = new HashMap<>();
areas.put(Area.ID_GLOBAL, new Area(Area.ID_GLOBAL, "全球", 0, null, new ArrayList<>()));
// 构建父子关系:因为 Area 中没有 parentId 字段,所以需要重复读取
for (CsvRow row : rows) {
Area area = areas.get(Integer.valueOf(row.get(0))); // 自己
Area parent = areas.get(Integer.valueOf(row.get(3))); //
Assert.isTrue(area != parent, "{}:父子节点相同", area.getName());
area.setParent(parent);
parent.getChildren().add(area);
}
log.info("启动加载 AreaUtils 成功,耗时 ({}) 毫秒", System.currentTimeMillis() - now);
}
try {
List<CsvRow> rows = CsvUtil.getReader().read(ResourceUtil.getUtf8Reader("area.csv")).getRows();
if (!rows.isEmpty()) {
rows.remove(0); // 删除 header
for (CsvRow row : rows) {
// 创建 Area 对象
Area area = new Area(Integer.valueOf(row.get(0)), row.get(1), Integer.valueOf(row.get(2)),
null, new ArrayList<>());
// 添加到 areas 中
areas.put(area.getId(), area);
// 构建父子关系
int parentId = Integer.valueOf(row.get(3));
Area parent = areas.get(parentId);
if (parent != null) {
Assert.isTrue(area != parent, "{}:父子节点相同", area.getName());
area.setParent(parent);
parent.getChildren().add(area);
} else {
log.warn("区域 {} 的父区域 ID {} 无效", area.getName(), parentId);
}
}
}
} catch (Exception e) {
log.error("加载区域数据时发生错误", e);
}
log.info("启动加载 AreaUtils 成功,耗时 ({}) 毫秒", System.currentTimeMillis() - now);
}
/**
* 获得指定编号对应的区域
@ -152,4 +163,28 @@ public class AreaUtils {
public static AreaUtils getInstance() {
return INSTANCE;
}
public static <S, T> List<T> toBean(List<S> source, Class<T> targetType) {
if (source == null) {
return null;
}
return convertList(source, s -> toBean(s, targetType));
}
public static <T> T toBean(Object source, Class<T> targetClass) {
return BeanUtil.toBean(source, targetClass);
}
public static <T, U> List<U> convertList(Collection<T> from, Function<T, U> func) {
if (CollUtil.isEmpty(from)) {
return new ArrayList<>();
}
return from.stream().map(func).filter(Objects::nonNull).collect(Collectors.toList());
}
}