package com.qianwen.smartman.modules.dnc.service.impl; import java.util.ArrayList; import java.util.List; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.qianwen.core.log.exception.ServiceException; import com.qianwen.core.mp.base.BaseServiceImpl; import com.qianwen.core.tool.utils.Func; import com.qianwen.smartman.common.utils.MessageUtils; import com.qianwen.smartman.modules.dnc.convert.DncArtProductConvert; import com.qianwen.smartman.modules.dnc.entity.DncArtProduct; import com.qianwen.smartman.modules.dnc.mapper.DncArtProductMapper; import com.qianwen.smartman.modules.dnc.service.IDncArtProductService; import com.qianwen.smartman.modules.dnc.vo.DncArtProductVO; @Service public class DncArtProductServiceImpl extends BaseServiceImpl implements IDncArtProductService { @Override // org.springblade.modules.dnc.service.IDncArtProductService @Transactional(rollbackFor = {Exception.class}) public List addDncArtProduct(List artProductVOList) { artProductVOList.forEach(artProductVO -> { Long productId = artProductVO.getProductId(); Long artBagId = artProductVO.getArtBagId(); Long productTypeId = artProductVO.getProductTypeId(); if (checkRepetition(artBagId, productTypeId, productId)) { throw new ServiceException(MessageUtils.message("dnc.art.bag.already.relation.product", new Object[0])); } }); List dncArtProducts = DncArtProductConvert.INSTANCE.convertVOList(artProductVOList); saveBatch(dncArtProducts); return DncArtProductConvert.INSTANCE.convert(dncArtProducts); } @Override // org.springblade.modules.dnc.service.IDncArtProductService public List relatedProducts(String artBagId) { List list = list(Wrappers.lambdaQuery().eq(DncArtProduct::getArtBagId, artBagId)); /* List list = list((Wrapper) Wrappers.lambdaQuery().eq((v0) -> { return v0.getArtBagId(); }, artBagId));*/ if (Func.isNotEmpty(list)) { return DncArtProductConvert.INSTANCE.convert(list); } return new ArrayList<>(); } private boolean checkRepetition(Long artBagId, Long productTypeId, Long productId) { DncArtProduct one = getOne(Wrappers.lambdaQuery().eq(DncArtProduct::getArtBagId, artBagId) .eq(DncArtProduct::getProductTypeId, productTypeId) .eq(DncArtProduct::getProductId, productId)); return one != null; } }