diff --git a/xm-core/src/main/java/com/xm/core/listener/XmMenuSumParentsListener.java b/xm-core/src/main/java/com/xm/core/listener/XmMenuSumParentsListener.java index 3690e444..451ce43c 100644 --- a/xm-core/src/main/java/com/xm/core/listener/XmMenuSumParentsListener.java +++ b/xm-core/src/main/java/com/xm/core/listener/XmMenuSumParentsListener.java @@ -56,17 +56,25 @@ public class XmMenuSumParentsListener extends MessageListener { if(myMenusAllMap.size()>0){ List menus=new ArrayList<>(); - List errors=new ArrayList<>(); - myMenusAllMap.forEach((projectId,menusMap)->{ + myMenusAllMap.forEach((projectId,menusMap)->{ menus.addAll(menusMap.values()); if(menus.size()>100){ - try { - xmMenuStateService.batchSumParents(menus); - menus.clear(); - }catch (Exception e){ - errors.addAll(menus); - menus.clear(); - } + new Thread(){ + @Override + public void run() { + List myMenus=new ArrayList<>(); + synchronized (menus){ + myMenus.addAll(menus); + menus.clear(); + } + try { + xmMenuStateService.batchSumParents(myMenus); + }catch (Exception e){ + xmMenuStateService.batchSumParents(myMenus); + } + } + }.start(); + } }); if(menus.size()>0){ @@ -74,15 +82,7 @@ public class XmMenuSumParentsListener extends MessageListener { xmMenuStateService.batchSumParents(menus); menus.clear(); }catch (Exception e){ - - } - } - if(errors.size()>0){ - try { - xmMenuStateService.batchSumParents(errors); - errors.clear(); - }catch (Exception e){ - errors.clear(); + xmMenuStateService.batchSumParents(menus); } } } diff --git a/xm-core/src/main/java/com/xm/core/listener/XmTaskSumParentsListener.java b/xm-core/src/main/java/com/xm/core/listener/XmTaskSumParentsListener.java index 5577e4f7..f06fcfed 100644 --- a/xm-core/src/main/java/com/xm/core/listener/XmTaskSumParentsListener.java +++ b/xm-core/src/main/java/com/xm/core/listener/XmTaskSumParentsListener.java @@ -55,17 +55,25 @@ public class XmTaskSumParentsListener extends MessageListener { if(myTasksAllMap.size()>0){ List tasks=new ArrayList<>(); - List errors=new ArrayList<>(); myTasksAllMap.forEach((projectId,tasksMap)->{ tasks.addAll(tasksMap.values()); if(tasks.size()>100){ - try { - xmTaskService.batchSumParents(tasks); - tasks.clear(); - }catch (Exception e){ - errors.addAll(tasks); - tasks.clear(); - } + new Thread(){ + @Override + public void run() { + List myTasks=new ArrayList<>(); + synchronized (tasks){ + myTasks.addAll(tasks); + tasks.clear(); + } + try { + xmTaskService.batchSumParents(myTasks); + }catch (Exception e){ + xmTaskService.batchSumParents(myTasks); + } + } + }.start(); + } }); if(tasks.size()>0){ @@ -76,14 +84,7 @@ public class XmTaskSumParentsListener extends MessageListener { } } - if(errors.size()>0){ - try { - xmTaskService.batchSumParents(errors); - errors.clear(); - }catch (Exception e){ - errors.clear(); - } - } + } }