diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/cook/mapper/CookRecipeMapper.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/cook/mapper/CookRecipeMapper.java index 5b28781..8d3710d 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/cook/mapper/CookRecipeMapper.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/cook/mapper/CookRecipeMapper.java @@ -82,7 +82,8 @@ public interface CookRecipeMapper { int insertBind(CookAppRecipe appRecipe); - void updateRecipeByCanteenStallMeal(@Param("recipeId")String recipeId, @Param("canteenId")String canteenId, @Param("stallId")String stallId, @Param("deviceIds")List deviceIds); + void updateRecipeByCanteenStallMeal(@Param("recipeId")Long recipeId, @Param("canteenId")Long canteenId, + @Param("stallId")Long stallId, @Param("deviceIds")List deviceIds); /** * 删除菜品计划信息 diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/cook/service/impl/CookRecipeServiceImpl.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/cook/service/impl/CookRecipeServiceImpl.java index 653fb25..b2cfcda 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/cook/service/impl/CookRecipeServiceImpl.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/cook/service/impl/CookRecipeServiceImpl.java @@ -15,6 +15,7 @@ import com.bonus.canteen.core.cook.domain.CookAppRecipe; import com.bonus.canteen.core.cook.domain.CookRecipeDetail; import com.bonus.canteen.core.cook.domain.CookRecipeDishes; import com.bonus.canteen.core.cook.dto.*; +import com.bonus.canteen.core.cook.enums.CookBindTypeEnum; import com.bonus.canteen.core.cook.enums.CookRecipeSortEnum; import com.bonus.canteen.core.cook.enums.RecipeDetailTypeEnum; import com.bonus.canteen.core.cook.enums.RecipeTypeEnum; @@ -363,65 +364,60 @@ public class CookRecipeServiceImpl implements ICookRecipeService { } } - public void bindCookRecipe(CookRecipeBindDTO cookRecipeDTO) { - CookRecipe menuRecipe = this.cookRecipeMapper.selectCookRecipeByRecipeId(cookRecipeDTO.getRecipeId()); - List deviceInfoList = new ArrayList<>(); - List deviceSnList = new ArrayList<>(); - if(cookRecipeDTO.getStallId() !=null){ - deviceInfoList = this.cookRecipeMapper.getDeviceIdByDevivce(null, String.valueOf(cookRecipeDTO.getStallId())); - if(deviceInfoList == null || deviceInfoList.isEmpty() || deviceInfoList.size() == 0){ - throw new ServiceException("该食堂档口下没有设备信息"); - } - deviceSnList = this.cookRecipeMapper.getDeviceSnByIds(deviceInfoList); - } - CookRecipeSortEnum sortEnum = CookRecipeSortEnum.getBindTypeMap().get(cookRecipeDTO.getBindType()); - CookAppRecipe mar = new CookAppRecipe(); - mar.setRecipeId(cookRecipeDTO.getRecipeId()); - mar.setMealLineId(cookRecipeDTO.getMealLineId()); - mar.setBindType(cookRecipeDTO.getBindType()); - List deviceTypeList = cookRecipeMapper.getDeviceIdByDevivce(null, String.valueOf(menuRecipe.getStallId())); + @Transactional(rollbackFor = {Exception.class}) + public void bindCookRecipe(CookRecipeBindDTO content) { + CookRecipe cookRecipe = this.cookRecipeMapper.selectCookRecipeByRecipeId(content.getRecipeId()); + CookRecipeSortEnum sortEnum = CookRecipeSortEnum.getBindTypeMap().get(content.getBindType()); + CookAppRecipe appRecipe = new CookAppRecipe(); if (ObjectUtil.isEmpty(sortEnum)) { - throw new ServiceException("bingType值异常"); + throw new ServiceException("菜谱绑定类型错误"); } else { List deviceTypes = sortEnum.getDeviceType(); - if (cookRecipeDTO.getHandleType().equals(1)) { + if (content.getHandleType().equals(1)) { boolean exists; -// if (CookBindTypeEnum.RESERVE.key().equals(cookRecipeDTO.getBindType())) { -// exists = this.checkCanteenIfReserve(menuRecipe.getCanteenId(), menuRecipe.getStallId()); +// if (CookBindTypeEnum.RESERVE.key().equals(content.getBindType())) { +// exists = this.allocCanteenApi.checkCanteenIfReserve(cookRecipe.getCanteenId(), cookRecipe.getStallId()); // if (!exists) { // throw new ServiceException("不支持预订餐"); // } // } - exists = this.cookRecipeMapper.checkIfAlreadyBind(mar); + appRecipe.setRecipeId(content.getRecipeId()); + appRecipe.setMealLineId(content.getMealLineId()); + appRecipe.setBindType(content.getBindType()); + appRecipe.setBindTime(LocalDateTime.now()); + exists = this.cookRecipeMapper.checkIfAlreadyBind(appRecipe); if (exists) { throw new ServiceException("菜谱已被使用,请勿重复绑定"); } - List sourceRecipeList = this.cookRecipeMapper.selectRecipeInSameShop(menuRecipe.getStallId(), cookRecipeDTO.getBindType(), cookRecipeDTO.getMealLineId()); + List sourceRecipeList = this.cookRecipeMapper.selectRecipeInSameShop(cookRecipe.getStallId(), content.getBindType(), content.getMealLineId()); if (ObjectUtil.isNotEmpty(sourceRecipeList)) { - mar.setRecipeIds(sourceRecipeList); - this.cookRecipeMapper.deleteBind(mar); + appRecipe.setRecipeIds(sourceRecipeList); + this.cookRecipeMapper.deleteBind(appRecipe); } - CookAppRecipe appRecipe = new CookAppRecipe(); - appRecipe.setRecipeId(cookRecipeDTO.getRecipeId()); - appRecipe.setBindType(cookRecipeDTO.getBindType()); - appRecipe.setMealLineId(cookRecipeDTO.getMealLineId()); - appRecipe.setBindTime(LocalDateTime.now()); this.cookRecipeMapper.insertBind(appRecipe); - if (ObjectUtil.isNotEmpty(deviceTypes) && deviceTypeList!= null && !deviceTypeList.isEmpty()) { - this.cookRecipeMapper.updateRecipeByCanteenStallMeal(String.valueOf(cookRecipeDTO.getRecipeId()), String.valueOf(menuRecipe.getCanteenId()), String.valueOf(menuRecipe.getStallId()),deviceTypeList); + if (ObjectUtil.isNotEmpty(deviceTypes)) { + this.cookRecipeMapper.updateRecipeByCanteenStallMeal(content.getRecipeId(), cookRecipe.getCanteenId(), cookRecipe.getStallId(), deviceTypes); } - MqUtil.sendDataChange(menuRecipe, LeMqConstant.DataChangeType.ADD, LeMqConstant.Topic.DATA_CHANGE_RECIPE_RELEASE); + MqUtil.sendDataChange(cookRecipe, LeMqConstant.DataChangeType.ADD, LeMqConstant.Topic.DATA_CHANGE_RECIPE_RELEASE); } else { - mar.setRecipeIds(Collections.singletonList(mar.getRecipeId())); - this.cookRecipeMapper.deleteBind(mar); - if (ObjectUtil.isNotEmpty(deviceTypes) && deviceTypeList!= null && !deviceTypeList.isEmpty()) { - this.cookRecipeMapper.updateRecipeByCanteenStallMeal("-1", String.valueOf(menuRecipe.getCanteenId()), String.valueOf(menuRecipe.getStallId()), deviceTypeList); + appRecipe.setRecipeIds(Collections.singletonList(appRecipe.getRecipeId())); + this.cookRecipeMapper.deleteBind(appRecipe); + if (ObjectUtil.isNotEmpty(deviceTypes)) { + this.cookRecipeMapper.updateRecipeByCanteenStallMeal(-1L, cookRecipe.getCanteenId(), cookRecipe.getStallId(), deviceTypes); } } //发送mq - if (!CollectionUtils.isEmpty(deviceSnList)) { + if (CookBindTypeEnum.TABLE.key().equals(content.getBindType())) { //TABLE(7, "智慧餐台/消费机") + List deviceInfoList = new ArrayList<>(); + if (content.getStallId() != null) { + deviceInfoList = this.cookRecipeMapper.getDeviceIdByDevivce(null, String.valueOf(content.getStallId())); + if (deviceInfoList == null || deviceInfoList.isEmpty() || deviceInfoList.size() == 0) { + throw new ServiceException("该食堂档口下没有设备信息"); + } + } + List deviceSnList = this.cookRecipeMapper.getDeviceSnByIds(deviceInfoList); for (String deviceSn : deviceSnList) { - DeviceMqPersonalUpdateMessageDTO bean = new DeviceMqPersonalUpdateMessageDTO().setUpdatePerson(0, cookRecipeDTO.getHandleType().equals(1) ? "update" : "del"); + DeviceMqPersonalUpdateMessageDTO bean = new DeviceMqPersonalUpdateMessageDTO().setUpdatePerson(0, content.getHandleType().equals(1) ? "update" : "del"); MqUtil.pushToSingleDevice(bean, LeMqConstant.Topic.DEVICE_UPDATE_MENU_CONFIG_V4, deviceSn); } }