diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/mapper/master/OptionalMbomMaterialMapper.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/mapper/master/OptionalMbomMaterialMapper.java index 6db7dd3c..c8727f21 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/mapper/master/OptionalMbomMaterialMapper.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/mapper/master/OptionalMbomMaterialMapper.java @@ -10,8 +10,10 @@ package com.nflg.product.bomnew.mapper.master; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.nflg.product.bomnew.pojo.entity.OptionalEbomMainEntity; import com.nflg.product.bomnew.pojo.entity.OptionalMbomMaterialEntity; + import com.nflg.product.bomnew.pojo.query.BomNewMbomParentQuery; import com.nflg.product.bomnew.pojo.query.OptionalEbomMainListQuery; import com.nflg.product.bomnew.pojo.query.OptionalMbomMaterialListQuery; + import com.nflg.product.bomnew.pojo.vo.BomNewMbomMiddleVO; import com.nflg.product.bomnew.pojo.vo.OptionalEbomMainVO; import com.nflg.product.bomnew.pojo.vo.OptionalMbomMaterialListVO; import com.nflg.product.bomnew.pojo.vo.OptionalMbomMaterialVO; @@ -32,5 +34,16 @@ public interface OptionalMbomMaterialMapper extends BaseMapper getListPage(Page page, @Param("query") OptionalMbomMaterialListQuery query); public List getChild(@Param("rowId") Long rowId); + + + Page indexListPage(Page page, @Param("query") OptionalMbomMaterialListQuery query ); + + /** + * 递归向上查找所有数据 + * @param rowId 当前行 + * @return + */ + List searchList(@Param("rowId") Long rowId ); + } diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/vo/OptionalMbomMaterialListVO.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/vo/OptionalMbomMaterialListVO.java index 7b00c3c2..f8c86b82 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/vo/OptionalMbomMaterialListVO.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/vo/OptionalMbomMaterialListVO.java @@ -6,7 +6,9 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.experimental.Accessors; +import java.util.Collections; import java.util.Date; +import java.util.List; @Data @ApiModel("mbom发布生成的物料信息") @@ -26,7 +28,7 @@ public class OptionalMbomMaterialListVO extends BaseMaterialVO { * 上层id */ @ApiModelProperty(value = "根id") - private Long rootRowId;; + private Long rootRowId; /** * 物料编码 */ @@ -95,4 +97,8 @@ public class OptionalMbomMaterialListVO extends BaseMaterialVO { */ @ApiModelProperty(value = "操作人姓名") private String realName; + + + private List childNodes = Collections.emptyList(); + } diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/OptionalMbomMaterialService.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/OptionalMbomMaterialService.java index 6173745d..91b7b45d 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/OptionalMbomMaterialService.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/OptionalMbomMaterialService.java @@ -1,5 +1,7 @@ package com.nflg.product.bomnew.service; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @@ -11,13 +13,18 @@ import com.nflg.product.bomnew.pojo.entity.OptionalMbomMaterialEntity; import com.nflg.product.bomnew.pojo.query.OptionalMbomMaterialListQuery; +import com.nflg.product.bomnew.pojo.vo.BomNewMbomMiddleVO; import com.nflg.product.bomnew.pojo.vo.OptionalMbomMaterialListVO; import com.nflg.product.bomnew.pojo.vo.OptionalMbomMaterialVO; import org.springframework.stereotype.Service; import javax.annotation.Resource; +import java.util.Collections; import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.stream.Collectors; /** * mbom发布生成的物料信息(OptionalMbomMaterial)表服务实现类 @@ -31,11 +38,60 @@ public class OptionalMbomMaterialService extends ServiceImpl getListPage(OptionalMbomMaterialListQuery query) { - Page list = this.getBaseMapper().getListPage(new Page<>(query.getPage(), query.getPageSize()), query); - materialMainService.intiMaterialInfo(list.getRecords()); - return list; + // Page list = this.getBaseMapper().getListPage(new Page<>(query.getPage(), query.getPageSize()), query); + + Page page; + if (StrUtil.isNotBlank(query.getMaterialNo()) || StrUtil.isNotBlank(query.getDrawingNo())) { + page = this.getBaseMapper().indexListPage(new Page<>(query.getPage(), query.getPageSize()), query); + if (CollectionUtil.isNotEmpty(page.getRecords())) { + List indexList = page.getRecords().stream().collect(Collectors.toList()); + page.getRecords().clear(); + + for(OptionalMbomMaterialListVO item : + indexList) { + List childList = this.getBaseMapper().searchList(item.getRowId()); + OptionalMbomMaterialListVO parent=listToTree(childList); + if(Objects.nonNull(parent)){ + page.getRecords().add(parent); + } + + } + + return page; + } + + } + + // materialMainService.intiMaterialInfo(list.getRecords()); + //不是通过物料或图号搜索 + page = this.getBaseMapper().getListPage(new Page<>(query.getPage(), query.getPageSize()), query); + materialMainService.intiMaterialInfo(page.getRecords()); + return page; + } + private OptionalMbomMaterialListVO listToTree(List childs) { + + if(CollectionUtil.isEmpty(childs)){ + return null; + } + + materialMainService.intiMaterialInfo(childs); + Map> groupMap = childs.stream().collect(Collectors.groupingBy(OptionalMbomMaterialListVO::getParentRowId)); + childs.forEach(child -> { + child.setChildNodes(groupMap.get(child.getRowId())); + + }); + //筛选出根 + List collect = childs.stream().filter(item -> Objects.isNull(item.getParentRowId()) || item.getParentRowId().longValue()==0).collect(Collectors.toList()); + return collect.get(0); + } + + + + + + public List getChild(Long rowId) { List list= this.getBaseMapper().getChild(rowId); diff --git a/nflg_project_dev/nflg-bom-new/src/main/resources/mapper/master/OptionalMbomMaterialMapper.xml b/nflg_project_dev/nflg-bom-new/src/main/resources/mapper/master/OptionalMbomMaterialMapper.xml index d8f469d7..83b8e1d3 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/resources/mapper/master/OptionalMbomMaterialMapper.xml +++ b/nflg_project_dev/nflg-bom-new/src/main/resources/mapper/master/OptionalMbomMaterialMapper.xml @@ -58,17 +58,17 @@ row_id,parent_row_id,level_row_id,material_no,material_name,material_desc,drawin left join t_optional_ebom_config as t2 on t1.root_row_id=t2.row_id - - t1.parent_row_id is null + where + t1.parent_row_id=0 and t1.created_by=#{query.createdBy} - and t1.material_no like concat('%', '${query.materialNo}', '%') + and t1.material_no=#{query.materialNo} - and t1.drawing_no like concat('%', '${query.drawingNo}', '%') + and t1.drawing_no like concat('', #{query.drawingNo} , '%') @@ -76,7 +76,7 @@ row_id,parent_row_id,level_row_id,material_no,material_name,material_desc,drawin - + order by t1.created_time DESC @@ -99,6 +99,45 @@ row_id,parent_row_id,level_row_id,material_no,material_name,material_desc,drawin + + +