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
2a14ace5
Commit
2a14ace5
authored
Feb 17, 2022
by
lijingjing
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
原始记录多次检测问题修改;
ERP数据对接;
parent
36663cdd
Hide whitespace changes
Inline
Side-by-side
Showing
19 changed files
with
723 additions
and
42 deletions
+723
-42
RedisUtil.java
...n/java/com/patzn/cloud/service/lims/common/RedisUtil.java
+0
-0
OkHttpUtils.java
...com/patzn/cloud/service/lims/hmhj/common/OkHttpUtils.java
+61
-0
HttpConst.java
...atzn/cloud/service/lims/hmhj/common/consts/HttpConst.java
+15
-0
EntrustSampleItemController.java
...ice/lims/hmhj/controller/EntrustSampleItemController.java
+16
-0
NetworkInterceptor.java
...oud/service/lims/hmhj/interceptor/NetworkInterceptor.java
+69
-0
RetryInterceptor.java
...cloud/service/lims/hmhj/interceptor/RetryInterceptor.java
+47
-0
EntrustSampleItemIndexMapper.java
...ervice/lims/hmhj/mapper/EntrustSampleItemIndexMapper.java
+2
-0
OriginalFactory.java
...tzn/cloud/service/lims/hmhj/original/OriginalFactory.java
+9
-2
SingleSheetMoreTabletOperation.java
...ce/lims/hmhj/original/SingleSheetMoreTabletOperation.java
+255
-0
IEntrustSampleItemIndexService.java
...ice/lims/hmhj/service/IEntrustSampleItemIndexService.java
+3
-0
IEntrustSampleItemService.java
.../service/lims/hmhj/service/IEntrustSampleItemService.java
+1
-0
EntrustSampleItemIndexServiceImpl.java
.../hmhj/service/impl/EntrustSampleItemIndexServiceImpl.java
+10
-0
EntrustSampleItemServiceImpl.java
.../lims/hmhj/service/impl/EntrustSampleItemServiceImpl.java
+178
-36
EntrustSamplePrepareServiceImpl.java
...ms/hmhj/service/impl/EntrustSamplePrepareServiceImpl.java
+1
-1
application-local.yml
src/main/resources/application-local.yml
+5
-0
EntrustMapper.xml
src/main/resources/mapper/hmhj/EntrustMapper.xml
+2
-1
EntrustSampleItemIndexMapper.xml
...in/resources/mapper/hmhj/EntrustSampleItemIndexMapper.xml
+31
-0
EntrustSampleItemMapper.xml
src/main/resources/mapper/hmhj/EntrustSampleItemMapper.xml
+2
-2
20220217新增字段.sql
src/test/java/resources/db_sql/hmhj/v176/20220217新增字段.sql
+16
-0
No files found.
src/main/java/com/patzn/cloud/service/lims/common/RedisUtil.java
0 → 100644
View file @
2a14ace5
This source diff could not be displayed because it is too large. You can
view the blob
instead.
src/main/java/com/patzn/cloud/service/lims/hmhj/common/OkHttpUtils.java
0 → 100644
View file @
2a14ace5
package
com
.
patzn
.
cloud
.
service
.
lims
.
hmhj
.
common
;
import
com.patzn.cloud.commons.constant.CommonConstants
;
import
com.patzn.cloud.commons.toolkit.DateUtils
;
import
com.patzn.cloud.service.lims.hmhj.common.consts.HttpConst
;
import
com.patzn.cloud.service.lims.hmhj.interceptor.NetworkInterceptor
;
import
okhttp3.*
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
java.io.IOException
;
import
java.util.Date
;
import
java.util.concurrent.TimeUnit
;
/**
* okHttpUtils
*
* @author: meazty
* @since: 2022/2/14 12:58
**/
public
class
OkHttpUtils
{
private
static
final
Logger
logger
=
LoggerFactory
.
getLogger
(
OkHttpUtils
.
class
);
private
static
final
MediaType
MEDIA_TYPE_JSON
=
MediaType
.
parse
(
CommonConstants
.
CONTENT_TYPE_JSON
);
public
static
String
sendByPostJson
(
String
url
,
String
token
,
String
json
)
{
logger
.
error
(
"prepare assemble data : {}"
,
DateUtils
.
toYearMonthDayTime
(
new
Date
()));
RequestBody
body
=
RequestBody
.
create
(
MEDIA_TYPE_JSON
,
json
);
Request
request
=
new
Request
.
Builder
()
.
url
(
url
)
.
post
(
body
)
.
addHeader
(
"Content-Type"
,
HttpConst
.
CONTENT_TYPE
)
.
addHeader
(
"Accept-Encoding"
,
HttpConst
.
ACCEPT_ENCODING
)
.
addHeader
(
"token"
,
token
)
.
build
();
OkHttpClient
client
=
new
OkHttpClient
()
.
newBuilder
()
.
connectTimeout
(
10
,
TimeUnit
.
SECONDS
)
.
readTimeout
(
120
,
TimeUnit
.
SECONDS
)
.
addNetworkInterceptor
(
new
NetworkInterceptor
())
.
build
();
Response
response
=
null
;
try
{
logger
.
error
(
"start execute send data : {}"
,
DateUtils
.
toYearMonthDayTime
(
new
Date
()));
response
=
client
.
newCall
(
request
).
execute
();
assert
response
.
body
()
!=
null
;
String
result
=
response
.
body
().
string
();
logger
.
error
(
"finish response data : {}"
,
DateUtils
.
toYearMonthDayTime
(
new
Date
()));
logger
.
error
(
"response data :{}"
,
result
);
return
result
;
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
}
return
null
;
}
}
src/main/java/com/patzn/cloud/service/lims/hmhj/common/consts/HttpConst.java
0 → 100644
View file @
2a14ace5
package
com
.
patzn
.
cloud
.
service
.
lims
.
hmhj
.
common
.
consts
;
/**
* http请求相关常量
*
* @author: meazty
* @since: 2022/2/14 12:42
**/
public
class
HttpConst
{
public
static
final
String
ACCEPT_ENCODING
=
"identity"
;
public
static
final
String
CONTENT_TYPE
=
"application/json"
;
public
static
final
String
ERP_URL
=
"http://192.168.0.22/api/LimsData/SaveData"
;
public
static
final
String
ERP_TOKEN
=
"GmHu6SqGdmmtY6Aup5kp1jlWenQz+vzQ6TBN6x/3dOwfNULkTNLx2/QA9Vhq1F7LEEXP6UKzFCxt99srTFd59DjGOgmrDnvVOYBgtSYbSTD2JNeRRD8AKe/v3TW9rWFtOMfGHtTkh6AxbovaSXa99tI5HUInT2wi2xwkdo9DKOQ="
;
}
src/main/java/com/patzn/cloud/service/lims/hmhj/controller/EntrustSampleItemController.java
View file @
2a14ace5
package
com
.
patzn
.
cloud
.
service
.
lims
.
hmhj
.
controller
;
package
com
.
patzn
.
cloud
.
service
.
lims
.
hmhj
.
controller
;
import
com.baomidou.kisso.annotation.Action
;
import
com.baomidou.kisso.annotation.Login
;
import
com.baomidou.mybatisplus.plugins.Page
;
import
com.baomidou.mybatisplus.plugins.Page
;
import
com.google.common.collect.Lists
;
import
com.google.common.collect.Lists
;
import
com.patzn.cloud.commons.api.RestAssert
;
import
com.patzn.cloud.commons.api.RestAssert
;
...
@@ -14,6 +16,7 @@ import com.patzn.cloud.service.hmhj.entity.OriginalRecord;
...
@@ -14,6 +16,7 @@ import com.patzn.cloud.service.hmhj.entity.OriginalRecord;
import
com.patzn.cloud.service.hmhj.enums.EntrustSampleItemStatusEnum
;
import
com.patzn.cloud.service.hmhj.enums.EntrustSampleItemStatusEnum
;
import
com.patzn.cloud.service.hmhj.vo.EntrustSampleItemVO
;
import
com.patzn.cloud.service.hmhj.vo.EntrustSampleItemVO
;
import
com.patzn.cloud.service.hmhj.vo.ItemVO
;
import
com.patzn.cloud.service.hmhj.vo.ItemVO
;
import
com.patzn.cloud.service.hmhj.vo.SampleItemVO
;
import
com.patzn.cloud.service.hmhj.vo.TesterWorkloadStatsVO
;
import
com.patzn.cloud.service.hmhj.vo.TesterWorkloadStatsVO
;
import
com.patzn.cloud.service.lims.base.entity.LmsUserRelGroup
;
import
com.patzn.cloud.service.lims.base.entity.LmsUserRelGroup
;
import
com.patzn.cloud.service.lims.base.vo.LmsUserRelGroupVO
;
import
com.patzn.cloud.service.lims.base.vo.LmsUserRelGroupVO
;
...
@@ -727,4 +730,17 @@ public class EntrustSampleItemController extends ServiceController {
...
@@ -727,4 +730,17 @@ public class EntrustSampleItemController extends ServiceController {
public
RestResult
<
Boolean
>
checkCanWriteOriginal
(
@RequestParam
(
"ids"
)
Long
[]
ids
)
{
public
RestResult
<
Boolean
>
checkCanWriteOriginal
(
@RequestParam
(
"ids"
)
Long
[]
ids
)
{
return
success
(
entrustSampleItemService
.
checkCanWriteOriginal
(
ids
));
return
success
(
entrustSampleItemService
.
checkCanWriteOriginal
(
ids
));
}
}
@ApiOperation
(
value
=
"模拟测试发送数据到ERP"
,
notes
=
"模拟测试发送数据到ERP"
)
@PostMapping
(
"/send_data"
)
@Login
(
action
=
Action
.
Skip
)
public
RestResult
<
Boolean
>
sendData
(
@RequestBody
List
<
SampleItemVO
>
sampleItemVOList
)
{
return
RestResult
.
failed
(
"测试凯龙"
);
}
@ApiOperation
(
value
=
"根据检测项目ID退回原始记录"
,
notes
=
"根据检测项目ID退回原始记录"
)
@PostMapping
(
"/back_user_item"
)
public
RestResult
<
Boolean
>
backUserItem
(
@RequestParam
(
"ids"
)
Long
[]
ids
)
{
return
success
(
entrustSampleItemService
.
backUserItem
(
ids
));
}
}
}
src/main/java/com/patzn/cloud/service/lims/hmhj/interceptor/NetworkInterceptor.java
0 → 100644
View file @
2a14ace5
package
com
.
patzn
.
cloud
.
service
.
lims
.
hmhj
.
interceptor
;
import
okhttp3.*
;
import
okio.Buffer
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
java.io.IOException
;
import
java.nio.charset.Charset
;
/**
* 网络拦截器
*
* @author: meazty
* @since: 2022/2/12 17:23
**/
public
class
NetworkInterceptor
implements
Interceptor
{
private
static
final
Logger
LOGGER
=
LoggerFactory
.
getLogger
(
NetworkInterceptor
.
class
);
@Override
public
Response
intercept
(
Interceptor
.
Chain
chain
)
{
long
start
=
System
.
currentTimeMillis
();
Response
response
=
null
;
String
responseBody
=
null
;
String
responseCode
=
null
;
String
url
=
null
;
String
requestBody
=
null
;
try
{
Request
request
=
chain
.
request
();
url
=
request
.
url
().
toString
();
requestBody
=
getRequestBody
(
request
);
response
=
chain
.
proceed
(
request
);
assert
response
.
body
()
!=
null
;
responseBody
=
response
.
body
().
string
();
responseCode
=
String
.
valueOf
(
response
.
code
());
MediaType
mediaType
=
response
.
body
().
contentType
();
response
=
response
.
newBuilder
().
body
(
ResponseBody
.
create
(
mediaType
,
responseBody
)).
build
();
}
catch
(
Exception
e
)
{
LOGGER
.
error
(
e
.
getMessage
());
}
finally
{
long
end
=
System
.
currentTimeMillis
();
String
duration
=
String
.
valueOf
(
end
-
start
);
LOGGER
.
info
(
"responseTime= {}, requestUrl= {}, params={}, responseCode= {}, result= {}"
,
duration
,
url
,
requestBody
,
responseCode
,
responseBody
);
}
return
response
;
}
private
String
getRequestBody
(
Request
request
)
{
String
requestContent
=
""
;
if
(
request
==
null
)
{
return
requestContent
;
}
RequestBody
requestBody
=
request
.
body
();
if
(
requestBody
==
null
)
{
return
requestContent
;
}
try
{
Buffer
buffer
=
new
Buffer
();
requestBody
.
writeTo
(
buffer
);
Charset
charset
=
Charset
.
forName
(
"utf-8"
);
requestContent
=
buffer
.
readString
(
charset
);
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
}
return
requestContent
;
}
}
src/main/java/com/patzn/cloud/service/lims/hmhj/interceptor/RetryInterceptor.java
0 → 100644
View file @
2a14ace5
package
com
.
patzn
.
cloud
.
service
.
lims
.
hmhj
.
interceptor
;
import
okhttp3.Interceptor
;
import
okhttp3.Request
;
import
okhttp3.Response
;
import
java.io.IOException
;
/**
* okHttp3请求错误重试机制
*
* @author: meazty
* @since: 2022/2/12 17:13
**/
public
class
RetryInterceptor
implements
Interceptor
{
public
int
maxRetryCount
;
private
int
count
=
0
;
public
RetryInterceptor
(
int
maxRetryCount
)
{
this
.
maxRetryCount
=
maxRetryCount
;
}
@Override
public
Response
intercept
(
Chain
chain
)
throws
IOException
{
return
retry
(
chain
);
}
public
Response
retry
(
Chain
chain
)
{
Response
response
=
null
;
Request
request
=
chain
.
request
();
try
{
response
=
chain
.
proceed
(
request
);
while
(!
response
.
isSuccessful
()
&&
count
<
maxRetryCount
)
{
count
++;
response
=
retry
(
chain
);
}
}
catch
(
Exception
e
)
{
while
(
count
<
maxRetryCount
)
{
count
++;
response
=
retry
(
chain
);
}
}
return
response
;
}
}
src/main/java/com/patzn/cloud/service/lims/hmhj/mapper/EntrustSampleItemIndexMapper.java
View file @
2a14ace5
...
@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.annotations.SqlParser;
...
@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.annotations.SqlParser;
import
com.patzn.cloud.commons.mapper.BatchMapper
;
import
com.patzn.cloud.commons.mapper.BatchMapper
;
import
com.patzn.cloud.service.hmhj.entity.EntrustSampleItemIndex
;
import
com.patzn.cloud.service.hmhj.entity.EntrustSampleItemIndex
;
import
com.patzn.cloud.service.hmhj.vo.EntrustSampleItemIndexVO
;
import
com.patzn.cloud.service.hmhj.vo.EntrustSampleItemIndexVO
;
import
com.patzn.cloud.service.hmhj.vo.SampleItemVO
;
import
org.apache.ibatis.annotations.Param
;
import
org.apache.ibatis.annotations.Param
;
import
org.apache.ibatis.session.RowBounds
;
import
org.apache.ibatis.session.RowBounds
;
...
@@ -30,4 +31,5 @@ public interface EntrustSampleItemIndexMapper extends BatchMapper<EntrustSampleI
...
@@ -30,4 +31,5 @@ public interface EntrustSampleItemIndexMapper extends BatchMapper<EntrustSampleI
List
<
EntrustSampleItemIndexVO
>
selectIndexWithItem
(
RowBounds
rowBounds
,
@Param
(
"vo"
)
EntrustSampleItemIndexVO
entrustSampleItemIndexVO
);
List
<
EntrustSampleItemIndexVO
>
selectIndexWithItem
(
RowBounds
rowBounds
,
@Param
(
"vo"
)
EntrustSampleItemIndexVO
entrustSampleItemIndexVO
);
List
<
SampleItemVO
>
selectSampleItemIndex
(
@Param
(
"sampleIds"
)
List
<
Long
>
sampleIds
);
}
}
src/main/java/com/patzn/cloud/service/lims/hmhj/original/OriginalFactory.java
View file @
2a14ace5
...
@@ -8,9 +8,11 @@ import com.patzn.cloud.service.hmhj.vo.EntrustSampleItemVO;
...
@@ -8,9 +8,11 @@ import com.patzn.cloud.service.hmhj.vo.EntrustSampleItemVO;
import
org.apache.poi.xssf.usermodel.XSSFWorkbook
;
import
org.apache.poi.xssf.usermodel.XSSFWorkbook
;
import
java.util.List
;
import
java.util.List
;
import
java.util.Objects
;
/**
/**
* @author Meazty
* @author wangweidong
* @since 2021/05/06
*/
*/
public
class
OriginalFactory
{
public
class
OriginalFactory
{
private
OriginalTemplate
template
;
private
OriginalTemplate
template
;
...
@@ -28,7 +30,7 @@ public class OriginalFactory {
...
@@ -28,7 +30,7 @@ public class OriginalFactory {
this
.
xssfWorkbook
=
xssfWorkbook
;
this
.
xssfWorkbook
=
xssfWorkbook
;
}
}
public
OriginalFactory
(
OriginalTemplate
template
,
List
<
EntrustSampleItemVO
>
voList
,
Entrust
entrust
,
List
<
Entrust
>
entrustList
,
List
<
OriginalTemplateConfig
>
configList
,
XSSFWorkbook
xssfWorkbook
)
{
public
OriginalFactory
(
OriginalTemplate
template
,
List
<
EntrustSampleItemVO
>
voList
,
Entrust
entrust
,
List
<
Entrust
>
entrustList
,
List
<
OriginalTemplateConfig
>
configList
,
XSSFWorkbook
xssfWorkbook
)
{
this
.
entrustList
=
entrustList
;
this
.
entrustList
=
entrustList
;
this
.
template
=
template
;
this
.
template
=
template
;
this
.
entrust
=
entrust
;
this
.
entrust
=
entrust
;
...
@@ -47,6 +49,11 @@ public class OriginalFactory {
...
@@ -47,6 +49,11 @@ public class OriginalFactory {
return
new
SingleSheetMoreOperation
(
template
,
entrustList
,
voList
,
configList
,
xssfWorkbook
);
return
new
SingleSheetMoreOperation
(
template
,
entrustList
,
voList
,
configList
,
xssfWorkbook
);
}
}
// 针对压片分析
if
(
Objects
.
equals
(
template
.
getTabletAnalysis
(),
1
))
{
return
new
SingleSheetMoreTabletOperation
(
template
,
voList
,
entrust
,
configList
,
xssfWorkbook
);
}
return
new
SingleSheetMoreOperation
(
template
,
voList
,
entrust
,
configList
,
xssfWorkbook
);
return
new
SingleSheetMoreOperation
(
template
,
voList
,
entrust
,
configList
,
xssfWorkbook
);
}
else
{
}
else
{
Integer
templateSampleNum
=
template
.
getTemplateSampleNum
();
Integer
templateSampleNum
=
template
.
getTemplateSampleNum
();
...
...
src/main/java/com/patzn/cloud/service/lims/hmhj/original/SingleSheetMoreTabletOperation.java
0 → 100644
View file @
2a14ace5
package
com
.
patzn
.
cloud
.
service
.
lims
.
hmhj
.
original
;
import
com.baomidou.mybatisplus.toolkit.CollectionUtils
;
import
com.patzn.cloud.commons.toolkit.MapMergeUtils
;
import
com.patzn.cloud.service.hmhj.entity.Entrust
;
import
com.patzn.cloud.service.hmhj.entity.OriginalTemplate
;
import
com.patzn.cloud.service.hmhj.entity.OriginalTemplateConfig
;
import
com.patzn.cloud.service.hmhj.vo.EntrustSampleItemVO
;
import
com.patzn.cloud.service.lims.common.StringHandleUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.poi.ss.usermodel.FormulaEvaluator
;
import
org.apache.poi.ss.util.CellRangeAddress
;
import
org.apache.poi.xssf.usermodel.*
;
import
java.util.LinkedHashMap
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Objects
;
public
class
SingleSheetMoreTabletOperation
implements
Operation
{
private
OriginalTemplate
template
;
private
List
<
EntrustSampleItemVO
>
voList
;
private
Entrust
entrust
;
private
List
<
Entrust
>
entrustList
;
private
List
<
OriginalTemplateConfig
>
configList
;
private
XSSFWorkbook
xssfWorkbook
;
private
String
collectionDataPrefix
=
"clc."
;
private
FormulaEvaluator
formulaEvaluator
;
public
SingleSheetMoreTabletOperation
(
OriginalTemplate
template
,
List
<
EntrustSampleItemVO
>
voList
,
Entrust
entrust
,
List
<
OriginalTemplateConfig
>
configList
,
XSSFWorkbook
xssfWorkbook
)
{
this
.
template
=
template
;
this
.
voList
=
voList
;
this
.
entrust
=
entrust
;
this
.
configList
=
configList
;
this
.
xssfWorkbook
=
xssfWorkbook
;
this
.
formulaEvaluator
=
new
XSSFFormulaEvaluator
(
xssfWorkbook
);
}
public
SingleSheetMoreTabletOperation
(
OriginalTemplate
template
,
List
<
Entrust
>
entrustList
,
List
<
EntrustSampleItemVO
>
voList
,
List
<
OriginalTemplateConfig
>
configList
,
XSSFWorkbook
xssfWorkbook
)
{
this
.
entrustList
=
entrustList
;
this
.
template
=
template
;
this
.
voList
=
voList
;
this
.
configList
=
configList
;
this
.
xssfWorkbook
=
xssfWorkbook
;
this
.
formulaEvaluator
=
new
XSSFFormulaEvaluator
(
xssfWorkbook
);
}
@Override
public
void
doMakeOriginal
()
{
if
(
CollectionUtils
.
isNotEmpty
(
entrustList
))
{
OriginalUtil
.
doReplaceMulti
(
xssfWorkbook
,
entrustList
);
}
else
{
OriginalUtil
.
doReplace
(
xssfWorkbook
,
entrust
);
}
XSSFSheet
sheetOne
=
xssfWorkbook
.
getSheetAt
(
0
);
sheetOne
.
setForceFormulaRecalculation
(
true
);
Integer
beginRow
=
template
.
getSampleBeginRow
();
int
sampleMergerNum
=
template
.
getSampleMergerNum
();
int
templateSampleNum
=
template
.
getTemplateSampleNum
();
int
insertRow
=
beginRow
+
sampleMergerNum
*
templateSampleNum
;
XSSFRow
zeroRow
=
sheetOne
.
getRow
(
beginRow
);
int
lastCellNum
=
zeroRow
.
getLastCellNum
();
int
insertCount
=
voList
.
size
()
-
templateSampleNum
;
for
(
int
m
=
0
;
m
<
insertCount
;
m
++)
{
for
(
int
i
=
0
;
i
<
sampleMergerNum
;
i
++)
{
sheetOne
.
shiftRows
(
insertRow
,
sheetOne
.
getLastRowNum
(),
1
,
true
,
false
);
XSSFRow
row
=
sheetOne
.
createRow
(
insertRow
);
row
.
setHeight
(
zeroRow
.
getHeight
());
for
(
int
j
=
0
;
j
<
lastCellNum
;
j
++)
{
XSSFCellStyle
cellStyle
=
zeroRow
.
getCell
(
j
).
getCellStyle
();
XSSFCell
xssfCell
=
row
.
createCell
(
j
);
xssfCell
.
setCellStyle
(
cellStyle
);
}
insertRow
++;
}
}
int
sn
=
1
;
Map
<
String
,
List
<
EntrustSampleItemVO
>>
dataMap
=
new
LinkedHashMap
<>();
voList
.
forEach
(
t
->
{
MapMergeUtils
.
getorCreateMapArrayList
(
t
.
getSampleCode
(),
dataMap
,
t
);
});
Map
<
String
,
List
<
EntrustSampleItemVO
>>
sampleItemMap
=
new
LinkedHashMap
<>();
dataMap
.
entrySet
().
stream
()
.
sorted
(
Map
.
Entry
.
comparingByKey
())
.
forEachOrdered
(
x
->
sampleItemMap
.
put
(
x
.
getKey
(),
x
.
getValue
()));
for
(
Map
.
Entry
<
String
,
List
<
EntrustSampleItemVO
>>
entry
:
sampleItemMap
.
entrySet
())
{
XSSFRow
xssfRowS
=
sheetOne
.
getRow
(
beginRow
);
XSSFRow
xssfRowE
=
sheetOne
.
getRow
(
beginRow
+
1
);
// 数据初处理
// 由于是2次检测,检测项目为2条(正常情况下)
List
<
EntrustSampleItemVO
>
itemVOList
=
entry
.
getValue
();
//
for
(
OriginalTemplateConfig
config
:
configList
)
{
if
(
null
==
config
.
getColumnPlace
())
{
continue
;
}
XSSFCell
cellS
=
xssfRowS
.
getCell
(
config
.
getColumnPlace
());
XSSFCell
cellE
=
xssfRowE
.
getCell
(
config
.
getColumnPlace
());
if
(
null
==
config
.
getDataAttribute
())
{
continue
;
}
if
(
"sn"
.
equals
(
config
.
getDataAttribute
()))
{
cellS
.
setCellValue
(
sn
);
cellE
.
setCellValue
(++
sn
);
}
else
if
(
config
.
getDataAttribute
().
startsWith
(
"clc."
))
{
String
mapKey
=
config
.
getDataAttribute
().
substring
(
4
);
for
(
EntrustSampleItemVO
itemVO
:
itemVOList
)
{
List
<
Map
<
String
,
String
>>
dataMapList
=
itemVO
.
getCollectionDataList
();
if
(
CollectionUtils
.
isEmpty
(
dataMapList
))
{
continue
;
}
boolean
isTwice
=
dataMapList
.
size
()
>
1
;
String
rowDataS
=
dataMapList
.
get
(
0
).
get
(
mapKey
);
if
(
StringUtils
.
isNotBlank
(
rowDataS
))
{
// 需要修约
if
(
null
!=
config
.
getRoundNum
())
{
rounding
(
cellS
,
rowDataS
,
config
.
getRoundNum
());
}
else
{
// 不需要修约
cellS
.
setCellValue
(
rowDataS
);
}
}
if
(
isTwice
)
{
String
rowDataE
=
dataMapList
.
get
(
1
).
get
(
mapKey
);
if
(
StringUtils
.
isNotBlank
(
rowDataE
))
{
// 需要修约
if
(
null
!=
config
.
getRoundNum
())
{
rounding
(
cellE
,
rowDataE
,
config
.
getRoundNum
());
}
else
{
// 不需要修约
cellE
.
setCellValue
(
rowDataE
);
}
}
}
}
}
else
{
for
(
EntrustSampleItemVO
itemVO
:
itemVOList
)
{
List
<
Map
<
String
,
String
>>
dataMapList
=
itemVO
.
getCollectionDataList
();
if
(
CollectionUtils
.
isEmpty
(
dataMapList
))
{
continue
;
}
cellS
.
setCellValue
(
StringHandleUtils
.
getFieldIfNummReturnBlankValueByFieldName
(
config
.
getDataAttribute
(),
itemVO
));
}
}
}
beginRow
+=
sampleMergerNum
;
sn
++;
}
for
(
OriginalTemplateConfig
config
:
configList
)
{
if
(
null
==
config
.
getMergeRowNum
())
{
config
.
setMergeRowNum
(
1
);
}
if
(
StringUtils
.
isNotBlank
(
config
.
getFormula
())
&&
null
!=
config
.
getColumnPlace
()
&&
null
!=
config
.
getMergeRowNum
())
{
Integer
sampleBgMum
=
template
.
getSampleBeginRow
();
Integer
mergeRowNum
=
config
.
getMergeRowNum
();
int
formulaNum
=
template
.
getSampleBeginRow
()
+
sampleMergerNum
*
voList
.
size
()
-
1
;
for
(
int
i
=
sampleBgMum
;
i
<=
formulaNum
;
i
+=
mergeRowNum
)
{
XSSFRow
row
=
sheetOne
.
getRow
(
i
);
if
(
null
==
row
)
{
continue
;
}
XSSFCell
cell
=
row
.
getCell
(
config
.
getColumnPlace
());
if
(
null
==
cell
)
{
continue
;
}
String
formula
=
config
.
getFormula
();
cell
.
setCellFormula
(
OriginalUtil
.
initFormula
(
formula
,
i
));
}
}
}
for
(
OriginalTemplateConfig
config
:
configList
)
{
if
(
null
==
config
.
getMergeRowNum
())
{
config
.
setMergeRowNum
(
1
);
}
if
(
null
==
config
.
getMergeBegin
())
{
continue
;
}
if
(
null
==
config
.
getMergeEnd
())
{
continue
;
}
int
step
=
config
.
getMergeRowNum
();
if
(
step
==
1
&&
Objects
.
equals
(
config
.
getMergeEnd
(),
config
.
getMergeBegin
()))
{
continue
;
}
if
(
null
!=
config
.
getColumnPlace
()
&&
null
!=
config
.
getMergeRowNum
())
{
Integer
sampleBgMum
=
template
.
getSampleBeginRow
()
+
templateSampleNum
*
sampleMergerNum
;
Integer
sampleEnMum
=
template
.
getSampleBeginRow
()
+
voList
.
size
()
*
sampleMergerNum
-
1
;
while
(
sampleBgMum
<=
sampleEnMum
)
{
sheetOne
.
addMergedRegion
(
new
CellRangeAddress
(
sampleBgMum
,
sampleBgMum
+
step
-
1
,
config
.
getMergeBegin
(),
config
.
getMergeEnd
()));
sampleBgMum
=
sampleBgMum
+
step
;
}
}
}
// 处理曲线和空白
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/IEntrustSampleItemIndexService.java
View file @
2a14ace5
...
@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.plugins.Page;
...
@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.plugins.Page;
import
com.patzn.cloud.commons.service.IBaseService
;
import
com.patzn.cloud.commons.service.IBaseService
;
import
com.patzn.cloud.service.hmhj.entity.EntrustSampleItemIndex
;
import
com.patzn.cloud.service.hmhj.entity.EntrustSampleItemIndex
;
import
com.patzn.cloud.service.hmhj.vo.EntrustSampleItemIndexVO
;
import
com.patzn.cloud.service.hmhj.vo.EntrustSampleItemIndexVO
;
import
com.patzn.cloud.service.hmhj.vo.SampleItemVO
;
import
java.util.List
;
import
java.util.List
;
...
@@ -37,4 +38,6 @@ public interface IEntrustSampleItemIndexService extends IBaseService<EntrustSamp
...
@@ -37,4 +38,6 @@ public interface IEntrustSampleItemIndexService extends IBaseService<EntrustSamp
List
<
EntrustSampleItemIndex
>
getInReportItemIndex
(
Long
sampleId
);
List
<
EntrustSampleItemIndex
>
getInReportItemIndex
(
Long
sampleId
);
Page
<
EntrustSampleItemIndexVO
>
pageIndexWithItem
(
Page
<
EntrustSampleItemIndexVO
>
page
,
EntrustSampleItemIndexVO
entrustSampleItemIndexVO
);
Page
<
EntrustSampleItemIndexVO
>
pageIndexWithItem
(
Page
<
EntrustSampleItemIndexVO
>
page
,
EntrustSampleItemIndexVO
entrustSampleItemIndexVO
);
List
<
SampleItemVO
>
listSampleItemIndex
(
List
<
Long
>
sampleIds
);
}
}
src/main/java/com/patzn/cloud/service/lims/hmhj/service/IEntrustSampleItemService.java
View file @
2a14ace5
...
@@ -134,4 +134,5 @@ public interface IEntrustSampleItemService extends IBaseService<EntrustSampleIte
...
@@ -134,4 +134,5 @@ public interface IEntrustSampleItemService extends IBaseService<EntrustSampleIte
Boolean
checkCanWriteOriginal
(
Long
[]
ids
);
Boolean
checkCanWriteOriginal
(
Long
[]
ids
);
Boolean
backUserItem
(
Long
[]
ids
);
}
}
src/main/java/com/patzn/cloud/service/lims/hmhj/service/impl/EntrustSampleItemIndexServiceImpl.java
View file @
2a14ace5
...
@@ -10,6 +10,7 @@ import com.patzn.cloud.commons.service.impl.BaseServiceImpl;
...
@@ -10,6 +10,7 @@ import com.patzn.cloud.commons.service.impl.BaseServiceImpl;
import
com.patzn.cloud.service.hmhj.entity.EntrustSampleItem
;
import
com.patzn.cloud.service.hmhj.entity.EntrustSampleItem
;
import
com.patzn.cloud.service.hmhj.entity.EntrustSampleItemIndex
;
import
com.patzn.cloud.service.hmhj.entity.EntrustSampleItemIndex
;
import
com.patzn.cloud.service.hmhj.vo.EntrustSampleItemIndexVO
;
import
com.patzn.cloud.service.hmhj.vo.EntrustSampleItemIndexVO
;
import
com.patzn.cloud.service.hmhj.vo.SampleItemVO
;
import
com.patzn.cloud.service.lims.common.BeanUtils
;
import
com.patzn.cloud.service.lims.common.BeanUtils
;
import
com.patzn.cloud.service.lims.hmhj.mapper.EntrustSampleItemIndexMapper
;
import
com.patzn.cloud.service.lims.hmhj.mapper.EntrustSampleItemIndexMapper
;
import
com.patzn.cloud.service.lims.hmhj.service.IEntrustSampleItemIndexService
;
import
com.patzn.cloud.service.lims.hmhj.service.IEntrustSampleItemIndexService
;
...
@@ -17,6 +18,7 @@ import com.patzn.cloud.service.lims.hmhj.service.IEntrustSampleItemService;
...
@@ -17,6 +18,7 @@ import com.patzn.cloud.service.lims.hmhj.service.IEntrustSampleItemService;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.List
;
/**
/**
...
@@ -45,6 +47,14 @@ public class EntrustSampleItemIndexServiceImpl extends BaseServiceImpl<EntrustSa
...
@@ -45,6 +47,14 @@ public class EntrustSampleItemIndexServiceImpl extends BaseServiceImpl<EntrustSa
}
}
@Override
@Override
public
List
<
SampleItemVO
>
listSampleItemIndex
(
List
<
Long
>
sampleIds
)
{
if
(
CollectionUtils
.
isEmpty
(
sampleIds
))
{
return
new
ArrayList
<>();
}
return
baseMapper
.
selectSampleItemIndex
(
sampleIds
);
}
@Override
public
boolean
removeByIds
(
List
<
Long
>
ids
)
{
public
boolean
removeByIds
(
List
<
Long
>
ids
)
{
return
baseMapper
.
deleteBatchIds
(
ids
)
>
0
;
return
baseMapper
.
deleteBatchIds
(
ids
)
>
0
;
}
}
...
...
src/main/java/com/patzn/cloud/service/lims/hmhj/service/impl/EntrustSampleItemServiceImpl.java
View file @
2a14ace5
package
com
.
patzn
.
cloud
.
service
.
lims
.
hmhj
.
service
.
impl
;
package
com
.
patzn
.
cloud
.
service
.
lims
.
hmhj
.
service
.
impl
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONArray
;
import
com.alibaba.fastjson.JSONArray
;
import
com.alibaba.fastjson.JSONObject
;
import
com.baomidou.mybatisplus.mapper.Condition
;
import
com.baomidou.mybatisplus.mapper.Condition
;
import
com.baomidou.mybatisplus.mapper.EntityWrapper
;
import
com.baomidou.mybatisplus.mapper.EntityWrapper
;
import
com.baomidou.mybatisplus.mapper.Wrapper
;
import
com.baomidou.mybatisplus.mapper.Wrapper
;
...
@@ -13,10 +15,7 @@ import com.patzn.cloud.commons.controller.Account;
...
@@ -13,10 +15,7 @@ import com.patzn.cloud.commons.controller.Account;
import
com.patzn.cloud.commons.controller.LoginHelper
;
import
com.patzn.cloud.commons.controller.LoginHelper
;
import
com.patzn.cloud.commons.exception.PatznException
;
import
com.patzn.cloud.commons.exception.PatznException
;
import
com.patzn.cloud.commons.service.impl.BaseServiceImpl
;
import
com.patzn.cloud.commons.service.impl.BaseServiceImpl
;
import
com.patzn.cloud.commons.toolkit.DateUtils
;
import
com.patzn.cloud.commons.toolkit.*
;
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.oss.starter.OssClient
;
import
com.patzn.cloud.oss.starter.OssClient
;
import
com.patzn.cloud.oss.starter.OssFileResult
;
import
com.patzn.cloud.oss.starter.OssFileResult
;
import
com.patzn.cloud.service.BaseEntity
;
import
com.patzn.cloud.service.BaseEntity
;
...
@@ -30,18 +29,24 @@ import com.patzn.cloud.service.hmhj.enums.EntrustSampleStatusEnum;
...
@@ -30,18 +29,24 @@ import com.patzn.cloud.service.hmhj.enums.EntrustSampleStatusEnum;
import
com.patzn.cloud.service.hmhj.enums.EntrustStatusEnum
;
import
com.patzn.cloud.service.hmhj.enums.EntrustStatusEnum
;
import
com.patzn.cloud.service.hmhj.vo.*
;
import
com.patzn.cloud.service.hmhj.vo.*
;
import
com.patzn.cloud.service.lims.base.entity.LmsUserRelGroup
;
import
com.patzn.cloud.service.lims.base.entity.LmsUserRelGroup
;
import
com.patzn.cloud.service.lims.base.enums.FlowTypeEnum
;
import
com.patzn.cloud.service.lims.base.vo.LmsUserRelGroupVO
;
import
com.patzn.cloud.service.lims.base.vo.LmsUserRelGroupVO
;
import
com.patzn.cloud.service.lims.collection.entity.LmsOriginalRecordInfo
;
import
com.patzn.cloud.service.lims.collection.entity.LmsOriginalRecordInfo
;
import
com.patzn.cloud.service.lims.common.CompareUtils
;
import
com.patzn.cloud.service.lims.common.CompareUtils
;
import
com.patzn.cloud.service.lims.common.RedisUtil
;
import
com.patzn.cloud.service.lims.common.StringHandleUtils
;
import
com.patzn.cloud.service.lims.common.StringHandleUtils
;
import
com.patzn.cloud.service.lims.common.service.IExportService
;
import
com.patzn.cloud.service.lims.common.service.IExportService
;
import
com.patzn.cloud.service.lims.hmhj.common.HSSFWorkbookUtil
;
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.common.LabreOfficeUtil
;
import
com.patzn.cloud.service.lims.hmhj.common.OkHttpUtils
;
import
com.patzn.cloud.service.lims.hmhj.common.consts.HttpConst
;
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.original.Operation
;
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.OriginalFactory
;
import
com.patzn.cloud.service.lims.hmhj.original.SingleSheetMoreItemOperation
;
import
com.patzn.cloud.service.lims.hmhj.original.SingleSheetMoreItemOperation
;
import
com.patzn.cloud.service.lims.hmhj.original.SingleSheetMoreTabletOperation
;
import
com.patzn.cloud.service.lims.hmhj.service.*
;
import
com.patzn.cloud.service.lims.hmhj.service.*
;
import
okhttp3.*
;
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.xssf.usermodel.XSSFCell
;
import
org.apache.poi.xssf.usermodel.XSSFCell
;
...
@@ -748,7 +753,30 @@ public class EntrustSampleItemServiceImpl extends BaseServiceImpl<EntrustSampleI
...
@@ -748,7 +753,30 @@ public class EntrustSampleItemServiceImpl extends BaseServiceImpl<EntrustSampleI
.
filter
(
q
->
StringUtils
.
isNotEmpty
(
q
.
getInstrumentItemName
()))
.
filter
(
q
->
StringUtils
.
isNotEmpty
(
q
.
getInstrumentItemName
()))
.
collect
(
Collectors
.
toMap
(
Qualification:
:
getName
,
Qualification:
:
getInstrumentItemName
));
.
collect
(
Collectors
.
toMap
(
Qualification:
:
getName
,
Qualification:
:
getInstrumentItemName
));
if
(
null
!=
template
.
getMoreItem
()
&&
1
==
template
.
getMoreItem
())
{
// 若为压片分析
if
(
Objects
.
equals
(
template
.
getTabletAnalysis
(),
1
))
{
// todo
// 压片分析单独处理
/* 获取采集到的数据 */
getCollectionData
(
voList
,
null
,
itemNameMap
,
template
,
entrustCode
);
EntrustSampleItemVO
firstVO
=
null
;
for
(
EntrustSampleItemVO
vo
:
voList
)
{
if
(
vo
.
getType
()
==
0
)
{
firstVO
=
vo
;
}
}
if
(
CollectionUtils
.
isNotEmpty
(
voList
))
{
mapReplace
.
put
(
"#{sampleFrom}"
,
firstVO
==
null
?
""
:
firstVO
.
getSampleFrom
());
mapReplace
.
put
(
"#{sampleName}"
,
firstVO
==
null
?
""
:
firstVO
.
getSampleName
());
}
SingleSheetMoreTabletOperation
operation
=
new
SingleSheetMoreTabletOperation
(
template
,
voList
,
entrust
,
configList
,
xssfWorkbook
);
operation
.
doMakeOriginal
();
}
else
if
(
null
!=
template
.
getMoreItem
()
&&
1
==
template
.
getMoreItem
())
{
Set
<
Long
>
sampleIdsList
=
new
HashSet
<>();
Set
<
Long
>
sampleIdsList
=
new
HashSet
<>();
for
(
EntrustSampleItemVO
itemVO
:
voList
)
{
for
(
EntrustSampleItemVO
itemVO
:
voList
)
{
sampleIdsList
.
add
(
itemVO
.
getEntrustSampleId
());
sampleIdsList
.
add
(
itemVO
.
getEntrustSampleId
());
...
@@ -776,22 +804,20 @@ public class EntrustSampleItemServiceImpl extends BaseServiceImpl<EntrustSampleI
...
@@ -776,22 +804,20 @@ public class EntrustSampleItemServiceImpl extends BaseServiceImpl<EntrustSampleI
/* 获取采集数据,并保存到SampleVO中 */
/* 获取采集数据,并保存到SampleVO中 */
getCollectionData
(
null
,
sampleVOList
,
itemNameMap
,
template
,
entrustCode
);
getCollectionData
(
null
,
sampleVOList
,
itemNameMap
,
template
,
entrustCode
);
if
(
null
==
template
.
getSampleBeginRow
()
||
null
==
template
.
getSampleMergerNum
()
||
null
==
template
.
getTemplateSampleNum
())
{
if
(
null
==
template
.
getSampleBeginRow
()
||
null
==
template
.
getSampleMergerNum
()
||
null
==
template
.
getTemplateSampleNum
())
{
return
null
;
return
null
;
}
}
// if (voList.size() < template.getTemplateSampleNum()) {
// if (voList.size() < template.getTemplateSampleNum()) {
// MoreItemOperation moreItemOperation = new MoreItemOperation(template, sampleVOList, entrust, configList, xssfWorkbook);
// MoreItemOperation moreItemOperation = new MoreItemOperation(template, sampleVOList, entrust, configList, xssfWorkbook);
// moreItemOperation.doMakeOriginal();
// moreItemOperation.doMakeOriginal();
//
//
// } else {
// } else {
// MoreItemMoreOperation moreItemOperation = new MoreItemMoreOperation(template, sampleVOList, entrust, configList, xssfWorkbook);
// MoreItemMoreOperation moreItemOperation = new MoreItemMoreOperation(template, sampleVOList, entrust, configList, xssfWorkbook);
// moreItemOperation.doMakeOriginal();
// moreItemOperation.doMakeOriginal();
/* 多个检测项目放在一个sheet中,一个样品一条记录 */
/* 多个检测项目放在一个sheet中,一个样品一条记录 */
SingleSheetMoreItemOperation
operation
=
new
SingleSheetMoreItemOperation
(
template
,
entrust
,
null
,
sampleVOList
,
configList
,
xssfWorkbook
);
SingleSheetMoreItemOperation
operation
=
new
SingleSheetMoreItemOperation
(
template
,
entrust
,
null
,
sampleVOList
,
configList
,
xssfWorkbook
);
operation
.
doMakeOriginal
();
operation
.
doMakeOriginal
();
// }
// }
}
else
{
}
else
{
/* 获取采集到的数据 */
/* 获取采集到的数据 */
...
@@ -818,7 +844,6 @@ public class EntrustSampleItemServiceImpl extends BaseServiceImpl<EntrustSampleI
...
@@ -818,7 +844,6 @@ public class EntrustSampleItemServiceImpl extends BaseServiceImpl<EntrustSampleI
}
}
}
}
HSSFWorkbookUtil
.
replaceModel
(
mapReplace
,
xssfWorkbook
,
0
);
HSSFWorkbookUtil
.
replaceModel
(
mapReplace
,
xssfWorkbook
,
0
);
FileOutputStream
os
=
null
;
FileOutputStream
os
=
null
;
...
@@ -834,26 +859,10 @@ public class EntrustSampleItemServiceImpl extends BaseServiceImpl<EntrustSampleI
...
@@ -834,26 +859,10 @@ public class EntrustSampleItemServiceImpl extends BaseServiceImpl<EntrustSampleI
logger
.
error
(
"----------------------17"
);
logger
.
error
(
"----------------------17"
);
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
logger
.
error
(
"Exception 报错"
+
e
.
getMessage
());
logger
.
error
(
"Exception 报错"
+
e
.
getMessage
());
e
.
printStackTrace
();
e
.
printStackTrace
();
}
finally
{
}
finally
{
try
{
IOUtils
.
closeQuietly
(
os
,
xssfWorkbook
,
io
);
os
.
close
();
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
try
{
xssfWorkbook
.
close
();
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
}
try
{
io
.
close
();
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
}
FileUtils
.
deleteFiles
(
file
);
FileUtils
.
deleteFiles
(
file
);
}
}
...
@@ -1356,10 +1365,93 @@ public class EntrustSampleItemServiceImpl extends BaseServiceImpl<EntrustSampleI
...
@@ -1356,10 +1365,93 @@ public class EntrustSampleItemServiceImpl extends BaseServiceImpl<EntrustSampleI
handleSampleBrand
(
ids
,
false
);
handleSampleBrand
(
ids
,
false
);
// 处理一级编码的报告文件
// 处理一级编码的报告文件
handleSampleBrand
(
ids
,
true
);
handleSampleBrand
(
ids
,
true
);
executor1
.
execute
(()
->
{
// 针对铝成品和原铝进行发送ERP数据处理
sendTestDataToErp
(
Arrays
.
asList
(
ids
));
});
logger
.
error
(
"======================质量判定结束========================"
);
logger
.
error
(
"======================质量判定结束========================"
);
return
true
;
return
true
;
}
}
/**
* 发送判级后的样品检测数据至ERP
*
* @param sampleVOList
*/
private
void
sendTestDataToErp
(
List
<
Long
>
ids
)
{
List
<
EntrustSample
>
sampleList
=
entrustSampleService
.
getBatchIds
(
ids
);
if
(
CollectionUtils
.
isEmpty
(
sampleList
))
{
return
;
}
// 只针对原铝和铝成品
String
sampleName
=
sampleList
.
get
(
0
).
getName
();
if
(!
Arrays
.
asList
(
"原铝"
,
"铝成品"
).
contains
(
sampleName
))
{
return
;
}
// 获取检测项目指标数据
List
<
SampleItemVO
>
dataList
=
entrustSampleItemIndexService
.
listSampleItemIndex
(
ids
);
String
suffix
=
sampleName
+
ids
.
get
(
0
)
+
dataList
.
size
();
// 通信
String
sampleConnectKey
=
"SAMPLE_CONNECT_COUNT_KEY"
+
suffix
;
try
{
doSendErpData
(
ids
,
dataList
);
}
catch
(
Exception
e
)
{
logger
.
error
(
e
.
getMessage
());
logger
.
error
(
"{}:发送ERP请求失败,请稍后重试!"
,
DateUtils
.
toYearMonthDayTime
(
new
Date
()));
try
{
dealFailureRequest
(
ids
,
dataList
,
sampleConnectKey
);
}
catch
(
Exception
ex
)
{
logger
.
error
(
"{}:重试后失败,发送结束。错误内容:"
,
DateUtils
.
toYearMonthDayTime
(
new
Date
()),
ex
.
getMessage
());
}
}
}
private
void
doSendErpData
(
List
<
Long
>
ids
,
List
<
SampleItemVO
>
dataList
)
{
String
result
=
OkHttpUtils
.
sendByPostJson
(
HttpConst
.
ERP_URL
,
HttpConst
.
ERP_TOKEN
,
JacksonUtils
.
toJSONString
(
dataList
));
if
(
StringUtils
.
isNotBlank
(
result
))
{
JSONObject
jsonObject
=
JSON
.
parseObject
(
result
);
// 若成功 ,则更新标识
if
(
Objects
.
equals
(
jsonObject
.
getString
(
"code"
),
"1"
)
&&
Objects
.
equals
(
jsonObject
.
getBoolean
(
"success"
),
true
))
{
entrustSampleService
.
update
(
new
EntrustSample
().
setSendErp
(
1
),
Condition
.
create
().
in
(
"ids"
,
ids
));
}
else
{
logger
.
error
(
"{}:响应失败:{}"
,
DateUtils
.
toYearMonthDayTime
(
new
Date
()),
StringHandleUtils
.
parse
(
jsonObject
.
getString
(
"msg"
)));
}
}
}
private
void
dealFailureRequest
(
List
<
Long
>
ids
,
List
<
SampleItemVO
>
dataList
,
String
sampleFlagKey
)
throws
InterruptedException
{
Integer
retryCount
=
0
;
//
String
retryCountStr
=
RedisUtil
.
StringOps
.
get
(
sampleFlagKey
);
String
sampleFailureIdsKey
=
"SAMPLE_FAILURE_IDS_KEY"
;
if
(
Objects
.
isNull
(
retryCountStr
)
||
(
retryCount
=
Integer
.
parseInt
(
retryCountStr
))
<
4
)
{
RedisUtil
.
StringOps
.
set
(
sampleFlagKey
,
retryCount
+
1
+
""
);
Thread
.
sleep
(
10000
);
executor1
.
execute
(()
->
{
doSendErpData
(
ids
,
dataList
);
});
// 对于那些已经失败的请求,重试
if
(
RedisUtil
.
KeyOps
.
hasKey
(
sampleFailureIdsKey
))
{
List
<
String
>
idList
=
RedisUtil
.
ListOps
.
lWholeList
(
sampleFailureIdsKey
);
RedisUtil
.
KeyOps
.
delete
(
sampleFailureIdsKey
);
if
(
CollectionUtils
.
isNotEmpty
(
idList
))
{
List
<
Long
>
sampleIds
=
idList
.
stream
().
map
(
Long:
:
parseLong
).
collect
(
Collectors
.
toList
());
Thread
.
sleep
(
5000
);
executor1
.
execute
(()
->
{
doSendErpData
(
ids
,
dataList
);
});
}
}
}
else
{
logger
.
error
(
"{}:发送请求失败,系统自动记录失败样品ID:{}"
,
DateUtils
.
toYearMonthDayTime
(
new
Date
()),
StringUtils
.
join
(
ids
,
","
));
// 只对此失败的任务在下次判定时,连带重试一次
RedisUtil
.
ListOps
.
lLeftPushAll
(
sampleFailureIdsKey
,
ids
.
toArray
(
new
String
[
ids
.
size
()]));
}
}
@Override
@Override
public
List
<
EntrustSampleItemVO
>
getSampleItemIndexList
(
Long
sampleId
)
{
public
List
<
EntrustSampleItemVO
>
getSampleItemIndexList
(
Long
sampleId
)
{
if
(
null
==
sampleId
)
{
if
(
null
==
sampleId
)
{
...
@@ -1396,7 +1488,7 @@ public class EntrustSampleItemServiceImpl extends BaseServiceImpl<EntrustSampleI
...
@@ -1396,7 +1488,7 @@ public class EntrustSampleItemServiceImpl extends BaseServiceImpl<EntrustSampleI
public
Page
<
ItemVO
>
pageAllotItemRight
(
Page
<
ItemVO
>
page
,
ItemVO
vo
)
{
public
Page
<
ItemVO
>
pageAllotItemRight
(
Page
<
ItemVO
>
page
,
ItemVO
vo
)
{
vo
.
setStatus
(
EntrustSampleItemStatusEnum
.
ALLOT
);
vo
.
setStatus
(
EntrustSampleItemStatusEnum
.
ALLOT
);
if
(
StringUtils
.
isNotBlank
(
vo
.
getName
()))
{
if
(
StringUtils
.
isNotBlank
(
vo
.
getName
()))
{
vo
.
setNameList
(
Arrays
.
asList
(
vo
.
getName
().
split
(
",|,"
)));
vo
.
setNameList
(
Arrays
.
asList
(
vo
.
getName
().
split
(
",|,"
))
.
stream
().
distinct
().
collect
(
Collectors
.
toList
())
);
}
}
List
<
ItemVO
>
list
=
baseMapper
.
pageItemDataRight
(
page
,
vo
);
List
<
ItemVO
>
list
=
baseMapper
.
pageItemDataRight
(
page
,
vo
);
return
page
.
setRecords
(
list
);
return
page
.
setRecords
(
list
);
...
@@ -1407,7 +1499,7 @@ public class EntrustSampleItemServiceImpl extends BaseServiceImpl<EntrustSampleI
...
@@ -1407,7 +1499,7 @@ public class EntrustSampleItemServiceImpl extends BaseServiceImpl<EntrustSampleI
public
Page
<
ItemVO
>
pageInputItemLeft
(
Page
<
ItemVO
>
page
,
ItemVO
vo
)
{
public
Page
<
ItemVO
>
pageInputItemLeft
(
Page
<
ItemVO
>
page
,
ItemVO
vo
)
{
vo
.
setStatus
(
EntrustSampleItemStatusEnum
.
TEST
);
vo
.
setStatus
(
EntrustSampleItemStatusEnum
.
TEST
);
if
(
StringUtils
.
isNotBlank
(
vo
.
getName
()))
{
if
(
StringUtils
.
isNotBlank
(
vo
.
getName
()))
{
vo
.
setNameList
(
Arrays
.
asList
(
vo
.
getName
().
split
(
",|,"
)));
vo
.
setNameList
(
Arrays
.
asList
(
vo
.
getName
().
split
(
",|,"
))
.
stream
().
distinct
().
collect
(
Collectors
.
toList
())
);
}
}
return
page
.
setRecords
(
baseMapper
.
pageItemDataLeft
(
page
,
vo
));
return
page
.
setRecords
(
baseMapper
.
pageItemDataLeft
(
page
,
vo
));
}
}
...
@@ -1416,7 +1508,7 @@ public class EntrustSampleItemServiceImpl extends BaseServiceImpl<EntrustSampleI
...
@@ -1416,7 +1508,7 @@ public class EntrustSampleItemServiceImpl extends BaseServiceImpl<EntrustSampleI
public
Page
<
ItemVO
>
pageInputItemRight
(
Page
<
ItemVO
>
page
,
ItemVO
vo
)
{
public
Page
<
ItemVO
>
pageInputItemRight
(
Page
<
ItemVO
>
page
,
ItemVO
vo
)
{
vo
.
setStatus
(
EntrustSampleItemStatusEnum
.
TEST
);
vo
.
setStatus
(
EntrustSampleItemStatusEnum
.
TEST
);
if
(
StringUtils
.
isNotBlank
(
vo
.
getName
()))
{
if
(
StringUtils
.
isNotBlank
(
vo
.
getName
()))
{
vo
.
setNameList
(
Arrays
.
asList
(
vo
.
getName
().
split
(
",|,"
)));
vo
.
setNameList
(
Arrays
.
asList
(
vo
.
getName
().
split
(
",|,"
))
.
stream
().
distinct
().
collect
(
Collectors
.
toList
())
);
}
}
List
<
ItemVO
>
list
=
baseMapper
.
pageItemDataRight
(
page
,
vo
);
List
<
ItemVO
>
list
=
baseMapper
.
pageItemDataRight
(
page
,
vo
);
return
page
.
setRecords
(
list
);
return
page
.
setRecords
(
list
);
...
@@ -1437,6 +1529,31 @@ public class EntrustSampleItemServiceImpl extends BaseServiceImpl<EntrustSampleI
...
@@ -1437,6 +1529,31 @@ public class EntrustSampleItemServiceImpl extends BaseServiceImpl<EntrustSampleI
return
true
;
return
true
;
}
}
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
Boolean
backUserItem
(
Long
[]
ids
)
{
RestAssert
.
fail
(
ArrayUtils
.
isEmpty
(
ids
),
"要退回的检测项目ID不能为空!"
);
EntrustSampleItem
item
=
getById
(
ids
[
0
]);
// 退回时查询检测项目对应样品是否已经发生状态变化,若已经发生变化,则不可以退回
EntrustSample
sample
=
entrustSampleService
.
getById
(
item
.
getEntrustSampleId
());
RestAssert
.
fail
(
sample
.
getStatus
()
!=
EntrustSampleStatusEnum
.
TEST
,
"检测项目对应样品状态已提交,无法执行退回操作!"
);
// List<EntrustSampleItem> itemList = list(Condition.create().eq("entrust_sample_id", item.getEntrustSampleId()).ne("status", EntrustSampleItemStatusEnum.TEST));
// if (CollectionUtils.isEmpty(itemList)) {
// EntrustSample sample = new EntrustSample().setStatus(EntrustSampleStatusEnum.TEST).setProgress(EntrustSampleStatusEnum.TEST);
// sample.setId(item.getEntrustSampleId());
// entrustSampleService.updateById(sample);
// }
// 更改选中检测项目的状态
update
(
new
EntrustSampleItem
().
setStatus
(
EntrustSampleItemStatusEnum
.
TEST
)
.
setProgress
(
EntrustSampleItemStatusEnum
.
TEST
),
Condition
.
create
().
in
(
"id"
,
ids
));
// 添加历史记录
entrustSampleItemRecordService
.
record
(
ids
,
EntrustSampleItemStatusEnum
.
END
.
getDisplay
(),
EntrustSampleItemStatusEnum
.
TEST
.
getDisplay
(),
FlowTypeEnum
.
BACK
.
getValue
(),
"检测项目原始记录退回"
,
LoginHelper
.
getAccount
());
return
true
;
}
private
String
getCellValue
(
XSSFRow
xssfRow
,
int
cellIndex
)
{
private
String
getCellValue
(
XSSFRow
xssfRow
,
int
cellIndex
)
{
XSSFCell
cell
=
xssfRow
.
getCell
(
cellIndex
);
XSSFCell
cell
=
xssfRow
.
getCell
(
cellIndex
);
String
value
=
HSSFWorkbookUtil
.
getJavaValue
(
cell
).
toString
();
String
value
=
HSSFWorkbookUtil
.
getJavaValue
(
cell
).
toString
();
...
@@ -1883,4 +2000,29 @@ public class EntrustSampleItemServiceImpl extends BaseServiceImpl<EntrustSampleI
...
@@ -1883,4 +2000,29 @@ public class EntrustSampleItemServiceImpl extends BaseServiceImpl<EntrustSampleI
}
}
return
baseMapper
.
updateSampleRetakeInfoByEntrustId
(
entrustId
);
return
baseMapper
.
updateSampleRetakeInfoByEntrustId
(
entrustId
);
}
}
class
TestInterceptor
implements
Interceptor
{
@Override
public
Response
intercept
(
Chain
chain
)
throws
IOException
{
Request
request
=
chain
.
request
();
String
mUrl
=
"https://www.baidu.com/"
;
String
url
=
request
.
url
().
toString
();
System
.
out
.
println
(
"url="
+
url
);
Response
response
=
null
;
if
(
url
.
equals
(
mUrl
))
{
String
responseString
=
"{\"message\":\"我是模拟的数据\"}"
;
//模拟的错误的返回值
response
=
new
Response
.
Builder
()
.
code
(
400
)
.
request
(
request
)
.
protocol
(
Protocol
.
HTTP_1_0
)
.
body
(
ResponseBody
.
create
(
MediaType
.
parse
(
"application/json"
),
responseString
.
getBytes
()))
.
addHeader
(
"content-type"
,
"application/json"
)
.
build
();
}
else
{
response
=
chain
.
proceed
(
request
);
}
return
response
;
}
}
}
}
src/main/java/com/patzn/cloud/service/lims/hmhj/service/impl/EntrustSamplePrepareServiceImpl.java
View file @
2a14ace5
...
@@ -58,7 +58,7 @@ public class EntrustSamplePrepareServiceImpl extends BaseServiceImpl<EntrustSamp
...
@@ -58,7 +58,7 @@ public class EntrustSamplePrepareServiceImpl extends BaseServiceImpl<EntrustSamp
public
Page
<
EntrustSamplePrepare
>
page
(
Page
<
EntrustSamplePrepare
>
page
,
EntrustSamplePrepare
entrustSamplePrepare
)
{
public
Page
<
EntrustSamplePrepare
>
page
(
Page
<
EntrustSamplePrepare
>
page
,
EntrustSamplePrepare
entrustSamplePrepare
)
{
Wrapper
wrapper
=
new
EntityWrapper
<>(
entrustSamplePrepare
);
Wrapper
wrapper
=
new
EntityWrapper
<>(
entrustSamplePrepare
);
return
this
.
page
(
page
,
wrapper
);
return
super
.
page
(
page
,
wrapper
);
}
}
@Override
@Override
...
...
src/main/resources/application-local.yml
View file @
2a14ace5
...
@@ -21,6 +21,11 @@ spring:
...
@@ -21,6 +21,11 @@ spring:
cloud
:
cloud
:
consul
:
consul
:
host
:
localhost
host
:
localhost
redis
:
database
:
0
host
:
meazty.fun
port
:
6379
password
:
rest123
mail
:
mail
:
host
:
smtp.163.com
host
:
smtp.163.com
username
:
ptlims_test@163.com
username
:
ptlims_test@163.com
...
...
src/main/resources/mapper/hmhj/EntrustMapper.xml
View file @
2a14ace5
...
@@ -128,7 +128,8 @@
...
@@ -128,7 +128,8 @@
<select
id=
"selectVOList"
resultType=
"com.patzn.cloud.service.hmhj.vo.EntrustVO"
>
<select
id=
"selectVOList"
resultType=
"com.patzn.cloud.service.hmhj.vo.EntrustVO"
>
with sample as (
with sample as (
SELECT
SELECT
s.company_id,s.entrust_id,max(s.sample_from) "sample_from"
s.company_id,s.entrust_id,max(s.sample_from) "sample_from",
(case when count(1) = sum(s.send_erp) then 1 else 0 end ) "send_erp"
from entrust_sample s where s.deleted = 0
from entrust_sample s where s.deleted = 0
<if
test=
"null != vo.sampleCode"
>
<if
test=
"null != vo.sampleCode"
>
and s.code like concat('%',#{vo.sampleCode},'%')
and s.code like concat('%',#{vo.sampleCode},'%')
...
...
src/main/resources/mapper/hmhj/EntrustSampleItemIndexMapper.xml
View file @
2a14ace5
...
@@ -88,4 +88,35 @@
...
@@ -88,4 +88,35 @@
and i.id = #{vo.itemId}
and i.id = #{vo.itemId}
</if>
</if>
</select>
</select>
<select
id=
"selectSampleItemIndex"
resultType=
"com.patzn.cloud.service.hmhj.vo.SampleItemVO"
>
SELECT
s.NAME "sample_name",
s.code "sample_code",
max(s.sample_grading) "brand",
max(i.test_time) "test_time",
max(r.report_checker) "report_checker",
max(r.report_issuer) "report_issuer",
max(r.quality_inspector) "quality_inspector",
max(case when ii.name = '原铝Fe' then ii.test_value else null end) "fe",
max(case when ii.name = '原铝Si' then ii.test_value else null end) "si",
max(case when ii.name = '原铝Cu' then ii.test_value else null end) "cu",
max(case when ii.name = '原铝Ga' then ii.test_value else null end) "ga",
max(case when ii.name = '原铝Mg' then ii.test_value else null end) "mg",
max(case when ii.name = '原铝Zn' then ii.test_value else null end) "zn",
max(case when ii.name = '原铝Mn' then ii.test_value else null end) "mn",
max(case when ii.name = '原铝Ni' then ii.test_value else null end) "ni",
max(case when ii.name = '原铝V' then ii.test_value else null end) "v"
FROM
entrust_sample_item_index ii
JOIN entrust_sample_item i ON i.ID = ii.entrust_sample_item_id AND i.deleted = 0
JOIN entrust_sample s ON s.ID = i.entrust_sample_id AND s.deleted = 0
LEFT JOIN entrust_report r ON r.entrust_id = s.entrust_id AND r.deleted = 0
WHERE ii.deleted = 0
-- AND s.NAME IN ('原铝', '铝成品')
<foreach
collection=
"sampleIds"
index=
"index"
item=
"sampleId"
open=
" and s.id in ("
separator=
","
close=
")"
>
#{sampleId}
</foreach>
GROUP BY s.name,s.code
</select>
</mapper>
</mapper>
src/main/resources/mapper/hmhj/EntrustSampleItemMapper.xml
View file @
2a14ace5
...
@@ -767,8 +767,8 @@
...
@@ -767,8 +767,8 @@
LEFT JOIN original_record r on r.id = l.record_id and r.deleted = 0
LEFT JOIN original_record r on r.id = l.record_id and r.deleted = 0
WHERE i.deleted = 0 and i.company_id = #{vo.companyId}
WHERE i.deleted = 0 and i.company_id = #{vo.companyId}
<if
test=
"null != vo.nameList"
>
<if
test=
"null != vo.nameList"
>
<foreach
collection=
"vo.nameList"
item=
"name"
open=
"AND
( i.name "
close=
")"
separator=
" OR i.name
"
>
<foreach
collection=
"vo.nameList"
item=
"name"
open=
"AND
i.name in ("
close=
")"
separator=
",
"
>
LIKE CONCAT ('%',#{name},'%')
#{name}
</foreach>
</foreach>
</if>
</if>
<if
test=
"null != vo.standard"
>
<if
test=
"null != vo.standard"
>
...
...
src/test/java/resources/db_sql/hmhj/v176/20220217新增字段.sql
0 → 100644
View file @
2a14ace5
/** created by meazty on 2022/2/17 23:13 **/
/** created by meazty on 2022/2/17 23:13 **/
-- 委托样品 --
ALTER
TABLE
"public"
.
"entrust_sample"
ADD
COLUMN
"send_erp"
int2
default
0
;
COMMENT
ON
COLUMN
"public"
.
"entrust_sample"
.
"send_erp"
IS
'是否发生ERP数据【0:否,1:是】'
;
-- 原始记录模板 --
ALTER
TABLE
"public"
.
"original_template"
ADD
COLUMN
"tablet_analysis"
int2
default
0
;
COMMENT
ON
COLUMN
"public"
.
"original_template"
.
"tablet_analysis"
IS
'压片原始记录【0:否,1:是】'
;
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