Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
P
patzn-cloud-service-soil
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-soil
Commits
fe1a31f5
Commit
fe1a31f5
authored
Mar 19, 2021
by
zhangmengqi
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'dev'
parents
8809c043
0f82eeec
Show whitespace changes
Inline
Side-by-side
Showing
22 changed files
with
729 additions
and
9 deletions
+729
-9
build.gradle
build.gradle
+1
-0
WuCollectHandle.java
...zn/cloud/service/lims/collect/handle/WuCollectHandle.java
+97
-0
CollectUtil.java
...java/com/patzn/cloud/service/lims/common/CollectUtil.java
+194
-2
MailService.java
...n/java/com/patzn/cloud/service/lims/mail/MailService.java
+11
-0
MailServiceImpl.java
...va/com/patzn/cloud/service/lims/mail/MailServiceImpl.java
+57
-0
SoilEnvMonitorController.java
...ervice/lims/soil/controller/SoilEnvMonitorController.java
+1
-1
SoilItemMapper.java
.../patzn/cloud/service/lims/soil/mapper/SoilItemMapper.java
+3
-0
ISoilEnvMonitorService.java
...oud/service/lims/soil/service/ISoilEnvMonitorService.java
+2
-0
ISoilExperimentService.java
...oud/service/lims/soil/service/ISoilExperimentService.java
+2
-0
ISoilItemService.java
...tzn/cloud/service/lims/soil/service/ISoilItemService.java
+3
-0
SoilAloneSampleServiceImpl.java
...ce/lims/soil/service/impl/SoilAloneSampleServiceImpl.java
+1
-0
SoilEnvMonitorServiceImpl.java
...ice/lims/soil/service/impl/SoilEnvMonitorServiceImpl.java
+106
-0
SoilExperimentRelEquipServiceImpl.java
.../soil/service/impl/SoilExperimentRelEquipServiceImpl.java
+2
-1
SoilExperimentServiceImpl.java
...ice/lims/soil/service/impl/SoilExperimentServiceImpl.java
+163
-5
SoilItemServiceImpl.java
...d/service/lims/soil/service/impl/SoilItemServiceImpl.java
+6
-0
SoilSampleServiceImpl.java
...service/lims/soil/service/impl/SoilSampleServiceImpl.java
+9
-0
application-dev.yml
src/main/resources/application-dev.yml
+14
-0
application-pro.yml
src/main/resources/application-pro.yml
+14
-0
application-zhyf.yml
src/main/resources/application-zhyf.yml
+14
-0
SoilAloneSampleMapper.xml
src/main/resources/mapper/soil/SoilAloneSampleMapper.xml
+4
-0
SoilExperimentMapper.xml
src/main/resources/mapper/soil/SoilExperimentMapper.xml
+1
-0
SoilItemMapper.xml
src/main/resources/mapper/soil/SoilItemMapper.xml
+24
-0
No files found.
build.gradle
View file @
fe1a31f5
...
...
@@ -119,6 +119,7 @@ dependencies {
compile
(
"com.google.zxing:core:3.3.3"
)
compile
(
"org.samba.jcifs:jcifs:1.2.9"
)
compile
(
"com.google.zxing:javase:3.3.3"
)
compile
(
"org.springframework.boot:spring-boot-starter-mail:2.4.3"
)
compile
(
"org.rxtx:rxtx:2.1.7"
)
compile
(
"com.qcloud:cos_api:5.2.4"
)
{
exclude
module:
'slf4j-log4j12'
...
...
src/main/java/com/patzn/cloud/service/lims/collect/handle/WuCollectHandle.java
0 → 100644
View file @
fe1a31f5
package
com
.
patzn
.
cloud
.
service
.
lims
.
collect
.
handle
;
import
com.patzn.cloud.service.lims.collect.core.CollectDataType
;
import
com.patzn.cloud.service.lims.collect.core.ICollectHandler
;
import
com.patzn.cloud.service.lims.common.StringHandleUtils
;
import
com.patzn.cloud.service.lims.soil.service.ISoilExperimentService
;
import
jcifs.smb.SmbFile
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
public
class
WuCollectHandle
implements
ICollectHandler
{
protected
final
Logger
logger
=
LoggerFactory
.
getLogger
(
WuCollectHandle
.
class
);
@Override
public
Boolean
process
(
CollectDataType
request
,
ISoilExperimentService
soilExperimentService
)
{
String
type
=
request
.
getType
();
String
collectionAddress
=
request
.
getCollectionAddress
();
String
acquisitionCommand
=
request
.
getAcquisitionCommand
();
String
entrustCode
=
request
.
getEntrustCode
();
String
sampleCode
=
request
.
getSampleCode
();
String
expName
=
request
.
getExperiment
();
String
siteNo
=
request
.
getSiteNo
();
String
checkNameSiteNo
=
""
;
String
checkNameSampleCode
=
""
;
if
(!
"文件获取"
.
equals
(
type
)){
return
null
;
}
if
(!
"界限含水率联合测定试验"
.
equals
(
acquisitionCommand
)){
return
null
;
}
SmbFile
[]
list
=
null
;
try
{
list
=
getShareFiles
(
collectionAddress
+
entrustCode
+
"/"
);
}
catch
(
Exception
e
){
logger
.
error
(
"PngReportHandle.process失败,原因:"
+
e
.
getMessage
());
e
.
printStackTrace
();
}
for
(
SmbFile
smbFile:
list
)
{
String
name
=
StringHandleUtils
.
getFileNameNoEx
(
smbFile
.
getName
());
name
=
name
.
replace
(
request
.
getExperiment
(),
""
);
if
(
smbFile
.
getName
().
contains
(
".txt"
)){
soilExperimentService
.
parseWuxingTxt
(
smbFile
,
request
);
}
if
(!
name
.
equals
(
checkNameSiteNo
)&&!
name
.
equals
(
checkNameSampleCode
)){
continue
;
}
if
(
smbFile
.
getName
().
contains
(
".png"
)||
smbFile
.
getName
().
contains
(
".bmp"
)){
soilExperimentService
.
uploadCollectPng
(
smbFile
,
request
);
}
}
return
true
;
}
public
static
SmbFile
[]
getShareFiles
(
String
url
)
throws
Exception
{
SmbFile
file
=
new
SmbFile
(
url
);
if
(
file
.
exists
()){
SmbFile
[]
files
=
file
.
listFiles
();
return
files
;
}
return
null
;
}
public
static
void
main
(
String
[]
args
)
{
try
{
SmbFile
smbFile
=
new
SmbFile
(
"smb://administrator:www.163.com@192.168.0.115/土工试验数据/202010020/"
);
SmbFile
[]
smbFiles
=
smbFile
.
listFiles
();
for
(
SmbFile
file:
smbFiles
)
{
String
name
=
StringHandleUtils
.
getFileNameNoEx
(
file
.
getName
());
if
(!
name
.
equals
(
"YP202010426"
)){
continue
;
}
if
(
file
.
getName
().
contains
(
".png"
)){
}
else
if
(
file
.
getName
().
contains
(
".txt"
)){
// txt2String(file.getInputStream());
System
.
out
.
println
(
file
.
getName
());
}
}
System
.
out
.
println
(
smbFile
);
}
catch
(
Exception
e
){
e
.
printStackTrace
();
}
}
}
src/main/java/com/patzn/cloud/service/lims/common/CollectUtil.java
View file @
fe1a31f5
...
...
@@ -3,6 +3,7 @@ package com.patzn.cloud.service.lims.common;
import
com.baomidou.mybatisplus.toolkit.CollectionUtils
;
import
com.patzn.cloud.service.lims.collect.statics.StaticsData
;
import
com.patzn.cloud.service.soil.entity.SoilExperimentCollectData
;
import
com.patzn.cloud.service.soil.vo.SoilExperimentCollectDataVO
;
import
org.apache.commons.lang3.StringUtils
;
import
java.io.*
;
...
...
@@ -12,16 +13,207 @@ import java.util.List;
public
class
CollectUtil
{
public
static
void
main
(
String
[]
args
)
{
File
file
=
new
File
(
"D://
固结S-5
.txt"
);
File
file
=
new
File
(
"D://
界限含水率(联合测定)S-1
.txt"
);
try
{
FileInputStream
io
=
new
FileInputStream
(
file
);
txt2String
(
io
);
txt2String
Wuxing
(
io
);
}
catch
(
Exception
e
){
}
}
public
static
List
<
SoilExperimentCollectDataVO
>
txt2StringWuxing
(
InputStream
io
){
StringBuilder
result
=
new
StringBuilder
();
List
<
SoilExperimentCollectDataVO
>
dataList
=
new
ArrayList
<>();
try
{
InputStreamReader
inputReader
=
new
InputStreamReader
(
io
,
"GBK"
);
BufferedReader
brCheck
=
new
BufferedReader
(
inputReader
);
//构造一个BufferedReader类来读取文件
BufferedReader
br
=
new
BufferedReader
(
inputReader
);
//构造一个BufferedReader类来读取文件
String
s
=
null
;
StringBuffer
sbAll
=
new
StringBuffer
();
List
<
String
>
allStringList
=
new
ArrayList
<>();
String
gcbh
=
""
;
String
sampleCode
=
""
;
List
<
String
>
listOne
=
new
ArrayList
<>();
List
<
String
>
listTwo
=
new
ArrayList
<>();
List
<
String
>
listThree
=
new
ArrayList
<>();
List
<
String
>
listFour
=
new
ArrayList
<>();
List
<
String
>
listFive
=
new
ArrayList
<>();
while
((
s
=
brCheck
.
readLine
())!=
null
){
s
=
s
.
replace
(
"━"
,
""
).
replace
(
"┏"
,
""
).
replace
(
"╋"
,
""
).
replace
(
"┳"
,
""
)
.
replace
(
"┓"
,
""
).
replace
(
"┣"
,
""
).
replace
(
"┫"
,
""
).
replace
(
"┻"
,
""
)
.
replace
(
"┗"
,
""
).
replace
(
"┛"
,
""
);
if
(
s
.
trim
().
equals
(
" "
)){
continue
;
}
if
(
s
.
trim
().
equals
(
""
)){
continue
;
}
if
(
s
.
trim
().
equals
(
"┃"
)){
continue
;
}
if
(
s
.
contains
(
"PS48"
)){
continue
;
}
if
(
s
.
contains
(
"PS24"
)){
continue
;
}
s
=
s
.
replace
(
" "
,
""
);
System
.
out
.
println
(
s
);
if
(
s
.
contains
(
"工程编号"
)){
String
[]
gcbhs
=
s
.
split
(
":"
);
if
(
gcbhs
.
length
>
1
){
gcbh
=
gcbhs
[
1
].
trim
();
}
}
else
if
(
s
.
contains
(
"试样编号"
)){
if
(!
sampleCode
.
equals
(
""
)&&!
""
.
equals
(
gcbh
)){
System
.
out
.
println
(
sampleCode
);
if
(
listTwo
.
size
()>
0
){
SoilExperimentCollectDataVO
collectData
=
new
SoilExperimentCollectDataVO
();
collectData
.
setName
(
"液限含水率"
);
collectData
.
setTestValue
(
listTwo
.
get
(
listTwo
.
size
()-
1
));
collectData
.
setEntrustCode
(
gcbh
);
collectData
.
setSiteNo
(
sampleCode
);
collectData
.
setExpName
(
"界限含水率"
);
dataList
.
add
(
collectData
);
}
if
(
listFour
.
size
()>
0
){
SoilExperimentCollectDataVO
collectData
=
new
SoilExperimentCollectDataVO
();
collectData
.
setName
(
"塑限含水率"
);
collectData
.
setTestValue
(
listFour
.
get
(
listFour
.
size
()-
1
));
collectData
.
setEntrustCode
(
gcbh
);
collectData
.
setSiteNo
(
sampleCode
);
collectData
.
setExpName
(
"界限含水率"
);
dataList
.
add
(
collectData
);
}
System
.
out
.
println
(
listOne
);
System
.
out
.
println
(
listTwo
);
System
.
out
.
println
(
listThree
);
System
.
out
.
println
(
listFour
);
System
.
out
.
println
(
listFive
);
}
String
[]
sampleCodes
=
s
.
split
(
"┃"
);
if
(
sampleCodes
.
length
>
1
){
for
(
String
code
:
sampleCodes
)
{
if
(
code
.
contains
(
"试样编号"
)){
String
[]
codes
=
code
.
split
(
":"
);
if
(
codes
.
length
>
1
){
sampleCode
=
codes
[
1
].
trim
();
}
else
{
sampleCode
=
""
;
}
}
}
}
}
else
if
(
s
.
contains
(
"锥深"
)){
listOne
.
clear
();
String
[]
array
=
s
.
split
(
"┃"
);
for
(
String
a
:
array
)
{
a
=
a
.
replace
(
" "
,
""
);
if
(!
a
.
equals
(
""
)){
listOne
.
add
(
a
);
}
}
}
else
if
(
s
.
contains
(
"盒号"
)){
listTwo
.
clear
();
String
[]
array
=
s
.
split
(
"┃"
);
for
(
String
a
:
array
)
{
a
=
a
.
replace
(
" "
,
""
);
if
(!
a
.
equals
(
""
)){
listTwo
.
add
(
a
);
}
}
}
else
if
(
s
.
contains
(
"湿土重"
)){
listThree
.
clear
();
String
[]
array
=
s
.
split
(
"┃"
);
for
(
String
a
:
array
)
{
a
=
a
.
replace
(
" "
,
""
);
if
(!
a
.
equals
(
""
)){
listThree
.
add
(
a
);
}
}
}
else
if
(
s
.
contains
(
"干土重"
)){
listFour
.
clear
();
String
[]
array
=
s
.
split
(
"┃"
);
for
(
String
a
:
array
)
{
a
=
a
.
replace
(
" "
,
""
);
if
(!
a
.
equals
(
""
)){
listFour
.
add
(
a
);
}
}
}
else
if
(
s
.
contains
(
"含水率"
)){
listFive
.
clear
();
String
[]
array
=
s
.
split
(
"┃"
);
for
(
String
a
:
array
)
{
a
=
a
.
replace
(
" "
,
""
);
if
(!
a
.
equals
(
""
)){
listFive
.
add
(
a
);
}
}
}
allStringList
.
add
(
s
);
String
content
=
s
.
replace
(
" "
,
""
);
sbAll
.
append
(
content
);
}
System
.
out
.
println
();
System
.
out
.
println
(
sampleCode
);
if
(!
""
.
equals
(
sampleCode
)&&!
""
.
equals
(
gcbh
)){
if
(
listTwo
.
size
()>
0
){
SoilExperimentCollectDataVO
collectData
=
new
SoilExperimentCollectDataVO
();
collectData
.
setName
(
"液限含水率"
);
collectData
.
setTestValue
(
listTwo
.
get
(
listTwo
.
size
()-
1
));
collectData
.
setEntrustCode
(
gcbh
);
collectData
.
setSiteNo
(
sampleCode
);
collectData
.
setExpName
(
"界限含水率"
);
dataList
.
add
(
collectData
);
}
if
(
listFour
.
size
()>
0
){
SoilExperimentCollectDataVO
collectData
=
new
SoilExperimentCollectDataVO
();
collectData
.
setName
(
"塑限含水率"
);
collectData
.
setTestValue
(
listFour
.
get
(
listFour
.
size
()-
1
));
collectData
.
setEntrustCode
(
gcbh
);
collectData
.
setSiteNo
(
sampleCode
);
collectData
.
setExpName
(
"界限含水率"
);
dataList
.
add
(
collectData
);
}
System
.
out
.
println
(
listOne
);
System
.
out
.
println
(
listTwo
);
System
.
out
.
println
(
listThree
);
System
.
out
.
println
(
listFour
);
System
.
out
.
println
(
listFive
);
}
}
catch
(
Exception
e
){
}
return
dataList
;
}
public
static
List
<
SoilExperimentCollectData
>
txt2String
(
InputStream
io
){
StringBuilder
result
=
new
StringBuilder
();
...
...
src/main/java/com/patzn/cloud/service/lims/mail/MailService.java
0 → 100644
View file @
fe1a31f5
package
com
.
patzn
.
cloud
.
service
.
lims
.
mail
;
public
interface
MailService
{
/**
* 发送简单邮件
* @param to
* @param subject
* @param content
*/
void
sendMail
(
String
to
,
String
subject
,
String
content
);
}
src/main/java/com/patzn/cloud/service/lims/mail/MailServiceImpl.java
0 → 100644
View file @
fe1a31f5
package
com
.
patzn
.
cloud
.
service
.
lims
.
mail
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.mail.SimpleMailMessage
;
import
org.springframework.mail.javamail.JavaMailSender
;
import
org.springframework.stereotype.Service
;
/**
*
* 邮件服务类
* Created by ASUS on 2018/5/5
*
* @Authod Grey Wolf
*/
@Service
(
"mailService"
)
public
class
MailServiceImpl
implements
MailService
{
@Autowired
private
JavaMailSender
javaMailSender
;
//读取application.properties的内容
@Value
(
"${spring.mail.username}"
)
private
String
from
;
/**
* 发送简单邮件
* @param to 接受者
* @param subject 主题
* @param content 内容
*/
@Override
public
void
sendMail
(
String
to
,
String
subject
,
String
content
)
{
SimpleMailMessage
mailMessage
=
new
SimpleMailMessage
();
mailMessage
.
setFrom
(
from
);
//发起者
// mailMessage.setTo(to);//接受者
//如果发给多个人的:
String
[]
toArray
=
to
.
split
(
","
);
mailMessage
.
setTo
(
toArray
);
mailMessage
.
setSubject
(
subject
);
mailMessage
.
setText
(
content
);
try
{
javaMailSender
.
send
(
mailMessage
);
System
.
out
.
println
(
"发送简单邮件"
);
}
catch
(
Exception
e
){
e
.
printStackTrace
();
System
.
out
.
println
(
"发送简单邮件失败"
);
}
}
}
\ No newline at end of file
src/main/java/com/patzn/cloud/service/lims/soil/controller/SoilEnvMonitorController.java
View file @
fe1a31f5
...
...
@@ -70,7 +70,7 @@ public class SoilEnvMonitorController extends ServiceController {
@ApiOperation
(
"添加"
)
@PostMapping
(
"/"
)
public
RestResult
<
Boolean
>
add
(
SoilEnvMonitor
soilEnvMonitor
)
{
return
success
(
soilEnvMonitorService
.
save
(
soilEnvMonitor
));
return
success
(
soilEnvMonitorService
.
save
SoilEnvMonitor
(
soilEnvMonitor
));
}
@ApiOperation
(
"根据 ids 删除"
)
...
...
src/main/java/com/patzn/cloud/service/lims/soil/mapper/SoilItemMapper.java
View file @
fe1a31f5
...
...
@@ -2,6 +2,7 @@ package com.patzn.cloud.service.lims.soil.mapper;
import
com.baomidou.mybatisplus.mapper.BaseMapper
;
import
com.patzn.cloud.service.soil.entity.SoilItem
;
import
com.patzn.cloud.service.soil.enums.SoilExpStatusEnum
;
import
com.patzn.cloud.service.soil.vo.SoilItemVO
;
import
org.apache.ibatis.annotations.Param
;
...
...
@@ -20,4 +21,6 @@ public interface SoilItemMapper extends BaseMapper<SoilItem> {
List
<
SoilItemVO
>
listVOByExpIds
(
@Param
(
"expIds"
)
List
<
Long
>
expIdsList
);
List
<
SoilItemVO
>
listVOByExpSampleIds
(
@Param
(
"sampleIds"
)
List
<
Long
>
sampleIds
);
List
<
SoilItemVO
>
selectForTestPage
(
@Param
(
"sampleIds"
)
List
<
Long
>
sampleIdsList
,
@Param
(
"status"
)
SoilExpStatusEnum
statusEnum
);
}
src/main/java/com/patzn/cloud/service/lims/soil/service/ISoilEnvMonitorService.java
View file @
fe1a31f5
...
...
@@ -17,4 +17,6 @@ public interface ISoilEnvMonitorService extends IBaseService<SoilEnvMonitor> {
Page
<
SoilEnvMonitor
>
page
(
Page
<
SoilEnvMonitor
>
page
,
SoilEnvMonitor
soilEnvMonitor
);
boolean
removeByIds
(
List
<
Long
>
ids
);
boolean
saveSoilEnvMonitor
(
SoilEnvMonitor
soilEnvMonitor
);
}
src/main/java/com/patzn/cloud/service/lims/soil/service/ISoilExperimentService.java
View file @
fe1a31f5
...
...
@@ -75,6 +75,8 @@ public interface ISoilExperimentService extends IBaseService<SoilExperiment> {
boolean
parseTxt
(
SmbFile
smbFile
,
CollectDataType
request
);
boolean
parseWuxingTxt
(
SmbFile
smbFile
,
CollectDataType
request
);
boolean
importExperiments
(
Long
[]
ids
,
Long
[]
aptitudeIds
,
Account
account
);
boolean
changeExpAllot
(
Long
[]
ids
,
String
user
,
Long
userId
,
Account
account
);
...
...
src/main/java/com/patzn/cloud/service/lims/soil/service/ISoilItemService.java
View file @
fe1a31f5
...
...
@@ -5,6 +5,7 @@ import java.util.List;
import
com.baomidou.mybatisplus.plugins.Page
;
import
com.patzn.cloud.commons.service.IBaseService
;
import
com.patzn.cloud.service.soil.entity.SoilItem
;
import
com.patzn.cloud.service.soil.enums.SoilExpStatusEnum
;
import
com.patzn.cloud.service.soil.vo.SoilItemVO
;
/**
...
...
@@ -26,4 +27,6 @@ public interface ISoilItemService extends IBaseService<SoilItem> {
List
<
SoilItemVO
>
listVOByExpIds
(
List
<
Long
>
expIdsList
);
List
<
SoilItemVO
>
listVOByExpSampleIds
(
List
<
Long
>
sampleIdList
);
List
<
SoilItemVO
>
listForTestPage
(
List
<
Long
>
sampleIdsList
,
SoilExpStatusEnum
end
);
}
src/main/java/com/patzn/cloud/service/lims/soil/service/impl/SoilAloneSampleServiceImpl.java
View file @
fe1a31f5
...
...
@@ -72,6 +72,7 @@ public class SoilAloneSampleServiceImpl extends BaseServiceImpl<SoilAloneSampleM
if
(
CollectionUtils
.
isNotEmpty
(
soilAloneSample
.
getStatusList
())){
wrapper
.
in
(
"status"
,
soilAloneSample
.
getStatusList
());
}
wrapper
.
orderBy
(
"ctime"
,
false
);
return
this
.
page
(
page
,
wrapper
);
}
...
...
src/main/java/com/patzn/cloud/service/lims/soil/service/impl/SoilEnvMonitorServiceImpl.java
View file @
fe1a31f5
package
com
.
patzn
.
cloud
.
service
.
lims
.
soil
.
service
.
impl
;
import
com.baomidou.mybatisplus.mapper.Condition
;
import
com.patzn.cloud.commons.api.RestAssert
;
import
com.patzn.cloud.service.lims.mail.MailService
;
import
com.patzn.cloud.service.lims.soil.mapper.SoilEnvMonitorMapper
;
import
com.patzn.cloud.service.lims.soil.service.ISoilEnvMonitorService
;
import
com.patzn.cloud.commons.service.impl.BaseServiceImpl
;
import
com.patzn.cloud.service.lims.soil.service.ISoilEnvMonitorWarningService
;
import
com.patzn.cloud.service.soil.entity.SoilEnvMonitor
;
import
com.patzn.cloud.service.soil.entity.SoilEnvMonitorWarning
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
com.baomidou.mybatisplus.mapper.EntityWrapper
;
import
com.baomidou.mybatisplus.mapper.Wrapper
;
import
com.baomidou.mybatisplus.plugins.Page
;
import
java.math.BigDecimal
;
import
java.util.List
;
/**
...
...
@@ -20,6 +28,14 @@ import java.util.List;
@Service
public
class
SoilEnvMonitorServiceImpl
extends
BaseServiceImpl
<
SoilEnvMonitorMapper
,
SoilEnvMonitor
>
implements
ISoilEnvMonitorService
{
@Autowired
private
ISoilEnvMonitorWarningService
soilEnvMonitorWarningService
;
@Autowired
private
MailService
mailService
;
@Override
public
Page
<
SoilEnvMonitor
>
page
(
Page
<
SoilEnvMonitor
>
page
,
SoilEnvMonitor
soilEnvMonitor
)
{
Wrapper
wrapper
=
new
EntityWrapper
<>(
soilEnvMonitor
);
...
...
@@ -31,4 +47,94 @@ public class SoilEnvMonitorServiceImpl extends BaseServiceImpl<SoilEnvMonitorMap
public
boolean
removeByIds
(
List
<
Long
>
ids
)
{
return
baseMapper
.
deleteBatchIds
(
ids
)
>
0
;
}
@Override
public
boolean
saveSoilEnvMonitor
(
SoilEnvMonitor
soilEnvMonitor
)
{
RestAssert
.
fail
(
StringUtils
.
isBlank
(
soilEnvMonitor
.
getLocation
()),
"位置信息不需要"
);
RestAssert
.
fail
(
StringUtils
.
isBlank
(
soilEnvMonitor
.
getTemperature
()),
"请输入温度"
);
RestAssert
.
fail
(
StringUtils
.
isBlank
(
soilEnvMonitor
.
getHumidity
()),
"请输入湿度"
);
if
(
save
(
soilEnvMonitor
)){
String
temperature
=
soilEnvMonitor
.
getTemperature
();
String
humidity
=
soilEnvMonitor
.
getHumidity
();
BigDecimal
decimalD
=
null
;
BigDecimal
humidityD
=
null
;
try
{
decimalD
=
new
BigDecimal
(
temperature
);
humidityD
=
new
BigDecimal
(
humidity
);
}
catch
(
Exception
e
){
return
true
;
}
List
<
SoilEnvMonitorWarning
>
warningList
=
soilEnvMonitorWarningService
.
list
(
Condition
.
create
());
for
(
SoilEnvMonitorWarning
soilEnvMonitorWarning:
warningList
)
{
if
(
"温度"
.
equals
(
soilEnvMonitorWarning
.
getWarningType
())){
String
getLowerLimit
=
soilEnvMonitorWarning
.
getLowerLimit
();
String
getUpperLimit
=
soilEnvMonitorWarning
.
getUpperLimit
();
BigDecimal
getLowerLimitD
=
null
;
BigDecimal
getUpperLimitD
=
null
;
try
{
getLowerLimitD
=
new
BigDecimal
(
getLowerLimit
);
getUpperLimitD
=
new
BigDecimal
(
getUpperLimit
);
if
(
decimalD
.
compareTo
(
getLowerLimitD
)<
0
){
//下限需要发邮件
if
(
StringUtils
.
isNotBlank
(
soilEnvMonitorWarning
.
getEmail
())){
mailService
.
sendMail
(
soilEnvMonitorWarning
.
getEmail
(),
"温度低于下限"
,
"您实验室位置:"
+
soilEnvMonitor
.
getLocation
()+
"的温度过低,低于温度下限了,请确认!"
);
}
}
if
(
decimalD
.
compareTo
(
getUpperLimitD
)>
0
){
//下限需要发邮件
if
(
StringUtils
.
isNotBlank
(
soilEnvMonitorWarning
.
getEmail
())){
mailService
.
sendMail
(
soilEnvMonitorWarning
.
getEmail
(),
"温度高于上限"
,
"您实验室位置:"
+
soilEnvMonitor
.
getLocation
()+
"的温度过高,高于温度上限了,请确认!"
);
}
}
}
catch
(
Exception
e
){
continue
;
}
}
else
if
(
"湿度"
.
equals
(
soilEnvMonitorWarning
.
getWarningType
())){
String
getLowerLimit
=
soilEnvMonitorWarning
.
getLowerLimit
();
String
getUpperLimit
=
soilEnvMonitorWarning
.
getUpperLimit
();
BigDecimal
getLowerLimitD
=
null
;
BigDecimal
getUpperLimitD
=
null
;
try
{
getLowerLimitD
=
new
BigDecimal
(
getLowerLimit
);
getUpperLimitD
=
new
BigDecimal
(
getUpperLimit
);
if
(
humidityD
.
compareTo
(
getLowerLimitD
)<
0
){
//下限需要发邮件
if
(
StringUtils
.
isNotBlank
(
soilEnvMonitorWarning
.
getEmail
())){
mailService
.
sendMail
(
soilEnvMonitorWarning
.
getEmail
(),
"湿度低于下限"
,
"您实验室位置:"
+
soilEnvMonitor
.
getLocation
()+
"的湿度过低,低于湿度下限了,请确认!"
);
}
}
if
(
humidityD
.
compareTo
(
getUpperLimitD
)>
0
){
//下限需要发邮件
if
(
StringUtils
.
isNotBlank
(
soilEnvMonitorWarning
.
getEmail
())){
mailService
.
sendMail
(
soilEnvMonitorWarning
.
getEmail
(),
"湿度高于上限"
,
"您实验室位置:"
+
soilEnvMonitor
.
getLocation
()+
"的湿度过高,高于湿度上限了,请确认!"
);
}
}
}
catch
(
Exception
e
){
continue
;
}
}
}
}
return
true
;
}
}
src/main/java/com/patzn/cloud/service/lims/soil/service/impl/SoilExperimentRelEquipServiceImpl.java
View file @
fe1a31f5
...
...
@@ -8,6 +8,7 @@ import com.patzn.cloud.service.lims.collect.chain.CollectHandlerChain;
import
com.patzn.cloud.service.lims.collect.core.CollectDataType
;
import
com.patzn.cloud.service.lims.collect.handle.GdsFileHandle
;
import
com.patzn.cloud.service.lims.collect.handle.PngReportHandle
;
import
com.patzn.cloud.service.lims.collect.handle.WuCollectHandle
;
import
com.patzn.cloud.service.lims.soil.mapper.SoilExperimentRelEquipMapper
;
import
com.patzn.cloud.service.lims.soil.service.ISoilExperimentRelEquipService
;
import
com.patzn.cloud.commons.service.impl.BaseServiceImpl
;
...
...
@@ -51,7 +52,6 @@ public class SoilExperimentRelEquipServiceImpl extends BaseServiceImpl<SoilExper
return
baseMapper
.
deleteBatchIds
(
ids
)
>
0
;
}
@Transactional
(
rollbackFor
=
Exception
.
class
)
@Override
public
boolean
addExpEquip
(
SoilExperimentRelEquipDTO
equipDTO
,
Account
account
)
{
RestAssert
.
fail
(
null
==
equipDTO
,
"数据有误"
);
...
...
@@ -106,6 +106,7 @@ public class SoilExperimentRelEquipServiceImpl extends BaseServiceImpl<SoilExper
}
CollectHandlerChain
chain
=
new
CollectHandlerChain
();
chain
.
addHandler
(
new
PngReportHandle
());
chain
.
addHandler
(
new
WuCollectHandle
());
chain
.
addHandler
(
new
GdsFileHandle
());
for
(
SoilExperimentRelEquip
equip:
saveRelEquipList
)
{
SoilExperimentVO
experimentVO
=
expMap
.
get
(
equip
.
getExpId
());
...
...
src/main/java/com/patzn/cloud/service/lims/soil/service/impl/SoilExperimentServiceImpl.java
View file @
fe1a31f5
...
...
@@ -42,10 +42,7 @@ import com.patzn.cloud.service.soil.enums.SoilEntrustStatusEnum;
import
com.patzn.cloud.service.soil.enums.SoilExpStatusEnum
;
import
com.patzn.cloud.service.soil.enums.SoilSampleStatusEnum
;
import
com.patzn.cloud.service.soil.statistics.SoilEntrustItemNumVO
;
import
com.patzn.cloud.service.soil.vo.SoilExperimentVO
;
import
com.patzn.cloud.service.soil.vo.SoilItemVO
;
import
com.patzn.cloud.service.soil.vo.SoilSampleVO
;
import
com.patzn.cloud.service.soil.vo.SoilUserVO
;
import
com.patzn.cloud.service.soil.vo.*
;
import
jcifs.smb.SmbFile
;
import
net.coobird.thumbnailator.Thumbnails
;
import
org.apache.commons.collections4.ListUtils
;
...
...
@@ -2715,9 +2712,19 @@ public class SoilExperimentServiceImpl extends BaseServiceImpl<SoilExperimentMap
if
(
CollectionUtils
.
isNotEmpty
(
dataList
)){
List
<
SoilItem
>
saveSoilItemList
=
new
ArrayList
<>();
List
<
SoilItem
>
updateSoilItemList
=
new
ArrayList
<>();
String
testMethod
=
null
;
List
<
SoilItem
>
soilItems
=
soilItemService
.
list
(
Condition
.
create
().
eq
(
"experiment_id"
,
request
.
getExpId
()));
Map
<
String
,
SoilItem
>
soilItemMap
=
new
HashMap
<>();
for
(
SoilItem
item
:
soilItems
)
{
soilItemMap
.
put
(
item
.
getExperimentId
()+
item
.
getName
(),
item
);
}
for
(
SoilExperimentCollectData
collectData:
dataList
)
{
collectData
.
setExpId
(
request
.
getExpId
());
if
(
"试验方法"
.
equals
(
collectData
.
getName
())){
...
...
@@ -2733,12 +2740,20 @@ public class SoilExperimentServiceImpl extends BaseServiceImpl<SoilExperimentMap
item
.
setTestValue
(
collectData
.
getTestValue
());
item
.
setExperimentId
(
request
.
getExpId
());
item
.
setUnit
(
collectData
.
getUnit
());
if
(
null
==
soilItemMap
.
get
(
item
.
getExperimentId
()+
item
.
getName
())){
saveSoilItemList
.
add
(
item
);
}
else
{
item
.
setId
(
soilItemMap
.
get
(
item
.
getExperimentId
()+
item
.
getName
()).
getId
());
updateSoilItemList
.
add
(
item
);
}
}
if
(
CollectionUtils
.
isNotEmpty
(
saveSoilItemList
)){
soilItemService
.
saveBatch
(
saveSoilItemList
);
}
if
(
CollectionUtils
.
isNotEmpty
(
updateSoilItemList
)){
soilItemService
.
updateBatchById
(
updateSoilItemList
);
}
if
(
StringUtils
.
isNotBlank
(
testMethod
)){
SoilExperiment
experiment
=
new
SoilExperiment
();
experiment
.
setTestMethod
(
testMethod
);
...
...
@@ -2965,6 +2980,12 @@ public class SoilExperimentServiceImpl extends BaseServiceImpl<SoilExperimentMap
if
(
update
(
soilExperiment
,
Condition
.
create
().
in
(
"id"
,
ids
))){
soilExperimentOperationService
.
recordAuditorInfo
(
ids
,
account
);
soilExperimentRecordService
.
record
(
ids
,
SoilExpStatusEnum
.
AUDIT
,
SoilExpStatusEnum
.
END
,
0
,
account
,
"试验项目审核完成"
);
SoilItem
item
=
new
SoilItem
();
item
.
setStatus
(
10
);
item
.
setProgress
(
10
);
//经过审核
soilItemService
.
update
(
item
,
Condition
.
create
().
in
(
"experiment_id"
,
ids
));
}
sampleStatusChange
(
ids
);
...
...
@@ -3311,6 +3332,7 @@ public class SoilExperimentServiceImpl extends BaseServiceImpl<SoilExperimentMap
if
(
null
==
soilItemMap
.
get
(
item
.
getExperimentId
()+
item
.
getName
())){
saveSoilItemList
.
add
(
item
);
}
else
{
item
.
setId
(
soilItemMap
.
get
(
item
.
getExperimentId
()+
item
.
getName
()).
getId
());
updateSoilItemList
.
add
(
item
);
}
...
...
@@ -3340,6 +3362,118 @@ public class SoilExperimentServiceImpl extends BaseServiceImpl<SoilExperimentMap
}
@Override
public
boolean
parseWuxingTxt
(
SmbFile
smbFile
,
CollectDataType
request
)
{
try
{
List
<
SoilExperimentCollectDataVO
>
dataList
=
CollectUtil
.
txt2StringWuxing
(
smbFile
.
getInputStream
());
if
(
CollectionUtils
.
isNotEmpty
(
dataList
)){
List
<
SoilItem
>
saveSoilItemList
=
new
ArrayList
<>();
List
<
SoilItem
>
updateSoilItemList
=
new
ArrayList
<>();
String
testMethod
=
null
;
// List<SoilItem> soilItems = soilItemService.list(Condition.create().eq("experiment_id",request.getExpId()));
//
// Map<String,SoilItem> soilItemMap = new HashMap<>();
//
// for (SoilItem item : soilItems) {
// soilItemMap.put(item.getExperimentId()+item.getName(),item);
// }
Map
<
String
,
SoilExperiment
>
experimentMap
=
new
HashMap
<>();
for
(
SoilExperimentCollectDataVO
collectData:
dataList
)
{
if
(
StringUtils
.
isBlank
(
collectData
.
getEntrustCode
())){
continue
;
}
if
(
StringUtils
.
isBlank
(
collectData
.
getSiteNo
())){
continue
;
}
List
<
SoilItem
>
soilItems
=
new
ArrayList
<>();
Long
expId
=
null
;
if
(
null
!=
experimentMap
.
get
(
collectData
.
getEntrustCode
()+
collectData
.
getSiteNo
()+
collectData
.
getExpName
())){
expId
=
experimentMap
.
get
(
collectData
.
getEntrustCode
()+
collectData
.
getSiteNo
()+
collectData
.
getExpName
()).
getId
();
soilItems
=
soilItemService
.
list
(
Condition
.
create
().
eq
(
"experiment_id"
,
expId
));
}
else
{
List
<
SoilEntrust
>
entrustList
=
soilEntrustService
.
list
(
Condition
.
create
().
eq
(
"entrust_code"
,
collectData
.
getEntrustCode
()).
last
(
" LIMIT 1 "
));
if
(
CollectionUtils
.
isEmpty
(
entrustList
)){
continue
;
}
SoilEntrust
entrust
=
entrustList
.
get
(
0
);
List
<
SoilSample
>
sampleList
=
soilSampleService
.
list
(
Condition
.
create
().
eq
(
"site_no"
,
collectData
.
getSiteNo
()).
eq
(
"entrust_id"
,
entrust
.
getId
()));
if
(
CollectionUtils
.
isEmpty
(
sampleList
)){
continue
;
}
SoilSample
sample
=
sampleList
.
get
(
0
);
SoilExperiment
experiment
=
getOne
(
Condition
.
create
().
eq
(
"sample_id"
,
sample
.
getId
()).
eq
(
"name"
,
collectData
.
getExpName
()).
last
(
" LIMIT 1 "
));
expId
=
experiment
.
getId
();
if
(
null
==
experiment
){
continue
;
}
soilItems
=
soilItemService
.
list
(
Condition
.
create
().
eq
(
"experiment_id"
,
expId
));
experimentMap
.
put
(
entrust
.
getEntrustCode
()+
sample
.
getSiteNo
()+
collectData
.
getExpName
(),
experiment
);
}
Map
<
String
,
SoilItem
>
soilItemMap
=
new
HashMap
<>();
for
(
SoilItem
item
:
soilItems
)
{
soilItemMap
.
put
(
item
.
getExperimentId
()+
item
.
getName
(),
item
);
}
collectData
.
setEquipName
(
request
.
getEquipName
());
collectData
.
setLabNum
(
request
.
getLabNum
());
collectData
.
setEquipNum
(
request
.
getEquipNum
());
collectData
.
setExpId
(
expId
);
collectData
.
setSpec
(
request
.
getSpec
());
if
(
"试验方法"
.
equals
(
collectData
.
getName
())){
if
(
StringUtils
.
isNotBlank
(
testMethod
)){
continue
;
}
testMethod
=
collectData
.
getTestValue
();
continue
;
}
SoilItem
item
=
new
SoilItem
();
item
.
setName
(
collectData
.
getName
());
item
.
setTestValue
(
collectData
.
getTestValue
());
item
.
setExperimentId
(
expId
);
item
.
setUnit
(
collectData
.
getUnit
());
if
(
null
==
soilItemMap
.
get
(
item
.
getExperimentId
()+
item
.
getName
())){
soilItemMap
.
put
(
item
.
getExperimentId
()+
item
.
getName
(),
item
);
saveSoilItemList
.
add
(
item
);
}
else
{
updateSoilItemList
.
add
(
item
);
}
}
if
(
CollectionUtils
.
isNotEmpty
(
saveSoilItemList
)){
soilItemService
.
saveBatch
(
saveSoilItemList
);
}
if
(
CollectionUtils
.
isNotEmpty
(
updateSoilItemList
)){
soilItemService
.
updateBatchById
(
updateSoilItemList
);
}
return
true
;
}
}
catch
(
Exception
e
){
logger
.
error
(
"parseWuxingTxt失败,原因:"
+
e
.
getMessage
());
e
.
printStackTrace
();
}
return
false
;
}
@Transactional
(
rollbackFor
=
Exception
.
class
)
@Override
public
boolean
importExperiments
(
Long
[]
ids
,
Long
[]
aptitudeIds
,
Account
account
)
{
...
...
@@ -3406,7 +3540,13 @@ public class SoilExperimentServiceImpl extends BaseServiceImpl<SoilExperimentMap
for
(
SoilOriginalRecord
originalRecord:
soilOriginalRecordList
)
{
mapSoilOriginalRecord
.
put
(
originalRecord
.
getId
(),
originalRecord
);
}
List
<
Long
>
sampleIdsList
=
new
ArrayList
<>();
for
(
SoilExperimentVO
vo:
voList
)
{
sampleIdsList
.
add
(
vo
.
getSampleId
());
if
(
null
==
map
.
get
(
vo
.
getId
())){
vo
.
setRecorded
(
"否"
);
}
else
{
...
...
@@ -3418,6 +3558,24 @@ public class SoilExperimentServiceImpl extends BaseServiceImpl<SoilExperimentMap
}
}
}
List
<
SoilItemVO
>
indexList
=
soilItemService
.
listForTestPage
(
sampleIdsList
,
SoilExpStatusEnum
.
END
);
if
(
CollectionUtils
.
isEmpty
(
indexList
)){
return
voList
;
}
Map
<
String
,
String
>
itemValueMap
=
new
HashMap
<>();
for
(
SoilItemVO
itemVO
:
indexList
)
{
itemValueMap
.
put
(
itemVO
.
getSampleCode
()+
"--"
+
itemVO
.
getName
(),
itemVO
.
getTestValue
());
}
for
(
SoilExperimentVO
vo
:
voList
)
{
String
hanshui
=
itemValueMap
.
get
(
vo
.
getSampleCode
()+
"--含水率"
);
String
midu
=
itemValueMap
.
get
(
vo
.
getSampleCode
()+
"--密度"
);
String
rongzhong
=
itemValueMap
.
get
(
vo
.
getSampleCode
()+
"--容重"
);
vo
.
setHaveWater
(
hanshui
);
vo
.
setBulkDensity
(
rongzhong
);
vo
.
setDensity
(
midu
);
}
return
voList
;
}
}
src/main/java/com/patzn/cloud/service/lims/soil/service/impl/SoilItemServiceImpl.java
View file @
fe1a31f5
...
...
@@ -6,6 +6,7 @@ import com.patzn.cloud.service.soil.entity.SoilItem;
import
com.patzn.cloud.service.lims.soil.mapper.SoilItemMapper
;
import
com.patzn.cloud.service.lims.soil.service.ISoilItemService
;
import
com.patzn.cloud.commons.service.impl.BaseServiceImpl
;
import
com.patzn.cloud.service.soil.enums.SoilExpStatusEnum
;
import
com.patzn.cloud.service.soil.vo.SoilItemVO
;
import
org.springframework.stereotype.Service
;
import
com.baomidou.mybatisplus.mapper.EntityWrapper
;
...
...
@@ -47,4 +48,9 @@ public class SoilItemServiceImpl extends BaseServiceImpl<SoilItemMapper, SoilIte
return
baseMapper
.
listVOByExpSampleIds
(
expIdsList
);
}
@Override
public
List
<
SoilItemVO
>
listForTestPage
(
List
<
Long
>
sampleIdsList
,
SoilExpStatusEnum
statusEnum
)
{
return
baseMapper
.
selectForTestPage
(
sampleIdsList
,
statusEnum
);
}
}
src/main/java/com/patzn/cloud/service/lims/soil/service/impl/SoilSampleServiceImpl.java
View file @
fe1a31f5
...
...
@@ -782,6 +782,15 @@ public class SoilSampleServiceImpl extends BaseServiceImpl<SoilSampleMapper, Soi
return
g
.
getId
();
}).
collect
(
Collectors
.
toList
());
if
(
null
!=
soilSample
.
getGroupId
()){
if
(
groupIds
.
contains
(
soilSample
.
getGroupId
())){
groupIds
.
clear
();
groupIds
.
add
(
soilSample
.
getGroupId
());
}
else
{
return
page
;
}
}
return
page
.
setRecords
(
soilPrepareService
.
pageVOTake
(
page
,
soilSample
,
groupIds
));
}
...
...
src/main/resources/application-dev.yml
View file @
fe1a31f5
...
...
@@ -8,6 +8,20 @@ service:
api-url
:
http://api.dev.patzn.com:7000
url
:
http://api.dev.patzn.com:7000
spring
:
mail
:
host
:
smtp.qq.com
password
:
amevchrqenqweebg
default-encoding
:
UTF-8
properties
:
mail
:
smtp
:
auth
:
true
starttls
:
enable
:
true
required
:
true
username
:
1781849245@qq.com
port
:
465
protocol
:
smtps
datasource
:
type
:
com.zaxxer.hikari.HikariDataSource
# url: jdbc:postgresql://localhost:5432/dev_lims_meter
...
...
src/main/resources/application-pro.yml
View file @
fe1a31f5
...
...
@@ -6,6 +6,20 @@ service:
province-item-url
:
http://60.216.97.250:8087
soffice
:
/opt/libreoffice6.1/program/soffice
spring
:
mail
:
host
:
smtp.qq.com
password
:
amevchrqenqweebg
default-encoding
:
UTF-8
properties
:
mail
:
smtp
:
auth
:
true
starttls
:
enable
:
true
required
:
true
username
:
1781849245@qq.com
port
:
465
protocol
:
smtps
datasource
:
type
:
com.zaxxer.hikari.HikariDataSource
url
:
jdbc:postgresql://121.36.94.193:5432/pc_lims_soil
...
...
src/main/resources/application-zhyf.yml
View file @
fe1a31f5
...
...
@@ -9,6 +9,20 @@ service:
province-item-url
:
http://60.216.97.250:8087
soffice
:
/opt/libreoffice6.1/program/soffice
spring
:
mail
:
host
:
smtp.qq.com
password
:
amevchrqenqweebg
default-encoding
:
UTF-8
properties
:
mail
:
smtp
:
auth
:
true
starttls
:
enable
:
true
required
:
true
username
:
1781849245@qq.com
port
:
465
protocol
:
smtps
datasource
:
username
:
dbsoiladmin
password
:
ptoilwzhj768
...
...
src/main/resources/mapper/soil/SoilAloneSampleMapper.xml
View file @
fe1a31f5
...
...
@@ -24,6 +24,10 @@
AND o.storehouse LIKE CONCAT('%',#{vo.storehouse},'%')
</if>
<if
test=
"vo.shelfCode"
>
AND o.shelf_code LIKE CONCAT('%',#{vo.shelfCode},'%')
</if>
ORDER BY s.ctime DESC
</select>
...
...
src/main/resources/mapper/soil/SoilExperimentMapper.xml
View file @
fe1a31f5
...
...
@@ -350,6 +350,7 @@
t.test_method,
t.tester,
t.status,
t.sample_id,
t.progress,
t.group_name,
t.group_id,
...
...
src/main/resources/mapper/soil/SoilItemMapper.xml
View file @
fe1a31f5
...
...
@@ -34,4 +34,28 @@
</foreach>
</select>
<select
id=
"selectForTestPage"
resultType=
"com.patzn.cloud.service.soil.vo.SoilItemVO"
>
SELECT
s.sample_code,i.name ,i.test_value,i.unit
FROM
soil_experiment
T JOIN soil_sample s ON T.sample_id = s.ID
JOIN soil_item i ON i.experiment_id = t.id
WHERE s.deleted = 0
AND t.deleted = 0
AND i.deleted=0
AND t.name IN ('含水率','密度','容重')
AND t.status = #{status}
AND s.id IN
<foreach
collection=
"sampleIds"
index=
"index"
item=
"id"
open=
"("
separator=
","
close=
")"
>
#{id}
</foreach>
AND i.name IN ('含水率','密度','容重')
AND i.test_value IS NOT NULL
</select>
</mapper>
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