Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in / Register
Toggle navigation
D
dcs-plan
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
INET-TWO
server
dcs-plan
Commits
04dbb09d
Commit
04dbb09d
authored
Oct 15, 2024
by
侯彦文
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
进度计划导出
parent
0ca59bd0
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
83 additions
and
66 deletions
+83
-66
ExtPlanService.java
.../java/com/yonde/dcs/plan/core/service/ExtPlanService.java
+1
-1
ExtPlanServiceImpl.java
.../yonde/dcs/plan/core/service/impl/ExtPlanServiceImpl.java
+81
-64
ExtPlanServiceFeign.java
...in/java/com/yonde/dcs/plan/feign/ExtPlanServiceFeign.java
+1
-1
No files found.
dcs-plan-core/src/main/java/com/yonde/dcs/plan/core/service/ExtPlanService.java
View file @
04dbb09d
...
...
@@ -69,7 +69,7 @@ public interface ExtPlanService<V extends ExtPlanVO> extends ExtPlanServiceShado
* @param response
* @param ids
*/
void
exportPlan
(
HttpServletResponse
response
,
List
<
Long
>
ids
);
void
exportPlan
(
HttpServletResponse
response
,
List
<
Long
>
ids
)
throws
IOException
;
/**
...
...
dcs-plan-core/src/main/java/com/yonde/dcs/plan/core/service/impl/ExtPlanServiceImpl.java
View file @
04dbb09d
package
com
.
yonde
.
dcs
.
plan
.
core
.
service
.
impl
;
import
cn.hutool.core.
io.Io
Util
;
import
cn.hutool.core.
collection.Collection
Util
;
import
cn.hutool.poi.excel.ExcelReader
;
import
cn.hutool.poi.excel.ExcelUtil
;
import
cn.hutool.poi.excel.ExcelWriter
;
import
cn.hutool.poi.excel.StyleSet
;
import
com.yonde.dcs.document.common.entity.vo.DxDocumentVO
;
import
com.yonde.dcs.document.expand.entity.DxDocumentVOExpand
;
import
com.yonde.dcs.document.feign.expand.ExtDxDocumentServiceFeign
;
...
...
@@ -16,6 +15,7 @@ import com.yonde.dcs.plan.common.vo.*;
import
com.yonde.dcs.plan.core.repository.ExtPlanRepository
;
import
com.yonde.dcs.plan.core.service.ExtDistributeRecordService
;
import
com.yonde.dcs.plan.core.service.ExtPlanService
;
import
com.yonde.dcs.plan.core.util.CommonUtils
;
import
com.yonde.dcs.plan.entity.po.ExtPlan
;
import
com.yonde.dex.basedata.data.search.SearchItem
;
import
com.yonde.dex.basedata.data.search.SearchItems
;
...
...
@@ -28,8 +28,10 @@ import com.yonde.dex.basedata.utils.obj.DxEntityUtils;
import
com.yonde.dex.bmodel.common.entity.vo.ModelDefinitionVO
;
import
com.yonde.dex.bmodel.feign.api.ModelDefinitionFeignService
;
import
com.yonde.dex.dao.service.util.DxPageUtils
;
import
com.yonde.dex.dfs.feign.FileManagerFeignService
;
import
com.yonde.dex.dict.feign.DictDataFeignService
;
import
com.yonde.dex.dict.service.vo.DictDataVO
;
import
com.yonde.dex.systemfile.feign.SystemFileFeignService
;
import
com.yonde.dex.user.common.vo.DxOrganizationVO
;
import
com.yonde.dex.user.common.vo.DxUserInfoVO
;
import
com.yonde.dex.user.feign.DxOrganizationFeign
;
...
...
@@ -38,7 +40,6 @@ import com.yonde.dex.version.plugin.core.deleteType.IterationDeleteVO;
import
com.yonde.dex.wfc.feign.api.WfcProcessFeign
;
import
dm.jdbc.util.StringUtil
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.poi.ss.usermodel.CellStyle
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
...
...
@@ -50,7 +51,6 @@ import org.springframework.web.multipart.MultipartFile;
import
javax.servlet.ServletOutputStream
;
import
javax.servlet.http.HttpServletResponse
;
import
java.io.File
;
import
java.io.FileInputStream
;
import
java.io.IOException
;
import
java.net.URLEncoder
;
...
...
@@ -98,6 +98,12 @@ public class ExtPlanServiceImpl<V extends ExtPlanVO> implements ExtPlanService<V
@Autowired
private
WfcProcessFeign
wfcProcessFeign
;
@Autowired
private
SystemFileFeignService
systemFileFeignService
;
@Autowired
private
FileManagerFeignService
fileManagerFeignService
;
/**
* 通过userId获取组织名
*
...
...
@@ -333,9 +339,9 @@ public class ExtPlanServiceImpl<V extends ExtPlanVO> implements ExtPlanService<V
buffer
.
append
(
String
.
format
(
"第%s行,计划编号编号已存在"
,
i
+
1
)
+
"</br>"
);
}
DxUserInfoVO
userByName
=
dxUserInfoFeign
.
getUserByName
(
excelVO
.
getPlanExecutor
());
if
(
StringUtils
.
isEmpty
(
userByName
)){
if
(
StringUtils
.
isEmpty
(
userByName
))
{
buffer
.
append
(
String
.
format
(
"第%s行,计划执行人不存在"
,
i
+
1
)
+
"</br>"
);
}
else
{
}
else
{
excelVO
.
setPlanExecutorId
(
userByName
.
getId
());
}
...
...
@@ -618,6 +624,19 @@ public class ExtPlanServiceImpl<V extends ExtPlanVO> implements ExtPlanService<V
return
DxPageUtils
.
getFirst
(
recursion
);
}
private
List
<
ExtPlanVO
>
searchById
(
List
<
Long
>
id
)
{
//通过number查询id
SearchQueryCondition
query
=
SearchQueryCondition
.
builder
()
.
searchItems
(
SearchItems
.
builder
().
item
(
new
SearchItem
(
"id"
,
SearchItem
.
Operator
.
IN
,
id
,
null
))
.
operator
(
SearchItems
.
BooleanOperator
.
AND
).
build
()).
build
();
DxPageImpl
<
V
>
recursion
=
this
.
findRecursion
(
query
);
if
(
CollectionUtils
.
isEmpty
(
recursion
.
getContent
()))
{
return
null
;
}
return
(
List
<
ExtPlanVO
>)
recursion
.
getContent
();
}
/**
* 校验计划答复状态
*
...
...
@@ -674,69 +693,67 @@ public class ExtPlanServiceImpl<V extends ExtPlanVO> implements ExtPlanService<V
* @param ids
*/
@Override
public
void
exportPlan
(
HttpServletResponse
response
,
List
<
Long
>
ids
)
{
public
void
exportPlan
(
HttpServletResponse
response
,
List
<
Long
>
ids
)
throws
IOException
{
//跟据id获取计划
List
<
PlanExcelVO
>
planExcelVOS
=
new
ArrayList
<>();
for
(
Long
id
:
ids
)
{
//通过id查询
ExtPlanVO
extPlanVO
=
this
.
searchById
(
id
);
PlanExcelVO
excelPlanVO
=
new
PlanExcelVO
();
//转成excelVo对象
BeanUtils
.
copyProperties
(
extPlanVO
,
excelPlanVO
);
excelPlanVO
.
setName
(
extPlanVO
.
getName
());
excelPlanVO
.
setNumber
(
extPlanVO
.
getNumber
());
excelPlanVO
.
setHasPlanTasks
(
extPlanVO
.
getHasPlanTasks
()
==
true
?
"是"
:
"否"
);
planExcelVOS
.
add
(
excelPlanVO
);
}
//获取外部资源配置
Properties
prop
=
ResourceHelper
.
getResource
();
//下载模板文件路径
String
exportPlanTemplatePath
=
prop
.
getProperty
(
"ExportPlanTemplate"
);
ExcelWriter
writer
=
ExcelUtil
.
getWriter
(
exportPlanTemplatePath
,
"sheet1"
);
// 通过工具类创建writer并且进行别名
this
.
assembleWriter
(
writer
);
//指定样式
StyleSet
style
=
writer
.
getStyleSet
();
CellStyle
cellStyle
=
style
.
getCellStyleForDate
();
//14 代表的时间格式是 yyyy/MM/dd
cellStyle
.
setDataFormat
((
short
)
14
);
writer
.
setStyle
(
cellStyle
,
"M2"
);
writer
.
setStyle
(
cellStyle
,
"N2"
);
//out为OutputStream,需要写出到的目标流
//response为HttpServletResponse对象
response
.
setContentType
(
Constants
.
EXCEL_TYPE
);
//test.xls是弹出下载对话框的文件名,不能为中文,中文请自行编码
List
<
ExtPlanVO
>
extPlanVOS
=
this
.
searchById
(
ids
);
List
<
Map
<
String
,
Object
>>
mapList
=
new
ArrayList
<>();
if
(
CollectionUtil
.
isNotEmpty
(
extPlanVOS
))
{
for
(
ExtPlanVO
extPlanVO
:
extPlanVOS
)
{
Map
<
String
,
Object
>
exportMap
=
new
HashMap
<>();
exportMap
.
put
(
"name"
,
extPlanVO
.
getName
());
exportMap
.
put
(
"number"
,
extPlanVO
.
getNumber
());
exportMap
.
put
(
"superPlanCode"
,
extPlanVO
.
getSuperPlanCode
());
exportMap
.
put
(
"businessPlanType"
,
extPlanVO
.
getBusinessPlanType
());
exportMap
.
put
(
"feedbackType"
,
extPlanVO
.
getFeedbackType
());
exportMap
.
put
(
"hasPlanTasks"
,
extPlanVO
.
getHasPlanTasks
());
exportMap
.
put
(
"contractNo"
,
extPlanVO
.
getContractNo
());
exportMap
.
put
(
"planExecutor"
,
extPlanVO
.
getPlanExecutor
());
exportMap
.
put
(
"constructPeriod"
,
extPlanVO
.
getConstructPeriod
());
exportMap
.
put
(
"startTime"
,
extPlanVO
.
getStartTime
());
exportMap
.
put
(
"completeTime"
,
extPlanVO
.
getCompleteTime
());
String
secretCode
=
CommonUtils
.
searchDictDataValueByDictCode
(
Constants
.
SECRET_CODE
,
extPlanVO
.
getSecretCode
());
exportMap
.
put
(
"secretCode"
,
secretCode
);
mapList
.
add
(
exportMap
);
}
}
ExcelWriter
writer
=
ExcelUtil
.
getWriter
(
true
);
writer
.
addHeaderAlias
(
"name"
,
"计划名称"
);
writer
.
addHeaderAlias
(
"number"
,
"计划编号"
);
writer
.
addHeaderAlias
(
"superPlanCode"
,
"父级计划编号"
);
writer
.
addHeaderAlias
(
"businessPlanType"
,
"业务计划类型"
);
writer
.
addHeaderAlias
(
"feedbackType"
,
"反馈类型"
);
writer
.
addHeaderAlias
(
"hasPlanTasks"
,
"是否产生计划任务"
);
writer
.
addHeaderAlias
(
"contractNo"
,
"合同编号"
);
writer
.
addHeaderAlias
(
"planExecutor"
,
"计划执行人"
);
writer
.
addHeaderAlias
(
"constructPeriod"
,
"工期"
);
writer
.
addHeaderAlias
(
"startTime"
,
"开始时间"
);
writer
.
addHeaderAlias
(
"completeTime"
,
"完成时间"
);
writer
.
addHeaderAlias
(
"secretCode"
,
"密级"
);
writer
.
write
(
mapList
,
true
);
ServletOutputStream
outputStream
=
null
;
try
{
response
.
setContentType
(
"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset:utf-8"
);
String
fileName
=
URLEncoder
.
encode
(
"进度计划数据"
,
"UTF-8"
);
response
.
setHeader
(
"Content-Disposition"
,
"attachment;filename="
+
fileName
+
".xlsx"
);
response
.
setHeader
(
"Access-Control-Expose-Headers"
,
"Content-Disposition"
);
response
.
setHeader
(
"Content-Disposition"
,
"attachment;filename="
+
"计划导出数据.xlsx"
);
ServletOutputStream
out
=
null
;
ExcelWriter
writerResult
=
null
;
outputStream
=
response
.
getOutputStream
();
writer
.
flush
(
outputStream
,
true
);
}
catch
(
Exception
e
)
{
throw
new
DxBusinessException
(
"500"
,
"导出进度计划出错!错误原因:"
+
e
.
getMessage
());
}
finally
{
if
(
outputStream
!=
null
)
{
try
{
out
=
response
.
getOutputStream
();
String
exportPlanDataPath
=
prop
.
getProperty
(
"ExportPlanData"
);
File
file
=
new
File
(
exportPlanDataPath
);
writer
.
flush
(
file
);
// 关闭writer,释放内存
writer
.
close
();
writerResult
=
ExcelUtil
.
getWriter
(
file
,
"sheet1"
);
this
.
assembleWriter
(
writerResult
);
writerResult
.
write
(
planExcelVOS
,
true
);
//指定样式
StyleSet
styleResult
=
writerResult
.
getStyleSet
();
CellStyle
cellStyleResult
=
styleResult
.
getCellStyleForDate
();
writerResult
.
setStyle
(
cellStyleResult
,
"M2"
);
writerResult
.
setStyle
(
cellStyleResult
,
"N2"
);
//14 代表的时间格式是 yyyy/MM/dd
cellStyleResult
.
setDataFormat
((
short
)
14
);
writerResult
.
flush
(
out
,
true
);
outputStream
.
close
();
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
}
finally
{
// 关闭writer,释放内存
writerResult
.
close
();
// 关闭输出流出错
throw
new
DxBusinessException
(
"500"
,
"关闭输出流出错!"
+
e
.
getMessage
());
}
//此处记得关闭输出Servlet流
IoUtil
.
close
(
out
);
}
writer
.
close
();
}
}
/**
...
...
dcs-plan-feign/src/main/java/com/yonde/dcs/plan/feign/ExtPlanServiceFeign.java
View file @
04dbb09d
...
...
@@ -69,7 +69,7 @@ public interface ExtPlanServiceFeign<V extends ExtPlanVO> extends ExtPlanService
*/
@ApiOperation
(
value
=
"导出计划"
,
notes
=
"导出计划"
,
httpMethod
=
"GET"
)
@GetMapping
(
value
=
"/exportPlan"
)
void
exportPlan
(
HttpServletResponse
response
,
@RequestParam
(
"ids"
)
List
<
Long
>
ids
);
void
exportPlan
(
HttpServletResponse
response
,
@RequestParam
(
"ids"
)
List
<
Long
>
ids
)
throws
IOException
;
@ApiOperation
(
value
=
"通过文件分类查询"
,
notes
=
"通过文件分类查询"
,
httpMethod
=
"post"
)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment