Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
B
baihang-report
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
data-spider
baihang-report
Commits
55279f2f
Commit
55279f2f
authored
Dec 03, 2021
by
陈宏杰
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
文件上传
parent
c558383e
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
218 additions
and
0 deletions
+218
-0
ManualToolController.java
...cn/quantgroup/report/controller/ManualToolController.java
+10
-0
BaiHangFileReportService.java
...roup/report/service/baihang/BaiHangFileReportService.java
+40
-0
SftpUtil.java
src/main/java/cn/quantgroup/report/utils/SftpUtil.java
+168
-0
No files found.
src/main/java/cn/quantgroup/report/controller/ManualToolController.java
View file @
55279f2f
...
...
@@ -185,4 +185,14 @@ public class ManualToolController {
}
}
@RequestMapping
(
"/fileToBaiHangFtp"
)
public
String
fileToBaiHangFtp
(
String
collectFileName
){
try
{
fileReportService
.
fileToBaiHangFtp
(
collectFileName
);
return
"SUCCESS"
;
}
catch
(
Exception
e
){
return
e
.
getMessage
();
}
}
}
src/main/java/cn/quantgroup/report/service/baihang/BaiHangFileReportService.java
View file @
55279f2f
...
...
@@ -16,6 +16,7 @@ import cn.quantgroup.report.service.baihang.response.FileUploadResponse;
import
cn.quantgroup.report.service.baihang.util.TuoMinUtils
;
import
cn.quantgroup.report.service.http.IHttpService
;
import
cn.quantgroup.report.utils.DateUtils
;
import
cn.quantgroup.report.utils.SftpUtil
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONObject
;
import
com.google.common.base.Stopwatch
;
...
...
@@ -81,6 +82,23 @@ public class BaiHangFileReportService {
@Autowired
private
RedisTemplate
<
String
,
String
>
redisTemplate
;
@Value
(
"${baiHang.ftp.username}"
)
private
String
baiHangFtpUsername
;
@Value
(
"${baiHang.ftp.password}"
)
private
String
baiHangFtpPassword
;
@Value
(
"${baiHang.ftp.host}"
)
private
String
baiHangFtpHost
;
@Value
(
"${baiHang.ftp.port}"
)
private
Integer
baiHangFtpPort
;
@Value
(
"${baiHang.ftp.dataDirectory}"
)
private
String
baiHangFtpDataDirectory
;
/**
* 创建报送文件 通常用于存量报送
...
...
@@ -782,4 +800,26 @@ public class BaiHangFileReportService {
return
fundNameBuffer
.
toString
();
}
@Async
public
void
fileToBaiHangFtp
(
String
collectFileName
)
throws
Exception
{
if
(
StringUtils
.
isBlank
(
collectFileName
))
{
return
;
}
File
collectFile
=
new
File
(
HOST_PATH
+
collectFileName
);
File
subFile
=
null
;
if
(
collectFile
.
exists
())
{
List
<
String
>
fileNameList
=
FileUtils
.
readLines
(
collectFile
,
"utf-8"
);
SftpUtil
sftp
=
new
SftpUtil
(
baiHangFtpUsername
,
baiHangFtpPassword
,
baiHangFtpHost
,
baiHangFtpPort
);
for
(
String
fileName
:
fileNameList
)
{
if
(
StringUtils
.
isNotBlank
(
fileName
))
{
subFile
=
new
File
(
HOST_PATH
+
fileName
);
if
(
subFile
.
exists
())
{
log
.
info
(
"开始上传文件 {} 到百行ftp服务器..."
,
fileName
);
SftpUtil
.
uploadFile
(
sftp
,
baiHangFtpDataDirectory
,
HOST_PATH
+
fileName
);
}
}
}
}
}
}
src/main/java/cn/quantgroup/report/utils/SftpUtil.java
0 → 100644
View file @
55279f2f
package
cn
.
quantgroup
.
report
.
utils
;
import
com.jcraft.jsch.*
;
import
org.apache.commons.io.IOUtils
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
java.io.*
;
import
java.util.Properties
;
import
java.util.Vector
;
public
class
SftpUtil
{
private
transient
Logger
log
=
LoggerFactory
.
getLogger
(
this
.
getClass
());
private
ChannelSftp
sftp
;
private
Session
session
;
/** SFTP 登录用户名*/
private
String
username
;
/** SFTP 登录密码*/
private
String
password
;
/** 私钥 */
private
String
privateKey
;
/** SFTP 服务器地址IP地址*/
private
String
host
;
/** SFTP 端口*/
private
int
port
;
/**
* 构造基于密码认证的sftp对象
*/
public
SftpUtil
(
String
username
,
String
password
,
String
host
,
int
port
)
{
this
.
username
=
username
;
this
.
password
=
password
;
this
.
host
=
host
;
this
.
port
=
port
;
}
/**
* 构造基于秘钥认证的sftp对象
*/
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服务器
*/
public
void
login
(){
try
{
JSch
jsch
=
new
JSch
();
if
(
privateKey
!=
null
)
{
// 设置私钥
jsch
.
addIdentity
(
privateKey
);
}
session
=
jsch
.
getSession
(
username
,
host
,
port
);
if
(
password
!=
null
)
{
session
.
setPassword
(
password
);
}
Properties
config
=
new
Properties
();
config
.
put
(
"StrictHostKeyChecking"
,
"no"
);
session
.
setConfig
(
config
);
session
.
connect
();
Channel
channel
=
session
.
openChannel
(
"sftp"
);
channel
.
connect
();
sftp
=
(
ChannelSftp
)
channel
;
}
catch
(
JSchException
e
)
{
e
.
printStackTrace
();
}
}
/**
* 关闭连接 server
*/
public
void
logout
(){
if
(
sftp
!=
null
)
{
if
(
sftp
.
isConnected
())
{
sftp
.
disconnect
();
}
}
if
(
session
!=
null
)
{
if
(
session
.
isConnected
())
{
session
.
disconnect
();
}
}
}
/**
* @param directory 上传到该目录
* @param sftpFileName sftp端文件名
*/
public
void
upload
(
String
directory
,
String
sftpFileName
,
InputStream
input
)
throws
Exception
{
sftp
.
cd
(
directory
);
//上传文件
sftp
.
put
(
input
,
sftpFileName
);
}
/**
* 下载文件。
* @param directory 下载目录
* @param downloadFile 下载的文件
* @param saveFile 存在本地的路径
*/
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
));
}
/**
* 下载文件
* @param directory 下载目录
* @param downloadFile 下载的文件名
* @return 字节数组
*/
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
);
return
fileData
;
}
/**
* 删除文件
* @param directory 要删除文件所在目录
* @param deleteFile 要删除的文件
*/
public
void
delete
(
String
directory
,
String
deleteFile
)
throws
SftpException
{
sftp
.
cd
(
directory
);
sftp
.
rm
(
deleteFile
);
}
/**
* 列出目录下的文件
* @param directory 要列出的目录
*/
public
Vector
<?>
listFiles
(
String
directory
)
throws
SftpException
{
return
sftp
.
ls
(
directory
);
}
public
static
void
uploadFile
(
SftpUtil
sftp
,
String
directory
,
String
filePath
)
throws
Exception
{
sftp
.
login
();
File
file
=
new
File
(
filePath
);
InputStream
is
=
new
FileInputStream
(
file
);
sftp
.
upload
(
directory
,
file
.
getName
(),
is
);
sftp
.
logout
();
}
}
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment