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
9781e83e
Commit
9781e83e
authored
Jul 16, 2021
by
ghxdhr
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
原始记录修改
parent
c79981d7
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
126 additions
and
29 deletions
+126
-29
OriginalFactory.java
...tzn/cloud/service/lims/hmhj/original/OriginalFactory.java
+4
-4
SingleSheetMoreOperation.java
.../service/lims/hmhj/original/SingleSheetMoreOperation.java
+49
-0
EntrustSampleItemServiceImpl.java
.../lims/hmhj/service/impl/EntrustSampleItemServiceImpl.java
+72
-24
EntrustServiceImpl.java
...ud/service/lims/hmhj/service/impl/EntrustServiceImpl.java
+1
-1
No files found.
src/main/java/com/patzn/cloud/service/lims/hmhj/original/OriginalFactory.java
View file @
9781e83e
...
...
@@ -29,11 +29,11 @@ public class OriginalFactory {
if
(
null
==
template
.
getSampleBeginRow
()||
null
==
template
.
getSampleMergerNum
()||
null
==
template
.
getTemplateSampleNum
()){
return
null
;
}
if
(
voList
.
size
()<
template
.
getTemplateSampleNum
()){
return
new
SingleSheetLittleOperation
(
template
,
voList
,
entrust
,
configList
,
xssfWorkbook
);
}
else
{
//
if (voList.size()<template.getTemplateSampleNum()){
//
return new SingleSheetLittleOperation(template,voList,entrust,configList,xssfWorkbook);
//
}else{
return
new
SingleSheetMoreOperation
(
template
,
voList
,
entrust
,
configList
,
xssfWorkbook
);
}
//
}
}
else
{
Integer
templateSampleNum
=
template
.
getTemplateSampleNum
();
...
...
src/main/java/com/patzn/cloud/service/lims/hmhj/original/SingleSheetMoreOperation.java
View file @
9781e83e
...
...
@@ -11,6 +11,7 @@ import org.apache.commons.lang3.StringUtils;
import
org.apache.poi.ss.util.CellRangeAddress
;
import
org.apache.poi.xssf.usermodel.*
;
import
java.util.ArrayList
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
...
...
@@ -21,6 +22,7 @@ public class SingleSheetMoreOperation implements Operation {
private
Entrust
entrust
;
private
List
<
OriginalTemplateConfig
>
configList
;
private
XSSFWorkbook
xssfWorkbook
;
private
String
collectionDataPrefix
=
"clc."
;
public
SingleSheetMoreOperation
(
OriginalTemplate
template
,
List
<
EntrustSampleItemVO
>
voList
,
Entrust
entrust
,
List
<
OriginalTemplateConfig
>
configList
,
XSSFWorkbook
xssfWorkbook
)
{
this
.
template
=
template
;
this
.
voList
=
voList
;
...
...
@@ -173,5 +175,52 @@ public class SingleSheetMoreOperation implements Operation {
}
}
}
// 处理曲线和空白
dealCurveAndBlank
(
configList
,
voList
,
template
,
xssfWorkbook
);
}
private
void
dealCurveAndBlank
(
List
<
OriginalTemplateConfig
>
configList
,
List
<
EntrustSampleItemVO
>
voList
,
OriginalTemplate
template
,
XSSFWorkbook
xssfWorkbook
)
{
Integer
curveBeginNum
=
template
.
getCurveBeginNum
();
Integer
blankBeginNum
=
template
.
getBlankBeginNum
();
List
<
Map
<
String
,
String
>>
curveDataList
=
null
;
Map
<
String
,
String
>
blankDataMap
=
null
;
XSSFSheet
sheet
=
xssfWorkbook
.
getSheetAt
(
0
);
if
(
CollectionUtils
.
isNotEmpty
(
voList
))
{
curveDataList
=
voList
.
get
(
0
).
getCurveDataList
();
blankDataMap
=
voList
.
get
(
0
).
getBlankDataMap
();
}
// 填充曲线数据
if
(
curveBeginNum
!=
null
&&
CollectionUtils
.
isNotEmpty
(
curveDataList
))
{
int
index
=
0
;
for
(
int
i
=
curveBeginNum
;
i
<
curveBeginNum
+
curveDataList
.
size
();
i
++)
{
XSSFRow
row
=
sheet
.
getRow
(
i
);
for
(
OriginalTemplateConfig
config
:
configList
)
{
if
(
null
==
config
.
getColumnPlace
())
{
continue
;
}
if
(
null
!=
config
.
getDataAttribute
()
&&
config
.
getDataAttribute
().
startsWith
(
collectionDataPrefix
))
{
XSSFCell
cell
=
row
.
getCell
(
config
.
getColumnPlace
());
cell
.
setCellValue
(
curveDataList
.
get
(
index
).
get
(
config
.
getDataAttribute
().
substring
(
collectionDataPrefix
.
length
())));
}
}
}
index
++;
}
// 填充空白
if
(
blankBeginNum
!=
null
&&
blankDataMap
!=
null
&&
blankDataMap
.
size
()
>
0
)
{
XSSFRow
row
=
sheet
.
getRow
(
blankBeginNum
);
// 只插固定一行
for
(
OriginalTemplateConfig
config
:
configList
)
{
if
(
null
==
config
.
getColumnPlace
())
{
continue
;
}
if
(
null
!=
config
.
getDataAttribute
()
&&
config
.
getDataAttribute
().
startsWith
(
collectionDataPrefix
))
{
XSSFCell
cell
=
row
.
getCell
(
config
.
getColumnPlace
());
cell
.
setCellValue
(
blankDataMap
.
get
(
config
.
getDataAttribute
().
substring
(
collectionDataPrefix
.
length
())));
}
}
}
}
}
src/main/java/com/patzn/cloud/service/lims/hmhj/service/impl/EntrustSampleItemServiceImpl.java
View file @
9781e83e
...
...
@@ -2,12 +2,19 @@ package com.patzn.cloud.service.lims.hmhj.service.impl;
import
com.alibaba.fastjson.JSONArray
;
import
com.baomidou.mybatisplus.mapper.Condition
;
import
com.baomidou.mybatisplus.mapper.EntityWrapper
;
import
com.baomidou.mybatisplus.mapper.Wrapper
;
import
com.baomidou.mybatisplus.plugins.Page
;
import
com.baomidou.mybatisplus.toolkit.CollectionUtils
;
import
com.google.common.collect.Lists
;
import
com.patzn.cloud.commons.api.RestAssert
;
import
com.patzn.cloud.commons.controller.Account
;
import
com.patzn.cloud.commons.controller.LoginHelper
;
import
com.patzn.cloud.commons.toolkit.*
;
import
com.patzn.cloud.commons.service.impl.BaseServiceImpl
;
import
com.patzn.cloud.commons.toolkit.DateUtils
;
import
com.patzn.cloud.commons.toolkit.FileUtils
;
import
com.patzn.cloud.commons.toolkit.JsonUtils
;
import
com.patzn.cloud.commons.toolkit.MapMergeUtils
;
import
com.patzn.cloud.feign.lims.base.client.LmsUserRelGroupClient
;
import
com.patzn.cloud.oss.starter.OssClient
;
import
com.patzn.cloud.oss.starter.OssFileResult
;
...
...
@@ -21,33 +28,33 @@ import com.patzn.cloud.service.hmhj.enums.EntrustSampleStatusEnum;
import
com.patzn.cloud.service.hmhj.enums.EntrustStatusEnum
;
import
com.patzn.cloud.service.hmhj.vo.*
;
import
com.patzn.cloud.service.lims.base.entity.LmsUserRelGroup
;
import
com.patzn.cloud.service.lims.base.vo.GroupUserVO
;
import
com.patzn.cloud.service.lims.base.vo.LmsUserRelGroupVO
;
import
com.patzn.cloud.service.lims.collection.entity.LmsOriginalRecordInfo
;
import
com.patzn.cloud.service.lims.common.CompareUtils
;
import
com.patzn.cloud.service.lims.hmhj.common.HSSFWorkbookUtil
;
import
com.patzn.cloud.service.lims.hmhj.common.LabreOfficeUtil
;
import
com.patzn.cloud.service.lims.hmhj.mapper.EntrustSampleItemMapper
;
import
com.patzn.cloud.service.lims.hmhj.original.*
;
import
com.patzn.cloud.service.lims.hmhj.original.Operation
;
import
com.patzn.cloud.service.lims.hmhj.original.OriginalFactory
;
import
com.patzn.cloud.service.lims.hmhj.original.SingleSheetMoreItemOperation
;
import
com.patzn.cloud.service.lims.hmhj.service.*
;
import
com.patzn.cloud.commons.service.impl.BaseServiceImpl
;
import
org.apache.commons.lang3.ArrayUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.poi.xssf.usermodel.
*
;
import
org.apache.poi.xssf.usermodel.
XSSFWorkbook
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.stereotype.Service
;
import
com.baomidou.mybatisplus.mapper.EntityWrapper
;
import
com.baomidou.mybatisplus.mapper.Wrapper
;
import
com.baomidou.mybatisplus.plugins.Page
;
import
org.springframework.transaction.annotation.Transactional
;
import
java.io.*
;
import
java.io.File
;
import
java.io.FileOutputStream
;
import
java.io.IOException
;
import
java.io.InputStream
;
import
java.math.BigDecimal
;
import
java.util.*
;
import
java.util.concurrent.Executor
;
import
java.util.concurrent.atomic.AtomicBoolean
;
import
java.util.stream.Collectors
;
import
java.util.stream.Stream
;
/**
* 服务实现类
...
...
@@ -114,6 +121,8 @@ public class EntrustSampleItemServiceImpl extends BaseServiceImpl<EntrustSampleI
private
String
libreOfficeUrl
;
@Autowired
private
ILmsOriginalRecordInfoService
originalRecordInfoService
;
@Autowired
private
IQualificationService
qualificationService
;
@Override
public
Page
<
EntrustSampleItem
>
page
(
Page
<
EntrustSampleItem
>
page
,
EntrustSampleItem
entrustSampleItem
)
{
...
...
@@ -498,6 +507,11 @@ public class EntrustSampleItemServiceImpl extends BaseServiceImpl<EntrustSampleI
mapReplace
.
put
(
"#{nowDate}"
,
DateUtils
.
toYearMonthDay
(
new
Date
()));
mapReplace
.
put
(
"#{sampleNum}"
,
entrustSampleService
.
countByEntrustId
(
entrust
.
getId
())
+
""
);
// itemVoList中的所有项目名 --> 通过检测项目名拿到对应的采集仪器项目名
Set
<
String
>
itemNames
=
voList
.
stream
().
map
(
vo
->
vo
.
getName
()).
distinct
().
collect
(
Collectors
.
toSet
());
List
<
Qualification
>
qualifications
=
qualificationService
.
list
(
Condition
.
create
().
in
(
"name"
,
itemNames
));
Map
<
String
,
String
>
itemNameMap
=
qualifications
.
stream
().
collect
(
Collectors
.
toMap
(
Qualification:
:
getName
,
Qualification:
:
getInstrumentItemName
));
if
(
null
!=
template
.
getMoreItem
()
&&
1
==
template
.
getMoreItem
())
{
Set
<
Long
>
sampleIdsList
=
new
HashSet
<>();
for
(
EntrustSampleItemVO
itemVO
:
voList
)
{
...
...
@@ -517,7 +531,7 @@ public class EntrustSampleItemServiceImpl extends BaseServiceImpl<EntrustSampleI
}
/* 获取采集数据,并保存到SampleVO中 */
getCollectionData
(
null
,
sampleVOList
,
entrustCode
);
getCollectionData
(
null
,
sampleVOList
,
entrustCode
,
itemNameMap
,
template
);
if
(
null
==
template
.
getSampleBeginRow
()
||
null
==
template
.
getSampleMergerNum
()
||
null
==
template
.
getTemplateSampleNum
())
{
...
...
@@ -538,7 +552,7 @@ public class EntrustSampleItemServiceImpl extends BaseServiceImpl<EntrustSampleI
}
else
{
/* 获取采集到的数据 */
getCollectionData
(
voList
,
null
,
entrustCode
);
getCollectionData
(
voList
,
null
,
entrustCode
,
itemNameMap
,
template
);
if
(
CollectionUtils
.
isNotEmpty
(
voList
))
{
mapReplace
.
put
(
"#{sampleFrom}"
,
voList
.
get
(
0
).
getSampleFrom
());
...
...
@@ -597,11 +611,11 @@ public class EntrustSampleItemServiceImpl extends BaseServiceImpl<EntrustSampleI
return
objectKey
;
}
private
void
getCollectionData
(
List
<
EntrustSampleItemVO
>
itemVOList
List
,
List
<
EntrustSampleVO
>
sampleVOList
,
String
entrustCod
e
)
{
private
void
getCollectionData
(
List
<
EntrustSampleItemVO
>
itemVOList
,
List
<
EntrustSampleVO
>
sampleVOList
,
String
entrustCode
,
Map
<
String
,
String
>
itemNameMap
,
OriginalTemplate
templat
e
)
{
/* 拿到所有样品的编号 */
Set
<
String
>
numSet
=
new
HashSet
<>();
if
(
itemVOList
List
!=
null
)
{
numSet
=
itemVOList
List
.
stream
().
map
(
vo
->
vo
.
getSampleCode
()).
collect
(
Collectors
.
toSet
());
if
(
itemVOList
!=
null
)
{
numSet
=
itemVOList
.
stream
().
map
(
vo
->
vo
.
getSampleCode
()).
collect
(
Collectors
.
toSet
());
}
if
(
sampleVOList
!=
null
)
{
numSet
=
sampleVOList
.
stream
().
map
(
vo
->
vo
.
getCode
()).
collect
(
Collectors
.
toSet
());
...
...
@@ -611,18 +625,48 @@ public class EntrustSampleItemServiceImpl extends BaseServiceImpl<EntrustSampleI
/* 按照样品编号和项目分开,来存放采集到的数据 record的data */
HashMap
<
String
,
List
<
String
>>
mapByNumItemName
=
new
HashMap
<>();
for
(
LmsOriginalRecordInfo
record
:
records
)
{
MapMergeUtils
.
getorCreateMapArrayList
(
record
.
getSampleNum
(),
mapByNumItemName
,
record
.
getData
());
if
(
null
!=
template
.
getMoreItem
()
&&
1
==
template
.
getMoreItem
())
{
MapMergeUtils
.
getorCreateMapArrayList
(
record
.
getSampleNum
(),
mapByNumItemName
,
record
.
getData
());
}
else
{
MapMergeUtils
.
getorCreateMapArrayList
(
record
.
getSampleNum
()
+
record
.
getItemName
(),
mapByNumItemName
,
record
.
getData
());
}
}
String
curve
=
"curveData"
;
String
blank
=
"blank"
;
AtomicBoolean
filledCur
=
new
AtomicBoolean
(
false
);
AtomicBoolean
filledBlank
=
new
AtomicBoolean
(
false
);
/* 设置采集数据的Map -- itemVo */
if
(
itemVOList
List
!=
null
)
{
itemVOList
List
.
stream
().
forEach
(
vo
->
{
List
<
String
>
datas
=
mapByNumItemName
.
get
(
vo
.
getSampleCode
());
if
(
itemVOList
!=
null
)
{
itemVOList
.
stream
().
forEach
(
vo
->
{
List
<
String
>
datas
=
mapByNumItemName
.
get
(
vo
.
getSampleCode
()
+
itemNameMap
.
get
(
vo
.
getName
())
);
if
(
CollectionUtils
.
isNotEmpty
(
datas
))
{
ArrayList
<
Map
<
String
,
String
>>
maps
=
new
ArrayList
<>(
4
);
ArrayList
<
Map
<
String
,
String
>>
collectionDataList
=
new
ArrayList
<>();
for
(
String
data
:
datas
)
{
maps
.
add
(
toStringStringMap
(
data
));
Map
<
String
,
String
>
stringStringMap
=
toStringStringMap
(
data
);
/* 找到曲线数据和空白数据 */
List
<
Map
<
String
,
String
>>
curveDatas
=
new
ArrayList
<
Map
<
String
,
String
>>();
if
(
stringStringMap
.
containsKey
(
curve
)
&&
!
filledCur
.
get
())
{
filledCur
.
set
(
true
);
curveDatas
=
(
List
<
Map
<
String
,
String
>>)
(
JSONArray
.
parse
(
stringStringMap
.
get
(
curve
)));
vo
.
setCurveDataList
(
curveDatas
);
}
List
<
String
>
blankKeys
=
new
ArrayList
<>();
blankKeys
.
add
(
"content"
);
blankKeys
.
add
(
"correctedContent"
);
blankKeys
.
add
(
"abs"
);
if
(!
filledBlank
.
get
())
{
filledBlank
.
set
(
true
);
HashMap
<
String
,
String
>
blankMap
=
new
HashMap
<>();
for
(
String
blankKey
:
blankKeys
)
{
String
value
=
stringStringMap
.
get
(
"blank"
+
StringUtils
.
capitalize
(
blankKey
));
if
(
StringUtils
.
isNotEmpty
(
value
))
{
blankMap
.
put
(
blankKey
,
value
);
}
}
vo
.
setBlankDataMap
(
blankMap
);
}
collectionDataList
.
add
(
stringStringMap
);
}
vo
.
setCollectionDataList
(
maps
);
vo
.
setCollectionDataList
(
collectionDataList
);
}
});
}
...
...
@@ -631,7 +675,7 @@ public class EntrustSampleItemServiceImpl extends BaseServiceImpl<EntrustSampleI
sampleVOList
.
stream
().
forEach
(
vo
->
{
List
<
String
>
datas
=
mapByNumItemName
.
get
(
vo
.
getCode
());
if
(
CollectionUtils
.
isNotEmpty
(
datas
))
{
ArrayList
<
Map
<
String
,
String
>>
maps
=
new
ArrayList
<>(
4
);
ArrayList
<
Map
<
String
,
String
>>
maps
=
new
ArrayList
<>();
for
(
String
data
:
datas
)
{
maps
.
add
(
toStringStringMap
(
data
));
}
...
...
@@ -645,7 +689,11 @@ public class EntrustSampleItemServiceImpl extends BaseServiceImpl<EntrustSampleI
HashMap
<
String
,
String
>
stringStringHashMap
=
new
HashMap
<>();
Map
<
String
,
Object
>
stringObjectMap
=
JsonUtils
.
exchange
(
jsonString
);
for
(
Map
.
Entry
<
String
,
Object
>
entry
:
stringObjectMap
.
entrySet
())
{
stringStringHashMap
.
put
(
entry
.
getKey
(),
(
String
)
entry
.
getValue
());
if
(
entry
.
getValue
()
instanceof
String
)
{
stringStringHashMap
.
put
(
entry
.
getKey
(),
(
String
)
entry
.
getValue
());
}
else
{
stringStringHashMap
.
put
(
entry
.
getKey
(),((
JSONArray
)
entry
.
getValue
()).
toJSONString
());
}
}
return
stringStringHashMap
;
}
...
...
src/main/java/com/patzn/cloud/service/lims/hmhj/service/impl/EntrustServiceImpl.java
View file @
9781e83e
...
...
@@ -1282,7 +1282,7 @@ public class EntrustServiceImpl extends BaseServiceImpl<EntrustMapper, Entrust>
private
ByteArrayOutputStream
getEntrustBaos
()
{
InputStream
inputStream
=
this
.
getClass
().
getClassLoader
().
getResourceAsStream
(
"\\templates
.\\word.\\entrust.
\\EntrustExportTemplate.docx"
);
InputStream
inputStream
=
this
.
getClass
().
getClassLoader
().
getResourceAsStream
(
"\\templates
\\word\\entrust
\\EntrustExportTemplate.docx"
);
RestAssert
.
fail
(
null
==
inputStream
,
"委托检测书模板获取失败"
);
byte
[]
buffer
=
new
byte
[
1024
];
int
len
;
...
...
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