| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- package com.genersoft.iot.vmp.conf;
- import com.genersoft.iot.vmp.common.CivilCodePo;
- import com.genersoft.iot.vmp.utils.CivilCodeUtil;
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- 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;
- import java.util.ArrayList;
- import java.util.List;
- /**
- * 启动时读取行政区划表
- */
- @Configuration
- @Order(value=14)
- public class CivilCodeFileConf implements CommandLineRunner {
- private final static Logger logger = LoggerFactory.getLogger(CivilCodeFileConf.class);
- @Autowired
- @Lazy
- private UserSetting userSetting;
- @Override
- public void run(String... args) throws Exception {
- if (ObjectUtils.isEmpty(userSetting.getCivilCodeFile())) {
- logger.warn("[行政区划] 文件未设置,可能造成目录刷新结果不完整");
- return;
- }
- InputStream inputStream;
- if (userSetting.getCivilCodeFile().startsWith("classpath:")){
- String filePath = userSetting.getCivilCodeFile().substring("classpath:".length());
- ClassPathResource civilCodeFile = new ClassPathResource(filePath);
- if (!civilCodeFile.exists()) {
- logger.warn("[行政区划] 文件<{}>不存在,可能造成目录刷新结果不完整", userSetting.getCivilCodeFile());
- return;
- }
- inputStream = civilCodeFile.getInputStream();
- }else {
- File civilCodeFile = new File(userSetting.getCivilCodeFile());
- if (!civilCodeFile.exists()) {
- logger.warn("[行政区划] 文件<{}>不存在,可能造成目录刷新结果不完整", userSetting.getCivilCodeFile());
- return;
- }
- inputStream = Files.newInputStream(civilCodeFile.toPath());
- }
- BufferedReader inputStreamReader = new BufferedReader(new InputStreamReader(inputStream));
- int index = -1;
- String line;
- List<CivilCodePo> civilCodePoList = new ArrayList<>();
- while ((line = inputStreamReader.readLine()) != null) {
- index ++;
- if (index == 0) {
- continue;
- }
- String[] infoArray = line.split(",");
- CivilCodePo civilCodePo = CivilCodePo.getInstance(infoArray);
- civilCodePoList.add(civilCodePo);
- }
- CivilCodeUtil.INSTANCE.add(civilCodePoList);
- inputStreamReader.close();
- inputStream.close();
- if (civilCodePoList.isEmpty()) {
- logger.warn("[行政区划] 文件内容为空,可能造成目录刷新结果不完整");
- }else {
- logger.info("[行政区划] 加载成功,共加载数据{}条", civilCodePoList.size());
- }
- }
- }
|