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
23ad0e36
Commit
23ad0e36
authored
Jul 03, 2025
by
jiangxuming
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat: 增加预过滤逻辑并使用Redis缓存
fix: 修复entrustCode查询条件的逻辑错误
parent
091fa49d
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
72 additions
and
40 deletions
+72
-40
OriginalRecordMapper.java
.../cloud/service/lims/hmhj/mapper/OriginalRecordMapper.java
+2
-0
UserInfoServiceImpl.java
...d/service/lims/hmhj/service/impl/UserInfoServiceImpl.java
+17
-1
OriginalRecordMapper.xml
src/main/resources/mapper/hmhj/OriginalRecordMapper.xml
+53
-39
No files found.
src/main/java/com/patzn/cloud/service/lims/hmhj/mapper/OriginalRecordMapper.java
View file @
23ad0e36
package
com
.
patzn
.
cloud
.
service
.
lims
.
hmhj
.
mapper
;
package
com
.
patzn
.
cloud
.
service
.
lims
.
hmhj
.
mapper
;
import
com.baomidou.mybatisplus.annotations.SqlParser
;
import
com.patzn.cloud.commons.mapper.BatchMapper
;
import
com.patzn.cloud.commons.mapper.BatchMapper
;
import
com.patzn.cloud.service.hmhj.entity.OriginalRecord
;
import
com.patzn.cloud.service.hmhj.entity.OriginalRecord
;
import
com.patzn.cloud.service.hmhj.vo.OriginalRecordVO
;
import
com.patzn.cloud.service.hmhj.vo.OriginalRecordVO
;
...
@@ -19,6 +20,7 @@ import java.util.Map;
...
@@ -19,6 +20,7 @@ import java.util.Map;
*/
*/
public
interface
OriginalRecordMapper
extends
BatchMapper
<
OriginalRecord
>
{
public
interface
OriginalRecordMapper
extends
BatchMapper
<
OriginalRecord
>
{
@SqlParser
(
filter
=
true
)
List
<
OriginalRecordVO
>
selectPageVO
(
RowBounds
rowBounds
,
@Param
(
"vo"
)
OriginalRecordVO
vo
);
List
<
OriginalRecordVO
>
selectPageVO
(
RowBounds
rowBounds
,
@Param
(
"vo"
)
OriginalRecordVO
vo
);
Map
<
String
,
String
>
selectOriginalFileKey
(
@Param
(
"entrustId"
)
Long
entrustId
,
@Param
(
"recordId"
)
Long
recordId
);
Map
<
String
,
String
>
selectOriginalFileKey
(
@Param
(
"entrustId"
)
Long
entrustId
,
@Param
(
"recordId"
)
Long
recordId
);
...
...
src/main/java/com/patzn/cloud/service/lims/hmhj/service/impl/UserInfoServiceImpl.java
View file @
23ad0e36
...
@@ -19,9 +19,12 @@ import com.patzn.cloud.service.lims.hmhj.common.consts.HmConst;
...
@@ -19,9 +19,12 @@ import com.patzn.cloud.service.lims.hmhj.common.consts.HmConst;
import
com.patzn.cloud.service.lims.hmhj.service.IEntrustService
;
import
com.patzn.cloud.service.lims.hmhj.service.IEntrustService
;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.data.redis.core.RedisTemplate
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
import
javax.annotation.Resource
;
import
java.util.*
;
import
java.util.*
;
import
java.util.concurrent.TimeUnit
;
import
java.util.stream.Collectors
;
import
java.util.stream.Collectors
;
import
java.util.stream.Stream
;
import
java.util.stream.Stream
;
...
@@ -54,6 +57,9 @@ public class UserInfoServiceImpl {
...
@@ -54,6 +57,9 @@ public class UserInfoServiceImpl {
@Autowired
@Autowired
private
ILmsMsgService
lmsMsgService
;
private
ILmsMsgService
lmsMsgService
;
@Resource
private
RedisTemplate
<
String
,
String
>
redisTemplate
;
public
List
<
LmsUserGroup
>
getGroupList
(
Long
userId
)
{
public
List
<
LmsUserGroup
>
getGroupList
(
Long
userId
)
{
if
(
null
==
userId
)
{
if
(
null
==
userId
)
{
return
OTHER_GROUP_LIST
;
return
OTHER_GROUP_LIST
;
...
@@ -71,7 +77,17 @@ public class UserInfoServiceImpl {
...
@@ -71,7 +77,17 @@ public class UserInfoServiceImpl {
}
}
public
List
<
String
>
getCurGroupNameList
()
{
public
List
<
String
>
getCurGroupNameList
()
{
return
getGroupNameList
(
LoginHelper
.
getAccount
().
getUserId
());
final
String
curGroupNameList
=
"curGroupNameList#%s"
;
String
str
=
redisTemplate
.
opsForValue
().
get
(
String
.
format
(
curGroupNameList
,
LoginHelper
.
getAccount
().
getUserId
()));
if
(
StringUtils
.
isNotBlank
(
str
))
{
List
<
String
>
list
=
Arrays
.
asList
(
str
.
split
(
Symbol
.
COMMA
));
return
list
;
}
else
{
List
<
String
>
groupNameList
=
getGroupNameList
(
LoginHelper
.
getAccount
().
getUserId
());
redisTemplate
.
opsForValue
().
set
(
String
.
format
(
curGroupNameList
,
LoginHelper
.
getAccount
().
getUserId
()),
StringUtils
.
join
(
groupNameList
,
Symbol
.
COMMA
),
24
,
TimeUnit
.
HOURS
);
return
groupNameList
;
}
}
}
public
String
getCurGroupNames
()
{
public
String
getCurGroupNames
()
{
...
...
src/main/resources/mapper/hmhj/OriginalRecordMapper.xml
View file @
23ad0e36
...
@@ -3,51 +3,65 @@
...
@@ -3,51 +3,65 @@
<mapper
namespace=
"com.patzn.cloud.service.lims.hmhj.mapper.OriginalRecordMapper"
>
<mapper
namespace=
"com.patzn.cloud.service.lims.hmhj.mapper.OriginalRecordMapper"
>
<select
id=
"selectPageVO"
resultType=
"com.patzn.cloud.service.hmhj.vo.OriginalRecordVO"
>
<select
id=
"selectPageVO"
resultType=
"com.patzn.cloud.service.hmhj.vo.OriginalRecordVO"
>
select
WITH target_items AS (
r.ID,
-- 预过滤entrust_sample_item关联数据
MAX ( r.original_record_id ) "original_record_id",
SELECT DISTINCT rr.record_id
MAX ( r.entrust_id ) "entrust_id",
FROM entrust_sample_item i
MAX ( r.template_id ) "template_id",
JOIN item_rel_original_record rr ON rr.item_id = i.id AND rr.deleted = 0
MAX ( r.title ) "title",
WHERE i.deleted = 0
MAX ( r.company_id ) "company_id",
<if
test=
"vo.testerId != null"
>
MAX ( r.uid ) "uid",
AND i.tester_id = #{vo.testerId}
MAX ( r.ctime ) "ctime",
MAX ( r.lid ) "lid",
MAX ( r.ltime ) "ltime",
MAX ( r.deleted ) "deleted",
MAX ( r.uname ) "uname",
MAX ( r.remark ) "remark",
MAX ( r.object_key ) "object_key",
MAX ( r.pdf_object_key ) "pdf_object_key",
MAX ( r.entrust_ids ) "entrust_ids",
string_agg(e.code,',') "entrustCode"
from original_record r
join entrust e on (e.id = r.entrust_id or strpos(r.entrust_ids,e.id::varchar) > 0) and e.deleted = 0
where r.deleted = 0
<if
test=
"null != vo.title"
>
AND r.title LIKE CONCAT('%',#{vo.title},'%')
</if>
<if
test=
"null != vo.entrustId"
>
AND e.id = #{vo.entrustId}
</if>
</if>
<if
test=
"
null != vo.entrustCode
"
>
<if
test=
"
vo.itemStatus != null
"
>
AND
e.code LIKE CONCAT('%',#{vo.entrustCode},'%')
AND
i.status = #{vo.itemStatus}
</if>
</if>
<if
test=
"null != vo.testerId || null != vo.itemStatus"
>
),
AND exists (
filtered_records AS (
select 1 from entrust_sample_item i,item_rel_original_record rr
-- 预过滤original_record主表
where i.deleted = 0 and rr.deleted = 0 and rr.item_id = i.id
SELECT id
and r.id = rr.record_id
FROM original_record
<if
test=
"null != vo.testerId"
>
WHERE deleted = 0
and i.tester_id = #{vo.testerId}
<if
test=
"vo.title != null"
>
AND title LIKE CONCAT('%', #{vo.title}, '%')
</if>
</if>
<if
test=
"null != vo.itemStatus"
>
AND id IN (SELECT record_id FROM target_items) -- 关联预过滤结果
and i.status = #{vo.itemStatus}
<if
test=
"vo.entrustId != null"
>
AND entrust_id = #{vo.entrustId} -- 直接过滤entrust_id
</if>
</if>
)
)
SELECT
r.ID,
MAX(r.original_record_id) AS "original_record_id",
MAX(r.entrust_id) AS "entrust_id",
MAX(r.template_id) AS "template_id",
MAX(r.title) AS "title",
MAX(r.company_id) AS "company_id",
MAX(r.uid) AS "uid",
MAX(r.ctime) AS "ctime",
MAX(r.lid) AS "lid",
MAX(r.ltime) AS "ltime",
MAX(r.deleted) AS "deleted",
MAX(r.uname) AS "uname",
MAX(r.remark) AS "remark",
MAX(r.object_key) AS "object_key",
MAX(r.pdf_object_key) AS "pdf_object_key",
MAX(r.entrust_ids) AS "entrust_ids",
STRING_AGG(e.code, ',') AS "entrustCode"
FROM filtered_records fr
JOIN original_record r ON r.id = fr.id
JOIN entrust e ON e.deleted = 0
AND (
e.id = r.entrust_id
OR r.entrust_ids LIKE CONCAT('%', e.id, '%') -- 替换strpos为LIKE
)
<if
test=
"vo.entrustId != null"
>
AND e.id = #{vo.entrustId} -- 二次确认entrust_id
</if>
<if
test=
"vo.entrustCode != null"
>
AND e.code LIKE CONCAT('%', #{vo.entrustCode}, '%')
</if>
</if>
group by
r.id
GROUP BY
r.id
order by r.id desc
ORDER BY r.id DESC
</select>
</select>
<!--查询原始记录对应的原始文件Key-->
<!--查询原始记录对应的原始文件Key-->
<select
id=
"selectOriginalFileKey"
resultType=
"java.util.Map"
>
<select
id=
"selectOriginalFileKey"
resultType=
"java.util.Map"
>
...
...
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