diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/BomNewEbomParentFormalService.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/BomNewEbomParentFormalService.java index bf1d333e..20b229bf 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/BomNewEbomParentFormalService.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/BomNewEbomParentFormalService.java @@ -1,61 +1,80 @@ package com.nflg.product.bomnew.service; -import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; -import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.convert.Convert; import cn.hutool.core.lang.TypeReference; -import cn.hutool.core.thread.ThreadUtil; -import cn.hutool.core.util.IdUtil; -import cn.hutool.core.util.NumberUtil; -import cn.hutool.core.util.StrUtil; import cn.hutool.extra.spring.SpringUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; -import com.baomidou.mybatisplus.core.toolkit.IdWorker; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.google.common.collect.ImmutableList; -import com.google.common.collect.Sets; -import com.nflg.product.base.core.conmon.util.SessionUtil; -import com.nflg.product.base.core.exception.NflgBusinessException; -import com.nflg.product.bomnew.constant.*; import com.nflg.product.bomnew.mapper.master.BomNewEbomParentFormalMapper; -import com.nflg.product.bomnew.mapper.master.BomNewEbomParentMapper; -import com.nflg.product.bomnew.pojo.dto.*; -import com.nflg.product.bomnew.pojo.entity.*; -import com.nflg.product.bomnew.pojo.query.BomNewEbomMaterialQuery; -import com.nflg.product.bomnew.pojo.query.BomNewEbomParentQuery; -import com.nflg.product.bomnew.pojo.vo.*; -import com.nflg.product.bomnew.service.domain.EBom.*; -import com.nflg.product.bomnew.util.*; +import com.nflg.product.bomnew.pojo.entity.BomNewEbomChildEntity; +import com.nflg.product.bomnew.pojo.entity.BomNewEbomChildFormalEntity; +import com.nflg.product.bomnew.pojo.entity.BomNewEbomParentEntity; +import com.nflg.product.bomnew.pojo.entity.BomNewEbomParentFormalEntity; import lombok.extern.slf4j.Slf4j; -import nflg.product.common.constant.STATE; -import org.apache.commons.lang3.StringUtils; -import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; -import org.ttzero.excel.entity.ListSheet; -import javax.annotation.Resource; -import javax.servlet.http.HttpServletResponse; -import java.io.IOException; -import java.io.InputStream; -import java.math.BigDecimal; -import java.time.LocalDateTime; -import java.util.*; -import java.util.concurrent.ExecutionException; -import java.util.concurrent.ForkJoinPool; -import java.util.concurrent.ForkJoinTask; +import java.util.ArrayList; +import java.util.List; import java.util.stream.Collectors; - @Service @Slf4j public class BomNewEbomParentFormalService extends ServiceImpl { + public void copyEbomFormal(Long eBomRowId) { + + + List bomListId = new ArrayList<>(); + bomListId.add(eBomRowId); + List parentFormalList = new ArrayList<>(); + List childFormalList = new ArrayList<>(); + + while (!bomListId.isEmpty()) { + QueryWrapper queryWrapper1 = new QueryWrapper<>(); + queryWrapper1.lambda().in(BomNewEbomParentEntity::getRowId, bomListId); + + List parentEntityList = SpringUtil.getBean(BomNewEbomParentService.class).list(queryWrapper1); + if (CollUtil.isEmpty(parentEntityList)) { + break; + } + + parentFormalList.addAll(Convert.convert(new TypeReference>() { + }, parentEntityList)); + + //查询子级 + QueryWrapper queryWrapper2 = new QueryWrapper<>(); + queryWrapper2.lambda().in(BomNewEbomChildEntity::getParentRowId, bomListId); + + List childEntityList = SpringUtil.getBean(BomNewEbomChildService.class).list(queryWrapper2); + + if (CollUtil.isEmpty(childEntityList)) { + break; + } + + childFormalList.addAll(Convert.convert(new TypeReference>() { + }, childEntityList)); + + bomListId.clear(); + + List nextBomId = childEntityList.stream().filter(u -> u.getBomVersionRowId() != null && u.getBomVersionRowId() > 0).map(BomNewEbomChildEntity::getBomVersionRowId).collect(Collectors.toList()); + if (CollUtil.isNotEmpty(nextBomId)) { + bomListId.addAll(nextBomId); + } + + } + + if (CollUtil.isNotEmpty(parentFormalList)) { + this.saveOrUpdateBatch(parentFormalList); + // System.out.println(JSON.toJSONString( parentFormalList)); + } + if (CollUtil.isNotEmpty(childFormalList)) { + // System.out.println(JSON.toJSONString( childFormalList)); + SpringUtil.getBean(BomNewEbomChildFormalService.class).saveOrUpdateBatch(childFormalList); + } + } } diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/BomNewPbomParentFormalService.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/BomNewPbomParentFormalService.java index bbdcdc8d..84526da5 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/BomNewPbomParentFormalService.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/BomNewPbomParentFormalService.java @@ -3,53 +3,80 @@ package com.nflg.product.bomnew.service; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.convert.Convert; -import cn.hutool.core.util.NumberUtil; -import cn.hutool.core.util.StrUtil; +import cn.hutool.core.lang.TypeReference; import cn.hutool.extra.spring.SpringUtil; -import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; -import com.baomidou.mybatisplus.core.metadata.IPage; -import com.baomidou.mybatisplus.core.toolkit.IdWorker; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.google.common.collect.ImmutableList; -import com.google.common.collect.Sets; -import com.nflg.product.base.core.conmon.util.SessionUtil; -import com.nflg.product.base.core.exception.NflgBusinessException; -import com.nflg.product.bomnew.constant.*; import com.nflg.product.bomnew.mapper.master.BomNewPbomParentFormalMapper; -import com.nflg.product.bomnew.mapper.master.BomNewPbomParentMapper; -import com.nflg.product.bomnew.pojo.dto.*; -import com.nflg.product.bomnew.pojo.dto.sap.impart2.ImportSapParamDTO; -import com.nflg.product.bomnew.pojo.entity.*; -import com.nflg.product.bomnew.pojo.query.BomNewPbomParentQuery; -import com.nflg.product.bomnew.pojo.vo.*; -import com.nflg.product.bomnew.service.domain.PBom.*; -import com.nflg.product.bomnew.service.domain.Sap; -import com.nflg.product.bomnew.util.*; -import nflg.product.common.constant.STATE; -import nflg.product.common.vo.ResultVO; -import org.springframework.beans.factory.annotation.Qualifier; +import com.nflg.product.bomnew.pojo.entity.BomNewPbomChildEntity; +import com.nflg.product.bomnew.pojo.entity.BomNewPbomChildFormalEntity; +import com.nflg.product.bomnew.pojo.entity.BomNewPbomParentEntity; +import com.nflg.product.bomnew.pojo.entity.BomNewPbomParentFormalEntity; import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; -import org.ttzero.excel.entity.Workbook; -import javax.annotation.Resource; -import javax.servlet.http.HttpServletResponse; -import java.io.IOException; -import java.math.BigDecimal; -import java.time.LocalDateTime; -import java.util.*; -import java.util.concurrent.ExecutionException; -import java.util.concurrent.ForkJoinPool; -import java.util.concurrent.ForkJoinTask; -import java.util.concurrent.atomic.AtomicInteger; +import java.util.ArrayList; +import java.util.List; import java.util.stream.Collectors; - @Service -public class BomNewPbomParentFormalService extends ServiceImpl { +public class BomNewPbomParentFormalService extends ServiceImpl { + /** + * 拷贝pbom已发布数 + */ + public void copyPbomFormal(Long pBomRowId) { + + List bomListId = new ArrayList<>(); + bomListId.add(pBomRowId); + List parentFormalList = new ArrayList<>(); + List childFormalList = new ArrayList<>(); + + while (!bomListId.isEmpty()) { + QueryWrapper queryWrapper1 = new QueryWrapper<>(); + queryWrapper1.lambda().in(BomNewPbomParentEntity::getRowId, bomListId); + + List parentEntityList = SpringUtil.getBean(BomNewPbomParentService.class).list(queryWrapper1); + if (CollUtil.isEmpty(parentEntityList)) { + break; + } + + parentFormalList.addAll(Convert.convert(new TypeReference>() { + }, parentEntityList)); + + //查询子级 + QueryWrapper queryWrapper2 = new QueryWrapper<>(); + queryWrapper2.lambda().in(BomNewPbomChildEntity::getParentRowId, bomListId); + + List childEntityList = SpringUtil.getBean(BomNewPbomChildService.class).list(queryWrapper2); + + if (CollUtil.isEmpty(childEntityList)) { + break; + } + + childFormalList.addAll(Convert.convert(new TypeReference>() { + }, childEntityList)); + + bomListId.clear(); + + List nextBomId = childEntityList.stream().filter(u -> u.getBomVersionRowId() != null && u.getBomVersionRowId() > 0).map(BomNewPbomChildEntity::getBomVersionRowId).collect(Collectors.toList()); + if (CollUtil.isNotEmpty(nextBomId)) { + bomListId.addAll(nextBomId); + } + + } + + if(CollUtil.isNotEmpty(parentFormalList)){ + this.saveOrUpdateBatch(parentFormalList); + // System.out.println(JSON.toJSONString( parentFormalList)); + } + if(CollUtil.isNotEmpty(childFormalList)){ + // System.out.println(JSON.toJSONString( childFormalList)); + SpringUtil.getBean(BomNewPbomChildFormalService.class).saveOrUpdateBatch(childFormalList); + } + } + }