lxw
2022-09-13 c020bb8a0e827f2e98afbfd209a3ff5c383413d6
台站管理
1个文件已添加
5个文件已修改
141 ■■■■■ 已修改文件
src/main/java/com/whyc/controller/StationInfoController.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/dto/FileOpreate.java 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/mapper/StationInfoMapper.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/service/StationInfoService.java 67 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/FileInfoMapper.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/StationInfoMapper.xml 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/controller/StationInfoController.java
@@ -27,6 +27,7 @@
    }
    @ApiOperation(value = "台站下添加文件")
    @GetMapping("addFileInStation")
    public Response addFileInStation(@RequestParam String stationName,@RequestParam String FilePath){
        return service.addFileInStation(stationName,FilePath);
    }
src/main/java/com/whyc/dto/FileOpreate.java
New file
@@ -0,0 +1,64 @@
package com.whyc.dto;
import netscape.security.Privilege;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
public class FileOpreate {
    /**
     * 获取指定文件夹下所有文件,不含文件夹里的文件
     *
     * @param dirFilePath 文件夹路径
     * @return
     */
    public static List<File> getAllFile(String dirFilePath) {
        if (dirFilePath.isEmpty())
            return null;
        return getFileList(new File(dirFilePath));
    }
    /**
     * 获取指定文件夹下所有文件,不含文件夹里的文件
     *
     * @param dirFile 文件夹
     * @return
     */
    public static List<File> getFileList(File dirFile) {
        // 如果文件夹不存在或着不是文件夹,则返回 null
        if (Objects.isNull(dirFile) || !dirFile.exists() || dirFile.isFile())
            return null;
        File[] childrenFiles = dirFile.listFiles();
        if (Objects.isNull(childrenFiles) || childrenFiles.length == 0)
            return null;
        List<File> files = new ArrayList<>();
        for (File childFile : childrenFiles) {
            // 如果是文件,直接添加到结果集合
            if (childFile.isFile()) {
                files.add(childFile);
            }
            //以下几行代码取消注释后可以将所有子文件夹里的文件也获取到列表里
            else {
                // 如果是文件夹,则将其内部文件添加进结果集合
               List<File> cFiles = getFileList(childFile);
                if (Objects.isNull(cFiles) || cFiles.isEmpty()) continue;
                files.addAll(cFiles);
            }
        }
        return files;
    }
    public static void main(String[] args) {
        String filePath="D://fileTest";
        List<File> list=getAllFile(filePath);
        for (File file :list) {
            System.out.println(file.getPath()+"       "+file.getName());
        }
    }
}
src/main/java/com/whyc/mapper/StationInfoMapper.java
@@ -5,4 +5,6 @@
public interface StationInfoMapper extends CustomMapper<StationInfo>{
    //查询出最大的台站id
    int selectMaxId();
    //根据机房名称当前机房的机房id
    int selectIdByName(String stationName);
}
src/main/java/com/whyc/service/StationInfoService.java
@@ -2,15 +2,19 @@
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.whyc.dto.FileOpreate;
import com.whyc.dto.Response;
import com.whyc.dto.XmlFileOpreate;
import com.whyc.mapper.FileInfoMapper;
import com.whyc.mapper.StationInfoMapper;
import com.whyc.pojo.FileInfo;
import com.whyc.pojo.StationInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.io.File;
import java.util.List;
@Service
public class StationInfoService {
@@ -60,21 +64,68 @@
    @Transactional
    public Response addFileInStation(String stationName,String filePath) {
        File file=new File(filePath);
        //1.查询出最大的台站id和最大文件id
        boolean flag=true;
        //1.查询出最大的台站id(只有机房下添加了文件才会生成机房id)和最大文件id
        int stationIdMax=mapper.selectMaxId();
        int fileIdMax=infoMapper.selectMaxId();
        if(file.exists()){
            //2.给台站赋予stationId
            if(file.isFile()){
                //2.解析文件并补全文件id
                FileInfo fileInfo=XmlFileOpreate.readXml(filePath);
                fileInfo.setFileUrl(file.getPath());
                fileInfo.setFileName(file.getName());
                //4.将单文件的数据存入数据库
                insertFileInDataBase(stationName,stationIdMax,fileIdMax,fileInfo);
            }else{
                //3.如果是文件夹:获取文件夹下所有的文件
                List<File> allFile= FileOpreate.getAllFile(filePath);
                //4.将文件路径下的所有文件解析并存入数据库
                insertAllFileInDataBase(stationName,stationIdMax,fileIdMax,allFile);
            }
        }else{
            flag=false;
        }
        return new Response().set(1,flag,flag?"台站下添加文件成功":"台站下添加文件失败");
    }
    //4.将文件路径下的所有文件解析并存入数据库
    private void insertAllFileInDataBase(String stationName, int stationIdMax, int fileIdMax, List<File> allFile) {
        if(allFile!=null&&allFile.size()>0){
            for (int i=0;i< allFile.size();i++){
                File file=allFile.get(i);
                //2.解析文件并补全文件id
                FileInfo fileInfo=XmlFileOpreate.readXml(file.getPath());
                fileInfo.setFileUrl(file.getPath());
                fileInfo.setFileName(file.getName());
                //4.将单文件的数据存入数据库
                insertFileInDataBase(stationName,stationIdMax,fileIdMax+i,fileInfo);
            }
        }
    }
    //4.将单文件的数据存入数据库
    private void insertFileInDataBase(String stationName,int stationIdMax,int fileIdMax, FileInfo fileInfo) {
        int count=0;
        int stationId=0;
        if(fileInfo!=null){
            //查询站点的机房是否存在stationId
            QueryWrapper wrapper=new QueryWrapper();
            stationId=mapper.selectIdByName(stationName);
            if(stationId!=0){
                fileInfo.setStationId(String.valueOf(stationId));
            }else{
                fileInfo.setStationId(String.valueOf(stationIdMax+1));
            }
            fileInfo.setFileId(String.valueOf(fileIdMax+1));
            count=infoMapper.insert(fileInfo);
        }
        if(count>0){
            if(stationId==0){
                //操作成功给台站赋予stationId
            UpdateWrapper uwrapper=new UpdateWrapper();
            uwrapper.set("station_id",stationIdMax+1);
                uwrapper.eq("station_name",stationName);
            mapper.update(null,uwrapper);
            if(file.isFile()){
                //3.解析文件
            }else{
            }
        }
        return new Response().set(1);
    }
}
src/main/resources/mapper/FileInfoMapper.xml
@@ -4,6 +4,6 @@
    <select id="selectMaxId" resultType="java.lang.Integer">
        select max(file_id) from db_res_meter.tb_station_info limit 1
        select ifnull(max(file_id),"10001") from db_res_meter.tb_file_info limit 1
    </select>
</mapper>
src/main/resources/mapper/StationInfoMapper.xml
@@ -4,6 +4,9 @@
    <select id="selectMaxId" resultType="java.lang.Integer">
        select max(station_id) from db_res_meter.tb_station_info limit 1
        select ifnull(max(station_id),"400000001") from db_res_meter.tb_station_info limit 1
    </select>
    <select id="selectIdByName" resultType="java.lang.Integer">
        select ifnull(station_id,0) from db_res_meter.tb_station_info where station_name=#{stationName} limit 1
    </select>
</mapper>