Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
A
auto-test
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
黄承天
auto-test
Commits
36a66896
提交
36a66896
authored
3月 23, 2020
作者:
孙洁清
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
输入输出查询接口
测评报告分页条件接口 删除报告接口 新增接口todo...
上级
7c55db22
隐藏空白字符变更
内嵌
并排
正在显示
31 个修改的文件
包含
954 行增加
和
12 行删除
+954
-12
pom.xml
pom.xml
+33
-0
AutotestApplication.java
src/main/java/com/zjty/autotest/AutotestApplication.java
+5
-0
ExecutorConfig.java
src/main/java/com/zjty/autotest/config/ExecutorConfig.java
+40
-0
ProjectInitRun.java
src/main/java/com/zjty/autotest/config/ProjectInitRun.java
+16
-0
WebSocketConfig.java
src/main/java/com/zjty/autotest/config/WebSocketConfig.java
+13
-0
AutoResultSetController.java
...com/zjty/autotest/controller/AutoResultSetController.java
+1
-1
TestReportController.java
...va/com/zjty/autotest/controller/TestReportController.java
+12
-2
UploadCodeController.java
...va/com/zjty/autotest/controller/UploadCodeController.java
+31
-0
AutoResultSetDao.java
src/main/java/com/zjty/autotest/dao/AutoResultSetDao.java
+5
-0
TestReportDao.java
src/main/java/com/zjty/autotest/dao/TestReportDao.java
+2
-0
CacheManager.java
src/main/java/com/zjty/autotest/mq/CacheManager.java
+24
-0
PushBlockQueue.java
src/main/java/com/zjty/autotest/mq/PushBlockQueue.java
+53
-0
PushBlockQueueHandler.java
...main/java/com/zjty/autotest/mq/PushBlockQueueHandler.java
+129
-0
EvaReport.java
src/main/java/com/zjty/autotest/pojo/sjq/EvaReport.java
+39
-0
FailMessage.java
src/main/java/com/zjty/autotest/pojo/sjq/FailMessage.java
+20
-0
FileBean.java
src/main/java/com/zjty/autotest/pojo/sjq/FileBean.java
+15
-0
PageContent.java
src/main/java/com/zjty/autotest/pojo/sjq/PageContent.java
+29
-0
PageContentTest.java
...main/java/com/zjty/autotest/pojo/sjq/PageContentTest.java
+16
-0
PageRoute.java
src/main/java/com/zjty/autotest/pojo/sjq/PageRoute.java
+41
-0
TestChannel.java
src/main/java/com/zjty/autotest/pojo/sjq/TestChannel.java
+2
-0
AppHttpCodeEnum.java
...va/com/zjty/autotest/pojo/sjq/common/AppHttpCodeEnum.java
+5
-0
AsyncService.java
src/main/java/com/zjty/autotest/service/AsyncService.java
+8
-0
AutoResultSetService.java
.../java/com/zjty/autotest/service/AutoResultSetService.java
+7
-0
TestReportService.java
...ain/java/com/zjty/autotest/service/TestReportService.java
+6
-0
UploadCodeService.java
...ain/java/com/zjty/autotest/service/UploadCodeService.java
+8
-0
AsyncServiceImpl.java
...java/com/zjty/autotest/service/impl/AsyncServiceImpl.java
+108
-0
AutoResultSetServiceImpl.java
.../zjty/autotest/service/impl/AutoResultSetServiceImpl.java
+29
-7
TestReportServiceImpl.java
...com/zjty/autotest/service/impl/TestReportServiceImpl.java
+33
-0
UploadCodeServiceImpl.java
...com/zjty/autotest/service/impl/UploadCodeServiceImpl.java
+45
-0
UnZipRarUtil.java
src/main/java/com/zjty/autotest/util/UnZipRarUtil.java
+173
-0
application.properties
src/main/resources/application.properties
+6
-2
没有找到文件。
pom.xml
浏览文件 @
36a66896
...
@@ -19,6 +19,18 @@
...
@@ -19,6 +19,18 @@
</properties>
</properties>
<dependencies>
<dependencies>
<!-- 导入zip解压包 -->
<dependency>
<groupId>
ant
</groupId>
<artifactId>
ant
</artifactId>
<version>
1.6.5
</version>
</dependency>
<!-- 导入rar解压包 -->
<dependency>
<groupId>
com.github.junrar
</groupId>
<artifactId>
junrar
</artifactId>
<version>
0.7
</version>
</dependency>
<dependency>
<dependency>
<groupId>
org.springframework.boot
</groupId>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-web
</artifactId>
<artifactId>
spring-boot-starter-web
</artifactId>
...
@@ -47,6 +59,11 @@
...
@@ -47,6 +59,11 @@
<artifactId>
guava
</artifactId>
<artifactId>
guava
</artifactId>
<version>
28.2-jre
</version>
<version>
28.2-jre
</version>
</dependency>
</dependency>
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-websocket
</artifactId>
</dependency>
<!--fastJson-->
<!--fastJson-->
<dependency>
<dependency>
<groupId>
com.alibaba
</groupId>
<groupId>
com.alibaba
</groupId>
...
@@ -93,6 +110,22 @@
...
@@ -93,6 +110,22 @@
<groupId>
org.springframework.boot
</groupId>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-maven-plugin
</artifactId>
<artifactId>
spring-boot-maven-plugin
</artifactId>
</plugin>
</plugin>
<plugin>
<groupId>
org.apache.maven.plugins
</groupId>
<artifactId>
maven-compiler-plugin
</artifactId>
<configuration>
<source>
1.8
</source>
<target>
1.8
</target>
<encoding>
UTF-8
</encoding>
</configuration>
</plugin>
<plugin>
<groupId>
org.apache.maven.plugins
</groupId>
<artifactId>
maven-surefire-plugin
</artifactId>
<configuration>
<skipTests>
true
</skipTests>
</configuration>
</plugin>
</plugins>
</plugins>
<resources>
<resources>
<resource>
<resource>
...
...
src/main/java/com/zjty/autotest/AutotestApplication.java
浏览文件 @
36a66896
package
com
.
zjty
.
autotest
;
package
com
.
zjty
.
autotest
;
import
com.zjty.autotest.mq.PushBlockQueue
;
import
com.zjty.autotest.util.IdWorker
;
import
com.zjty.autotest.util.IdWorker
;
import
org.springframework.boot.SpringApplication
;
import
org.springframework.boot.SpringApplication
;
import
org.springframework.boot.autoconfigure.SpringBootApplication
;
import
org.springframework.boot.autoconfigure.SpringBootApplication
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Bean
;
import
javax.annotation.PostConstruct
;
@SpringBootApplication
@SpringBootApplication
public
class
AutotestApplication
{
public
class
AutotestApplication
{
public
static
void
main
(
String
[]
args
)
{
public
static
void
main
(
String
[]
args
)
{
...
@@ -14,4 +17,6 @@ public class AutotestApplication {
...
@@ -14,4 +17,6 @@ public class AutotestApplication {
public
IdWorker
idWorkker
(){
public
IdWorker
idWorkker
(){
return
new
IdWorker
(
1
,
1
);
return
new
IdWorker
(
1
,
1
);
}
}
}
}
src/main/java/com/zjty/autotest/config/ExecutorConfig.java
0 → 100644
浏览文件 @
36a66896
package
com
.
zjty
.
autotest
.
config
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.scheduling.annotation.EnableAsync
;
import
org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor
;
import
java.util.concurrent.Executor
;
import
java.util.concurrent.ThreadPoolExecutor
;
@Configuration
@EnableAsync
public
class
ExecutorConfig
{
private
static
final
Logger
logger
=
LoggerFactory
.
getLogger
(
ExecutorConfig
.
class
);
@Bean
public
Executor
asyncServiceExecutor
()
{
logger
.
info
(
"start asyncServiceExecutor"
);
ThreadPoolTaskExecutor
executor
=
new
ThreadPoolTaskExecutor
();
//配置核心线程数
executor
.
setCorePoolSize
(
5
);
//配置最大线程数
executor
.
setMaxPoolSize
(
5
);
//配置队列大小
executor
.
setQueueCapacity
(
99999
);
//配置线程池中的线程的名称前缀
executor
.
setThreadNamePrefix
(
"async-service-"
);
// rejection-policy:当pool已经达到max size的时候,如何处理新任务
// CALLER_RUNS:不在新线程中执行任务,而是有调用者所在的线程来执行
executor
.
setRejectedExecutionHandler
(
new
ThreadPoolExecutor
.
CallerRunsPolicy
());
//执行初始化
executor
.
initialize
();
return
executor
;
}
}
src/main/java/com/zjty/autotest/config/ProjectInitRun.java
0 → 100644
浏览文件 @
36a66896
package
com
.
zjty
.
autotest
.
config
;
import
com.zjty.autotest.mq.PushBlockQueue
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.boot.CommandLineRunner
;
import
org.springframework.stereotype.Component
;
@Component
public
class
ProjectInitRun
implements
CommandLineRunner
{
@Autowired
private
PushBlockQueue
pushBlockQueue
;
@Override
public
void
run
(
String
...
args
)
throws
Exception
{
pushBlockQueue
.
start
();
}
}
src/main/java/com/zjty/autotest/config/WebSocketConfig.java
0 → 100644
浏览文件 @
36a66896
package
com
.
zjty
.
autotest
.
config
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.web.socket.server.standard.ServerEndpointExporter
;
@Configuration
public
class
WebSocketConfig
{
@Bean
public
ServerEndpointExporter
serverEndpointExporter
()
{
return
new
ServerEndpointExporter
();
}
}
src/main/java/com/zjty/autotest/controller/AutoResultSetController.java
浏览文件 @
36a66896
...
@@ -44,7 +44,7 @@ public class AutoResultSetController {
...
@@ -44,7 +44,7 @@ public class AutoResultSetController {
}
}
@ApiOperation
(
"新增"
)
@ApiOperation
(
"新增"
)
@RequestMapping
(
method
=
RequestMethod
.
POST
)
@RequestMapping
(
method
=
RequestMethod
.
POST
)
public
ResponseResult
add
(
@RequestBody
TestChannel
testChannel
){
public
ResponseResult
add
(
@RequestBody
TestChannel
testChannel
){
return
autoResultSetService
.
addResultSet
(
testChannel
);
return
autoResultSetService
.
addResultSet
(
testChannel
);
}
}
...
...
src/main/java/com/zjty/autotest/controller/TestReportController.java
浏览文件 @
36a66896
package
com
.
zjty
.
autotest
.
controller
;
package
com
.
zjty
.
autotest
.
controller
;
import
com.zjty.autotest.pojo.sjq.TestReport
;
import
com.zjty.autotest.pojo.sjq.common.AppHttpCodeEnum
;
import
com.zjty.autotest.pojo.sjq.common.ResponseResult
;
import
com.zjty.autotest.pojo.sjq.common.ResponseResult
;
import
com.zjty.autotest.service.TestReportService
;
import
com.zjty.autotest.service.TestReportService
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.Api
;
...
@@ -29,7 +31,11 @@ public class TestReportController {
...
@@ -29,7 +31,11 @@ public class TestReportController {
@ApiOperation
(
"根据AutoResultId查询输入"
)
@ApiOperation
(
"根据AutoResultId查询输入"
)
@RequestMapping
(
value
=
"/in/{id}"
,
method
=
RequestMethod
.
GET
)
@RequestMapping
(
value
=
"/in/{id}"
,
method
=
RequestMethod
.
GET
)
public
ResponseResult
findByIdInData
(
@PathVariable
String
id
){
public
ResponseResult
findByIdInData
(
@PathVariable
String
id
){
return
testReportService
.
findByIdInData
(
id
);
TestReport
testReport
=
testReportService
.
findByResultId
(
id
);
if
(
testReport
!=
null
)
{
return
ResponseResult
.
okResult
(
testReport
.
getInputReport
());
}
return
ResponseResult
.
errorResult
(
AppHttpCodeEnum
.
ERROR
);
}
}
/**
/**
...
@@ -39,7 +45,11 @@ public class TestReportController {
...
@@ -39,7 +45,11 @@ public class TestReportController {
@ApiOperation
(
"根据AutoResultId查询输出"
)
@ApiOperation
(
"根据AutoResultId查询输出"
)
@RequestMapping
(
value
=
"/out/{id}"
,
method
=
RequestMethod
.
GET
)
@RequestMapping
(
value
=
"/out/{id}"
,
method
=
RequestMethod
.
GET
)
public
ResponseResult
findByIdOutData
(
@PathVariable
String
id
){
public
ResponseResult
findByIdOutData
(
@PathVariable
String
id
){
return
testReportService
.
findByIdOutData
(
id
);
TestReport
testReport
=
testReportService
.
findByResultId
(
id
);
if
(
testReport
!=
null
)
{
return
ResponseResult
.
okResult
(
testReport
.
getOutReport
());
}
return
ResponseResult
.
errorResult
(
AppHttpCodeEnum
.
ERROR
);
}
}
}
}
src/main/java/com/zjty/autotest/controller/UploadCodeController.java
0 → 100644
浏览文件 @
36a66896
package
com
.
zjty
.
autotest
.
controller
;
import
com.zjty.autotest.pojo.sjq.common.AppHttpCodeEnum
;
import
com.zjty.autotest.pojo.sjq.common.ResponseResult
;
import
com.zjty.autotest.service.UploadCodeService
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Controller
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RequestParam
;
import
org.springframework.web.bind.annotation.RestController
;
import
org.springframework.web.multipart.MultipartFile
;
import
java.io.File
;
import
java.io.IOException
;
@RequestMapping
(
"/code"
)
@RestController
@Api
(
value
=
"上传源代码"
,
description
=
"提供上传源代码"
)
public
class
UploadCodeController
{
@Autowired
private
UploadCodeService
uploadCodeService
;
@PostMapping
(
"/upload"
)
@ApiOperation
(
"上传接口"
)
public
ResponseResult
singleFileUpload
(
@RequestParam
(
"file"
)
MultipartFile
file
){
return
uploadCodeService
.
uploadCodeFile
(
file
);
}
}
src/main/java/com/zjty/autotest/dao/AutoResultSetDao.java
浏览文件 @
36a66896
...
@@ -3,6 +3,11 @@ package com.zjty.autotest.dao;
...
@@ -3,6 +3,11 @@ package com.zjty.autotest.dao;
import
com.zjty.autotest.pojo.sjq.AutoResultSet
;
import
com.zjty.autotest.pojo.sjq.AutoResultSet
;
import
org.springframework.data.jpa.repository.JpaRepository
;
import
org.springframework.data.jpa.repository.JpaRepository
;
import
org.springframework.data.jpa.repository.JpaSpecificationExecutor
;
import
org.springframework.data.jpa.repository.JpaSpecificationExecutor
;
import
org.springframework.data.jpa.repository.Modifying
;
import
org.springframework.data.jpa.repository.Query
;
public
interface
AutoResultSetDao
extends
JpaRepository
<
AutoResultSet
,
String
>,
JpaSpecificationExecutor
<
AutoResultSet
>
{
public
interface
AutoResultSetDao
extends
JpaRepository
<
AutoResultSet
,
String
>,
JpaSpecificationExecutor
<
AutoResultSet
>
{
@Modifying
@Query
(
"update AutoResultSet set status=1 where id=:id"
)
int
updateStatus
(
String
id
);
}
}
src/main/java/com/zjty/autotest/dao/TestReportDao.java
浏览文件 @
36a66896
...
@@ -17,6 +17,8 @@ public interface TestReportDao extends JpaRepository<TestReport,String>, JpaSpec
...
@@ -17,6 +17,8 @@ public interface TestReportDao extends JpaRepository<TestReport,String>, JpaSpec
@Query
(
value
=
"select out_report from test_report where result_id =:resultId"
,
nativeQuery
=
true
)
@Query
(
value
=
"select out_report from test_report where result_id =:resultId"
,
nativeQuery
=
true
)
String
findByOutResultId
(
String
resultId
);
String
findByOutResultId
(
String
resultId
);
@Query
(
value
=
"select * from test_report where result_id=:resultId"
,
nativeQuery
=
true
)
TestReport
findByResultId
(
String
resultId
);
@Modifying
@Modifying
int
deleteByResultId
(
String
resultId
);
int
deleteByResultId
(
String
resultId
);
}
}
src/main/java/com/zjty/autotest/mq/CacheManager.java
0 → 100644
浏览文件 @
36a66896
package
com
.
zjty
.
autotest
.
mq
;
import
java.util.HashMap
;
import
java.util.Map
;
public
class
CacheManager
{
private
static
Map
<
String
,
Object
>
cacheMap
=
new
HashMap
<>();
public
static
Object
getCache
(
String
key
){
return
cacheMap
.
get
(
key
);
}
public
static
void
putCache
(
String
key
,
Object
obj
){
cacheMap
.
put
(
key
,
obj
);
}
public
static
void
removeCache
(
String
key
){
Object
o
=
cacheMap
.
get
(
key
);
if
(
o
!=
null
){
cacheMap
.
remove
(
key
);
}
}
}
src/main/java/com/zjty/autotest/mq/PushBlockQueue.java
0 → 100644
浏览文件 @
36a66896
package
com
.
zjty
.
autotest
.
mq
;
import
com.zjty.autotest.service.AsyncService
;
import
org.springframework.beans.factory.InitializingBean
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.scheduling.annotation.Async
;
import
org.springframework.stereotype.Component
;
import
org.springframework.stereotype.Service
;
import
java.util.concurrent.ExecutorService
;
import
java.util.concurrent.Executors
;
import
java.util.concurrent.LinkedBlockingQueue
;
@Component
public
class
PushBlockQueue
extends
LinkedBlockingQueue
<
Object
>
{
@Autowired
private
AsyncService
asyncService
;
//状态标识位
private
boolean
flag
=
false
;
@Async
(
"asyncServiceExecutor"
)
public
void
zx
(){
try
{
while
(
flag
)
{
//从队列中取消息
Object
obj
=
take
();
//线程池派出线程来消费取出的消息
asyncService
.
executeAsync
((
String
)
obj
);
// es.execute(new PushBlockQueueHandler(obj));
}
}
catch
(
InterruptedException
e
)
{
e
.
printStackTrace
();
}
}
/**
* 队列监听启动
*/
public
void
start
()
{
if
(!
this
.
flag
)
{
flag
=
true
;
}
else
{
throw
new
IllegalArgumentException
(
"队列已启动,不可重复启动!"
);
}
zx
();
}
/**
* 停止队列监听
*/
public
void
stop
(){
this
.
flag
=
false
;
}
}
src/main/java/com/zjty/autotest/mq/PushBlockQueueHandler.java
0 → 100644
浏览文件 @
36a66896
package
com
.
zjty
.
autotest
.
mq
;
import
com.alibaba.fastjson.JSON
;
import
com.zjty.autotest.pojo.sjq.*
;
import
com.zjty.autotest.service.AutoResultSetService
;
import
com.zjty.autotest.service.TestReportService
;
import
com.zjty.autotest.util.TimeUtil
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Component
;
import
org.springframework.stereotype.Service
;
import
javax.annotation.PostConstruct
;
import
java.util.ArrayList
;
import
java.util.Date
;
import
java.util.List
;
@Component
public
class
PushBlockQueueHandler
implements
Runnable
{
@Autowired
private
TestReportService
testReportService
;
@Autowired
private
AutoResultSetService
autoResultSetService
;
@PostConstruct
public
void
init
(){
new
Thread
(
this
).
start
();
}
//消费的对象
private
Object
obj
;
public
PushBlockQueueHandler
()
{
}
public
PushBlockQueueHandler
(
Object
obj
)
{
this
.
obj
=
obj
;
}
//消费线程
@Override
public
void
run
()
{
doBusiness
();
}
//消费行为
private
void
doBusiness
()
{
String
id
=
(
String
)
obj
;
System
.
out
.
println
(
"id:"
+
id
);
TestChannel
testChannel
=
(
TestChannel
)
CacheManager
.
getCache
(
id
);
if
(
testChannel
!=
null
)
{
try
{
EvaReport
evaReport
=
new
EvaReport
();
evaReport
.
setBrowser
(
testChannel
.
getBrowser
());
evaReport
.
setFailCount
(
testChannel
.
getName
()
+
"系统未通过测试,"
+
"未通过测试点共"
+
"10"
+
"个"
);
evaReport
.
setProjectName
(
testChannel
.
getName
());
evaReport
.
setCreateTime
(
new
Date
());
evaReport
.
setSystem
(
"中标麒麟v7龙芯版"
);
evaReport
.
setUrl
(
testChannel
.
getUrl
());
List
<
FailMessage
>
failMessages
=
new
ArrayList
<>();
FailMessage
failMessage
=
new
FailMessage
();
failMessage
.
setUrl
(
"https://voice.baidu.com/act/newpneumonia/newpneumonia/?from=osari_pc_1"
);
failMessage
.
setMessage
(
"抗击疫情打不开响应超时"
);
failMessage
.
setPicture
(
"https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1584955247760&di=f073d6fd65cf71798843c6e4634358dd&imgtype=0&src=http%3A%2F%2Fa0.att.hudong.com%2F78%2F52%2F01200000123847134434529793168.jpg"
);
failMessages
.
add
(
failMessage
);
evaReport
.
setFailMessages
(
failMessages
);
List
<
PageRoute
>
pageRoutes
=
new
ArrayList
<>();
PageRoute
pageRoute
=
new
PageRoute
();
pageRoute
.
setPageName
(
"https://www.baidu.com/"
);
pageRoute
.
setAddress
(
"/baidu"
);
pageRoute
.
setMessage
(
""
);
pageRoute
.
setResponseTime
(
300
);
pageRoute
.
setSuccess
(
0
);
pageRoute
.
setPicture
(
"https://pics4.baidu.com/feed/500fd9f9d72a6059aecf87d92406529d013bbaca.jpeg?token=53433060d4d120e00d8ac6612d2303fd"
);
PageRoute
pageRoute1
=
new
PageRoute
();
pageRoute1
.
setPageName
(
"https://www.baidu.com/"
);
pageRoute1
.
setAddress
(
"/baidu"
);
pageRoute1
.
setMessage
(
"不能访问"
);
pageRoute1
.
setResponseTime
(
300
);
pageRoute1
.
setSuccess
(
1
);
pageRoute1
.
setPicture
(
"https://pics4.baidu.com/feed/500fd9f9d72a6059aecf87d92406529d013bbaca.jpeg?token=53433060d4d120e00d8ac6612d2303fd"
);
pageRoutes
.
add
(
pageRoute
);
pageRoutes
.
add
(
pageRoute1
);
evaReport
.
setPageRoutes
(
pageRoutes
);
List
<
PageContentTest
>
pageContents
=
new
ArrayList
<>();
PageContentTest
pageContentTest
=
new
PageContentTest
();
pageContentTest
.
setUrl
(
"http://news.baidu.com/"
);
List
<
PageContent
>
contents
=
new
ArrayList
<>();
PageContent
pageContent
=
new
PageContent
();
pageContent
.
setParms
(
"国内"
);
pageContent
.
setMessage
(
""
);
pageContent
.
setResponseTime
(
300
);
pageContent
.
setSuccess
(
0
);
PageContent
pageContent1
=
new
PageContent
();
pageContent1
.
setParms
(
"国外"
);
pageContent1
.
setMessage
(
"响应时间过长"
);
pageContent1
.
setResponseTime
(
30000
);
pageContent1
.
setSuccess
(
1
);
contents
.
add
(
pageContent
);
contents
.
add
(
pageContent1
);
pageContentTest
.
setContents
(
contents
);
pageContents
.
add
(
pageContentTest
);
evaReport
.
setPageContents
(
pageContents
);
//调用黄承天代码
Thread
.
sleep
(
6000
);
if
(
testChannel
.
getCodeUrl
()
!=
null
)
{
//解压上传得代码
//获取前端代码中得网页路由地址
//比对黄承天代码中访问得地址和路由地址,黄承天是否访问全了。
}
System
.
out
.
println
(
"修改状态"
);
//改变报告状态
String
out
=
JSON
.
toJSONString
(
evaReport
);
String
in
=
JSON
.
toJSONString
(
testChannel
);
System
.
out
.
println
(
id
);
TestReport
testReport
=
new
TestReport
();
testReport
.
setResultId
(
id
);
testReport
.
setOutReport
(
out
);
testReport
.
setInputReport
(
in
);
testReportService
.
save
(
testReport
);
autoResultSetService
.
updateByid
(
id
);
}
catch
(
InterruptedException
e
)
{
e
.
printStackTrace
();
}
}
System
.
out
.
println
(
Thread
.
currentThread
().
getName
()
+
"-收到消息:"
+
obj
);
}
}
src/main/java/com/zjty/autotest/pojo/sjq/EvaReport.java
0 → 100644
浏览文件 @
36a66896
package
com
.
zjty
.
autotest
.
pojo
.
sjq
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
org.springframework.format.annotation.DateTimeFormat
;
import
java.util.Date
;
import
java.util.List
;
@NoArgsConstructor
@AllArgsConstructor
@Data
@ApiModel
(
description
=
"评测报告类"
)
public
class
EvaReport
{
@ApiModelProperty
(
value
=
"系统名称"
)
private
String
projectName
;
@ApiModelProperty
(
value
=
"浏览器"
)
private
String
browser
;
@ApiModelProperty
(
value
=
"操作系统"
)
private
String
system
;
@ApiModelProperty
(
value
=
"入口地址"
)
private
String
url
;
@ApiModelProperty
(
value
=
"未通过总结"
)
private
String
failCount
;
@ApiModelProperty
(
value
=
"未通过测试点数据"
)
private
List
<
FailMessage
>
failMessages
;
@ApiModelProperty
(
value
=
"网页路由测试"
)
private
List
<
PageRoute
>
pageRoutes
;
@ApiModelProperty
(
value
=
"网页内容数据"
)
private
List
<
PageContentTest
>
pageContents
;
@ApiModelProperty
(
value
=
"记录修改时间"
)
@DateTimeFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
)
private
Date
createTime
;
}
src/main/java/com/zjty/autotest/pojo/sjq/FailMessage.java
0 → 100644
浏览文件 @
36a66896
package
com
.
zjty
.
autotest
.
pojo
.
sjq
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
@NoArgsConstructor
@AllArgsConstructor
@Data
@ApiModel
(
description
=
"未通过测试类"
)
public
class
FailMessage
{
@ApiModelProperty
(
value
=
"所在网页"
)
private
String
url
;
@ApiModelProperty
(
value
=
"未通过理由"
)
private
String
message
;
@ApiModelProperty
(
value
=
"页面截图url"
)
private
String
picture
;
}
src/main/java/com/zjty/autotest/pojo/sjq/FileBean.java
0 → 100644
浏览文件 @
36a66896
package
com
.
zjty
.
autotest
.
pojo
.
sjq
;
import
io.swagger.annotations.ApiModel
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
@NoArgsConstructor
@AllArgsConstructor
@Data
@ApiModel
(
description
=
"上传文件返回得信息"
)
public
class
FileBean
{
private
String
url
;
private
String
fileType
;
}
src/main/java/com/zjty/autotest/pojo/sjq/PageContent.java
0 → 100644
浏览文件 @
36a66896
package
com
.
zjty
.
autotest
.
pojo
.
sjq
;
import
io.swagger.annotations.ApiModel
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
@NoArgsConstructor
@AllArgsConstructor
@Data
@ApiModel
(
description
=
"路由类"
)
public
class
PageContent
{
/**
* 元素类型
*/
private
String
parms
;
/**
* 响应时间
*/
private
Integer
responseTime
;
/**
* 是否通过
*/
private
Integer
success
;
/**
* 未通过理由
*/
private
String
message
;
}
src/main/java/com/zjty/autotest/pojo/sjq/PageContentTest.java
0 → 100644
浏览文件 @
36a66896
package
com
.
zjty
.
autotest
.
pojo
.
sjq
;
import
io.swagger.annotations.ApiModel
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
java.util.List
;
@NoArgsConstructor
@AllArgsConstructor
@Data
@ApiModel
(
description
=
"网页内容测试类"
)
public
class
PageContentTest
{
private
String
url
;
private
List
<
PageContent
>
contents
;
}
src/main/java/com/zjty/autotest/pojo/sjq/PageRoute.java
0 → 100644
浏览文件 @
36a66896
package
com
.
zjty
.
autotest
.
pojo
.
sjq
;
import
io.swagger.annotations.ApiModel
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
@NoArgsConstructor
@AllArgsConstructor
@Data
@ApiModel
(
description
=
"页面路由测试类"
)
public
class
PageRoute
{
/**
* 网页名称
*/
private
String
pageName
;
/**
* 地址
*/
private
String
address
;
/**
* 是否通过 0不成功 1成功
*/
private
Integer
success
;
/**
* 响应时间
*/
private
Integer
responseTime
;
/**
* 相关信息(未通过理由)
*/
private
String
message
;
/**
* 截图的url
*/
private
String
picture
;
}
src/main/java/com/zjty/autotest/pojo/sjq/TestChannel.java
浏览文件 @
36a66896
...
@@ -38,6 +38,8 @@ public class TestChannel {
...
@@ -38,6 +38,8 @@ public class TestChannel {
private
String
url
;
private
String
url
;
@ApiModelProperty
(
value
=
"上传代码路径地址"
)
@ApiModelProperty
(
value
=
"上传代码路径地址"
)
private
String
codeUrl
;
private
String
codeUrl
;
@ApiModelProperty
(
value
=
"文件类型"
)
private
String
fileType
;
/**
/**
* 参数填写
* 参数填写
*/
*/
...
...
src/main/java/com/zjty/autotest/pojo/sjq/common/AppHttpCodeEnum.java
浏览文件 @
36a66896
...
@@ -20,6 +20,11 @@ public enum AppHttpCodeEnum {
...
@@ -20,6 +20,11 @@ public enum AppHttpCodeEnum {
PARAM_IMAGE_FORMAT_ERROR
(
502
,
"图片格式有误"
),
PARAM_IMAGE_FORMAT_ERROR
(
502
,
"图片格式有误"
),
SERVER_ERROR
(
503
,
"服务器内部错误"
),
SERVER_ERROR
(
503
,
"服务器内部错误"
),
SAVE_ERROR
(
504
,
"删除错误"
),
SAVE_ERROR
(
504
,
"删除错误"
),
File_Empty
(
505
,
"文件为空"
),
File_Format_ERROR
(
506
,
"文件类型有误,只接受.zip"
),
File_UPLOAD_ERROR
(
507
,
"文件上传失败"
),
UPDATE_ERROR
(
508
,
"修改失败"
),
ERROR
(
508
,
"操作失败"
),
// 数据错误 1000~2000
// 数据错误 1000~2000
DATA_EXIST
(
1000
,
"数据已经存在"
),
DATA_EXIST
(
1000
,
"数据已经存在"
),
AP_USER_DATA_NOT_EXIST
(
1001
,
"ApUser数据不存在"
),
AP_USER_DATA_NOT_EXIST
(
1001
,
"ApUser数据不存在"
),
...
...
src/main/java/com/zjty/autotest/service/AsyncService.java
0 → 100644
浏览文件 @
36a66896
package
com
.
zjty
.
autotest
.
service
;
public
interface
AsyncService
{
/**
* 执行异步任务
*/
void
executeAsync
(
String
id
);
}
src/main/java/com/zjty/autotest/service/AutoResultSetService.java
浏览文件 @
36a66896
...
@@ -18,6 +18,13 @@ public interface AutoResultSetService {
...
@@ -18,6 +18,13 @@ public interface AutoResultSetService {
* 根据id删除
* 根据id删除
*/
*/
ResponseResult
deleteByid
(
String
id
);
ResponseResult
deleteByid
(
String
id
);
/**
* 根据id修改状态
* @param id
* @return
*/
ResponseResult
updateByid
(
String
id
);
/**
/**
* 新增
* 新增
*/
*/
...
...
src/main/java/com/zjty/autotest/service/TestReportService.java
浏览文件 @
36a66896
package
com
.
zjty
.
autotest
.
service
;
package
com
.
zjty
.
autotest
.
service
;
import
com.zjty.autotest.pojo.sjq.EvaReport
;
import
com.zjty.autotest.pojo.sjq.TestReport
;
import
com.zjty.autotest.pojo.sjq.common.ResponseResult
;
import
com.zjty.autotest.pojo.sjq.common.ResponseResult
;
public
interface
TestReportService
{
public
interface
TestReportService
{
ResponseResult
deleteByResultId
(
String
id
);
ResponseResult
deleteByResultId
(
String
id
);
ResponseResult
save
(
TestReport
testReport
);
ResponseResult
addInReport
(
String
id
,
String
inReport
);
/**
/**
* 根据id查询输入
* 根据id查询输入
*/
*/
ResponseResult
findByIdInData
(
String
resultId
);
ResponseResult
findByIdInData
(
String
resultId
);
TestReport
findByResultId
(
String
resultId
);
/**
/**
* 根据id查询输出
* 根据id查询输出
*/
*/
...
...
src/main/java/com/zjty/autotest/service/UploadCodeService.java
0 → 100644
浏览文件 @
36a66896
package
com
.
zjty
.
autotest
.
service
;
import
com.zjty.autotest.pojo.sjq.common.ResponseResult
;
import
org.springframework.web.multipart.MultipartFile
;
public
interface
UploadCodeService
{
ResponseResult
uploadCodeFile
(
MultipartFile
file
);
}
src/main/java/com/zjty/autotest/service/impl/AsyncServiceImpl.java
0 → 100644
浏览文件 @
36a66896
package
com
.
zjty
.
autotest
.
service
.
impl
;
import
com.alibaba.fastjson.JSON
;
import
com.zjty.autotest.mq.CacheManager
;
import
com.zjty.autotest.pojo.sjq.*
;
import
com.zjty.autotest.service.AsyncService
;
import
com.zjty.autotest.service.AutoResultSetService
;
import
com.zjty.autotest.service.TestReportService
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.scheduling.annotation.Async
;
import
org.springframework.stereotype.Service
;
import
java.util.ArrayList
;
import
java.util.Date
;
import
java.util.List
;
@Service
public
class
AsyncServiceImpl
implements
AsyncService
{
@Autowired
private
AutoResultSetService
autoResultSetService
;
@Autowired
private
TestReportService
testReportService
;
@Override
public
void
executeAsync
(
String
id
)
{
System
.
out
.
println
(
"id:"
+
id
);
TestChannel
testChannel
=
(
TestChannel
)
CacheManager
.
getCache
(
id
);
if
(
testChannel
!=
null
)
{
try
{
EvaReport
evaReport
=
new
EvaReport
();
evaReport
.
setBrowser
(
testChannel
.
getBrowser
());
evaReport
.
setFailCount
(
testChannel
.
getName
()
+
"系统未通过测试,"
+
"未通过测试点共"
+
"10"
+
"个"
);
evaReport
.
setProjectName
(
testChannel
.
getName
());
evaReport
.
setCreateTime
(
new
Date
());
evaReport
.
setSystem
(
"中标麒麟v7龙芯版"
);
evaReport
.
setUrl
(
testChannel
.
getUrl
());
List
<
FailMessage
>
failMessages
=
new
ArrayList
<>();
FailMessage
failMessage
=
new
FailMessage
();
failMessage
.
setUrl
(
"https://voice.baidu.com/act/newpneumonia/newpneumonia/?from=osari_pc_1"
);
failMessage
.
setMessage
(
"抗击疫情打不开响应超时"
);
failMessage
.
setPicture
(
"https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1584955247760&di=f073d6fd65cf71798843c6e4634358dd&imgtype=0&src=http%3A%2F%2Fa0.att.hudong.com%2F78%2F52%2F01200000123847134434529793168.jpg"
);
failMessages
.
add
(
failMessage
);
evaReport
.
setFailMessages
(
failMessages
);
List
<
PageRoute
>
pageRoutes
=
new
ArrayList
<>();
PageRoute
pageRoute
=
new
PageRoute
();
pageRoute
.
setPageName
(
"https://www.baidu.com/"
);
pageRoute
.
setAddress
(
"/baidu"
);
pageRoute
.
setMessage
(
""
);
pageRoute
.
setResponseTime
(
300
);
pageRoute
.
setSuccess
(
0
);
pageRoute
.
setPicture
(
"https://pics4.baidu.com/feed/500fd9f9d72a6059aecf87d92406529d013bbaca.jpeg?token=53433060d4d120e00d8ac6612d2303fd"
);
PageRoute
pageRoute1
=
new
PageRoute
();
pageRoute1
.
setPageName
(
"https://www.baidu.com/"
);
pageRoute1
.
setAddress
(
"/baidu"
);
pageRoute1
.
setMessage
(
"不能访问"
);
pageRoute1
.
setResponseTime
(
300
);
pageRoute1
.
setSuccess
(
1
);
pageRoute1
.
setPicture
(
"https://pics4.baidu.com/feed/500fd9f9d72a6059aecf87d92406529d013bbaca.jpeg?token=53433060d4d120e00d8ac6612d2303fd"
);
pageRoutes
.
add
(
pageRoute
);
pageRoutes
.
add
(
pageRoute1
);
evaReport
.
setPageRoutes
(
pageRoutes
);
List
<
PageContentTest
>
pageContents
=
new
ArrayList
<>();
PageContentTest
pageContentTest
=
new
PageContentTest
();
pageContentTest
.
setUrl
(
"http://news.baidu.com/"
);
List
<
PageContent
>
contents
=
new
ArrayList
<>();
PageContent
pageContent
=
new
PageContent
();
pageContent
.
setParms
(
"国内"
);
pageContent
.
setMessage
(
""
);
pageContent
.
setResponseTime
(
300
);
pageContent
.
setSuccess
(
0
);
PageContent
pageContent1
=
new
PageContent
();
pageContent1
.
setParms
(
"国外"
);
pageContent1
.
setMessage
(
"响应时间过长"
);
pageContent1
.
setResponseTime
(
30000
);
pageContent1
.
setSuccess
(
1
);
contents
.
add
(
pageContent
);
contents
.
add
(
pageContent1
);
pageContentTest
.
setContents
(
contents
);
pageContents
.
add
(
pageContentTest
);
evaReport
.
setPageContents
(
pageContents
);
//调用黄承天代码
Thread
.
sleep
(
6000
);
if
(
testChannel
.
getCodeUrl
()
!=
null
)
{
//解压上传得代码
//获取前端代码中得网页路由地址
//比对黄承天代码中访问得地址和路由地址,黄承天是否访问全了。
}
System
.
out
.
println
(
"修改状态"
);
//改变报告状态
String
out
=
JSON
.
toJSONString
(
evaReport
);
String
in
=
JSON
.
toJSONString
(
testChannel
);
System
.
out
.
println
(
id
);
TestReport
testReport
=
new
TestReport
();
testReport
.
setResultId
(
id
);
testReport
.
setOutReport
(
out
);
testReport
.
setInputReport
(
in
);
testReportService
.
save
(
testReport
);
// autoResultSetService.updateByid(id);
}
catch
(
InterruptedException
e
)
{
e
.
printStackTrace
();
}
}
}
}
src/main/java/com/zjty/autotest/service/impl/AutoResultSetServiceImpl.java
浏览文件 @
36a66896
package
com
.
zjty
.
autotest
.
service
.
impl
;
package
com
.
zjty
.
autotest
.
service
.
impl
;
import
com.alibaba.fastjson.JSON
;
import
com.zjty.autotest.dao.AutoResultSetDao
;
import
com.zjty.autotest.dao.AutoResultSetDao
;
import
com.zjty.autotest.mq.CacheManager
;
import
com.zjty.autotest.mq.PushBlockQueue
;
import
com.zjty.autotest.pojo.sjq.AutoResultSet
;
import
com.zjty.autotest.pojo.sjq.AutoResultSet
;
import
com.zjty.autotest.pojo.sjq.TestChannel
;
import
com.zjty.autotest.pojo.sjq.TestChannel
;
import
com.zjty.autotest.pojo.sjq.TestReport
;
import
com.zjty.autotest.pojo.sjq.TestReport
;
import
com.zjty.autotest.pojo.sjq.common.AppHttpCodeEnum
;
import
com.zjty.autotest.pojo.sjq.common.AppHttpCodeEnum
;
import
com.zjty.autotest.pojo.sjq.common.ResponseResult
;
import
com.zjty.autotest.pojo.sjq.common.ResponseResult
;
import
com.zjty.autotest.service.AsyncService
;
import
com.zjty.autotest.service.AutoResultSetService
;
import
com.zjty.autotest.service.AutoResultSetService
;
import
com.zjty.autotest.service.TestReportService
;
import
com.zjty.autotest.service.TestReportService
;
import
com.zjty.autotest.util.IdWorker
;
import
com.zjty.autotest.util.IdWorker
;
...
@@ -32,6 +36,8 @@ public class AutoResultSetServiceImpl implements AutoResultSetService {
...
@@ -32,6 +36,8 @@ public class AutoResultSetServiceImpl implements AutoResultSetService {
@Autowired
@Autowired
private
AutoResultSetDao
autoResultSetDao
;
private
AutoResultSetDao
autoResultSetDao
;
@Autowired
@Autowired
private
PushBlockQueue
pushBlockQueue
;
@Autowired
private
TestReportService
testReportService
;
private
TestReportService
testReportService
;
@Autowired
@Autowired
private
IdWorker
idWorker
;
private
IdWorker
idWorker
;
...
@@ -76,21 +82,37 @@ public class AutoResultSetServiceImpl implements AutoResultSetService {
...
@@ -76,21 +82,37 @@ public class AutoResultSetServiceImpl implements AutoResultSetService {
return
ResponseResult
.
okResult
(
AppHttpCodeEnum
.
SUCCESS
);
return
ResponseResult
.
okResult
(
AppHttpCodeEnum
.
SUCCESS
);
}
}
@Override
public
ResponseResult
updateByid
(
String
id
)
{
int
i
=
autoResultSetDao
.
updateStatus
(
id
);
if
(
i
==
1
){
return
ResponseResult
.
okResult
(
AppHttpCodeEnum
.
SUCCESS
);
}
return
ResponseResult
.
errorResult
(
AppHttpCodeEnum
.
UPDATE_ERROR
);
}
@Override
@Override
public
ResponseResult
addResultSet
(
TestChannel
testChannel
)
{
public
ResponseResult
addResultSet
(
TestChannel
testChannel
)
{
String
tid
=
idWorker
.
nextId
()+
""
;
AutoResultSet
autoResultSet
=
new
AutoResultSet
();
AutoResultSet
autoResultSet
=
new
AutoResultSet
();
autoResultSet
.
setId
(
idWorker
.
nextId
()+
""
);
autoResultSet
.
setId
(
tid
);
autoResultSet
.
setProjectName
(
testChannel
.
getName
());
autoResultSet
.
setProjectName
(
testChannel
.
getName
());
autoResultSet
.
setUser
(
testChannel
.
getUser
());
autoResultSet
.
setUser
(
testChannel
.
getUser
());
autoResultSet
.
setCreateTime
(
new
Date
());
autoResultSet
.
setCreateTime
(
new
Date
());
autoResultSet
.
setUpdateTime
(
new
Date
());
autoResultSet
.
setUpdateTime
(
new
Date
());
autoResultSet
.
setStatus
(
0
);
autoResultSet
.
setStatus
(
0
);
autoResultSetDao
.
save
(
autoResultSet
);
AutoResultSet
save
=
autoResultSetDao
.
save
(
autoResultSet
);
CacheManager
.
putCache
(
tid
,
testChannel
);
//将数据保存到队列
//将数据保存到队列
//定时去读取
try
{
//调用黄承天代码
pushBlockQueue
.
put
(
tid
);
//修改状态为1
// PushBlockQueue.getInstance().put(tid);
//发送websocket
return
ResponseResult
.
okResult
(
save
);
return
null
;
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
return
ResponseResult
.
errorResult
(
AppHttpCodeEnum
.
SERVER_ERROR
,
e
.
getMessage
());
}
}
}
}
}
src/main/java/com/zjty/autotest/service/impl/TestReportServiceImpl.java
浏览文件 @
36a66896
...
@@ -3,6 +3,7 @@ package com.zjty.autotest.service.impl;
...
@@ -3,6 +3,7 @@ package com.zjty.autotest.service.impl;
import
java.util.ArrayList
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Map
;
import
java.util.Optional
;
import
javax.persistence.criteria.CriteriaBuilder
;
import
javax.persistence.criteria.CriteriaBuilder
;
import
javax.persistence.criteria.CriteriaQuery
;
import
javax.persistence.criteria.CriteriaQuery
;
...
@@ -10,6 +11,7 @@ import javax.persistence.criteria.Predicate;
...
@@ -10,6 +11,7 @@ import javax.persistence.criteria.Predicate;
import
javax.persistence.criteria.Root
;
import
javax.persistence.criteria.Root
;
import
com.zjty.autotest.dao.TestReportDao
;
import
com.zjty.autotest.dao.TestReportDao
;
import
com.zjty.autotest.pojo.sjq.EvaReport
;
import
com.zjty.autotest.pojo.sjq.TestReport
;
import
com.zjty.autotest.pojo.sjq.TestReport
;
import
com.zjty.autotest.pojo.sjq.common.AppHttpCodeEnum
;
import
com.zjty.autotest.pojo.sjq.common.AppHttpCodeEnum
;
import
com.zjty.autotest.pojo.sjq.common.ResponseResult
;
import
com.zjty.autotest.pojo.sjq.common.ResponseResult
;
...
@@ -83,6 +85,31 @@ public class TestReportServiceImpl implements TestReportService {
...
@@ -83,6 +85,31 @@ public class TestReportServiceImpl implements TestReportService {
return
ResponseResult
.
okResult
(
i
);
return
ResponseResult
.
okResult
(
i
);
}
}
@Override
public
ResponseResult
save
(
TestReport
testReport
)
{
System
.
out
.
println
(
testReport
);
if
(
testReport
!=
null
){
testReport
.
setId
(
idWorker
.
nextId
()+
""
);
testReport
.
setOutReport
(
testReport
.
getOutReport
());
testReport
.
setOutReport
(
testReport
.
getInputReport
());
testReport
.
setResultId
(
testReport
.
getResultId
());
testReportDao
.
save
(
testReport
);
return
ResponseResult
.
okResult
(
AppHttpCodeEnum
.
SUCCESS
);
}
return
ResponseResult
.
errorResult
(
AppHttpCodeEnum
.
ERROR
);
}
@Override
public
ResponseResult
addInReport
(
String
id
,
String
inReport
)
{
TestReport
testReport
=
new
TestReport
();
testReport
.
setResultId
(
id
);
testReport
.
setId
(
idWorker
.
nextId
()+
""
);
testReport
.
setInputReport
(
inReport
);
testReport
.
setOutReport
(
""
);
testReportDao
.
save
(
testReport
);
return
ResponseResult
.
okResult
(
AppHttpCodeEnum
.
SUCCESS
);
}
@Override
@Override
public
ResponseResult
findByIdInData
(
String
resultId
)
{
public
ResponseResult
findByIdInData
(
String
resultId
)
{
String
in
=
testReportDao
.
findByInResultId
(
resultId
);
String
in
=
testReportDao
.
findByInResultId
(
resultId
);
...
@@ -92,6 +119,12 @@ public class TestReportServiceImpl implements TestReportService {
...
@@ -92,6 +119,12 @@ public class TestReportServiceImpl implements TestReportService {
return
ResponseResult
.
okResult
(
in
);
return
ResponseResult
.
okResult
(
in
);
}
}
@Override
public
TestReport
findByResultId
(
String
resultId
)
{
TestReport
testReport
=
testReportDao
.
findByResultId
(
resultId
);
return
testReport
;
}
@Override
@Override
public
ResponseResult
findByIdOutData
(
String
resultId
)
{
public
ResponseResult
findByIdOutData
(
String
resultId
)
{
String
out
=
testReportDao
.
findByOutResultId
(
resultId
);
String
out
=
testReportDao
.
findByOutResultId
(
resultId
);
...
...
src/main/java/com/zjty/autotest/service/impl/UploadCodeServiceImpl.java
0 → 100644
浏览文件 @
36a66896
package
com
.
zjty
.
autotest
.
service
.
impl
;
import
com.zjty.autotest.pojo.sjq.FileBean
;
import
com.zjty.autotest.pojo.sjq.common.AppHttpCodeEnum
;
import
com.zjty.autotest.pojo.sjq.common.ResponseResult
;
import
com.zjty.autotest.service.UploadCodeService
;
import
com.zjty.autotest.util.IdWorker
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.stereotype.Service
;
import
org.springframework.web.multipart.MultipartFile
;
import
java.io.File
;
import
java.io.IOException
;
@Service
public
class
UploadCodeServiceImpl
implements
UploadCodeService
{
@Value
(
"${uploadUnFile}"
)
private
String
uploadUnFile
;
@Autowired
private
IdWorker
idWorker
;
@Override
public
ResponseResult
uploadCodeFile
(
MultipartFile
file
)
{
try
{
if
(
file
.
isEmpty
())
{
return
ResponseResult
.
errorResult
(
AppHttpCodeEnum
.
File_Empty
);
}
String
fileName
=
file
.
getOriginalFilename
();
String
fileType
=
fileName
.
substring
(
fileName
.
lastIndexOf
(
"."
));
File
dest
=
new
File
(
uploadUnFile
+
"/"
+
idWorker
.
nextId
()+
"/"
+
fileName
);
if
(!
dest
.
getParentFile
().
exists
())
{
dest
.
getParentFile
().
mkdirs
();
}
file
.
transferTo
(
dest
);
FileBean
bean
=
new
FileBean
(
dest
.
getAbsolutePath
(),
fileType
);
return
ResponseResult
.
okResult
(
bean
);
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
}
return
ResponseResult
.
errorResult
(
AppHttpCodeEnum
.
File_UPLOAD_ERROR
);
}
}
src/main/java/com/zjty/autotest/util/UnZipRarUtil.java
0 → 100644
浏览文件 @
36a66896
package
com
.
zjty
.
autotest
.
util
;
import
com.github.junrar.Archive
;
import
com.github.junrar.rarfile.FileHeader
;
import
org.apache.tools.zip.ZipEntry
;
import
org.apache.tools.zip.ZipFile
;
import
java.io.*
;
import
java.util.ArrayList
;
import
java.util.Enumeration
;
import
java.util.List
;
public
class
UnZipRarUtil
{
/**
* 解压
*
* @param sourceFile
* @param toFolder
*/
public
static
String
zipRarToFile
(
String
fileName
,
String
sourceFile
,
String
toFolder
)
throws
Exception
{
int
pos
=
fileName
.
lastIndexOf
(
"."
);
String
extName
=
fileName
.
substring
(
pos
+
1
).
toLowerCase
();
File
pushFile
=
new
File
(
sourceFile
);
File
descFile
=
new
File
(
toFolder
);
if
(!
descFile
.
exists
())
{
descFile
.
mkdirs
();
}
//解压目的文件
String
descDir
=
toFolder
+
"\\"
+
fileName
.
substring
(
0
,
pos
)
+
"\\"
;
//开始解压zip
if
(
extName
.
equals
(
"zip"
))
{
UnZipRarUtil
.
unZipFiles
(
pushFile
,
descDir
);
}
else
if
(
extName
.
equals
(
"rar"
))
{
//开始解压rar
UnZipRarUtil
.
unRarFile
(
pushFile
.
getAbsolutePath
(),
descDir
);
}
return
descDir
;
}
/**
* 获取所有文件
*
* @param filelist
* @param strPath
* @return
*/
public
static
List
<
File
>
getFileList
(
List
<
File
>
filelist
,
String
strPath
)
{
File
dir
=
new
File
(
strPath
);
File
[]
files
=
dir
.
listFiles
();
// 该文件目录下文件全部放入数组
if
(
files
!=
null
)
{
for
(
int
i
=
0
;
i
<
files
.
length
;
i
++)
{
String
fileName
=
files
[
i
].
getName
();
if
(
files
[
i
].
isDirectory
())
{
// 判断是文件还是文件夹
getFileList
(
filelist
,
files
[
i
].
getAbsolutePath
());
// 获取文件绝对路径
}
else
{
filelist
.
add
(
files
[
i
]);
continue
;
}
}
}
return
filelist
;
}
/**
* 解压到指定目录
*
* @param zipPath
* @param descDir
* @author
*/
public
static
void
unZipFiles
(
String
zipPath
,
String
descDir
)
throws
IOException
{
unZipFiles
(
new
File
(
zipPath
),
descDir
);
}
/**
* 解压文件到指定目录
*
* @param zipFile
* @param descDir
* @author isea533
*/
@SuppressWarnings
(
"rawtypes"
)
public
static
void
unZipFiles
(
File
zipFile
,
String
descDir
)
throws
IOException
{
File
pathFile
=
new
File
(
descDir
);
if
(!
pathFile
.
exists
())
{
pathFile
.
mkdirs
();
}
ZipFile
zip
=
new
ZipFile
(
zipFile
);
for
(
Enumeration
entries
=
zip
.
getEntries
();
entries
.
hasMoreElements
();
)
{
ZipEntry
entry
=
(
ZipEntry
)
entries
.
nextElement
();
String
zipEntryName
=
entry
.
getName
();
InputStream
in
=
zip
.
getInputStream
(
entry
);
String
outPath
=
(
descDir
+
zipEntryName
).
replaceAll
(
"\\*"
,
"/"
);
;
//判断路径是否存在,不存在则创建文件路径
File
file
=
new
File
(
outPath
.
substring
(
0
,
outPath
.
lastIndexOf
(
'/'
)));
if
(!
file
.
exists
())
{
file
.
mkdirs
();
}
//判断文件全路径是否为文件夹,如果是上面已经上传,不需要解压
if
(
new
File
(
outPath
).
isDirectory
())
{
continue
;
}
//输出文件路径信息
System
.
out
.
println
(
outPath
);
OutputStream
out
=
new
FileOutputStream
(
outPath
);
byte
[]
buf1
=
new
byte
[
1024
];
int
len
;
while
((
len
=
in
.
read
(
buf1
))
>
0
)
{
out
.
write
(
buf1
,
0
,
len
);
}
in
.
close
();
out
.
close
();
}
}
/**
* 根据原始rar路径,解压到指定文件夹下.
*
* @param srcRarPath 原始rar路径
* @param dstDirectoryPath 解压到的文件夹
*/
public
static
void
unRarFile
(
String
srcRarPath
,
String
dstDirectoryPath
)
{
if
(!
srcRarPath
.
toLowerCase
().
endsWith
(
".rar"
))
{
System
.
out
.
println
(
"非rar文件!"
);
return
;
}
File
dstDiretory
=
new
File
(
dstDirectoryPath
);
if
(!
dstDiretory
.
exists
())
{
// 目标目录不存在时,创建该文件夹
dstDiretory
.
mkdirs
();
}
Archive
a
=
null
;
try
{
a
=
new
Archive
(
new
File
(
srcRarPath
));
if
(
a
!=
null
)
{
a
.
getMainHeader
().
print
();
// 打印文件信息.
FileHeader
fh
=
a
.
nextFileHeader
();
while
(
fh
!=
null
)
{
if
(
fh
.
isDirectory
())
{
// 文件夹
File
fol
=
new
File
(
dstDirectoryPath
+
File
.
separator
+
fh
.
getFileNameString
());
fol
.
mkdirs
();
}
else
{
// 文件
File
out
=
new
File
(
dstDirectoryPath
+
File
.
separator
+
fh
.
getFileNameString
().
trim
());
try
{
// 之所以这么写try,是因为万一这里面有了异常,不影响继续解压.
if
(!
out
.
exists
())
{
if
(!
out
.
getParentFile
().
exists
())
{
// 相对路径可能多级,可能需要创建父目录.
out
.
getParentFile
().
mkdirs
();
}
out
.
createNewFile
();
}
FileOutputStream
os
=
new
FileOutputStream
(
out
);
a
.
extractFile
(
fh
,
os
);
os
.
close
();
}
catch
(
Exception
ex
)
{
ex
.
printStackTrace
();
}
}
fh
=
a
.
nextFileHeader
();
}
a
.
close
();
}
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
}
}
src/main/resources/application.properties
浏览文件 @
36a66896
...
@@ -8,4 +8,9 @@ spring.jpa.hibernate.ddl-auto=update
...
@@ -8,4 +8,9 @@ spring.jpa.hibernate.ddl-auto=update
spring.jpa.database-platform
=
org.hibernate.dialect.MySQL5Dialect
spring.jpa.database-platform
=
org.hibernate.dialect.MySQL5Dialect
spring.jpa.show-sql
=
false
spring.jpa.show-sql
=
false
spring.resources.static-locations
=
classpath:/adapter/
spring.resources.static-locations
=
classpath:/adapter/
\ No newline at end of file
uploadUnFile
=
E:/opt/auto/test/zr/
# spring-http-\u6587\u4EF6\u4E0A\u4F20\u76F8\u5173\u914D\u7F6E
spring.servlet.multipart.max-file-size
=
500MB
spring.servlet.multipart.max-request-size
=
500MB
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论