mirror of
https://gitee.com/pan648540858/wvp-GB28181-pro.git
synced 2026-05-19 20:07:49 +08:00
78 lines
2.9 KiB
Java
78 lines
2.9 KiB
Java
package com.genersoft.iot.vmp.conf;
|
|
|
|
import com.genersoft.iot.vmp.common.CivilCodePo;
|
|
import com.genersoft.iot.vmp.utils.CivilCodeUtil;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.boot.CommandLineRunner;
|
|
import org.springframework.context.annotation.Configuration;
|
|
import org.springframework.context.annotation.Lazy;
|
|
import org.springframework.core.annotation.Order;
|
|
import org.springframework.core.io.ClassPathResource;
|
|
import org.springframework.util.ObjectUtils;
|
|
|
|
import java.io.BufferedReader;
|
|
import java.io.File;
|
|
import java.io.InputStream;
|
|
import java.io.InputStreamReader;
|
|
import java.nio.file.Files;
|
|
|
|
/**
|
|
* 启动时读取行政区划表
|
|
*/
|
|
@Slf4j
|
|
@Configuration
|
|
@Order(value=14)
|
|
public class CivilCodeFileConf implements CommandLineRunner {
|
|
|
|
@Autowired
|
|
@Lazy
|
|
private UserSetting userSetting;
|
|
|
|
@Override
|
|
public void run(String... args) throws Exception {
|
|
if (ObjectUtils.isEmpty(userSetting.getCivilCodeFile())) {
|
|
log.warn("[行政区划] 文件未设置,可能造成目录刷新结果不完整");
|
|
return;
|
|
}
|
|
InputStream inputStream;
|
|
if (userSetting.getCivilCodeFile().startsWith("classpath:")){
|
|
String filePath = userSetting.getCivilCodeFile().substring("classpath:".length());
|
|
ClassPathResource civilCodeFile = new ClassPathResource(filePath);
|
|
if (!civilCodeFile.exists()) {
|
|
log.warn("[行政区划] 文件<{}>不存在,可能造成目录刷新结果不完整", userSetting.getCivilCodeFile());
|
|
return;
|
|
}
|
|
inputStream = civilCodeFile.getInputStream();
|
|
|
|
}else {
|
|
File civilCodeFile = new File(userSetting.getCivilCodeFile());
|
|
if (!civilCodeFile.exists()) {
|
|
log.warn("[行政区划] 文件<{}>不存在,可能造成目录刷新结果不完整", userSetting.getCivilCodeFile());
|
|
return;
|
|
}
|
|
inputStream = Files.newInputStream(civilCodeFile.toPath());
|
|
}
|
|
|
|
BufferedReader inputStreamReader = new BufferedReader(new InputStreamReader(inputStream));
|
|
int index = -1;
|
|
String line;
|
|
while ((line = inputStreamReader.readLine()) != null) {
|
|
index ++;
|
|
if (index == 0) {
|
|
continue;
|
|
}
|
|
String[] infoArray = line.split(",");
|
|
CivilCodePo civilCodePo = CivilCodePo.getInstance(infoArray);
|
|
CivilCodeUtil.INSTANCE.add(civilCodePo);
|
|
}
|
|
inputStreamReader.close();
|
|
inputStream.close();
|
|
if (CivilCodeUtil.INSTANCE.isEmpty()) {
|
|
log.warn("[行政区划] 文件内容为空,可能造成目录刷新结果不完整");
|
|
}else {
|
|
log.info("[行政区划] 加载成功,共加载数据{}条", CivilCodeUtil.INSTANCE.size());
|
|
}
|
|
}
|
|
}
|