diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/api/user/BomReportApi.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/api/user/BomReportApi.java index f8c86720..b7685d68 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/api/user/BomReportApi.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/api/user/BomReportApi.java @@ -6,16 +6,19 @@ import cn.hutool.core.convert.Convert; import cn.hutool.core.lang.TypeReference; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.google.common.collect.ImmutableList; import com.nflg.product.base.core.api.BaseApi; import com.nflg.product.base.core.exception.NflgBusinessException; import com.nflg.product.bomnew.constant.ReportConstant; +import com.nflg.product.bomnew.pojo.entity.MaterialMainEntity; import com.nflg.product.bomnew.pojo.query.ChildBomReportQuery; import com.nflg.product.bomnew.pojo.query.CompareReportQuery; import com.nflg.product.bomnew.pojo.query.ReverseReportQuery; import com.nflg.product.bomnew.pojo.vo.*; import com.nflg.product.bomnew.service.CompareReportService; import com.nflg.product.bomnew.service.ForwardReportService; +import com.nflg.product.bomnew.service.MaterialMainService; import com.nflg.product.bomnew.service.ReverseReportService; import com.nflg.product.bomnew.util.EecExcelUtil; import com.nflg.product.bomnew.util.VUtils; @@ -32,9 +35,13 @@ import org.ttzero.excel.entity.ListSheet; import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; +import javax.xml.transform.Result; import java.io.IOException; import java.util.List; +import java.util.Map; import java.util.Objects; +import java.util.Set; +import java.util.stream.Collectors; @Api(tags = "BOM-报表接口") @RestController @@ -50,6 +57,8 @@ public class BomReportApi extends BaseApi { @Resource CompareReportService compareReportService; + @Resource + MaterialMainService materialMainService; @PostMapping("reverseReport") @ApiOperation("bom-反查") @@ -123,8 +132,18 @@ public class BomReportApi extends BaseApi { if (resultVO != null) { return resultVO; } - - return ResultVO.success(forwardReportService.factoryBomType(query)); + //物料描述从 物料主数据获取 by 10002327 240926 + ReportBomVO r = forwardReportService.factoryBomType(query); + if(r == null){ + return ResultVO.error("查无数据~"); + } + if(CollUtil.isNotEmpty(r.getChildNodes())){ + Set materialNoSet = r.getChildNodes().stream().map(BaseMaterialVO::getMaterialNo).collect(Collectors.toSet()); + List materialMainList = materialMainService.list(Wrappers.lambdaQuery().in(MaterialMainEntity::getMaterialNo,materialNoSet)); + Map materialMainMap = materialMainList.stream().collect(Collectors.toMap(MaterialMainEntity::getMaterialNo,MaterialMainEntity::getMaterialDesc,(k1, k2)->k1)); + r.getChildNodes().forEach(c -> c.setMaterialDesc(materialMainMap.getOrDefault(c.getMaterialNo(),c.getMaterialDesc()))); + } + return ResultVO.success(r); } diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/api/user/DQBomApi.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/api/user/DQBomApi.java index d150a08a..6c68eed9 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/api/user/DQBomApi.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/api/user/DQBomApi.java @@ -99,12 +99,12 @@ public class DQBomApi extends BaseApi { @ApiOperation("分页查询数据") public ResultVO> getPageList(@Valid @RequestBody @NotNull BomNewDQbomPageQuery query) { // 电气BOM正式表查询无须添加时间条件 by 10002327 240918 -// if (query.getStatus() == 2) { -// if (StrUtil.isBlank(query.getStartDate()) && StrUtil.isBlank(query.getEndDate())) { -// query.setStartDate(LocalDateTimeUtil.format(LocalDateTime.now().plusDays(-2), "yyyy-MM-dd")); -// query.setEndDate(LocalDateTimeUtil.format(LocalDateTime.now().plusDays(1), "yyyy-MM-dd")); -// } -// } + if (query.getStatus() == 2) { + if (StrUtil.isAllBlank(query.getDrawingNo(),query.getMaterialNo(),query.getMaterialName(),query.getStartDate(),query.getEndDate())) { + query.setStartDate(LocalDateTimeUtil.format(LocalDateTime.now().plusDays(-2), "yyyy-MM-dd")); + query.setEndDate(LocalDateTimeUtil.format(LocalDateTime.now().plusDays(1), "yyyy-MM-dd")); + } + } return ResultVO.success(dQBomService.getPageList(query)); } diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/BomNewEbomParentService.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/BomNewEbomParentService.java index 905b0c8d..1b36fdac 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/BomNewEbomParentService.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/BomNewEbomParentService.java @@ -40,6 +40,7 @@ import nflg.product.common.constant.STATE; import nflg.product.common.vo.ResultVO; import org.apache.commons.compress.utils.Lists; import org.apache.commons.lang3.StringUtils; +import org.checkerframework.checker.nullness.Opt; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -1021,11 +1022,31 @@ public class BomNewEbomParentService extends ServiceImpllambdaQuery().in(BomNewEbomChildEntity::getParentRowId,ebomParentIdList)); // } - //3、判断parent下是否有子级,如果没有的话,把parent给删除了 物料****因下级全部是F项,仅保存EBOM,未生成PBOM数据 + //3、判断parent下是否有子级,排除电控系统和仙桃的,如果没有的话,把parent给删除了 物料****因下级全部是F项,仅保存EBOM,未生成PBOM数据 仙桃) List emptyChildParentList = eBomToPBom.getPBomParentResult().stream() - .filter(p -> !p.getMaterialDesc().contains("电控系统") && !eBomToPBom.getPBomChildResult().stream().map(BomNewPbomChildEntity::getParentRowId).collect(Collectors.toList()).contains(p.getRowId()) ) + .filter(p -> !p.getMaterialDesc().contains("电控系统") && !p.getMaterialDesc().contains("仙桃)") + && !eBomToPBom.getPBomChildResult().stream().map(BomNewPbomChildEntity::getParentRowId).collect(Collectors.toList()).contains(p.getRowId()) ) .collect(Collectors.toList()); if(!emptyChildParentList.isEmpty()){ + //仅选择的第一层需要提示 + List fList = emptyChildParentList.stream().filter(p -> p.getSourceRowId().equals(bomRowId)).filter(p -> { + Optional opt = bomTree.stream().filter(t -> p.getMaterialNo().equals(t.getMaterialNo())).findFirst(); + if(opt.isPresent()){ + List cList = bomTree.stream().filter(t -> t.getParentRowId().equals(opt.get().getRowId())).collect(Collectors.toList()); + if(cList.size() > 0){ + Map> ptMap = cList.stream().collect(Collectors.groupingBy(BaseMaterialVO::getProjectType)); + return ptMap.getOrDefault("F",Lists.newArrayList()).size() == cList.size(); + } + } + return false; + }).collect(Collectors.toList()); + if(!fList.isEmpty()){ + String m = fList.stream().map(BomNewPbomParentEntity::getMaterialNo).distinct().collect(Collectors.joining(",")); + OperationErrorMsgVO oem = new OperationErrorMsgVO(); + oem.setPrimaryKey(m); + oem.msg = String.format("物料%s因下级全部是F项,仅保存EBOM,未生成PBOM数据",m); + rList.add(oem); + } // rList = emptyChildParentList.stream().map(BomNewPbomParentEntity::getMaterialNo).distinct() // .map(m -> { // OperationErrorMsgVO oem = new OperationErrorMsgVO(); @@ -1197,9 +1218,30 @@ public class BomNewEbomParentService extends ServiceImpl emptyChildParentList = eBomToPBom.getPBomParentResult().stream() - .filter(p -> !p.getMaterialDesc().contains("电控系统") && !eBomToPBom.getPBomChildResult().stream().map(BomNewPbomChildEntity::getParentRowId).collect(Collectors.toList()).contains(p.getRowId()) ) + .filter(p -> !p.getMaterialDesc().contains("电控系统") && !p.getMaterialDesc().contains("仙桃)") + && !eBomToPBom.getPBomChildResult().stream().map(BomNewPbomChildEntity::getParentRowId).collect(Collectors.toList()).contains(p.getRowId()) ) .collect(Collectors.toList()); if(!emptyChildParentList.isEmpty()){ + //仅选择的第一层需要提示 + List fList = emptyChildParentList.stream().filter(p -> p.getSourceRowId().equals(bomRowId)).filter(p -> { + Optional opt = bomTree.stream().filter(t -> p.getMaterialNo().equals(t.getMaterialNo())).findFirst(); + if(opt.isPresent()){ + List cList = bomTree.stream().filter(t -> t.getParentRowId().equals(opt.get().getRowId())).collect(Collectors.toList()); + if(cList.size() > 0){ + Map> ptMap = cList.stream().collect(Collectors.groupingBy(BaseMaterialVO::getProjectType)); + return ptMap.getOrDefault("F",Lists.newArrayList()).size() == cList.size(); + } + } + return false; + }).collect(Collectors.toList()); + if(!fList.isEmpty()){ + String m = fList.stream().map(BomNewPbomParentEntity::getMaterialNo).distinct().collect(Collectors.joining(",")); + OperationErrorMsgVO oem = new OperationErrorMsgVO(); + oem.setPrimaryKey(m); + oem.msg = String.format("物料%s因下级全部是F项,仅保存EBOM,未生成PBOM数据",m); + rList.add(oem); + } + // rList = emptyChildParentList.stream().map(BomNewPbomParentEntity::getMaterialNo).distinct() // .map(m -> { // OperationErrorMsgVO oem = new OperationErrorMsgVO(); diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/PBom/TechnologyPackageParamBuilder.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/PBom/TechnologyPackageParamBuilder.java index ff306733..05b6d296 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/PBom/TechnologyPackageParamBuilder.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/PBom/TechnologyPackageParamBuilder.java @@ -2,6 +2,8 @@ package com.nflg.product.bomnew.service.domain.PBom; 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.extra.spring.SpringUtil; import com.baomidou.mybatisplus.core.toolkit.IdWorker; @@ -19,12 +21,14 @@ import com.nflg.product.bomnew.service.MaterialMainService; import com.nflg.product.bomnew.util.VUtils; import com.nflg.product.bomnew.util.VersionUtil; import lombok.Getter; +import org.apache.commons.compress.utils.Lists; import java.math.BigDecimal; import java.time.LocalDateTime; import java.util.ArrayList; import java.util.List; import java.util.Objects; +import java.util.Optional; /** * 工艺包构建 @@ -219,7 +223,11 @@ public class TechnologyPackageParamBuilder { child.setRowId(IdWorker.getId()); child.setParentRowId(parent.getRowId()); child.setFacCode(parent.getFacCode()); - child.setOrderNumber(StrUtil.padPre (String.valueOf(parentChildren.size()+1),3,"0")); + //虚拟包作为下级时,序号按照已有的子级取出最大的序号值+1 by 10002327 0925 + int orderNumber = parentChildren.stream().max((p1,p2) -> p1.getOrderNumber().compareTo(p2.getOrderNumber())) + .map(m -> Convert.toInt(m.getOrderNumber())).orElse(0); + + child.setOrderNumber(StrUtil.padPre (String.valueOf(orderNumber+1),3,"0")); child.setDrawingNo(packageMaterial.getDrawingNo()); child.setMaterialNo(packageMaterial.getMaterialNo()); child.setMaterialName(packageMaterial.getMaterialName()); diff --git a/nflg_project_dev/nflg-bom-new/src/main/resources/logback-prod.xml b/nflg_project_dev/nflg-bom-new/src/main/resources/logback-prod.xml index c3bf93f4..f5833c6c 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/resources/logback-prod.xml +++ b/nflg_project_dev/nflg-bom-new/src/main/resources/logback-prod.xml @@ -35,6 +35,28 @@ + + + + error + + ${logDir}/error/nflg-bom-new-error.log + + + ${logDir}/error/%d{yyyy-MM-dd}.%i.error.log + + 30 + + true + + ${splitSize} + + + + %d{yyyy-MM-dd HH:mm:ss.SSS} %X{traceId} [%thread] %-5level %logger{50} %msg%n + + + @@ -43,4 +65,7 @@ + + + \ No newline at end of file diff --git a/nflg_project_dev/nflg-bom-new/src/main/resources/logback-sit.xml b/nflg_project_dev/nflg-bom-new/src/main/resources/logback-sit.xml index 75819510..d9453627 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/resources/logback-sit.xml +++ b/nflg_project_dev/nflg-bom-new/src/main/resources/logback-sit.xml @@ -35,6 +35,28 @@ + + + + error + + ${logDir}/error/nflg-bom-new-error.log + + + ${logDir}/error/%d{yyyy-MM-dd}.%i.error.log + + 30 + + true + + ${splitSize} + + + + %d{yyyy-MM-dd HH:mm:ss.SSS} %X{traceId} [%thread] %-5level %logger{50} %msg%n + + + @@ -46,4 +68,7 @@ + + + \ No newline at end of file