Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Z
zhj-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
zhj-report
Commits
9e024fc8
Commit
9e024fc8
authored
Jul 24, 2020
by
董建华
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
统计可查询量
parent
34b5a9f5
Changes
24
Hide whitespace changes
Inline
Side-by-side
Showing
24 changed files
with
980 additions
and
4 deletions
+980
-4
JpaDataConfig.java
src/main/java/com/config/JpaDataConfig.java
+109
-0
QueryStatisticsController.java
src/main/java/com/controller/QueryStatisticsController.java
+44
-0
Corporation.java
src/main/java/com/emums/Corporation.java
+6
-0
DataSource.java
src/main/java/com/emums/DataSource.java
+6
-0
ErrorType.java
src/main/java/com/emums/ErrorType.java
+60
-0
BaseRepositoryEntry.java
src/main/java/com/entity/jpa/BaseRepositoryEntry.java
+36
-0
QueryStatisticsEntry.java
src/main/java/com/entity/jpa/QueryStatisticsEntry.java
+68
-0
QueryStatisticsRepository.java
...in/java/com/jpa/repository/QueryStatisticsRepository.java
+17
-0
BaiHangMapper.java
src/main/java/com/mapper/report/BaiHangMapper.java
+19
-0
ZhjMapper.java
src/main/java/com/mapper/report/ZhjMapper.java
+15
-0
JsonResult.java
src/main/java/com/model/JsonResult.java
+60
-0
QueryStatisticsModel.java
src/main/java/com/model/QueryStatisticsModel.java
+23
-0
GetReportAndSearchNum.java
...in/java/com/service/statistics/GetReportAndSearchNum.java
+17
-0
QueryStatisticsService.java
...n/java/com/service/statistics/QueryStatisticsService.java
+25
-0
BaiHangReportAndSearchNum.java
...om/service/statistics/impl/BaiHangReportAndSearchNum.java
+118
-0
QueryStatisticsServiceImpl.java
...m/service/statistics/impl/QueryStatisticsServiceImpl.java
+134
-0
ZhjReportAndSearchNum.java
...va/com/service/statistics/impl/ZhjReportAndSearchNum.java
+69
-0
QueryStatisticsTimer.java
src/main/java/com/timer/QueryStatisticsTimer.java
+31
-0
ApplicationContextHelper.java
src/main/java/com/util/ApplicationContextHelper.java
+25
-0
DateUtil.java
src/main/java/com/util/DateUtil.java
+21
-1
Utils.java
src/main/java/com/util/Utils.java
+11
-2
BaiHangMapper.xml
src/main/resources/mybatis/report/BaiHangMapper.xml
+36
-0
ReportRecordMapper.xml
src/main/resources/mybatis/report/ReportRecordMapper.xml
+0
-1
ZhjMapper.xml
src/main/resources/mybatis/report/ZhjMapper.xml
+30
-0
No files found.
src/main/java/com/config/JpaDataConfig.java
0 → 100644
View file @
9e024fc8
package
com
.
config
;
import
cn.quantgroup.tech.util.TechEnvironment
;
import
com.zaxxer.hikari.HikariConfig
;
import
com.zaxxer.hikari.HikariDataSource
;
import
org.springframework.beans.factory.annotation.Qualifier
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.context.annotation.DependsOn
;
import
org.springframework.data.jpa.repository.config.EnableJpaRepositories
;
import
org.springframework.orm.jpa.JpaTransactionManager
;
import
org.springframework.orm.jpa.JpaVendorAdapter
;
import
org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean
;
import
org.springframework.orm.jpa.vendor.Database
;
import
org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter
;
import
org.springframework.transaction.PlatformTransactionManager
;
import
org.springframework.transaction.annotation.EnableTransactionManagement
;
import
javax.persistence.EntityManagerFactory
;
import
javax.sql.DataSource
;
import
java.util.Properties
;
import
java.util.concurrent.TimeUnit
;
/**
* @author :dongjianhua
* @date :Created in 2020/7/23 14:22
* @description:jpa数据源配置
* @modified By:
* @version: 1.0
*/
@Configuration
@EnableJpaRepositories
(
basePackages
=
{
"com.jpa.repository"
})
@EnableTransactionManagement
public
class
JpaDataConfig
{
@Value
(
"${db.minPoolSize}"
)
private
int
minPoolSize
;
@Value
(
"${db.maxPoolSize}"
)
private
int
maxPoolSize
;
@Value
(
"${data.source.jdbcUrl}"
)
private
String
jdbcUrl
;
@Value
(
"${data.source.username}"
)
private
String
username
;
@Value
(
"${data.source.password}"
)
private
String
password
;
@Bean
(
name
=
"jpaDataSource"
)
public
DataSource
dataSource
()
{
HikariConfig
config
=
new
HikariConfig
();
config
.
setJdbcUrl
(
jdbcUrl
);
config
.
setPassword
(
password
);
config
.
setUsername
(
username
);
// 连接池中允许的最大连接数。缺省值:10;推荐的公式:((core_count * 2) + effective_spindle_count)
//线上是双核机器,100已经非常多。。。。
config
.
setMaximumPoolSize
(
maxPoolSize
>
100
?
100
:
maxPoolSize
);
config
.
setMinimumIdle
(
20
);
//个连接idle状态的最大时长(毫秒),超时则被释放(retired),缺省:10分钟
config
.
setIdleTimeout
(
60000
);
//等待连接池分配连接的最大时长(毫秒),超过这个时长还没可用的连接则发生SQLException, 缺省:30秒
config
.
setConnectionTimeout
(
30000
);
config
.
setValidationTimeout
(
3000
);
//个连接的生命时长(毫秒),超时而且没被使用则被释放(retired),缺省:30分钟,建议设置比数据库超时时长少30秒,
// 参考MySQL wait_timeout参数(show variables like '%timeout%';)
config
.
setMaxLifetime
(
TimeUnit
.
HOURS
.
toMillis
(
7
));
config
.
addDataSourceProperty
(
"cachePrepStmts"
,
"true"
);
config
.
addDataSourceProperty
(
"prepStmtCacheSize"
,
"250"
);
config
.
addDataSourceProperty
(
"prepStmtCacheSqlLimit"
,
"2048"
);
return
new
HikariDataSource
(
config
);
}
@Bean
@DependsOn
(
value
=
"jpaDataSource"
)
public
EntityManagerFactory
entityManagerFactory
(
@Qualifier
(
"jpaDataSource"
)
DataSource
dataSource
)
{
LocalContainerEntityManagerFactoryBean
entityManager
=
new
LocalContainerEntityManagerFactoryBean
();
entityManager
.
setDataSource
(
dataSource
);
entityManager
.
setPackagesToScan
(
"com.entity"
);
entityManager
.
setPersistenceUnitName
(
"jpaDataSource"
);
Properties
properties
=
new
Properties
();
properties
.
put
(
"hibernate.jdbc.batch_size"
,
30
);
properties
.
put
(
"hibernate.order_inserts"
,
true
);
properties
.
put
(
"hibernate.order_updates"
,
true
);
entityManager
.
setJpaProperties
(
properties
);
entityManager
.
setJpaVendorAdapter
(
jpaVendorAdapter
());
entityManager
.
afterPropertiesSet
();
return
entityManager
.
getObject
();
}
private
JpaVendorAdapter
jpaVendorAdapter
()
{
HibernateJpaVendorAdapter
hibernateJpaVendorAdapter
=
new
HibernateJpaVendorAdapter
();
hibernateJpaVendorAdapter
.
setShowSql
(!
TechEnvironment
.
isPro
());
//測試環境打印sql
hibernateJpaVendorAdapter
.
setGenerateDdl
(
false
);
hibernateJpaVendorAdapter
.
setDatabase
(
Database
.
MYSQL
);
return
hibernateJpaVendorAdapter
;
}
@Bean
public
PlatformTransactionManager
transactionManager
(
EntityManagerFactory
entityManagerFactory
)
{
JpaTransactionManager
transactionManager
=
new
JpaTransactionManager
();
transactionManager
.
setEntityManagerFactory
(
entityManagerFactory
);
return
transactionManager
;
}
}
src/main/java/com/controller/QueryStatisticsController.java
0 → 100644
View file @
9e024fc8
package
com
.
controller
;
import
com.model.JsonResult
;
import
com.model.QueryStatisticsModel
;
import
com.service.statistics.QueryStatisticsService
;
import
com.util.DateUtil
;
import
org.springframework.format.annotation.DateTimeFormat
;
import
org.springframework.validation.annotation.Validated
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
import
javax.annotation.Resource
;
import
javax.validation.constraints.NotNull
;
import
javax.xml.crypto.Data
;
import
java.sql.Timestamp
;
import
java.time.LocalDate
;
import
java.time.format.DateTimeFormatter
;
import
java.util.Date
;
import
java.util.List
;
/**
* @author :dongjianhua
* @date :Created in 2020/7/23 19:09
* @description:
* @modified By:
* @version:
*/
@RequestMapping
(
"/statistics"
)
@RestController
public
class
QueryStatisticsController
{
@Resource
private
QueryStatisticsService
queryStatisticsService
;
@RequestMapping
(
"/query"
)
@Validated
public
JsonResult
query
(
@DateTimeFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
)
@NotNull
Date
start
,
@DateTimeFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
)
@NotNull
Date
end
){
List
<
QueryStatisticsModel
>
query
=
queryStatisticsService
.
query
(
new
Timestamp
(
start
.
getTime
()),
new
Timestamp
(
end
.
getTime
()));
return
JsonResult
.
success
(
query
);
}
}
src/main/java/com/emums/Corporation.java
0 → 100644
View file @
9e024fc8
package
com
.
emums
;
public
enum
Corporation
{
GUANGDAXIAODAI
,
//广大小贷
ZHONGXINLIMIN
//众信利民
}
src/main/java/com/emums/DataSource.java
0 → 100644
View file @
9e024fc8
package
com
.
emums
;
public
enum
DataSource
{
ZHJ
,
//中互金
BAIHANG
//百行
}
src/main/java/com/emums/ErrorType.java
0 → 100644
View file @
9e024fc8
package
com
.
emums
;
import
com.google.common.base.Strings
;
/**
* 定义错误类别,全局唯一
*
* @author xiaoguang.xu
* @date 2020-04-08
*/
public
enum
ErrorType
{
/**
* 正确。
*/
SUCCESS
(
"0"
,
"正确"
)
{
@Override
public
String
getFullCode
(
String
extendCode
)
{
return
this
.
getCode
();
}
},
/**
* 客户端错误,代表着客户端错误,一般情况下由客户端自行解决
*/
AUTH
(
"401"
,
"权限错误"
),
RATE_LIMIT
(
"402"
,
"流量控制"
),
PARAM
(
"403"
,
"参数错误"
),
URI
(
"404"
,
"请求地址错误"
),
CONCURRENT
(
"405"
,
"并发错误"
),
BEHAVE
(
"406"
,
"行为错误"
),
/**
* 服务端错误
*/
MIDDLEWARE
(
"501"
,
"中间件错误"
),
THIRD_PART
(
"502"
,
"第三方服务错误"
),
FAIL
(
"503"
,
"未保存"
),
/**
* 不可预知的错误,一般不会出现,出现时必须处理,包装成客户端错误或服务端错误
*/
UNKNOWN
(
"600"
,
"未知错误"
);
private
final
String
code
;
private
final
String
desc
;
protected
String
getCode
(){
return
this
.
code
;
}
ErrorType
(
String
code
,
String
desc
)
{
this
.
code
=
code
;
this
.
desc
=
desc
;
}
public
String
getFullCode
(
String
extendCode
)
{
return
this
.
code
+
Strings
.
padStart
(
extendCode
,
2
,
'0'
);
}
public
String
getDesc
()
{
return
desc
;
}
}
src/main/java/com/entity/jpa/BaseRepositoryEntry.java
0 → 100644
View file @
9e024fc8
package
com
.
entity
.
jpa
;
import
javax.persistence.Column
;
import
javax.persistence.PrePersist
;
import
javax.persistence.PreUpdate
;
import
java.io.Serializable
;
import
java.sql.Timestamp
;
/**
* @author :dongjianhua
* @date :Created in 2020/7/23 14:53
* @description:
* @modified By:
* @version:
*/
public
class
BaseRepositoryEntry
implements
Serializable
{
@Column
(
name
=
"create_at"
)
private
Timestamp
createdAt
;
@Column
(
name
=
"update_at"
)
private
Timestamp
updatedAt
;
@PrePersist
public
void
prePersist
()
{
Timestamp
timestamp
=
new
Timestamp
(
System
.
currentTimeMillis
());
createdAt
=
timestamp
;
updatedAt
=
timestamp
;
}
@PreUpdate
public
void
preUpdate
()
{
updatedAt
=
new
Timestamp
(
System
.
currentTimeMillis
());
}
}
src/main/java/com/entity/jpa/QueryStatisticsEntry.java
0 → 100644
View file @
9e024fc8
package
com
.
entity
.
jpa
;
import
com.emums.Corporation
;
import
com.emums.DataSource
;
import
lombok.Data
;
import
javax.persistence.*
;
import
java.sql.Timestamp
;
import
java.time.LocalDate
;
/**
* @author :dongjianhua
* @date :Created in 2020/7/23 14:56
* @description:统计实体
* @modified By:
* @version:
*/
@Entity
@Table
(
name
=
"query_statistics"
)
@Data
public
class
QueryStatisticsEntry
extends
BaseRepositoryEntry
{
private
static
final
long
serialVersionUID
=
8524346940155462970L
;
@Id
@GeneratedValue
(
strategy
=
GenerationType
.
IDENTITY
)
@Column
(
name
=
"id"
)
private
Long
id
;
/**
* 上报数量
*/
@Column
(
name
=
"report_num"
)
private
Long
reportNum
;
/**
* 上报时间精确到天
*/
@Column
(
name
=
"report_time"
)
private
Timestamp
reportTime
;
/**
* 上报月份
*/
@Column
(
name
=
"report_month"
)
private
String
reportMonth
;
/**
* 月查可查询量
*/
@Column
(
name
=
"query_quantity"
)
private
Long
queryQuantity
;
/**
* 月查可查询量
*/
@Column
(
name
=
"max_query_num"
)
private
Long
maxQueryNum
;
/**
*数据源(0,中互金,1百行)
*/
@Column
(
name
=
"data_suorce"
)
private
DataSource
dataSource
;
/**
* 报送主体
*/
@Column
(
name
=
"corporation"
)
private
Corporation
corporation
;
}
src/main/java/com/jpa/repository/QueryStatisticsRepository.java
0 → 100644
View file @
9e024fc8
package
com
.
jpa
.
repository
;
import
com.emums.DataSource
;
import
com.entity.jpa.QueryStatisticsEntry
;
import
org.springframework.data.jpa.repository.JpaRepository
;
import
org.springframework.data.jpa.repository.JpaSpecificationExecutor
;
import
java.sql.Timestamp
;
import
java.util.List
;
public
interface
QueryStatisticsRepository
extends
JpaRepository
<
QueryStatisticsEntry
,
Long
>,
JpaSpecificationExecutor
<
QueryStatisticsEntry
>
{
List
<
QueryStatisticsEntry
>
findByReportTimeAfterAndReportTimeBefore
(
Timestamp
start
,
Timestamp
end
);
List
<
QueryStatisticsEntry
>
findByReportTimeAndDataSource
(
Timestamp
time
,
DataSource
dataSource
);
List
<
QueryStatisticsEntry
>
findByReportMonthAndDataSource
(
String
month
,
DataSource
dataSource
);
}
src/main/java/com/mapper/report/BaiHangMapper.java
0 → 100644
View file @
9e024fc8
package
com
.
mapper
.
report
;
import
org.apache.ibatis.annotations.Param
;
import
org.springframework.stereotype.Repository
;
import
java.util.Date
;
@Repository
public
interface
BaiHangMapper
{
long
getGdXdSearchNum
(
@Param
(
"start"
)
Date
start
,
@Param
(
"end"
)
Date
end
);
long
getZxLmSearchNum
(
@Param
(
"start"
)
Date
start
,
@Param
(
"end"
)
Date
end
);
long
getZxLmReportNum
(
@Param
(
"start"
)
Date
start
,
@Param
(
"end"
)
Date
end
);
long
getGdXdReportNum
(
@Param
(
"start"
)
Date
start
,
@Param
(
"end"
)
Date
end
);
}
\ No newline at end of file
src/main/java/com/mapper/report/ZhjMapper.java
0 → 100644
View file @
9e024fc8
package
com
.
mapper
.
report
;
import
org.apache.ibatis.annotations.Param
;
import
org.springframework.stereotype.Repository
;
import
java.util.Date
;
@Repository
public
interface
ZhjMapper
{
long
getGdXdSearchNum
(
@Param
(
"start"
)
Date
start
,
@Param
(
"end"
)
Date
end
);
long
getGdXdReportNum
(
@Param
(
"start"
)
Date
start
,
@Param
(
"end"
)
Date
end
);
}
\ No newline at end of file
src/main/java/com/model/JsonResult.java
0 → 100644
View file @
9e024fc8
package
com
.
model
;
import
com.emums.ErrorType
;
import
lombok.Getter
;
/**
* 对外接口统一返回的对象
* @author xiaoguang.xu
* @date 2020-04-08
*/
@Getter
public
class
JsonResult
<
T
>
{
/** 消息代码:0-成功 */
private
String
code
;
/** 提示信息 */
private
String
msg
;
/** 返回数据 */
private
Object
data
;
/** 时间戳 */
private
Long
timestamp
;
private
JsonResult
()
{
this
.
timestamp
=
System
.
currentTimeMillis
();
}
private
JsonResult
(
ErrorType
errorType
,
String
extendCode
,
String
msg
,
Object
data
)
{
this
();
this
.
code
=
errorType
.
getFullCode
(
extendCode
);
this
.
msg
=
msg
;
this
.
data
=
data
;
}
public
static
<
T
>
JsonResult
<
T
>
success
()
{
return
buildResult
(
ErrorType
.
SUCCESS
);
}
public
static
<
T
>
JsonResult
<
T
>
success
(
T
data
)
{
return
buildResult
(
ErrorType
.
SUCCESS
,
null
,
null
,
data
);
}
public
static
<
T
>
JsonResult
<
T
>
error
(
ErrorType
errorType
,
String
extendCode
,
String
msg
)
{
return
buildResult
(
errorType
,
extendCode
,
msg
,
null
);
}
public
static
<
T
>
JsonResult
<
T
>
error
(
ErrorType
errorType
,
String
extendCode
,
String
msg
,
T
data
)
{
return
buildResult
(
errorType
,
extendCode
,
msg
,
data
);
}
public
static
<
T
>
JsonResult
<
T
>
unknownError
()
{
return
buildResult
(
ErrorType
.
UNKNOWN
);
}
private
static
<
T
>
JsonResult
<
T
>
buildResult
(
ErrorType
errorType
)
{
return
new
JsonResult
<
T
>(
errorType
,
""
,
errorType
.
getDesc
(),
null
);
}
private
static
<
T
>
JsonResult
<
T
>
buildResult
(
ErrorType
errorType
,
String
extendCode
,
String
msg
,
T
data
)
{
return
new
JsonResult
<
T
>(
errorType
,
extendCode
,
msg
,
data
);
}
}
src/main/java/com/model/QueryStatisticsModel.java
0 → 100644
View file @
9e024fc8
package
com
.
model
;
import
com.emums.Corporation
;
import
com.emums.DataSource
;
import
lombok.Data
;
/**
* @author :dongjianhua
* @date :Created in 2020/7/23 16:46
* @description:统计查询返回视图
* @modified By:
* @version:
*/
@Data
public
class
QueryStatisticsModel
{
private
Long
hasQueryNum
;
//已经查询量
private
Long
maxQueryNum
;
//最大可查
private
Long
canQueryNum
;
//剩余可查
private
String
time
;
private
DataSource
dataSource
;
//数据源
private
Corporation
corporation
;
//主体
}
src/main/java/com/service/statistics/GetReportAndSearchNum.java
0 → 100644
View file @
9e024fc8
package
com
.
service
.
statistics
;
import
com.emums.DataSource
;
import
com.entity.jpa.QueryStatisticsEntry
;
import
java.util.Date
;
import
java.util.List
;
/**
* 获取上报和查询数量
*/
public
interface
GetReportAndSearchNum
{
//通过日期获取那一天的数据
List
<
QueryStatisticsEntry
>
getByDate
(
Date
date
);
//获取数据源
DataSource
getDataSource
();
}
src/main/java/com/service/statistics/QueryStatisticsService.java
0 → 100644
View file @
9e024fc8
package
com
.
service
.
statistics
;
import
com.entity.jpa.QueryStatisticsEntry
;
import
com.model.QueryStatisticsModel
;
import
java.sql.Timestamp
;
import
java.util.Date
;
import
java.util.List
;
/**
* @author :dongjianhua
* @date :Created in 2020/7/23 16:50
* @description:查询统计服务
* @modified By:
* @version:
*/
public
interface
QueryStatisticsService
{
List
<
QueryStatisticsModel
>
query
(
Timestamp
start
,
Timestamp
end
);
void
statisticsAndSave
(
List
<
QueryStatisticsEntry
>
list
);
void
doStatisticsSave
(
Date
time
);
}
src/main/java/com/service/statistics/impl/BaiHangReportAndSearchNum.java
0 → 100644
View file @
9e024fc8
package
com
.
service
.
statistics
.
impl
;
import
com.emums.Corporation
;
import
com.emums.DataSource
;
import
com.entity.jpa.QueryStatisticsEntry
;
import
com.google.common.collect.Lists
;
import
com.jpa.repository.QueryStatisticsRepository
;
import
com.mapper.report.BaiHangMapper
;
import
com.service.statistics.GetReportAndSearchNum
;
import
com.util.DateUtil
;
import
org.springframework.stereotype.Service
;
import
javax.annotation.Resource
;
import
java.sql.Timestamp
;
import
java.util.Calendar
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.stream.Collector
;
import
java.util.stream.Collectors
;
/**
* @author :dongjianhua
* @date :Created in 2020/7/24 10:37
* @description:百行获取上报查询数量
* @modified By:
* @version: 1.0
*/
@Service
public
class
BaiHangReportAndSearchNum
implements
GetReportAndSearchNum
{
@Resource
private
BaiHangMapper
baiHangMapper
;
@Resource
private
QueryStatisticsRepository
queryStatisticsRepository
;
@Override
public
DataSource
getDataSource
()
{
return
DataSource
.
BAIHANG
;
}
@Override
public
List
<
QueryStatisticsEntry
>
getByDate
(
Date
date
)
{
Date
start
=
DateUtil
.
getDate
(
date
,
DateUtil
.
YYYY_MM_DD
);
Calendar
calendar
=
Calendar
.
getInstance
();
calendar
.
setTime
(
start
);
//增加一天
calendar
.
add
(
Calendar
.
DATE
,
1
);
//广达上报数量
long
gdXdReportNum
=
baiHangMapper
.
getGdXdReportNum
(
start
,
calendar
.
getTime
());
//众信利民上报数
long
zxLmReportNum
=
baiHangMapper
.
getZxLmReportNum
(
start
,
calendar
.
getTime
());
//众信利民查询数
long
zxLmSearchNum
=
baiHangMapper
.
getZxLmSearchNum
(
start
,
calendar
.
getTime
());
//广大小贷查询数
long
gdXdSearchNum
=
baiHangMapper
.
getGdXdSearchNum
(
start
,
calendar
.
getTime
());
QueryStatisticsEntry
zxlm
=
new
QueryStatisticsEntry
();
zxlm
.
setDataSource
(
getDataSource
());
zxlm
.
setCorporation
(
Corporation
.
ZHONGXINLIMIN
);
zxlm
.
setQueryQuantity
(
zxLmSearchNum
);
zxlm
.
setReportNum
(
zxLmReportNum
);
zxlm
.
setReportTime
(
new
Timestamp
(
start
.
getTime
()));
QueryStatisticsEntry
gdxd
=
new
QueryStatisticsEntry
();
gdxd
.
setDataSource
(
getDataSource
());
gdxd
.
setCorporation
(
Corporation
.
GUANGDAXIAODAI
);
gdxd
.
setQueryQuantity
(
gdXdSearchNum
);
gdxd
.
setReportNum
(
gdXdReportNum
);
gdxd
.
setReportTime
(
new
Timestamp
(
start
.
getTime
()));
//本月
Date
month
=
DateUtil
.
getDate
(
date
,
DateUtil
.
YYYY_MM
);
zxlm
.
setReportMonth
(
DateUtil
.
formatterDate
(
month
,
DateUtil
.
YYYY_MM
));
gdxd
.
setReportMonth
(
DateUtil
.
formatterDate
(
month
,
DateUtil
.
YYYY_MM
));
calendar
.
setTime
(
month
);
calendar
.
add
(
Calendar
.
MONTH
,-
1
);
//上月
String
preMonth
=
DateUtil
.
formatterDate
(
calendar
.
getTime
(),
DateUtil
.
YYYY_MM
);
List
<
QueryStatisticsEntry
>
byReportMonth
=
queryStatisticsRepository
.
findByReportMonthAndDataSource
(
preMonth
,
getDataSource
());
Map
<
Corporation
,
List
<
QueryStatisticsEntry
>>
groupByCorp
=
byReportMonth
.
stream
()
.
collect
(
Collectors
.
groupingBy
(
QueryStatisticsEntry:
:
getCorporation
));
//最大查询量为上月报送量*10
groupByCorp
.
forEach
((
k
,
v
)->{
long
sum
=
v
.
stream
()
.
mapToLong
(
QueryStatisticsEntry:
:
getReportNum
)
.
sum
();
if
(
k
==
Corporation
.
GUANGDAXIAODAI
){
gdxd
.
setMaxQueryNum
(
sum
*
10
);
}
if
(
k
==
Corporation
.
ZHONGXINLIMIN
){
zxlm
.
setMaxQueryNum
(
sum
*
10
);
}
});
return
Lists
.
newArrayList
(
zxlm
,
gdxd
);
}
}
src/main/java/com/service/statistics/impl/QueryStatisticsServiceImpl.java
0 → 100644
View file @
9e024fc8
package
com
.
service
.
statistics
.
impl
;
import
com.emums.Corporation
;
import
com.emums.DataSource
;
import
com.entity.jpa.QueryStatisticsEntry
;
import
com.google.common.collect.Lists
;
import
com.jpa.repository.QueryStatisticsRepository
;
import
com.model.QueryStatisticsModel
;
import
com.service.report.ReportService
;
import
com.service.statistics.GetReportAndSearchNum
;
import
com.service.statistics.QueryStatisticsService
;
import
com.util.ApplicationContextHelper
;
import
com.util.DateUtil
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.context.ApplicationContext
;
import
org.springframework.data.domain.Example
;
import
org.springframework.stereotype.Service
;
import
shaded.com.google.common.base.Splitter
;
import
javax.annotation.Resource
;
import
java.sql.Timestamp
;
import
java.time.LocalDate
;
import
java.time.format.DateTimeFormatter
;
import
java.util.Calendar
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.stream.Collectors
;
/**
* @author :dongjianhua
* @date :Created in 2020/7/23 16:51
* @description:服务实现
* @modified By:
* @version:
*/
@Service
public
class
QueryStatisticsServiceImpl
implements
QueryStatisticsService
{
@Resource
private
QueryStatisticsRepository
queryStatisticsRepository
;
@Resource
private
ApplicationContextHelper
applicationContextHelper
;
@Override
public
List
<
QueryStatisticsModel
>
query
(
Timestamp
start
,
Timestamp
end
)
{
List
<
QueryStatisticsModel
>
result
=
Lists
.
newArrayList
();
List
<
QueryStatisticsEntry
>
datas
=
queryStatisticsRepository
.
findByReportTimeAfterAndReportTimeBefore
(
start
,
end
);
Map
<
String
,
List
<
QueryStatisticsEntry
>>
collect
=
datas
.
stream
().
collect
(
Collectors
.
groupingBy
(
this
::
groupByKey
));
collect
.
forEach
((
k
,
v
)
->
result
.
add
(
convertQueryStatisticsModel
(
k
,
v
)));
return
result
;
}
@Override
public
void
statisticsAndSave
(
List
<
QueryStatisticsEntry
>
list
)
{
list
.
stream
().
forEach
(
queryStatisticsRepository:
:
save
);
}
@Override
public
void
doStatisticsSave
(
Date
time
)
{
ApplicationContext
context
=
applicationContextHelper
.
getInstance
();
Map
<
String
,
GetReportAndSearchNum
>
beansOfType
=
context
.
getBeansOfType
(
GetReportAndSearchNum
.
class
);
beansOfType
.
forEach
((
k
,
v
)
->
{
List
<
QueryStatisticsEntry
>
byDate
=
v
.
getByDate
(
time
);
//查询本日有没有
List
<
QueryStatisticsEntry
>
byReportTime
=
queryStatisticsRepository
.
findByReportTimeAndDataSource
(
new
Timestamp
(
time
.
getTime
()),
v
.
getDataSource
());
byDate
.
stream
().
forEach
(
o
->
{
byReportTime
.
forEach
(
q
->
{
if
(
o
.
getCorporation
()
==
q
.
getCorporation
())
{
o
.
setId
(
q
.
getId
());
}
});
o
.
setDataSource
(
v
.
getDataSource
());
o
.
setReportMonth
(
DateUtil
.
formatterDate
(
time
,
DateUtil
.
YYYY_MM
));
o
.
setReportTime
(
new
Timestamp
(
DateUtil
.
getDate
(
time
,
DateUtil
.
YYYY_MM_DD
).
getTime
()));
});
//保存
statisticsAndSave
(
byDate
);
});
}
/**
* 数据转换
* @param key
* @param list
* @return
*/
private
QueryStatisticsModel
convertQueryStatisticsModel
(
String
key
,
List
<
QueryStatisticsEntry
>
list
)
{
QueryStatisticsModel
model
=
new
QueryStatisticsModel
();
List
<
String
>
split
=
Splitter
.
on
(
"#"
).
splitToList
(
key
);
String
reportMonth
=
split
.
get
(
0
);
String
dataSource
=
split
.
get
(
1
);
String
corporation
=
split
.
get
(
2
);
//已经查询总量
long
sum
=
list
.
stream
().
mapToLong
(
QueryStatisticsEntry:
:
getQueryQuantity
).
sum
();
Long
maxQueryNum
=
list
.
stream
().
findAny
().
get
().
getMaxQueryNum
();
model
.
setTime
(
reportMonth
);
model
.
setDataSource
(
DataSource
.
valueOf
(
dataSource
));
model
.
setCorporation
(
Corporation
.
valueOf
(
corporation
));
model
.
setHasQueryNum
(
sum
);
model
.
setMaxQueryNum
(
maxQueryNum
);
model
.
setCanQueryNum
(
maxQueryNum
-
sum
);
return
model
;
}
/**
* 按照月份数据源主体分组
*
* @param q
* @return
*/
private
String
groupByKey
(
QueryStatisticsEntry
q
)
{
return
String
.
format
(
"%s#%s#%s"
,
q
.
getReportMonth
(),
q
.
getDataSource
().
name
(),
q
.
getCorporation
().
name
());
}
}
src/main/java/com/service/statistics/impl/ZhjReportAndSearchNum.java
0 → 100644
View file @
9e024fc8
package
com
.
service
.
statistics
.
impl
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONObject
;
import
com.emums.Corporation
;
import
com.emums.DataSource
;
import
com.entity.jpa.QueryStatisticsEntry
;
import
com.google.common.collect.Lists
;
import
com.mapper.report.ZhjMapper
;
import
com.service.report.ReportService
;
import
com.service.statistics.GetReportAndSearchNum
;
import
com.util.DateUtil
;
import
org.springframework.stereotype.Service
;
import
javax.annotation.Resource
;
import
java.util.Calendar
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.Map
;
/**
* @author :dongjianhua
* @date :Created in 2020/7/24 14:58
* @description:中互金
* @modified By:
* @version: 1.0
*/
@Service
public
class
ZhjReportAndSearchNum
implements
GetReportAndSearchNum
{
@Resource
private
ZhjMapper
zhjMapper
;
@Resource
private
ReportService
reportService
;
@Override
public
List
<
QueryStatisticsEntry
>
getByDate
(
Date
date
)
{
Date
start
=
DateUtil
.
getDate
(
date
,
DateUtil
.
YYYY_MM_DD
);
Calendar
calendar
=
Calendar
.
getInstance
();
calendar
.
setTime
(
start
);
//增加一天
calendar
.
add
(
Calendar
.
DATE
,
1
);
long
gdXdReportNum
=
zhjMapper
.
getGdXdReportNum
(
start
,
calendar
.
getTime
());
long
gdXdSearchNum
=
zhjMapper
.
getGdXdSearchNum
(
start
,
calendar
.
getTime
());
QueryStatisticsEntry
entry
=
new
QueryStatisticsEntry
();
entry
.
setReportNum
(
gdXdReportNum
);
entry
.
setQueryQuantity
(
gdXdSearchNum
);
entry
.
setMaxQueryNum
(
0L
);
entry
.
setCorporation
(
Corporation
.
GUANGDAXIAODAI
);
Map
<
String
,
String
>
resultMap
=
reportService
.
querycontral
();
if
(
resultMap
.
get
(
"code"
).
equals
(
"200"
)){
String
data
=
resultMap
.
get
(
"data"
);
JSONObject
parse
=
JSON
.
parseObject
(
data
);
String
maxquerycount
=
parse
.
getString
(
"maxquerycount"
);
entry
.
setMaxQueryNum
(
Long
.
valueOf
(
maxquerycount
));
}
return
Lists
.
newArrayList
(
entry
);
}
@Override
public
DataSource
getDataSource
()
{
return
DataSource
.
ZHJ
;
}
}
src/main/java/com/timer/QueryStatisticsTimer.java
0 → 100644
View file @
9e024fc8
package
com
.
timer
;
import
com.service.statistics.QueryStatisticsService
;
import
org.springframework.scheduling.annotation.Scheduled
;
import
org.springframework.stereotype.Component
;
import
javax.annotation.Resource
;
import
java.util.Calendar
;
/**
* @author :dongjianhua
* @date :Created in 2020/7/24 15:42
* @description:统计定时器
* @modified By:
* @version: 1.0
*/
@Component
public
class
QueryStatisticsTimer
{
@Resource
private
QueryStatisticsService
queryStatisticsService
;
@Scheduled
(
fixedDelay
=
1000
*
60
*
60
,
initialDelay
=
10000
)
public
void
run
()
{
Calendar
calendar
=
Calendar
.
getInstance
();
calendar
.
add
(
Calendar
.
DATE
,
-
1
);
queryStatisticsService
.
doStatisticsSave
(
calendar
.
getTime
());
}
}
src/main/java/com/util/ApplicationContextHelper.java
0 → 100644
View file @
9e024fc8
package
com
.
util
;
import
org.springframework.beans.BeansException
;
import
org.springframework.context.ApplicationContext
;
import
org.springframework.context.ApplicationContextAware
;
import
org.springframework.stereotype.Component
;
/**
* @author :dongjianhua
* @date :Created in 2020/7/24 15:48
* @description:spring上下文
* @modified By:
* @version: 1.0
*/
@Component
public
class
ApplicationContextHelper
implements
ApplicationContextAware
{
private
ApplicationContext
applicationContext
;
@Override
public
void
setApplicationContext
(
ApplicationContext
applicationContext
)
throws
BeansException
{
this
.
applicationContext
=
applicationContext
;
}
public
ApplicationContext
getInstance
(){
return
applicationContext
;
}
}
src/main/java/com/util/DateUtil.java
View file @
9e024fc8
package
com
.
util
;
import
java.math.BigDecimal
;
import
java.text.ParseException
;
import
java.text.SimpleDateFormat
;
import
java.time.Instant
;
import
java.time.LocalDate
;
import
java.time.LocalDateTime
;
import
java.time.ZoneId
;
import
java.time.format.DateTimeFormatter
;
import
java.util.Calendar
;
import
java.util.Date
;
...
...
@@ -26,6 +30,7 @@ public class DateUtil {
public
static
final
String
YYYYMMDD
=
"yyyyMMdd"
;
public
static
final
String
YYYYMM
=
"yyyyMM"
;
public
static
final
String
YYYY_MM
=
"yyyy-MM"
;
public
static
String
getCurrentDay
(
int
day
)
{
return
getCurrentDay
(
day
,
YYYY_MM_DD_MM_HH_SS
);
...
...
@@ -143,4 +148,19 @@ public class DateUtil {
return
null
;
}
public
static
LocalDate
dateToLocalDateTime
(
Date
date
)
{
Instant
instant
=
date
.
toInstant
();
ZoneId
zone
=
ZoneId
.
systemDefault
();
return
LocalDateTime
.
ofInstant
(
instant
,
zone
).
toLocalDate
();
}
public
static
Date
getDate
(
Date
date
,
String
pattern
){
SimpleDateFormat
dateFormatNew
=
new
SimpleDateFormat
(
pattern
);
try
{
return
dateFormatNew
.
parse
(
dateFormatNew
.
format
(
date
));
}
catch
(
ParseException
e
)
{
e
.
printStackTrace
();
}
return
null
;
}
}
src/main/java/com/util/Utils.java
View file @
9e024fc8
...
...
@@ -374,8 +374,17 @@ public class Utils {
return
result
;
}
//判断编码格式方法
private
String
getFilecharset
(
FileInputStream
sourceFile
)
{
// public static void main(String[] args) {
// String path = "C:\\Users\\41276\\Desktop\\121EXPORTTRADEINFO.txt";
// try {
// System.out.println(getFilecharset(new FileInputStream(new File(path))));
// } catch (FileNotFoundException e) {
// e.printStackTrace();
// }
// }
//判断编码格式方法
private
static
String
getFilecharset
(
FileInputStream
sourceFile
)
{
String
charset
=
"GBK"
;
byte
[]
first3Bytes
=
new
byte
[
3
];
try
{
...
...
src/main/resources/mybatis/report/BaiHangMapper.xml
0 → 100644
View file @
9e024fc8
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper
namespace=
"com.mapper.report.BaiHangMapper"
>
<select
id=
"getGdXdSearchNum"
resultType=
"long"
>
--广达百行查询量--
SELECT count(*) from common_request_event
WHERE time_created
<
#{end}
and time_created >= #{start}
and request_url_type = 'BaiHangPersionalCreditReport'
</select>
<select
id=
"getZxLmSearchNum"
resultType=
"long"
>
--众信利民百行查询量--
SELECT count(*) from common_request_event
WHERE request_url_type in ('BaiHangPersionalCreditReportZxlmA','BaiHangPersionalCreditReportZxlmB','BaiHangPersionalCreditReportZxlmC')
and time_created
<
#{end}
and time_created >= #{start}
</select>
<select
id=
"getZxLmReportNum"
resultType=
"long"
>
--众信利民实体报送量--
SELECT count(*) num from loan_info where created_at >= #{start} and created_at
<
#{end} AND enable = 1
</select>
<select
id=
"getGdXdReportNum"
resultType=
"long"
>
--广达实体报送量--
SELECT count(*) num from loan_info where created_at >= #{start} and created_at
<
#{end} AND enable = 1
</select>
</mapper>
\ No newline at end of file
src/main/resources/mybatis/report/ReportRecordMapper.xml
View file @
9e024fc8
...
...
@@ -116,5 +116,4 @@
order by id
</select>
</mapper>
\ No newline at end of file
src/main/resources/mybatis/report/ZhjMapper.xml
0 → 100644
View file @
9e024fc8
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper
namespace=
"com.mapper.report.BaiHangMapper"
>
<select
id=
"getGdXdSearchNum"
resultType=
"long"
>
--广达中互金查询量--
SELECT count(*) FROM common_request_event c WHERE
c.request_url_type
in ('ZhongHuJinThreeElement','ZhongHuJinWholeIn','ZhongHuJinCreditReport','ZhongHuJinJudicial','ZhongHuJinCreditReportPl')
and time_created >= #{start} and time_created
<
#{end}
</select>
<select
id=
"getGdXdReportNum"
resultType=
"long"
>
--广达实体报送量--
select
SUM(loadcount)
from
reportrecord
where
createtime >= #{start} and createtime
<
#{end}
and
RIGHT(filename,4) = '0000'
and
issearch=1
and
status=1
</select>
</mapper>
\ 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