| | |
| | | package cc.mrbird.febs.ai.service.impl; |
| | | |
| | | import cc.mrbird.febs.ai.entity.AiProduct; |
| | | import cc.mrbird.febs.ai.entity.AiProductCategory; |
| | | import cc.mrbird.febs.ai.entity.AiProductDependency; |
| | | import cc.mrbird.febs.ai.entity.AiProductPoint; |
| | | import cc.mrbird.febs.ai.mapper.AiProductCategoryMapper; |
| | | import cc.mrbird.febs.ai.mapper.AiProductDependencyMapper; |
| | | import cc.mrbird.febs.ai.mapper.AiProductMapper; |
| | | import cc.mrbird.febs.ai.service.AiProductDependencyService; |
| | | import cc.mrbird.febs.ai.util.UUID; |
| | | import cc.mrbird.febs.common.entity.FebsResponse; |
| | | import cc.mrbird.febs.common.entity.QueryRequest; |
| | | import cn.hutool.core.collection.CollUtil; |
| | | import cn.hutool.core.util.StrUtil; |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import lombok.RequiredArgsConstructor; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.Set; |
| | | import java.util.stream.Collectors; |
| | | |
| | | @Slf4j |
| | | @Service |
| | | @RequiredArgsConstructor |
| | | public class AiProductDependencyServiceImpl extends ServiceImpl<AiProductDependencyMapper, AiProductDependency> implements AiProductDependencyService { |
| | | |
| | | private final AiProductDependencyMapper aiProductDependencyMapper; |
| | | private final AiProductMapper aiProductMapper; |
| | | private final AiProductCategoryMapper aiProductCategoryMapper; |
| | | |
| | | @Override |
| | | public IPage<AiProductDependency> listInPage(AiProductDependency dto, QueryRequest request) { |
| | | return null; |
| | | |
| | | Page<AiProductDependency> page = new Page<>(request.getPageNum(), request.getPageSize()); |
| | | LambdaQueryWrapper<AiProductDependency> query = Wrappers.lambdaQuery(AiProductDependency.class); |
| | | if (StrUtil.isNotEmpty(dto.getCompanyId())){ |
| | | query.eq(AiProductDependency::getCompanyId, dto.getCompanyId()); |
| | | } |
| | | Page<AiProductDependency> pages = aiProductDependencyMapper.selectPage(page, query); |
| | | List<AiProductDependency> records = pages.getRecords(); |
| | | if (CollUtil.isNotEmpty(records)){ |
| | | //stream获取全部的productId |
| | | Set<String> collectCategoryIdList = records.stream().map(AiProductDependency::getProductCategoryId).collect(Collectors.toSet()); |
| | | List<AiProductCategory> aiProductCategories = aiProductCategoryMapper.selectList( |
| | | Wrappers.lambdaQuery(AiProductCategory.class) |
| | | .select(AiProductCategory::getId, AiProductCategory::getName) |
| | | .in(AiProductCategory::getId, collectCategoryIdList) |
| | | ); |
| | | Map<String, AiProductCategory> aiProductCategoryMap = |
| | | aiProductCategories.stream().collect(Collectors.toMap(AiProductCategory::getId, aiProductCategory -> aiProductCategory)); |
| | | |
| | | Set<String> collectPrerequisiteProductIdList = records.stream().map(AiProductDependency::getPrerequisiteProductId).collect(Collectors.toSet()); |
| | | List<AiProduct> aiProductPoints = aiProductMapper.selectList( |
| | | Wrappers.lambdaQuery(AiProduct.class) |
| | | .select(AiProduct::getId, AiProduct::getName) |
| | | .in(AiProduct::getId, collectPrerequisiteProductIdList) |
| | | ); |
| | | Map<String, AiProduct> aiProductPointMap = |
| | | aiProductPoints.stream().collect(Collectors.toMap(AiProduct::getId, aiProduct -> aiProduct)); |
| | | |
| | | Set<String> collectTargetProductIdList = records.stream().map(AiProductDependency::getTargetProductId).collect(Collectors.toSet()); |
| | | List<AiProduct> aiProductTargets = aiProductMapper.selectList( |
| | | Wrappers.lambdaQuery(AiProduct.class) |
| | | .select(AiProduct::getId, AiProduct::getName) |
| | | .in(AiProduct::getId, collectTargetProductIdList) |
| | | ); |
| | | Map<String, AiProduct> aiProductTargetMap = |
| | | aiProductTargets.stream().collect(Collectors.toMap(AiProduct::getId, aiProduct -> aiProduct)); |
| | | |
| | | for (AiProductDependency record : records){ |
| | | record.setProductCategoryName(aiProductCategoryMap.get(record.getProductCategoryId()).getName()); |
| | | record.setPrerequisiteProductName(aiProductPointMap.get(record.getPrerequisiteProductId()).getName()); |
| | | record.setTargetProductName(aiProductTargetMap.get(record.getTargetProductId()).getName()); |
| | | } |
| | | } |
| | | return pages; |
| | | } |
| | | |
| | | @Override |
| | | public FebsResponse add(AiProductDependency dto) { |
| | | dto.setId(UUID.getSimpleUUIDString()); |
| | | dto.setCreatedTime(new Date()); |
| | | aiProductDependencyMapper.insert(dto); |
| | | return new FebsResponse().success(); |
| | | } |
| | | |
| | | @Override |
| | | public FebsResponse delete(String id) { |
| | | |
| | | AiProductDependency aiProductDependency = aiProductDependencyMapper.selectById(id); |
| | | if (aiProductDependency != null){ |
| | | aiProductDependencyMapper.deleteById(id); |
| | | } |
| | | return new FebsResponse().success(); |
| | | } |
| | | } |