Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
T
tasktime
Project
Project
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
Graph
比较
统计图
议题
0
议题
0
列表
看板
标记
Milestones
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
注册表
注册表
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
任建彩
tasktime
Commits
a8ce3cf3
提交
a8ce3cf3
authored
8月 24, 2021
作者:
任建彩
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'master' of
http://test16.zhongdianyun.com/renjiancai/tasktime.git
上级
7273972e
8963dfea
隐藏空白字符变更
内嵌
并排
正在显示
11 个修改的文件
包含
141 行增加
和
37 行删除
+141
-37
CommonResult.java
olive-console/src/main/java/com/common/CommonResult.java
+2
-0
TaskController.java
.../java/com/zrqx/olive/ttask/controller/TaskController.java
+7
-7
TaskDao.java
...nsole/src/main/java/com/zrqx/olive/ttask/dao/TaskDao.java
+1
-1
Task.java
...onsole/src/main/java/com/zrqx/olive/ttask/model/Task.java
+3
-0
TaskForm.java
.../src/main/java/com/zrqx/olive/ttask/request/TaskForm.java
+54
-0
TaskRecordRequest.java
.../java/com/zrqx/olive/ttask/request/TaskRecordRequest.java
+0
-2
TaskRequest.java
...c/main/java/com/zrqx/olive/ttask/request/TaskRequest.java
+3
-0
TaskService.java
...c/main/java/com/zrqx/olive/ttask/service/TaskService.java
+3
-1
TaskServiceImpl.java
...ava/com/zrqx/olive/ttask/service/imp/TaskServiceImpl.java
+63
-22
ExcelTaskVo.java
...le/src/main/java/com/zrqx/olive/ttask/vo/ExcelTaskVo.java
+2
-4
TaskVo.java
...console/src/main/java/com/zrqx/olive/ttask/vo/TaskVo.java
+3
-0
没有找到文件。
olive-console/src/main/java/com/common/CommonResult.java
浏览文件 @
a8ce3cf3
...
...
@@ -115,6 +115,8 @@ public class CommonResult<T> {
return
new
CommonResult
<
T
>(
ExceptionCodeEnum
.
FAILED
.
getCode
(),
message
,
null
);
}
/**
* 失败返回结果
*/
...
...
olive-console/src/main/java/com/zrqx/olive/ttask/controller/TaskController.java
浏览文件 @
a8ce3cf3
...
...
@@ -26,6 +26,7 @@ import com.zrqx.olive.system.service.SystemAdminService;
import
com.zrqx.olive.system.service.SystemAttachmentService
;
import
com.zrqx.olive.ttask.model.Task
;
import
com.zrqx.olive.ttask.model.TaskRecord
;
import
com.zrqx.olive.ttask.request.TaskForm
;
import
com.zrqx.olive.ttask.request.TaskRecordRequest
;
import
com.zrqx.olive.ttask.request.TaskRequest
;
import
com.zrqx.olive.ttask.service.TaskRecordService
;
...
...
@@ -141,7 +142,7 @@ public class TaskController {
}
try
{
if
(
taskRequest
.
getUserId
()
!=
null
)
{
// 处理项目工时
QueryWrapper
<
Team
>
qw
=
new
QueryWrapper
<>();
// 售前项目
...
...
@@ -152,6 +153,7 @@ public class TaskController {
if
(
taskRequest
.
getStatus
()
==
1
)
{
qw
.
eq
(
"project_id"
,
taskRequest
.
getProjectId
());
}
qw
.
eq
(
"department_id"
,
taskRequest
.
getDepartmentId
());
List
<
Team
>
teamlist
=
teamService
.
list
(
qw
);
if
(
teamlist
.
size
()
>
0
)
{
...
...
@@ -166,7 +168,7 @@ public class TaskController {
teamService
.
updateById
(
team
);
}
}
}
// 保存历史记录
TaskRecordRequest
taskRecord
=
new
TaskRecordRequest
();
taskRecord
.
setTaskId
(
task
.
getId
());
...
...
@@ -201,7 +203,6 @@ public class TaskController {
taskService
.
updateById
(
task
);
// 处理项目工时
if
(
task
.
getWorkingHours
()
!=
null
)
{
QueryWrapper
<
Team
>
qw1
=
new
QueryWrapper
<>();
// 售前项目
if
(
task
.
getStatus
()
==
2
)
{
...
...
@@ -365,10 +366,9 @@ public class TaskController {
@ApiOperation
(
value
=
"导入任务信息"
,
notes
=
"导入任务信息"
)
@PostMapping
(
value
=
"/impor/excel"
,
produces
=
"application/json;charset=UTF-8"
)
public
CommonResult
<
Integer
>
imporTask
(
@RequestParam
(
"file"
)
MultipartFile
file
,
@RequestBody
@Validated
TaskRequest
taskRequest
)
throws
BaseException
,
IOException
{
taskService
.
imporTask
(
file
,
taskRequest
);
return
CommonResult
.
success
();
public
CommonResult
<
Object
>
imporTask
(
@RequestParam
(
"file"
)
MultipartFile
file
,
TaskForm
taskRequest
)
throws
BaseException
,
IOException
{
return
taskService
.
imporTask
(
file
,
taskRequest
);
}
}
olive-console/src/main/java/com/zrqx/olive/ttask/dao/TaskDao.java
浏览文件 @
a8ce3cf3
...
...
@@ -37,7 +37,7 @@ public interface TaskDao extends BaseMapper<Task> {
+
" (select account from t_task_record e LEFT JOIN eb_system_admin f on e.user_id = f.id where e.type = 3 and e.task_id = a.id) completeName"
+
" FROM t_task a INNER JOIN t_statistics_project b on a.project_id = b.id where 1 = 1 "
+
"<if test = 'request.code!=null'> "
+
" AND code
=
like concat(#{request.code},'%') "
+
" AND code like concat(#{request.code},'%') "
+
"</if>"
+
"<if test = 'request.taskName!=null'> "
+
" AND task_name = #{request.taskName} "
...
...
olive-console/src/main/java/com/zrqx/olive/ttask/model/Task.java
浏览文件 @
a8ce3cf3
...
...
@@ -53,6 +53,9 @@ public class Task implements Serializable {
@ApiModelProperty
(
value
=
"指派给成员id"
)
private
Integer
userId
;
@ApiModelProperty
(
value
=
"部门id"
)
private
Integer
departmentId
;
@ApiModelProperty
(
value
=
"优先级 可选值:1、2、3、4 仅支持单选,默认值为1。"
)
private
Integer
priority
;
...
...
olive-console/src/main/java/com/zrqx/olive/ttask/request/TaskForm.java
0 → 100644
浏览文件 @
a8ce3cf3
package
com
.
zrqx
.
olive
.
ttask
.
request
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
import
lombok.experimental.Accessors
;
import
org.hibernate.validator.constraints.Length
;
import
org.springframework.data.annotation.Id
;
import
com.baomidou.mybatisplus.annotation.IdType
;
import
com.baomidou.mybatisplus.annotation.TableId
;
import
com.zrqx.olive.project.model.ProjectFile
;
import
javax.validation.constraints.NotBlank
;
import
java.io.Serializable
;
import
java.math.BigDecimal
;
import
java.util.Date
;
import
java.util.List
;
/**
* 任务管理 Request
* +---------------------------------------------------------------------- |
* CRMEB [ CRMEB赋能开发者,助力企业发展 ]
* +---------------------------------------------------------------------- |
* Copyright (c) 2016~2020 https://www.crmeb.com All rights reserved.
* +---------------------------------------------------------------------- |
* Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
* +---------------------------------------------------------------------- |
* Author: CRMEB Team <admin@crmeb.com>
* +----------------------------------------------------------------------
*/
@Data
@EqualsAndHashCode
(
callSuper
=
false
)
@Accessors
(
chain
=
true
)
@ApiModel
(
value
=
"TaskForm对象"
,
description
=
"任务管理表"
)
public
class
TaskForm
implements
Serializable
{
@ApiModelProperty
(
value
=
"部门id"
)
private
Integer
departmentId
;
@ApiModelProperty
(
value
=
"可选值:1:项目任务 2:BUG任务 3:部门任务"
)
private
Integer
taskType
;
@ApiModelProperty
(
value
=
"项目id"
)
private
String
projectId
;
@ApiModelProperty
(
value
=
"1:任务管理 2:售前管理"
)
private
Integer
status
;
}
olive-console/src/main/java/com/zrqx/olive/ttask/request/TaskRecordRequest.java
浏览文件 @
a8ce3cf3
...
...
@@ -38,8 +38,6 @@ public class TaskRecordRequest implements Serializable {
private
static
final
long
serialVersionUID
=
1L
;
@ApiModelProperty
(
value
=
"任务ID"
)
private
Integer
taskId
;
...
...
olive-console/src/main/java/com/zrqx/olive/ttask/request/TaskRequest.java
浏览文件 @
a8ce3cf3
...
...
@@ -40,6 +40,9 @@ public class TaskRequest implements Serializable {
@ApiModelProperty
(
"id,新增时不需要填写"
)
private
Integer
id
;
@ApiModelProperty
(
value
=
"部门id"
)
private
Integer
departmentId
;
@ApiModelProperty
(
value
=
"可选值:1:项目任务 2:BUG任务 3:部门任务"
)
private
Integer
taskType
;
...
...
olive-console/src/main/java/com/zrqx/olive/ttask/service/TaskService.java
浏览文件 @
a8ce3cf3
...
...
@@ -9,6 +9,7 @@ import org.springframework.web.bind.annotation.RequestBody;
import
org.springframework.web.multipart.MultipartFile
;
import
com.baomidou.mybatisplus.extension.service.IService
;
import
com.common.CommonResult
;
import
com.common.PageParamRequest
;
import
com.github.pagehelper.PageInfo
;
import
com.utils.excelutil.BaseException
;
...
...
@@ -16,6 +17,7 @@ import com.zrqx.olive.article.model.Article;
import
com.zrqx.olive.article.request.ArticleSearchRequest
;
import
com.zrqx.olive.article.vo.ArticleVo
;
import
com.zrqx.olive.ttask.model.Task
;
import
com.zrqx.olive.ttask.request.TaskForm
;
import
com.zrqx.olive.ttask.request.TaskRequest
;
import
com.zrqx.olive.ttask.vo.TaskVo
;
...
...
@@ -37,7 +39,7 @@ public interface TaskService extends IService<Task> {
List
<
TaskVo
>
getList
(
TaskRequest
request
);
Integer
imporTask
(
MultipartFile
file
,
TaskRequest
taskRequest
)
throws
BaseException
,
IOException
;
CommonResult
<
Object
>
imporTask
(
MultipartFile
file
,
TaskForm
taskRequest
)
throws
BaseException
,
IOException
;
BigDecimal
queryConsume
(
String
id
,
Integer
userId
,
Integer
departmentId
);
...
...
olive-console/src/main/java/com/zrqx/olive/ttask/service/imp/TaskServiceImpl.java
浏览文件 @
a8ce3cf3
...
...
@@ -25,10 +25,13 @@ import com.zrqx.olive.article.vo.ArticleVo;
import
com.zrqx.olive.category.model.Category
;
import
com.zrqx.olive.category.service.CategoryService
;
import
com.zrqx.olive.project.model.DiyType
;
import
com.zrqx.olive.project.model.Team
;
import
com.zrqx.olive.project.service.DiyTypeService
;
import
com.zrqx.olive.project.service.TeamService
;
import
com.zrqx.olive.system.service.SystemConfigService
;
import
com.zrqx.olive.ttask.dao.TaskDao
;
import
com.zrqx.olive.ttask.model.Task
;
import
com.zrqx.olive.ttask.request.TaskForm
;
import
com.zrqx.olive.ttask.request.TaskRequest
;
import
com.zrqx.olive.ttask.service.TaskService
;
import
com.zrqx.olive.ttask.vo.ExcelTaskVo
;
...
...
@@ -71,6 +74,9 @@ public class TaskServiceImpl extends ServiceImpl<TaskDao, Task> implements TaskS
@Autowired
private
DiyTypeService
service
;
@Autowired
private
TeamService
teamService
;
/**
* 列表
...
...
@@ -96,24 +102,46 @@ public class TaskServiceImpl extends ServiceImpl<TaskDao, Task> implements TaskS
}
@Override
public
Integer
imporTask
(
MultipartFile
file
,
TaskRequest
taskRequest
)
throws
BaseException
,
IOException
{
public
CommonResult
<
Object
>
imporTask
(
MultipartFile
file
,
TaskForm
taskRequest
)
throws
BaseException
,
IOException
{
List
<
ExcelTaskVo
>
list
=
ImportExcelUtil
.
importExcel
(
file
.
getInputStream
(),
ExcelTaskVo
.
class
,
file
.
getOriginalFilename
());
for
(
ExcelTaskVo
excelTaskVo
:
list
)
{
// 处理项目工时
QueryWrapper
<
Team
>
qw1
=
new
QueryWrapper
<>();
// 售前项目
if
(
taskRequest
.
getStatus
()
==
2
)
{
qw1
.
eq
(
"sales_project_id"
,
taskRequest
.
getProjectId
());
}
// 正常项目
if
(
taskRequest
.
getStatus
()
==
1
)
{
qw1
.
eq
(
"project_id"
,
taskRequest
.
getProjectId
());
}
qw1
.
eq
(
"department_id"
,
taskRequest
.
getDepartmentId
());
List
<
Team
>
teamlist
=
teamService
.
list
(
qw1
);
if
(
teamlist
.
size
()
>
0
)
{
BigDecimal
allocateSurplus
=
teamlist
.
get
(
0
).
getAllocateSurplus
();
if
(
excelTaskVo
.
getHours
()
!=
null
)
{
BigDecimal
hours
=
new
BigDecimal
(
excelTaskVo
.
getHours
());
BigDecimal
result
=
allocateSurplus
.
subtract
(
hours
);
if
(
result
.
floatValue
()
<
0
)
{
return
CommonResult
.
failed
(
"当前项目工时不足"
);
}
Team
team
=
teamlist
.
get
(
0
);
team
.
setAllocateSurplus
(
result
);
teamService
.
updateById
(
team
);
}
}
Task
task
=
new
Task
();
BeanUtils
.
copyProperties
(
excelTaskVo
,
task
);
task
.
setTaskStatus
(
1
);
task
.
setUpdateTime
(
new
Date
());
task
.
setCreateTime
(
new
Date
());
// 可选值:1:项目任务 2:BUG任务 3:部门任务"
if
(
excelTaskVo
.
getTaskTypeName
().
equals
(
"项目任务"
))
{
task
.
setTaskType
(
1
);
}
if
(
excelTaskVo
.
getTaskTypeName
().
equals
(
"BUG任务"
))
{
task
.
setTaskType
(
2
);
}
if
(
excelTaskVo
.
getTaskTypeName
().
equals
(
"部门任务"
))
{
task
.
setTaskType
(
3
);
}
task
.
setProjectId
(
taskRequest
.
getProjectId
());
// 所属模块
DiyType
type
=
new
DiyType
();
...
...
@@ -122,17 +150,21 @@ public class TaskServiceImpl extends ServiceImpl<TaskDao, Task> implements TaskS
qw
.
eq
(
"project_id"
,
taskRequest
.
getProjectId
());
// 查询一级模块是否存在
List
<
DiyType
>
listDiy
=
service
.
list
(
qw
);
System
.
out
.
println
(
"是否存在"
+
listDiy
);
if
(
listDiy
.
size
()
>
0
)
{
// 二级模块是否为空
if
(
StringUtils
.
isNotBlank
(
excelTaskVo
.
getTwoModuleName
()))
{
qw
=
new
QueryWrapper
<>();
qw
.
eq
(
"type_name"
,
excelTaskVo
.
getTwoModuleName
());
qw
.
eq
(
"project_id"
,
taskRequest
.
getProjectId
());
// 查询二级模块是否存在
List
<
DiyType
>
listTwoDiy
=
service
.
list
(
qw
);
System
.
out
.
println
(
"是否存在"
+
listTwoDiy
);
if
(
listTwoDiy
.
size
()
>
0
)
{
// 二级模块存在赋值模块id
task
.
setCode
(
listTwoDiy
.
get
(
0
).
getCode
());
}
else
{
// 二级模块不为空,不存在创建新二级模块
QueryWrapper
<
DiyType
>
queryWrapper
=
new
QueryWrapper
<>();
queryWrapper
.
eq
(
"parent_id"
,
listDiy
.
get
(
0
).
getId
());
...
...
@@ -141,9 +173,12 @@ public class TaskServiceImpl extends ServiceImpl<TaskDao, Task> implements TaskS
type
.
setShowName
(
excelTaskVo
.
getTwoModuleName
());
type
.
setTypeName
(
excelTaskVo
.
getTwoModuleName
());
type
.
setCreateTime
(
new
Date
());
type
.
setParentId
(
listDiy
.
get
(
0
).
getId
());
type
.
setProjectId
(
taskRequest
.
getProjectId
());
if
(
list1
!=
null
&&
list1
.
size
()
>
0
)
{
// 查询到子分类,获取最大code生成新的code
String
code
=
list1
.
get
(
0
).
getCode
();
System
.
out
.
println
(
"新code值"
+
code
);
try
{
type
.
setCode
(
UUIDUtil
.
newCode
(
code
));
}
catch
(
Exception
e
)
{
...
...
@@ -163,18 +198,22 @@ public class TaskServiceImpl extends ServiceImpl<TaskDao, Task> implements TaskS
}
else
{
// 创建一级二级
QueryWrapper
<
DiyType
>
queryWrapper
=
new
QueryWrapper
<>();
queryWrapper
.
eq
(
"parent_id"
,
0
);
queryWrapper
.
eq
(
"parent_id"
,
"0"
);
queryWrapper
.
orderByDesc
(
"code"
);
List
<
DiyType
>
list1
=
service
.
list
(
queryWrapper
);
// 查询到子分类,获取最大code生成新的code
String
code
=
list1
.
get
(
0
).
getCode
();
System
.
out
.
println
(
"新code值"
+
code
);
type
.
setParentId
(
"0"
);
type
.
setProjectId
(
taskRequest
.
getProjectId
());
try
{
type
.
setCode
(
UUIDUtil
.
newCode
(
code
));
}
catch
(
Exception
e
)
{
// TODO Auto-generated catch block
e
.
printStackTrace
();
}
type
.
setShowName
(
excelTaskVo
.
getModuleName
());
type
.
setTypeName
(
excelTaskVo
.
getModuleName
());
type
.
setCreateTime
(
new
Date
());
...
...
@@ -183,27 +222,29 @@ public class TaskServiceImpl extends ServiceImpl<TaskDao, Task> implements TaskS
// 二级分类创建
DiyType
type2
=
new
DiyType
();
type2
.
setCode
(
type
.
getCode
()
+
"01"
);
type2
.
setParentId
(
type
.
getParentId
());
type2
.
setParentId
(
type
.
getId
());
type2
.
setProjectId
(
taskRequest
.
getProjectId
());
type2
.
setShowName
(
excelTaskVo
.
getTwoModuleName
());
type2
.
setTypeName
(
excelTaskVo
.
getTwoModuleName
());
System
.
out
.
println
(
"二级分类"
+
type2
);
service
.
save
(
type2
);
task
.
setCode
(
type2
.
getCode
());
}
else
{
task
.
setCode
(
type
.
getCode
());
}
}
//
增加后端工时
task
.
setTaskName
(
"bg"
+
excelTaskVo
.
getTaskName
());
task
.
setWorkingHours
(
new
BigDecimal
(
excelTaskVo
.
getBackHours
())
);
this
.
save
(
task
);
//增加前端工时
task
.
setId
(
null
);
task
.
setTaskName
(
"fg"
+
excelTaskVo
.
getTaskName
());
task
.
setWorkingHours
(
new
BigDecimal
(
excelTaskVo
.
get
Front
Hours
()));
//
售前项目
if
(
taskRequest
.
getStatus
()
==
2
)
{
task
.
setProjectId
(
null
);
task
.
setSalesProjectId
(
taskRequest
.
getProjectId
()
);
}
//增加工时
task
.
setTaskName
(
excelTaskVo
.
getTaskName
());
task
.
setWorkingHours
(
new
BigDecimal
(
excelTaskVo
.
getHours
()));
this
.
save
(
task
);
}
return
null
;
return
CommonResult
.
success
()
;
}
@Override
...
...
olive-console/src/main/java/com/zrqx/olive/ttask/vo/ExcelTaskVo.java
浏览文件 @
a8ce3cf3
...
...
@@ -30,10 +30,8 @@ public class ExcelTaskVo {
@ExcelResources
(
title
=
"备注"
)
private
String
taskDescription
;
@ExcelResources
(
title
=
"
后端
"
)
private
String
backH
ours
;
@ExcelResources
(
title
=
"
工时
"
)
private
String
h
ours
;
@ExcelResources
(
title
=
"前端"
)
private
String
frontHours
;
}
olive-console/src/main/java/com/zrqx/olive/ttask/vo/TaskVo.java
浏览文件 @
a8ce3cf3
...
...
@@ -45,6 +45,9 @@ public class TaskVo implements Serializable {
@ApiModelProperty
(
value
=
"可选值:1:项目任务 2:BUG任务 3:部门任务"
)
private
Integer
taskType
;
@ApiModelProperty
(
value
=
"部门id"
)
private
Integer
departmentId
;
@ApiModelProperty
(
value
=
"任务类型名"
)
private
String
taskTypeName
;
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论