From 903c218c0826f2b9b76b309a7a3fff8e63374b06 Mon Sep 17 00:00:00 2001 From: jing's Date: Sat, 17 Feb 2024 21:54:48 +0800 Subject: [PATCH] ebom --- .../product/bomnew/api/user/BomReportApi.java | 57 +++++++-- .../bomnew/pojo/vo/ForwardReportVO.java | 9 ++ .../product/bomnew/pojo/vo/ReportBomVO.java | 16 +++ .../bomnew/service/ForwardReportService.java | 43 ++++--- .../domain/EBom/EBomForwardReport.java | 108 ++++++++++++++++++ .../master/BomNewEbomParentFormalMapper.xml | 2 + 6 files changed, 211 insertions(+), 24 deletions(-) create mode 100644 nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/vo/ForwardReportVO.java create mode 100644 nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/vo/ReportBomVO.java create mode 100644 nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/EBomForwardReport.java 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 43922a68..4fe533de 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 @@ -3,8 +3,11 @@ package com.nflg.product.bomnew.api.user; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.nflg.product.base.core.api.BaseApi; +import com.nflg.product.bomnew.constant.ReportConstant; import com.nflg.product.bomnew.pojo.query.ReverseReportQuery; import com.nflg.product.bomnew.pojo.vo.BomNewEbomParentVO; +import com.nflg.product.bomnew.pojo.vo.ForwardReportVO; +import com.nflg.product.bomnew.pojo.vo.ReportBomVO; import com.nflg.product.bomnew.pojo.vo.ReverseReportVO; import com.nflg.product.bomnew.service.ForwardReportService; import com.nflg.product.bomnew.service.ReverseReportService; @@ -24,13 +27,14 @@ import java.util.Objects; @Api(tags = "BOM-报表接口") @RestController @RequestMapping("bom/new/report") -public class BomReportApi extends BaseApi { +public class BomReportApi extends BaseApi { @Resource ReverseReportService reverseReportService; @Resource ForwardReportService forwardReportService; + @PostMapping("reverseReport") @ApiOperation("bom-反查") public ResultVO> reverseReport(@RequestBody ReverseReportQuery query) { @@ -38,24 +42,57 @@ public class BomReportApi extends BaseApi { } - - @PostMapping("forwardReport") - @ApiOperation("bom-正查") - public ResultVO> forwardReport(@RequestBody ReverseReportQuery query) { + ResultVO checkQueryParam(ReverseReportQuery query) { + if (query == null) { + return ResultVO.error(STATE.ParamErr, "未选择填写参数"); + } if (Objects.isNull(query.getBomType())) { return ResultVO.error(STATE.ParamErr, "请选择BOM类型"); + } else { + if (query.getBomType().compareTo(ReportConstant.BomTypeEnum.ORIGINALBOM.getValue()) != 0 + || query.getBomType().compareTo(ReportConstant.BomTypeEnum.EBOM.getValue()) != 0 + || query.getBomType().compareTo(ReportConstant.BomTypeEnum.PBOM.getValue()) != 0 + || query.getBomType().compareTo(ReportConstant.BomTypeEnum.MBOM.getValue()) != 0) { + return ResultVO.error(STATE.ParamErr, "错误的BOM类型"); + } + + + } if (Objects.isNull(query.getQueryType())) { return ResultVO.error(STATE.ParamErr, "请选择查询方式"); - } - if (Objects.isNull(query.getBomVersion())) { - return ResultVO.error(STATE.ParamErr, "请选择版本策略"); + } else { + if (query.getBomType().compareTo(ReportConstant.QueryTypeEnum.SINGLE.getValue()) != 0 + || query.getBomType().compareTo(ReportConstant.QueryTypeEnum.MULTI.getValue()) != 0 + || query.getBomType().compareTo(ReportConstant.QueryTypeEnum.SUM.getValue()) != 0) { + return ResultVO.error(STATE.ParamErr, "错误的查询方式"); + } } - forwardReportService.factoryBomType(query); - return ResultVO.success(); + if (Objects.isNull(query.getBomVersion())) { + return ResultVO.error(STATE.ParamErr, "请选择版本策略"); + } else { + if (query.getVersionStrategy().compareTo(ReportConstant.VersionStrategyEnum.NEW.getValue()) != 0 + || query.getVersionStrategy().compareTo(ReportConstant.VersionStrategyEnum.ALL.getValue()) != 0 + || query.getVersionStrategy().compareTo(ReportConstant.VersionStrategyEnum.DEFINE.getValue()) != 0) { + return ResultVO.error(STATE.ParamErr, "错误的版本策略"); + } + } + return null; + + } + + @PostMapping("forwardReport") + @ApiOperation("bom-正查") + public ResultVO forwardReport(@RequestBody ReverseReportQuery query) { + ResultVO resultVO = checkQueryParam(query); + if (resultVO != null) { + return resultVO; + } + + return ResultVO.success(forwardReportService.factoryBomType(query)); } diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/vo/ForwardReportVO.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/vo/ForwardReportVO.java new file mode 100644 index 00000000..54d1453a --- /dev/null +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/vo/ForwardReportVO.java @@ -0,0 +1,9 @@ +package com.nflg.product.bomnew.pojo.vo; + +import lombok.Data; + +@Data +public class ForwardReportVO extends ReverseReportVO{ + + +} diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/vo/ReportBomVO.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/vo/ReportBomVO.java new file mode 100644 index 00000000..a898d055 --- /dev/null +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/vo/ReportBomVO.java @@ -0,0 +1,16 @@ +package com.nflg.product.bomnew.pojo.vo; + +import lombok.Data; + +import java.util.List; + +@Data +public class ReportBomVO { + + + private ForwardReportVO parent; + + private List childNodes; + + +} diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/ForwardReportService.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/ForwardReportService.java index b7867ae1..c898f79c 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/ForwardReportService.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/ForwardReportService.java @@ -1,49 +1,64 @@ package com.nflg.product.bomnew.service; +import cn.hutool.core.collection.CollUtil; import com.nflg.product.bomnew.constant.ReportConstant; import com.nflg.product.bomnew.pojo.query.ReverseReportQuery; +import com.nflg.product.bomnew.pojo.vo.ForwardReportVO; +import com.nflg.product.bomnew.pojo.vo.ReportBomVO; +import com.nflg.product.bomnew.service.domain.EBom.EBomForwardReport; +import com.nflg.product.bomnew.util.VUtils; import org.springframework.stereotype.Service; +import java.util.List; + @Service public class ForwardReportService { - - - public void factoryBomType(ReverseReportQuery query){ + public ReportBomVO factoryBomType(ReverseReportQuery query) { //原始BOM if (query.getBomType().compareTo(ReportConstant.BomTypeEnum.ORIGINALBOM.getValue()) == 0) { - queryOriginalBom(query); + return queryOriginalBom(query); } //EBOM if (query.getBomType().compareTo(ReportConstant.BomTypeEnum.EBOM.getValue()) == 0) { - queryEBom(query); + return queryEBom(query); } //PBOM if (query.getBomType().compareTo(ReportConstant.BomTypeEnum.PBOM.getValue()) == 0) { - queryPBom(query); + return queryPBom(query); } //MBOM if (query.getBomType().compareTo(ReportConstant.BomTypeEnum.MBOM.getValue()) == 0) { - queryMBom(query); + return queryMBom(query); } + + VUtils.isTure(true).throwMessage("错误的BOM类型"); + return null; } - void queryOriginalBom(ReverseReportQuery query){ - - } + ReportBomVO queryOriginalBom(ReverseReportQuery query) { + return null; + } - void queryEBom(ReverseReportQuery query){ + ReportBomVO queryEBom(ReverseReportQuery query) { + + + EBomForwardReport eBomForwardReport = new EBomForwardReport(query); + + return eBomForwardReport.genReport(); + } - void queryPBom(ReverseReportQuery query){ - + ReportBomVO queryPBom(ReverseReportQuery query) { + return null; } - void queryMBom(ReverseReportQuery query){ + ReportBomVO queryMBom(ReverseReportQuery query) { + return null; } } diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/EBomForwardReport.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/EBomForwardReport.java new file mode 100644 index 00000000..8a4545f7 --- /dev/null +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/EBomForwardReport.java @@ -0,0 +1,108 @@ +package com.nflg.product.bomnew.service.domain.EBom; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.convert.Convert; +import cn.hutool.core.lang.TypeReference; +import cn.hutool.core.util.StrUtil; +import cn.hutool.extra.spring.SpringUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.nflg.product.base.core.exception.NflgBusinessException; +import com.nflg.product.bomnew.constant.ReportConstant; +import com.nflg.product.bomnew.pojo.entity.BomNewEbomChildFormalEntity; +import com.nflg.product.bomnew.pojo.entity.BomNewEbomParentFormalEntity; +import com.nflg.product.bomnew.pojo.query.ReverseReportQuery; +import com.nflg.product.bomnew.pojo.vo.ForwardReportVO; +import com.nflg.product.bomnew.pojo.vo.ReportBomVO; +import com.nflg.product.bomnew.service.BomNewEbomChildFormalService; +import com.nflg.product.bomnew.service.BomNewEbomParentFormalService; +import nflg.product.common.constant.STATE; + +import java.lang.reflect.Type; +import java.util.ArrayList; +import java.util.List; + +public class EBomForwardReport { + + ReverseReportQuery query; + public EBomForwardReport(ReverseReportQuery query){ + this.query=query; + } + + + QueryWrapper buildQuery(){ + QueryWrapper queryWrapper=new QueryWrapper<>(); + queryWrapper.lambda().eq(BomNewEbomParentFormalEntity::getMaterialNo,query.getMaterialNo()); + if(StrUtil.isNotBlank(query.getDrawingNo())){ + queryWrapper.lambda().eq(BomNewEbomParentFormalEntity::getDrawingNo,query.getDrawingNo()); + } + if(query.getVersionStrategy().compareTo(ReportConstant.VersionStrategyEnum.NEW.getValue()) ==0){ + queryWrapper.lambda().eq(BomNewEbomParentFormalEntity::getLastVersionIs,1); + }else { + queryWrapper.lambda().eq(BomNewEbomParentFormalEntity::getCurrentVersion,query.getBomVersion()); + } + + if(StrUtil.isNotBlank(query.getStartDate()) && StrUtil.isNotBlank(query.getEndDate()) ){ + queryWrapper.lambda().between(BomNewEbomParentFormalEntity::getConvertToEbomTime, query.getStartDate(), query.getEndDate()); + } + + return queryWrapper; + } + + + + BomNewEbomParentFormalEntity getParent(){ + QueryWrapper queryWrapper=buildQuery(); + + List list= SpringUtil.getBean(BomNewEbomParentFormalService.class).list(queryWrapper); + + if(CollectionUtil.isEmpty(list)){ + throw new NflgBusinessException(STATE.BusinessError,StrUtil.format("未查到物料编码为{}的数据信息", query.getMaterialNo() )); + } + + BomNewEbomParentFormalEntity parentFormal=list.get(0); + return parentFormal; + } + + ReportBomVO singleReport(){ + + BomNewEbomParentFormalEntity parentFormal= getParent(); + ReportBomVO reportBomVO=new ReportBomVO(); + + ForwardReportVO forwardReportVO= Convert.convert(ForwardReportVO.class, parentFormal); + forwardReportVO.setCreatedTime(parentFormal.getConvertToEbomTime()); + reportBomVO.setParent(forwardReportVO); + QueryWrapper queryWrapper=new QueryWrapper<>(); + queryWrapper.lambda().eq(BomNewEbomChildFormalEntity::getParentRowId,parentFormal.getRowId()); + List list= SpringUtil.getBean(BomNewEbomChildFormalService.class).list(queryWrapper); + if(CollectionUtil.isEmpty(list)){ + reportBomVO.setChildNodes(new ArrayList<>()); + }else{ + List nodeList= Convert.convert(new TypeReference>() { + }, list); + for (ForwardReportVO vo: + nodeList ) { + vo.setCreatedTime(reportBomVO.getParent().getCreatedTime()); + vo.setOrderNumber(""); + } + reportBomVO.setChildNodes(nodeList); + } + return reportBomVO; + } + + public ReportBomVO genReport(){ + + if (query.getQueryType().compareTo(ReportConstant.QueryTypeEnum.SINGLE.getValue()) == 0){ + return singleReport(); + } + if ( query.getQueryType().compareTo(ReportConstant.QueryTypeEnum.MULTI.getValue()) == 0){ + + } + if ( query.getQueryType().compareTo(ReportConstant.QueryTypeEnum.SUM.getValue()) == 0) { + + } + return null; + } + + +} diff --git a/nflg_project_dev/nflg-bom-new/src/main/resources/mapper/master/BomNewEbomParentFormalMapper.xml b/nflg_project_dev/nflg-bom-new/src/main/resources/mapper/master/BomNewEbomParentFormalMapper.xml index 1e7ebc9c..7dda47e9 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/resources/mapper/master/BomNewEbomParentFormalMapper.xml +++ b/nflg_project_dev/nflg-bom-new/src/main/resources/mapper/master/BomNewEbomParentFormalMapper.xml @@ -62,4 +62,6 @@ notice_nums, modify_time + +