Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
Z
zrqx-statistics-2.0
Project
Project
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
Graph
比较
统计图
议题
0
议题
0
列表
看板
标记
Milestones
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
注册表
注册表
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
svn
zrqx-statistics-2.0
Commits
d90f8765
提交
d90f8765
authored
12月 16, 2020
作者:
chaoyanjun
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
--no commit message
上级
46d3acd9
隐藏空白字符变更
内嵌
并排
正在显示
17 个修改的文件
包含
319 行增加
和
127 行删除
+319
-127
TxAdviceInterceptor.java
src/main/java/com/zrqx/core/aspect/TxAdviceInterceptor.java
+0
-91
ProjectManagementStatusEnum.java
...java/com/zrqx/core/enums/ProjectManagementStatusEnum.java
+25
-1
ProjectPageForm.java
...main/java/com/zrqx/core/form/project/ProjectPageForm.java
+6
-1
TimeApplyAddForm.java
...n/java/com/zrqx/core/form/timeApply/TimeApplyAddForm.java
+6
-1
PublisherProjectVo.java
.../java/com/zrqx/core/model/project/PublisherProjectVo.java
+28
-0
StatisticsTaskTime.java
...va/com/zrqx/core/model/statistics/StatisticsTaskTime.java
+3
-0
TimeApply.java
src/main/java/com/zrqx/core/model/timeApply/TimeApply.java
+2
-0
DelHtmlTagsUtils.java
...java/com/zrqx/core/util/delHtmlTags/DelHtmlTagsUtils.java
+48
-0
Start.java
src/main/java/com/zrqx/statistics/Start.java
+28
-0
TimeApplyChangeController.java
...stics/TimeApply/controller/TimeApplyChangeController.java
+4
-0
StatisticsServiceImpl.java
.../zrqx/statistics/index/service/StatisticsServiceImpl.java
+42
-7
StatisticsTaskMapper.java
.../zrqx/statistics/preSale/mapper/StatisticsTaskMapper.java
+22
-5
StatisticsTaskServiceImpl.java
...statistics/preSale/service/StatisticsTaskServiceImpl.java
+9
-9
ProjectController.java
...zrqx/statistics/project/controller/ProjectController.java
+12
-2
StatisticsProjectMapper.java
...qx/statistics/project/mapper/StatisticsProjectMapper.java
+30
-2
StatisticsProjectService.java
.../statistics/project/service/StatisticsProjectService.java
+3
-2
StatisticsProjectServiceImpl.java
...tistics/project/service/StatisticsProjectServiceImpl.java
+51
-6
没有找到文件。
src/main/java/com/zrqx/core/aspect/TxAdviceInterceptor.java
deleted
100644 → 0
浏览文件 @
46d3acd9
package
com
.
zrqx
.
core
.
aspect
;
import
java.util.Collections
;
import
java.util.HashMap
;
import
java.util.Map
;
import
javax.sql.DataSource
;
import
org.aspectj.lang.annotation.Aspect
;
import
org.springframework.aop.Advisor
;
import
org.springframework.aop.aspectj.AspectJExpressionPointcut
;
import
org.springframework.aop.support.DefaultPointcutAdvisor
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.core.annotation.Order
;
import
org.springframework.jdbc.datasource.DataSourceTransactionManager
;
import
org.springframework.transaction.PlatformTransactionManager
;
import
org.springframework.transaction.TransactionDefinition
;
import
org.springframework.transaction.interceptor.NameMatchTransactionAttributeSource
;
import
org.springframework.transaction.interceptor.RollbackRuleAttribute
;
import
org.springframework.transaction.interceptor.RuleBasedTransactionAttribute
;
import
org.springframework.transaction.interceptor.TransactionAttribute
;
import
org.springframework.transaction.interceptor.TransactionInterceptor
;
/**
*
* @author lpf
* @date 2018年12月26日下午5:25:20
*/
@Aspect
@Order
(
1
)
@Configuration
public
class
TxAdviceInterceptor
{
private
static
final
int
TX_METHOD_TIMEOUT
=
120
;
public
static
final
String
AOP_POINTCUT_EXPRESSION
=
"(execution(* com.zrqx..service..*Impl.*(..)))"
;
@Autowired
private
PlatformTransactionManager
transactionManager
;
@Bean
(
name
=
"transactionManager"
)
public
PlatformTransactionManager
transactionManager
(
DataSource
dataSource
)
{
return
new
DataSourceTransactionManager
(
dataSource
);
}
@Bean
public
TransactionInterceptor
txAdvice
()
{
NameMatchTransactionAttributeSource
source
=
new
NameMatchTransactionAttributeSource
();
/*只读事务,不做更新操作*/
RuleBasedTransactionAttribute
readOnlyTx
=
new
RuleBasedTransactionAttribute
();
readOnlyTx
.
setReadOnly
(
true
);
readOnlyTx
.
setPropagationBehavior
(
TransactionDefinition
.
PROPAGATION_REQUIRED
);
/*当前存在事务就使用当前事务,当前不存在事务就创建一个新的事务*/
RuleBasedTransactionAttribute
requiredTx
=
new
RuleBasedTransactionAttribute
();
requiredTx
.
setRollbackRules
(
Collections
.
singletonList
(
new
RollbackRuleAttribute
(
Exception
.
class
)));
requiredTx
.
setPropagationBehavior
(
TransactionDefinition
.
PROPAGATION_REQUIRED
);
requiredTx
.
setTimeout
(
TX_METHOD_TIMEOUT
);
Map
<
String
,
TransactionAttribute
>
txMap
=
new
HashMap
<>();
txMap
.
put
(
"add*"
,
requiredTx
);
txMap
.
put
(
"save*"
,
requiredTx
);
txMap
.
put
(
"insert*"
,
requiredTx
);
txMap
.
put
(
"update*"
,
requiredTx
);
txMap
.
put
(
"batch*"
,
requiredTx
);
txMap
.
put
(
"delete*"
,
requiredTx
);
txMap
.
put
(
"get*"
,
readOnlyTx
);
txMap
.
put
(
"query*"
,
readOnlyTx
);
txMap
.
put
(
"select*"
,
readOnlyTx
);
txMap
.
put
(
"page*"
,
readOnlyTx
);
txMap
.
put
(
"list*"
,
readOnlyTx
);
source
.
setNameMap
(
txMap
);
TransactionInterceptor
txAdvice
=
new
TransactionInterceptor
(
transactionManager
,
source
);
return
txAdvice
;
}
@Bean
public
Advisor
txAdviceAdvisor
()
{
AspectJExpressionPointcut
pointcut
=
new
AspectJExpressionPointcut
();
pointcut
.
setExpression
(
AOP_POINTCUT_EXPRESSION
);
return
new
DefaultPointcutAdvisor
(
pointcut
,
txAdvice
());
//return new DefaultPointcutAdvisor(pointcut, txAdvice);
}
}
\ No newline at end of file
src/main/java/com/zrqx/core/enums/ProjectManagementStatusEnum.java
浏览文件 @
d90f8765
...
...
@@ -2,6 +2,8 @@ package com.zrqx.core.enums;
import
java.util.HashMap
;
import
org.apache.commons.lang3.StringUtils
;
public
enum
ProjectManagementStatusEnum
{
/** 售前<br> 售前 */
...
...
@@ -17,7 +19,12 @@ public enum ProjectManagementStatusEnum {
/** 试运行<br> 试运行 */
TESTRUN
(
"testRun"
,
"试运行"
),
/** 需求变更<br> 需求变更 */
DEMANDCHANGE
(
"demandChange"
,
"需求变更"
);
DEMANDCHANGE
(
"demandChange"
,
"需求变更"
),
/** 开发完成<br> 开发完成 */
DEVEFINISH
(
"deveFinish"
,
"开发完成"
),
/** 验收完成<br> 验收完成 */
ACCEPFINISH
(
"accepFinish"
,
"验收完成"
);
private
final
String
code
;
...
...
@@ -46,6 +53,23 @@ public enum ProjectManagementStatusEnum {
}
/**
* 通过中文名称获取ID
* @param code
* @return
*/
public
static
String
getCode
(
String
name
)
{
if
(
StringUtils
.
isBlank
(
name
))
{
return
null
;
}
for
(
ProjectManagementStatusEnum
mt
:
values
())
{
if
(
mt
.
getName
().
equals
(
name
))
{
return
mt
.
getCode
();
}
}
return
null
;
}
/**
* 获取所有的枚举,以MAP返回
* @return
*/
...
...
src/main/java/com/zrqx/core/form/project/ProjectPageForm.java
浏览文件 @
d90f8765
package
com
.
zrqx
.
core
.
form
.
project
;
import
lombok.Data
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
/** 项目列表分页form */
@Data
@ApiModel
(
"ProjectPageForm"
)
public
class
ProjectPageForm
{
@ApiModelProperty
(
"项目名称"
)
...
...
@@ -17,4 +19,7 @@ public class ProjectPageForm {
private
String
str
;
@ApiModelProperty
(
"团队成员"
)
private
String
teamMemberName
;
@ApiModelProperty
(
"出版社名称"
)
private
String
publisherName
;
}
src/main/java/com/zrqx/core/form/timeApply/TimeApplyAddForm.java
浏览文件 @
d90f8765
...
...
@@ -32,5 +32,10 @@ public class TimeApplyAddForm {
@ApiModelProperty
(
"审核状态 0:待审核 1:已审核 默认未审核"
)
private
String
status1
;
@ApiModelProperty
(
"审核状态 3:待审核 4:已审核 默认未审核"
)
private
String
status2
;
private
String
status2
;
/** 新增 */
@ApiModelProperty
(
"上传附件时返回的唯一标识"
)
private
String
pdfLable
;
}
src/main/java/com/zrqx/core/model/project/PublisherProjectVo.java
0 → 100644
浏览文件 @
d90f8765
package
com
.
zrqx
.
core
.
model
.
project
;
import
java.util.List
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
@Data
@ApiModel
(
"PublisherProjectVo"
)
public
class
PublisherProjectVo
{
@ApiModelProperty
(
"出版社名称"
)
private
String
publisherName
;
@ApiModelProperty
(
"所包含项目数"
)
private
Integer
sumProjectNum
;
@ApiModelProperty
(
"已验收项目数"
)
private
Integer
deveFinishNum
;
@ApiModelProperty
(
"进行中项目数"
)
private
Integer
doingNum
;
@ApiModelProperty
(
"所属项目内容"
)
private
List
<
StatisticsProject
>
list
;
}
src/main/java/com/zrqx/core/model/statistics/StatisticsTaskTime.java
浏览文件 @
d90f8765
...
...
@@ -44,4 +44,7 @@ public class StatisticsTaskTime {
private
String
startTime
;
@ApiModelProperty
(
"结束时间"
)
private
String
endTime
;
@ApiModelProperty
(
"所属出版社"
)
private
String
publisher
;
}
src/main/java/com/zrqx/core/model/timeApply/TimeApply.java
浏览文件 @
d90f8765
...
...
@@ -52,4 +52,6 @@ public class TimeApply {
/** 新增 */
@ApiModelProperty
(
"上传PDF时返回的唯一标识"
)
private
String
pdfLable
;
@ApiModelProperty
(
"申请人id"
)
private
String
createrId
;
}
src/main/java/com/zrqx/core/util/delHtmlTags/DelHtmlTagsUtils.java
0 → 100644
浏览文件 @
d90f8765
package
com
.
zrqx
.
core
.
util
.
delHtmlTags
;
/**
* 去除文章内容页页面代码里的HTML标签
* Created by yanyl on 2018/6/4.
*/
public
class
DelHtmlTagsUtils
{
/**
* 去除html代码中含有的标签
* @param htmlStr
* @return
*/
public
static
String
delHtmlTags
(
String
htmlStr
)
{
//定义script的正则表达式,去除js可以防止注入
String
scriptRegex
=
"<script[^>]*?>[\\s\\S]*?<\\/script>"
;
//定义style的正则表达式,去除style样式,防止css代码过多时只截取到css样式代码
String
styleRegex
=
"<style[^>]*?>[\\s\\S]*?<\\/style>"
;
//定义style的正则表达式,去除li
String
liRegex
=
"<style[^>]*?>[\\s\\S]*?<\\/li>"
;
//定义HTML标签的正则表达式,去除标签,只提取文字内容
String
htmlRegex
=
"<[^>]+>"
;
//定义空格,回车,换行符,制表符
String
spaceRegex
=
"\\s*|\t|\r|\n"
;
// 过滤script标签
htmlStr
=
htmlStr
.
replaceAll
(
scriptRegex
,
""
);
// 过滤style标签
htmlStr
=
htmlStr
.
replaceAll
(
styleRegex
,
""
);
// 过滤html标签
htmlStr
=
htmlStr
.
replaceAll
(
htmlRegex
,
""
);
// 过滤空格等
htmlStr
=
htmlStr
.
replaceAll
(
spaceRegex
,
""
);
return
htmlStr
.
trim
();
// 返回文本字符串
}
/**
* 获取HTML代码里的内容
* @param htmlStr
* @return
*/
public
static
String
getTextFromHtml
(
String
htmlStr
){
//去除html标签
htmlStr
=
delHtmlTags
(
htmlStr
);
//去除空格" "
htmlStr
=
htmlStr
.
replaceAll
(
" "
,
""
);
return
htmlStr
;
}
}
src/main/java/com/zrqx/statistics/Start.java
浏览文件 @
d90f8765
package
com
.
zrqx
.
statistics
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.boot.SpringApplication
;
import
org.springframework.boot.autoconfigure.EnableAutoConfiguration
;
import
org.springframework.boot.autoconfigure.SpringBootApplication
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.ComponentScan
;
import
org.springframework.scheduling.annotation.EnableScheduling
;
import
com.alibaba.druid.pool.DruidDataSource
;
import
lombok.extern.slf4j.Slf4j
;
import
springfox.documentation.swagger2.annotations.EnableSwagger2
;
...
...
@@ -18,9 +22,33 @@ import springfox.documentation.swagger2.annotations.EnableSwagger2;
@Slf4j
public
class
Start
{
@Value
(
"${spring-datasource-url}"
)
private
String
url
;
@Value
(
"${spring-datasource-username}"
)
private
String
username
;
@Value
(
"${spring-datasource-password}"
)
private
String
password
;
public
static
void
main
(
String
[]
args
)
{
SpringApplication
.
run
(
Start
.
class
,
args
);
log
.
info
(
"项目已启动......."
);
}
@Bean
public
DruidDataSource
dataSource
()
{
DruidDataSource
dataSource
=
new
DruidDataSource
();
dataSource
.
setUrl
(
url
);
dataSource
.
setUsername
(
username
);
// 用户名
dataSource
.
setPassword
(
password
);
// 密码
dataSource
.
setInitialSize
(
2
);
dataSource
.
setMaxActive
(
20
);
dataSource
.
setMinIdle
(
0
);
dataSource
.
setMaxWait
(
60000
);
dataSource
.
setValidationQuery
(
"SELECT 1"
);
dataSource
.
setTestOnBorrow
(
false
);
dataSource
.
setTestWhileIdle
(
true
);
dataSource
.
setPoolPreparedStatements
(
false
);
return
dataSource
;
}
}
src/main/java/com/zrqx/statistics/TimeApply/controller/TimeApplyChangeController.java
浏览文件 @
d90f8765
...
...
@@ -23,6 +23,7 @@ import com.zrqx.core.form.timeApply.TimeApplyForm;
import
com.zrqx.core.form.timeApply.UpdateTimeApplyForm
;
import
com.zrqx.core.model.timeApply.TimeApply
;
import
com.zrqx.core.model.timeApply.TimeApplyChange
;
import
com.zrqx.core.redis.Redis
;
import
com.zrqx.core.response.CallBack
;
import
com.zrqx.core.util.bean.BeanUtils
;
import
com.zrqx.core.util.datatype.ArrayUtils
;
...
...
@@ -46,6 +47,8 @@ public class TimeApplyChangeController {
private
TimeApplyChangeService
timeApplyChangeService
;
@Autowired
private
TimeChangeService
timeChangeService
;
@Autowired
private
Redis
redis
;
/**
* 查询申请页列表
...
...
@@ -107,6 +110,7 @@ public class TimeApplyChangeController {
entity
.
setStartTime1
(
startTime1
);
entity
.
setEndTime1
(
endTime1
);
entity
.
setSynchronous
(
"0"
);
entity
.
setCreaterId
(
redis
.
getUser
().
getId
());
return
CallBack
.
success
(
timeApplyChangeService
.
insert
(
entity
));
}
...
...
src/main/java/com/zrqx/statistics/index/service/StatisticsServiceImpl.java
浏览文件 @
d90f8765
...
...
@@ -131,8 +131,8 @@ public class StatisticsServiceImpl extends BaseServiceImpl<StatisticsTaskTime, S
//查项目拆分详情
StatisticsTaskTimeForm
query
=
new
StatisticsTaskTimeForm
();
query
.
setAccount
(
v
.
getName
());
query
.
setEndTime
(
v
.
getEndTime
());
query
.
setStartTime
(
v
.
getStartTime
());
query
.
setEndTime
(
form
.
getEndTime
());
query
.
setStartTime
(
form
.
getStartTime
());
List
<
StatisticsTaskTime
>
list
=
staPService
.
queryProjectSplitData
(
query
);
double
beyondTime
=
list
.
stream
().
mapToDouble
(
StatisticsTaskTime
::
getBeyondTime
).
sum
();
//总Bug超出工时
v
.
setBeyondTime
(
new
BigDecimal
(
beyondTime
).
setScale
(
2
,
BigDecimal
.
ROUND_HALF_UP
).
doubleValue
());
...
...
@@ -143,6 +143,7 @@ public class StatisticsServiceImpl extends BaseServiceImpl<StatisticsTaskTime, S
double
finishTime
=
list
.
stream
().
mapToDouble
(
StatisticsTaskTime
::
getFinishTime
).
sum
();
//最终工时
v
.
setFinishTime
(
new
BigDecimal
(
finishTime
).
setScale
(
2
,
BigDecimal
.
ROUND_HALF_UP
).
doubleValue
());
v
.
setBugNum
(
list
.
stream
().
mapToInt
(
StatisticsTaskTime
::
getBugNum
).
sum
());
v
.
setLevel
(
list
.
get
(
0
).
getLevel
());
});
return
new
PageInfo
<
StatisticsTaskTime
>(
list1
);
}
...
...
@@ -299,7 +300,6 @@ public class StatisticsServiceImpl extends BaseServiceImpl<StatisticsTaskTime, S
// 前端研发
if
(
dept
.
contains
(
"前端"
))
{
monthsData
=
spMapper
.
selectEChartsDatams
(
"前端研发"
);
//monthsData = formatMonths(monthsData,"前端研发");
quarterData
=
spMapper
.
selectEChartsDataQs
(
"前端研发"
);
yearsData
=
spMapper
.
selectEChartsDataYs
(
"前端研发"
);
...
...
@@ -307,7 +307,6 @@ public class StatisticsServiceImpl extends BaseServiceImpl<StatisticsTaskTime, S
// 后端研发
if
(
dept
.
contains
(
"后端"
))
{
monthsData
=
spMapper
.
selectEChartsDatams
(
"后端研发"
);
//monthsData = formatMonths(monthsData,"后端研发");
quarterData
=
spMapper
.
selectEChartsDataQs
(
"后端研发"
);
yearsData
=
spMapper
.
selectEChartsDataYs
(
"后端研发"
);
...
...
@@ -315,7 +314,6 @@ public class StatisticsServiceImpl extends BaseServiceImpl<StatisticsTaskTime, S
// 产品部
if
(
dept
.
contains
(
"产品"
))
{
monthsData
=
spMapper
.
selectEChartsDatams
(
"产品部"
);
//monthsData = formatMonths(monthsData,"产品部");
quarterData
=
spMapper
.
selectEChartsDataQs
(
"产品部"
);
yearsData
=
spMapper
.
selectEChartsDataYs
(
"产品部"
);
...
...
@@ -323,7 +321,6 @@ public class StatisticsServiceImpl extends BaseServiceImpl<StatisticsTaskTime, S
// 设计部
if
(
dept
.
contains
(
"设计"
))
{
monthsData
=
spMapper
.
selectEChartsDatams
(
"设计部"
);
//monthsData = formatMonths(monthsData,"设计部");
quarterData
=
spMapper
.
selectEChartsDataQs
(
"设计部"
);
yearsData
=
spMapper
.
selectEChartsDataYs
(
"设计部"
);
...
...
@@ -332,6 +329,10 @@ public class StatisticsServiceImpl extends BaseServiceImpl<StatisticsTaskTime, S
Map
<
String
,
List
<
EchartsDataQuartersVo
>>
quarters
=
quarterData
.
stream
().
collect
(
Collectors
.
groupingBy
(
EchartsDataQuartersVo:
:
getName
));
Map
<
String
,
List
<
EchartsDataYearsVo
>>
years
=
yearsData
.
stream
().
collect
(
Collectors
.
groupingBy
(
EchartsDataYearsVo:
:
getName
));
months
.
forEach
((
k
,
v
)
->{
formatMonths
(
v
,
k
);
});
vo
.
setMonths
(
months
);
vo
.
setQuarters
(
quarters
);
vo
.
setYears
(
years
);
...
...
@@ -340,7 +341,7 @@ public class StatisticsServiceImpl extends BaseServiceImpl<StatisticsTaskTime, S
}
//格式化日期 month
public
List
<
EchartsDataMonthsVo
>
formatMonths
(
List
<
EchartsDataMonthsVo
>
list
,
String
deptN
ame
){
public
List
<
EchartsDataMonthsVo
>
formatMonths
(
List
<
EchartsDataMonthsVo
>
list
,
String
n
ame
){
List
<
String
>
months
=
new
ArrayList
<
String
>();
LocalDate
today
=
LocalDate
.
now
();
for
(
long
i
=
1L
;
i
<=
12L
;
i
++){
...
...
@@ -349,8 +350,10 @@ public class StatisticsServiceImpl extends BaseServiceImpl<StatisticsTaskTime, S
months
.
add
(
ss
);
}
List
<
String
>
date
=
new
ArrayList
<
String
>();
String
deptName
=
""
;
for
(
EchartsDataMonthsVo
m
:
list
)
{
date
.
add
(
m
.
getMonths
());
deptName
=
m
.
getDeptName
();
}
for
(
String
m
:
months
)
{
if
(
date
.
contains
(
m
))
{
...
...
@@ -359,6 +362,7 @@ public class StatisticsServiceImpl extends BaseServiceImpl<StatisticsTaskTime, S
EchartsDataMonthsVo
vo
=
new
EchartsDataMonthsVo
();
vo
.
setMonths
(
m
);
vo
.
setDeptName
(
deptName
);
vo
.
setName
(
name
);
vo
.
setSumTime
(
0.0
);
list
.
add
(
vo
);
}
...
...
@@ -366,4 +370,35 @@ public class StatisticsServiceImpl extends BaseServiceImpl<StatisticsTaskTime, S
List
<
EchartsDataMonthsVo
>
collect4
=
list
.
stream
().
sorted
(
Comparator
.
comparing
(
EchartsDataMonthsVo:
:
getMonths
)).
collect
(
Collectors
.
toList
());
return
collect4
;
}
//格式化日期 quarter
public
List
<
EchartsDataQuartersVo
>
formatquarters
(
List
<
EchartsDataQuartersVo
>
list
,
String
name
){
List
<
String
>
quarters
=
new
ArrayList
<
String
>();
quarters
.
add
(
"1"
);
quarters
.
add
(
"2"
);
quarters
.
add
(
"3"
);
quarters
.
add
(
"4"
);
List
<
String
>
date
=
new
ArrayList
<
String
>();
String
deptName
=
""
;
for
(
EchartsDataQuartersVo
m
:
list
)
{
date
.
add
(
m
.
getQuarters
());
deptName
=
m
.
getDeptName
();
}
for
(
String
m
:
quarters
)
{
if
(
date
.
contains
(
m
))
{
continue
;
}
else
{
EchartsDataQuartersVo
vo
=
new
EchartsDataQuartersVo
();
vo
.
setQuarters
(
m
);
vo
.
setDeptName
(
deptName
);
vo
.
setName
(
name
);
vo
.
setSumTime
(
0.0
);
list
.
add
(
vo
);
}
}
List
<
EchartsDataQuartersVo
>
collect4
=
list
.
stream
().
sorted
(
Comparator
.
comparing
(
EchartsDataQuartersVo:
:
getQuarters
)).
collect
(
Collectors
.
toList
());
return
collect4
;
}
}
src/main/java/com/zrqx/statistics/preSale/mapper/StatisticsTaskMapper.java
浏览文件 @
d90f8765
...
...
@@ -52,17 +52,34 @@ public interface StatisticsTaskMapper extends BaseMapper<StatisticsTask> {
+
""
)
List
<
StatisticsTask
>
queryTaskByProject
(
@Param
(
"id"
)
Integer
id
);
@Select
(
" SELECT u.id,SUM(t.estimate) as estimate,t.project,u.realname FROM zt_task t LEFT JOIN zt_user u ON t.finishedBy=u.account WHERE"
+
" project = #{id} and (t.status='done') AND t.deleted = '0' AND u.id IS NOT NULL GROUP BY u.id "
+
""
)
List
<
StatisticsTask
>
queryTaskByProjectV1
(
@Param
(
"id"
)
Integer
id
);
@Select
(
"<script>"
+
" SELECT u.id,SUM(t.estimate) as estimate,t.project,u.realname "
+
" FROM zt_task t "
+
" LEFT JOIN zt_user u ON t.finishedBy=u.account "
+
" left join zt_dept d on d.id = u.dept "
+
" WHERE 1=1 "
+
" eq(d.name,department) "
+
" and project = #{id} and (t.status='done') AND t.deleted = '0' AND u.id IS NOT NULL GROUP BY u.id "
+
"</script>"
)
List
<
StatisticsTask
>
queryTaskByProjectV1
(
@Param
(
"id"
)
Integer
id
,
@Param
(
"department"
)
String
department
);
@Select
(
" SELECT u.id , COUNT(t.id) AS bugs ,SUM(t.estimate) AS bugTime,u.realname AS name FROM zt_task t LEFT JOIN zt_user u ON t.finishedBy=u.account WHERE 1=1 "
+
" AND t.project = #{id} AND t.NAME LIKE '%bug%' GROUP BY u.id"
)
List
<
StatisticsBug
>
queryTaskBugByProject
(
@Param
(
"id"
)
Integer
id
);
@Select
(
"<script>"
+
" SELECT t.id,t.name,t.finishedDate,t.estimate,p.name AS project,u.realname finishedBy FROM"
+
" SELECT u.id , COUNT(t.id) AS bugs ,SUM(t.estimate) AS bugTime,u.realname AS name "
+
" FROM zt_task t "
+
" LEFT JOIN zt_user u ON t.finishedBy=u.account "
+
" left join zt_dept d on d.id = u.dept "
+
" WHERE 1=1 "
+
" eq(d.name,department) "
+
" AND t.project = #{id} AND t.NAME LIKE '%bug%' GROUP BY u.id"
+
"</script>"
)
List
<
StatisticsBug
>
queryTaskBugByProject1
(
@Param
(
"id"
)
Integer
id
,
@Param
(
"department"
)
String
department
);
@Select
(
"<script>"
+
" SELECT t.id,t.name,t.finishedDate,t.estimate,p.name AS project,u.realname finishedBy,t.desc FROM"
+
" zt_task t LEFT JOIN zt_user u ON t.finishedBy=u.account LEFT JOIN zt_dept d on u.dept = d.id "
+
" LEFT JOIN zt_project p ON t.project = p.id WHERE 1=1 "
+
" and (t.status='done') AND t.deleted = '0' "
...
...
src/main/java/com/zrqx/statistics/preSale/service/StatisticsTaskServiceImpl.java
浏览文件 @
d90f8765
...
...
@@ -5,6 +5,7 @@ import java.util.List;
import
java.util.Map
;
import
java.util.stream.Collectors
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
...
...
@@ -13,6 +14,7 @@ import com.zrqx.core.form.project.ProjectInfoPageForm;
import
com.zrqx.core.mapper.BaseMapper
;
import
com.zrqx.core.model.project.Team
;
import
com.zrqx.core.service.BaseServiceImpl
;
import
com.zrqx.core.util.delHtmlTags.DelHtmlTagsUtils
;
import
com.zrqx.core.util.page.PageInfo
;
import
com.zrqx.core.util.page.PageParam
;
import
com.zrqx.core.vo.project.PorjectUserInfoVo
;
...
...
@@ -27,11 +29,6 @@ public class StatisticsTaskServiceImpl extends BaseServiceImpl<StatisticsTask, I
private
StatisticsTaskMapper
mapper
;
@Autowired
private
StatisticsProjectMapper
spMapper
;
@Override
public
boolean
insertUuidList
(
List
<
StatisticsTask
>
recordList
)
{
// TODO Auto-generated method stub
return
false
;
}
@Override
public
List
<
StatisticsTask
>
queryTask
(
String
account
,
String
startTime
,
String
endTime
)
{
...
...
@@ -40,7 +37,6 @@ public class StatisticsTaskServiceImpl extends BaseServiceImpl<StatisticsTask, I
@Override
public
BaseMapper
<
StatisticsTask
>
getMapper
()
{
// TODO Auto-generated method stub
return
mapper
;
}
...
...
@@ -59,6 +55,10 @@ public class StatisticsTaskServiceImpl extends BaseServiceImpl<StatisticsTask, I
// 开启分页
startPage
(
pageParam
);
List
<
StatisticsTask
>
list
=
mapper
.
queryTaskByProjectPage
(
form
);
list
.
forEach
(
v
->{
String
desc
=
DelHtmlTagsUtils
.
getTextFromHtml
(
v
.
getDesc
());
v
.
setDesc
(
desc
);
});
return
new
PageInfo
<
StatisticsTask
>(
list
);
}
...
...
@@ -78,12 +78,12 @@ public class StatisticsTaskServiceImpl extends BaseServiceImpl<StatisticsTask, I
@Override
public
List
<
PorjectUserInfoVo
>
queryTaskByProjectPageNew
(
ProjectInfoPageForm
form
)
{
//统计在团队中的可用工时
List
<
Team
>
teams
=
spMapper
.
queryTeamByProjectV
1
(
form
.
getId
());
List
<
Team
>
teams
=
spMapper
.
queryTeamByProjectV
2
(
form
.
getId
(),
form
.
getDepartment
());
//统计在项目中的实际工时
List
<
StatisticsTask
>
listArray
=
mapper
.
queryTaskByProjectV1
(
form
.
getId
());
List
<
StatisticsTask
>
listArray
=
mapper
.
queryTaskByProjectV1
(
form
.
getId
()
,
form
.
getDepartment
()
);
Map
<
Integer
,
Double
>
mapStatisticsTask
=
listArray
.
stream
().
collect
(
Collectors
.
toMap
(
StatisticsTask:
:
getId
,
StatisticsTask:
:
getEstimate
));
//统计在项目中完成bug数量
List
<
StatisticsBug
>
list2
=
mapper
.
queryTaskBugByProject
(
form
.
getId
());
List
<
StatisticsBug
>
list2
=
mapper
.
queryTaskBugByProject
1
(
form
.
getId
(),
form
.
getDepartment
());
Map
<
Integer
,
StatisticsBug
>
mapStatisticsBug
=
list2
.
stream
().
collect
(
Collectors
.
toMap
(
StatisticsBug:
:
getId
,
StatisticsBug
->
StatisticsBug
));
List
<
PorjectUserInfoVo
>
resultList
=
teams
.
stream
().
map
(
t
->
{
...
...
src/main/java/com/zrqx/statistics/project/controller/ProjectController.java
浏览文件 @
d90f8765
...
...
@@ -16,6 +16,7 @@ import com.zrqx.core.enums.ProjectStatusEnum;
import
com.zrqx.core.form.index.UserManagementForm
;
import
com.zrqx.core.form.project.ProjectManagementUpdateForm
;
import
com.zrqx.core.form.project.ProjectPageForm
;
import
com.zrqx.core.model.project.PublisherProjectVo
;
import
com.zrqx.core.model.project.StatisticsProject
;
import
com.zrqx.core.response.CallBack
;
import
com.zrqx.core.util.page.PageInfo
;
...
...
@@ -80,9 +81,18 @@ public class ProjectController {
return
CallBack
.
success
(
vo
);
}
@ApiOperation
(
value
=
"
项目工时分类列表"
,
notes
=
"
项目工时分类列表"
)
@ApiOperation
(
value
=
"
出版社项目工时分类列表"
,
notes
=
"出版社
项目工时分类列表"
)
@GetMapping
(
"/project_time/page"
)
public
CallBack
<
PageInfo
<
StatisticsProject
>>
projects
(
ProjectPageForm
form
,
PageParam
pageParam
)
{
public
CallBack
<
PageInfo
<
PublisherProjectVo
>>
projects
(
ProjectPageForm
form
,
PageParam
pageParam
)
{
if
(
StringUtils
.
isEmpty
(
form
.
getStr
()))
{
form
.
setStr
(
"all"
);
}
return
CallBack
.
success
(
spService
.
queryProjectList1
(
form
,
pageParam
));
}
@ApiOperation
(
value
=
"项目工时"
,
notes
=
"项目工时"
)
@GetMapping
(
"projectTime/page"
)
public
CallBack
<
PageInfo
<
StatisticsProject
>>
projectTime
(
ProjectPageForm
form
,
PageParam
pageParam
)
{
if
(
StringUtils
.
isEmpty
(
form
.
getStr
()))
{
form
.
setStr
(
"all"
);
}
...
...
src/main/java/com/zrqx/statistics/project/mapper/StatisticsProjectMapper.java
浏览文件 @
d90f8765
...
...
@@ -9,6 +9,7 @@ import org.apache.ibatis.annotations.Select;
import
com.zrqx.core.form.project.ProjectPageForm
;
import
com.zrqx.core.form.project.StatisticsTaskTimeForm
;
import
com.zrqx.core.mapper.BaseMapper
;
import
com.zrqx.core.model.project.PublisherProjectVo
;
import
com.zrqx.core.model.project.StatisticsProject
;
import
com.zrqx.core.model.project.Team
;
import
com.zrqx.core.model.statistics.StatisticsTaskTime
;
...
...
@@ -31,6 +32,11 @@ public interface StatisticsProjectMapper extends BaseMapper<StatisticsProject> {
+
" LEFT JOIN zt_task t ON p.id= t.project "
+
" where 1=1 "
+
" AND p.DELETEd = '0' and (t.status='done') AND t.deleted = '0' "
//出版社
+
"<if test = '"
+
NOTBLANK
+
"(form.publisherName)'> "
+
"AND p.desc = #{form.publisherName} "
+
"</if>"
// 项目名称
+
"<if test = '"
+
NOTBLANK
+
"(form.project)'> "
+
"AND p.name like concat('%',#{form.project},'%') "
...
...
@@ -51,6 +57,16 @@ public interface StatisticsProjectMapper extends BaseMapper<StatisticsProject> {
+
"</script>"
)
List
<
StatisticsProject
>
queryProjectList
(
@Param
(
"form"
)
ProjectPageForm
form
);
@Select
(
"<script>"
+
"select p.desc as publisherName FROM zt_project p where 1=1 "
+
"AND p.DELETEd = '0' "
+
"<if test = '"
+
NOTBLANK
+
"(publisherName)'> "
+
"and p.desc = #{publisherName} "
+
"</if>"
+
"group by p.desc "
+
"</script>"
)
List
<
PublisherProjectVo
>
selectProject
(
@Param
(
"publisherName"
)
String
publisherName
);
@Select
(
"SELECT count(b.id) FROM zt_projectproduct pp,zt_bug b WHERE pp.product=b.product AND pp.project = #{id} AND b.deleted = '0'"
)
Integer
queryBugCountByProject
(
Integer
id
);
...
...
@@ -61,6 +77,18 @@ public interface StatisticsProjectMapper extends BaseMapper<StatisticsProject> {
List
<
Team
>
queryTeamByProjectV1
(
Integer
id
);
@Select
(
"<script>"
+
"SELECT u.id as userId ,t.root,u.realname NAME,SUM(t.days*t.hours) AS sumHours,t.days,t.hours "
+
"FROM zt_team t "
+
"left join zt_user u on t.account = u.account "
+
"left join zt_dept d on d.id = u.dept "
+
"WHERE 1=1 "
+
"AND t.root = #{id} "
+
" eq(d.name,department) "
+
"GROUP BY u.id "
+
"</script>"
)
List
<
Team
>
queryTeamByProjectV2
(
@Param
(
"id"
)
Integer
id
,
@Param
(
"department"
)
String
department
);
@Select
(
"<script>"
+
"select p.id,p.name project,u.realname name,SUM(t.estimate) usableHours,SUM(t.consumed) usedHours, "
+
"p.status,p.closedDate,p.canceledDate FROM "
+
"zt_project p,zt_task t,zt_user u WHERE p.id = t.project "
...
...
@@ -75,7 +103,7 @@ public interface StatisticsProjectMapper extends BaseMapper<StatisticsProject> {
+
"</if>"
// 项目状态
+
"<if test = '"
+
NOTBLANK
+
"(form.name)'> "
+
"AND p.status = #{form.status} "
+
"
AND p.status = #{form.status} "
+
"</if>"
+
"GROUP BY p.id ORDER BY p.openedDate DESC "
+
"</script>"
)
...
...
@@ -164,7 +192,7 @@ public interface StatisticsProjectMapper extends BaseMapper<StatisticsProject> {
List
<
EchartsDataYearsVo
>
selectEChartsDataYs
(
@Param
(
"name"
)
String
name
);
@Select
(
"<script>"
+
"SELECT SUM(t.estimate) AS sumHours,t.project AS id,u.realname as account,p.name,ui.level FROM zt_task t "
+
"SELECT SUM(t.estimate) AS sumHours,t.project AS id,u.realname as account,p.name,ui.level
,p.desc as publisher
FROM zt_task t "
+
"LEFT JOIN zt_user u ON t.finishedBy=u.account "
+
"LEFT JOIN zt_project p ON t.project = p.id "
+
"LEFT JOIN user_info ui ON u.id = ui.userId "
...
...
src/main/java/com/zrqx/statistics/project/service/StatisticsProjectService.java
浏览文件 @
d90f8765
...
...
@@ -4,6 +4,7 @@ import java.util.List;
import
com.zrqx.core.form.project.ProjectPageForm
;
import
com.zrqx.core.form.project.StatisticsTaskTimeForm
;
import
com.zrqx.core.model.project.PublisherProjectVo
;
import
com.zrqx.core.model.project.StatisticsProject
;
import
com.zrqx.core.model.project.Team
;
import
com.zrqx.core.model.statistics.StatisticsTaskTime
;
...
...
@@ -16,7 +17,7 @@ import com.zrqx.core.vo.index.ProjectTotalInfoVo;
import
com.zrqx.core.vo.project.ProjectPageVo
;
public
interface
StatisticsProjectService
extends
BaseService
<
StatisticsProject
,
String
>
{
PageInfo
<
StatisticsProject
>
queryProjectList
(
ProjectPageForm
form
,
PageParam
pageParam
);
PageInfo
<
PublisherProjectVo
>
queryProjectList1
(
ProjectPageForm
form
,
PageParam
pageParam
);
Integer
queryBugCountByProject
(
Integer
id
);
List
<
Team
>
queryTeamByProject
(
Integer
id
);
...
...
@@ -40,7 +41,7 @@ public interface StatisticsProjectService extends BaseService<StatisticsProject,
* @date: 2019年11月12日 下午3:28:29
*/
EchartsDataVo
selectEChartsData
();
PageInfo
<
StatisticsProject
>
queryProjectList
(
ProjectPageForm
form
,
PageParam
pageParam
);
List
<
StatisticsProject
>
queryProjectList
();
List
<
StatisticsTaskTime
>
queryProjectSplitData
(
StatisticsTaskTimeForm
form
);
int
selectByCount
(
Integer
id
);
...
...
src/main/java/com/zrqx/statistics/project/service/StatisticsProjectServiceImpl.java
浏览文件 @
d90f8765
...
...
@@ -22,10 +22,12 @@ import com.zrqx.core.enums.ProjectStatusEnum;
import
com.zrqx.core.form.project.ProjectPageForm
;
import
com.zrqx.core.form.project.StatisticsTaskTimeForm
;
import
com.zrqx.core.mapper.BaseMapper
;
import
com.zrqx.core.model.project.PublisherProjectVo
;
import
com.zrqx.core.model.project.StatisticsProject
;
import
com.zrqx.core.model.project.Team
;
import
com.zrqx.core.model.statistics.StatisticsTaskTime
;
import
com.zrqx.core.service.BaseServiceImpl
;
import
com.zrqx.core.util.delHtmlTags.DelHtmlTagsUtils
;
import
com.zrqx.core.util.page.PageInfo
;
import
com.zrqx.core.util.page.PageParam
;
import
com.zrqx.core.vo.echart.EchartsDataDaysVo
;
...
...
@@ -105,6 +107,42 @@ public class StatisticsProjectServiceImpl extends BaseServiceImpl<StatisticsProj
}
return
new
PageInfo
<
StatisticsProject
>(
null
);
}
@Override
public
PageInfo
<
PublisherProjectVo
>
queryProjectList1
(
ProjectPageForm
form
,
PageParam
pageParam
)
{
//开启分页
startPage
(
pageParam
);
// 查询所有项目
List
<
PublisherProjectVo
>
pList
=
mapper
.
selectProject
(
form
.
getPublisherName
());
pList
.
forEach
(
vo
->{
String
publisher
=
DelHtmlTagsUtils
.
getTextFromHtml
(
vo
.
getPublisherName
());
vo
.
setPublisherName
(
publisher
);
form
.
setPublisherName
(
vo
.
getPublisherName
());
List
<
StatisticsProject
>
list
=
mapper
.
queryProjectList
(
form
);
vo
.
setSumProjectNum
(
list
.
size
());
int
deveFinishNum
=
0
;
//已验收项目数
int
doingNum
=
0
;
//进行中项目数
for
(
StatisticsProject
s
:
list
)
{
List
<
Team
>
teams
=
mapper
.
queryTeamByProject
(
s
.
getId
());
DoubleSummaryStatistics
collect
=
teams
.
parallelStream
().
collect
(
Collectors
.
summarizingDouble
(
a
->
a
.
getDays
()
*
a
.
getHours
()));
String
status1
=
mapper
.
selectStatus1ForId
(
s
.
getId
());
if
(
ProjectManagementStatusEnum
.
getCode
(
"验收完成"
).
equals
(
status1
))
{
deveFinishNum
=
deveFinishNum
+
1
;
}
s
.
setStatus1Zh
(
ProjectManagementStatusEnum
.
getName
(
status1
));
s
.
setSumHours
(
collect
.
getSum
());
s
.
setBugs
(
mapper
.
queryBugCountByProject
(
s
.
getId
()));
s
.
setStatusZh
(
ProjectStatusEnum
.
getName
(
s
.
getStatus
()));
if
(
s
.
getName
()
==
null
)
{
s
.
setName
(
"admin"
);
}
}
doingNum
=
list
.
size
()
-
deveFinishNum
;
vo
.
setDoingNum
(
doingNum
);
vo
.
setList
(
list
);
});
return
new
PageInfo
<
PublisherProjectVo
>(
pList
);
}
@Override
...
...
@@ -481,21 +519,28 @@ public class StatisticsProjectServiceImpl extends BaseServiceImpl<StatisticsProj
Integer
months
=
getMonth
(
form
.
getStartTime
(),
form
.
getEndTime
());
vo
.
setLevel
(
vo
.
getLevel
()
*
months
);
}
catch
(
Exception
e
)
{
// TODO Auto-generated catch block
e
.
printStackTrace
();
}
}
String
publisher
=
DelHtmlTagsUtils
.
getTextFromHtml
(
vo
.
getPublisher
());
vo
.
setPublisher
(
publisher
);
List
<
Team
>
teams
=
mapper
.
queryTeamByProjectSplit
(
vo
.
getId
(),
vo
.
getAccount
());
DoubleSummaryStatistics
collect
=
teams
.
parallelStream
().
collect
(
Collectors
.
summarizingDouble
(
a
->
a
.
getDays
()
*
a
.
getHours
()));
double
canUseTime
=
new
BigDecimal
(
collect
.
getSum
()).
setScale
(
2
,
BigDecimal
.
ROUND_HALF_UP
).
doubleValue
();
vo
.
setCanUseTime
(
canUseTime
);
// 最高可用bug工时 = 可用工时 * 20%
double
maxBugTime
=
new
BigDecimal
(
collect
.
getSum
()).
multiply
(
new
BigDecimal
(
0.2
)).
setScale
(
2
,
BigDecimal
.
ROUND_HALF_UP
).
doubleValue
();
double
totalCanUseTime
=
new
BigDecimal
(
collect
.
getSum
()).
setScale
(
2
,
BigDecimal
.
ROUND_HALF_UP
).
doubleValue
();
StatisticsTaskTime
query
=
new
StatisticsTaskTime
();
query
.
setAccount
(
vo
.
getAccount
());
query
.
setId
(
vo
.
getId
());
StatisticsTaskTime
totalData
=
mapper
.
queryProjectSplitTotalData
(
query
);
Double
totalSumHours
=
totalData
.
getTotalSumHours
();
Double
totalSumHours1
=
totalData
.
getTotalSumHours
();
//剩余可用工时
double
canUseTime
=
new
BigDecimal
(
totalCanUseTime
).
subtract
(
new
BigDecimal
(
totalSumHours1
)).
setScale
(
2
,
BigDecimal
.
ROUND_HALF_UP
).
doubleValue
();
//剩余可用工时小于0时为0;
canUseTime
=
canUseTime
<
0
?
0
:
canUseTime
;
vo
.
setCanUseTime
(
canUseTime
);
// 最高可用bug工时 = 可用工时 * 20%
double
maxBugTime
=
new
BigDecimal
(
collect
.
getSum
()).
multiply
(
new
BigDecimal
(
0.2
)).
setScale
(
2
,
BigDecimal
.
ROUND_HALF_UP
).
doubleValue
();
Double
totalSumHours
=
vo
.
getSumHours
();
//总预计工时可能大于可用工时
if
(
totalSumHours
>
canUseTime
)
{
//预计大于可用
double
invalidTime
=
new
BigDecimal
(
totalSumHours
).
subtract
(
new
BigDecimal
(
canUseTime
)).
setScale
(
2
,
BigDecimal
.
ROUND_HALF_UP
).
doubleValue
();
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论