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
92cf07ec
Commit
92cf07ec
authored
Jun 29, 2021
by
lijingjing
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
添加原铝、电解质、磷生铁统计分析
parent
e0c67824
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
567 additions
and
57 deletions
+567
-57
EntrustSampleController.java
...service/lims/hmhj/controller/EntrustSampleController.java
+23
-0
UserInspectionCodeController.java
...ce/lims/hmhj/controller/UserInspectionCodeController.java
+1
-0
EntrustSampleMapper.java
...n/cloud/service/lims/hmhj/mapper/EntrustSampleMapper.java
+11
-0
IEntrustSampleService.java
...loud/service/lims/hmhj/service/IEntrustSampleService.java
+11
-0
EntrustSampleServiceImpl.java
...vice/lims/hmhj/service/impl/EntrustSampleServiceImpl.java
+121
-34
EntrustServiceImpl.java
...ud/service/lims/hmhj/service/impl/EntrustServiceImpl.java
+54
-14
EntrustSampleItemMapper.xml
src/main/resources/mapper/hmhj/EntrustSampleItemMapper.xml
+12
-9
EntrustSampleMapper.xml
src/main/resources/mapper/hmhj/EntrustSampleMapper.xml
+225
-0
20210629新增视图.sql
src/test/java/resources/db_sql/base/v113/20210629新增视图.sql
+14
-0
20210629新增函数.sql
src/test/java/resources/db_sql/hmhj/v113/20210629新增函数.sql
+95
-0
No files found.
src/main/java/com/patzn/cloud/service/lims/hmhj/controller/EntrustSampleController.java
View file @
92cf07ec
...
@@ -3,12 +3,17 @@ package com.patzn.cloud.service.lims.hmhj.controller;
...
@@ -3,12 +3,17 @@ package com.patzn.cloud.service.lims.hmhj.controller;
import
com.baomidou.mybatisplus.mapper.EntityWrapper
;
import
com.baomidou.mybatisplus.mapper.EntityWrapper
;
import
com.baomidou.mybatisplus.mapper.Wrapper
;
import
com.baomidou.mybatisplus.mapper.Wrapper
;
import
com.google.common.collect.Lists
;
import
com.google.common.collect.Lists
;
import
com.patzn.cloud.service.hmhj.dto.QueryDTO
;
import
com.patzn.cloud.service.hmhj.dto.ReportDTO
;
import
com.patzn.cloud.service.hmhj.dto.ReportDTO
;
import
com.patzn.cloud.service.hmhj.dto.StatsQueryDTO
;
import
com.patzn.cloud.service.hmhj.entity.EntrustSample
;
import
com.patzn.cloud.service.hmhj.entity.EntrustSample
;
import
com.patzn.cloud.service.hmhj.enums.EntrustSampleItemStatusEnum
;
import
com.patzn.cloud.service.hmhj.enums.EntrustSampleItemStatusEnum
;
import
com.patzn.cloud.service.hmhj.enums.EntrustSamplePrepareStatusEnum
;
import
com.patzn.cloud.service.hmhj.enums.EntrustSamplePrepareStatusEnum
;
import
com.patzn.cloud.service.hmhj.enums.EntrustSampleStatusEnum
;
import
com.patzn.cloud.service.hmhj.enums.EntrustSampleStatusEnum
;
import
com.patzn.cloud.service.hmhj.vo.AlTasteStatsVO
;
import
com.patzn.cloud.service.hmhj.vo.ElectrolyteRatioStatsVO
;
import
com.patzn.cloud.service.hmhj.vo.EntrustSampleVO
;
import
com.patzn.cloud.service.hmhj.vo.EntrustSampleVO
;
import
com.patzn.cloud.service.hmhj.vo.PMakeFeStatsVO
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.*
;
import
org.springframework.web.bind.annotation.*
;
...
@@ -24,6 +29,7 @@ import io.swagger.annotations.ApiImplicitParams;
...
@@ -24,6 +29,7 @@ import io.swagger.annotations.ApiImplicitParams;
import
io.swagger.annotations.ApiOperation
;
import
io.swagger.annotations.ApiOperation
;
import
java.util.List
;
import
java.util.List
;
import
java.util.Map
;
/**
/**
* 委托单样品 前端控制器
* 委托单样品 前端控制器
...
@@ -447,4 +453,21 @@ public class EntrustSampleController extends ServiceController {
...
@@ -447,4 +453,21 @@ public class EntrustSampleController extends ServiceController {
return
success
(
entrustSampleService
.
pageTestResultQuery
(
getPage
(),
entrustSample
));
return
success
(
entrustSampleService
.
pageTestResultQuery
(
getPage
(),
entrustSample
));
}
}
@ApiOperation
(
"原铝品味统计查询"
)
@PostMapping
(
"/al_taste_stats_query"
)
public
RestResult
<
List
<
AlTasteStatsVO
>>
getAlTasteStatsQuery
(
StatsQueryDTO
statsQueryDTO
)
{
return
success
(
entrustSampleService
.
getAlTasteStatsQuery
(
statsQueryDTO
));
}
@ApiOperation
(
"电解质分子比统计查询"
)
@PostMapping
(
"/electrolyte_ratio_stats_query"
)
public
RestResult
<
List
<
ElectrolyteRatioStatsVO
>>
getElectrolyteRatioStatsQuery
(
QueryDTO
queryDTO
)
{
return
success
(
entrustSampleService
.
getElectrolyteRatioStatsQuery
(
queryDTO
));
}
@ApiOperation
(
"磷生铁统计查询"
)
@PostMapping
(
"/p_make_fe_stats_query"
)
public
RestResult
<
List
<
PMakeFeStatsVO
>>
getPMakeFeStatsQuery
(
QueryDTO
queryDTO
)
{
return
success
(
entrustSampleService
.
getPMakeFeStatsQuery
(
queryDTO
));
}
}
}
src/main/java/com/patzn/cloud/service/lims/hmhj/controller/UserInspectionCodeController.java
View file @
92cf07ec
...
@@ -61,6 +61,7 @@ public class UserInspectionCodeController extends ServiceController {
...
@@ -61,6 +61,7 @@ public class UserInspectionCodeController extends ServiceController {
@ApiOperation
(
"添加"
)
@ApiOperation
(
"添加"
)
@PostMapping
(
"/"
)
@PostMapping
(
"/"
)
public
RestResult
<
Boolean
>
add
(
UserInspectionCode
userInspectionCode
)
{
public
RestResult
<
Boolean
>
add
(
UserInspectionCode
userInspectionCode
)
{
userInspectionCode
.
setCreator
(
getAccount
().
getUserName
());
return
success
(
userInspectionCodeService
.
save
(
userInspectionCode
));
return
success
(
userInspectionCodeService
.
save
(
userInspectionCode
));
}
}
...
...
src/main/java/com/patzn/cloud/service/lims/hmhj/mapper/EntrustSampleMapper.java
View file @
92cf07ec
package
com
.
patzn
.
cloud
.
service
.
lims
.
hmhj
.
mapper
;
package
com
.
patzn
.
cloud
.
service
.
lims
.
hmhj
.
mapper
;
import
com.baomidou.mybatisplus.plugins.Page
;
import
com.baomidou.mybatisplus.plugins.Page
;
import
com.patzn.cloud.service.hmhj.dto.QueryDTO
;
import
com.patzn.cloud.service.hmhj.dto.StatsQueryDTO
;
import
com.patzn.cloud.service.hmhj.entity.EntrustSample
;
import
com.patzn.cloud.service.hmhj.entity.EntrustSample
;
import
com.patzn.cloud.commons.mapper.BatchMapper
;
import
com.patzn.cloud.commons.mapper.BatchMapper
;
import
com.patzn.cloud.service.hmhj.vo.AlTasteStatsVO
;
import
com.patzn.cloud.service.hmhj.vo.ElectrolyteRatioStatsVO
;
import
com.patzn.cloud.service.hmhj.vo.EntrustSampleVO
;
import
com.patzn.cloud.service.hmhj.vo.EntrustSampleVO
;
import
com.patzn.cloud.service.hmhj.vo.PMakeFeStatsVO
;
import
org.apache.ibatis.annotations.Param
;
import
org.apache.ibatis.annotations.Param
;
import
org.apache.ibatis.session.RowBounds
;
import
org.apache.ibatis.session.RowBounds
;
...
@@ -26,4 +31,10 @@ public interface EntrustSampleMapper extends BatchMapper<EntrustSample> {
...
@@ -26,4 +31,10 @@ public interface EntrustSampleMapper extends BatchMapper<EntrustSample> {
List
<
EntrustSampleVO
>
selectMinStatusByEntrustIds
(
@Param
(
"entrustIds"
)
List
<
Long
>
entrustIds
);
List
<
EntrustSampleVO
>
selectMinStatusByEntrustIds
(
@Param
(
"entrustIds"
)
List
<
Long
>
entrustIds
);
List
<
EntrustSampleVO
>
selectTestResultQuery
(
RowBounds
rowBounds
,
@Param
(
"vo"
)
EntrustSampleVO
entrustSample
);
List
<
EntrustSampleVO
>
selectTestResultQuery
(
RowBounds
rowBounds
,
@Param
(
"vo"
)
EntrustSampleVO
entrustSample
);
List
<
AlTasteStatsVO
>
selectAlTasteStats
(
@Param
(
"vo"
)
StatsQueryDTO
queryDTO
);
List
<
ElectrolyteRatioStatsVO
>
selectElectrolyteRatioStats
(
@Param
(
"vo"
)
QueryDTO
queryDTO
);
List
<
PMakeFeStatsVO
>
selectPMakeFeStats
(
@Param
(
"vo"
)
QueryDTO
queryDTO
);
}
}
src/main/java/com/patzn/cloud/service/lims/hmhj/service/IEntrustSampleService.java
View file @
92cf07ec
...
@@ -4,9 +4,14 @@ import com.baomidou.mybatisplus.mapper.Wrapper;
...
@@ -4,9 +4,14 @@ import com.baomidou.mybatisplus.mapper.Wrapper;
import
com.baomidou.mybatisplus.plugins.Page
;
import
com.baomidou.mybatisplus.plugins.Page
;
import
com.patzn.cloud.commons.controller.Account
;
import
com.patzn.cloud.commons.controller.Account
;
import
com.patzn.cloud.commons.service.IBaseService
;
import
com.patzn.cloud.commons.service.IBaseService
;
import
com.patzn.cloud.service.hmhj.dto.QueryDTO
;
import
com.patzn.cloud.service.hmhj.dto.ReportDTO
;
import
com.patzn.cloud.service.hmhj.dto.ReportDTO
;
import
com.patzn.cloud.service.hmhj.dto.StatsQueryDTO
;
import
com.patzn.cloud.service.hmhj.entity.EntrustSample
;
import
com.patzn.cloud.service.hmhj.entity.EntrustSample
;
import
com.patzn.cloud.service.hmhj.vo.AlTasteStatsVO
;
import
com.patzn.cloud.service.hmhj.vo.ElectrolyteRatioStatsVO
;
import
com.patzn.cloud.service.hmhj.vo.EntrustSampleVO
;
import
com.patzn.cloud.service.hmhj.vo.EntrustSampleVO
;
import
com.patzn.cloud.service.hmhj.vo.PMakeFeStatsVO
;
import
java.util.List
;
import
java.util.List
;
...
@@ -53,4 +58,10 @@ public interface IEntrustSampleService extends IBaseService<EntrustSample> {
...
@@ -53,4 +58,10 @@ public interface IEntrustSampleService extends IBaseService<EntrustSample> {
Page
<
EntrustSampleVO
>
pageTestResultQuery
(
Page
<
EntrustSampleVO
>
page
,
EntrustSampleVO
entrustSample
);
Page
<
EntrustSampleVO
>
pageTestResultQuery
(
Page
<
EntrustSampleVO
>
page
,
EntrustSampleVO
entrustSample
);
int
countByEntrustId
(
Long
id
);
int
countByEntrustId
(
Long
id
);
List
<
AlTasteStatsVO
>
getAlTasteStatsQuery
(
StatsQueryDTO
queryDTO
);
List
<
ElectrolyteRatioStatsVO
>
getElectrolyteRatioStatsQuery
(
QueryDTO
queryDTO
);
List
<
PMakeFeStatsVO
>
getPMakeFeStatsQuery
(
QueryDTO
queryDTO
);
}
}
src/main/java/com/patzn/cloud/service/lims/hmhj/service/impl/EntrustSampleServiceImpl.java
View file @
92cf07ec
...
@@ -10,12 +10,12 @@ import com.patzn.cloud.commons.toolkit.FileUtils;
...
@@ -10,12 +10,12 @@ import com.patzn.cloud.commons.toolkit.FileUtils;
import
com.patzn.cloud.feign.base.client.SysFileTemplateClient
;
import
com.patzn.cloud.feign.base.client.SysFileTemplateClient
;
import
com.patzn.cloud.oss.starter.OssClient
;
import
com.patzn.cloud.oss.starter.OssClient
;
import
com.patzn.cloud.service.base.entity.SysFileTemplate
;
import
com.patzn.cloud.service.base.entity.SysFileTemplate
;
import
com.patzn.cloud.service.hmhj.dto.QueryDTO
;
import
com.patzn.cloud.service.hmhj.dto.ReportDTO
;
import
com.patzn.cloud.service.hmhj.dto.ReportDTO
;
import
com.patzn.cloud.service.hmhj.dto.StatsQueryDTO
;
import
com.patzn.cloud.service.hmhj.entity.*
;
import
com.patzn.cloud.service.hmhj.entity.*
;
import
com.patzn.cloud.service.hmhj.enums.ContractSampleStatusEnum
;
import
com.patzn.cloud.service.hmhj.enums.ContractSampleStatusEnum
;
import
com.patzn.cloud.service.hmhj.vo.EntrustSampleItemIndexVO
;
import
com.patzn.cloud.service.hmhj.vo.*
;
import
com.patzn.cloud.service.hmhj.vo.EntrustSampleItemVO
;
import
com.patzn.cloud.service.hmhj.vo.EntrustSampleVO
;
import
com.patzn.cloud.service.lims.common.StringHandleUtils
;
import
com.patzn.cloud.service.lims.common.StringHandleUtils
;
import
com.patzn.cloud.service.lims.hmhj.common.HSSFWorkbookUtil
;
import
com.patzn.cloud.service.lims.hmhj.common.HSSFWorkbookUtil
;
import
com.patzn.cloud.service.lims.hmhj.mapper.EntrustSampleMapper
;
import
com.patzn.cloud.service.lims.hmhj.mapper.EntrustSampleMapper
;
...
@@ -141,39 +141,128 @@ public class EntrustSampleServiceImpl extends BaseServiceImpl<EntrustSampleMappe
...
@@ -141,39 +141,128 @@ public class EntrustSampleServiceImpl extends BaseServiceImpl<EntrustSampleMappe
@Override
@Override
public
Page
<
EntrustSampleVO
>
pageTestResultQuery
(
Page
<
EntrustSampleVO
>
page
,
EntrustSampleVO
entrustSample
)
{
public
Page
<
EntrustSampleVO
>
pageTestResultQuery
(
Page
<
EntrustSampleVO
>
page
,
EntrustSampleVO
entrustSample
)
{
List
<
EntrustSampleVO
>
voList
=
baseMapper
.
selectTestResultQuery
(
page
,
entrustSample
);
List
<
EntrustSampleVO
>
voList
=
baseMapper
.
selectTestResultQuery
(
page
,
entrustSample
);
if
(
CollectionUtils
.
isEmpty
(
voList
)){
if
(
CollectionUtils
.
isEmpty
(
voList
))
{
return
page
;
return
page
;
}
}
List
<
Long
>
sampleIds
=
voList
.
stream
().
map
(
s
->
{
List
<
Long
>
sampleIds
=
voList
.
stream
().
map
(
s
->
{
return
s
.
getId
();
return
s
.
getId
();
}).
collect
(
Collectors
.
toList
());
}).
collect
(
Collectors
.
toList
());
List
<
EntrustSampleItemIndexVO
>
indexList
=
entrustSampleItemIndexService
.
listVOBySampleIds
(
sampleIds
);
List
<
EntrustSampleItemIndexVO
>
indexList
=
entrustSampleItemIndexService
.
listVOBySampleIds
(
sampleIds
);
if
(
CollectionUtils
.
isEmpty
(
indexList
))
{
if
(
CollectionUtils
.
isEmpty
(
indexList
))
{
return
page
.
setRecords
(
voList
);
return
page
.
setRecords
(
voList
);
}
}
Map
<
Long
,
List
<
EntrustSampleItemIndex
>>
sampleIndexMap
=
new
HashMap
<>();
Map
<
Long
,
List
<
EntrustSampleItemIndex
>>
sampleIndexMap
=
new
HashMap
<>();
for
(
EntrustSampleItemIndexVO
entrustSampleItemIndex
:
indexList
)
{
for
(
EntrustSampleItemIndexVO
entrustSampleItemIndex
:
indexList
)
{
if
(
sampleIndexMap
.
containsKey
(
entrustSampleItemIndex
.
getSampleId
()))
{
if
(
sampleIndexMap
.
containsKey
(
entrustSampleItemIndex
.
getSampleId
()))
{
List
<
EntrustSampleItemIndex
>
itemIndexList
=
sampleIndexMap
.
get
(
entrustSampleItemIndex
.
getSampleId
());
List
<
EntrustSampleItemIndex
>
itemIndexList
=
sampleIndexMap
.
get
(
entrustSampleItemIndex
.
getSampleId
());
itemIndexList
.
add
(
entrustSampleItemIndex
);
itemIndexList
.
add
(
entrustSampleItemIndex
);
sampleIndexMap
.
put
(
entrustSampleItemIndex
.
getSampleId
(),
itemIndexList
);
sampleIndexMap
.
put
(
entrustSampleItemIndex
.
getSampleId
(),
itemIndexList
);
}
else
{
}
else
{
List
<
EntrustSampleItemIndex
>
itemIndexList
=
Lists
.
newArrayList
();
List
<
EntrustSampleItemIndex
>
itemIndexList
=
Lists
.
newArrayList
();
itemIndexList
.
add
(
entrustSampleItemIndex
);
itemIndexList
.
add
(
entrustSampleItemIndex
);
sampleIndexMap
.
put
(
entrustSampleItemIndex
.
getSampleId
(),
itemIndexList
);
sampleIndexMap
.
put
(
entrustSampleItemIndex
.
getSampleId
(),
itemIndexList
);
}
}
}
}
for
(
EntrustSampleVO
vo
:
voList
)
{
for
(
EntrustSampleVO
vo
:
voList
)
{
vo
.
setIndexList
(
sampleIndexMap
.
get
(
vo
.
getId
()));
vo
.
setIndexList
(
sampleIndexMap
.
get
(
vo
.
getId
()));
}
}
return
page
.
setRecords
(
voList
);
return
page
.
setRecords
(
voList
);
}
}
@Override
@Override
public
int
countByEntrustId
(
Long
id
)
{
public
int
countByEntrustId
(
Long
id
)
{
return
super
.
count
(
Condition
.
create
().
eq
(
"entrust_id"
,
id
));
return
super
.
count
(
Condition
.
create
().
eq
(
"entrust_id"
,
id
));
}
private
void
handleTotalData
(
AlTasteStatsVO
vo
,
AlTasteStatsVO
prevVO
,
Map
<
String
,
List
<
AlTasteStatsVO
>>
resultMap
,
boolean
isLast
)
{
}
private
AlTasteStatsVO
getTotalData
(
List
<
AlTasteStatsVO
>
voList
)
{
AlTasteStatsVO
bpStatsVO
=
new
AlTasteStatsVO
();
bpStatsVO
.
setPlant
(
"合计"
);
bpStatsVO
.
setBranch
(
voList
.
get
(
0
).
getBranch
());
for
(
AlTasteStatsVO
t
:
voList
)
{
bpStatsVO
.
setTotal
((
null
==
bpStatsVO
.
getTotal
()
?
0
l
:
bpStatsVO
.
getTotal
())
+
t
.
getTotal
());
bpStatsVO
.
setSlotsNum
((
null
==
bpStatsVO
.
getSlotsNum
()
?
0
l
:
bpStatsVO
.
getSlotsNum
())
+
t
.
getSlotsNum
());
bpStatsVO
.
setAl85Num
((
null
==
bpStatsVO
.
getAl85Num
()
?
0
l
:
bpStatsVO
.
getAl85Num
())
+
t
.
getAl85Num
());
bpStatsVO
.
setAl85Per
((
null
==
bpStatsVO
.
getAl85Per
()
?
0.0000
:
bpStatsVO
.
getAl85Per
())
+
t
.
getAl85Per
());
bpStatsVO
.
setAl85SlotsNum
((
null
==
bpStatsVO
.
getAl85SlotsNum
()
?
0
l
:
bpStatsVO
.
getAl85SlotsNum
())
+
t
.
getAl85SlotsNum
());
bpStatsVO
.
setAl70Num
((
null
==
bpStatsVO
.
getAl70Num
()
?
0
l
:
bpStatsVO
.
getAl70Num
())
+
t
.
getAl70Num
());
bpStatsVO
.
setAl70Per
((
null
==
bpStatsVO
.
getAl70Per
()
?
0.0000
:
bpStatsVO
.
getAl70Per
())
+
t
.
getAl70Per
());
bpStatsVO
.
setAl70SlotsNum
((
null
==
bpStatsVO
.
getAl70SlotsNum
()
?
0
l
:
bpStatsVO
.
getAl70SlotsNum
())
+
t
.
getAl70SlotsNum
());
bpStatsVO
.
setFe10Num
((
null
==
bpStatsVO
.
getFe10Num
()
?
0
l
:
bpStatsVO
.
getFe10Num
())
+
t
.
getFe10Num
());
bpStatsVO
.
setFe10Per
((
null
==
bpStatsVO
.
getFe10Per
()
?
0.0000
:
bpStatsVO
.
getFe10Per
())
+
t
.
getFe10Per
());
bpStatsVO
.
setFe10SlotsNum
((
null
==
bpStatsVO
.
getFe10SlotsNum
()
?
0
l
:
bpStatsVO
.
getFe10SlotsNum
())
+
t
.
getFe10SlotsNum
());
bpStatsVO
.
setFe08Num
((
null
==
bpStatsVO
.
getFe08Num
()
?
0
l
:
bpStatsVO
.
getFe08Num
())
+
t
.
getFe08Num
());
bpStatsVO
.
setFe08Per
((
null
==
bpStatsVO
.
getFe08Per
()
?
0.0000
:
bpStatsVO
.
getFe08Per
())
+
t
.
getFe08Per
());
bpStatsVO
.
setFe08SlotsNum
((
null
==
bpStatsVO
.
getFe08SlotsNum
()
?
0
l
:
bpStatsVO
.
getFe08SlotsNum
())
+
t
.
getFe08SlotsNum
());
}
return
bpStatsVO
;
}
@Override
public
List
<
AlTasteStatsVO
>
getAlTasteStatsQuery
(
StatsQueryDTO
queryDTO
)
{
RestAssert
.
fail
(
null
==
queryDTO
.
getTimeS
()
||
null
==
queryDTO
.
getTimeE
(),
"开始或结束时间为空"
);
long
days
=
DateUtils
.
getDaysBetweenTwoDate
(
queryDTO
.
getTimeS
(),
queryDTO
.
getTimeE
());
queryDTO
.
setDays
(
days
);
List
<
AlTasteStatsVO
>
list
=
baseMapper
.
selectAlTasteStats
(
queryDTO
);
List
<
AlTasteStatsVO
>
resultList
=
new
ArrayList
<>();
if
(
CollectionUtils
.
isEmpty
(
list
))
{
return
resultList
;
}
Map
<
String
,
List
<
AlTasteStatsVO
>>
dataMap
=
new
HashMap
<>();
for
(
int
i
=
0
;
i
<
list
.
size
();
i
++)
{
AlTasteStatsVO
vo
=
list
.
get
(
i
);
String
key
=
vo
.
getBranch
()
+
vo
.
getPlant
();
if
(
dataMap
.
isEmpty
())
{
List
<
AlTasteStatsVO
>
newList
=
new
ArrayList
<>();
newList
.
add
(
vo
);
dataMap
.
put
(
key
,
newList
);
if
(
i
==
list
.
size
()
-
1
)
{
resultList
.
add
(
vo
);
resultList
.
add
(
getTotalData
(
list
));
}
continue
;
}
if
(!
dataMap
.
containsKey
(
key
))
{
AlTasteStatsVO
prevVO
=
list
.
get
(
i
-
1
);
List
<
AlTasteStatsVO
>
prevList
=
dataMap
.
get
(
prevVO
.
getBranch
()
+
prevVO
.
getPlant
());
resultList
.
addAll
(
prevList
);
resultList
.
add
(
getTotalData
(
prevList
));
}
else
{
List
<
AlTasteStatsVO
>
lists
=
dataMap
.
get
(
key
);
lists
.
add
(
vo
);
if
(
i
==
list
.
size
()
-
1
)
{
resultList
.
addAll
(
lists
);
resultList
.
add
(
getTotalData
(
lists
));
}
}
}
// 汇总所有
AlTasteStatsVO
alTasteStatsVO
=
getTotalData
(
list
);
alTasteStatsVO
.
setBranch
(
null
);
resultList
.
add
(
alTasteStatsVO
);
return
resultList
;
}
@Override
public
List
<
ElectrolyteRatioStatsVO
>
getElectrolyteRatioStatsQuery
(
QueryDTO
queryDTO
)
{
RestAssert
.
fail
(
null
==
queryDTO
.
getTimeS
()
||
null
==
queryDTO
.
getTimeE
(),
"开始或结束时间为空"
);
return
baseMapper
.
selectElectrolyteRatioStats
(
queryDTO
);
}
@Override
public
List
<
PMakeFeStatsVO
>
getPMakeFeStatsQuery
(
QueryDTO
queryDTO
)
{
RestAssert
.
fail
(
null
==
queryDTO
.
getTimeS
()
||
null
==
queryDTO
.
getTimeE
(),
"开始或结束时间为空"
);
return
baseMapper
.
selectPMakeFeStats
(
queryDTO
);
}
}
@Override
@Override
...
@@ -413,8 +502,8 @@ public class EntrustSampleServiceImpl extends BaseServiceImpl<EntrustSampleMappe
...
@@ -413,8 +502,8 @@ public class EntrustSampleServiceImpl extends BaseServiceImpl<EntrustSampleMappe
Map
<
String
,
String
>
mapReplace
=
new
HashMap
<>();
Map
<
String
,
String
>
mapReplace
=
new
HashMap
<>();
mapReplace
.
put
(
"#{nowDate}"
,
DateUtils
.
toYearMonthDay
(
new
Date
()));
mapReplace
.
put
(
"#{nowDate}"
,
DateUtils
.
toYearMonthDay
(
new
Date
()));
mapReplace
.
put
(
"#{sampleNum}"
,
countByEntrustId
(
entrust
.
getId
())
+
""
);
mapReplace
.
put
(
"#{sampleNum}"
,
countByEntrustId
(
entrust
.
getId
())
+
""
);
HSSFWorkbookUtil
.
replaceModel
(
mapReplace
,
xssfWorkbook
,
0
);
HSSFWorkbookUtil
.
replaceModel
(
mapReplace
,
xssfWorkbook
,
0
);
XSSFSheet
sheetOne
=
xssfWorkbook
.
getSheetAt
(
0
);
XSSFSheet
sheetOne
=
xssfWorkbook
.
getSheetAt
(
0
);
String
sheetName
=
sheetOne
.
getSheetName
();
String
sheetName
=
sheetOne
.
getSheetName
();
System
.
out
.
println
(
sheetName
);
System
.
out
.
println
(
sheetName
);
...
@@ -473,22 +562,22 @@ public class EntrustSampleServiceImpl extends BaseServiceImpl<EntrustSampleMappe
...
@@ -473,22 +562,22 @@ public class EntrustSampleServiceImpl extends BaseServiceImpl<EntrustSampleMappe
}
else
{
}
else
{
if
(
null
!=
sysFileTemplate
.
getMoreSheet
()&&
sysFileTemplate
.
getMoreSheet
()==
1
)
{
if
(
null
!=
sysFileTemplate
.
getMoreSheet
()
&&
sysFileTemplate
.
getMoreSheet
()
==
1
)
{
int
total
=
sampleVOList
.
size
();
int
total
=
sampleVOList
.
size
();
int
totalSheetSize
=
(
total
+
templateSampleNum
-
1
)/
templateSampleNum
;
int
totalSheetSize
=
(
total
+
templateSampleNum
-
1
)
/
templateSampleNum
;
List
<
List
<
EntrustSampleVO
>>
listList
=
Lists
.
partition
(
sampleVOList
,
templateSampleNum
);
List
<
List
<
EntrustSampleVO
>>
listList
=
Lists
.
partition
(
sampleVOList
,
templateSampleNum
);
for
(
int
i
=
1
;
i
<
totalSheetSize
;
i
++)
{
for
(
int
i
=
1
;
i
<
totalSheetSize
;
i
++)
{
xssfWorkbook
.
cloneSheet
(
0
,
sheetOne
.
getSheetName
()+(
i
+
1
));
xssfWorkbook
.
cloneSheet
(
0
,
sheetOne
.
getSheetName
()
+
(
i
+
1
));
}
}
for
(
int
k
=
0
;
k
<
listList
.
size
();
k
++)
{
for
(
int
k
=
0
;
k
<
listList
.
size
();
k
++)
{
Integer
beginRow
=
sysFileTemplate
.
getSampleBeginRow
();
Integer
beginRow
=
sysFileTemplate
.
getSampleBeginRow
();
List
<
EntrustSampleVO
>
sampleVOListIndex
=
listList
.
get
(
k
);
List
<
EntrustSampleVO
>
sampleVOListIndex
=
listList
.
get
(
k
);
for
(
EntrustSampleVO
vo
:
sampleVOListIndex
)
{
for
(
EntrustSampleVO
vo
:
sampleVOListIndex
)
{
List
<
EntrustSampleItemIndex
>
indexList
=
entrustSampleItemIndexService
.
listBySampleId
(
vo
.
getId
());
List
<
EntrustSampleItemIndex
>
indexList
=
entrustSampleItemIndexService
.
listBySampleId
(
vo
.
getId
());
vo
.
setIndexList
(
indexList
);
vo
.
setIndexList
(
indexList
);
XSSFSheet
sheetOneIndex
=
xssfWorkbook
.
getSheetAt
(
k
);
XSSFSheet
sheetOneIndex
=
xssfWorkbook
.
getSheetAt
(
k
);
XSSFRow
xssfRow
=
sheetOneIndex
.
getRow
(
beginRow
);
XSSFRow
xssfRow
=
sheetOneIndex
.
getRow
(
beginRow
);
for
(
EntrustReportTemplateConfig
config
:
configList
)
{
for
(
EntrustReportTemplateConfig
config
:
configList
)
{
...
@@ -507,7 +596,7 @@ public class EntrustSampleServiceImpl extends BaseServiceImpl<EntrustSampleMappe
...
@@ -507,7 +596,7 @@ public class EntrustSampleServiceImpl extends BaseServiceImpl<EntrustSampleMappe
}
}
}
else
{
}
else
{
Integer
beginRow
=
sysFileTemplate
.
getSampleBeginRow
();
Integer
beginRow
=
sysFileTemplate
.
getSampleBeginRow
();
int
insertRow
=
beginRow
+
sampleMergerNum
*
templateSampleNum
;
int
insertRow
=
beginRow
+
sampleMergerNum
*
templateSampleNum
;
XSSFRow
zeroRow
=
sheetOne
.
getRow
(
beginRow
);
XSSFRow
zeroRow
=
sheetOne
.
getRow
(
beginRow
);
...
@@ -803,7 +892,5 @@ public class EntrustSampleServiceImpl extends BaseServiceImpl<EntrustSampleMappe
...
@@ -803,7 +892,5 @@ public class EntrustSampleServiceImpl extends BaseServiceImpl<EntrustSampleMappe
}
}
}
}
}
}
}
}
src/main/java/com/patzn/cloud/service/lims/hmhj/service/impl/EntrustServiceImpl.java
View file @
92cf07ec
...
@@ -8,6 +8,7 @@ import com.patzn.cloud.commons.controller.LoginHelper;
...
@@ -8,6 +8,7 @@ import com.patzn.cloud.commons.controller.LoginHelper;
import
com.patzn.cloud.commons.toolkit.DateUtils
;
import
com.patzn.cloud.commons.toolkit.DateUtils
;
import
com.patzn.cloud.commons.toolkit.StringHandleUtils
;
import
com.patzn.cloud.commons.toolkit.StringHandleUtils
;
import
com.patzn.cloud.feign.base.client.SysOrgClient
;
import
com.patzn.cloud.feign.base.client.SysOrgClient
;
import
com.patzn.cloud.feign.lims.hmhj.client.LmsChemicalCategoryClient
;
import
com.patzn.cloud.service.base.entity.SysOrg
;
import
com.patzn.cloud.service.base.entity.SysOrg
;
import
com.patzn.cloud.service.hmhj.dto.EntrustDTO
;
import
com.patzn.cloud.service.hmhj.dto.EntrustDTO
;
import
com.patzn.cloud.service.hmhj.dto.EntrustSampleDTO
;
import
com.patzn.cloud.service.hmhj.dto.EntrustSampleDTO
;
...
@@ -16,6 +17,7 @@ import com.patzn.cloud.service.hmhj.enums.*;
...
@@ -16,6 +17,7 @@ import com.patzn.cloud.service.hmhj.enums.*;
import
com.patzn.cloud.service.hmhj.vo.EntrustSampleItemVO
;
import
com.patzn.cloud.service.hmhj.vo.EntrustSampleItemVO
;
import
com.patzn.cloud.service.hmhj.vo.EntrustSampleVO
;
import
com.patzn.cloud.service.hmhj.vo.EntrustSampleVO
;
import
com.patzn.cloud.service.hmhj.vo.EntrustVO
;
import
com.patzn.cloud.service.hmhj.vo.EntrustVO
;
import
com.patzn.cloud.service.lims.chemical.entity.LmsChemicalCategory
;
import
com.patzn.cloud.service.lims.common.service.ILmsMsgService
;
import
com.patzn.cloud.service.lims.common.service.ILmsMsgService
;
import
com.patzn.cloud.service.lims.hmhj.mapper.EntrustMapper
;
import
com.patzn.cloud.service.lims.hmhj.mapper.EntrustMapper
;
import
com.patzn.cloud.service.lims.hmhj.service.*
;
import
com.patzn.cloud.service.lims.hmhj.service.*
;
...
@@ -73,6 +75,9 @@ public class EntrustServiceImpl extends BaseServiceImpl<EntrustMapper, Entrust>
...
@@ -73,6 +75,9 @@ public class EntrustServiceImpl extends BaseServiceImpl<EntrustMapper, Entrust>
@Autowired
@Autowired
private
SysOrgClient
sysOrgClient
;
private
SysOrgClient
sysOrgClient
;
@Autowired
private
LmsChemicalCategoryClient
lmsChemicalCategoryClient
;
@Override
@Override
public
Page
<
Entrust
>
page
(
Page
<
Entrust
>
page
,
Entrust
entrust
)
{
public
Page
<
Entrust
>
page
(
Page
<
Entrust
>
page
,
Entrust
entrust
)
{
...
@@ -97,47 +102,82 @@ public class EntrustServiceImpl extends BaseServiceImpl<EntrustMapper, Entrust>
...
@@ -97,47 +102,82 @@ public class EntrustServiceImpl extends BaseServiceImpl<EntrustMapper, Entrust>
public
void
initSampleCode
(
EntrustSample
sample
)
{
public
void
initSampleCode
(
EntrustSample
sample
)
{
// 样品类型
String
category
=
sample
.
getCategory
();
RestAssert
.
fail
(
StringUtils
.
isBlank
(
category
),
"样品类型不能为空"
);
String
parentCategory
=
""
;
if
(
StringUtils
.
isNotBlank
(
category
))
{
LmsChemicalCategory
chemicalCategory
=
lmsChemicalCategoryClient
.
getTopCategory
(
category
).
getData
();
RestAssert
.
fail
(
null
==
chemicalCategory
,
"样品(物资)类型不能为空"
);
parentCategory
=
chemicalCategory
.
getName
();
}
Account
account
=
LoginHelper
.
getAccount
();
Account
account
=
LoginHelper
.
getAccount
();
int
codeTypeNo
=
0
;
int
codeTypeNo
=
0
;
List
<
SysOrg
>
orgList
=
sysOrgClient
.
getListByUserId
(
account
.
getUserId
()).
getData
();
List
<
SysOrg
>
orgList
=
sysOrgClient
.
getListByUserId
(
account
.
getUserId
()).
getData
();
//
是否包含二期部门
//
具体是哪一期
boolean
secondPhase
=
orgList
.
stream
().
filter
(
t
->
t
.
getName
().
contains
(
"二期"
)).
count
()
>
0
;
String
phase
=
orgList
.
stream
().
filter
(
t
->
t
.
getName
().
contains
(
"二期"
)).
count
()
>
0
?
"Z"
:
"F"
;
// 默认样品初始编号
// 默认样品初始编号
CodeTypeEnum
codeType
=
null
;
CodeTypeEnum
codeType
=
null
;
switch
(
sample
.
getName
()
)
{
switch
(
parentCategory
)
{
case
"原铝"
:
case
"原铝"
:
codeType
=
CodeTypeEnum
.
SAMPLE_YL_CODE
;
codeType
=
CodeTypeEnum
.
SAMPLE_YL_CODE
;
break
;
break
;
case
"电解质"
:
case
"电解质"
:
codeType
=
CodeTypeEnum
.
SAMPLE_DJZ_CODE
;
codeType
=
CodeTypeEnum
.
SAMPLE_DJZ_CODE
;
break
;
break
;
case
"外委检测"
:
case
"外委检测
物质
"
:
codeType
=
CodeTypeEnum
.
SAMPLE_WWJC_CODE
;
codeType
=
CodeTypeEnum
.
SAMPLE_WWJC_CODE
;
break
;
break
;
case
"三级编码物质"
:
codeType
=
CodeTypeEnum
.
SAMPLE_YFL_CODE
;
break
;
default
:
default
:
codeType
=
CodeTypeEnum
.
SAMPLE_CODE
;
codeType
=
CodeTypeEnum
.
SAMPLE_CODE
;
break
;
break
;
}
}
String
sampleCode
=
codeRuleService
.
getKey
((
Integer
)
codeType
.
getValue
(),
codeType
.
getName
(),
sample
);
String
sampleCode
=
codeRuleService
.
getKey
((
Integer
)
codeType
.
getValue
(),
codeType
.
getName
(),
sample
);
String
replaceStr
=
"XX"
,
inspectNo
=
""
,
secondCode
=
""
,
thirdCode
=
""
;
// 若为外委检测和三级编码,则查询质检编号
if
(
CodeTypeEnum
.
SAMPLE_WWJC_CODE
==
codeType
||
CodeTypeEnum
.
SAMPLE_YFL_CODE
==
codeType
)
{
List
<
UserInspectionCode
>
userInspectionCodeList
=
userInspectionCodeService
.
list
(
Condition
.
create
().
eq
(
"user_id"
,
account
.
getUserId
()).
eq
(
"type"
,
"ZJ"
).
eq
(
"deleted"
,
0
));
if
(
CollectionUtils
.
isNotEmpty
(
userInspectionCodeList
))
{
inspectNo
=
userInspectionCodeList
.
get
(
0
).
getNo
();
}
}
if
(
CodeTypeEnum
.
SAMPLE_YL_CODE
==
codeType
||
CodeTypeEnum
.
SAMPLE_DJZ_CODE
==
codeType
)
{
if
(
CodeTypeEnum
.
SAMPLE_YL_CODE
==
codeType
||
CodeTypeEnum
.
SAMPLE_DJZ_CODE
==
codeType
)
{
sampleCode
+=
sample
.
getSlotNo
();
sampleCode
+=
sample
.
getSlotNo
();
}
else
if
(
CodeTypeEnum
.
SAMPLE_WWJC_CODE
==
codeType
)
{
}
sampleCode
=
(
secondPhase
?
"Z"
:
"F"
)
+
sampleCode
.
substring
(
1
);
// 外委检测样品编号
// XX替换成质检员编号
else
if
(
CodeTypeEnum
.
SAMPLE_WWJC_CODE
==
codeType
)
{
// sampleCode = sampleCode.replace("XX", "01");
sampleCode
=
phase
+
sampleCode
.
substring
(
1
);
List
<
UserInspectionCode
>
userInspectionCodeList
=
userInspectionCodeService
.
list
(
Condition
.
create
().
eq
(
"user_id"
,
account
.
getUserId
()).
eq
(
"type"
,
"ZJ"
).
eq
(
"deleted"
,
0
));
secondCode
=
sampleCode
.
replace
(
replaceStr
,
""
);
if
(
CollectionUtils
.
isNotEmpty
(
userInspectionCodeList
)){
sampleCode
=
sampleCode
.
replace
(
replaceStr
,
inspectNo
);
sampleCode
=
sampleCode
.
replace
(
"XX"
,
userInspectionCodeList
.
get
(
0
).
getNo
());
}
}
// 三级编码默认使用第一级别的委托的编码,也就是默认为A
else
if
(
CodeTypeEnum
.
SAMPLE_YFL_CODE
==
codeType
)
{
sampleCode
=
phase
+
sampleCode
.
substring
(
1
);
secondCode
=
sampleCode
.
replace
(
"A"
,
"B"
).
replace
(
replaceStr
,
inspectNo
);
thirdCode
=
sampleCode
.
replace
(
"A"
,
"C"
).
replace
(
replaceStr
,
"HY"
);
sampleCode
=
sampleCode
.
replace
(
replaceStr
,
inspectNo
);
}
}
if
(
StringUtils
.
isNotBlank
(
sampleCode
))
{
if
(
StringUtils
.
isNotBlank
(
sampleCode
))
{
sample
.
setCode
(
sampleCode
);
sample
.
setCode
(
sampleCode
);
// 现只有一级编码
sample
.
setCodeType
(
codeTypeNo
);
sample
.
setFirstCode
(
sampleCode
);
sample
.
setFirstCode
(
sampleCode
);
// 默认一级编码
sample
.
setCodeType
(
codeTypeNo
);
// 若为三级编号,修改对应类别
if
(
codeType
==
CodeTypeEnum
.
SAMPLE_WWJC_CODE
)
{
sample
.
setCodeType
(
2
);
sample
.
setSecondCode
(
secondCode
);
}
else
if
(
codeType
==
CodeTypeEnum
.
SAMPLE_YFL_CODE
)
{
sample
.
setCodeType
(
3
);
sample
.
setSecondCode
(
secondCode
);
sample
.
setThirdCode
(
thirdCode
);
}
}
}
}
}
...
...
src/main/resources/mapper/hmhj/EntrustSampleItemMapper.xml
View file @
92cf07ec
...
@@ -35,15 +35,18 @@
...
@@ -35,15 +35,18 @@
<select
id=
"selectByItemLeftRight"
resultType=
"com.patzn.cloud.service.hmhj.vo.EntrustSampleItemVO"
>
<select
id=
"selectByItemLeftRight"
resultType=
"com.patzn.cloud.service.hmhj.vo.EntrustSampleItemVO"
>
WITH i AS (
WITH i AS (
SELECT
SELECT
id,
id,
entrust_sample_id,
entrust_sample_id,
name,
name,
status,
status,
company_id,
company_id,
standard,
standard,
group_name,
group_name,
test_value,
test_value,
group_id
group_id,
tester,
tester_id,
test_time
FROM
FROM
entrust_sample_item
entrust_sample_item
WHERE
WHERE
...
...
src/main/resources/mapper/hmhj/EntrustSampleMapper.xml
View file @
92cf07ec
...
@@ -124,4 +124,229 @@
...
@@ -124,4 +124,229 @@
</select>
</select>
<!--原铝品味统计查询-->
<select
id=
"selectAlTasteStats"
resultType=
"com.patzn.cloud.service.hmhj.vo.AlTasteStatsVO"
>
with ix as (
SELECT
i.company_id,
i.entrust_sample_id,
(case when sum(to_number(ii.test_value,'9999.99'))
<
= 1.5 then 1 else 0 end) "al_85_num",
(case when sum(to_number(ii.test_value,'9999.99'))
>
1.5 and sum(to_number(ii.test_value,'9999.99'))
<
= 3 then 1 else 0 end) "al_70_num",
sum(case when ii."name" = 'Fe%' and to_number(ii.test_value,'9999.99')
<
= 0.1 then 1 else 0 end) "fe_10_num",
sum(case when ii."name" = 'Fe%' and to_number(ii.test_value,'9999.99')
<
= 0.08 then 1 else 0 end) "fe_08_num"
FROM
entrust_sample_item i,
entrust_sample_item_index ii
WHERE
i.ID = ii.entrust_sample_item_id
AND i.deleted = 0
AND ii.deleted = 0
and ii.test_value is not null
GROUP BY i.company_id,i.entrust_sample_id
)
SELECT
e.model "branch",
e.plant,
COUNT ( 1 ) "total",
( CASE WHEN COUNT ( 1 ) / ${vo.days} > 1 THEN ( COUNT ( 1 ) / ${vo.days} / 2 ) ELSE 1 END ) "slots_num",
sum(ix.al_85_num) "al_85_num",
round(coalesce(sum(ix.al_85_num),0) / COUNT ( 1 ),4) "al_85_per",
round(coalesce(sum(ix.al_85_num),0) / ${vo.days} / 2) "al_85_slots_num",
sum(ix.al_70_num) "al_70_num",
round(coalesce(sum(ix.al_70_num),0) / COUNT ( 1 ),4) "al_70_per",
round(coalesce(sum(ix.al_70_num),0) / ${vo.days} / 2) "al_70_slots_num",
sum(ix.fe_10_num) "fe_10_num",
round(coalesce(sum(ix.fe_10_num),0) / COUNT ( 1 ),4) "fe_10_per",
round(coalesce(sum(ix.fe_10_num),0) / ${vo.days} / 2) "fe_10_slots_num",
sum(ix.fe_08_num) "fe_08_num",
round(coalesce(sum(ix.fe_08_num),0) / COUNT ( 1 ),4) "fe_08_per",
round(coalesce(sum(ix.fe_08_num),0) / ${vo.days} / 2) "fe_08_slots_num"
FROM
entrust_sample s
JOIN electrolyzer e ON s.electrolyzer_id = e.ID
LEFT JOIN ix ix ON ix.entrust_sample_id = s.id
WHERE
s.deleted = 0 and e.deleted = 0 and s.name = '原铝'
<if
test=
"null != vo.timeS and null != vo.timeE"
>
AND EXISTS (
select 1 from entrust_sample_item si where si.deleted = 0 and si.entrust_sample_id = s.id
and to_char(si.test_time, 'YYYY-MM-dd HH24:MI:SS') BETWEEN #{vo.timeS} AND #{vo.timeE}
)
</if>
GROUP BY e.model, e.plant
</select>
<!--电解质分子比统计查询-->
<select
id=
"selectElectrolyteRatioStats"
resultType=
"com.patzn.cloud.service.hmhj.vo.ElectrolyteRatioStatsVO"
>
with ix as (
SELECT
i.company_id,
i.entrust_sample_id,
sum(case when ii.name = '电解质-MgF2' then 1 else 0 end) "mgf_num",
sum(case when ii.name = '电解质-MgF2' then to_number(ii.test_value,'9999.99') else 0.00 end) "mgf_val",
sum(case when ii.name = '电解质-氧化铝' then 1 else 0 end) "alo_num",
sum(case when ii.name = '电解质-氧化铝' then to_number(ii.test_value,'9999.99') else 0.00 end) "alo_val",
sum(case when ii.name = '电解质-氟化钙' then 1 else 0 end) "caf_num",
sum(case when ii.name = '电解质-氟化钙' then to_number(ii.test_value,'9999.99') else 0.00 end) "caf_val",
sum(case when ii.name = '电解质-分子比' then 1 else 0 end) "fzb_num",
sum(case when ii.name = '电解质-分子比' then to_number(ii.test_value,'9999.99') else 0.00 end) "fzb_val",
sum(case when ii.name = '电解质-分子比' and to_number(ii.test_value,'9999.99')
<
= 2.15 then 1 else 0 end) "lt216_num",
sum(case when ii.name = '电解质-分子比' and
to_number(ii.test_value,'9999.99')
>
2.15 and to_number(ii.test_value,'9999.99')
<
= 2.20
then 1 else 0 end
) "gt215_lte220_num",
sum(case when ii.name = '电解质-分子比' and
to_number(ii.test_value,'9999.99')
>
2.20 and to_number(ii.test_value,'9999.99')
<
= 2.25
then 1 else 0 end
) "gt220_lte225_num",
sum(case when ii.name = '电解质-分子比' and
to_number(ii.test_value,'999.99')
>
2.25 and to_number(ii.test_value,'9999.99')
<
= 2.30
then 1 else 0 end
) "gt225_lte230_num",
sum(case when ii.name = '电解质-分子比' and
to_number(ii.test_value,'999.99')
>
2.30 and to_number(ii.test_value,'9999.99')
<
= 2.35
then 1 else 0 end
) "gt230_lte235_num",
sum(case when ii.name = '电解质-分子比' and
to_number(ii.test_value,'999.99')
>
2.35 and to_number(ii.test_value,'9999.99')
<
= 2.40
then 1 else 0 end
) "gt235_lte240_num",
sum(case when ii.name = '电解质-分子比' and to_number(ii.test_value,'999.99')
>
2.40 then 1 else 0 end ) "gt240_num"
FROM
entrust_sample_item i,
entrust_sample_item_index ii
WHERE
i.ID = ii.entrust_sample_item_id
and ii.name like '%电解质-%'
AND i.deleted = 0
AND ii.deleted = 0
and ii.test_value is not null
GROUP BY i.company_id,i.entrust_sample_id
)
SELECT
e.model "branch", count(1) "total",
coalesce(round(sum(ix.mgf_val) / sum(ix.mgf_num)),0) "mgf_avg_num",
coalesce(round(sum(ix.alo_val) / sum(ix.alo_num)),0) "alo_avg_num",
coalesce(round(sum(ix.caf_val) / sum(ix.caf_num)),0) "caf_avg_num",
coalesce(round(sum(ix.fzb_val) / sum(ix.fzb_num)),0) "fzb_avg_num",
coalesce(sum(ix.lt216_num),0) "lt216_num",
coalesce(sum(ix.gt215_lte220_num),0) "gt215_lte220_num",
coalesce(sum(ix.gt220_lte225_num),0) "gt220_lte225_num",
coalesce(sum(ix.gt225_lte230_num),0) "gt225_lte230_num",
coalesce(sum(ix.gt230_lte235_num),0) "gt230_lte235_num",
coalesce(sum(ix.gt235_lte240_num),0) "gt235_lte240_num",
coalesce(sum(ix.gt240_num),0) "gt240_num",
coalesce(round(sum(ix.lt216_num) / count(1),2),0.00) "lt216_per",
coalesce(round(sum(ix.gt215_lte220_num) / count(1),2),0.00) "gt215_lte220_per",
coalesce(round(sum(ix.gt220_lte225_num) / count(1),2),0.00) "gt220_lte225_per",
coalesce(round(sum(ix.gt225_lte230_num) / count(1),2),0.00) "gt225_lte230_per",
coalesce(round(sum(ix.gt230_lte235_num) / count(1),2),0.00) "gt230_lte235_per",
coalesce(round(sum(ix.gt235_lte240_num) / count(1),2),0.00) "gt235_lte240_per",
coalesce(round(sum(ix.gt240_num) / count(1),2),0.00) "gt240_per"
FROM
entrust_sample s
JOIN electrolyzer e ON s.electrolyzer_id = e.ID
LEFT JOIN ix ix ON ix.entrust_sample_id = s.id
WHERE
s.deleted = 0 and e.deleted = 0
and s.name = '电解质'
<if
test=
"null != vo.timeS and null != vo.timeE"
>
AND EXISTS (
select 1 from entrust_sample_item si where si.deleted = 0 and si.entrust_sample_id = s.id
and to_char(si.test_time, 'YYYY-MM-dd HH24:MI:SS') BETWEEN #{vo.timeS} AND #{vo.timeE}
)
</if>
GROUP BY e.model
</select>
<!--磷生铁统计查询-->
<select
id=
"selectPMakeFeStats"
resultType=
"com.patzn.cloud.service.hmhj.vo.PMakeFeStatsVO"
>
with pi as (
SELECT
PI.*,
(CASE WHEN PI.C_VAL
>
= 2.50 AND PI.C_VAL
<
= 3.10 THEN 1 ELSE 0 END) "c_in_num",
(CASE WHEN PI.C_VAL
>
= 2.00 AND PI.C_VAL
<
= 3.00 THEN 1 ELSE 0 END) "si_in_num",
(CASE WHEN PI.C_VAL
>
= 0.60 AND PI.C_VAL
<
= 0.90 THEN 1 ELSE 0 END) "mn_in_num",
(CASE WHEN PI.C_VAL
>
= 0.80 AND PI.C_VAL
<
= 1.40 THEN 1 ELSE 0 END) "p_in_num",
(CASE WHEN PI.C_VAL
>
0.15 THEN 1 ELSE 0 END) "s_in_num",
(CASE WHEN PI.C_VAL
<
2.50 THEN 1 ELSE 0 END) "c_lt_num",
(CASE WHEN PI.C_VAL
<
2.00 THEN 1 ELSE 0 END) "si_lt_num",
(CASE WHEN PI.C_VAL
<
0.60 THEN 1 ELSE 0 END) "mn_lt_num",
(CASE WHEN PI.C_VAL
<
0.80 THEN 1 ELSE 0 END) "p_lt_num",
(CASE WHEN PI.C_VAL
>
3.10 THEN 1 ELSE 0 END) "c_gt_num",
(CASE WHEN PI.C_VAL
>
3.00 THEN 1 ELSE 0 END) "si_gt_num",
(CASE WHEN PI.C_VAL
>
0.90 THEN 1 ELSE 0 END) "mn_gt_num",
(CASE WHEN PI.C_VAL
>
1.40 THEN 1 ELSE 0 END) "p_gt_num",
(CASE WHEN PI.C_VAL
>
= 0.15 THEN 1 ELSE 0 END) "s_gt_num"
FROM (
SELECT
i.company_id,
u.period,
i.entrust_sample_id,
round(sum(case when ii.name = '磷生铁-C' then to_number(ii.test_value,'9999.99') else 0.00 end) / func_if_int(sum(case when ii.name = '磷生铁-C' then 1 else 0 end) = 0,1,sum(case when ii.name = '磷生铁-C' then 1 else 0 end)),2) "c_val",
round(sum(case when ii.name = '磷生铁-Si' then to_number(ii.test_value,'9999.99') else 0.00 end) / func_if_int(sum(case when ii.name = '磷生铁-Si' then 1 else 0 end) = 0,1,sum(case when ii.name = '磷生铁-C' then 1 else 0 end)),2) "si_val",
round(sum(case when ii.name = '磷生铁-Mn' then to_number(ii.test_value,'9999.99') else 0.00 end) / func_if_int(sum(case when ii.name = '磷生铁-Mn' then 1 else 0 end) = 0,1,sum(case when ii.name = '磷生铁-Mn' then 1 else 0 end)),2) "mn_val",
round(sum(case when ii.name = '磷生铁-P' then to_number(ii.test_value,'9999.99') else 0.00 end) / func_if_int(sum(case when ii.name = '磷生铁-P' then 1 else 0 end) = 0,1,sum(case when ii.name = '磷生铁-P' then 1 else 0 end)),2) "p_val",
round(sum(case when ii.name = '磷生铁-S' then to_number(ii.test_value,'9999.99') else 0.00 end) / func_if_int(sum(case when ii.name = '磷生铁-S' then 1 else 0 end) = 0,1,sum(case when ii.name = '磷生铁-S' then 1 else 0 end)),2) "s_val"
FROM
entrust_sample_item i,
entrust_sample_item_index ii,
dblink ('pc_base', 'select * from v_user_period') as u ( user_id int8, period VARCHAR)
WHERE
i.ID = ii.entrust_sample_item_id
AND I.TESTER_ID = u.USER_ID
-- and ii.name like '%磷生铁-%'
AND i.deleted = 0
AND ii.deleted = 0
AND ii.test_value is not null
<if
test=
"null != vo.timeS and null != vo.timeE"
>
and to_char(i.test_time, 'YYYY-MM-dd HH24:MI:SS') BETWEEN #{vo.timeS} AND #{vo.timeE}
</if>
GROUP BY i.company_id,u.period,i.entrust_sample_id
) PI
)
select
round(sum(pi.c_val) / count(1),2) "c_val",
round(sum(pi.si_val) / count(1),2) "si_val",
round(sum(pi.mn_val) / count(1),2) "mn_val",
round(sum(pi.p_val) / count(1),2) "p_val",
round(sum(pi.s_val) / count(1),2) "s_val",
round(sum(pi.c_in_num) / count(1),2) "c_per",
round(sum(pi.si_in_num) / count(1),2) "si_per",
round(sum(pi.mn_in_num) / count(1),2) "mn_per",
round(sum(pi.p_in_num) / count(1),2) "p_per",
round(sum(pi.s_in_num) / count(1),2) "s_per",
sum(pi.c_lt_num) "c_lt_num",
sum(pi.si_lt_num) "si_lt_num",
sum(pi.mn_lt_num) "mn_lt_num",
sum(pi.p_lt_num) "p_lt_num",
sum(pi.c_in_num) "c_in_num",
sum(pi.si_in_num) "si_in_num",
sum(pi.mn_in_num) "mn_in_num",
sum(pi.p_in_num) "p_in_num",
sum(pi.s_in_num) "s_in_num",
sum(pi.c_gt_num) "c_gt_num",
sum(pi.si_gt_num) "si_gt_num",
sum(pi.mn_gt_num) "mn_gt_num",
sum(pi.p_gt_num) "p_gt_num",
sum(pi.s_gt_num) "s_gt_num"
from entrust_sample s
join pi pi on pi.entrust_sample_id = s.id
where s.deleted = 0
group by pi.period
</select>
</mapper>
</mapper>
src/test/java/resources/db_sql/base/v113/20210629新增视图.sql
0 → 100644
View file @
92cf07ec
-- 新增视图-用户所属第几期
-- 新增视图-用户所属第几期
create
or
replace
view
v_user_period
as
SELECT
rel
.
user_id
,
CASE
WHEN
sum
(
strpos
(
r
.
name
::
text
,
'三期'
::
text
))
>
0
THEN
'三期'
::
text
ELSE
'二期'
::
text
END
AS
period
FROM
sys_user_rel_role
rel
JOIN
sys_role
r
ON
r
.
id
=
rel
.
role_id
WHERE
r
.
status
=
1
GROUP
BY
rel
.
user_id
\ No newline at end of file
src/test/java/resources/db_sql/hmhj/v113/20210629新增函数.sql
0 → 100644
View file @
92cf07ec
-- 开启dblink拓展
-- 开启dblink拓展
--执行:create extension dblink;
create
extension
dblink
;
-- 创建数据库链接
SELECT
dblink_connect
(
'dev_base'
,
'host=localhost dbname=dev_base user=postgres password=post123'
);
SELECT
dblink_connect
(
'dev_lims'
,
'host=localhost dbname=dev_lims user=postgres password=post123'
);
SELECT
dblink_connect
(
'pc_base'
,
'host=localhost dbname=pc_base user=hjhmdb password=hm57hj6'
);
SELECT
dblink_connect
(
'pc_lims'
,
'host=localhost dbname=pc_lims user=hjhmdb password=hm57hj6'
);
-------------------------------------------------------------------------------------------------
-- 创建字符,数字处理函数
CREATE
OR
REPLACE
FUNCTION
"public"
.
"func_decode"
(
VARIADIC
"p_decode_list"
_text
)
RETURNS
"pg_catalog"
.
"text"
AS
$
BODY
$
declare
-- 获取数组长度(即入参个数)
v_len
integer
:
=
array_length
(
p_decode_list
,
1
);
-- 声明存放返回值的变量
v_ret
text
;
begin
/*
* 功能说明:模拟Oracle中的DECODE功能(字符串处理, 其它格式可以自行转换返回值)
* 参数说明:格式同Oracle相同,至少三个参数
* 实现原理: 1、VARIADIC 允许变参; 2、Oracle中的DECODE是拿第一个数依次和之后的偶数位值进行比较,相同则取偶数位+1的数值,否则取最后一位值(最后一位为偶数为,否则为null)
*/
-- 同Oracle相同当参数不足三个抛出异常
if
v_len
>=
3
then
-- Oracle中的DECODE是拿第一个数依次和之后的偶数位值进行比较,相同则取偶数位+1的数值
for
i
in
2
..(
v_len
-
1
)
loop
v_ret
:
=
null
;
if
mod
(
i
,
2
)
=
0
then
if
p_decode_list
[
1
]
=
p_decode_list
[
i
]
then
v_ret
:
=
p_decode_list
[
i
+
1
];
elsif
p_decode_list
[
1
]
<>
p_decode_list
[
i
]
then
if
v_len
=
i
+
2
and
v_len
>
3
then
v_ret
:
=
p_decode_list
[
v_len
];
end
if
;
end
if
;
end
if
;
exit
when
v_ret
is
not
null
;
end
loop
;
else
raise
exception
'UPG-00938: not enough args for function.'
;
end
if
;
return
v_ret
;
end
;
$
BODY
$
LANGUAGE
plpgsql
VOLATILE
COST
100
------------------------------------------------------------------------------------------------
CREATE
OR
REPLACE
FUNCTION
"public"
.
"func_if"
(
"p_condition"
bool
,
"p_fist_val"
text
,
"p_last_val"
text
)
RETURNS
"pg_catalog"
.
"text"
AS
$
BODY
$
declare
v_ret_val
text
;
begin
/*
* 功能说明:模拟三元表达式 ( condition ? value1 : value2 );
* 参数说明:p_condition 接收 boolean类型的表达式 如: 1 = 1, 2 > 1 等; 后两个值是根据p_condition的真假对应的返回值
* 实现原理: p_condition 为真则返回p_fist_val, 否则返回P_last_val
*/
v_ret_val
:
=
null
;
if
true
=
p_condition
then
v_ret_val
:
=
p_fist_val
;
elsif
false
=
p_condition
then
v_ret_val
:
=
P_last_val
;
end
if
;
return
v_ret_val
;
end
;
$
BODY
$
LANGUAGE
plpgsql
VOLATILE
COST
100
--------------------------------------------------------------------------------
CREATE
OR
REPLACE
FUNCTION
"public"
.
"func_if_int"
(
"p_condition"
bool
,
"p_fist_val"
int8
,
"p_last_val"
int8
)
RETURNS
"pg_catalog"
.
"int8"
AS
$
BODY
$
declare
v_ret_val
int8
;
begin
/*
* 功能说明:模拟三元表达式 ( condition ? value1 : value2 );
* 参数说明:p_condition 接收 boolean类型的表达式 如: 1 = 1, 2 > 1 等; 后两个值是根据p_condition的真假对应的返回值
* 实现原理: p_condition 为真则返回p_fist_val, 否则返回P_last_val
*/
v_ret_val
:
=
null
;
if
true
=
p_condition
then
v_ret_val
:
=
p_fist_val
;
elsif
false
=
p_condition
then
v_ret_val
:
=
P_last_val
;
end
if
;
return
v_ret_val
;
end
;
$
BODY
$
LANGUAGE
plpgsql
VOLATILE
COST
100
----------------------------------------------------------------------------------
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