| | |
| | | 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; |
| | |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | |
| | | import java.io.File; |
| | | import java.util.ArrayList; |
| | | import java.util.List; |
| | | |
| | | @Service |
| | |
| | | private BattgroupInfoMapper groupInfoMapper; |
| | | |
| | | @Autowired(required = false) |
| | | private BattgroupDataMapper dataMapper; |
| | | private BattGroupDataMapper dataMapper; |
| | | |
| | | @Autowired(required = false) |
| | | private FileParamMapper paramMapper; |
| | |
| | | } |
| | | //查询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; |
| | |
| | | s.setStationName(stationName); |
| | | int flag=mapper.insert(s); |
| | | bl=flag>0; |
| | | msg="台站添加成功"; |
| | | } |
| | | return new Response().set(1,bl,msg); |
| | | } |
| | |
| | | //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){ |
| | |
| | | fileInfo.setStationId(String.valueOf(stationId)); |
| | | }else{ |
| | | fileInfo.setStationId(String.valueOf(stationIdMax+1)); |
| | | stationId=stationIdMax+1; |
| | | } |
| | | fileInfo.setFileId(String.valueOf(fileIdMax+1)); |
| | | count=infoMapper.insert(fileInfo); |
| | | //判断文件已经添加过则不再重复添加 |
| | | int flag=judgeFile(stationId,fileInfo.getFileUrl()); |
| | | if(flag>0){ |
| | | return new FileInfo(); |
| | | }else{ |
| | | count=infoMapper.insert(fileInfo); |
| | | } |
| | | //将解析出来的文件信息插入数据库 |
| | | FileParam fparam=fileInfo.getFileParam(); |
| | | //去除groupinfo |
| | |
| | | for(int i=0;i<battgroupInfoList.size();i++){ |
| | | BattgroupInfo battgroupInfo=battgroupInfoList.get(i); |
| | | battgroupInfo.setBattgroupId(String.valueOf(battGroupId+1+i)); |
| | | battgroupInfo.setStationId(String.valueOf(stationIdMax+1)); |
| | | battgroupInfo.setStationId(String.valueOf(stationId)); |
| | | battgroupInfo.setFileId(String.valueOf(fileIdMax+1)); |
| | | battgroupInfo.setBattgroupNum(fparam.getGroupNum()); |
| | | int groupCount=groupInfoMapper.insert(battgroupInfo); |
| | |
| | | } |
| | | } |
| | | 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); |
| | | //操作成功给台站赋予stationId |
| | | UpdateWrapper uwrapper=new UpdateWrapper(); |
| | | uwrapper.set("station_id",stationId); |
| | | uwrapper.eq("station_name",stationName); |
| | | mapper.update(null,uwrapper); |
| | | } |
| | | return fileInfo; |
| | | } |
| | | //判断文件已经添加过则不再重复添加 |
| | | public int judgeFile(int stationId,String fileUrl){ |
| | | int flag=0; |
| | | QueryWrapper wrapper=new QueryWrapper(); |
| | | wrapper.eq("station_id",stationId); |
| | | wrapper.eq("file_url",fileUrl); |
| | | FileInfo fileInfo=infoMapper.selectOne(wrapper); |
| | | if(fileInfo!=null){ |
| | | flag=1; |
| | | } |
| | | return flag; |
| | | } |
| | | //编辑台站 |
| | | 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,"删除成功"); |
| | | } |
| | | } |
| | | } |
| | | |
| | | public StationInfo getByFileId(String fileId) { |
| | | return mapper.getByFileId(fileId); |
| | | } |
| | | } |