From 77dedf29f2d706fc75c6fbb64bf348a3643d7fd3 Mon Sep 17 00:00:00 2001 From: zjf <1799650030@qq.com> Date: Wed, 13 Aug 2025 18:26:00 +0800 Subject: [PATCH] =?UTF-8?q?=E8=8F=9C=E5=93=81=E9=A2=84=E5=AE=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../canteen/entity/BoxesBookingEntity.java | 8 ++ .../pjcloud/canteen/vo/TimeSlotConfigVO.java | 38 ++++++++++ .../controller/CanteenSpuController.java | 14 ++++ .../canteen/mapper/TimeSlotConfigMapper.java | 5 +- .../canteen/service/CanteenSpuService.java | 7 ++ .../service/TimeSlotConfigService.java | 15 ++++ .../impl/BoxesAvailabilityServiceImpl.java | 25 ++++--- .../service/impl/BoxesBookingServiceImpl.java | 59 +++++++++------ .../impl/CanteenOnlineSpuServiceImpl.java | 73 +++++++++++++++---- .../service/impl/CanteenSpuServiceImpl.java | 27 +++++-- .../impl/TimeSlotConfigServiceImpl.java | 39 +++++++++- 11 files changed, 248 insertions(+), 62 deletions(-) create mode 100644 pjcloud-canteen/pjcloud-canteen-api/src/main/java/com/bsd/pjcloud/canteen/vo/TimeSlotConfigVO.java diff --git a/pjcloud-canteen/pjcloud-canteen-api/src/main/java/com/bsd/pjcloud/canteen/entity/BoxesBookingEntity.java b/pjcloud-canteen/pjcloud-canteen-api/src/main/java/com/bsd/pjcloud/canteen/entity/BoxesBookingEntity.java index fe3b13e5f..c8e20f65e 100644 --- a/pjcloud-canteen/pjcloud-canteen-api/src/main/java/com/bsd/pjcloud/canteen/entity/BoxesBookingEntity.java +++ b/pjcloud-canteen/pjcloud-canteen-api/src/main/java/com/bsd/pjcloud/canteen/entity/BoxesBookingEntity.java @@ -99,4 +99,12 @@ public class BoxesBookingEntity extends Model { @Schema(description="用户名称") @TableField(exist = false) private String userName; + + @Schema(description="餐次名称") + @TableField(exist = false) + private String mealName; + + @Schema(description="预约时间") + @TableField(exist = false) + private String reservationTime; } \ No newline at end of file diff --git a/pjcloud-canteen/pjcloud-canteen-api/src/main/java/com/bsd/pjcloud/canteen/vo/TimeSlotConfigVO.java b/pjcloud-canteen/pjcloud-canteen-api/src/main/java/com/bsd/pjcloud/canteen/vo/TimeSlotConfigVO.java new file mode 100644 index 000000000..03f1484b9 --- /dev/null +++ b/pjcloud-canteen/pjcloud-canteen-api/src/main/java/com/bsd/pjcloud/canteen/vo/TimeSlotConfigVO.java @@ -0,0 +1,38 @@ +package com.bsd.pjcloud.canteen.vo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.time.LocalTime; + +@Data +@Schema(description = "时间段配置VO") +public class TimeSlotConfigVO { + + @Schema(description = "主键id") + private Long id; + + @Schema(description = "餐次类型 1-早餐 2-中餐 3-晚餐") + private Integer mealType; + + @Schema(description = "餐次名称") + private String mealName; + + @Schema(description = "开始时间") + @JsonFormat(pattern = "HH:mm") + private LocalTime startTime; + + @Schema(description = "结束时间") + @JsonFormat(pattern = "HH:mm") + private LocalTime endTime; + + @Schema(description = "时间段名称") + private String timeSlotName; + + @Schema(description = "是否启用 0-禁用 1-启用") + private Integer isEnabled; + + @Schema(description = "排序") + private Integer sort; +} \ No newline at end of file diff --git a/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/controller/CanteenSpuController.java b/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/controller/CanteenSpuController.java index adadc35c5..9c82cd324 100644 --- a/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/controller/CanteenSpuController.java +++ b/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/controller/CanteenSpuController.java @@ -66,6 +66,20 @@ public class CanteenSpuController { return R.ok(canteenSpuService.pageScope(page, canteenSpu)); } + /** + * 在线订餐选择每日菜品下拉 + * + * @param page 分页对象 + * @param canteenSpu 菜品spu + * @return + */ + @Operation(summary = "在线订餐选择每日菜品下拉", description = "在线订餐选择每日菜品下拉") + @GetMapping("/selectPage") + @PreAuthorize("@pms.hasPermission('canteen_canteenSpu_view')") + public R getSelectPage(@ParameterObject Page page, @ParameterObject CanteenSpuEntity canteenSpu) { + return R.ok(canteenSpuService.selectPage(page, canteenSpu)); + } + @Operation(summary = "erp分页查询", description = "erp分页查询") @GetMapping("/erp/page") diff --git a/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/mapper/TimeSlotConfigMapper.java b/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/mapper/TimeSlotConfigMapper.java index ac86dbf4b..9a8a4b996 100644 --- a/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/mapper/TimeSlotConfigMapper.java +++ b/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/mapper/TimeSlotConfigMapper.java @@ -1,11 +1,10 @@ package com.bsd.pjcloud.canteen.mapper; -import com.bsd.pjcloud.common.data.datascope.PjcloudBaseMapper; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.bsd.pjcloud.canteen.entity.TimeSlotConfigEntity; import org.apache.ibatis.annotations.Mapper; @Mapper -public interface TimeSlotConfigMapper extends PjcloudBaseMapper { - +public interface TimeSlotConfigMapper extends BaseMapper { } \ No newline at end of file diff --git a/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/service/CanteenSpuService.java b/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/service/CanteenSpuService.java index bf1f2bbb2..ee95b95d4 100644 --- a/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/service/CanteenSpuService.java +++ b/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/service/CanteenSpuService.java @@ -68,4 +68,11 @@ public interface CanteenSpuService extends IService { Page erpPageScope(Page page, CanteenSpuEntity canteenSpu); + /** + * 在线订餐选择每日菜品下拉 + * @param page + * @param canteenSpu + * @return + */ + Object selectPage(Page page, CanteenSpuEntity canteenSpu); } \ No newline at end of file diff --git a/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/service/TimeSlotConfigService.java b/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/service/TimeSlotConfigService.java index 2b4457afc..e7bd05735 100644 --- a/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/service/TimeSlotConfigService.java +++ b/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/service/TimeSlotConfigService.java @@ -2,7 +2,22 @@ package com.bsd.pjcloud.canteen.service; import com.baomidou.mybatisplus.extension.service.IService; import com.bsd.pjcloud.canteen.entity.TimeSlotConfigEntity; +import com.bsd.pjcloud.canteen.vo.TimeSlotConfigVO; + +import java.util.List; +import java.util.Map; public interface TimeSlotConfigService extends IService { + /** + * 获取所有启用的时间段配置 + * @return 时间段配置列表 + */ + List getEnabledTimeSlots(); + + /** + * 获取餐次类型到时间段的映射 + * @return 餐次类型 -> 时间段的映射 + */ + Map getMealTypeTimeRangeMap(); } \ No newline at end of file diff --git a/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/service/impl/BoxesAvailabilityServiceImpl.java b/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/service/impl/BoxesAvailabilityServiceImpl.java index 831c14b54..28fd26061 100644 --- a/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/service/impl/BoxesAvailabilityServiceImpl.java +++ b/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/service/impl/BoxesAvailabilityServiceImpl.java @@ -6,10 +6,12 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.bsd.pjcloud.canteen.entity.BoxesAvailabilityEntity; import com.bsd.pjcloud.canteen.entity.BoxesInfoEntity; import com.bsd.pjcloud.canteen.entity.BoxesBookingEntity; +import com.bsd.pjcloud.canteen.entity.TimeSlotConfigEntity; import com.bsd.pjcloud.canteen.mapper.BoxesAvailabilityMapper; import com.bsd.pjcloud.canteen.mapper.BoxesInfoMapper; import com.bsd.pjcloud.canteen.mapper.BoxesBookingMapper; import com.bsd.pjcloud.canteen.service.BoxesAvailabilityService; +import com.bsd.pjcloud.canteen.service.TimeSlotConfigService; import com.bsd.pjcloud.canteen.vo.APPBXAvaliabilityRespVO; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -34,6 +36,7 @@ public class BoxesAvailabilityServiceImpl extends ServiceImpl getAvailableMeals(Long boxesId, LocalDate date) { @@ -44,9 +47,12 @@ public class BoxesAvailabilityServiceImpl extends ServiceImpl(); // 返回空列表,表示餐桌不存在 } - // 2. 定义三个餐次类型 - List mealTypes = List.of(1, 2, 3); // 1-早餐, 2-中餐, 3-晚餐 - List mealNames = List.of("早餐", "中餐", "晚餐"); + // 2. 从配置表获取所有启用的餐次类型 + List enabledTimeSlots = timeSlotConfigService.getEnabledTimeSlots(); + if (enabledTimeSlots.isEmpty()) { + log.warn("没有找到启用的时间段配置"); + return new ArrayList<>(); + } // 3. 查询指定包厢在指定日期的所有预约记录 LambdaQueryWrapper bookingWrapper = Wrappers.lambdaQuery(); @@ -61,22 +67,19 @@ public class BoxesAvailabilityServiceImpl extends ServiceImpl availableMeals = new ArrayList<>(); - for (int i = 0; i < mealTypes.size(); i++) { - Integer mealType = mealTypes.get(i); - String mealName = mealNames.get(i); - + for (TimeSlotConfigEntity timeSlot : enabledTimeSlots) { APPBXAvaliabilityRespVO meal = new APPBXAvaliabilityRespVO(); meal.setBoxesId(boxesId); meal.setBxDate(date); - meal.setMealType(mealType); - meal.setMealName(mealName); + meal.setMealType(timeSlot.getMealType()); + meal.setMealName(timeSlot.getMealName()); // 如果该餐次已被预约,状态设为1(已预约),否则设为0(可预约) - if (bookedMealTypes.contains(mealType)) { + if (bookedMealTypes.contains(timeSlot.getMealType())) { meal.setStatus(1); // 已预约 // 找到对应的预约记录,填充预约信息 BoxesBookingEntity booking = existingBookings.stream() - .filter(b -> b.getMealType().equals(mealType)) + .filter(b -> b.getMealType().equals(timeSlot.getMealType())) .findFirst() .orElse(null); if (booking != null) { diff --git a/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/service/impl/BoxesBookingServiceImpl.java b/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/service/impl/BoxesBookingServiceImpl.java index d7b22e0d4..eb8eb90ec 100644 --- a/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/service/impl/BoxesBookingServiceImpl.java +++ b/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/service/impl/BoxesBookingServiceImpl.java @@ -15,10 +15,12 @@ import com.bsd.pjcloud.canteen.dto.boxes.admin.BokingPageDTO; import com.bsd.pjcloud.canteen.entity.BoxesInfoEntity; import com.bsd.pjcloud.canteen.entity.BoxesBookingEntity; import com.bsd.pjcloud.canteen.entity.BoxesAvailabilityEntity; +import com.bsd.pjcloud.canteen.entity.TimeSlotConfigEntity; import com.bsd.pjcloud.canteen.mapper.BoxesInfoMapper; import com.bsd.pjcloud.canteen.mapper.BoxesBookingMapper; import com.bsd.pjcloud.canteen.service.BoxesAvailabilityService; import com.bsd.pjcloud.canteen.service.BoxesBookingService; +import com.bsd.pjcloud.canteen.service.TimeSlotConfigService; import com.bsd.pjcloud.canteen.vo.AppMakeSaveReqVO; import com.bsd.pjcloud.common.core.util.BeanUtils; import com.bsd.pjcloud.common.data.datascope.DataScope; @@ -31,6 +33,7 @@ import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import java.time.LocalDate; +import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Objects; @@ -56,6 +59,8 @@ public class BoxesBookingServiceImpl extends ServiceImpl pageScope(Page page, BokingPageDTO bokingPageDTO) { LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(); @@ -85,9 +90,8 @@ public class BoxesBookingServiceImpl extends ServiceImpl boxesIds = records.stream().map(boxesBookingEntity -> boxesBookingEntity.getBoxesId()).collect(Collectors.toSet()); - Set usersIds = records.stream().map(boxesBookingEntity -> boxesBookingEntity.getUserId()).collect(Collectors.toSet()); - + Set boxesIds = records.stream().map(BoxesBookingEntity::getBoxesId).collect(Collectors.toSet()); + Set usersIds = records.stream().map(BoxesBookingEntity::getUserId).collect(Collectors.toSet()); List boxesInfoEntities = boxesInfoMapper.selectByIds(boxesIds); Map boxMap = boxesInfoEntities.stream() @@ -95,10 +99,26 @@ public class BoxesBookingServiceImpl extends ServiceImpl> userMapData = remoteUserService.getUserMap(usersIds); Map userMap = userMapData.getData(); + // 从配置表获取餐次名称和时间段映射 + Map mealTypeNameMap = new HashMap<>(); + Map mealTypeTimeRangeMap = timeSlotConfigService.getMealTypeTimeRangeMap(); + + // 获取所有启用的时间段配置 + List enabledTimeSlots = timeSlotConfigService.getEnabledTimeSlots(); + for (TimeSlotConfigEntity timeSlot : enabledTimeSlots) { + mealTypeNameMap.put(timeSlot.getMealType(), timeSlot.getMealName()); + } + if (!CollectionUtils.isEmpty(records)){ - records.stream().forEach(record -> { + records.forEach(record -> { + // 餐桌名称 record.setBoxesName(boxMap.get(record.getBoxesId()) == null ? "" : boxMap.get(record.getBoxesId()).getName()); + // 用户名称 record.setUserName(userMap.get(record.getUserId()) == null ? "" : userMap.get(record.getUserId()).getUsername()); + // 餐次名称(从配置表获取) + record.setMealName(mealTypeNameMap.getOrDefault(record.getMealType(), "")); + // 预约时间(从配置表获取) + record.setReservationTime(mealTypeTimeRangeMap.getOrDefault(record.getMealType(), "")); }); } return pageData; @@ -161,31 +181,26 @@ public class BoxesBookingServiceImpl extends ServiceImpl enabledTimeSlots = timeSlotConfigService.getEnabledTimeSlots(); + for (TimeSlotConfigEntity timeSlot : enabledTimeSlots) { + if (timeSlot.getMealType().equals(mealType)) { + availability.setMealName(timeSlot.getMealName()); break; - case 2: - availability.setMealName("中餐"); - break; - case 3: - availability.setMealName("晚餐"); - break; - default: - availability.setMealName("未知餐次"); + } } - + + if (availability.getMealName() == null) { + availability.setMealName("未知餐次"); + } + boxesAvailabilityService.save(availability); return availability; } diff --git a/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/service/impl/CanteenOnlineSpuServiceImpl.java b/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/service/impl/CanteenOnlineSpuServiceImpl.java index c78827025..1c140f045 100644 --- a/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/service/impl/CanteenOnlineSpuServiceImpl.java +++ b/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/service/impl/CanteenOnlineSpuServiceImpl.java @@ -23,11 +23,13 @@ import com.bsd.pjcloud.common.security.util.SecurityUtils; import lombok.AllArgsConstructor; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import java.util.List; import java.util.Map; import java.util.Set; import java.util.stream.Collectors; +import java.util.Objects; /** * 在线点餐spu @@ -44,6 +46,8 @@ public class CanteenOnlineSpuServiceImpl extends ServiceImpl> getCanteenOnlineSpuList(String categoryId, String merchantId,String time) { LambdaQueryWrapper canteenOnlineSpuEntityLambdaQueryWrapper = new LambdaQueryWrapper<>(); @@ -86,33 +90,72 @@ public class CanteenOnlineSpuServiceImpl extends ServiceImpl items = canteenOnlineSpuSaveDto.getItems(); List canteenSpuEntities = BeanUtils.toBean(items, CanteenOnlineSpuEntity.class); - //每日菜谱的分类,查询在线分类里面是否有 - Set categoryIds = canteenSpuEntities.stream().map(c -> c.getCategoryId()).collect(Collectors.toSet()); - List canteenCategoryEntities = categoryMapper.selectList(new LambdaQueryWrapper().select(CanteenCategoryEntity::getId).in(CanteenCategoryEntity::getId, categoryIds)); - //把canteenCategoryEntities转为key map - Map canteenCategoryEntityMap = canteenCategoryEntities.stream().collect(Collectors.toMap(CanteenCategoryEntity::getId, c -> c)); + + // 1. 检查是否有重复的linkSpuId + List linkSpuIds = canteenSpuEntities.stream() + .map(CanteenOnlineSpuEntity::getLinkSpuId) + .filter(Objects::nonNull) + .collect(Collectors.toList()); + + if (!linkSpuIds.isEmpty()) { + // 查询数据库中是否已经存在这些linkSpuId + LambdaQueryWrapper existingWrapper = new LambdaQueryWrapper<>(); + existingWrapper.eq(CanteenOnlineSpuEntity::getMerchantId, merchantId); + existingWrapper.in(CanteenOnlineSpuEntity::getLinkSpuId, linkSpuIds); + List existingSpus = baseMapper.selectList(existingWrapper); + + if (!existingSpus.isEmpty()) { + // 找出重复的菜品名称 + List duplicateNames = existingSpus.stream() + .map(CanteenOnlineSpuEntity::getName) + .collect(Collectors.toList()); + return R.failed("以下菜品已经导入过,不能重复导入:" + String.join("、", duplicateNames)); + } + } + + // 2. 每日菜谱的分类,查询在线分类里面是否有 + Set categoryIds = canteenSpuEntities.stream().map(c -> c.getCategoryId()).collect(Collectors.toSet()); + LambdaQueryWrapper canteenCategoryEntityLambdaQueryWrapper = new LambdaQueryWrapper<>(); + canteenCategoryEntityLambdaQueryWrapper.in(CanteenCategoryEntity::getId, categoryIds); + List canteenCategoryEntities = categoryMapper.selectList(canteenCategoryEntityLambdaQueryWrapper); + + // 3. 把canteenCategoryEntities转为key map + Map canteenCategoryEntityMap = canteenCategoryEntities.stream() + .collect(Collectors.toMap(CanteenCategoryEntity::getId, c -> c)); Long deptId = SecurityUtils.getUser().getDeptId(); canteenSpuEntities.forEach(c -> { CanteenCategoryEntity canteenCategoryEntity = canteenCategoryEntityMap.get(c.getCategoryId()); - String name = canteenCategoryEntity.getName(); - //查询分类里面是否有 - CanteenOnlineCategoryEntity canteenOnlineCategoryEntity = canteenOnlineCategoryMapper.selectOne(new LambdaQueryWrapper().eq(CanteenOnlineCategoryEntity::getName, name)); - if (canteenOnlineCategoryEntity == null){ - CanteenOnlineCategoryEntity bean = BeanUtils.toBean(canteenCategoryEntity, CanteenOnlineCategoryEntity.class); - canteenOnlineCategoryMapper.insert(bean); - c.setCategoryId(bean.getId()); - }else { - c.setCategoryId(canteenOnlineCategoryEntity.getId()); + if (canteenCategoryEntity != null) { + String name = canteenCategoryEntity.getName(); + //查询分类里面是否有 + CanteenOnlineCategoryEntity canteenOnlineCategoryEntity = canteenOnlineCategoryMapper.selectOne( + new LambdaQueryWrapper().eq(CanteenOnlineCategoryEntity::getName, name) + ); + if (null == canteenOnlineCategoryEntity) { + CanteenOnlineCategoryEntity bean = BeanUtils.toBean(canteenCategoryEntity, CanteenOnlineCategoryEntity.class); + canteenOnlineCategoryMapper.insert(bean); + c.setCategoryId(bean.getId()); + } else { + c.setCategoryId(canteenOnlineCategoryEntity.getId()); + } } c.setMerchantId(merchantId); c.setDeptId(deptId); }); - return baseMapper.insert(canteenSpuEntities); + + // 4. 使用批量插入方法 + boolean result = this.saveBatch(canteenSpuEntities); + if (result) { + return R.ok("批量保存成功,共保存 " + canteenSpuEntities.size() + " 条记录"); + } else { + return R.failed("批量保存失败"); + } } @Override diff --git a/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/service/impl/CanteenSpuServiceImpl.java b/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/service/impl/CanteenSpuServiceImpl.java index 375ce5e0d..7f0b1de3a 100644 --- a/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/service/impl/CanteenSpuServiceImpl.java +++ b/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/service/impl/CanteenSpuServiceImpl.java @@ -12,10 +12,7 @@ import com.bsd.pjcloud.canteen.entity.CanteenDailyMenuEntity; import com.bsd.pjcloud.canteen.entity.CanteenOnlineSpuEntity; import com.bsd.pjcloud.canteen.entity.CanteenSpuEntity; import com.bsd.pjcloud.canteen.entity.CanteenStockEntity; -import com.bsd.pjcloud.canteen.mapper.CanteenCategoryMapper; -import com.bsd.pjcloud.canteen.mapper.CanteenDailyMenuMapper; -import com.bsd.pjcloud.canteen.mapper.CanteenSpuMapper; -import com.bsd.pjcloud.canteen.mapper.CanteenStockMapper; +import com.bsd.pjcloud.canteen.mapper.*; import com.bsd.pjcloud.canteen.service.CanteenDailyMenuService; import com.bsd.pjcloud.canteen.service.CanteenSpuService; import com.bsd.pjcloud.canteen.service.CanteenStockService; @@ -31,10 +28,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import java.util.Objects; +import java.util.*; import java.util.stream.Collectors; /** @@ -51,6 +45,7 @@ public class CanteenSpuServiceImpl extends ServiceImpl wrapper) { return baseMapper.selectListByScope(wrapper, DataScope.of()); @@ -226,7 +221,23 @@ public class CanteenSpuServiceImpl extends ServiceImpl wrapper = new LambdaQueryWrapper<>(); + wrapper.like(StrUtil.isNotBlank(canteenSpu.getName()), CanteenSpuEntity::getName, canteenSpu.getName()); + wrapper.eq(Objects.nonNull(canteenSpu.getCategoryId()), CanteenSpuEntity::getCategoryId, canteenSpu.getCategoryId()); + wrapper.orderByAsc(CanteenSpuEntity::getSort).orderByDesc(CanteenSpuEntity::getId); + LambdaQueryWrapper canteenOnlineSpuEntityLambdaQueryWrapper = new LambdaQueryWrapper<>(); + canteenOnlineSpuEntityLambdaQueryWrapper.isNotNull(CanteenOnlineSpuEntity::getLinkSpuId); + List canteenOnlineSpuEntities = canteenOnlineSpuMapper.selectListByScope(canteenOnlineSpuEntityLambdaQueryWrapper, DataScope.of()); + Set spuIds = canteenOnlineSpuEntities.stream().map(CanteenOnlineSpuEntity::getLinkSpuId).collect(Collectors.toSet()); + + wrapper.notIn(spuIds.size() > 0, CanteenSpuEntity::getId, spuIds); + + Page pageData = baseMapper.selectPageByScope(page, wrapper, DataScope.of()); + return pageData; + } } \ No newline at end of file diff --git a/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/service/impl/TimeSlotConfigServiceImpl.java b/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/service/impl/TimeSlotConfigServiceImpl.java index 150af2ac6..69f5e3007 100644 --- a/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/service/impl/TimeSlotConfigServiceImpl.java +++ b/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/service/impl/TimeSlotConfigServiceImpl.java @@ -1,16 +1,49 @@ package com.bsd.pjcloud.canteen.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.bsd.pjcloud.canteen.entity.TimeSlotConfigEntity; import com.bsd.pjcloud.canteen.mapper.TimeSlotConfigMapper; import com.bsd.pjcloud.canteen.service.TimeSlotConfigService; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + /** - * 时间段配置表 + * 时间段配置服务实现 * - * @author pjcloud - * @date 2025-08-13 12:17:22 + * @author zjf + * @date 2024-12-17 */ +@Slf4j @Service +@RequiredArgsConstructor public class TimeSlotConfigServiceImpl extends ServiceImpl implements TimeSlotConfigService { + + @Override + public List getEnabledTimeSlots() { + LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(); + wrapper.eq(TimeSlotConfigEntity::getIsEnabled, 1); // 只查询启用的 + wrapper.orderByAsc(TimeSlotConfigEntity::getSort); // 按排序升序 + return this.list(wrapper); + } + + @Override + public Map getMealTypeTimeRangeMap() { + List enabledTimeSlots = getEnabledTimeSlots(); + + Map mealTypeTimeRangeMap = new HashMap<>(); + for (TimeSlotConfigEntity timeSlot : enabledTimeSlots) { + String timeRange = timeSlot.getStartTime() + "-" + timeSlot.getEndTime(); + mealTypeTimeRangeMap.put(timeSlot.getMealType(), timeRange); + } + + return mealTypeTimeRangeMap; + } } \ No newline at end of file