diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/advice/LoggingRequestBodyAdvice.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/advice/LoggingRequestBodyAdvice.java index 62254e4a..ec59b929 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/advice/LoggingRequestBodyAdvice.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/advice/LoggingRequestBodyAdvice.java @@ -1,11 +1,7 @@ package com.nflg.product.bomnew.advice; import cn.hutool.core.util.StrUtil; -import com.nflg.product.bomnew.util.JsonUtil; import lombok.extern.slf4j.Slf4j; -import nflg.product.common.constant.STATE; -import nflg.product.common.util.JwtUtil; -import nflg.product.common.vo.ResultVO; import org.springframework.beans.factory.annotation.Value; import org.springframework.cloud.context.config.annotation.RefreshScope; import org.springframework.core.MethodParameter; @@ -49,14 +45,6 @@ public class LoggingRequestBodyAdvice implements RequestBodyAdvice { bodyContent = reader.lines().collect(Collectors.joining()); log.info("请求参数: {}", bodyContent); } - log.info("请求头: {}", JsonUtil.toJson(httpInputMessage.getHeaders())); - String token = httpInputMessage.getHeaders().getFirst("Authorization"); - if (StrUtil.isNotBlank(token)) { - ResultVO result = JwtUtil.parse(token); - if (result.getState().equals(STATE.Success.getState())) { - log.info("请求用户: {}", JsonUtil.toJson(result.getData())); - } - } if (StrUtil.isBlank(bodyContent)) { return httpInputMessage; } else { diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/api/user/EbomApi.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/api/user/EbomApi.java index 2b8a76d8..484bcb99 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/api/user/EbomApi.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/api/user/EbomApi.java @@ -517,13 +517,13 @@ public class EbomApi extends BaseApi { } /** - * 检查下级是否存在Q项 + * 检查下级的项目类型 * @param bomRowIds bomRowIds * @return 检查结果 */ - @PostMapping("checkQ") - @ApiOperation("检查下级是否存在Q项") - public ResultVO> checkQ(@Valid @RequestBody @NotEmpty List bomRowIds) { - return ResultVO.success(bomNewEbomParentService.checkQ(bomRowIds)); + @PostMapping("checkProjectType") + @ApiOperation("检查下级的项目类型") + public ResultVO> checkProjectType(@Valid @RequestBody @NotEmpty List bomRowIds) { + return ResultVO.success(bomNewEbomParentService.checkProjectType(bomRowIds)); } } diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/api/user/EbomV2Api.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/api/user/EbomV2Api.java index 45a87768..682e4275 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/api/user/EbomV2Api.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/api/user/EbomV2Api.java @@ -69,10 +69,10 @@ public class EbomV2Api extends BaseApi { result = originalParentV2Service.pullFromCadAndToEBom(parents); //跟新EBom 根节点 - ebomParentService.getBaseMapper().updateRootState(); - ebomParentService.getBaseMapper().updateRootForWaitReview(); + // ebomParentService.getBaseMapper().updateRootState(); + // ebomParentService.getBaseMapper().updateRootForWaitReview(); - ebomParentService.resetAllBomExist(parents.stream().map(BomOriginalCadParentEntity::getMaterialNo).collect(Collectors.toSet())); + // ebomParentService.resetAllBomExist(parents.stream().map(BomOriginalCadParentEntity::getMaterialNo).collect(Collectors.toSet())); } catch (Exception e) { VUtils.isTure(true).throwMessage("转换失败:" + e.getMessage()); } finally { diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/constant/EBomExceptionStatusEnum.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/constant/EBomExceptionStatusEnum.java index afe29dc7..7581a861 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/constant/EBomExceptionStatusEnum.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/constant/EBomExceptionStatusEnum.java @@ -45,7 +45,8 @@ public enum EBomExceptionStatusEnum implements ValueEnum { EXCEPT_NO_13(13, "项目类型需要用户确认") , EXCEPT_NO_14(14, "黄色警告(下级节点存在异常)"), EXCEPT_NO_15(15, "物料名称不一致"), - EXCEPT_NO_16(16, "物料单位不一致"); + EXCEPT_NO_16(16, "物料单位不一致"), + EXCEPT_NO_17(17, "项目赋值异常(当父级物料的项目类型为Q时,子级中的物料的项目类型不能全部为F"); private final Integer value; private final String description; diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/constant/EBomSourceEnum.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/constant/EBomSourceEnum.java index f85040c7..a74f62fd 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/constant/EBomSourceEnum.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/constant/EBomSourceEnum.java @@ -12,7 +12,8 @@ public enum EBomSourceEnum implements ValueEnum { FROM_BOM(1, "原始BOM转换"), FROM_EXCE(2, "EXCE导入"), FROM_MDM(3, "MDM创建"), - FROM_SAP(4, "从SAP导入"); + FROM_SAP(4, "从SAP导入"), + FROM_CHANGE(5, "变更"); private final Integer value; private final String description; diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/vo/CheckBomQVO.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/vo/CheckBomProjectTypeVO.java similarity index 70% rename from nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/vo/CheckBomQVO.java rename to nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/vo/CheckBomProjectTypeVO.java index f77c3c16..c65c74a1 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/vo/CheckBomQVO.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/vo/CheckBomProjectTypeVO.java @@ -13,8 +13,8 @@ import java.io.Serializable; */ @Data @Accessors(chain = true) -@ApiModel(value = "com-nflg-product-bomnew-pojo-original-vo-CheckBomQVO") -public class CheckBomQVO implements Serializable { +@ApiModel(value = "com-nflg-product-bomnew-pojo-original-vo-CheckBomProjectTypeVO") +public class CheckBomProjectTypeVO implements Serializable { /** * bom行id @@ -26,5 +26,11 @@ public class CheckBomQVO implements Serializable { * 下级是否存在Q项 */ @ApiModelProperty(value = "下级是否存在Q项") - private Boolean exists; + private Boolean existsQ; + + /** + * 下级是否全是F项 + */ + @ApiModelProperty(value = "下级是否全是F项") + private Boolean allIsF; } diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/BomNewEbomGenerateVirtualPackageServiceFor31Impl.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/BomNewEbomGenerateVirtualPackageServiceFor31Impl.java index 4505a6bf..b00d2933 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/BomNewEbomGenerateVirtualPackageServiceFor31Impl.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/BomNewEbomGenerateVirtualPackageServiceFor31Impl.java @@ -25,6 +25,7 @@ import com.nflg.product.bomnew.util.VersionUtil; import nflg.product.common.constant.STATE; import nflg.product.common.dto.LoginUserInfoDTO; import nflg.product.common.vo.ResultVO; +import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.transaction.PlatformTransactionManager; @@ -562,18 +563,7 @@ public class BomNewEbomGenerateVirtualPackageServiceFor31Impl implements IBomNew } public static String buildDrawingNo(String drawingNo, String materialName, VirtualPackageTypeEnum type, boolean is1020Factory) { - return StrUtil.format("({})({}{})({})", drawingNo, materialName, is1020Factory ? "仙桃" : "", type.getConMaterialName()); - } - - private String getMaterialNoForAdd(BomNewEbomChildEntity c) { - AddVirtrualMaterialDTO ent = new AddVirtrualMaterialDTO(); - ent.setKey(c.getRowId().toString()); - ent.setDrawingNo(c.getDrawingNo()); - ent.setMaterialName(c.getMaterialName()); - ent.setMaterialDesc(c.getMaterialDesc()); - ent.setMaterialCategoryCode(c.getMaterialCategoryCode()); - Map vMNosResult = materialService.batchAddMaterial(Collections.singletonList(ent), userInfo); - return vMNosResult.get(c.getRowId().toString()).getMaterialNo(); + return StrUtil.format("({})({}{})({})", drawingNo, StringUtils.deleteWhitespace(materialName), is1020Factory ? "仙桃" : "", type.getConMaterialName()); } /* 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 ae7d2367..87c75503 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 @@ -1234,10 +1234,29 @@ public class BomNewEbomParentService extends ServiceImpl rowIds = delList.stream().map(BomNewEbomParentVO::getRowId).collect(Collectors.toList()); QueryWrapper queryChildWrapper = new QueryWrapper<>(); queryChildWrapper.lambda().in(BomNewEbomChildEntity::getRowId, rowIds); @@ -2191,8 +2222,9 @@ public class BomNewEbomParentService extends ServiceImpl Objects.equals(c.getSource(), EBomSourceEnum.FROM_MDM.getValue())) && delChildList.stream().anyMatch(d -> !Objects.equals(d.getVirtualPartType(), VirtualPackageTypeEnum.UN_VIRTUAL_PACKAGE.getValue()))) - .throwMessage("不能删除31码下的虚拟包"); + .throwMessage("请重新生成发货包"); //检查有bom数据关系是否可以删? // List check2List = delList.stream().filter(u -> Objects.equals(EBomSourceEnum.FROM_BOM.getValue(), u.getSource()) @@ -2232,9 +2264,11 @@ public class BomNewEbomParentService extends ServiceImpl rowIdList = delTagList.stream().filter(u -> u.getRowId() != null || u.getRowId().longValue() > 0).map(BomNewEbomChildEntity::getRowId).collect(Collectors.toList()); + List rowIdList = delTagList.stream().map(BomNewEbomChildEntity::getRowId).collect(Collectors.toList()); if (CollectionUtil.isNotEmpty(rowIdList)) { ebomChildService.removeByIds(rowIdList); + //将对应的parent设置为根节点 + setRootIs1(delTagList.stream().map(BomNewEbomChildEntity::getMaterialNo).collect(Collectors.toList()), SessionUtil.getUserCode()); } } } @@ -2870,16 +2904,41 @@ public class BomNewEbomParentService extends ServiceImpl checkQ(List bomRowIds) { + public List checkProjectType(List bomRowIds) { List children = ebomChildService.lambdaQuery() .in(BomNewEbomChildEntity::getParentRowId, bomRowIds) .list(); return bomRowIds.stream().map(bomRowId -> { - CheckBomQVO vo = new CheckBomQVO(); + CheckBomProjectTypeVO vo = new CheckBomProjectTypeVO(); vo.setBomRowId(bomRowId); - vo.setExists(children.stream().anyMatch(c -> c.getParentRowId().equals(bomRowId) - && StrUtil.equals(c.getProjectType(), ProjectTypeInputTypeEnum.ProjectTypeEnum.TYPE_Q.getValue()))); + List cc = children.stream().filter(c -> c.getParentRowId().equals(bomRowId)).collect(Collectors.toList()); + if (CollUtil.isEmpty(cc)) { + vo.setExistsQ(false); + vo.setAllIsF(false); + } else { + vo.setExistsQ(cc.stream().anyMatch(c -> StrUtil.equals(c.getProjectType(), ProjectTypeInputTypeEnum.ProjectTypeEnum.TYPE_Q.getValue()))); + vo.setAllIsF(cc.stream().allMatch(c -> StrUtil.equals(c.getProjectType(), ProjectTypeInputTypeEnum.ProjectTypeEnum.TYPE_F.getValue()))); + } return vo; }).collect(Collectors.toList()); } + + /** + * 设置根节点 + * @param materialNos 物料编号 + * @param userCode 用户编号 + */ + public void setRootIs1(Collection materialNos, String userCode) { + if (CollUtil.isNotEmpty(materialNos)) { + log.debug("setRootIs1 将{}设置为根节点", String.join(",", materialNos)); + this.lambdaUpdate() + .set(BomNewEbomParentEntity::getRootIs, 1) + .set(BomNewEbomParentEntity::getUserRootIs, 1) + .set(BomNewEbomParentEntity::getModifyTime, LocalDateTime.now()) + .in(BomNewEbomParentEntity::getMaterialNo, materialNos) + .lt(BomNewEbomParentEntity::getStatus, EBomStatusEnum.PUBLISHED.getValue()) + .eq(BomNewEbomParentEntity::getCreatedBy, userCode) + .update(); + } + } } diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/BomNewEbomUpgradeChangeService.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/BomNewEbomUpgradeChangeService.java index 4efc6f1f..667a64f9 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/BomNewEbomUpgradeChangeService.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/BomNewEbomUpgradeChangeService.java @@ -4,10 +4,12 @@ import cn.hutool.core.collection.CollUtil; import cn.hutool.core.convert.Convert; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableMap; import com.nflg.product.bomnew.constant.EBomStatusEnum; import com.nflg.product.bomnew.mapper.master.BomNewEbomUpgradeChangeMapper; import com.nflg.product.bomnew.pojo.entity.BomNewEbomParentEntity; import com.nflg.product.bomnew.pojo.entity.BomNewEbomUpgradeChangeEntity; +import com.nflg.product.bomnew.pojo.entity.BomNewEbomVirtualPackageCompositionEntity; import com.nflg.product.bomnew.pojo.vo.BomNewEbomParentVO; import com.nflg.product.bomnew.service.domain.EBom.ChangeImpactUpgrade; import org.springframework.stereotype.Service; @@ -17,6 +19,7 @@ import javax.annotation.Resource; import java.time.LocalDateTime; import java.util.List; import java.util.Objects; +import java.util.Set; import java.util.concurrent.ExecutionException; import java.util.stream.Collectors; @@ -41,6 +44,9 @@ public class BomNewEbomUpgradeChangeService extends ServiceImpl comVList = updateImpact.getVirtualPackageCompositionResult().stream().filter(u -> u.getVirtualPackageMaterialNo().equals(ent.getMaterialNo())).collect(Collectors.toList()); + if(CollUtil.isNotEmpty(comVList)) { + virtualPackageCompositionService.saveBatch(comVList); + } + } + //新加的移到历史表 if(CollUtil.isNotEmpty(updateImpact.getNewAddPBomParentResult())){ pbomParentService.getBaseMapper().insertPBomParentToFormal(updateImpact.getNewAddPBomParentResult()); diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/BomNewOriginalParentV2Service.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/BomNewOriginalParentV2Service.java index 2bc26989..7d40ce26 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/BomNewOriginalParentV2Service.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/BomNewOriginalParentV2Service.java @@ -9,16 +9,14 @@ import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.toolkit.IdWorker; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.google.common.collect.Sets; +import com.nflg.product.base.core.conmon.util.SessionUtil; import com.nflg.product.bomnew.constant.EBomStatusEnum; import com.nflg.product.bomnew.constant.OriginalEditStatusEnum; import com.nflg.product.bomnew.constant.OriginalStatusEnum; import com.nflg.product.bomnew.mapper.master.BomNewOriginalParentMapper; import com.nflg.product.bomnew.pojo.dto.BaseImportExcelDTO; import com.nflg.product.bomnew.pojo.dto.BomNewOriginalExcelDTO; -import com.nflg.product.bomnew.pojo.entity.BomNewEbomParentEntity; -import com.nflg.product.bomnew.pojo.entity.BomNewOriginalParentEntity; -import com.nflg.product.bomnew.pojo.entity.BomOriginalCadChildEntity; -import com.nflg.product.bomnew.pojo.entity.BomOriginalCadParentEntity; +import com.nflg.product.bomnew.pojo.entity.*; import com.nflg.product.bomnew.pojo.vo.BaseMaterialVO; import com.nflg.product.bomnew.pojo.vo.BomOriginalListVO; import com.nflg.product.bomnew.pojo.vo.BomOriginalPlmBomVO; @@ -115,7 +113,7 @@ public class BomNewOriginalParentV2Service extends ServiceImpl { + parents.forEach(u -> { u.setMaterialNo(StrUtil.trim(u.getMaterialNo())); if (StrUtil.equals(u.getMaterialNo(), "无")) { u.setMaterialNo(""); @@ -124,14 +122,14 @@ public class BomNewOriginalParentV2Service extends ServiceImpl childs = originalCadChildService.lambdaQuery().in(BomOriginalCadChildEntity::getParentRowId, parents.stream().map(u -> u.getRowId()).collect(Collectors.toList())).list(); //物料编号去除前后空格 - childs.parallelStream().forEach(u -> { + childs.forEach(u -> { u.setMaterialNo(StrUtil.trim(u.getMaterialNo())); if (StrUtil.equals(u.getMaterialNo(), "无")) { u.setMaterialNo(""); } }); - checkMaterialHasExist(parents.stream().filter(u -> StrUtil.isNotBlank(u.getMaterialNo())).map(BomOriginalCadParentEntity::getMaterialNo).collect(Collectors.toList())); - checkMaterialHasExist(childs.stream().filter(u -> StrUtil.isNotBlank(u.getMaterialNo())).map(BomOriginalCadChildEntity::getMaterialNo).collect(Collectors.toList())); + // checkMaterialHasExist(parents.stream().filter(u -> StrUtil.isNotBlank(u.getMaterialNo())).map(BomOriginalCadParentEntity::getMaterialNo).collect(Collectors.toList())); + // checkMaterialHasExist(childs.stream().filter(u -> StrUtil.isNotBlank(u.getMaterialNo())).map(BomOriginalCadChildEntity::getMaterialNo).collect(Collectors.toList())); //父级物料编码不能为空 materialMainService.initMaterialForDrawdingNo(parents, BomOriginalCadParentEntity::getChartNo, BomOriginalCadParentEntity::setMaterialNo, BomOriginalCadParentEntity::setMaterialName); @@ -147,6 +145,16 @@ public class BomNewOriginalParentV2Service extends ServiceImpl nonChildParents = parents.stream() + .map(BomOriginalCadParentEntity::getRowId) + .filter(rowId -> childs.stream().noneMatch(c -> Objects.equals(c.getParentRowId(), rowId))) + .collect(Collectors.toList()); + if (CollUtil.isNotEmpty(nonChildParents)) { + parents.removeIf(u -> nonChildParents.contains(u.getRowId())); + originalCadParentService.getBaseMapper().deleteBatchIds(nonChildParents); + } + PlmBomToOriginalConvertV2 convert = new PlmBomToOriginalConvertV2(); //存原始BOM toOriginalBom(parents,convert); @@ -212,11 +220,13 @@ public class BomNewOriginalParentV2Service extends ServiceImpl importOriginalBomVOList = new ArrayList<>(); //开始转换 + List allParents = new ArrayList<>(); + List allChildren = new ArrayList<>(); for (BomNewOriginalParentEntity parent : bomNewOriginalParentEntities) { Long ebomRowId = IdWorker.getId(); try { - convertToEBomDoV2(parent, ebomRowId); + convertToEBomDoV2(parent, ebomRowId, allParents, allChildren); } catch (Exception e) { importOriginalBomVOList.add(new ImportOriginalBomVO(parent.getDrawingNo(), "操作失败:" + e.getMessage())); throw e; @@ -225,6 +235,11 @@ public class BomNewOriginalParentV2Service extends ServiceImpl materialNos = allParents.stream().map(BomNewEbomParentEntity::getMaterialNo).collect(Collectors.toSet()); + materialNos.removeAll(allChildren.stream().map(BomNewEbomChildEntity::getMaterialNo).collect(Collectors.toSet())); + ebomParentService.setRootIs1(materialNos, SessionUtil.getUserCode()); + return importOriginalBomVOList; } @@ -234,7 +249,8 @@ public class BomNewOriginalParentV2Service extends ServiceImpl allParents, List allChildren) { List bomAllChildList = this.getBaseMapper().getParentChild(parent.getRowId()); BomOriginalListVO parentVO = Convert.convert(BomOriginalListVO.class, parent); @@ -242,14 +258,34 @@ public class BomNewOriginalParentV2Service extends ServiceImpl convert.getEBomChildResult().stream().noneMatch(c -> StrUtil.equals(p.getMaterialNo(), c.getMaterialNo()))) + .forEach(p -> { + //设置是否有下级 + p.setBomExist(convert.getEBomChildResult().stream().anyMatch(c -> Objects.equals(p.getRowId(), c.getParentRowId())) ? 1 : 0); + }); + //取消本人以前导入的,草稿状态的bom的根节点状态 + Set materialNos = convert.getEBomChildResult().stream().map(BomNewEbomChildEntity::getMaterialNo).collect(Collectors.toSet()); + materialNos.removeAll(convert.getEBomParentResult().stream().map(BomNewEbomParentEntity::getMaterialNo).collect(Collectors.toSet())); + if (CollUtil.isNotEmpty(materialNos)) { + ebomParentService.lambdaUpdate() + .set(BomNewEbomParentEntity::getRootIs, 0) + .set(BomNewEbomParentEntity::getUserRootIs, 0) + .set(BomNewEbomParentEntity::getRootIsForWaitReview, 0) + .in(BomNewEbomParentEntity::getMaterialNo, materialNos) + .lt(BomNewEbomParentEntity::getStatus, EBomStatusEnum.PUBLISHED.getValue()) + .eq(BomNewEbomParentEntity::getCreatedBy, SessionUtil.getUserCode()) + .update(); + } if (CollUtil.isNotEmpty(convert.getEBomParentResult())) { ebomParentService.saveOrUpdateBatch(convert.getEBomParentResult()); - - + allParents.addAll(convert.getEBomParentResult()); } if (CollUtil.isNotEmpty(convert.getEBomChildResult())) { ebomChildService.saveOrUpdateBatch(convert.getEBomChildResult()); + allChildren.addAll(convert.getEBomChildResult()); } //将原始BOM及子级转为已处理 if (CollUtil.isNotEmpty(convert.getHasHandlerParentIds())) { diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/BomNewPbomExportToSAPImpl.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/BomNewPbomExportToSAPImpl.java index 9367f655..f969ecc8 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/BomNewPbomExportToSAPImpl.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/BomNewPbomExportToSAPImpl.java @@ -233,7 +233,8 @@ public class BomNewPbomExportToSAPImpl implements IBomNewPbomExportToSAP { LOGGER.debug("{} 物料提层到顶级发货包且合并 编号:{},父级编号:{},数量:{},合并后总数:{},描述:{}", TAG, it.getMaterialNo(), p.getMaterialNo(), it.getNum().toString(), cct.getMENGE(), it.getMaterialDesc()); } } - } else if (!Objects.equals(it.getVirtualPartType(), VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE.getValue())) { + // } else if (!Objects.equals(it.getVirtualPartType(), VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE.getValue())) { + } else { LOGGER.debug("{} 添加物料 编号:{},父级编号:{},数量:{},描述:{}", TAG, it.getMaterialNo(), p.getMaterialNo(), it.getNum().toString(), it.getMaterialDesc()); children.add(convert(cp, it, p.getMaterialNo(), ignore)); } diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/CheckEBomException.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/CheckEBomException.java index ba661860..783bc9ca 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/CheckEBomException.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/CheckEBomException.java @@ -195,6 +195,13 @@ public class CheckEBomException { // qList.forEach(u -> u.setExceptionStatus(EBomExceptionStatusEnum.EXCEPT_NO_10.getValue())); // } // } + if (ProjectTypeInputTypeEnum.ProjectTypeEnum.TYPE_Q.getValue().equals(parent.getProjectType())) { + if (CollUtil.isNotEmpty(child) && child.stream() + .allMatch(c -> StrUtil.equals(c.getProjectType(), ProjectTypeInputTypeEnum.ProjectTypeEnum.TYPE_F.getValue()))) { + parent.setExceptionStatus(EBomExceptionStatusEnum.EXCEPT_NO_17.getValue()); + child.forEach(c -> c.setExceptionStatus(EBomExceptionStatusEnum.EXCEPT_NO_17.getValue())); + } + } } // checkCircularDependency(checkEBomExceptionDTOS); //bom异常-黄色警号 diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/EBomEdit.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/EBomEdit.java index 90b2fac2..6178860f 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/EBomEdit.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/EBomEdit.java @@ -268,9 +268,9 @@ public class EBomEdit { if (StrUtil.equals(ProjectTypeInputTypeEnum.ProjectTypeEnum.TYPE_Q.getValue(), child.getProjectType())) { child.setExceptionStatus(EBomExceptionStatusEnum.EXCEPT_NO_9.getValue()); } - if (StrUtil.equals(ProjectTypeInputTypeEnum.ProjectTypeEnum.TYPE_F.getValue(), child.getProjectType())) { - child.setExceptionStatus(EBomExceptionStatusEnum.EXCEPT_NO_10.getValue()); - } + // if (StrUtil.equals(ProjectTypeInputTypeEnum.ProjectTypeEnum.TYPE_F.getValue(), child.getProjectType())) { + // child.setExceptionStatus(EBomExceptionStatusEnum.EXCEPT_NO_10.getValue()); + // } } } diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/EBomToPbomBase.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/EBomToPbomBase.java index 1308297d..9d95a350 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/EBomToPbomBase.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/EBomToPbomBase.java @@ -135,7 +135,7 @@ public abstract class EBomToPbomBase { List result = child.stream().filter(u -> StrUtil.isBlank(u.getMaterialNo())).collect(Collectors.toList()); - Map> listMp = child.stream().collect(Collectors.groupingBy(BomNewEbomParentVO::getMaterialNo)); + Map> listMp = child.stream().filter(u->StrUtil.isNotBlank(u.getMaterialNo())).collect(Collectors.groupingBy(BomNewEbomParentVO::getMaterialNo)); for (String key : listMp.keySet()) { List voList = listMp.get(key); diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/OriginalBom/OriginalBomToEBomV2Convert.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/OriginalBom/OriginalBomToEBomV2Convert.java index 121c8ad6..1e4dd589 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/OriginalBom/OriginalBomToEBomV2Convert.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/OriginalBom/OriginalBomToEBomV2Convert.java @@ -246,11 +246,20 @@ public class OriginalBomToEBomV2Convert extends BaseConvert { List oldParenChild = SpringUtil.getBean(BomNewEbomChildMapper.class).getChildByMaterialNo(parentEntity.getMaterialNo()); //不存在EBom 时 if (Objects.isNull(oldEBom)) { - buildCommonMaterialChildBom(childVo, materialBaseInfo, VersionUtil.getNextVersion("")); + buildCommonMaterialChildBom(childVo, materialBaseInfo, VersionUtil.getNextVersion("")); } else { if (!EBomStatusEnum.PUBLISHED.equalsValue(oldEBom.getStatus())) { - BomNewEbomChildEntity newChild = buildCommonEbomChildEntity(materialBaseInfo, parentEntity); + List oldChild = ebomChildService.lambdaQuery().eq(BomNewEbomChildEntity::getParentRowId, oldEBom.getRowId()).list(); + if(CollUtil.isNotEmpty(oldChild)){ + List oldChildEntityList = oldChild.stream().filter(u->u.getMaterialNo().equals(materialBaseInfo.getMaterialNo())).collect(Collectors.toList()); + BomNewEbomChildEntity oldChildEntity=CollUtil.isNotEmpty(oldChildEntityList)?oldChildEntityList.get(0):null; + if( Objects.nonNull(oldChildEntity) && Objects.nonNull(oldChildEntity.getNum()) && oldChildEntity.getNum().compareTo(childVo.getUnitWeight())>0){ + buildEBomChild(childVo, parentEntity); + continue; + } + } + BomNewEbomChildEntity newChild = buildCommonEbomChildEntity(materialBaseInfo, childVo); //结构是否相同 且为同一个人 if ( oldEBom.getCreatedBy().equals(parentEntity.getCreatedBy())) { ebomParentService.getBaseMapper().deleteById(oldEBom.getRowId()); @@ -335,25 +344,25 @@ public class OriginalBomToEBomV2Convert extends BaseConvert { } - protected BomNewEbomChildEntity buildCommonEbomChildEntity(BaseMaterialVO material, BomOriginalListVO parent) { + protected BomNewEbomChildEntity buildCommonEbomChildEntity(BaseMaterialVO material, BomOriginalListVO parentV) { BomNewEbomChildEntity childEntity = new BomNewEbomChildEntity(); - childEntity.setParentRowId(parent.getEBomRowId() > 0 ? parent.getEBomRowId() : parent.getRowId()); + childEntity.setParentRowId(parentV.getEBomRowId() > 0 ? parentV.getEBomRowId() : parentV.getRowId()); childEntity.setOrderNumber("001"); - childEntity.setIdentityNo(StrUtil.join("-", parent.getMaterialNo(), material.getMaterialNo())); + childEntity.setIdentityNo(StrUtil.join("-", parentV.getMaterialNo(), material.getMaterialNo())); //图号=物料编码 childEntity.setDrawingNo(material.getMaterialNo()); childEntity.setMaterialNo(material.getMaterialNo()); childEntity.setMaterialName(material.getMaterialName()); childEntity.setMaterialDesc(material.getMaterialDesc()); childEntity.setMaterialTexture(material.getMaterial()); - childEntity.setUnitWeight(parent.getUnitWeight()); - childEntity.setNum(parent.getUnitWeight()); + childEntity.setUnitWeight(parentV.getUnitWeight()); + childEntity.setNum(parentV.getUnitWeight()); childEntity.setCreatedBy(SessionUtil.getUserCode()); childEntity.setMaterialUnit("KG"); childEntity.setProjectType("L"); childEntity.setMaterialOriginalUnit(material.getMaterialUnit()); - childEntity.setSourceRowId(parent.getRowId().toString()); - parent.setBomExist(1); + childEntity.setSourceRowId(parentV.getRowId().toString()); + parentV.setBomExist(1); // this.eBomChildResult.add(childEntity); return childEntity; diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/OriginalBom/PlmBomToOriginalConvertV2.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/OriginalBom/PlmBomToOriginalConvertV2.java index eee00d22..5d537a8e 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/OriginalBom/PlmBomToOriginalConvertV2.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/OriginalBom/PlmBomToOriginalConvertV2.java @@ -2,15 +2,26 @@ package com.nflg.product.bomnew.service.domain.OriginalBom; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.convert.Convert; +import cn.hutool.core.util.StrUtil; import cn.hutool.extra.spring.SpringUtil; -import com.github.xiaoymin.knife4j.core.util.StrUtil; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; -import com.nflg.product.bomnew.constant.*; +import com.nflg.product.bomnew.constant.OriginalConstant; +import com.nflg.product.bomnew.constant.OriginalEditStatusEnum; +import com.nflg.product.bomnew.constant.OriginalSourceEnum; +import com.nflg.product.bomnew.constant.OriginalStatusEnum; import com.nflg.product.bomnew.mapper.master.MaterialMainMapper; -import com.nflg.product.bomnew.pojo.entity.*; -import com.nflg.product.bomnew.pojo.vo.*; -import com.nflg.product.bomnew.service.*; +import com.nflg.product.bomnew.pojo.entity.BomNewOriginalParentEntity; +import com.nflg.product.bomnew.pojo.entity.BomOriginalCadChildEntity; +import com.nflg.product.bomnew.pojo.entity.BomOriginalCadParentEntity; +import com.nflg.product.bomnew.pojo.vo.BaseMaterialVO; +import com.nflg.product.bomnew.pojo.vo.BomOriginalPlmBomVO; +import com.nflg.product.bomnew.pojo.vo.ImportOriginalBomVO; +import com.nflg.product.bomnew.pojo.vo.MaterialMateVO; +import com.nflg.product.bomnew.service.BomNewOriginalChildService; +import com.nflg.product.bomnew.service.BomNewOriginalParentService; +import com.nflg.product.bomnew.service.BomOriginalCadChildService; +import com.nflg.product.bomnew.service.MaterialMainService; import com.nflg.product.bomnew.util.VUtils; import lombok.Getter; @@ -49,11 +60,15 @@ public class PlmBomToOriginalConvertV2 extends BaseConvert { if (parent.getMaterialNo().trim().equalsIgnoreCase("无")) { parent.setMaterialNo(""); } + parent.setMaterialNo(StrUtil.trim(parent.getMaterialNo())); if (StrUtil.isBlank(parent.getMaterialNo())) { SpringUtil.getBean(MaterialMainService.class).initMaterialForDrawdingNo(ImmutableList.of(parent), BomOriginalPlmBomVO::getDrawingNo, BomOriginalPlmBomVO::setMaterialNo, BomOriginalPlmBomVO::setMaterialName); } - childs.stream().filter(f -> f.getMaterialNo().trim().equalsIgnoreCase("无")).forEach(it -> { - it.setMaterialNo(""); + childs.parallelStream().forEach(f -> { + f.setMaterialNo(StrUtil.trim(f.getMaterialNo())); + if (StrUtil.equals("无", f.getMaterialNo())) { + f.setMaterialNo(""); + } }); List noMaterialNoList = childs.stream().filter(u -> StrUtil.isBlank(u.getMaterialNo())).collect(Collectors.toList()); if (CollUtil.isNotEmpty(noMaterialNoList)) { diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/PBom/PBomUpgrade.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/PBom/PBomUpgrade.java index d00147f2..44cd55dc 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/PBom/PBomUpgrade.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/PBom/PBomUpgrade.java @@ -6,12 +6,15 @@ import cn.hutool.core.convert.Convert; import cn.hutool.extra.spring.SpringUtil; import com.baomidou.mybatisplus.core.toolkit.IdWorker; import com.nflg.product.base.core.conmon.util.SessionUtil; +import com.nflg.product.bomnew.constant.PBomEditStatusEnum; import com.nflg.product.bomnew.constant.PBomStatusEnum; import com.nflg.product.bomnew.constant.PbomSourceEnum; +import com.nflg.product.bomnew.constant.UserJobEnum; import com.nflg.product.bomnew.pojo.entity.BomNewPbomChildEntity; import com.nflg.product.bomnew.pojo.entity.BomNewPbomParentEntity; import com.nflg.product.bomnew.pojo.vo.BomNewPbomParentVO; import com.nflg.product.bomnew.service.BomNewPbomParentService; +import com.nflg.product.bomnew.service.UserRoleService; import com.nflg.product.bomnew.util.ListCommonUtil; import com.nflg.product.bomnew.util.VUtils; import com.nflg.product.bomnew.util.VersionUtil; @@ -87,12 +90,23 @@ public class PBomUpgrade { pbomParent.setRowId(IdWorker.getId()); pbomParent.setCreatedTime(LocalDateTime.now()); pbomParent.setCreatedBy(SessionUtil.getUserCode()); - pbomParent.setModifyTime(LocalDateTime.now()); pbomParent.setStatus(PBomStatusEnum.WAIT_PUBLISH.getValue()); + pbomParent.setEditStatus(PBomEditStatusEnum.HANDLER_CREATED.getValue()); pbomParent.setCurrentVersion(VersionUtil.getNextVersion(parentVO.getCurrentVersion())); - pbomParent.setModifyTime(LocalDateTime.now()); pbomParent.setDeptRowId(SessionUtil.getDepartRowId()); + pbomParent.setDeptName(SessionUtil.getDepartName()); + pbomParent.setDeviseName(SessionUtil.getRealName()); + pbomParent.setDeviseUserCode(SessionUtil.getUserCode()); + pbomParent.setTechnologyUserName(SessionUtil.getUserName()); + pbomParent.setTechnologyUserCode(SessionUtil.getUserCode()); + pbomParent.setRemark(""); pbomParent.setSource(PbomSourceEnum.FROM_CHANGE.getValue()); + pbomParent.setReleaseTime(null); + pbomParent.setReleaseUserName(null); + pbomParent.setSapState(1); + pbomParent.setSapTime(null); + pbomParent.setModifyTime(null); + pbomParent.setCreatedJob(SpringUtil.getBean(UserRoleService.class).technician() ? UserJobEnum.ENGINEER.getValue() : UserJobEnum.DESIGNER.getValue()); if (rootIs) { pbomParent.setRootIs(1); pbomParent.setUserRootIs(1); @@ -118,10 +132,12 @@ public class PBomUpgrade { BeanUtil.copyProperties(childVO, child); child.setRowId(IdWorker.getId()); child.setParentRowId(newParent.getRowId()); + child.setIdentityNo(newParent.getRowId() + "_" + child.getRowId()); child.setCreatedTime(LocalDateTime.now()); - child.setCreatedBy(SessionUtil.getRealName()); - child.setModifyTime(LocalDateTime.now()); - + child.setCreatedBy(SessionUtil.getUserCode()); + child.setModifyTime(null); + child.setSource(PbomSourceEnum.FROM_CHANGE.getValue()); + child.setRemark(""); this.childResult.add(child); } 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 1dad47bf..d7a2ea41 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,8 +35,11 @@ - + + + + diff --git a/nflg_project_dev/nflg-boot-base/nflg-boot-core/src/main/java/com/nflg/product/base/core/config/fillter/HttpInterceptor.java b/nflg_project_dev/nflg-boot-base/nflg-boot-core/src/main/java/com/nflg/product/base/core/config/fillter/HttpInterceptor.java index 3eb0497d..c0859663 100644 --- a/nflg_project_dev/nflg-boot-base/nflg-boot-core/src/main/java/com/nflg/product/base/core/config/fillter/HttpInterceptor.java +++ b/nflg_project_dev/nflg-boot-base/nflg-boot-core/src/main/java/com/nflg/product/base/core/config/fillter/HttpInterceptor.java @@ -1,7 +1,12 @@ package com.nflg.product.base.core.config.fillter; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.toolkit.IdWorker; import lombok.extern.slf4j.Slf4j; +import nflg.product.common.constant.STATE; +import nflg.product.common.util.JwtUtil; +import nflg.product.common.vo.ResultVO; import org.slf4j.MDC; import org.springframework.stereotype.Component; import org.springframework.web.servlet.HandlerInterceptor; @@ -9,6 +14,7 @@ import org.springframework.web.servlet.HandlerInterceptor; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.nio.charset.StandardCharsets; +import java.util.Enumeration; /** * 请求拦截器 @@ -20,39 +26,50 @@ import java.nio.charset.StandardCharsets; public class HttpInterceptor implements HandlerInterceptor { private static final String CHARSET = StandardCharsets.UTF_8.name(); - private static final ThreadLocal currentAuthorization = new ThreadLocal<>(); + private static final String TRACEID = "traceId"; + private static final ThreadLocal AUTHORIZATION = new ThreadLocal<>(); @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) { response.setCharacterEncoding(CHARSET); String traceId = IdWorker.getIdStr(); - MDC.put("traceId", traceId); - // String body="内容无法显示(" + request.getContentType() + ")"; - // if (request.getMethod().equalsIgnoreCase("post") && request.getContentType().contains("json") && request.getContentLength()>0){ - // InputStream inputStream = request.getInputStream(); - // BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream, StandardCharsets.UTF_8)); - // char[] chars = new char[request.getContentLength()]; - // reader.read(chars, 0, chars.length); - // body = String.valueOf(chars); - // } - log.info("HttpRecord Request,url:" + request.getRequestURL() + ",method:" + request.getMethod()); - currentAuthorization.set(request.getHeader("Authorization")); + MDC.put(TRACEID, traceId); + log.info("HttpRecord Request,url: " + request.getRequestURL() + " ,method: " + request.getMethod()); + + StringBuilder sb = new StringBuilder("请求头: "); + Enumeration headerNames = request.getHeaderNames(); + while (headerNames.hasMoreElements()) { + String headerName = headerNames.nextElement(); + sb.append(StrUtil.format("{}={},", headerName, request.getHeader(headerName))); + } + log.info(sb.substring(0, sb.length() - 1)); + + String token = request.getHeader("Authorization"); + if (StrUtil.isNotBlank(token)) { + ResultVO result = JwtUtil.parse(token); + if (result.getState().equals(STATE.Success.getState())) { + log.info("请求用户: {}", JSON.toJSONString(result.getData())); + } + } + + AUTHORIZATION.set(request.getHeader("Authorization")); return true; } @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { HandlerInterceptor.super.afterCompletion(request, response, handler, ex); - log.info("HttpRecord Response,url:" + request.getRequestURL() + ",status:" + response.getStatus()); + log.info("HttpRecord Response,url: " + request.getRequestURL() + " ,status: " + response.getStatus()); + MDC.remove(TRACEID); removeAuthorization(); } private void removeAuthorization() { log.trace("已清除当前线程的Authorization"); - currentAuthorization.remove(); + AUTHORIZATION.remove(); } public static String getAuthorization() { - return currentAuthorization.get(); + return AUTHORIZATION.get(); } }