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
81445f50
Commit
81445f50
authored
Mar 14, 2022
by
lijingjing
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
修改样品下检测项目为空的可能性处理逻辑;
parent
24732be7
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
144 additions
and
36 deletions
+144
-36
EntrustFlowUtils.java
...atzn/cloud/service/lims/hmhj/common/EntrustFlowUtils.java
+70
-14
HttpConst.java
...atzn/cloud/service/lims/hmhj/common/consts/HttpConst.java
+1
-1
IEntrustSampleService.java
...loud/service/lims/hmhj/service/IEntrustSampleService.java
+3
-0
EntrustReportServiceImpl.java
...vice/lims/hmhj/service/impl/EntrustReportServiceImpl.java
+38
-20
EntrustSampleServiceImpl.java
...vice/lims/hmhj/service/impl/EntrustSampleServiceImpl.java
+32
-1
No files found.
src/main/java/com/patzn/cloud/service/lims/hmhj/common/EntrustFlowUtils.java
View file @
81445f50
package
com
.
patzn
.
cloud
.
service
.
lims
.
hmhj
.
common
;
import
com.baomidou.mybatisplus.toolkit.CollectionUtils
;
import
com.patzn.cloud.commons.api.RestAssert
;
import
com.patzn.cloud.service.hmhj.enums.*
;
import
com.patzn.cloud.service.lims.common.consts.Symbol
;
import
org.apache.commons.lang3.StringUtils
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
java.util.Arrays
;
import
java.util.List
;
import
java.util.stream.Collectors
;
/**
* 委托流程控制(状态控制)
*
* @author Meazty
*/
public
class
EntrustFlowUtils
{
private
static
final
Logger
logger
=
LoggerFactory
.
getLogger
(
EntrustFlowUtils
.
class
);
private
static
final
int
FLOW_TEST
=
7
;
private
static
final
int
FLOW_ALLOT
=
6
;
private
static
final
int
FLOW_RECEIVE
=
5
;
public
static
final
String
SEQ
=
Symbol
.
FORWARD
;
public
static
List
<
String
>
getFlowStatusList
(
String
statusPath
)
{
...
...
@@ -22,15 +34,24 @@ public class EntrustFlowUtils {
}
public
static
EntrustFlowEnum
getPrevFlowStatus
(
String
name
,
String
statusPath
)
{
if
(
StringUtils
.
isBlank
(
name
))
{
if
(
StringUtils
.
isBlank
(
name
)
||
StringUtils
.
isBlank
(
statusPath
)
)
{
return
null
;
}
List
<
String
>
list
=
getFlowStatusList
(
statusPath
);
if
(
CollectionUtils
.
isEmpty
(
list
))
{
return
null
;
}
int
index
=
list
.
indexOf
(
name
);
RestAssert
.
fail
(-
1
==
index
,
String
.
format
(
"状态路径【%s】中不存在【%s】节点!"
,
statusPathName
(
list
),
EntrustFlowEnum
.
convert
(
name
).
getDisplay
()
)
);
if
(
0
==
index
)
{
return
null
;
}
...
...
@@ -39,11 +60,11 @@ public class EntrustFlowUtils {
public
static
EntrustStatusEnum
getPrevStatus
(
String
name
,
String
statusPath
)
{
EntrustFlowEnum
prevFlowEnum
=
getPrevFlowStatus
(
name
,
statusPath
);
return
null
==
prevFlowEnum
?
null
:
getStatus
(
prevFlowEnum
.
getValue
()
.
intValue
()
);
return
null
==
prevFlowEnum
?
null
:
getStatus
(
prevFlowEnum
.
getValue
());
}
public
static
EntrustStatusEnum
getStatus
(
EntrustFlowEnum
flowEnum
)
{
return
null
==
flowEnum
?
null
:
getStatus
(
flowEnum
.
getValue
()
.
intValue
()
);
return
null
==
flowEnum
?
null
:
getStatus
(
flowEnum
.
getValue
());
}
public
static
EntrustFlowEnum
getNextFlowStatus
(
String
name
,
String
statusPath
)
{
...
...
@@ -56,22 +77,34 @@ public class EntrustFlowUtils {
}
int
index
=
list
.
indexOf
(
name
);
RestAssert
.
fail
(-
1
==
index
,
String
.
format
(
"状态路径【%s】中不存在【%s】节点!"
,
statusPathName
(
list
),
EntrustFlowEnum
.
convert
(
name
).
getDisplay
()
)
);
if
(
list
.
size
()
-
1
==
index
)
{
return
null
;
}
return
EntrustFlowEnum
.
convert
(
list
.
get
(
index
+
1
));
}
/**
* @param name 节点名称
* @param statusPath 状态路径
* @return EntrustStatusEnum
*/
public
static
EntrustStatusEnum
getNextStatus
(
String
name
,
String
statusPath
)
{
EntrustFlowEnum
flowEnum
=
getNextFlowStatus
(
name
,
statusPath
);
return
null
==
flowEnum
?
null
:
getStatus
(
flowEnum
.
getValue
()
.
intValue
()
);
return
null
==
flowEnum
?
null
:
getStatus
(
flowEnum
.
getValue
());
}
/**
* 根据流程状态值获取委托状态
*
* @param flowValue
* @return
* @param flowValue
流程节点值
* @return
EntrustStatusEnum
*/
public
static
EntrustStatusEnum
getStatus
(
int
flowValue
)
{
EntrustStatusEnum
statusEnum
=
null
;
...
...
@@ -103,23 +136,23 @@ public class EntrustFlowUtils {
case
15
:
statusEnum
=
EntrustStatusEnum
.
QUALITY_CHECK
;
break
;
default
:
}
return
statusEnum
;
}
public
static
boolean
isContains
(
String
statusPath
,
String
flowStatus
)
{
public
static
boolean
contains
(
String
flowStatus
,
String
statusPath
)
{
if
(
StringUtils
.
isBlank
(
statusPath
)
||
StringUtils
.
isBlank
(
flowStatus
))
{
return
false
;
}
List
<
String
>
flowList
=
Arrays
.
asList
(
statusPath
.
split
(
SEQ
));
return
flowList
.
stream
().
anyMatch
(
t
->
t
.
equals
(
flowStatus
));
return
Arrays
.
asList
(
statusPath
.
split
(
SEQ
)).
contains
(
flowStatus
);
}
public
static
EntrustSampleStatusEnum
getSampleStatus
(
EntrustFlowEnum
flowEnum
)
{
if
(
null
==
flowEnum
)
{
return
null
;
}
int
flowStatus
=
flowEnum
.
getValue
()
.
intValue
()
;
int
flowStatus
=
flowEnum
.
getValue
();
EntrustSampleStatusEnum
sampleStatusEnum
=
null
;
switch
(
flowStatus
)
{
case
1
:
...
...
@@ -157,6 +190,7 @@ public class EntrustFlowUtils {
case
15
:
sampleStatusEnum
=
EntrustSampleStatusEnum
.
END
;
break
;
default
:
}
return
sampleStatusEnum
;
}
...
...
@@ -165,13 +199,13 @@ public class EntrustFlowUtils {
if
(
null
==
flowEnum
)
{
return
null
;
}
int
flowStatus
=
flowEnum
.
getValue
()
.
intValue
()
;
int
flowStatus
=
flowEnum
.
getValue
();
EntrustSampleItemStatusEnum
itemStatusEnum
;
if
(
flowStatus
>
7
)
{
if
(
flowStatus
>
FLOW_TEST
)
{
itemStatusEnum
=
EntrustSampleItemStatusEnum
.
END
;
}
else
if
(
flowStatus
>
6
)
{
}
else
if
(
flowStatus
>
FLOW_ALLOT
)
{
itemStatusEnum
=
EntrustSampleItemStatusEnum
.
TEST
;
}
else
if
(
flowStatus
>
5
)
{
}
else
if
(
flowStatus
>
FLOW_RECEIVE
)
{
itemStatusEnum
=
EntrustSampleItemStatusEnum
.
ALLOT
;
}
else
{
itemStatusEnum
=
EntrustSampleItemStatusEnum
.
DRAFT
;
...
...
@@ -202,4 +236,26 @@ public class EntrustFlowUtils {
}
return
null
;
}
public
static
String
statusPathName
(
List
<
String
>
list
)
{
if
(
CollectionUtils
.
isEmpty
(
list
))
{
return
""
;
}
return
list
.
stream
().
map
(
t
->
{
try
{
EntrustFlowEnum
flowEnum
=
EntrustFlowEnum
.
convert
(
t
);
return
flowEnum
.
getDisplay
();
}
catch
(
Exception
e
)
{
logger
.
error
(
"类型转换错误"
);
}
return
t
;
}).
collect
(
Collectors
.
joining
(
SEQ
));
}
public
static
String
statusPathName
(
String
statusPath
)
{
if
(
StringUtils
.
isBlank
(
statusPath
))
{
return
""
;
}
return
statusPathName
(
Arrays
.
asList
(
statusPath
.
split
(
SEQ
)));
}
}
src/main/java/com/patzn/cloud/service/lims/hmhj/common/consts/HttpConst.java
View file @
81445f50
...
...
@@ -25,5 +25,5 @@ public class HttpConst {
/**
* GmHu6SqGdmmtY6Aup5kp1jlWenQz+vzQ6TBN6x/3dOwfNULkTNLx2/QA9Vhq1F7LEEXP6UKzFCxt99srTFd59DjGOgmrDnvVOYBgtSYbSTD2JNeRRD8AKe/v3TW9rWFtOMfGHtTkh6AxbovaSXa99tI5HUInT2wi2xwkdo9DKOQ=
*/
public
static
final
String
ERP_TOKEN
=
"
GmHu6SqGdmmtY6Aup5kp1jlWenQz+vzQ6TBN6x/3dOwfNULkTNLx2/QA9Vhq1F7LEEXP6UKzFCxt99srTFd59DjGOgmrDnvVOYBgtSYbSTD2JNeRRD8AKe/v3TW9rWFtOMfGHtTkh6AxbovaSXa99tI5HUInT2wi2xwkdo9DKOQ
="
;
public
static
final
String
ERP_TOKEN
=
"
HbMhpXBu5y7kdg26WpdEVZcx9FFqBCawe1NYr4eb3LsiYu6EOAFyh9QuE/mEtQBwzi9kZHEhMUieOp54C2CQ0UG92O0nLWSO4+V2BtWS4YeuRttZAQc3Av1NxairBQeK5eOxG+4Wn2vn/Rs+mBrCZNco39ad85hHtUwqGhjE4+k
="
;
}
src/main/java/com/patzn/cloud/service/lims/hmhj/service/IEntrustSampleService.java
View file @
81445f50
...
...
@@ -11,6 +11,7 @@ import com.patzn.cloud.service.hmhj.dto.StatsQueryDTO;
import
com.patzn.cloud.service.hmhj.entity.Entrust
;
import
com.patzn.cloud.service.hmhj.entity.EntrustSample
;
import
com.patzn.cloud.service.hmhj.enums.EntrustFlowEnum
;
import
com.patzn.cloud.service.hmhj.enums.EntrustSampleStatusEnum
;
import
com.patzn.cloud.service.hmhj.vo.*
;
import
javax.servlet.http.HttpServletResponse
;
...
...
@@ -138,4 +139,6 @@ public interface IEntrustSampleService extends IBaseService<EntrustSample> {
boolean
isRepeatSampleCode
(
EntrustSample
sample
);
boolean
deletePhysicalByEntrustIds
(
List
<
Long
>
ids
);
boolean
updateStatus
(
EntrustSampleStatusEnum
sampleStatus
,
List
<
Long
>
sampleIds
);
}
src/main/java/com/patzn/cloud/service/lims/hmhj/service/impl/EntrustReportServiceImpl.java
View file @
81445f50
...
...
@@ -604,20 +604,30 @@ public class EntrustReportServiceImpl extends BaseServiceImpl<EntrustReportMappe
@Transactional
(
rollbackFor
=
Exception
.
class
)
protected
boolean
doExecuteSubmit
(
Long
[]
ids
,
EntrustFlowEnum
fromFlowStatus
,
EntrustFlowEnum
toFlowStatus
,
Account
account
)
{
Entrust
entrust
=
handleConditionGetEntrust
(
ids
);
String
statusPath
=
entrust
.
getStatusPath
(),
flowStatus
=
entrust
.
getFlowStatus
();
List
<
Long
>
sampleIds
=
getSampleIds
(
ids
);
RestAssert
.
fail
(
null
==
sampleIds
||
sampleIds
.
isEmpty
(),
"报告样品信息为空"
);
// 判断配置了路径可能出现错的情况
if
(
fromFlowStatus
==
EntrustFlowEnum
.
REPORT_ALLOW
&&
(
toFlowStatus
==
EntrustFlowEnum
.
REPORT_ISSUE
||
toFlowStatus
==
EntrustFlowEnum
.
REPORT_SEND
||
toFlowStatus
==
EntrustFlowEnum
.
QUALITY_INSPECT
))
{
judgeStatusPath
(
entrust
,
toFlowStatus
);
// 处理状态路径
// 对于状态路径,配置优先于正常处理逻辑
logger
.
error
(
"流程总节点:{}"
,
statusPath
);
logger
.
error
(
"当前流程节点:{}"
,
flowStatus
);
// 若起始节点不一致,当以传递过来的节点为准
if
(!
Objects
.
equals
(
flowStatus
,
fromFlowStatus
.
getName
()))
{
flowStatus
=
fromFlowStatus
.
getName
();
entrust
.
setFlowStatus
(
flowStatus
);
}
// 是否可以进入下一步流程,一旦为空,直接正常流程处理
EntrustFlowEnum
flowStatus
=
EntrustFlowUtils
.
getNextFlowStatus
(
entrust
.
getFlowStatus
(),
entrust
.
getStatusPath
());
// 报告的审核状态不再走submitToNextNode
if
(
null
!=
flowStatus
&&
flowStatus
.
getValue
()
>
fromFlowStatus
.
getValue
())
{
toFlowStatus
=
flowStatus
;
if
(
flowStatus
==
EntrustFlowEnum
.
QUALITY_JUDGE
)
{
// 当终止节点不一致,当以状态路径配置的下一节点为准
if
(
StringUtils
.
isNotBlank
(
statusPath
))
{
EntrustFlowEnum
nextFlowStatus
=
EntrustFlowUtils
.
getNextFlowStatus
(
flowStatus
,
statusPath
);
RestAssert
.
fail
(
null
==
nextFlowStatus
,
"配置的状态路径没有下一步!"
);
RestAssert
.
fail
(
nextFlowStatus
.
getValue
()
<
fromFlowStatus
.
getValue
(),
String
.
format
(
"起始流程节点配置存在问题:从【%s】,至【%s】"
,
fromFlowStatus
.
getDisplay
(),
nextFlowStatus
.
getDisplay
()));
toFlowStatus
=
nextFlowStatus
;
// 质量判定才触发此逻辑
if
(
toFlowStatus
==
EntrustFlowEnum
.
QUALITY_JUDGE
)
{
entrustService
.
submitToNextNode
(
entrust
,
account
);
}
}
...
...
@@ -980,16 +990,23 @@ public class EntrustReportServiceImpl extends BaseServiceImpl<EntrustReportMappe
private
boolean
doExecuteBack
(
Long
[]
ids
,
EntrustFlowEnum
fromFlowStatus
,
EntrustFlowEnum
toFlowStatus
,
String
reason
,
Account
account
)
{
Entrust
entrust
=
handleConditionGetEntrust
(
ids
);
String
flowStatus
=
entrust
.
getFlowStatus
(),
statusPath
=
entrust
.
getStatusPath
();
// 是否可以进入上一步流程
EntrustFlowEnum
flowStatus
=
EntrustFlowUtils
.
getPrevFlowStatus
(
entrust
.
getFlowStatus
(),
entrust
.
getStatusPath
());
EntrustFlowEnum
prevFlowStatus
=
null
;
// 退回时,如果不存在路径中,默认使用的当前要退回的节点,有些不是很符合逻辑
if
(
StringUtils
.
isNotBlank
(
statusPath
)
&&
EntrustFlowUtils
.
contains
(
flowStatus
,
statusPath
))
{
prevFlowStatus
=
EntrustFlowUtils
.
getPrevFlowStatus
(
flowStatus
,
statusPath
);
}
List
<
Long
>
sampleIds
=
getSampleIds
(
ids
);
RestAssert
.
fail
(
CollectionUtils
.
isEmpty
(
sampleIds
),
"报告样品信息为空"
);
// 过滤掉空白样和标样
List
<
EntrustSample
>
entrustSamples
=
entrustSampleService
.
getNormalByEntrustId
(
entrust
.
getId
());
if
(
null
!=
flowStatus
)
{
toFlowStatus
=
flowStatus
;
if
(
null
!=
prevFlowStatus
)
{
toFlowStatus
=
prevFlowStatus
;
// 若驳回的状态不在报告状态范围内
if
(
f
lowStatus
.
getValue
()
<
8
)
{
if
(
prevF
lowStatus
.
getValue
()
<
8
)
{
// 对应样品状态
EntrustSampleStatusEnum
sampleStatusEnum
=
EntrustFlowUtils
.
getSampleStatus
(
toFlowStatus
);
...
...
@@ -1109,7 +1126,7 @@ public class EntrustReportServiceImpl extends BaseServiceImpl<EntrustReportMappe
RestAssert
.
fail
(
null
==
entrust
,
"委托信息为空"
);
String
statusPath
=
entrust
.
getStatusPath
(),
flowStatus
=
entrust
.
getFlowStatus
();
// 为空,或者路径中不包含当前流程状态
if
(!
EntrustFlowUtils
.
isContains
(
statusPath
,
flowStatus
))
{
if
(!
EntrustFlowUtils
.
contains
(
flowStatus
,
statusPath
))
{
return
;
}
EntrustFlowEnum
nextFlowStatus
=
EntrustFlowUtils
.
getNextFlowStatus
(
flowStatus
,
statusPath
);
...
...
@@ -1154,10 +1171,11 @@ public class EntrustReportServiceImpl extends BaseServiceImpl<EntrustReportMappe
List
<
Long
>
sampleIds
=
relSamples
.
stream
().
map
(
EntrustReportRelSample:
:
getSampleId
).
collect
(
Collectors
.
toList
());
EntrustSampleStatusEnum
sampleStatus
=
EntrustFlowUtils
.
getSampleStatus
(
flowEnum
);
if
(
CollectionUtils
.
isNotEmpty
(
sampleIds
))
{
EntrustSample
sample
=
new
EntrustSample
();
sample
.
setStatus
(
sampleStatus
);
sample
.
setProgress
(
sampleStatus
);
entrustSampleService
.
update
(
sample
,
Condition
.
create
().
in
(
"id"
,
sampleIds
));
// EntrustSample sample = new EntrustSample();
// sample.setStatus(sampleStatus);
// sample.setProgress(sampleStatus);
// entrustSampleService.update(sample, Condition.create().in("id", sampleIds));
entrustSampleService
.
updateStatus
(
sampleStatus
,
sampleIds
);
// 获取检测项目状态
EntrustSampleItemStatusEnum
itemStatusEnum
=
EntrustFlowUtils
.
getItemStatus
(
flowEnum
);
// 更新检测项目状态 - 只有在胡乱配置状态路径的时候才触发,一般走不到这一步
...
...
src/main/java/com/patzn/cloud/service/lims/hmhj/service/impl/EntrustSampleServiceImpl.java
View file @
81445f50
...
...
@@ -623,7 +623,12 @@ public class EntrustSampleServiceImpl extends BaseServiceImpl<EntrustSampleMappe
@Override
public
List
<
EntrustSample
>
getNormalByEntrustId
(
Long
entrustId
)
{
return
list
(
Condition
.
create
().
eq
(
"entrust_id"
,
entrustId
).
eq
(
"type"
,
0
));
return
list
(
Condition
.
create
()
.
eq
(
"entrust_id"
,
entrustId
)
.
eq
(
"type"
,
0
)
// 限定正常的样品中必须有检测项目
.
exists
(
"select 1 from entrust_sample_item i where i.deleted = 0 and i.entrust_sample_id = entrust_sample.id"
)
);
}
@Override
...
...
@@ -2261,6 +2266,32 @@ public class EntrustSampleServiceImpl extends BaseServiceImpl<EntrustSampleMappe
return
baseMapper
.
deletePhysicalByEntrustIds
(
ids
)
>
0
;
}
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
boolean
updateStatus
(
EntrustSampleStatusEnum
sampleStatus
,
List
<
Long
>
sampleIds
)
{
// 对于空值不处理
if
(
CollectionUtils
.
isEmpty
(
sampleIds
)
||
null
==
sampleStatus
)
{
return
false
;
}
EntrustSample
sample
=
getById
(
sampleIds
.
get
(
0
));
RestAssert
.
fail
(
null
==
sample
,
"更新样品状态时,查询样品为空!"
);
// 查询不正常的样品,非标样
List
<
EntrustSample
>
unNormalSamples
=
list
(
Condition
.
create
()
.
eq
(
"entrust_id"
,
sample
.
getEntrustId
())
.
eq
(
"type"
,
0
)
.
notIn
(
"id"
,
sampleIds
)
.
notExists
(
"select 1 from entrust_sample_item i where i.deleted = 0 and i.entrust_sample_id = entrust_sample.id"
)
);
if
(
CollectionUtils
.
isNotEmpty
(
unNormalSamples
))
{
sampleIds
.
addAll
(
unNormalSamples
.
stream
().
map
(
EntrustSample:
:
getId
).
collect
(
Collectors
.
toList
()));
}
EntrustSample
entrustSample
=
new
EntrustSample
();
entrustSample
.
setStatus
(
sampleStatus
).
setProgress
(
sampleStatus
);
return
update
(
entrustSample
,
Condition
.
create
().
in
(
"id"
,
sampleIds
));
}
private
List
<
EntrustSampleItemIndex
>
getIndexList
(
Long
sampleId
)
{
if
(
null
==
sampleId
)
{
...
...
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