Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
G
gic-cloud
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
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-hook
gic-cloud
Commits
e1c5a93f
Commit
e1c5a93f
authored
Apr 01, 2022
by
fudahua
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
下载字段校验时间字段校验
parent
3dd90ade
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
150 additions
and
7 deletions
+150
-7
FilterFieldUtils.java
...ava/com/gic/cloud/data/hook/service/FilterFieldUtils.java
+77
-3
CsvResultSetHelper.java
...ic/cloud/data/hook/service/entity/CsvResultSetHelper.java
+3
-1
TimeCheckPojo.java
...com/gic/cloud/data/hook/service/entity/TimeCheckPojo.java
+44
-0
FlatQueryResultServiceImpl.java
...ud/data/hook/service/impl/FlatQueryResultServiceImpl.java
+19
-0
FlatQueryController.java
...java/com/gic/cloud/data/hook/web/FlatQueryController.java
+7
-3
No files found.
gic-cloud-data-hook-service/src/main/java/com/gic/cloud/data/hook/service/FilterFieldUtils.java
View file @
e1c5a93f
package
com
.
gic
.
cloud
.
data
.
hook
.
service
;
package
com
.
gic
.
cloud
.
data
.
hook
.
service
;
import
cn.hutool.core.date.DateTime
;
import
cn.hutool.core.date.DateUtil
;
import
com.alibaba.fastjson.JSONObject
;
import
com.ctrip.framework.apollo.Config
;
import
com.ctrip.framework.apollo.Config
;
import
com.ctrip.framework.apollo.ConfigService
;
import
com.ctrip.framework.apollo.ConfigService
;
import
com.gic.cloud.data.hook.api.entity.FlatQueryCondition
;
import
com.gic.cloud.data.hook.api.entity.FlatQueryFieldType
;
import
com.gic.cloud.data.hook.service.entity.TimeCheckPojo
;
import
org.apache.commons.collections.CollectionUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.commons.lang3.concurrent.BasicThreadFactory
;
import
org.apache.commons.lang3.concurrent.BasicThreadFactory
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.stereotype.Component
;
import
org.springframework.stereotype.Component
;
import
javax.annotation.PostConstruct
;
import
javax.annotation.PostConstruct
;
import
java.util.ArrayList
;
import
java.util.*
;
import
java.util.Arrays
;
import
java.util.List
;
import
java.util.concurrent.ScheduledExecutorService
;
import
java.util.concurrent.ScheduledExecutorService
;
import
java.util.concurrent.ScheduledThreadPoolExecutor
;
import
java.util.concurrent.ScheduledThreadPoolExecutor
;
import
java.util.concurrent.TimeUnit
;
import
java.util.concurrent.TimeUnit
;
@Component
@Component
public
class
FilterFieldUtils
{
public
class
FilterFieldUtils
{
private
static
Logger
logger
=
LoggerFactory
.
getLogger
(
FilterFieldUtils
.
class
);
/** 脱敏字段 */
/** 脱敏字段 */
public
static
List
<
String
>
FILTERS_PHONE_ONLY
=
Arrays
.
asList
(
"mobile"
,
"phone"
,
"enterprise_name"
,
"phone_number"
,
"receive_phone_number"
,
"use_phone_number"
,
"friend_phone_num"
,
"from_phone_num"
);
public
static
List
<
String
>
FILTERS_PHONE_ONLY
=
Arrays
.
asList
(
"mobile"
,
"phone"
,
"enterprise_name"
,
"phone_number"
,
"receive_phone_number"
,
"use_phone_number"
,
"friend_phone_num"
,
"from_phone_num"
);
...
@@ -58,4 +68,68 @@ public class FilterFieldUtils {
...
@@ -58,4 +68,68 @@ public class FilterFieldUtils {
}
}
},
5
,
5
,
TimeUnit
.
SECONDS
);
},
5
,
5
,
TimeUnit
.
SECONDS
);
}
}
private
static
ThreadLocal
<
Map
<
String
,
TimeCheckPojo
>>
TIMECHECK_THREADLOCAL
=
new
ThreadLocal
<>();
/**
* 初始化 时间校验
* @param queryConditions
*/
public
static
void
timeFieldCheckInit
(
List
<
FlatQueryCondition
>
queryConditions
)
{
TIMECHECK_THREADLOCAL
.
remove
();
HashMap
<
String
,
TimeCheckPojo
>
retMap
=
new
HashMap
<>();
if
(
CollectionUtils
.
isEmpty
(
queryConditions
))
{
return
;
}
for
(
FlatQueryCondition
queryCondition
:
queryConditions
)
{
// 如果存在主过滤器的值,视为过滤器生效
if
(
StringUtils
.
isNotBlank
(
queryCondition
.
getMainFilter
())
&&
queryCondition
.
getFieldType
().
equals
(
FlatQueryFieldType
.
DATE
))
{
String
startDate
=
queryCondition
.
getMainFilter
()
+
""
;
String
overDate
=
queryCondition
.
getExtendFilter
()
+
""
;
DateTime
start
=
DateUtil
.
parse
(
startDate
);
DateTime
end
=
DateUtil
.
parse
(
overDate
);
TimeCheckPojo
timeCheckPojo
=
new
TimeCheckPojo
();
timeCheckPojo
.
setEndStr
(
overDate
);
timeCheckPojo
.
setStartStr
(
startDate
);
timeCheckPojo
.
setEndDate
(
end
);
timeCheckPojo
.
setStartDate
(
start
);
retMap
.
put
(
queryCondition
.
getFieldName
(),
timeCheckPojo
);
}
}
logger
.
info
(
"开始----:{}"
,
JSONObject
.
toJSONString
(
retMap
));
TIMECHECK_THREADLOCAL
.
set
(
retMap
);
}
/**
* 校验时间
* @param key
* @param time
* @return
*/
public
static
void
checkTime
(
String
key
,
String
time
,
Object
orgObj
){
Map
<
String
,
TimeCheckPojo
>
checkPojoMap
=
TIMECHECK_THREADLOCAL
.
get
();
if
(
checkPojoMap
==
null
)
{
return
;
}
TimeCheckPojo
timeCheckPojo
=
checkPojoMap
.
get
(
key
);
if
(
timeCheckPojo
==
null
)
{
return
;
}
DateTime
parse
=
DateUtil
.
parse
(
time
);
if
(
parse
.
isAfter
(
timeCheckPojo
.
getStartDate
())&&
parse
.
isBefore
(
timeCheckPojo
.
getEndDate
())){
return
;
}
logger
.
info
(
"key:{},time:{}---{},,orgTime:{}"
,
key
,
time
,
orgObj
,
JSONObject
.
toJSON
(
timeCheckPojo
));
}
/**
* 是否校验
*/
public
static
void
removeTimeCheck
(){
logger
.
info
(
"结束----"
);
TIMECHECK_THREADLOCAL
.
remove
();
}
}
}
gic-cloud-data-hook-service/src/main/java/com/gic/cloud/data/hook/service/entity/CsvResultSetHelper.java
View file @
e1c5a93f
...
@@ -185,7 +185,9 @@ public class CsvResultSetHelper implements ResultSetHelper {
...
@@ -185,7 +185,9 @@ public class CsvResultSetHelper implements ResultSetHelper {
int
columnType
=
resultSet
.
getMetaData
().
getColumnType
(
i
+
1
);
int
columnType
=
resultSet
.
getMetaData
().
getColumnType
(
i
+
1
);
switch
(
columnType
)
{
switch
(
columnType
)
{
case
Types
.
TIMESTAMP
:
case
Types
.
TIMESTAMP
:
result
.
add
(
resultSet
.
getTimestamp
(
i
+
1
)
!=
null
?
datetimeFormatter
.
format
(
resultSet
.
getTimestamp
(
i
+
1
))
:
""
);
String
time
=
resultSet
.
getTimestamp
(
i
+
1
)
!=
null
?
datetimeFormatter
.
format
(
resultSet
.
getTimestamp
(
i
+
1
))
:
""
;
result
.
add
(
time
);
FilterFieldUtils
.
checkTime
(
columnName
,
time
,
resultSet
.
getObject
(
i
+
1
));
break
;
break
;
case
Types
.
DATE
:
case
Types
.
DATE
:
//result[i] = resultSet.getTimestamp(columnName) != null ? dateFormatter.format(resultSet.getTimestamp(columnName)) : "";
//result[i] = resultSet.getTimestamp(columnName) != null ? dateFormatter.format(resultSet.getTimestamp(columnName)) : "";
...
...
gic-cloud-data-hook-service/src/main/java/com/gic/cloud/data/hook/service/entity/TimeCheckPojo.java
0 → 100644
View file @
e1c5a93f
package
com
.
gic
.
cloud
.
data
.
hook
.
service
.
entity
;
import
cn.hutool.core.date.DateTime
;
import
java.io.Serializable
;
public
class
TimeCheckPojo
implements
Serializable
{
private
String
startStr
;
private
String
endStr
;
private
DateTime
startDate
;
private
DateTime
endDate
;
public
String
getStartStr
()
{
return
startStr
;
}
public
void
setStartStr
(
String
startStr
)
{
this
.
startStr
=
startStr
;
}
public
String
getEndStr
()
{
return
endStr
;
}
public
void
setEndStr
(
String
endStr
)
{
this
.
endStr
=
endStr
;
}
public
DateTime
getStartDate
()
{
return
startDate
;
}
public
void
setStartDate
(
DateTime
startDate
)
{
this
.
startDate
=
startDate
;
}
public
DateTime
getEndDate
()
{
return
endDate
;
}
public
void
setEndDate
(
DateTime
endDate
)
{
this
.
endDate
=
endDate
;
}
}
gic-cloud-data-hook-service/src/main/java/com/gic/cloud/data/hook/service/impl/FlatQueryResultServiceImpl.java
View file @
e1c5a93f
...
@@ -15,6 +15,7 @@ import com.gic.cloud.data.hook.service.dao.FlatQueryTableDao;
...
@@ -15,6 +15,7 @@ import com.gic.cloud.data.hook.service.dao.FlatQueryTableDao;
import
com.gic.cloud.data.hook.service.entity.CsvDataFilterMode
;
import
com.gic.cloud.data.hook.service.entity.CsvDataFilterMode
;
import
com.gic.cloud.data.hook.service.entity.CsvResultSetHelper
;
import
com.gic.cloud.data.hook.service.entity.CsvResultSetHelper
;
import
com.gic.dubbo.entity.ProviderLocalTag
;
import
com.gic.qcloud.BucketNameEnum
;
import
com.gic.qcloud.BucketNameEnum
;
import
com.gic.qcloud.FileUploadUtil
;
import
com.gic.qcloud.FileUploadUtil
;
import
com.google.common.collect.Lists
;
import
com.google.common.collect.Lists
;
...
@@ -30,6 +31,8 @@ import org.apache.poi.ss.usermodel.Row;
...
@@ -30,6 +31,8 @@ import org.apache.poi.ss.usermodel.Row;
import
org.apache.poi.ss.usermodel.Sheet
;
import
org.apache.poi.ss.usermodel.Sheet
;
import
org.apache.poi.xssf.streaming.SXSSFWorkbook
;
import
org.apache.poi.xssf.streaming.SXSSFWorkbook
;
import
org.datanucleus.store.rdbms.datasource.dbcp.SQLNestedException
;
import
org.datanucleus.store.rdbms.datasource.dbcp.SQLNestedException
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Component
;
import
org.springframework.stereotype.Component
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
...
@@ -56,6 +59,8 @@ import java.util.zip.ZipOutputStream;
...
@@ -56,6 +59,8 @@ import java.util.zip.ZipOutputStream;
*/
*/
public
class
FlatQueryResultServiceImpl
implements
IFlatQueryResultService
{
public
class
FlatQueryResultServiceImpl
implements
IFlatQueryResultService
{
private
static
Logger
logger
=
LoggerFactory
.
getLogger
(
FlatQueryResultServiceImpl
.
class
);
/** 日志类 */
/** 日志类 */
private
static
LogPak
log
=
new
LogPak
(
FlatQueryResultServiceImpl
.
class
);
private
static
LogPak
log
=
new
LogPak
(
FlatQueryResultServiceImpl
.
class
);
...
@@ -564,6 +569,8 @@ public class FlatQueryResultServiceImpl implements IFlatQueryResultService {
...
@@ -564,6 +569,8 @@ public class FlatQueryResultServiceImpl implements IFlatQueryResultService {
downloadService
.
scheduleAtFixedRate
(
new
Runnable
()
{
downloadService
.
scheduleAtFixedRate
(
new
Runnable
()
{
@Override
@Override
public
void
run
()
{
public
void
run
()
{
ProviderLocalTag
providerLocalTag
=
ProviderLocalTag
.
tag
.
get
();
providerLocalTag
.
traceId
=
UUID
.
randomUUID
().
toString
();
Connection
connection
=
null
;
Connection
connection
=
null
;
try
{
try
{
if
(
taskConditions
!=
null
&&
taskConditions
.
size
()
>
0
)
{
if
(
taskConditions
!=
null
&&
taskConditions
.
size
()
>
0
)
{
...
@@ -623,6 +630,8 @@ public class FlatQueryResultServiceImpl implements IFlatQueryResultService {
...
@@ -623,6 +630,8 @@ public class FlatQueryResultServiceImpl implements IFlatQueryResultService {
bigDataDownloadService
.
scheduleAtFixedRate
(
new
Runnable
()
{
bigDataDownloadService
.
scheduleAtFixedRate
(
new
Runnable
()
{
@Override
@Override
public
void
run
()
{
public
void
run
()
{
ProviderLocalTag
providerLocalTag
=
ProviderLocalTag
.
tag
.
get
();
providerLocalTag
.
traceId
=
UUID
.
randomUUID
().
toString
();
Connection
connection
=
null
;
Connection
connection
=
null
;
try
{
try
{
if
(
bigTaskConditions
!=
null
&&
bigTaskConditions
.
size
()
>
0
)
{
if
(
bigTaskConditions
!=
null
&&
bigTaskConditions
.
size
()
>
0
)
{
...
@@ -647,6 +656,7 @@ public class FlatQueryResultServiceImpl implements IFlatQueryResultService {
...
@@ -647,6 +656,7 @@ public class FlatQueryResultServiceImpl implements IFlatQueryResultService {
bigTaskRunningMap
.
remove
(
condition
.
getTaskId
());
bigTaskRunningMap
.
remove
(
condition
.
getTaskId
());
}
// 没有任务则忽略
}
// 没有任务则忽略
}
catch
(
Exception
e
){
}
catch
(
Exception
e
){
logger
.
info
(
"下载异常:{}"
,
e
);
log
.
debug
(
"自助指标下载异常"
,
e
.
getMessage
());
log
.
debug
(
"自助指标下载异常"
,
e
.
getMessage
());
e
.
printStackTrace
();
e
.
printStackTrace
();
}
finally
{
}
finally
{
...
@@ -672,6 +682,9 @@ public class FlatQueryResultServiceImpl implements IFlatQueryResultService {
...
@@ -672,6 +682,9 @@ public class FlatQueryResultServiceImpl implements IFlatQueryResultService {
@Override
@Override
public
void
run
()
{
public
void
run
()
{
Connection
connection
=
null
;
Connection
connection
=
null
;
ProviderLocalTag
providerLocalTag
=
ProviderLocalTag
.
tag
.
get
();
providerLocalTag
.
traceId
=
UUID
.
randomUUID
().
toString
();
try
{
try
{
if
(
taskConditions
!=
null
&&
taskConditions
.
size
()
>
0
)
{
if
(
taskConditions
!=
null
&&
taskConditions
.
size
()
>
0
)
{
FlatQueryTaskCondition
condition
=
null
;
FlatQueryTaskCondition
condition
=
null
;
...
@@ -718,6 +731,9 @@ public class FlatQueryResultServiceImpl implements IFlatQueryResultService {
...
@@ -718,6 +731,9 @@ public class FlatQueryResultServiceImpl implements IFlatQueryResultService {
task
.
setStatus
(
DownloadTaskStatus
.
BUILDING
);
task
.
setStatus
(
DownloadTaskStatus
.
BUILDING
);
DownloadTaskServiceImpl
.
getInstance
().
updateDownloadTask
(
task
);
DownloadTaskServiceImpl
.
getInstance
().
updateDownloadTask
(
task
);
log
.
debug
(
"runDownloadTask.run"
,
"自助指标下载任务执行:"
+
task
.
getId
());
log
.
debug
(
"runDownloadTask.run"
,
"自助指标下载任务执行:"
+
task
.
getId
());
//初始化校验
FilterFieldUtils
.
timeFieldCheckInit
(
condition
.
getConditions
());
String
fullQuery
=
buildFlatQuerySQL
(
String
fullQuery
=
buildFlatQuerySQL
(
false
,
// 下载用途
false
,
// 下载用途
condition
.
getTableId
(),
condition
.
getTableId
(),
...
@@ -834,6 +850,7 @@ public class FlatQueryResultServiceImpl implements IFlatQueryResultService {
...
@@ -834,6 +850,7 @@ public class FlatQueryResultServiceImpl implements IFlatQueryResultService {
DownloadTaskServiceImpl
.
getInstance
().
updateDownloadTask
(
task
);
DownloadTaskServiceImpl
.
getInstance
().
updateDownloadTask
(
task
);
}
catch
(
Exception
ex
)
{
}
catch
(
Exception
ex
)
{
logger
.
info
(
task
.
getId
()+
" 下载异常异常:{}"
,
ex
);
ex
.
printStackTrace
();
ex
.
printStackTrace
();
// 标记任务异常
// 标记任务异常
task
.
setStatus
(
DownloadTaskStatus
.
ERROR
);
task
.
setStatus
(
DownloadTaskStatus
.
ERROR
);
...
@@ -845,6 +862,8 @@ public class FlatQueryResultServiceImpl implements IFlatQueryResultService {
...
@@ -845,6 +862,8 @@ public class FlatQueryResultServiceImpl implements IFlatQueryResultService {
}
catch
(
SQLException
e
)
{
}
catch
(
SQLException
e
)
{
e
.
printStackTrace
();
e
.
printStackTrace
();
}
}
// 移除校验
FilterFieldUtils
.
removeTimeCheck
();
}
}
}
// IF OVER
}
// IF OVER
...
...
gic-cloud-data-hook/src/main/java/com/gic/cloud/data/hook/web/FlatQueryController.java
View file @
e1c5a93f
...
@@ -19,6 +19,8 @@ import com.gic.enterprise.api.dto.StoreWidgetDTO;
...
@@ -19,6 +19,8 @@ import com.gic.enterprise.api.dto.StoreWidgetDTO;
import
com.gic.enterprise.api.service.EnterpriseService
;
import
com.gic.enterprise.api.service.EnterpriseService
;
import
com.gic.enterprise.api.service.StoreWidgetService
;
import
com.gic.enterprise.api.service.StoreWidgetService
;
import
com.gic.web.common.utils.SessionContextUtils
;
import
com.gic.web.common.utils.SessionContextUtils
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Controller
;
import
org.springframework.stereotype.Controller
;
import
org.springframework.util.CollectionUtils
;
import
org.springframework.util.CollectionUtils
;
...
@@ -39,6 +41,8 @@ import java.util.List;
...
@@ -39,6 +41,8 @@ import java.util.List;
@Controller
@Controller
public
class
FlatQueryController
{
public
class
FlatQueryController
{
private
static
Logger
logger
=
LoggerFactory
.
getLogger
(
FlatQueryController
.
class
);
/** 脱敏字段 */
/** 脱敏字段 */
public
static
final
List
<
String
>
FILTERS_PHONE_ONLY
=
Arrays
.
asList
(
"mobile"
,
"phone"
,
"enterprise_name"
,
"phone_number"
,
"receive_phone_number"
,
"use_phone_number"
,
"friend_phone_num"
,
"from_phone_num"
);
public
static
final
List
<
String
>
FILTERS_PHONE_ONLY
=
Arrays
.
asList
(
"mobile"
,
"phone"
,
"enterprise_name"
,
"phone_number"
,
"receive_phone_number"
,
"use_phone_number"
,
"friend_phone_num"
,
"from_phone_num"
);
...
@@ -145,8 +149,8 @@ public class FlatQueryController {
...
@@ -145,8 +149,8 @@ public class FlatQueryController {
*/
*/
@RequestMapping
(
"/flat-query"
)
@RequestMapping
(
"/flat-query"
)
public
FlatQueryResult
doFlatQuery
(
@RequestBody
FlatQueryExecuteRequest
executeRequest
,
HttpServletRequest
request
,
HttpServletResponse
response
)
{
public
FlatQueryResult
doFlatQuery
(
@RequestBody
FlatQueryExecuteRequest
executeRequest
,
HttpServletRequest
request
,
HttpServletResponse
response
)
{
System
.
out
.
println
(
"doFlatQuery:"
+
executeRequest
.
getTableId
());
logger
.
info
(
"doFlatQuery:"
+
executeRequest
.
getTableId
());
System
.
out
.
println
(
"doFlatQuery:"
+
executeRequest
.
getQueryConditions
().
size
());
logger
.
info
(
"doFlatQuery:"
+
executeRequest
.
getQueryConditions
().
size
());
String
enterpriseId
=
SessionContextUtils
.
getLoginUserEnterpriseId
();
String
enterpriseId
=
SessionContextUtils
.
getLoginUserEnterpriseId
();
EnterpriseSettingDTO
setting
=
this
.
enterpriseService
.
getEnterpriseSettingByEnterpriseId
(
enterpriseId
);
EnterpriseSettingDTO
setting
=
this
.
enterpriseService
.
getEnterpriseSettingByEnterpriseId
(
enterpriseId
);
int
dataPermission
=
0
;
int
dataPermission
=
0
;
...
@@ -154,7 +158,7 @@ public class FlatQueryController {
...
@@ -154,7 +158,7 @@ public class FlatQueryController {
dataPermission
=
setting
.
getDataPermission
();
dataPermission
=
setting
.
getDataPermission
();
}
}
for
(
FlatQueryCondition
condition
:
executeRequest
.
getQueryConditions
())
{
for
(
FlatQueryCondition
condition
:
executeRequest
.
getQueryConditions
())
{
System
.
out
.
println
(
condition
.
getFieldName
()
+
" "
+
condition
.
getFieldType
());
logger
.
info
(
condition
.
getFieldName
()
+
" "
+
condition
.
getFieldType
());
}
}
AuthorizedUser
loginUser
=
SessionContextUtils
.
getLoginUser
();
AuthorizedUser
loginUser
=
SessionContextUtils
.
getLoginUser
();
DhSearchLogDTO
dto
=
new
DhSearchLogDTO
();
DhSearchLogDTO
dto
=
new
DhSearchLogDTO
();
...
...
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