lxw
2022-10-11 c8fe7628d2d6a3a40d8e168c67b10b6e65415517
src/main/java/com/whyc/service/StationInfoService.java
@@ -1,5 +1,7 @@
package com.whyc.service;
import com.alibaba.druid.sql.visitor.functions.Isnull;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.whyc.dto.FileOpreate;
@@ -12,6 +14,7 @@
import org.springframework.transaction.annotation.Transactional;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
@Service
@@ -26,7 +29,7 @@
    private BattgroupInfoMapper groupInfoMapper;
    @Autowired(required = false)
    private BattgroupDataMapper dataMapper;
    private BattGroupDataMapper dataMapper;
    @Autowired(required = false)
    private FileParamMapper paramMapper;
@@ -54,7 +57,7 @@
        }
        //查询stationName是否存在
        QueryWrapper wrapper=new QueryWrapper();
        wrapper.like("station_name",stationName);
        wrapper.eq("station_name",stationName);
        int count=mapper.selectCount(wrapper);
        if(count>0){
            bl=false;
@@ -64,6 +67,7 @@
            s.setStationName(stationName);
            int flag=mapper.insert(s);
            bl=flag>0;
            msg="台站添加成功";
        }
        return new Response().set(1,bl,msg);
    }
@@ -75,44 +79,55 @@
        //1.查询出最大的台站id(只有机房下添加了文件才会生成机房id)和最大文件id
        int stationIdMax=mapper.selectMaxId();
        int fileIdMax=infoMapper.selectMaxId();
        List list=new ArrayList();
        if(file.exists()){
            if(file.isFile()){
                if(!filePath.contains(".xml")){
                    return new Response().set(1,false,"台站下添加文件失败,文件不是指定的xml文件");
                }
                //2.解析文件并补全文件id
                FileInfo fileInfo=XmlFileOpreate.readXml(filePath);
                fileInfo.setFileUrl(file.getPath());
                fileInfo.setFileName(file.getName());
                //4.将单文件的数据存入数据库
                insertFileInDataBase(stationName,stationIdMax,fileIdMax,fileInfo);
                FileInfo returnFileInfo=insertFileInDataBase(stationName,stationIdMax,fileIdMax,fileInfo);
                list.add(returnFileInfo);
            }else{
                //3.如果是文件夹:获取文件夹下所有的文件
                List<File> allFile= FileOpreate.getAllFile(filePath);
                //4.将文件路径下的所有文件解析并存入数据库
                insertAllFileInDataBase(stationName,stationIdMax,fileIdMax,allFile);
                list=insertAllFileInDataBase(stationName,stationIdMax,fileIdMax,allFile);
            }
        }else{
            flag=false;
        }
        return new Response().set(1,flag,flag?"台站下添加文件成功":"台站下添加文件失败");
        return new Response().setII(1,flag,list,flag?"台站下添加文件成功":"台站下添加文件失败");
    }
    //4.将文件路径下的所有文件解析并存入数据库
    private void insertAllFileInDataBase(String stationName, int stationIdMax, int fileIdMax, List<File> allFile) {
    private List insertAllFileInDataBase(String stationName, int stationIdMax, int fileIdMax, List<File> allFile) {
        List list=new ArrayList();
        if(allFile!=null&&allFile.size()>0){
            for (int i=0;i< allFile.size();i++){
                File file=allFile.get(i);
                if(!file.getName().contains(".xml")){
                    continue;
                }
                //2.解析文件并补全文件id
                FileInfo fileInfo=XmlFileOpreate.readXml(file.getPath());
                fileInfo.setFileUrl(file.getPath());
                fileInfo.setFileName(file.getName());
                //4.将单文件的数据存入数据库
                insertFileInDataBase(stationName,stationIdMax,fileIdMax+i,fileInfo);
                FileInfo returnFileInfo=insertFileInDataBase(stationName,stationIdMax,fileIdMax+i,fileInfo);
                list.add(returnFileInfo);
            }
        }
        return list;
    }
    //4.将单文件的数据存入数据库
    private void insertFileInDataBase(String stationName,int stationIdMax,int fileIdMax, FileInfo fileInfo) {
    private FileInfo insertFileInDataBase(String stationName,int stationIdMax,int fileIdMax, FileInfo fileInfo) {
        int count=0;
        int stationId=0;
        Integer stationId=0;
        //查询最大的电池组号
        int battGroupId=groupInfoMapper.selectMaxId();
        if(fileInfo!=null){
@@ -165,5 +180,109 @@
                mapper.update(null,uwrapper);
            }
        }
        return  fileInfo;
    }
    //编辑台站
    public Response updateStation(String stationName1, String stationName2, String stationName3, String updateName) {
        String stationName="";
        int stationFlag=0;
        if(stationName1!=null&&!stationName1.isEmpty()){
            stationName=stationName+stationName1;
            stationFlag=1;
        }
        if(stationName2!=null&&!stationName2.isEmpty()){
            stationName=stationName+"-"+stationName2;
            stationFlag=2;
        }
        if(stationName3!=null&&!stationName3.isEmpty()){
            stationName=stationName+"-"+stationName3;
            stationFlag=3;
        }
        int flag=0;
        if(stationFlag==1){
            //修改StationName1
            flag=mapper.updateStationName1(stationName1,updateName);
        }
        if(stationFlag==2){
            //修改StationName2
            flag=mapper.updateStationName2(stationName1,stationName2,updateName);
        }
        if(stationFlag==3){
            //修改StationName3
            flag=mapper.updateStationName3(stationName1,stationName2,stationName3,updateName);
        }
        return new Response().set(1,flag>0,"修改操作");
    }
    //删除台站
    @Transactional
    public Response deleteStation(String stationName1, String stationName2, String stationName3) {
        int stationFlag=0;
        if(stationName1!=null&&!stationName1.isEmpty()){
            stationFlag=1;
        }
        if(stationName2!=null&&!stationName2.isEmpty()){
            stationFlag=2;
        }
        if(stationName3!=null&&!stationName3.isEmpty()){
            stationFlag=3;
        }
        List<StationInfo> idStations=new ArrayList<>();
        if(stationFlag==1){
            //找出根节点是stationName1的所有机房id
            idStations=mapper.selectIdByName1(stationName1);
        }
        if(stationFlag==2){
            //找出根节点是stationName1,stationName2的所有机房id
            idStations=mapper.selectIdByName2(stationName1,stationName2);
        }
        if(stationFlag==3){
            //找出根节点是stationName1,stationName2,stationName3的所有机房id
           idStations=mapper.selectIdByName3(stationName1,stationName2,stationName3);
        }
        if(idStations!=null&&idStations.size()>0){
            for (StationInfo stationInfo:idStations) {
                String stationName=stationInfo.getStationName();
                Integer stationId=Integer.valueOf(stationInfo.getStationId());
                //3.删除所有文件数据
                dataMapper.deleteDataAndInfoByStationId(stationId);
                //4.删除所有文件参数
                paramMapper.deleteParamByStationId(stationId);
                //最终删除基站
                UpdateWrapper wrapper=new UpdateWrapper();
                wrapper.eq("station_id",stationId);
                wrapper.eq("station_name",stationName);
                mapper.delete(wrapper);
            }
            return new Response().set(1,true,"删除成功");
        }else{
            return new Response().set(1,false,"机房不存在");
        }
    }
    //移除台站下文件(单个文件)
    @Transactional
    public Response delFileFromStation(String stationName, String filePath) {
        //1.先查出机房的id
        Integer stationId=mapper.selectIdByName(stationName);
        if(stationId==null){
            return new Response().set(1,false,"机房不存在");
        }else if(stationId==0){
            return new Response().set(1,false,"机房下不存在文件");
        }else {
            //2.查出文件对应的文件id
            Integer fileId=infoMapper.selectFileId(stationId,filePath);
            if(fileId==null||fileId==0){
                return new Response().set(1,false,"文件不存在");
            }else{
                //3.删除fileid对应的数据(stationId,fileId)
                dataMapper.deleteDataAndInfo(stationId,fileId);
                //4.删除fileid对应的参数
                paramMapper.deleteParamByFileId(fileId);
                //5.删除机房下文件信息(stationId,fileId)
                infoMapper.deleteFileInStation(stationId,fileId);
                return  new Response().set(1,true,"删除成功");
            }
        }
    }
}