Merge branch 'master' of http://gitea.zianxin.com/zianxin-tec/biz-api-cloud
This commit is contained in:
commit
46701dfdc6
4 files changed
+104
-57
No files matched your search
+34
@@ -0,0 +1,34 @@
|
||||
package com.bsd.pjcloud.canteen.dto;
|
||||
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import lombok.Data;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
|
||||
import java.time.LocalDate;
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
public class CanteenDailyMenuCVDTO {
|
||||
|
||||
/**
|
||||
* 原商户id
|
||||
*/
|
||||
@NotNull
|
||||
private Long sourceMerchantId;
|
||||
|
||||
|
||||
/**
|
||||
* 目标商户id
|
||||
*/
|
||||
@NotNull
|
||||
private List<Long> targetMerchantId;
|
||||
|
||||
|
||||
|
||||
@Schema(description = "开始时间")
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd")
|
||||
@NotNull
|
||||
private LocalDate startTime;
|
||||
}
|
||||
+12
@@ -8,6 +8,7 @@ import cn.hutool.core.util.StrUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.bsd.pjcloud.canteen.dto.CanteenDailyMenuCVDTO;
|
||||
import com.bsd.pjcloud.canteen.dto.DailyMenuAll;
|
||||
import com.bsd.pjcloud.canteen.dto.app.DailyMenuDTO;
|
||||
import com.bsd.pjcloud.canteen.entity.CanteenSpuEntity;
|
||||
@@ -108,6 +109,14 @@ public class CanteenDailyMenuController {
|
||||
return R.ok(canteenDailyMenuService.updateById(canteenDailyMenu));
|
||||
}
|
||||
|
||||
|
||||
@Operation(summary = "一键复制", description = "一键复制")
|
||||
@SysLog("一键复制")
|
||||
@PostMapping("/cv")
|
||||
@PreAuthorize("@pms.hasPermission('canteen_canteenDailyMenu_add')")
|
||||
public R cv(@RequestBody CanteenDailyMenuCVDTO creenDailyMenuCVDTO) {
|
||||
return canteenDailyMenuService.cv(creenDailyMenuCVDTO);
|
||||
}
|
||||
/**
|
||||
* 通过id删除每日菜谱
|
||||
*
|
||||
@@ -214,4 +223,7 @@ public class CanteenDailyMenuController {
|
||||
}
|
||||
return R.ok(canteenDailyMenuService.selectTimeFood(time, merchantId, categoryId));
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
+10
@@ -2,10 +2,12 @@ package com.bsd.pjcloud.canteen.service;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.bsd.pjcloud.canteen.dto.CanteenDailyMenuCVDTO;
|
||||
import com.bsd.pjcloud.canteen.dto.DailyMenuAll;
|
||||
import com.bsd.pjcloud.canteen.dto.app.DailyMenuDTO;
|
||||
import com.bsd.pjcloud.canteen.entity.CanteenDailyMenuEntity;
|
||||
import com.bsd.pjcloud.canteen.vo.ADCanteenDailyMenuListVO;
|
||||
import com.bsd.pjcloud.common.core.util.R;
|
||||
import com.bsd.pjcloud.common.security.service.PjcloudUser;
|
||||
|
||||
import java.util.ArrayList;
|
||||
@@ -50,4 +52,12 @@ public interface CanteenDailyMenuService extends IService<CanteenDailyMenuEntity
|
||||
List<ADCanteenDailyMenuListVO> getCanteenMenuListScope(String day, Integer hourType, Long categoryId, Long merchantId);
|
||||
|
||||
Page selectTimeFoodPage(Page page, DailyMenuDTO dailyMenuDTO);
|
||||
|
||||
|
||||
/**
|
||||
* 一键复制
|
||||
* @param creenDailyMenuCVDTO
|
||||
* @return
|
||||
*/
|
||||
R cv(CanteenDailyMenuCVDTO creenDailyMenuCVDTO);
|
||||
}
|
||||
+48
-57
@@ -5,6 +5,7 @@ import com.alibaba.nacos.common.utils.CollectionUtils;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.bsd.pjcloud.canteen.dto.CanteenDailyMenuCVDTO;
|
||||
import com.bsd.pjcloud.canteen.dto.DailyMenuAll;
|
||||
import com.bsd.pjcloud.canteen.dto.app.DailyMenuDTO;
|
||||
import com.bsd.pjcloud.canteen.entity.CanteenSpuEntity;
|
||||
@@ -143,67 +144,57 @@ public class CanteenDailyMenuServiceImpl extends ServiceImpl<CanteenDailyMenuMap
|
||||
|
||||
@Override
|
||||
public Page selectTimeFoodPage(Page page, DailyMenuDTO dailyMenuDTO) {
|
||||
// LambdaQueryWrapper<CanteenDailyMenuEntity> canteenDailyMenuEntityLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
||||
// canteenDailyMenuEntityLambdaQueryWrapper.eq(CanteenDailyMenuEntity::getMerchantId, dailyMenuDTO.getMerchantId());
|
||||
// canteenDailyMenuEntityLambdaQueryWrapper.eq(CanteenDailyMenuEntity::getStartTime, dailyMenuDTO.getStartTime());
|
||||
// canteenDailyMenuEntityLambdaQueryWrapper.eq(dailyMenuDTO.getHourType() != null,
|
||||
// CanteenDailyMenuEntity::getHourType, dailyMenuDTO.getHourType());
|
||||
//
|
||||
// //查询
|
||||
// LambdaQueryWrapper<CanteenSpuEntity> onlineFoodSpuDOLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
||||
// onlineFoodSpuDOLambdaQueryWrapper.eq(null != dailyMenuDTO.getCategoryId(), CanteenSpuEntity::getCategoryId, dailyMenuDTO.getCategoryId());
|
||||
// onlineFoodSpuDOLambdaQueryWrapper.eq(CanteenSpuEntity::getIsShow, "1");
|
||||
// List<CanteenSpuEntity> spuEntities = canteenSpuService.list(onlineFoodSpuDOLambdaQueryWrapper);
|
||||
//
|
||||
// if (CollectionUtils.isNotEmpty(spuEntities)){
|
||||
// List<Long> spuIds = spuEntities.stream().map(CanteenSpuEntity::getId).collect(Collectors.toList());
|
||||
// canteenDailyMenuEntityLambdaQueryWrapper.notIn(CanteenDailyMenuEntity::getSpuId, spuIds);
|
||||
// }
|
||||
//
|
||||
// Page pageData = baseMapper.selectPage(page, canteenDailyMenuEntityLambdaQueryWrapper);
|
||||
// List<CanteenDailyMenuEntity> canteenDailyMenuEntities = pageData.getRecords();
|
||||
// if (CollectionUtils.isNotEmpty(canteenDailyMenuEntities)) {
|
||||
// List<Long> spuIds = canteenDailyMenuEntities.stream().map(CanteenDailyMenuEntity::getSpuId).distinct().collect(Collectors.toList());
|
||||
// LambdaQueryWrapper<CanteenSpuEntity> spuDOLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
||||
// onlineFoodSpuDOLambdaQueryWrapper.in(CanteenSpuEntity::getId, spuIds);
|
||||
// List<CanteenSpuEntity> list = canteenSpuService.list(spuDOLambdaQueryWrapper);
|
||||
// // 按 id 分组成 Map
|
||||
// Map<Long, CanteenSpuEntity> spuEntityMap = list.stream()
|
||||
// .collect(Collectors.toMap(CanteenSpuEntity::getId, spu -> spu));
|
||||
// // 构造新的 VO 列表
|
||||
// List<DailyMenuAppVO> dailyMenuVOList = canteenDailyMenuEntities.stream()
|
||||
// .map(menu -> {
|
||||
// DailyMenuAppVO vo = new DailyMenuAppVO();
|
||||
// BeanUtils.copyProperties(menu, vo); // 拷贝通用属性
|
||||
// CanteenSpuEntity spuEntity = spuEntityMap.get(menu.getSpuId());
|
||||
// if (spuEntity != null) {
|
||||
// vo.setSpuId(spuEntity.getId());
|
||||
// vo.setStock(spuEntity.getStock());
|
||||
// vo.setPrice(spuEntity.getPrice());
|
||||
// vo.setPicUrl(spuEntity.getPicUrl());
|
||||
// vo.setName(spuEntity.getName());
|
||||
// vo.setSort(spuEntity.getSort());
|
||||
// vo.setIsShow(spuEntity.getIsShow());
|
||||
// // 其他需要的字段
|
||||
// }
|
||||
// return vo;
|
||||
// })
|
||||
// .collect(Collectors.toList());
|
||||
//// dailyMenuVOList.sort(Comparator.comparing(DailyMenuAppVO::getSort));
|
||||
// // 修改排序逻辑,处理null值情况
|
||||
// dailyMenuVOList.sort(Comparator.comparing(
|
||||
// DailyMenuAppVO::getSort,
|
||||
// Comparator.nullsFirst(Comparator.naturalOrder())
|
||||
// ));
|
||||
// pageData.setRecords(dailyMenuVOList);
|
||||
|
||||
Page<DailyMenuAppVO> pageData = baseMapper.selectTimeFoodPage(page, dailyMenuDTO);
|
||||
return pageData;
|
||||
// }
|
||||
|
||||
// return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public R cv(CanteenDailyMenuCVDTO creenDailyMenuCVDTO) {
|
||||
LocalDate startTime = creenDailyMenuCVDTO.getStartTime();
|
||||
//取出复制源
|
||||
Long sourceMerchantId = creenDailyMenuCVDTO.getSourceMerchantId();
|
||||
LambdaQueryWrapper<CanteenDailyMenuEntity> canteenDailyMenuEntityLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
||||
canteenDailyMenuEntityLambdaQueryWrapper
|
||||
.eq(CanteenDailyMenuEntity::getMerchantId, sourceMerchantId);
|
||||
canteenDailyMenuEntityLambdaQueryWrapper.eq(CanteenDailyMenuEntity::getStartTime, startTime);
|
||||
List<CanteenDailyMenuEntity> canteenDailyMenuEntities = baseMapper.selectList(canteenDailyMenuEntityLambdaQueryWrapper);
|
||||
if (CollectionUtils.isEmpty(canteenDailyMenuEntities)) {
|
||||
return R.failed("复制源数据为空");
|
||||
}
|
||||
// 目标源处理
|
||||
List<Long> targetMerchantIds = creenDailyMenuCVDTO.getTargetMerchantId();
|
||||
for (Long targetMerchantId : targetMerchantIds) {
|
||||
// 查询目标商户已存在的spuId
|
||||
Set<String> existKeys = baseMapper.selectList(new LambdaQueryWrapper<CanteenDailyMenuEntity>()
|
||||
.eq(CanteenDailyMenuEntity::getMerchantId, targetMerchantId)
|
||||
.eq(CanteenDailyMenuEntity::getStartTime, startTime)
|
||||
.select(CanteenDailyMenuEntity::getSpuId, CanteenDailyMenuEntity::getHourType))
|
||||
.stream()
|
||||
.map(menu -> menu.getSpuId() + "_" + menu.getHourType()) // 生成唯一组合键
|
||||
.collect(Collectors.toSet());
|
||||
|
||||
|
||||
// 过滤需要新增的数据
|
||||
// 过滤需要新增的数据(同时校验spuId和hourType)
|
||||
List<CanteenDailyMenuEntity> newEntities = canteenDailyMenuEntities.stream()
|
||||
.filter(menu -> !existKeys.contains(menu.getSpuId() + "_" + menu.getHourType())) // 关键修改点
|
||||
.map(menu -> {
|
||||
CanteenDailyMenuEntity entity = new CanteenDailyMenuEntity();
|
||||
BeanUtils.copyProperties(menu, entity);
|
||||
entity.setMerchantId(targetMerchantId);
|
||||
entity.setId(null);
|
||||
return entity;
|
||||
})
|
||||
.collect(Collectors.toList());
|
||||
|
||||
if (!CollectionUtils.isEmpty(newEntities)) {
|
||||
saveBatch(newEntities); // 使用批量插入
|
||||
sendMqttMsg(targetMerchantId);
|
||||
}
|
||||
}
|
||||
return R.ok();
|
||||
}
|
||||
// 发送mq消息
|
||||
private void sendMqttMsg(Long mchId) {
|
||||
if (ObjectUtil.isEmpty(mchId)) return;
|
||||
|
||||
Reference in new issue
Block a user