REQ-3502: 减少更新卡片的次数
This commit is contained in:
parent
5cc26c4c3a
commit
b805ed8137
@ -174,7 +174,7 @@ public class TodoSyncCardService implements ApplicationListener<CardUpdateEvent>
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void updateCardState(Event event, TodoUpdateMessage message, TodoBusiness business, Todo todo) {
|
private void updateCardState(Event event, TodoUpdateMessage message, TodoBusiness business, Todo todo) {
|
||||||
synchronized (getTodoLock(todo)) {
|
synchronized (getLock(todo)) {
|
||||||
TodoCardState lastState = todoStates.getIfPresent(todo.getId());
|
TodoCardState lastState = todoStates.getIfPresent(todo.getId());
|
||||||
if (lastState != null && lastState.equals(TodoCardState.create(business, todo))) {
|
if (lastState != null && lastState.equals(TodoCardState.create(business, todo))) {
|
||||||
log.info("updateCardState: no change, todo={}", todo);
|
log.info("updateCardState: no change, todo={}", todo);
|
||||||
@ -296,12 +296,14 @@ public class TodoSyncCardService implements ApplicationListener<CardUpdateEvent>
|
|||||||
Todo todo = ((TodoCardUpdateStateRequest) event.getSource()).getTodo();
|
Todo todo = ((TodoCardUpdateStateRequest) event.getSource()).getTodo();
|
||||||
TodoBusiness business = todoBusinessDao.getBusinesses(todo).findBusiness(todo).orElse(null);
|
TodoBusiness business = todoBusinessDao.getBusinesses(todo).findBusiness(todo).orElse(null);
|
||||||
if (business == null) return;
|
if (business == null) return;
|
||||||
synchronized (getTodoLock(todo)) {
|
synchronized (getLock(todo)) {
|
||||||
todoStates.put(todo.getId(), TodoCardState.create(business, todo));
|
TodoCardState state = TodoCardState.create(business, todo);
|
||||||
|
if (state.isTodoCompleted)
|
||||||
|
todoStates.put(todo.getId(), state);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private Object getTodoLock(Todo todo) {
|
private Object getLock(Todo todo) {
|
||||||
String identityCode = todo.getIdentityCode();
|
String identityCode = todo.getIdentityCode();
|
||||||
try {
|
try {
|
||||||
return locks.get(identityCode, () -> identityCode);
|
return locks.get(identityCode, () -> identityCode);
|
||||||
@ -321,7 +323,7 @@ public class TodoSyncCardService implements ApplicationListener<CardUpdateEvent>
|
|||||||
@EqualsAndHashCode
|
@EqualsAndHashCode
|
||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
private static class TodoCardState {
|
private static class TodoCardState {
|
||||||
private final Boolean isTodoCompleted;
|
private final boolean isTodoCompleted;
|
||||||
private final BizFinalStateEnum bizFinalState;
|
private final BizFinalStateEnum bizFinalState;
|
||||||
|
|
||||||
static TodoCardState create(TodoBusiness business, Todo todo) {
|
static TodoCardState create(TodoBusiness business, Todo todo) {
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user