diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/dataset/DatasetVersionController.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/dataset/DatasetVersionController.java index 6caf3600..3857c25e 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/dataset/DatasetVersionController.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/dataset/DatasetVersionController.java @@ -62,7 +62,7 @@ public class DatasetVersionController { * @return 匹配的数据集版本记录列表 */ @GetMapping("/versions") - @ApiOperation("通过数据集id和version查询版本列表") + @ApiOperation("通过数据集id和version查询版本文件列表") public AjaxResult queryByDatasetIdAndVersion(@RequestParam("dataset_id") Integer datasetId, @RequestParam("version") String version) { return AjaxResult.success(this.datasetVersionService.queryByDatasetIdAndVersion(datasetId, version)); diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/icon/AssetIconController.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/icon/AssetIconController.java index 2115a005..ebb1d677 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/icon/AssetIconController.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/icon/AssetIconController.java @@ -41,7 +41,7 @@ public class AssetIconController { @ApiOperation("分页查询") public AjaxResult queryByPage(AssetIcon assetIcon, int page, int size) { PageRequest pageRequest = PageRequest.of(page,size); - return AjaxResult.success(this.assetIconService.queryByPage(assetIcon, pageRequest)); + return AjaxResult.success(this.assetIconService.queryByPage(assetIcon, pageRequest)); } /** @@ -56,6 +56,30 @@ public class AssetIconController { return AjaxResult.success(this.assetIconService.queryById(id)); } + /** + * 通过主键查询单条数据 + * + * @param categoryId 主键 + * @return 单条数据 + */ + @GetMapping("category/{id}") + @ApiOperation("根据图标类别id查询") + public AjaxResult queryByCategoryId(@PathVariable("id") Integer categoryId) { + return AjaxResult.success(this.assetIconService.queryByCategoryId(categoryId)); + } + + /** + * 按图标名字模糊查询 + * + * @param name 筛选条件 + * @return 查询结果 + */ + @GetMapping("name/{name}") + @ApiOperation("按名字模糊查询图标名字") + public AjaxResult queryByName(@PathVariable("name") String name) { + return AjaxResult.success(this.assetIconService.queryByName(name)); + } + /** * 新增数据 * @@ -75,7 +99,7 @@ public class AssetIconController { * @return 编辑结果 */ @PutMapping - @ApiOperation("更新") + @ApiOperation("更新图标") public AjaxResult edit(@RequestBody AssetIcon assetIcon) { return AjaxResult.success(this.assetIconService.update(assetIcon)); } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/image/ImageController.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/image/ImageController.java index 2cb22868..67f132f8 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/image/ImageController.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/image/ImageController.java @@ -126,6 +126,8 @@ public class ImageController { return AjaxResult.success(this.imageService.createImageFromLocal(imageName,imageTag,imageDescription)); } + + /** * 镜像上传 * @@ -133,7 +135,6 @@ public class ImageController { * @param files 文件 * @return 上传结果 */ - @PostMapping("/upload") @ApiOperation(value = "上传镜像文件", notes = "上传镜像tar包,返回存储路径") public AjaxResult uploadImageFiles(@RequestParam("files") MultipartFile[] files) throws Exception { diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/mapper/AssetIconDao.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/mapper/AssetIconDao.java index 4f6d8e9e..6e8fea20 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/mapper/AssetIconDao.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/mapper/AssetIconDao.java @@ -79,5 +79,10 @@ public interface AssetIconDao { */ int deleteById(Integer id); + List queryByName(String name); + + List queryByCategoryId(Integer categoryId); + + } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/AssetIconService.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/AssetIconService.java index 21a43b47..3dd35a39 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/AssetIconService.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/AssetIconService.java @@ -4,6 +4,8 @@ import com.ruoyi.platform.domain.AssetIcon; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; +import java.util.List; + /** * (AssetIcon)表服务接口 * @@ -55,4 +57,7 @@ public interface AssetIconService { String removeById(Integer id); + List queryByName(String name); + + List queryByCategoryId(Integer categoryId); } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/AssetIconServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/AssetIconServiceImpl.java index f342c243..2ba4d300 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/AssetIconServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/AssetIconServiceImpl.java @@ -14,6 +14,7 @@ import org.springframework.data.domain.PageRequest; import javax.annotation.Resource; import java.util.Date; +import java.util.List; /** * (AssetIcon)表服务实现类 @@ -114,4 +115,14 @@ public class AssetIconServiceImpl implements AssetIconService { assetIcon.setState(0); return this.assetIconDao.update(assetIcon)>0?"删除成功":"删除失败"; } + + @Override + public List queryByName(String name) { + return this.assetIconDao.queryByName(name); + } + + @Override + public List queryByCategoryId(Integer categoryId) { + return this.assetIconDao.queryByCategoryId(categoryId); + } } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ImageServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ImageServiceImpl.java index 1d3c4ce4..3a05b5f4 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ImageServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ImageServiceImpl.java @@ -183,6 +183,8 @@ public class ImageServiceImpl implements ImageService { // Map results = new HashMap(); // // // 验证模型是否存在 + + // Models models = this.modelsDao.queryById(id); // if (models == null) { // throw new Exception("未找到模型记录"); diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/SFTPUtil.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/SFTPUtil.java new file mode 100644 index 00000000..62145119 --- /dev/null +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/SFTPUtil.java @@ -0,0 +1,291 @@ +package com.ruoyi.platform.utils; + +import java.io.ByteArrayInputStream; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.UnsupportedEncodingException; +import java.util.Properties; +import java.util.Vector; + +import org.apache.commons.io.IOUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import com.jcraft.jsch.Channel; +import com.jcraft.jsch.ChannelSftp; +import com.jcraft.jsch.JSch; +import com.jcraft.jsch.JSchException; +import com.jcraft.jsch.Session; +import com.jcraft.jsch.SftpException; + +/** + * + * @ClassName: SFTPUtil + * @Description: sftp连接工具类 + * @date 2017年5月22日 下午11:17:21 + * @version 1.0.0 + */ +public class SFTPUtil { + private transient Logger log = LoggerFactory.getLogger(this.getClass()); + + private ChannelSftp sftp; + + private Session session; + /** FTP 登录用户名*/ + private String username; + /** FTP 登录密码*/ + private String password; + /** 私钥 */ + private String privateKey; + /** FTP 服务器地址IP地址*/ + private String host; + /** FTP 端口*/ + private int port; + + + /** + * 构造基于密码认证的sftp对象 + * @param userName + * @param password + * @param host + * @param port + */ + public SFTPUtil(String username, String password, String host, int port) { + this.username = username; + this.password = password; + this.host = host; + this.port = port; + } + + /** + * 构造基于秘钥认证的sftp对象 + * @param userName + * @param host + * @param port + * @param privateKey + */ + public SFTPUtil(String username, String host, int port, String privateKey) { + this.username = username; + this.host = host; + this.port = port; + this.privateKey = privateKey; + } + + public SFTPUtil(){} + + /** + * 连接sftp服务器 + * + * @throws Exception + */ + public void login(){ + try { + JSch jsch = new JSch(); + if (privateKey != null) { + jsch.addIdentity(privateKey);// 设置私钥 + log.info("sftp connect,path of private key file:{}" , privateKey); + } + log.info("sftp connect by host:{} username:{}",host,username); + + session = jsch.getSession(username, host, port); + log.info("Session is build"); + if (password != null) { + session.setPassword(password); + } + Properties config = new Properties(); + config.put("StrictHostKeyChecking", "no"); + + session.setConfig(config); + session.connect(); + log.info("Session is connected"); + + Channel channel = session.openChannel("sftp"); + channel.connect(); + log.info("channel is connected"); + + sftp = (ChannelSftp) channel; + log.info(String.format("sftp server host:[%s] port:[%s] is connect successfull", host, port)); + } catch (JSchException e) { + log.error("Cannot connect to specified sftp server : {}:{} \n Exception message is: {}", new Object[]{host, port, e.getMessage()}); + } + } + + /** + * 关闭连接 server + */ + public void logout(){ + if (sftp != null) { + if (sftp.isConnected()) { + sftp.disconnect(); + log.info("sftp is closed already"); + } + } + if (session != null) { + if (session.isConnected()) { + session.disconnect(); + log.info("sshSession is closed already"); + } + } + } + + /** + * 将输入流的数据上传到sftp作为文件 + * + * @param directory + * 上传到该目录 + * @param sftpFileName + * sftp端文件名 + * @param in + * 输入流 + * @throws SftpException + * @throws Exception + */ + public void upload(String directory, String sftpFileName, InputStream input) throws SftpException{ + try { + sftp.cd(directory); + } catch (SftpException e) { + log.warn("directory is not exist"); + sftp.mkdir(directory); + sftp.cd(directory); + } + sftp.put(input, sftpFileName); + log.info("file:{} is upload successful" , sftpFileName); + } + + /** + * 上传单个文件 + * + * @param directory + * 上传到sftp目录 + * @param uploadFile + * 要上传的文件,包括路径 + * @throws FileNotFoundException + * @throws SftpException + * @throws Exception + */ + public void upload(String directory, String uploadFile) throws FileNotFoundException, SftpException{ + File file = new File(uploadFile); + upload(directory, file.getName(), new FileInputStream(file)); + } + + /** + * 将byte[]上传到sftp,作为文件。注意:从String生成byte[]是,要指定字符集。 + * + * @param directory + * 上传到sftp目录 + * @param sftpFileName + * 文件在sftp端的命名 + * @param byteArr + * 要上传的字节数组 + * @throws SftpException + * @throws Exception + */ + public void upload(String directory, String sftpFileName, byte[] byteArr) throws SftpException{ + upload(directory, sftpFileName, new ByteArrayInputStream(byteArr)); + } + + /** + * 将字符串按照指定的字符编码上传到sftp + * + * @param directory + * 上传到sftp目录 + * @param sftpFileName + * 文件在sftp端的命名 + * @param dataStr + * 待上传的数据 + * @param charsetName + * sftp上的文件,按该字符编码保存 + * @throws UnsupportedEncodingException + * @throws SftpException + * @throws Exception + */ + public void upload(String directory, String sftpFileName, String dataStr, String charsetName) throws UnsupportedEncodingException, SftpException{ + upload(directory, sftpFileName, new ByteArrayInputStream(dataStr.getBytes(charsetName))); + } + + /** + * 下载文件 + * + * @param directory + * 下载目录 + * @param downloadFile + * 下载的文件 + * @param saveFile + * 存在本地的路径 + * @throws SftpException + * @throws FileNotFoundException + * @throws Exception + */ + public void download(String directory, String downloadFile, String saveFile) throws SftpException, FileNotFoundException{ + if (directory != null && !"".equals(directory)) { + sftp.cd(directory); + } + File file = new File(saveFile); + sftp.get(downloadFile, new FileOutputStream(file)); + log.info("file:{} is download successful" , downloadFile); + } + /** + * 下载文件 + * @param directory 下载目录 + * @param downloadFile 下载的文件名 + * @return 字节数组 + * @throws SftpException + * @throws IOException + * @throws Exception + */ + public byte[] download(String directory, String downloadFile) throws SftpException, IOException{ + if (directory != null && !"".equals(directory)) { + sftp.cd(directory); + } + InputStream is = sftp.get(downloadFile); + + byte[] fileData = IOUtils.toByteArray(is); + + log.info("file:{} is download successful" , downloadFile); + return fileData; + } + + /** + * 删除文件 + * + * @param directory + * 要删除文件所在目录 + * @param deleteFile + * 要删除的文件 + * @throws SftpException + * @throws Exception + */ + public void delete(String directory, String deleteFile) throws SftpException{ + sftp.cd(directory); + sftp.rm(deleteFile); + } + + /** + * 列出目录下的文件 + * + * @param directory + * 要列出的目录 + * @param sftp + * @return + * @throws SftpException + */ + public Vector listFiles(String directory) throws SftpException { + return sftp.ls(directory); + } + + public static void main(String[] args) throws SftpException, IOException { + SFTPUtil sftp = new SFTPUtil("lanhuigu", "123456", "192.168.200.12", 22); + sftp.login(); + //byte[] buff = sftp.download("/opt", "start.sh"); + //System.out.println(Arrays.toString(buff)); + File file = new File("D:\\upload\\index.html"); + InputStream is = new FileInputStream(file); + + sftp.upload("/data/work", "test_sftp_upload.csv", is); + sftp.logout(); + } +} \ No newline at end of file diff --git a/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/AssetIconDaoMapper.xml b/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/AssetIconDaoMapper.xml index 42f36db8..89d9a82d 100644 --- a/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/AssetIconDaoMapper.xml +++ b/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/AssetIconDaoMapper.xml @@ -23,6 +23,26 @@ where id = #{id} and state = 1 + + + + +