Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
T
tasktime
Project
Project
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
Graph
比较
统计图
议题
0
议题
0
列表
看板
标记
Milestones
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
注册表
注册表
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
任建彩
tasktime
Commits
2aa711b2
提交
2aa711b2
authored
8月 11, 2021
作者:
任建彩
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'master' of
http://test16.zhongdianyun.com/renjiancai/tasktime.git
上级
120a6cc3
c8dc5733
全部展开
隐藏空白字符变更
内嵌
并排
正在显示
26 个修改的文件
包含
1076 行增加
和
43 行删除
+1076
-43
pom.xml
olive-console/pom.xml
+5
-1
ExportExcelTemplate.java
...-console/src/main/java/com/utils/ExportExcelTemplate.java
+246
-0
HttpUtils.java
olive-console/src/main/java/com/utils/HttpUtils.java
+92
-0
ImportExcelUtil.java
olive-console/src/main/java/com/utils/ImportExcelUtil.java
+0
-0
BaseException.java
...sole/src/main/java/com/utils/excelutil/BaseException.java
+68
-0
ExcelHeader.java
...onsole/src/main/java/com/utils/excelutil/ExcelHeader.java
+58
-0
ExcelParseMode.java
...ole/src/main/java/com/utils/excelutil/ExcelParseMode.java
+9
-0
ExcelResources.java
...ole/src/main/java/com/utils/excelutil/ExcelResources.java
+33
-0
ExcelSheetParams.java
...e/src/main/java/com/utils/excelutil/ExcelSheetParams.java
+30
-0
ExcelTemplate.java
...sole/src/main/java/com/utils/excelutil/ExcelTemplate.java
+0
-0
ImportResult.java
...nsole/src/main/java/com/utils/excelutil/ImportResult.java
+18
-0
ResponseCodeEnum.java
...e/src/main/java/com/utils/excelutil/ResponseCodeEnum.java
+44
-0
Student.java
olive-console/src/main/java/com/utils/excelutil/Student.java
+10
-0
TemplateFileUtil.java
...e/src/main/java/com/utils/excelutil/TemplateFileUtil.java
+14
-0
TaskController.java
.../java/com/zrqx/olive/ttask/controller/TaskController.java
+0
-0
TaskDao.java
...nsole/src/main/java/com/zrqx/olive/ttask/dao/TaskDao.java
+36
-5
TaskRecordDao.java
...src/main/java/com/zrqx/olive/ttask/dao/TaskRecordDao.java
+35
-0
Task.java
...onsole/src/main/java/com/zrqx/olive/ttask/model/Task.java
+4
-4
TaskRecord.java
.../src/main/java/com/zrqx/olive/ttask/model/TaskRecord.java
+65
-0
TaskRequest.java
...c/main/java/com/zrqx/olive/ttask/request/TaskRequest.java
+9
-2
TaskRecordService.java
.../java/com/zrqx/olive/ttask/service/TaskRecordService.java
+29
-0
TaskService.java
...c/main/java/com/zrqx/olive/ttask/service/TaskService.java
+12
-0
TaskRecordServiceImpl.java
...m/zrqx/olive/ttask/service/imp/TaskRecordServiceImpl.java
+47
-0
TaskServiceImpl.java
...ava/com/zrqx/olive/ttask/service/imp/TaskServiceImpl.java
+162
-29
ExcelTaskVo.java
...le/src/main/java/com/zrqx/olive/ttask/vo/ExcelTaskVo.java
+39
-0
TaskVo.java
...console/src/main/java/com/zrqx/olive/ttask/vo/TaskVo.java
+11
-2
没有找到文件。
olive-console/pom.xml
浏览文件 @
2aa711b2
...
...
@@ -64,7 +64,11 @@
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>
commons-beanutils
</groupId>
<artifactId>
commons-beanutils
</artifactId>
<version>
1.9.3
</version>
</dependency>
<!-- <dependency>-->
<!-- <groupId>org.springframework.cloud</groupId>-->
<!-- <artifactId>spring-cloud-context</artifactId>-->
...
...
olive-console/src/main/java/com/utils/ExportExcelTemplate.java
0 → 100644
浏览文件 @
2aa711b2
package
com
.
utils
;
import
java.io.BufferedInputStream
;
import
java.io.BufferedOutputStream
;
import
java.io.ByteArrayInputStream
;
import
java.io.ByteArrayOutputStream
;
import
java.io.File
;
import
java.io.FileOutputStream
;
import
java.io.IOException
;
import
java.io.InputStream
;
import
java.io.OutputStream
;
import
java.lang.reflect.Field
;
import
java.lang.reflect.Method
;
import
java.net.URLDecoder
;
import
java.util.ArrayList
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
import
javax.servlet.ServletOutputStream
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpServletResponse
;
import
org.apache.poi.hssf.usermodel.HSSFCell
;
import
org.apache.poi.hssf.usermodel.HSSFRow
;
import
org.apache.poi.hssf.usermodel.HSSFSheet
;
import
org.apache.poi.hssf.usermodel.HSSFWorkbook
;
import
org.apache.poi.poifs.filesystem.POIFSFileSystem
;
import
org.apache.poi.ss.formula.functions.T
;
import
org.apache.poi.xssf.usermodel.XSSFCell
;
import
org.apache.poi.xssf.usermodel.XSSFRow
;
import
org.apache.poi.xssf.usermodel.XSSFSheet
;
import
org.apache.poi.xssf.usermodel.XSSFWorkbook
;
import
com.zrqx.olive.ttask.vo.TaskVo
;
public
class
ExportExcelTemplate
{
public
static
final
String
DEFAULT_TEMPLATE_PATH
=
File
.
separator
+
"template"
+
File
.
separator
+
"temp.xls"
;
/**
* @throws Exception
*
* 根据模板导出excel, 这种方法是 通过给模板中指定的位置赋值,然后重新生成excel,来导出excel的,
* 而且不会修改模板本身。 感觉不太合适去导出有大量数据的excel。 POIFSFileSystem: poi里面的类,
* 可以把Excel文件作为数据流来进行传入传出。这里介绍下POIFSFileSystem类,这个类是专门用来读取excel表格的。
*
*
* 模板文件路径:项目内,src/main/resource/template/xxx.xls
*/
public
static
void
exportXls
(
Class
clz
,
String
path
,
List
<
TaskVo
>
list
,
Integer
sheetNum
,
Integer
startRow
,
Integer
startCellNum
,
HttpServletResponse
response
,
HttpServletRequest
request
)
throws
Exception
{
// 项目模板路径
String
tempPath
=
path
;
// 模板文件
File
file
=
new
File
(
tempPath
);
String
filename
=
file
.
getName
();
// 读取项目模板文件
POIFSFileSystem
poifsFileSystem
=
new
POIFSFileSystem
(
file
);
HSSFWorkbook
workbook
=
new
HSSFWorkbook
(
poifsFileSystem
);
HSSFSheet
sheet
=
workbook
.
getSheetAt
(
sheetNum
);
if
(
sheet
==
null
)
{
sheet
=
workbook
.
createSheet
();
}
// 赋值单元格
for
(
int
i
=
0
;
i
<
list
.
size
();
i
++)
{
HSSFRow
row
=
sheet
.
getRow
(
startRow
+
i
);
if
(
row
==
null
)
{
row
=
sheet
.
createRow
(
startRow
+
i
);
}
TaskVo
vo
=
list
.
get
(
i
);
int
cellNum
=
0
;
// 取第一个值放到第一个单元格 依此类推
HSSFCell
cell
=
row
.
getCell
(
startCellNum
+
cellNum
);
if
(
cell
==
null
)
{
cell
=
row
.
createCell
(
startCellNum
+
cellNum
);
}
cell
.
setCellValue
(
vo
.
getId
());
cellNum
++;
cell
=
row
.
getCell
(
startCellNum
+
cellNum
);
if
(
cell
==
null
)
{
cell
=
row
.
createCell
(
startCellNum
+
cellNum
);
}
cellNum
++;
cell
=
row
.
getCell
(
startCellNum
+
cellNum
);
if
(
cell
==
null
)
{
cell
=
row
.
createCell
(
startCellNum
+
cellNum
);
}
cell
.
setCellValue
(
vo
.
getPriority
());
cellNum
++;
cell
=
row
.
getCell
(
startCellNum
+
cellNum
);
if
(
cell
==
null
)
{
cell
=
row
.
createCell
(
startCellNum
+
cellNum
);
}
cell
.
setCellValue
(
vo
.
getTaskTypeName
());
cellNum
++;
cell
=
row
.
getCell
(
startCellNum
+
cellNum
);
if
(
cell
==
null
)
{
cell
=
row
.
createCell
(
startCellNum
+
cellNum
);
}
cell
.
setCellValue
(
vo
.
getTaskStatusName
());
cellNum
++;
cell
=
row
.
getCell
(
startCellNum
+
cellNum
);
if
(
cell
==
null
)
{
cell
=
row
.
createCell
(
startCellNum
+
cellNum
);
}
cell
.
setCellValue
(
vo
.
getWorkingHours
().
toString
());
cellNum
++;
cell
=
row
.
getCell
(
startCellNum
+
cellNum
);
if
(
cell
==
null
)
{
cell
=
row
.
createCell
(
startCellNum
+
cellNum
);
}
cell
.
setCellValue
(
vo
.
getEndTime
());
cellNum
++;
cell
=
row
.
getCell
(
startCellNum
+
cellNum
);
if
(
cell
==
null
)
{
cell
=
row
.
createCell
(
startCellNum
+
cellNum
);
}
cell
.
setCellValue
(
vo
.
getCreateTime
());
cellNum
++;
cell
=
row
.
getCell
(
startCellNum
+
cellNum
);
if
(
cell
==
null
)
{
cell
=
row
.
createCell
(
startCellNum
+
cellNum
);
}
cell
.
setCellValue
(
vo
.
getUserName
());
cellNum
++;
cell
=
row
.
getCell
(
startCellNum
+
cellNum
);
if
(
cell
==
null
)
{
cell
=
row
.
createCell
(
startCellNum
+
cellNum
);
}
cell
.
setCellValue
(
vo
.
getCompleteTime
());
continue
;
}
response
.
setContentType
(
"application/octet-stream"
);
// 设置response参数,可以打开下载页面
response
.
reset
();
response
.
setContentType
(
"application/vnd.ms-excel;charset=UTF-8"
);
response
.
setHeader
(
"Content-disposition"
,
"attachment;filename="
+
HttpUtils
.
transCharacter
(
request
,
filename
));
OutputStream
os
=
new
BufferedOutputStream
(
response
.
getOutputStream
());
workbook
.
write
(
os
);
// 输出文件
os
.
flush
();
os
.
close
();
// FileOutputStream out = new FileOutputStream("E:"+File.separator+"export.xls");
// workbook.write(out);
// out.close();
// ServletOutputStream os = response.getOutputStream();
// HashMap<String, String> map = new HashMap<String, String>();
// ExcelUtil.getInstance().exportObj2ExcelByTemplate(map, tempPath, os, list,clz, true);
}
public
void
exportXls
()
throws
Exception
{
String
path
=
this
.
getClass
().
getClassLoader
().
getResource
(
""
).
getPath
();
File
file
=
new
File
(
path
+
File
.
separator
+
"template"
+
File
.
separator
+
"temp.xls"
);
System
.
out
.
println
(
file
.
exists
());
// 读取项目根目录中的模板
InputStream
in
=
this
.
getClass
().
getResourceAsStream
(
path
+
"/template/temp.xls"
);
System
.
out
.
println
(
in
);
// File file = new File("E:\\template.xls"); 电脑硬盘上的模板,,一般模板都在项目里
POIFSFileSystem
poifsFileSystem
=
new
POIFSFileSystem
(
file
);
HSSFWorkbook
workbook
=
new
HSSFWorkbook
(
poifsFileSystem
);
HSSFSheet
sheet
=
workbook
.
getSheetAt
(
0
);
sheet
.
setForceFormulaRecalculation
(
true
);
HSSFRow
row
=
null
;
row
=
sheet
.
getRow
(
3
);
if
(
row
==
null
)
{
row
=
sheet
.
createRow
(
3
);
}
// 根据模板中表达式位置, 修改对应单元格的值
HSSFCell
cell
=
row
.
getCell
(
0
);
// 第3行 第1列, 下标是0开始的
if
(
cell
==
null
)
{
cell
=
row
.
createCell
(
0
);
}
cell
.
setCellValue
(
"张三"
);
cell
=
row
.
getCell
(
1
);
if
(
cell
==
null
)
{
cell
=
row
.
createCell
(
1
);
}
cell
.
setCellValue
(
23
);
// row.getCell(2).setCellValue("180cm");
// row.getCell(3).setCellValue("未婚");
// row.getCell(4).setCellValue("男");
// 修改模板内容导出新模板
// '/' 分隔符 采用 File.separator 统一表示
FileOutputStream
out
=
new
FileOutputStream
(
"E:"
+
File
.
separator
+
"export.xls"
);
workbook
.
write
(
out
);
out
.
close
();
}
public
static
void
printClass
(
T
t
)
throws
Exception
{
Class
<?
extends
T
>
clazz
=
null
;
clazz
=
t
.
getClass
();
Field
[]
fields
=
clazz
.
getFields
();
for
(
Field
f
:
fields
)
{
f
.
get
(
t
);
}
}
/**
* 打印类的信息,包括类的成员函数,成员变量
*
* @param obj 该对象所属类的信息
*/
public
static
void
printClassMessage
(
Object
obj
)
{
// 要获取类的信息,首先要获取类的类类型
Class
c
=
obj
.
getClass
();
// 传递的是哪个子类的对象,c就是该子类的类类型
// 获取类的名称
System
.
out
.
println
(
"类的名称是:"
+
c
.
getName
());
/*
* Method类,方法的对象 一个成员方法就是一个Method对象 getMethods()方法获取的是所有的public的函数,包括父类继承而来的
* getDeclaredMethods()获取的是多有该类自己声明的方法,不问访问权限
*/
Method
[]
ms
=
c
.
getMethods
();
// c.getDeclaredMethods();
for
(
int
i
=
0
;
i
<
ms
.
length
;
i
++)
{
// 得到方法的返回值类型的类类型
Class
retrunType
=
ms
[
i
].
getReturnType
();
System
.
out
.
print
(
retrunType
.
getName
()
+
" "
);
// 得到方法的名称
System
.
out
.
print
(
ms
[
i
].
getName
()
+
"("
);
// 获取的参数类型--->得到的是参数列表的类型的类类型
Class
[]
paraTypes
=
ms
[
i
].
getParameterTypes
();
for
(
Class
class1
:
paraTypes
)
{
System
.
out
.
print
(
class1
.
getName
()
+
","
);
}
System
.
out
.
println
(
")"
);
}
}
}
olive-console/src/main/java/com/utils/HttpUtils.java
0 → 100644
浏览文件 @
2aa711b2
package
com
.
utils
;
import
org.apache.http.HttpEntity
;
import
org.apache.http.client.config.RequestConfig
;
import
org.apache.http.client.methods.CloseableHttpResponse
;
import
org.apache.http.client.methods.HttpRequestBase
;
import
org.apache.http.impl.client.CloseableHttpClient
;
import
org.apache.http.impl.client.HttpClients
;
import
org.apache.http.impl.conn.PoolingHttpClientConnectionManager
;
import
org.apache.http.util.EntityUtils
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
javax.servlet.http.HttpServletRequest
;
import
java.io.IOException
;
import
java.net.URLEncoder
;
import
java.util.Map
;
public
class
HttpUtils
{
private
final
static
Logger
log
=
LoggerFactory
.
getLogger
(
HttpUtils
.
class
);
private
static
String
[]
IEBrowserSignals
=
{
"MSIE"
,
"Trident"
,
"Edge"
};
// 超时时间,单位 ms
private
static
int
TIME_OUT
=
10000
;
private
static
CloseableHttpClient
httpClient
;
private
static
RequestConfig
requestConfig
=
RequestConfig
.
custom
()
.
setSocketTimeout
(
TIME_OUT
)
.
setConnectTimeout
(
TIME_OUT
)
.
setConnectionRequestTimeout
(
TIME_OUT
).
build
();
static
{
// httpClient链接池
PoolingHttpClientConnectionManager
connectionManager
=
new
PoolingHttpClientConnectionManager
();
connectionManager
.
setMaxTotal
(
200
);
connectionManager
.
setDefaultMaxPerRoute
(
200
);
httpClient
=
HttpClients
.
custom
().
setConnectionManager
(
connectionManager
).
setDefaultRequestConfig
(
requestConfig
).
build
();
}
public
static
String
execute
(
HttpRequestBase
requestBase
)
{
try
{
CloseableHttpResponse
response
=
httpClient
.
execute
(
requestBase
);
HttpEntity
entity
=
response
.
getEntity
();
return
EntityUtils
.
toString
(
entity
,
"UTF-8"
);
}
catch
(
IOException
e
)
{
log
.
error
(
"HttpUtils请求失败"
,
e
);
}
return
""
;
}
public
static
String
fmtUrl
(
String
url
)
{
if
(
url
.
lastIndexOf
(
"?"
)
==
(
url
.
length
()
-
1
))
{
return
url
;
}
return
url
+
"?"
;
}
public
static
String
buildParam
(
Map
<
String
,
?>
params
)
{
if
(
params
==
null
)
return
""
;
final
StringBuilder
str
=
new
StringBuilder
(
""
);
params
.
forEach
((
k
,
v
)
->
{
str
.
append
(
k
+
"="
+
v
+
"&"
);
});
return
str
.
deleteCharAt
(
str
.
length
()-
1
).
toString
();
}
public
static
boolean
isMSBrowser
(
HttpServletRequest
request
)
{
String
userAgent
=
request
.
getHeader
(
"User-Agent"
);
for
(
String
signal
:
IEBrowserSignals
)
{
if
(
userAgent
.
contains
(
signal
))
return
true
;
}
return
false
;
}
/**
* 根据不同的浏览器转字符编码
*
* @param request
* @param fileName
* @return
* @throws Exception
*/
public
static
String
transCharacter
(
HttpServletRequest
request
,
String
fileName
)
throws
Exception
{
boolean
isMSIE
=
isMSBrowser
(
request
);
if
(
isMSIE
)
{
fileName
=
URLEncoder
.
encode
(
fileName
,
"UTF-8"
);
}
return
new
String
(
fileName
.
getBytes
(
"UTF-8"
),
"ISO8859-1"
);
}
}
\ No newline at end of file
olive-console/src/main/java/com/utils/ImportExcelUtil.java
0 → 100644
浏览文件 @
2aa711b2
差异被折叠。
点击展开。
olive-console/src/main/java/com/utils/excelutil/BaseException.java
0 → 100644
浏览文件 @
2aa711b2
package
com
.
utils
.
excelutil
;
public
class
BaseException
extends
RuntimeException
{
/**
*
*/
private
static
final
long
serialVersionUID
=
1L
;
private
int
code
=
ResponseCodeEnum
.
BASE_EXCEPTION
.
getCode
();
private
Object
data
=
null
;
// 无参构造方法
public
BaseException
()
{
super
();
}
// 有参的构造方法
public
BaseException
(
String
message
)
{
super
(
message
);
}
public
BaseException
(
int
code
,
String
message
)
{
super
(
message
);
this
.
code
=
code
;
}
public
BaseException
(
int
code
,
String
message
,
Object
data
)
{
super
(
message
);
this
.
code
=
code
;
this
.
data
=
data
;
}
public
BaseException
(
ResponseCodeEnum
res
)
{
super
(
res
.
getMsg
());
this
.
code
=
res
.
getCode
();
}
// 用指定的详细信息和原因构造一个新的异常
public
BaseException
(
String
message
,
Throwable
cause
)
{
super
(
message
,
cause
);
}
// 用指定原因构造一个新的异常
public
BaseException
(
Throwable
cause
)
{
super
(
cause
);
}
public
int
getCode
()
{
return
code
;
}
public
void
setCode
(
int
code
)
{
this
.
code
=
code
;
}
public
Object
getData
()
{
return
data
;
}
public
void
setData
(
Object
data
)
{
this
.
data
=
data
;
}
}
\ No newline at end of file
olive-console/src/main/java/com/utils/excelutil/ExcelHeader.java
0 → 100644
浏览文件 @
2aa711b2
package
com
.
utils
.
excelutil
;
public
class
ExcelHeader
implements
Comparable
<
ExcelHeader
>{
/**
* excel的标题名称
*/
private
String
title
;
/**
* 每一个标题的顺序
*/
private
int
order
;
/**
* 说对应方法名称
*/
private
String
methodName
;
/**
* date格式
*/
private
String
dateFmt
;
public
String
getTitle
()
{
return
title
;
}
public
void
setTitle
(
String
title
)
{
this
.
title
=
title
;
}
public
int
getOrder
()
{
return
order
;
}
public
void
setOrder
(
int
order
)
{
this
.
order
=
order
;
}
public
String
getMethodName
()
{
return
methodName
;
}
public
void
setMethodName
(
String
methodName
)
{
this
.
methodName
=
methodName
;
}
public
String
getDateFmt
()
{
return
dateFmt
;
}
public
void
setDateFmt
(
String
dateFmt
)
{
this
.
dateFmt
=
dateFmt
;
}
public
int
compareTo
(
ExcelHeader
o
)
{
return
order
>
o
.
order
?
1
:(
order
<
o
.
order
?-
1
:
0
);
}
public
ExcelHeader
(
String
title
,
int
order
,
String
methodName
,
String
dateFmt
)
{
super
();
this
.
title
=
title
;
this
.
order
=
order
;
this
.
methodName
=
methodName
;
this
.
dateFmt
=
dateFmt
;
}
}
\ No newline at end of file
olive-console/src/main/java/com/utils/excelutil/ExcelParseMode.java
0 → 100644
浏览文件 @
2aa711b2
package
com
.
utils
.
excelutil
;
public
class
ExcelParseMode
{
/** Excel 97-2003 */
public
static
final
String
XLS
=
"xls"
;
/** Excel 2007- */
public
static
final
String
XLSX
=
"xlsx"
;
}
olive-console/src/main/java/com/utils/excelutil/ExcelResources.java
0 → 100644
浏览文件 @
2aa711b2
package
com
.
utils
.
excelutil
;
import
java.lang.annotation.Documented
;
import
java.lang.annotation.ElementType
;
import
java.lang.annotation.Retention
;
import
java.lang.annotation.RetentionPolicy
;
import
java.lang.annotation.Target
;
/**
* 用来在对象的 成员变量、对象、属性(包括enum实例)上加入的annotation,通过该annotation说明某个属性所对应的标题
*/
@Documented
@Retention
(
RetentionPolicy
.
RUNTIME
)
@Target
(
ElementType
.
FIELD
)
public
@interface
ExcelResources
{
/**
* 属性的标题名称
* @return
*/
String
title
();
/**
* 在excel的顺序
* @return
*/
int
order
()
default
9999
;
/**
* date格式
* default fmt yyyy-MM-dd HH:mm:ss
*/
String
dateFmt
()
default
"yyyy-MM-dd HH:mm:ss"
;
}
\ No newline at end of file
olive-console/src/main/java/com/utils/excelutil/ExcelSheetParams.java
0 → 100644
浏览文件 @
2aa711b2
package
com
.
utils
.
excelutil
;
import
java.lang.annotation.Documented
;
import
java.lang.annotation.ElementType
;
import
java.lang.annotation.Inherited
;
import
java.lang.annotation.Retention
;
import
java.lang.annotation.RetentionPolicy
;
import
java.lang.annotation.Target
;
/**
* 解析Excel时实体所要取数据的工作簿设置
*/
@Documented
@Inherited
@Retention
(
RetentionPolicy
.
RUNTIME
)
@Target
(
ElementType
.
TYPE
)
public
@interface
ExcelSheetParams
{
/** 工作簿名称 */
public
String
sheetName
()
default
""
;
/** 起始行数 */
public
int
startRow
()
default
0
;
/** 结束行数,如果小于0,表示忽略 */
public
int
endRow
()
default
-
1
;
/** 是否遇到一个空行后结束读取,如果为true,则在遇到空行时会停止读取,这时会忽略endRow的设置 */
public
boolean
breakByEmptyRow
()
default
false
;
}
olive-console/src/main/java/com/utils/excelutil/ExcelTemplate.java
0 → 100644
浏览文件 @
2aa711b2
差异被折叠。
点击展开。
olive-console/src/main/java/com/utils/excelutil/ImportResult.java
0 → 100644
浏览文件 @
2aa711b2
package
com
.
utils
.
excelutil
;
import
lombok.Data
;
/**
* 所有导入方法的结果类
*
*/
@Data
public
class
ImportResult
{
/** 成功了多少条 */
private
int
success
;
/** 失败了多少条 */
private
int
error
;
/** 错误文件标识 */
private
String
errorFileId
;
}
olive-console/src/main/java/com/utils/excelutil/ResponseCodeEnum.java
0 → 100644
浏览文件 @
2aa711b2
package
com
.
utils
.
excelutil
;
/**
* 响应编码
* @ClassName ReponseCodeEnum
* @Description:
* @author lpf
* @date 2018年5月9日下午4:27:58
*
*/
public
enum
ResponseCodeEnum
{
/** 200 ,操作成功" */
OK
(
0
,
"操作成功"
),
/** -1,操作失败" */
FAIL
(-
1
,
"操作失败"
),
/** 500,服务器异常" */
EXCEPTION
(
500
,
"服务器异常"
),
/** 600, BaseException */
BASE_EXCEPTION
(
600
,
"BaseException"
),
/** -2,验证不通过" */
VALIDATE
(-
2
,
"验证不通过"
),
/** -3资源不存在*/
NOT_EXIST
(-
3
,
"资源不存在"
),
/** -4 接口调用 参数类型转换异常*/
BIND_EXCEPTION
(-
4
,
"参数不合法"
),
/** -5 接口调用缺少必填参数 */
MISS_EXCEPTION
(-
5
,
"缺少必填参数"
),
/** -6 登录过期或未登录 */
NO_LOGIN
(-
6
,
"请重新登录"
);
private
final
int
code
;
private
final
String
msg
;
private
ResponseCodeEnum
(
int
code
,
String
msg
)
{
this
.
code
=
code
;
this
.
msg
=
msg
;
}
public
int
getCode
()
{
return
code
;
}
public
String
getMsg
()
{
return
msg
;
}
}
olive-console/src/main/java/com/utils/excelutil/Student.java
0 → 100644
浏览文件 @
2aa711b2
package
com
.
utils
.
excelutil
;
import
lombok.Data
;
@Data
public
class
Student
{
private
String
name
;
private
String
author
;
}
olive-console/src/main/java/com/utils/excelutil/TemplateFileUtil.java
0 → 100644
浏览文件 @
2aa711b2
package
com
.
utils
.
excelutil
;
import
java.io.FileInputStream
;
import
java.io.FileNotFoundException
;
import
org.springframework.util.ResourceUtils
;
public
class
TemplateFileUtil
{
public
static
FileInputStream
getTemplates
(
String
tempName
)
throws
FileNotFoundException
{
return
new
FileInputStream
(
ResourceUtils
.
getFile
(
"classpath:excel-templates/"
+
tempName
));
}
}
\ No newline at end of file
olive-console/src/main/java/com/zrqx/olive/ttask/controller/TaskController.java
浏览文件 @
2aa711b2
差异被折叠。
点击展开。
olive-console/src/main/java/com/zrqx/olive/ttask/dao/TaskDao.java
浏览文件 @
2aa711b2
...
...
@@ -30,19 +30,50 @@ import com.zrqx.olive.ttask.vo.TaskVo;
public
interface
TaskDao
extends
BaseMapper
<
Task
>
{
@Select
(
"<script>"
+
" SELECT *,(select account from eb_system_admin c where a.user_id = c.id) userName "
+
" select tt.* from (SELECT a.*,(select account from eb_system_admin c where a.user_id = c.id) userName, "
+
" (case when task_type = 1 then '项目任务' when task_type = 2 then 'BUG任务' when task_type = 3 then '部门任务' else '' end) taskTypeName,"
+
" (case when task_status = 0 then '关闭' when task_status = 1 then '未完成' when task_status = 2 then '已完成' end) taskStatusName, "
+
" (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.moduleId!=null'> "
+
"AND moduleId = #{request.moduleId} "
+
"
AND moduleId = #{request.moduleId} "
+
"</if>"
+
"<if test = 'request.taskName!=null'> "
+
"AND taskName = #{request.taskName} "
+
"
AND taskName = #{request.taskName} "
+
"</if>"
+
"<if test = 'request.taskType!=null'> "
+
"AND taskType = #{request.taskType} "
+
"
AND taskType = #{request.taskType} "
+
"</if>"
+
"<if test = 'request.taskStatus!=null'> "
+
"AND taskStatus = #{request.taskStatus} "
+
" AND taskStatus = #{request.taskStatus} "
+
"</if>"
+
"<if test = 'request.id!=null'> "
+
" AND id = #{request.id} "
+
"</if>"
+
"<if test = 'request.projectId!=null'> "
+
" AND projectId = #{request.projectId} "
+
"</if>"
+
"<if test = 'request.taskStatus == 3'> "
+
" AND taskStatus != 0 "
+
"</if>"
+
"<if test = 'request.endTime == 1'> "
+
" AND now() > #{request.endTime} "
+
"</if>"
+
"<if test = 'request.userId!=null'> "
+
" AND userId = #{request.userId} "
+
"</if>"
+
"<if test = 'request.taskDescription!=null'> "
+
" AND taskDescription like concat('%',#{request.taskDescription},'%') "
+
"</if>"
+
"<if test='request.ids != null and request.ids.size > 0'>"
+
"and a.id in "
+
" <foreach collection=\"request.ids\" index=\"index\" item=\"id\" open=\"(\" separator=\",\" close=\")\">"
+
"#{id}"
+
"</foreach>"
+
"</if>"
+
" ) tt"
+
"<if test = 'request.userName!=null'> "
+
" AND tt.userName = like concat('%',#{request.userName},'%') "
+
"</if>"
+
"</script>"
)
List
<
TaskVo
>
page
(
@Param
(
"request"
)
TaskRequest
request
);
...
...
olive-console/src/main/java/com/zrqx/olive/ttask/dao/TaskRecordDao.java
0 → 100644
浏览文件 @
2aa711b2
package
com
.
zrqx
.
olive
.
ttask
.
dao
;
import
java.util.List
;
import
org.apache.ibatis.annotations.Mapper
;
import
org.apache.ibatis.annotations.Param
;
import
org.apache.ibatis.annotations.Select
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
com.zrqx.olive.article.model.Article
;
import
com.zrqx.olive.project.model.Customer
;
import
com.zrqx.olive.project.request.QueryCustomerRequest
;
import
com.zrqx.olive.ttask.model.Task
;
import
com.zrqx.olive.ttask.model.TaskRecord
;
import
com.zrqx.olive.ttask.request.TaskRequest
;
import
com.zrqx.olive.ttask.vo.TaskVo
;
/**
* 任务历史记录管理表 Mapper 接口
* +----------------------------------------------------------------------
* | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
* +----------------------------------------------------------------------
* | Copyright (c) 2016~2020 https://www.crmeb.com All rights reserved.
* +----------------------------------------------------------------------
* | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
* +----------------------------------------------------------------------
* | Author: CRMEB Team <admin@crmeb.com>
* +----------------------------------------------------------------------
*/
@Mapper
public
interface
TaskRecordDao
extends
BaseMapper
<
TaskRecord
>
{
}
olive-console/src/main/java/com/zrqx/olive/ttask/model/Task.java
浏览文件 @
2aa711b2
...
...
@@ -16,7 +16,7 @@ import java.util.Date;
import
org.springframework.data.annotation.Id
;
/**
*
文章
管理表
*
任务
管理表
* +----------------------------------------------------------------------
* | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
* +----------------------------------------------------------------------
...
...
@@ -37,9 +37,9 @@ public class Task implements Serializable {
private
static
final
long
serialVersionUID
=
1L
;
@Id
@TableId
(
value
=
"id"
,
type
=
IdType
.
ASSIGN_UUID
)
@TableId
(
value
=
"id"
,
type
=
IdType
.
AUTO
)
@ApiModelProperty
(
"id,新增时不需要填写"
)
private
String
id
;
private
Integer
id
;
@ApiModelProperty
(
value
=
"可选值:1:项目任务 2:BUG任务 3:部门任务"
)
private
Integer
taskType
;
...
...
@@ -83,7 +83,7 @@ public class Task implements Serializable {
@ApiModelProperty
(
value
=
"创建时间"
)
private
Date
createTime
;
@ApiModelProperty
(
value
=
"
创建
时间"
)
@ApiModelProperty
(
value
=
"
修改
时间"
)
private
Date
updateTime
;
...
...
olive-console/src/main/java/com/zrqx/olive/ttask/model/TaskRecord.java
0 → 100644
浏览文件 @
2aa711b2
package
com
.
zrqx
.
olive
.
ttask
.
model
;
import
com.baomidou.mybatisplus.annotation.IdType
;
import
com.baomidou.mybatisplus.annotation.TableId
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
import
lombok.experimental.Accessors
;
import
java.io.Serializable
;
import
java.math.BigDecimal
;
import
java.util.Date
;
import
org.springframework.data.annotation.Id
;
/**
* 任务历史记录管理
* +----------------------------------------------------------------------
* | 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
)
@TableName
(
"t_task_record"
)
@ApiModel
(
value
=
"taskrecord对象"
,
description
=
"任务历史记录管理"
)
public
class
TaskRecord
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1L
;
@Id
@TableId
(
value
=
"id"
,
type
=
IdType
.
ASSIGN_UUID
)
@ApiModelProperty
(
"id,新增时不需要填写"
)
private
Integer
id
;
@ApiModelProperty
(
value
=
"任务ID"
)
private
Integer
taskId
;
@ApiModelProperty
(
value
=
"用户ID"
)
private
Integer
userId
;
@ApiModelProperty
(
value
=
"用户名"
)
private
String
assignUserId
;
@ApiModelProperty
(
value
=
"描述"
)
private
String
describes
;
@ApiModelProperty
(
value
=
"修改时间"
)
private
Date
uploadTime
;
@ApiModelProperty
(
value
=
"0:关闭 1:确认 2:完成 3:指派 4:编辑"
)
private
Integer
type
;
}
olive-console/src/main/java/com/zrqx/olive/ttask/request/TaskRequest.java
浏览文件 @
2aa711b2
...
...
@@ -15,6 +15,7 @@ import javax.validation.constraints.NotBlank;
import
java.io.Serializable
;
import
java.math.BigDecimal
;
import
java.util.Date
;
import
java.util.List
;
/**
* 任务管理 Request
...
...
@@ -37,7 +38,7 @@ public class TaskRequest implements Serializable {
private
static
final
long
serialVersionUID
=
1L
;
@ApiModelProperty
(
"id,新增时不需要填写"
)
private
String
id
;
private
Integer
id
;
@ApiModelProperty
(
value
=
"可选值:1:项目任务 2:BUG任务 3:部门任务"
)
private
Integer
taskType
;
...
...
@@ -50,6 +51,9 @@ public class TaskRequest implements Serializable {
@ApiModelProperty
(
value
=
"指派给成员id"
)
private
Integer
userId
;
@ApiModelProperty
(
value
=
"指派给成员名称"
)
private
Integer
userName
;
@ApiModelProperty
(
value
=
"优先级 可选值:1、2、3、4 仅支持单选,默认值为1。"
)
private
Integer
priority
;
...
...
@@ -63,7 +67,7 @@ public class TaskRequest implements Serializable {
@ApiModelProperty
(
value
=
"开始日期"
)
private
Date
startTime
;
@ApiModelProperty
(
value
=
"
开始
日期"
)
@ApiModelProperty
(
value
=
"
结束
日期"
)
private
Date
endTime
;
@ApiModelProperty
(
value
=
"任务状态 0:关闭 1:未完成 2:已完成"
)
...
...
@@ -83,4 +87,7 @@ public class TaskRequest implements Serializable {
@ApiModelProperty
(
value
=
"创建时间"
)
private
Date
updateTime
;
@ApiModelProperty
(
value
=
"导出ids"
)
private
List
<
Integer
>
ids
;
}
olive-console/src/main/java/com/zrqx/olive/ttask/service/TaskRecordService.java
0 → 100644
浏览文件 @
2aa711b2
package
com
.
zrqx
.
olive
.
ttask
.
service
;
import
com.baomidou.mybatisplus.extension.service.IService
;
import
com.common.PageParamRequest
;
import
com.github.pagehelper.PageInfo
;
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.model.TaskRecord
;
import
com.zrqx.olive.ttask.request.TaskRequest
;
import
com.zrqx.olive.ttask.vo.TaskVo
;
/**
* TaskRecordService 接口
* +----------------------------------------------------------------------
* | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
* +----------------------------------------------------------------------
* | Copyright (c) 2016~2020 https://www.crmeb.com All rights reserved.
* +----------------------------------------------------------------------
* | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
* +----------------------------------------------------------------------
* | Author: CRMEB Team <admin@crmeb.com>
* +----------------------------------------------------------------------
*/
public
interface
TaskRecordService
extends
IService
<
TaskRecord
>
{
}
olive-console/src/main/java/com/zrqx/olive/ttask/service/TaskService.java
浏览文件 @
2aa711b2
package
com
.
zrqx
.
olive
.
ttask
.
service
;
import
java.io.IOException
;
import
java.util.List
;
import
org.springframework.validation.annotation.Validated
;
import
org.springframework.web.bind.annotation.RequestBody
;
import
org.springframework.web.multipart.MultipartFile
;
import
com.baomidou.mybatisplus.extension.service.IService
;
import
com.common.PageParamRequest
;
import
com.github.pagehelper.PageInfo
;
import
com.utils.excelutil.BaseException
;
import
com.zrqx.olive.article.model.Article
;
import
com.zrqx.olive.article.request.ArticleSearchRequest
;
import
com.zrqx.olive.article.vo.ArticleVo
;
...
...
@@ -25,5 +33,9 @@ import com.zrqx.olive.ttask.vo.TaskVo;
public
interface
TaskService
extends
IService
<
Task
>
{
PageInfo
<
TaskVo
>
getpage
(
TaskRequest
request
,
PageParamRequest
pageParamRequest
);
List
<
TaskVo
>
getList
(
TaskRequest
request
);
Integer
imporTask
(
MultipartFile
file
,
TaskRequest
taskRequest
)
throws
BaseException
,
IOException
;
}
olive-console/src/main/java/com/zrqx/olive/ttask/service/imp/TaskRecordServiceImpl.java
0 → 100644
浏览文件 @
2aa711b2
package
com
.
zrqx
.
olive
.
ttask
.
service
.
imp
;
import
java.util.Collection
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.function.Function
;
import
javax.annotation.Resource
;
import
org.springframework.stereotype.Service
;
import
com.baomidou.mybatisplus.core.conditions.Wrapper
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
com.common.CommonPage
;
import
com.common.PageParamRequest
;
import
com.github.pagehelper.Page
;
import
com.github.pagehelper.PageHelper
;
import
com.github.pagehelper.PageInfo
;
import
com.zrqx.olive.ttask.dao.TaskRecordDao
;
import
com.zrqx.olive.ttask.model.TaskRecord
;
import
com.zrqx.olive.ttask.request.TaskRequest
;
import
com.zrqx.olive.ttask.service.TaskRecordService
;
import
com.zrqx.olive.ttask.service.TaskService
;
import
com.zrqx.olive.ttask.vo.TaskVo
;
/**
* TaskRecordServiceImpl 接口实现
* +----------------------------------------------------------------------
* | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
* +----------------------------------------------------------------------
* | Copyright (c) 2016~2020 https://www.crmeb.com All rights reserved.
* +----------------------------------------------------------------------
* | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
* +----------------------------------------------------------------------
* | Author: CRMEB Team <admin@crmeb.com>
* +----------------------------------------------------------------------
*/
@Service
public
class
TaskRecordServiceImpl
extends
ServiceImpl
<
TaskRecordDao
,
TaskRecord
>
implements
TaskRecordService
{
@Resource
private
TaskRecordDao
dao
;
}
olive-console/src/main/java/com/zrqx/olive/ttask/service/imp/TaskServiceImpl.java
浏览文件 @
2aa711b2
...
...
@@ -3,15 +3,20 @@ package com.zrqx.olive.ttask.service.imp;
import
cn.hutool.core.util.ObjectUtil
;
import
cn.hutool.core.util.StrUtil
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
import
com.baomidou.mybatisplus.core.toolkit.Wrappers
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
com.common.CommonPage
;
import
com.common.CommonResult
;
import
com.common.PageParamRequest
;
import
com.exception.CrmebException
;
import
com.github.pagehelper.Page
;
import
com.github.pagehelper.PageHelper
;
import
com.github.pagehelper.PageInfo
;
import
com.utils.CrmebUtil
;
import
com.utils.ImportExcelUtil
;
import
com.utils.UUIDUtil
;
import
com.utils.excelutil.BaseException
;
import
com.zrqx.olive.article.dao.ArticleDao
;
import
com.zrqx.olive.article.model.Article
;
import
com.zrqx.olive.article.request.ArticleSearchRequest
;
...
...
@@ -19,58 +24,186 @@ import com.zrqx.olive.article.service.ArticleService;
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.service.DiyTypeService
;
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.TaskRequest
;
import
com.zrqx.olive.ttask.service.TaskService
;
import
com.zrqx.olive.ttask.vo.ExcelTaskVo
;
import
com.zrqx.olive.ttask.vo.TaskVo
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.web.multipart.MultipartFile
;
import
javax.annotation.Resource
;
import
java.io.IOException
;
import
java.math.BigDecimal
;
import
java.util.ArrayList
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.Optional
;
import
static
com
.
constants
.
Constants
.
ARTICLE_BANNER_LIMIT
;
/**
* TaskServiceImpl 接口实现
* +----------------------------------------------------------------------
*
|
CRMEB [ CRMEB赋能开发者,助力企业发展 ]
*
+----------------------------------------------------------------------
*
|
Copyright (c) 2016~2020 https://www.crmeb.com All rights reserved.
*
+----------------------------------------------------------------------
*
|
Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
*
+----------------------------------------------------------------------
*
|
Author: CRMEB Team <admin@crmeb.com>
*
+----------------------------------------------------------------------
*/
* TaskServiceImpl 接口实现
* +---------------------------------------------------------------------- |
* CRMEB [ CRMEB赋能开发者,助力企业发展 ]
*
+---------------------------------------------------------------------- |
* Copyright (c) 2016~2020 https://www.crmeb.com All rights reserved.
*
+---------------------------------------------------------------------- |
* Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
*
+---------------------------------------------------------------------- |
* Author: CRMEB Team <admin@crmeb.com>
* +----------------------------------------------------------------------
*/
@Service
public
class
TaskServiceImpl
extends
ServiceImpl
<
TaskDao
,
Task
>
implements
TaskService
{
@Resource
private
TaskDao
dao
;
@Resource
private
TaskDao
dao
;
/**
* 列表
* @param request ArticleSearchRequest 请求参数
* @param pageParamRequest 分页类参数
* @author Mr.Ren
* @since 2021-08-04
* @return List<Article>
*/
@Override
public
PageInfo
<
TaskVo
>
getpage
(
TaskRequest
request
,
PageParamRequest
pageParamRequest
)
{
Page
<
Task
>
taskPage
=
PageHelper
.
startPage
(
pageParamRequest
.
getPage
(),
pageParamRequest
.
getLimit
(),
pageParamRequest
.
getOrderBy
());
List
<
TaskVo
>
taskVo
=
dao
.
page
(
request
);
return
CommonPage
.
copyPageInfo
(
taskPage
,
taskVo
);
}
@Autowired
private
DiyTypeService
service
;
}
/**
* 列表
*
* @param request ArticleSearchRequest 请求参数
* @param pageParamRequest 分页类参数
* @author Mr.Ren
* @since 2021-08-04
* @return List<Article>
*/
@Override
public
PageInfo
<
TaskVo
>
getpage
(
TaskRequest
request
,
PageParamRequest
pageParamRequest
)
{
Page
<
Task
>
taskPage
=
PageHelper
.
startPage
(
pageParamRequest
.
getPage
(),
pageParamRequest
.
getLimit
(),
pageParamRequest
.
getOrderBy
());
List
<
TaskVo
>
taskVo
=
dao
.
page
(
request
);
return
CommonPage
.
copyPageInfo
(
taskPage
,
taskVo
);
}
@Override
public
List
<
TaskVo
>
getList
(
TaskRequest
request
)
{
List
<
TaskVo
>
taskVo
=
dao
.
page
(
request
);
return
taskVo
;
}
@Override
public
Integer
imporTask
(
MultipartFile
file
,
TaskRequest
taskRequest
)
throws
BaseException
,
IOException
{
List
<
ExcelTaskVo
>
list
=
ImportExcelUtil
.
importExcel
(
file
.
getInputStream
(),
ExcelTaskVo
.
class
,
file
.
getOriginalFilename
());
for
(
ExcelTaskVo
excelTaskVo
:
list
)
{
Task
task
=
new
Task
();
BeanUtils
.
copyProperties
(
excelTaskVo
,
task
);
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
();
QueryWrapper
<
DiyType
>
qw
=
new
QueryWrapper
<>();
qw
.
eq
(
"type_name"
,
excelTaskVo
.
getModuleName
());
qw
.
eq
(
"project_id"
,
taskRequest
.
getProjectId
());
// 查询一级模块是否存在
List
<
DiyType
>
listDiy
=
service
.
list
(
qw
);
if
(
listDiy
.
size
()
>
0
)
{
// 二级模块是否为空
if
(
StringUtils
.
isNotBlank
(
excelTaskVo
.
getTwoModuleName
()))
{
qw
.
eq
(
"type_name"
,
excelTaskVo
.
getTwoModuleName
());
qw
.
eq
(
"project_id"
,
taskRequest
.
getProjectId
());
// 查询二级模块是否存在
List
<
DiyType
>
listTwoDiy
=
service
.
list
(
qw
);
if
(
listTwoDiy
.
size
()
>
0
)
{
// 二级模块存在赋值模块id
task
.
setModuleId
(
listTwoDiy
.
get
(
0
).
getId
());
}
else
{
// 二级模块不为空,不存在创建新二级模块
QueryWrapper
<
DiyType
>
queryWrapper
=
new
QueryWrapper
<>();
queryWrapper
.
eq
(
"parent_id"
,
listDiy
.
get
(
0
).
getId
());
queryWrapper
.
orderByDesc
(
"code"
);
List
<
DiyType
>
list1
=
service
.
list
(
queryWrapper
);
type
.
setShowName
(
excelTaskVo
.
getTwoModuleName
());
type
.
setTypeName
(
excelTaskVo
.
getTwoModuleName
());
type
.
setCreateTime
(
new
Date
());
if
(
list1
!=
null
&&
list1
.
size
()
>
0
)
{
// 查询到子分类,获取最大code生成新的code
String
code
=
list1
.
get
(
0
).
getCode
();
try
{
type
.
setCode
(
UUIDUtil
.
newCode
(
code
));
}
catch
(
Exception
e
)
{
// TODO Auto-generated catch block
e
.
printStackTrace
();
}
}
else
{
// 没有查询到子分类,获取父类code 拼接 01
type
.
setCode
(
listDiy
.
get
(
0
).
getCode
()
+
"01"
);
}
service
.
save
(
type
);
}
}
else
{
// 二级模块为空取以一级模块id
task
.
setModuleId
(
listDiy
.
get
(
0
).
getId
());
}
}
else
{
// 创建一级二级
QueryWrapper
<
DiyType
>
queryWrapper
=
new
QueryWrapper
<>();
queryWrapper
.
eq
(
"parent_id"
,
0
);
queryWrapper
.
orderByDesc
(
"code"
);
List
<
DiyType
>
list1
=
service
.
list
(
queryWrapper
);
// 查询到子分类,获取最大code生成新的code
String
code
=
list1
.
get
(
0
).
getCode
();
type
.
setParentId
(
"0"
);
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
());
service
.
save
(
type
);
if
(
StringUtils
.
isNotBlank
(
excelTaskVo
.
getTwoModuleName
()))
{
// 二级分类创建
DiyType
type2
=
new
DiyType
();
type2
.
setCode
(
type
.
getCode
()
+
"01"
);
type2
.
setParentId
(
type
.
getParentId
());
type2
.
setShowName
(
excelTaskVo
.
getTwoModuleName
());
type2
.
setTypeName
(
excelTaskVo
.
getTwoModuleName
());
service
.
save
(
type2
);
task
.
setModuleId
(
type2
.
getId
());
}
else
{
task
.
setModuleId
(
type
.
getId
());
}
}
//增加后端工时
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
.
getFrontHours
()));
this
.
save
(
task
);
}
return
null
;
}
}
olive-console/src/main/java/com/zrqx/olive/ttask/vo/ExcelTaskVo.java
0 → 100644
浏览文件 @
2aa711b2
package
com
.
zrqx
.
olive
.
ttask
.
vo
;
import
com.utils.excelutil.ExcelResources
;
import
io.swagger.annotations.ApiModel
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
import
lombok.experimental.Accessors
;
@Data
@EqualsAndHashCode
(
callSuper
=
false
)
@Accessors
(
chain
=
true
)
@ApiModel
(
value
=
"ExcelTaskVo"
,
description
=
"导入任务信息"
)
public
class
ExcelTaskVo
{
@ExcelResources
(
title
=
"模块名称"
)
private
String
moduleName
;
@ExcelResources
(
title
=
"二级菜单"
)
private
String
twoModuleName
;
@ExcelResources
(
title
=
"任务"
)
private
String
taskName
;
@ExcelResources
(
title
=
"任务类型"
)
private
String
taskTypeName
;
@ExcelResources
(
title
=
"备注"
)
private
String
taskDescription
;
@ExcelResources
(
title
=
"后端"
)
private
String
backHours
;
@ExcelResources
(
title
=
"前端"
)
private
String
frontHours
;
}
olive-console/src/main/java/com/zrqx/olive/ttask/vo/TaskVo.java
浏览文件 @
2aa711b2
...
...
@@ -38,10 +38,13 @@ public class TaskVo implements Serializable {
private
static
final
long
serialVersionUID
=
1L
;
@ApiModelProperty
(
"id,新增时不需要填写"
)
private
String
id
;
private
Integer
id
;
@ApiModelProperty
(
value
=
"可选值:1:项目任务 2:BUG任务 3:部门任务"
)
private
Integer
taskType
;
@ApiModelProperty
(
value
=
"任务类型名"
)
private
String
taskTypeName
;
@ApiModelProperty
(
value
=
"所属模块"
)
private
String
moduleId
;
...
...
@@ -52,7 +55,7 @@ public class TaskVo implements Serializable {
@ApiModelProperty
(
value
=
"指派给成员id"
)
private
Integer
userId
;
@ApiModelProperty
(
value
=
"指派给成员
id
"
)
@ApiModelProperty
(
value
=
"指派给成员"
)
private
String
userName
;
@ApiModelProperty
(
value
=
"优先级 可选值:1、2、3、4 仅支持单选,默认值为1。"
)
...
...
@@ -72,9 +75,15 @@ public class TaskVo implements Serializable {
@ApiModelProperty
(
value
=
"任务状态 0:关闭 1:未完成 2:已完成"
)
private
Integer
taskStatus
;
@ApiModelProperty
(
value
=
"任务状态名"
)
private
String
taskStatusName
;
@ApiModelProperty
(
value
=
"完成时间"
)
private
Date
completeTime
;
@ApiModelProperty
(
value
=
"完成人"
)
private
String
completeName
;
@ApiModelProperty
(
value
=
"项目id"
)
private
String
projectId
;
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论