Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
A
Ai Chat Pilot
Manage
Activity
Members
Labels
Plan
Issues
0
Issue boards
Milestones
Wiki
Code
Merge requests
0
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package Registry
Operate
Environments
Terraform modules
Monitor
Incidents
Service Desk
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
黄晋
Ai Chat Pilot
Commits
685413e2
Commit
685413e2
authored
11 months ago
by
黄晋
Browse files
Options
Downloads
Patches
Plain Diff
尝试Pairs upsert
parent
0ff4f2fa
Branches
Branches containing commit
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
src/main/java/com/luca/pilot/service/impl/PlanServiceImpl.java
+14
-9
14 additions, 9 deletions
...ain/java/com/luca/pilot/service/impl/PlanServiceImpl.java
with
14 additions
and
9 deletions
src/main/java/com/luca/pilot/service/impl/PlanServiceImpl.java
+
14
−
9
View file @
685413e2
package
com.luca.pilot.service.impl
;
package
com.luca.pilot.service.impl
;
import
cn.hutool.core.map.MapUtil
;
import
cn.hutool.core.map.MapUtil
;
import
cn.hutool.json.JSONUtil
;
import
cn.hutool.json.JSONUtil
;
import
com.luca.pilot.bizEnum.TableEnum
;
import
com.luca.pilot.bizEnum.TableEnum
;
...
@@ -18,6 +19,7 @@ import org.springframework.data.mongodb.core.mapping.Document;
...
@@ -18,6 +19,7 @@ import org.springframework.data.mongodb.core.mapping.Document;
import
org.springframework.data.mongodb.core.query.Criteria
;
import
org.springframework.data.mongodb.core.query.Criteria
;
import
org.springframework.data.mongodb.core.query.Query
;
import
org.springframework.data.mongodb.core.query.Query
;
import
org.springframework.data.mongodb.core.query.Update
;
import
org.springframework.data.mongodb.core.query.Update
;
import
org.springframework.data.util.Pair
;
import
org.springframework.scheduling.annotation.Scheduled
;
import
org.springframework.scheduling.annotation.Scheduled
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
import
org.springframework.util.CollectionUtils
;
import
org.springframework.util.CollectionUtils
;
...
@@ -76,7 +78,7 @@ public class PlanServiceImpl implements PlanService {
...
@@ -76,7 +78,7 @@ public class PlanServiceImpl implements PlanService {
long
totalPlanModuleCount
=
mongoTemplate
.
count
(
new
Query
(),
PlanModule
.
class
);
long
totalPlanModuleCount
=
mongoTemplate
.
count
(
new
Query
(),
PlanModule
.
class
);
//
BulkOperations bulkOps = mongoTemplate.bulkOps(BulkOperations.BulkMode.UNORDERED, PlanModule.class);
BulkOperations
bulkOps
=
mongoTemplate
.
bulkOps
(
BulkOperations
.
BulkMode
.
UNORDERED
,
PlanModule
.
class
);
for
(
int
i
=
0
;
i
<
skip
;
i
++)
{
for
(
int
i
=
0
;
i
<
skip
;
i
++)
{
countQuery
.
skip
(
i
*
10000L
);
countQuery
.
skip
(
i
*
10000L
);
...
@@ -103,6 +105,7 @@ public class PlanServiceImpl implements PlanService {
...
@@ -103,6 +105,7 @@ public class PlanServiceImpl implements PlanService {
Map
<
Long
,
Map
<
Long
,
String
>>
digitalMedicalTypeMap
=
queryDigitalMedicalType
(
planTaskDetails
);
Map
<
Long
,
Map
<
Long
,
String
>>
digitalMedicalTypeMap
=
queryDigitalMedicalType
(
planTaskDetails
);
List
<
PlanModule
>
planMoudles
=
new
ArrayList
<>();
List
<
PlanModule
>
planMoudles
=
new
ArrayList
<>();
List
<
Pair
<
Query
,
Update
>>
pairs
=
new
ArrayList
<>();
//以 planTaskDetail 和 planMoudleRelate 为基准
//以 planTaskDetail 和 planMoudleRelate 为基准
// 一个 planTaskDetail 能对应多个 planMoudleRelate,即一次任务配置了多少个模块(问卷,量表,数字靶点)
// 一个 planTaskDetail 能对应多个 planMoudleRelate,即一次任务配置了多少个模块(问卷,量表,数字靶点)
...
@@ -232,21 +235,23 @@ public class PlanServiceImpl implements PlanService {
...
@@ -232,21 +235,23 @@ public class PlanServiceImpl implements PlanService {
if
(
totalPlanModuleCount
>
0
)
{
if
(
totalPlanModuleCount
>
0
)
{
Query
upsertQuery
=
new
Query
(
where
(
"key"
).
is
(
planMoudle
.
getKey
()));
Query
upsertQuery
=
new
Query
(
where
(
"key"
).
is
(
planMoudle
.
getKey
()));
Update
update
=
buildUpdate
(
planMoudle
);
Update
update
=
buildUpdate
(
planMoudle
);
// bulkOps.upsert(upsertQuery, update);
bulkOps
.
upsert
(
upsertQuery
,
update
);
mongoTemplate
.
upsert
(
upsertQuery
,
update
,
PlanModule
.
class
);
Pair
<
Query
,
Update
>
pair
=
Pair
.
of
(
upsertQuery
,
update
);
log
.
info
(
"mongoTemplate upsert 1 条数据"
);
pairs
.
add
(
pair
);
}
else
{
planMoudles
.
add
(
planMoudle
);
}
}
planMoudles
.
add
(
planMoudle
);
}
}
}
}
// 是否第一次全量插入
// 是否第一次全量插入
if
(
totalPlanModuleCount
>
0
)
{
if
(
totalPlanModuleCount
>
0
)
{
// CompletableFuture.runAsync(() -> {
CompletableFuture
.
runAsync
(()
->
{
// bulkOps.execute();
bulkOps
.
upsert
(
pairs
);
// log.info("bulkOps 更新或插入 {} 条数据", planMoudles.size());
bulkOps
.
execute
();
// });
log
.
info
(
"bulkOps 更新或插入 {} 条数据"
,
pairs
.
size
());
});
}
else
{
}
else
{
if
(!
CollectionUtils
.
isEmpty
(
planMoudles
))
{
if
(!
CollectionUtils
.
isEmpty
(
planMoudles
))
{
mongoTemplate
.
insert
(
planMoudles
,
PlanModule
.
class
);
mongoTemplate
.
insert
(
planMoudles
,
PlanModule
.
class
);
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment