diff --git a/diet-core/src/main/java/com/mathvision/diet/service/DishService.java b/diet-core/src/main/java/com/mathvision/diet/service/DishService.java index b622f40..6403316 100644 --- a/diet-core/src/main/java/com/mathvision/diet/service/DishService.java +++ b/diet-core/src/main/java/com/mathvision/diet/service/DishService.java @@ -48,13 +48,13 @@ public class DishService { @Resource private DishRepository dishRepository; - @Scheduled(cron = "0/5 * * * * *") + @Scheduled(cron = "0/2 * * * * *") public void init() { if (!UPDATE_LABEL_LOCK.tryLock()) { return; } try { - List dishes = UPDATE_LABEL_TIME == null ? dishRepository.findAll() : dishRepository.findByModifyGreaterThan(UPDATE_LABEL_TIME); + List dishes = UPDATE_LABEL_TIME == null ? dishRepository.findAll() : dishRepository.findByModifyGreaterThan(UPDATE_LABEL_TIME.minusMillis(1000)); if (dishes.isEmpty()) { return; } @@ -99,7 +99,7 @@ public class DishService { public void copy(Dish dish, List vendors, String operator) { Instant instant = Instant.now(); - List dishes = vendors.stream().filter(vender -> exists(null, dish.getName(), vender)).map(vender -> Dish.builder().name(dish.getName()).vender(vender).marks(dish.getMarks()).poly(dish.getPoly()).label(dish.getLabel()).month(dish.getMonth()).icon(dish.getIcon()).ingredient(dish.getIngredient()).operate(operator).created(instant).modify(instant).build()).collect(Collectors.toList()); + List dishes = vendors.stream().filter(vender -> !exists(null, dish.getName(), vender)).map(vender -> Dish.builder().name(dish.getName()).vender(vender).marks(dish.getMarks()).poly(dish.getPoly()).label(dish.getLabel()).month(dish.getMonth()).icon(dish.getIcon()).ingredient(dish.getIngredient()).operate(operator).created(instant).modify(instant).build()).collect(Collectors.toList()); dishRepository.saveAll(dishes); log.info("[DishService] copy dishes count = " + dishes.size() + ", operator = " + operator); } diff --git a/diet-core/src/main/java/com/mathvision/diet/service/MenuDishService.java b/diet-core/src/main/java/com/mathvision/diet/service/MenuDishService.java index 0e1f976..5e00b91 100644 --- a/diet-core/src/main/java/com/mathvision/diet/service/MenuDishService.java +++ b/diet-core/src/main/java/com/mathvision/diet/service/MenuDishService.java @@ -53,7 +53,7 @@ public class MenuDishService { return; } try { - List dishes = UPDATE_LABEL_TIME == null ? menuDishRepository.findAll() : menuDishRepository.findByModifyGreaterThan(UPDATE_LABEL_TIME); + List dishes = UPDATE_LABEL_TIME == null ? menuDishRepository.findAll() : menuDishRepository.findByModifyGreaterThan(UPDATE_LABEL_TIME.minusMillis(1000)); if (dishes.isEmpty()) { return; } diff --git a/diet-core/src/main/java/com/mathvision/diet/service/MenuService.java b/diet-core/src/main/java/com/mathvision/diet/service/MenuService.java index 763cec7..b5164b3 100644 --- a/diet-core/src/main/java/com/mathvision/diet/service/MenuService.java +++ b/diet-core/src/main/java/com/mathvision/diet/service/MenuService.java @@ -45,9 +45,9 @@ public class MenuService { public List copy(Menu menu, String name, List vendors, String operator) { Instant dateTime = Instant.now(); List menuDishes= menuDishRepository.findByMenu(menu.getId()); - List menus = vendors.stream().map(v -> Menu.builder().name(name).meals(menu.getMeals()).crows(menu.getCrows()).scale(menu.getCrows().stream().collect(Collectors.toMap(x -> x, x -> 0))).day(menu.getDay()).nutrient(menu.getNutrient()).month(menu.getMonth()).vender(v).status(MenuStatus.draft).operate(operator).created(dateTime).modify(dateTime).build()).collect(Collectors.toList()); + List menus = vendors.stream().map(vender -> Menu.builder().name(name).meals(menu.getMeals()).crows(menu.getCrows()).scale(menu.getCrows().stream().collect(Collectors.toMap(x -> x, x -> 0))).day(menu.getDay()).nutrient(menu.getNutrient()).month(menu.getMonth()).vender(vender).status(MenuStatus.draft).operate(operator).created(dateTime).modify(dateTime).build()).collect(Collectors.toList()); menus = add(menus); - List dishes = menus.stream().map(v -> menuDishes.stream().map(dish -> MenuDish.builder().vender(v.getVender()).menu(v.getId()).dish(dish.getVender().equals(v.getVender()) ? dishService.copy(dish.getDish(), v.getVender(), operator, dateTime).getId() : dish.getDish()).day(dish.getDay()).meal(dish.getMeal()).name(dish.getName()).marks(dish.getMarks()).poly(dish.getPoly()).label(dish.getLabel()).ingredient(dish.getIngredient()).operate(operator).created(dateTime).modify(dateTime).build()).collect(Collectors.toList())).flatMap(List::stream).collect(Collectors.toList()); + List dishes = menus.stream().map(v -> menuDishes.stream().map(dish -> MenuDish.builder().vender(v.getVender()).menu(v.getId()).dish(dish.getVender().equals(v.getVender()) ? dish.getDish() : dishService.copy(dish.getDish(), v.getVender(), operator, dateTime).getId()).day(dish.getDay()).meal(dish.getMeal()).name(dish.getName()).marks(dish.getMarks()).poly(dish.getPoly()).label(dish.getLabel()).ingredient(dish.getIngredient()).operate(operator).created(dateTime).modify(dateTime).build()).collect(Collectors.toList())).flatMap(List::stream).collect(Collectors.toList()); menuDishRepository.saveAll(dishes); return menus.stream().map(Menu::getId).collect(Collectors.toList()); } diff --git a/diet-web/src/main/java/com/mathvision/diet/controller/DishController.java b/diet-web/src/main/java/com/mathvision/diet/controller/DishController.java index 39aee8a..07e3525 100644 --- a/diet-web/src/main/java/com/mathvision/diet/controller/DishController.java +++ b/diet-web/src/main/java/com/mathvision/diet/controller/DishController.java @@ -77,7 +77,7 @@ public class DishController extends BaseController { Assert.notNull(dish, "[参数错误]菜品不存在, 复制失败!"); if(isAdmin()) { - vendors = vendors == null ? Lists.newArrayList() : vendors.stream().filter(venderService::exists).collect(Collectors.toList()); + vendors = vendors == null ? Lists.newArrayList() : vendors.stream().filter(venderService::exists).distinct().collect(Collectors.toList()); } else { vendors = Lists.newArrayList(getVender()); } diff --git a/diet-web/src/main/java/com/mathvision/diet/controller/MenuController.java b/diet-web/src/main/java/com/mathvision/diet/controller/MenuController.java index 373aab1..39200bb 100644 --- a/diet-web/src/main/java/com/mathvision/diet/controller/MenuController.java +++ b/diet-web/src/main/java/com/mathvision/diet/controller/MenuController.java @@ -152,7 +152,7 @@ public class MenuController extends BaseController { Assert.isTrue(!name.matches("[\\[\\]:?*/\\\\]") && name.length() < 31, "[参数错误]食谱名称小于30个字符,且不能包含特殊字符!"); if(isAdmin()) { - vendors = vendors == null ? Lists.newArrayList() : vendors.stream().filter(venderService::exists).collect(Collectors.toList()); + vendors = vendors == null ? Lists.newArrayList() : vendors.stream().filter(venderService::exists).distinct().collect(Collectors.toList()); } else { vendors = Lists.newArrayList(getVender()); }