Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
P
patzn-cloud-service-hmhj
Overview
Overview
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
wangweidong
patzn-cloud-service-hmhj
Commits
ac6f32e0
Commit
ac6f32e0
authored
Apr 07, 2021
by
yangmengmeng
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' into dev
parents
c9b4e1c9
72cc2f3f
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
116 additions
and
13 deletions
+116
-13
AsposeUtil.java
.../java/com/patzn/cloud/service/lims/common/AsposeUtil.java
+12
-5
HSSFWorkbookUtil.java
...atzn/cloud/service/lims/hmhj/common/HSSFWorkbookUtil.java
+2
-5
ContractSampleController.java
...ervice/lims/hmhj/controller/ContractSampleController.java
+49
-0
EntrustController.java
...cloud/service/lims/hmhj/controller/EntrustController.java
+22
-0
IContractSampleService.java
...oud/service/lims/hmhj/service/IContractSampleService.java
+4
-0
ContractSampleServiceImpl.java
...ice/lims/hmhj/service/impl/ContractSampleServiceImpl.java
+26
-0
EntrustSampleItemServiceImpl.java
.../lims/hmhj/service/impl/EntrustSampleItemServiceImpl.java
+1
-3
No files found.
src/main/java/com/patzn/cloud/service/lims/common/AsposeUtil.java
View file @
ac6f32e0
...
@@ -3,12 +3,14 @@ package com.patzn.cloud.service.lims.common;
...
@@ -3,12 +3,14 @@ package com.patzn.cloud.service.lims.common;
import
com.aspose.cells.SaveFormat
;
import
com.aspose.cells.SaveFormat
;
import
com.aspose.cells.Workbook
;
import
com.aspose.cells.Workbook
;
import
com.baomidou.mybatisplus.toolkit.CollectionUtils
;
import
com.baomidou.mybatisplus.toolkit.CollectionUtils
;
import
com.patzn.cloud.commons.toolkit.DateUtils
;
import
org.apache.poi.xssf.usermodel.XSSFWorkbook
;
import
org.apache.poi.xssf.usermodel.XSSFWorkbook
;
import
org.slf4j.Logger
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.slf4j.LoggerFactory
;
import
java.io.File
;
import
java.io.File
;
import
java.io.FileOutputStream
;
import
java.io.FileOutputStream
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.List
;
public
class
AsposeUtil
{
public
class
AsposeUtil
{
...
@@ -20,21 +22,26 @@ public class AsposeUtil {
...
@@ -20,21 +22,26 @@ public class AsposeUtil {
FileOutputStream
fileOutputStream
=
null
;
FileOutputStream
fileOutputStream
=
null
;
FileOutputStream
fileOut
=
null
;
FileOutputStream
fileOut
=
null
;
try
{
try
{
logger
.
error
(
"mergeWork----------1"
);
for
(
Workbook
book:
workbooksList
)
{
for
(
Workbook
book:
workbooksList
)
{
workbook
.
combine
(
book
);
workbook
.
combine
(
book
);
}
}
logger
.
error
(
"mergeWork----------2"
);
File
tempFile
=
File
.
createTempFile
(
name
+
"pre"
,
".xlsx"
);
File
tempFile
=
File
.
createTempFile
(
DateUtils
.
toYearMonthDayEasy
(
new
Date
())+
"shiyan"
,
".xlsx"
);
logger
.
error
(
"mergeWork----------3"
);
fileOut
=
new
FileOutputStream
(
tempFile
);
fileOut
=
new
FileOutputStream
(
tempFile
);
logger
.
error
(
"mergeWork----------4"
);
workbook
.
save
(
fileOut
,
SaveFormat
.
XLSX
);
workbook
.
save
(
fileOut
,
SaveFormat
.
XLSX
);
logger
.
error
(
"mergeWork----------5"
);
XSSFWorkbook
workbookOk
=
new
XSSFWorkbook
(
tempFile
);
XSSFWorkbook
workbookOk
=
new
XSSFWorkbook
(
tempFile
);
workbookOk
.
setActiveSheet
(
0
);
workbookOk
.
setActiveSheet
(
0
);
workbookOk
.
removeSheetAt
(
workbookOk
.
getNumberOfSheets
()-
1
);
workbookOk
.
removeSheetAt
(
workbookOk
.
getNumberOfSheets
()-
1
);
logger
.
error
(
"mergeWork----------6"
);
File
file
=
File
.
createTempFile
(
name
,
".xlsx"
);
File
file
=
File
.
createTempFile
(
DateUtils
.
toYearMonthDayEasy
(
new
Date
())+
name
,
".xlsx"
);
logger
.
error
(
"mergeWork----------7"
);
fileOutputStream
=
new
FileOutputStream
(
file
);
fileOutputStream
=
new
FileOutputStream
(
file
);
workbookOk
.
write
(
fileOutputStream
);
workbookOk
.
write
(
fileOutputStream
);
fileOut
.
flush
();
fileOut
.
flush
();
...
...
src/main/java/com/patzn/cloud/service/lims/common/HSSFWorkbookUtil.java
→
src/main/java/com/patzn/cloud/service/lims/
hmhj/
common/HSSFWorkbookUtil.java
View file @
ac6f32e0
package
com
.
patzn
.
cloud
.
service
.
lims
.
common
;
package
com
.
patzn
.
cloud
.
service
.
lims
.
hmhj
.
common
;
import
com.google.common.collect.Maps
;
import
com.google.common.collect.Maps
;
import
org.apache.commons.lang.StringUtils
;
import
org.apache.commons.lang.StringUtils
;
...
@@ -192,7 +192,7 @@ public class HSSFWorkbookUtil {
...
@@ -192,7 +192,7 @@ public class HSSFWorkbookUtil {
o
=
cell
.
getStringCellValue
();
o
=
cell
.
getStringCellValue
();
}
catch
(
IllegalStateException
e
)
{
}
catch
(
IllegalStateException
e
)
{
try
{
try
{
o
=
cell
.
getRichStringCellValue
().
toString
(
);
o
=
String
.
valueOf
(
cell
.
getNumericCellValue
()
);
}
catch
(
IllegalStateException
e2
)
{
}
catch
(
IllegalStateException
e2
)
{
o
=
""
;
o
=
""
;
}
}
...
@@ -497,9 +497,6 @@ public class HSSFWorkbookUtil {
...
@@ -497,9 +497,6 @@ public class HSSFWorkbookUtil {
Iterator
<
String
>
it
=
keySet
.
iterator
();
Iterator
<
String
>
it
=
keySet
.
iterator
();
while
(
it
.
hasNext
())
{
while
(
it
.
hasNext
())
{
String
text
=
it
.
next
();
String
text
=
it
.
next
();
if
(
null
==
text
){
text
=
""
;
}
if
(
value
.
contains
(
text
))
{
if
(
value
.
contains
(
text
))
{
String
txt
=
value
.
replace
(
text
,(
String
)
item
.
get
(
text
));
String
txt
=
value
.
replace
(
text
,(
String
)
item
.
get
(
text
));
cell
.
setCellValue
(
txt
);
cell
.
setCellValue
(
txt
);
...
...
src/main/java/com/patzn/cloud/service/lims/hmhj/controller/ContractSampleController.java
View file @
ac6f32e0
package
com
.
patzn
.
cloud
.
service
.
lims
.
hmhj
.
controller
;
package
com
.
patzn
.
cloud
.
service
.
lims
.
hmhj
.
controller
;
import
com.google.common.collect.Lists
;
import
com.patzn.cloud.service.hmhj.dto.ContractSampleDTO
;
import
com.patzn.cloud.service.hmhj.dto.ContractSampleDTO
;
import
com.patzn.cloud.service.hmhj.entity.ContractSample
;
import
com.patzn.cloud.service.hmhj.entity.ContractSample
;
import
com.patzn.cloud.service.hmhj.enums.ContractSampleStatusEnum
;
import
com.patzn.cloud.service.hmhj.enums.ContractSampleStatusEnum
;
...
@@ -149,6 +150,23 @@ public class ContractSampleController extends ServiceController {
...
@@ -149,6 +150,23 @@ public class ContractSampleController extends ServiceController {
}
}
@ApiOperation
(
"外委数据录入历史分页列表"
)
@ApiImplicitParams
({
@ApiImplicitParam
(
name
=
RestConstants
.
PAGE_PAGE
,
value
=
"请求数据的页码"
,
required
=
true
,
paramType
=
"query"
,
dataTypeClass
=
Integer
.
class
),
@ApiImplicitParam
(
name
=
RestConstants
.
PAGE_ROWS
,
value
=
"每页条数"
,
required
=
true
,
paramType
=
"query"
,
dataTypeClass
=
Integer
.
class
),
@ApiImplicitParam
(
name
=
RestConstants
.
PAGE_SIDX
,
value
=
"排序字段"
,
paramType
=
"query"
,
dataTypeClass
=
String
.
class
),
@ApiImplicitParam
(
name
=
RestConstants
.
PAGE_SORD
,
value
=
"排序方式"
,
paramType
=
"query"
,
dataTypeClass
=
String
.
class
),
})
@PostMapping
(
"/page_out_data_input_his"
)
public
RestResult
<
Page
<
ContractSampleVO
>>
getPageOutDataInput
(
ContractSampleVO
contractSample
)
{
contractSample
.
setStatusList
(
Lists
.
newArrayList
(
ContractSampleStatusEnum
.
ENTRUST_REG
,
ContractSampleStatusEnum
.
BACK_PRO_TEC_CHECK
));
return
success
(
contractSampleService
.
pageVO
(
getPage
(),
contractSample
));
}
@ApiOperation
(
"委托登记分页列表"
)
@ApiOperation
(
"委托登记分页列表"
)
@ApiImplicitParams
({
@ApiImplicitParams
({
...
@@ -286,6 +304,24 @@ public class ContractSampleController extends ServiceController {
...
@@ -286,6 +304,24 @@ public class ContractSampleController extends ServiceController {
}
}
@ApiOperation
(
"验收结果录入历史分页列表"
)
@ApiImplicitParams
({
@ApiImplicitParam
(
name
=
RestConstants
.
PAGE_PAGE
,
value
=
"请求数据的页码"
,
required
=
true
,
paramType
=
"query"
,
dataTypeClass
=
Integer
.
class
),
@ApiImplicitParam
(
name
=
RestConstants
.
PAGE_ROWS
,
value
=
"每页条数"
,
required
=
true
,
paramType
=
"query"
,
dataTypeClass
=
Integer
.
class
),
@ApiImplicitParam
(
name
=
RestConstants
.
PAGE_SIDX
,
value
=
"排序字段"
,
paramType
=
"query"
,
dataTypeClass
=
String
.
class
),
@ApiImplicitParam
(
name
=
RestConstants
.
PAGE_SORD
,
value
=
"排序方式"
,
paramType
=
"query"
,
dataTypeClass
=
String
.
class
),
})
@PostMapping
(
"/page_check_result_input_his"
)
public
RestResult
<
Page
<
ContractSampleVO
>>
getPageCheckResultInputHis
(
ContractSampleVO
contractSample
)
{
contractSample
.
setStatusList
(
Lists
.
newArrayList
(
ContractSampleStatusEnum
.
OUT_DRIFT
,
ContractSampleStatusEnum
.
OUT_INPUT
,
ContractSampleStatusEnum
.
ENTRUST_REG
));
return
success
(
contractSampleService
.
pageVO
(
getPage
(),
contractSample
));
}
@ApiOperation
(
"根据ID查询列表分页列表"
)
@ApiOperation
(
"根据ID查询列表分页列表"
)
...
@@ -377,6 +413,12 @@ public class ContractSampleController extends ServiceController {
...
@@ -377,6 +413,12 @@ public class ContractSampleController extends ServiceController {
}
}
@ApiOperation
(
"外委登记提交至验收结果录入"
)
@PostMapping
(
"/out_reg_pass_to_check_result"
)
public
RestResult
<
Boolean
>
outRegPassToCheckResult
(
@RequestParam
(
"ids"
)
Long
[]
ids
)
{
return
success
(
contractSampleService
.
outRegPassToCheckResult
(
ids
,
getAccount
()));
}
@ApiOperation
(
"外委登记提交至外委数据录入"
)
@ApiOperation
(
"外委登记提交至外委数据录入"
)
@PostMapping
(
"/submit_to_out_data_input"
)
@PostMapping
(
"/submit_to_out_data_input"
)
...
@@ -408,6 +450,13 @@ public class ContractSampleController extends ServiceController {
...
@@ -408,6 +450,13 @@ public class ContractSampleController extends ServiceController {
}
}
@ApiOperation
(
"生技部审核通过接口"
)
@PostMapping
(
"/pro_tech_check_pass"
)
public
RestResult
<
Boolean
>
proTechCheckPass
(
@RequestParam
(
"ids"
)
Long
[]
ids
)
{
return
success
(
contractSampleService
.
proTechCheckPass
(
ids
,
getAccount
()));
}
@ApiOperation
(
"生技部审核退回"
)
@ApiOperation
(
"生技部审核退回"
)
@PostMapping
(
"/back_pro_tech_check"
)
@PostMapping
(
"/back_pro_tech_check"
)
public
RestResult
<
Boolean
>
backProTechCheck
(
@RequestParam
(
"ids"
)
Long
[]
ids
,
@RequestParam
(
"reason"
)
String
reason
)
{
public
RestResult
<
Boolean
>
backProTechCheck
(
@RequestParam
(
"ids"
)
Long
[]
ids
,
@RequestParam
(
"reason"
)
String
reason
)
{
...
...
src/main/java/com/patzn/cloud/service/lims/hmhj/controller/EntrustController.java
View file @
ac6f32e0
...
@@ -137,6 +137,28 @@ public class EntrustController extends ServiceController {
...
@@ -137,6 +137,28 @@ public class EntrustController extends ServiceController {
}
}
@ApiOperation
(
"外委数据录入历史分页列表"
)
@ApiImplicitParams
({
@ApiImplicitParam
(
name
=
RestConstants
.
PAGE_PAGE
,
value
=
"请求数据的页码"
,
required
=
true
,
paramType
=
"query"
,
dataTypeClass
=
Integer
.
class
),
@ApiImplicitParam
(
name
=
RestConstants
.
PAGE_ROWS
,
value
=
"每页条数"
,
required
=
true
,
paramType
=
"query"
,
dataTypeClass
=
Integer
.
class
),
@ApiImplicitParam
(
name
=
RestConstants
.
PAGE_SIDX
,
value
=
"排序字段"
,
paramType
=
"query"
,
dataTypeClass
=
String
.
class
),
@ApiImplicitParam
(
name
=
RestConstants
.
PAGE_SORD
,
value
=
"排序方式"
,
paramType
=
"query"
,
dataTypeClass
=
String
.
class
),
})
@PostMapping
(
"/page_out_input_his"
)
public
RestResult
<
Page
<
EntrustVO
>>
getPageOutInputHis
(
EntrustVO
entrust
)
{
entrust
.
setStatusList
(
Lists
.
newArrayList
(
EntrustStatusEnum
.
CHECK
,
EntrustStatusEnum
.
MAKE
,
EntrustStatusEnum
.
TEST
,
EntrustStatusEnum
.
OUT_INPUT
,
EntrustStatusEnum
.
QUALITY_CHECK
));
return
success
(
entrustService
.
pageVO
(
getPage
(),
entrust
));
}
@ApiOperation
(
"委托审核分页列表"
)
@ApiOperation
(
"委托审核分页列表"
)
@ApiImplicitParams
({
@ApiImplicitParams
({
@ApiImplicitParam
(
name
=
RestConstants
.
PAGE_PAGE
,
value
=
"请求数据的页码"
,
required
=
true
,
paramType
=
"query"
,
dataTypeClass
=
Integer
.
class
),
@ApiImplicitParam
(
name
=
RestConstants
.
PAGE_PAGE
,
value
=
"请求数据的页码"
,
required
=
true
,
paramType
=
"query"
,
dataTypeClass
=
Integer
.
class
),
...
...
src/main/java/com/patzn/cloud/service/lims/hmhj/service/IContractSampleService.java
View file @
ac6f32e0
...
@@ -27,6 +27,8 @@ public interface IContractSampleService extends IBaseService<ContractSample> {
...
@@ -27,6 +27,8 @@ public interface IContractSampleService extends IBaseService<ContractSample> {
boolean
submitToProTechCheck
(
Long
[]
ids
,
Account
account
);
boolean
submitToProTechCheck
(
Long
[]
ids
,
Account
account
);
boolean
proTechCheckPass
(
Long
[]
ids
,
Account
account
);
boolean
backProTechCheck
(
Long
[]
ids
,
String
reason
,
Account
account
);
boolean
backProTechCheck
(
Long
[]
ids
,
String
reason
,
Account
account
);
boolean
submitToCheckAcceptReg
(
Long
[]
ids
,
Account
account
);
boolean
submitToCheckAcceptReg
(
Long
[]
ids
,
Account
account
);
...
@@ -37,6 +39,8 @@ public interface IContractSampleService extends IBaseService<ContractSample> {
...
@@ -37,6 +39,8 @@ public interface IContractSampleService extends IBaseService<ContractSample> {
boolean
submitToOutReg
(
Long
[]
ids
,
Account
account
);
boolean
submitToOutReg
(
Long
[]
ids
,
Account
account
);
boolean
outRegPassToCheckResult
(
Long
[]
ids
,
Account
account
);
boolean
submitToOutDataInput
(
Long
[]
ids
,
Account
account
);
boolean
submitToOutDataInput
(
Long
[]
ids
,
Account
account
);
boolean
submitToExpertReviewFromOrg
(
Long
[]
ids
,
Account
account
);
boolean
submitToExpertReviewFromOrg
(
Long
[]
ids
,
Account
account
);
...
...
src/main/java/com/patzn/cloud/service/lims/hmhj/service/impl/ContractSampleServiceImpl.java
View file @
ac6f32e0
...
@@ -89,6 +89,18 @@ public class ContractSampleServiceImpl extends BaseServiceImpl<ContractSampleMap
...
@@ -89,6 +89,18 @@ public class ContractSampleServiceImpl extends BaseServiceImpl<ContractSampleMap
return
super
.
update
(
contractSample
,
Condition
.
create
().
in
(
"id"
,
ids
));
return
super
.
update
(
contractSample
,
Condition
.
create
().
in
(
"id"
,
ids
));
}
}
@Transactional
(
rollbackFor
=
Exception
.
class
)
@Override
public
boolean
proTechCheckPass
(
Long
[]
ids
,
Account
account
)
{
RestAssert
.
fail
(
ArrayUtils
.
isEmpty
(
ids
),
"请选择要提交的合同!"
);
ContractSample
contractSample
=
new
ContractSample
();
contractSample
.
setStatus
(
ContractSampleStatusEnum
.
CHECK_ACCEPT_REG
);
contractSample
.
setProgress
(
ContractSampleStatusEnum
.
CHECK_ACCEPT_REG
);
return
super
.
update
(
contractSample
,
Condition
.
create
().
in
(
"id"
,
ids
));
}
@Transactional
(
rollbackFor
=
Exception
.
class
)
@Transactional
(
rollbackFor
=
Exception
.
class
)
@Override
@Override
public
boolean
backProTechCheck
(
Long
[]
ids
,
String
reason
,
Account
account
)
{
public
boolean
backProTechCheck
(
Long
[]
ids
,
String
reason
,
Account
account
)
{
...
@@ -160,6 +172,20 @@ public class ContractSampleServiceImpl extends BaseServiceImpl<ContractSampleMap
...
@@ -160,6 +172,20 @@ public class ContractSampleServiceImpl extends BaseServiceImpl<ContractSampleMap
}
}
@Transactional
(
rollbackFor
=
Exception
.
class
)
@Override
public
boolean
outRegPassToCheckResult
(
Long
[]
ids
,
Account
account
)
{
RestAssert
.
fail
(
ArrayUtils
.
isEmpty
(
ids
),
"请选择要提交的合同!"
);
ContractSample
contractSample
=
new
ContractSample
();
contractSample
.
setStatus
(
ContractSampleStatusEnum
.
CHECK_RESULT_INPUT
);
contractSample
.
setProgress
(
ContractSampleStatusEnum
.
CHECK_RESULT_INPUT
);
contractSampleRecordService
.
record
(
ids
,
ContractSampleStatusEnum
.
OUT_DRIFT
,
ContractSampleStatusEnum
.
CHECK_RESULT_INPUT
,
0
,
"外委登记提交至验收结果录入"
,
account
);
// lmsMsgService.sendMsg("/hmhj/accept_manage/sub_register","验收任务登记提交至外委登记,请及时处理","新的外委登记任务!",account,null);
return
super
.
update
(
contractSample
,
Condition
.
create
().
in
(
"id"
,
ids
));
}
@Transactional
(
rollbackFor
=
Exception
.
class
)
@Transactional
(
rollbackFor
=
Exception
.
class
)
@Override
@Override
public
boolean
submitToOutDataInput
(
Long
[]
ids
,
Account
account
)
{
public
boolean
submitToOutDataInput
(
Long
[]
ids
,
Account
account
)
{
...
...
src/main/java/com/patzn/cloud/service/lims/hmhj/service/impl/EntrustSampleItemServiceImpl.java
View file @
ac6f32e0
...
@@ -10,15 +10,14 @@ import com.patzn.cloud.service.hmhj.entity.*;
...
@@ -10,15 +10,14 @@ import com.patzn.cloud.service.hmhj.entity.*;
import
com.patzn.cloud.service.hmhj.enums.EntrustSampleItemStatusEnum
;
import
com.patzn.cloud.service.hmhj.enums.EntrustSampleItemStatusEnum
;
import
com.patzn.cloud.service.hmhj.enums.EntrustSampleStatusEnum
;
import
com.patzn.cloud.service.hmhj.enums.EntrustSampleStatusEnum
;
import
com.patzn.cloud.service.hmhj.vo.EntrustSampleItemVO
;
import
com.patzn.cloud.service.hmhj.vo.EntrustSampleItemVO
;
import
com.patzn.cloud.service.lims.common.HSSFWorkbookUtil
;
import
com.patzn.cloud.service.lims.common.StringHandleUtils
;
import
com.patzn.cloud.service.lims.common.StringHandleUtils
;
import
com.patzn.cloud.service.lims.hmhj.common.HSSFWorkbookUtil
;
import
com.patzn.cloud.service.lims.hmhj.mapper.EntrustSampleItemMapper
;
import
com.patzn.cloud.service.lims.hmhj.mapper.EntrustSampleItemMapper
;
import
com.patzn.cloud.service.lims.hmhj.service.*
;
import
com.patzn.cloud.service.lims.hmhj.service.*
;
import
com.patzn.cloud.commons.service.impl.BaseServiceImpl
;
import
com.patzn.cloud.commons.service.impl.BaseServiceImpl
;
import
org.apache.commons.collections4.ListUtils
;
import
org.apache.commons.collections4.ListUtils
;
import
org.apache.commons.lang3.ArrayUtils
;
import
org.apache.commons.lang3.ArrayUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.poi.ss.usermodel.BorderStyle
;
import
org.apache.poi.ss.util.CellRangeAddress
;
import
org.apache.poi.ss.util.CellRangeAddress
;
import
org.apache.poi.xssf.usermodel.*
;
import
org.apache.poi.xssf.usermodel.*
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
...
@@ -31,7 +30,6 @@ import org.springframework.transaction.annotation.Transactional;
...
@@ -31,7 +30,6 @@ import org.springframework.transaction.annotation.Transactional;
import
java.io.File
;
import
java.io.File
;
import
java.io.FileOutputStream
;
import
java.io.FileOutputStream
;
import
java.io.InputStream
;
import
java.io.InputStream
;
import
java.math.BigDecimal
;
import
java.util.*
;
import
java.util.*
;
import
java.util.stream.Collectors
;
import
java.util.stream.Collectors
;
...
...
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