From 5830dcbb8328e6f76913ec73871f950c64a49d04 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E7=A3=8A?= <45566618@qq.com> Date: Sat, 25 May 2024 17:11:56 +0800 Subject: [PATCH] =?UTF-8?q?SFTP=E4=B8=8A=E4=BC=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../zyJxdg/controller/ZyJxdgController.java | 61 +++++++---- .../modules/zyk/service/IZykService.java | 7 +- .../zyk/service/impl/ZykServiceImpl.java | 103 ++++++++++++++---- .../modules/zyk/utils/FileHandleUtil.java | 85 +++++++++------ 4 files changed, 170 insertions(+), 86 deletions(-) diff --git a/jeecg-module-main/src/main/java/org/jeecg/modules/kc/zyJxdg/controller/ZyJxdgController.java b/jeecg-module-main/src/main/java/org/jeecg/modules/kc/zyJxdg/controller/ZyJxdgController.java index bedf7a1f..122a1e2f 100644 --- a/jeecg-module-main/src/main/java/org/jeecg/modules/kc/zyJxdg/controller/ZyJxdgController.java +++ b/jeecg-module-main/src/main/java/org/jeecg/modules/kc/zyJxdg/controller/ZyJxdgController.java @@ -317,36 +317,49 @@ public class ZyJxdgController extends JeecgController { if(StringUtils.equals("pdf",nameLast)){ zyJxdg.setPdfPath(zyJxdg.getFilePath()); }else{ - Global global = SpringContextHolder.getBean(Global.class); - FileUtil.mkdir(global.getContractDickPath()); - String dd = DateUtils.formatDate(new Date(),"yyyyMMddHHmmss"); -// String docPath = upLoadPath+ File.separator+ zyJxdg.getFilePath(); - String docPath = zyJxdg.getFilePath(); - String namePath = dd + ".pdf"; - String pdfPath = global.getContractDickPath() + namePath; - Map map = zykService.downloadRemoteFile(docPath); - PDFUtil.office2PDF(map.get("data"),pdfPath); - zyJxdg.setPdfPath("contract/"+namePath); +// Global global = SpringContextHolder.getBean(Global.class); +// FileUtil.mkdir(global.getContractDickPath()); +// String dd = DateUtils.formatDate(new Date(),"yyyyMMddHHmmss"); +//// String docPath = upLoadPath+ File.separator+ zyJxdg.getFilePath(); +// String docPath = zyJxdg.getFilePath(); +// String namePath = dd + ".pdf"; +// String pdfPath = global.getContractDickPath() + namePath; +// Map map = zykService.downloadRemoteFile(docPath); +// PDFUtil.office2PDF(map.get("data"),pdfPath); +// zyJxdg.setPdfPath("contract/"+namePath); + + ZykInfo zykInfo = new ZykInfo(); + zykInfo.setBizId(zyJxdg.getId()); + zykInfo.setBizTable("zy_jxdg"); + zykInfo.setWjlx(WjlxEnum.JXDG.getType()); + zykInfo.setRwbh(zyJxdg.getRwbh()); + zykInfo.setFileName(zyJxdg.getFilePath()); + Map map = zykService.saveToZykJxdg(zykInfo); + String fileName = map.get("data").toString(); + String pdfName = map.get("pdfData").toString(); + zyJxdg.setFilePath(fileName); + zyJxdg.setPdfPath(pdfName); + } }else{ zyJxdg.setPdfPath(null); } //--------上传ftp工具--------------- // Map saveToZyk(ZykInfo zykInfo); - if(StringUtils.isNotEmpty(zyJxdg.getFilePath())){ - ZykInfo zykInfo = new ZykInfo(); - zykInfo.setBizId(zyJxdg.getId()); - zykInfo.setBizTable("zy_jxdg"); - zykInfo.setWjlx(WjlxEnum.JXDG.getType()); - zykInfo.setRwbh(zyJxdg.getRwbh()); - zykInfo.setFileName(zyJxdg.getFilePath()); - zykInfo.setPdfName(zyJxdg.getPdfPath()); - Map map = zykService.saveToZyk(zykInfo); - String fileName = map.get("data"); - String pdfName = map.get("pdfData"); - zyJxdg.setFilePath(fileName); - zyJxdg.setPdfPath(pdfName); - } +// if(StringUtils.isNotEmpty(zyJxdg.getFilePath())){ +// ZykInfo zykInfo = new ZykInfo(); +// zykInfo.setBizId(zyJxdg.getId()); +// zykInfo.setBizTable("zy_jxdg"); +// zykInfo.setWjlx(WjlxEnum.JXDG.getType()); +// zykInfo.setRwbh(zyJxdg.getRwbh()); +// zykInfo.setFileName(zyJxdg.getFilePath()); +// zykInfo.setPdfName(zyJxdg.getPdfPath()); +// Map map = zykService.saveToZyk(zykInfo); +// String fileName = map.get("data"); +// String pdfName = map.get("pdfData"); +// zyJxdg.setFilePath(fileName); +// zyJxdg.setPdfPath(pdfName); +// } //--------上传ftp工具--------------- diff --git a/jeecg-module-main/src/main/java/org/jeecg/modules/zyk/service/IZykService.java b/jeecg-module-main/src/main/java/org/jeecg/modules/zyk/service/IZykService.java index e9f45e55..513cae70 100644 --- a/jeecg-module-main/src/main/java/org/jeecg/modules/zyk/service/IZykService.java +++ b/jeecg-module-main/src/main/java/org/jeecg/modules/zyk/service/IZykService.java @@ -31,7 +31,7 @@ public interface IZykService extends IService { * @param filePath * @return 下载结果 */ - Map downloadRemoteFile(String filePath); + Map downloadRemoteFile(String filePath); /** * 下载远端文件流(含接口) @@ -44,8 +44,9 @@ public interface IZykService extends IService { * @param zykInfo * @return 上传结果 */ - Map saveToZyk(ZykInfo zykInfo); - Map uploadFileToSftp(String filePath); + Map saveToZyk(ZykInfo zykInfo); + Map saveToZykJxdg(ZykInfo zykInfo); + Map uploadFileToSftp(Map map,String filePath); /** * 删除资源库(接口) diff --git a/jeecg-module-main/src/main/java/org/jeecg/modules/zyk/service/impl/ZykServiceImpl.java b/jeecg-module-main/src/main/java/org/jeecg/modules/zyk/service/impl/ZykServiceImpl.java index 651d9b47..07914da4 100644 --- a/jeecg-module-main/src/main/java/org/jeecg/modules/zyk/service/impl/ZykServiceImpl.java +++ b/jeecg-module-main/src/main/java/org/jeecg/modules/zyk/service/impl/ZykServiceImpl.java @@ -5,9 +5,13 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.apache.shiro.SecurityUtils; import org.jeecg.common.system.vo.LoginUser; +import org.jeecg.common.util.DateUtils; +import org.jeecg.common.util.SpringContextHolder; import org.jeecg.common.util.text.StringUtils; import org.jeecg.modules.kc.ktgl.entity.KcKechengbiao; import org.jeecg.modules.kc.ktgl.service.IKcKechengbiaoService; +import org.jeecg.modules.tools.Global; +import org.jeecg.modules.tools.pdf.PDFUtil; import org.jeecg.modules.zyk.entity.ZykInfo; import org.jeecg.modules.zyk.mapper.ZykMapper; import org.jeecg.modules.zyk.service.IZykService; @@ -52,16 +56,16 @@ public class ZykServiceImpl extends ServiceImpl implements I @Override public String saveInfo(ZykInfo zykInfo){ // Map map = fileHandleUtil.uploadFile(zykInfo); - Map map = fileHandleUtil.moveFiles(zykInfo); + Map map = fileHandleUtil.moveFiles(null,zykInfo); if(!map.get("code").equals("0")){ - return map.get("msg"); + return map.get("msg").toString(); } - if(!StringUtils.isEmpty(map.get("data"))){ - String fileName = map.get("data"); + if(!StringUtils.isEmpty(map.get("data").toString())){ + String fileName = map.get("data").toString(); zykInfo.setFileName(fileName); } - if(!StringUtils.isEmpty(map.get("pdfData"))){ - String pdfName = map.get("pdfData"); + if(!StringUtils.isEmpty(map.get("pdfData").toString())){ + String pdfName = map.get("pdfData").toString(); zykInfo.setPdfName(pdfName); } LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal(); @@ -76,16 +80,16 @@ public class ZykServiceImpl extends ServiceImpl implements I @Override public String modifyInfo(ZykInfo zykInfo){ // Map map = fileHandleUtil.uploadFile(zykInfo); - Map map = fileHandleUtil.moveFiles(zykInfo); + Map map = fileHandleUtil.moveFiles(null,zykInfo); if(!map.get("code").equals("0")){ - return map.get("msg"); + return map.get("msg").toString(); } - if(!StringUtils.isEmpty(map.get("data"))){ - String fileName = map.get("data"); + if(!StringUtils.isEmpty(map.get("data").toString())){ + String fileName = map.get("data").toString(); zykInfo.setFileName(fileName); } - if(!StringUtils.isEmpty(map.get("pdfData"))){ - String pdfName = map.get("pdfData"); + if(!StringUtils.isEmpty(map.get("pdfData").toString())){ + String pdfName = map.get("pdfData").toString(); zykInfo.setPdfName(pdfName); } LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal(); @@ -142,8 +146,8 @@ public class ZykServiceImpl extends ServiceImpl implements I * @return 下载结果 */ @Override - public Map downloadRemoteFile(String filePath){ - Map map = new HashMap(); + public Map downloadRemoteFile(String filePath){ + Map map = new HashMap(); map.put("code","0"); if(filePath == null || filePath.equals("")){ map.put("code","1"); @@ -162,11 +166,12 @@ public class ZykServiceImpl extends ServiceImpl implements I map.put("code","1"); map.put("msg","文件不存在!"); } - Map downloadMap = fileHandleUtil.download(df[0],df[1]); + Map downloadMap = fileHandleUtil.download(null,df[0],df[1]); if(!downloadMap.get("code").equals("0")){ return downloadMap; } map.put("data",downloadMap.get("fileName")); + map.put("sftp",downloadMap.get("sftp")); return map; } @@ -195,7 +200,7 @@ public class ZykServiceImpl extends ServiceImpl implements I * @return 上传结果 */ @Override - public Map saveToZyk(ZykInfo zykInfo){ + public Map saveToZyk(ZykInfo zykInfo){ KcKechengbiao kcb = new KcKechengbiao(); kcb.setRwbh(zykInfo.getRwbh()); kcb = kcKechengbiaoService.getKcbhByRwbh(kcb); @@ -203,17 +208,67 @@ public class ZykServiceImpl extends ServiceImpl implements I zykInfo.setKkdw(kcb.getKkdw()); zykInfo.setKcmc(kcb.getKcmc()); zykInfo.setSkjs(kcb.getSkjs()); -// Map map = fileHandleUtil.uploadFile(zykInfo); - Map map = fileHandleUtil.moveFiles(zykInfo); +// Map map = fileHandleUtil.uploadFile(zykInfo); + Map map = fileHandleUtil.moveFiles(null,zykInfo); if(!map.get("code").equals("0")){ return map; } - if(!StringUtils.isEmpty(map.get("data"))){ - String fileName = map.get("data"); + if(!StringUtils.isEmpty(map.get("data").toString())){ + String fileName = map.get("data").toString(); zykInfo.setFileName(fileName); } - if(!StringUtils.isEmpty(map.get("pdfData"))){ - String pdfName = map.get("pdfData"); + if(!StringUtils.isEmpty(map.get("pdfData").toString())){ + String pdfName = map.get("pdfData").toString(); + zykInfo.setPdfName(pdfName); + } + LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + zykInfo.setCreateBy(user.getUsername()); + zykInfo.setCreateTime(new Date()); + Long id = new DefaultIdentifierGenerator().nextId(new ZykInfo()); + zykInfo.setId(id.toString()); + zykMapper.addInfo(zykInfo); + return map; + } + + /** + * 更新到资源库-教学大纲(接口) + * @param zykInfo + * @return 上传结果 + */ + @Override + public Map saveToZykJxdg(ZykInfo zykInfo){ + KcKechengbiao kcb = new KcKechengbiao(); + kcb.setRwbh(zykInfo.getRwbh()); + kcb = kcKechengbiaoService.getKcbhByRwbh(kcb); + zykInfo.setXqxn(kcb.getXqxn()); + zykInfo.setKkdw(kcb.getKkdw()); + zykInfo.setKcmc(kcb.getKcmc()); + zykInfo.setSkjs(kcb.getSkjs()); + Map downloadMap = downloadRemoteFile(zykInfo.getFileName()); + Global global = SpringContextHolder.getBean(Global.class); + String dd = DateUtils.formatDate(new Date(),"yyyyMMddHHmmss"); + String namePath = dd + ".pdf"; + String pdfPath = global.getContractDickPath() + namePath; + if(!downloadMap.get("code").equals("0")){ + return downloadMap; + } + PDFUtil.office2PDF(downloadMap.get("data").toString(),pdfPath); + Map uploadMap = uploadFileToSftp(downloadMap,"contract/"+namePath); + if(!uploadMap.get("code").equals("0")){ + return uploadMap; + } + zykInfo.setPdfName(uploadMap.get("data").toString()); + + Map map = fileHandleUtil.moveFiles(downloadMap,zykInfo); + if(!map.get("code").equals("0")){ + return map; + } + if(!StringUtils.isEmpty(map.get("data").toString())){ + String fileName = map.get("data").toString(); + zykInfo.setFileName(fileName); + } + if(!StringUtils.isEmpty(map.get("pdfData").toString())){ + String pdfName = map.get("pdfData").toString(); zykInfo.setPdfName(pdfName); } LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal(); @@ -231,8 +286,8 @@ public class ZykServiceImpl extends ServiceImpl implements I * @return 上传结果 */ @Override - public Map uploadFileToSftp(String filePath){ - Map map = fileHandleUtil.uploadFileToSftp(filePath); + public Map uploadFileToSftp(Map downloadMap,String filePath){ + Map map = fileHandleUtil.uploadFileToSftp(downloadMap,filePath); if(!map.get("code").equals("0")){ return map; } diff --git a/jeecg-module-main/src/main/java/org/jeecg/modules/zyk/utils/FileHandleUtil.java b/jeecg-module-main/src/main/java/org/jeecg/modules/zyk/utils/FileHandleUtil.java index dafee4c4..21d233dd 100644 --- a/jeecg-module-main/src/main/java/org/jeecg/modules/zyk/utils/FileHandleUtil.java +++ b/jeecg-module-main/src/main/java/org/jeecg/modules/zyk/utils/FileHandleUtil.java @@ -1,5 +1,6 @@ package org.jeecg.modules.zyk.utils; +import com.jcraft.jsch.ChannelSftp; import org.apache.commons.compress.utils.Lists; import org.jeecg.common.util.SFTPUtil; import org.jeecg.common.util.text.StringUtils; @@ -26,24 +27,24 @@ public class FileHandleUtil { @Value(value = "${jeecg.path.webapp}") private String downloadpath; - public Map uploadFile(ZykInfo zykInfo){ - Map map = new HashMap(); + public Map uploadFile(ZykInfo zykInfo){ + Map map = new HashMap(); map.put("code","0"); - Map directoryMap = getDirectory(zykInfo); + Map directoryMap = getDirectory(zykInfo); if(!directoryMap.get("code").equals("0")){ return directoryMap; } //资源库文件路径 - String directory = directoryMap.get("directory"); + String directory = directoryMap.get("directory").toString(); if(!StringUtils.isEmpty(zykInfo.getFileName())) { //源文件路径 - Map fileNameMap = getFileName(zykInfo); + Map fileNameMap = getFileName(zykInfo); if(!fileNameMap.get("code").equals("0")){ return fileNameMap; } //上传文件 - Map uploadMap = SFTPUtil.upload(sftpConfig,true,directory,fileNameMap.get("filePath"),fileNameMap.get("fileName")); + Map uploadMap = SFTPUtil.upload(null,sftpConfig,true,directory,fileNameMap.get("filePath").toString(),fileNameMap.get("fileName").toString()); if(!uploadMap.get("code").equals("0")){ return uploadMap; } @@ -52,12 +53,12 @@ public class FileHandleUtil { if(!StringUtils.isEmpty(zykInfo.getPdfName())) { //源文件路径 - Map fileNameMap = getPdfName(zykInfo); + Map fileNameMap = getPdfName(zykInfo); if(!fileNameMap.get("code").equals("0")){ return fileNameMap; } //上传文件 - Map uploadMap = SFTPUtil.upload(sftpConfig,true,directory,fileNameMap.get("filePath"),fileNameMap.get("pdfName")); + Map uploadMap = SFTPUtil.upload(null,sftpConfig,true,directory,fileNameMap.get("filePath").toString(),fileNameMap.get("pdfName").toString()); if(!uploadMap.get("code").equals("0")){ return uploadMap; } @@ -66,23 +67,22 @@ public class FileHandleUtil { return map; } - public Map uploadFileToSftp(String filePath){ - Map map = new HashMap(); + public Map uploadFileToSftp(Map sftpMap, String filePath){ + Map map = new HashMap(); map.put("code","0"); if(!StringUtils.isEmpty(filePath)) { //源文件路径 - Map fileNameMap = getFileName(filePath); + Map fileNameMap = getFileName(filePath); if(!fileNameMap.get("code").equals("0")){ return fileNameMap; } //上传文件 - Map uploadMap = SFTPUtil.upload(sftpConfig,false,"temp/",fileNameMap.get("filePath"),fileNameMap.get("fileName")); + Map uploadMap = SFTPUtil.upload((ChannelSftp)sftpMap.get("sftp"),sftpConfig,false,"temp/",fileNameMap.get("filePath").toString(),fileNameMap.get("fileName").toString()); if(!uploadMap.get("code").equals("0")){ return uploadMap; } map.put("data",uploadMap.get("data")); } - return map; } @@ -96,28 +96,28 @@ public class FileHandleUtil { return ss; } - public Map download(String directory, String downloadFile){ - return SFTPUtil.download(sftpConfig,directory,downloadFile,getDownloadPath("temp")); + public Map download(ChannelSftp sftp, String directory, String downloadFile){ + return SFTPUtil.download(sftp,sftpConfig,directory,downloadFile,getDownloadPath("temp")); } public void downloadRes(String directory, String downloadFile,HttpServletResponse response) throws Exception{ SFTPUtil.writeFileToRes(sftpConfig,downloadFile,response); } - public Map moveFile(ZykInfo zykInfo){ - Map map = new HashMap(); + public Map moveFile(ZykInfo zykInfo){ + Map map = new HashMap(); map.put("code","0"); - Map directoryMap = getDirectory(zykInfo); + Map directoryMap = getDirectory(zykInfo); if(!directoryMap.get("code").equals("0")){ return directoryMap; } //资源库文件路径 - String directory = directoryMap.get("directory"); + String directory = directoryMap.get("directory").toString(); if(!StringUtils.isEmpty(zykInfo.getFileName())) { //源文件路径 String newname = getName(zykInfo,false); - Map uploadMap = SFTPUtil.moveFile(sftpConfig,zykInfo.getFileName(),directory,newname); + Map uploadMap = SFTPUtil.moveFile(sftpConfig,zykInfo.getFileName(),directory,newname); if(!uploadMap.get("code").equals("0")){ return uploadMap; } @@ -126,7 +126,7 @@ public class FileHandleUtil { if(!StringUtils.isEmpty(zykInfo.getPdfName())) { String newname = getName(zykInfo,true); - Map uploadMap = SFTPUtil.moveFile(sftpConfig,zykInfo.getFileName(),directory,newname); + Map uploadMap = SFTPUtil.moveFile(sftpConfig,zykInfo.getFileName(),directory,newname); if(!uploadMap.get("code").equals("0")){ return uploadMap; } @@ -135,19 +135,24 @@ public class FileHandleUtil { return map; } - public Map moveFiles(ZykInfo zykInfo){ - Map map = new HashMap(); + public Map moveFiles(Map sftpMap, ZykInfo zykInfo){ + Map map = new HashMap(); map.put("code","0"); - Map directoryMap = getDirectory(zykInfo); + Map directoryMap = getDirectory(zykInfo); if(!directoryMap.get("code").equals("0")){ return directoryMap; } //资源库文件路径 - String directory = directoryMap.get("directory"); + String directory = directoryMap.get("directory").toString(); if(!StringUtils.isEmpty(zykInfo.getFileName())) { List list = getPathsAndNames(zykInfo,false); - Map uploadMap = SFTPUtil.moveFiles(sftpConfig,directory,list); + Map uploadMap = null; + if(sftpMap!=null){ + uploadMap = SFTPUtil.moveFiles((ChannelSftp)sftpMap.get("sftp"),sftpConfig,directory,list); + }else{ + uploadMap = SFTPUtil.moveFiles(sftpConfig,directory,list); + } if(!uploadMap.get("code").equals("0")){ return uploadMap; } @@ -155,12 +160,20 @@ public class FileHandleUtil { } if(!StringUtils.isEmpty(zykInfo.getPdfName())) { List list = getPathsAndNames(zykInfo,true); - Map uploadMap = SFTPUtil.moveFiles(sftpConfig,directory,list); + Map uploadMap = null; + if(sftpMap!=null){ + uploadMap = SFTPUtil.moveFiles((ChannelSftp)sftpMap.get("sftp"),sftpConfig,directory,list); + }else{ + uploadMap = SFTPUtil.moveFiles(sftpConfig,directory,list); + } if(!uploadMap.get("code").equals("0")){ return uploadMap; } map.put("pdfData",uploadMap.get("data")); } + if(sftpMap!=null){ + SFTPUtil.disConnect((ChannelSftp)sftpMap.get("sftp")); + } return map; } @@ -173,8 +186,8 @@ public class FileHandleUtil { * @param zykInfo * @return */ - private Map getDirectory(ZykInfo zykInfo){ - Map map = new HashMap(); + private Map getDirectory(ZykInfo zykInfo){ + Map map = new HashMap(); map.put("code","0"); StringBuffer sb = new StringBuffer(); if(StringUtils.isEmpty(zykInfo.getXqxn())){ @@ -221,8 +234,8 @@ public class FileHandleUtil { * @param zykInfo * @return */ - private Map getFileName(ZykInfo zykInfo){ - Map map = new HashMap(); + private Map getFileName(ZykInfo zykInfo){ + Map map = new HashMap(); map.put("code","0"); String uploadFileName = getRealFileFullPath(zykInfo.getFileName()); if(StringUtils.isEmpty(uploadFileName)){ @@ -277,8 +290,8 @@ public class FileHandleUtil { * @param fileNamePath * @return */ - private Map getFileName(String fileNamePath){ - Map map = new HashMap(); + private Map getFileName(String fileNamePath){ + Map map = new HashMap(); map.put("code","0"); String uploadFileName = getRealFileFullPath(fileNamePath); if(StringUtils.isEmpty(uploadFileName)){ @@ -376,8 +389,8 @@ public class FileHandleUtil { * @param zykInfo * @return */ - private Map getPdfName(ZykInfo zykInfo){ - Map map = new HashMap(); + private Map getPdfName(ZykInfo zykInfo){ + Map map = new HashMap(); map.put("code","0"); String uploadFileName = getRealFileFullPath(zykInfo.getPdfName()); if(StringUtils.isEmpty(uploadFileName)){ @@ -466,4 +479,6 @@ public class FileHandleUtil { return filePath; } + + }