From bafa5b24786893f7b30c569251a03ba2f1cbd43b Mon Sep 17 00:00:00 2001 From: jing's Date: Sat, 9 Mar 2024 14:14:11 +0800 Subject: [PATCH] =?UTF-8?q?=E6=AF=94=E5=AF=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bomnew/pojo/query/CompareReportQuery.java | 2 + .../bomnew/pojo/vo/CompareReportListVO.java | 2 + .../bomnew/pojo/vo/CompareReportVO.java | 2 + .../bomnew/service/CompareReportService.java | 2 + .../OriginalBom/OriginalBomCompareReport.java | 203 ++++++++++++++++++ 5 files changed, 211 insertions(+) create mode 100644 nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/query/CompareReportQuery.java create mode 100644 nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/vo/CompareReportListVO.java create mode 100644 nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/vo/CompareReportVO.java create mode 100644 nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/CompareReportService.java create mode 100644 nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/OriginalBom/OriginalBomCompareReport.java diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/query/CompareReportQuery.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/query/CompareReportQuery.java new file mode 100644 index 00000000..90059bad --- /dev/null +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/query/CompareReportQuery.java @@ -0,0 +1,2 @@ +package com.nflg.product.bomnew.pojo.query;public class CompareReportQuery { +} diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/vo/CompareReportListVO.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/vo/CompareReportListVO.java new file mode 100644 index 00000000..1bb9feb6 --- /dev/null +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/vo/CompareReportListVO.java @@ -0,0 +1,2 @@ +package com.nflg.product.bomnew.pojo.vo;public class CompareReportListVO { +} diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/vo/CompareReportVO.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/vo/CompareReportVO.java new file mode 100644 index 00000000..e83fa83c --- /dev/null +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/vo/CompareReportVO.java @@ -0,0 +1,2 @@ +package com.nflg.product.bomnew.pojo.vo;public class CompareReportVO { +} diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/CompareReportService.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/CompareReportService.java new file mode 100644 index 00000000..f690a17b --- /dev/null +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/CompareReportService.java @@ -0,0 +1,2 @@ +package com.nflg.product.bomnew.service;public class CompareReportService { +} diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/OriginalBom/OriginalBomCompareReport.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/OriginalBom/OriginalBomCompareReport.java new file mode 100644 index 00000000..e6fe63ac --- /dev/null +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/OriginalBom/OriginalBomCompareReport.java @@ -0,0 +1,203 @@ +package com.nflg.product.bomnew.service.domain.OriginalBom; + +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.OriginalStatusEnum; +import com.nflg.product.bomnew.constant.ReportConstant; +import com.nflg.product.bomnew.pojo.entity.BomNewEbomParentFormalEntity; +import com.nflg.product.bomnew.pojo.entity.BomNewOriginalParentEntity; +import com.nflg.product.bomnew.pojo.query.ReverseReportQuery; +import com.nflg.product.bomnew.pojo.vo.*; +import com.nflg.product.bomnew.service.BomNewEbomParentFormalService; +import com.nflg.product.bomnew.service.BomNewOriginalParentService; +import com.nflg.product.bomnew.service.domain.BaseForwardReport; +import com.nflg.product.bomnew.service.domain.EBom.EBomFormalTreeTask; +import com.nflg.product.bomnew.util.VersionUtil; +import nflg.product.common.constant.STATE; + +import java.util.ArrayList; +import java.util.List; +import java.util.concurrent.ForkJoinPool; +import java.util.concurrent.ForkJoinTask; + +/** + * 原始bom报表统计 + */ +public class OriginalBomForwardReport extends BaseForwardReport { + + + public OriginalBomForwardReport(ReverseReportQuery query) { + + super(query); + } + + + QueryWrapper buildQuery() { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.lambda().eq(BomNewOriginalParentEntity::getDrawingNo, query.getDrawingNo()); + if (StrUtil.isNotBlank(query.getMaterialNo())) { + queryWrapper.lambda().eq(BomNewOriginalParentEntity::getMaterialNo, query.getMaterialNo()); + } + + queryWrapper.lambda().eq(BomNewOriginalParentEntity::getLastVersionIs,1); + // queryWrapper.lambda().eq(BomNewOriginalParentEntity::getStatus, OriginalStatusEnum.OVER_CONVERT.getValue()); + if (StrUtil.isNotBlank(query.getStartDate()) && StrUtil.isNotBlank(query.getEndDate())) { + queryWrapper.lambda().between(BomNewOriginalParentEntity::getConvertToEbomTime, query.getStartDate(), query.getEndDate()); + } + return queryWrapper; + } + + + BomNewOriginalParentEntity getParent() { + QueryWrapper queryWrapper = buildQuery(); + List list = SpringUtil.getBean(BomNewOriginalParentService.class).list(queryWrapper); + if (CollectionUtil.isEmpty(list)) { + throw new NflgBusinessException(STATE.BusinessError, StrUtil.format("未查到图号为{}的数据信息", query.getDrawingNo())); + } + BomNewOriginalParentEntity parentFormal = list.get(0); + parentFormal.setLevelNum(null); + + return parentFormal; + } + + + /** + * 单层 + * + * @return + */ + ReportBomVO singleReport() { + + BomNewOriginalParentEntity parentFormal = getParent(); + ForwardReportVO forwardReportVO = Convert.convert(ForwardReportVO.class, parentFormal); + forwardReportVO.setCreatedTime(parentFormal.getConvertToEbomTime()); + +// QueryWrapper queryWrapper = new QueryWrapper<>(); +// queryWrapper.lambda().eq(BomNewEbomChildFormalEntity::getParentRowId, parentFormal.getRowId()); +// +// List list = SpringUtil.getBean(BomNewEbomChildFormalService.class).list(queryWrapper); +// + List list = SpringUtil.getBean(BomNewOriginalParentService.class).getBaseMapper().getParentChild(parentFormal.getRowId()); + List nodeList=null; + + if (CollectionUtil.isNotEmpty(list)) { + int noNum=1; + nodeList = Convert.convert(new TypeReference>() { + }, list); + for (ForwardReportVO vo : + nodeList) { + vo.setCreatedTime(parentFormal.getConvertToEbomTime()); + vo.setLevelNum(1); + vo.setOrderNumber(noNum+"");noNum++; + // vo.setOrderNumber(""); + } + + } + + return buildReportBomVo(forwardReportVO,nodeList); + } + + + + /** + * bomid下所有数据 + * + * @return + */ + List bomDetailList(Long bomRowId) { + List childList = SpringUtil.getBean(BomNewOriginalParentService.class).getBaseMapper().getParentChild(bomRowId); + OriginalBomFormalTreeTask task = new OriginalBomFormalTreeTask(childList); + ForkJoinPool pool = new ForkJoinPool(); + ForkJoinTask> submit = pool.submit(task); + + List bomList = submit.join(); + return bomList; + } + + + /** + * 多层 + * + * @return + */ + ReportBomVO multiReport() { + BomNewOriginalParentEntity parentFormal = getParent(); + + + ForwardReportVO forwardReportVO = Convert.convert(ForwardReportVO.class, parentFormal); + forwardReportVO.setCreatedTime(parentFormal.getConvertToEbomTime()); + + List bomList = bomDetailList(parentFormal.getRowId()); + List convertBomList = Convert.convert(new TypeReference>() { + }, bomList); + + sumLevel(convertBomList); + List rootList; + //转化为树结构 + rootList = showDataStyle(convertBomList, parentFormal.getRowId()); + + return buildReportBomVo(forwardReportVO,rootList,query.getDataType()); + + + } + + + /** + * 汇总 + * 1. 查询所有不含子级的物料信息,并对数据进行汇总。 + * + * @return + */ + ReportBomVO sumReport() { + + BomNewOriginalParentEntity parentFormal = getParent(); + + + ForwardReportVO forwardReportVO = Convert.convert(ForwardReportVO.class, parentFormal); + forwardReportVO.setCreatedTime(parentFormal.getConvertToEbomTime()); + + List bomList = bomDetailList(parentFormal.getRowId()); + List convertBomList = Convert.convert(new TypeReference>() { + }, bomList); + + sumLevel(convertBomList); + + //无子级的数据 + List sumList =leafMergeMaterialNo(convertBomList); + int noNum=1; + for (ForwardReportVO vo : + sumList) { + vo.setOrderNumber(noNum+"");noNum++; + + } + return buildReportBomVo(forwardReportVO,sumList); + } + + + + + + public ReportBomVO genReport() { + //单层 + if (query.getQueryType().compareTo(ReportConstant.QueryTypeEnum.SINGLE.getValue()) == 0) { + return singleReport(); + } + //多层 + if (query.getQueryType().compareTo(ReportConstant.QueryTypeEnum.MULTI.getValue()) == 0) { + return multiReport(); + } + //汇总 + if (query.getQueryType().compareTo(ReportConstant.QueryTypeEnum.SUM.getValue()) == 0) { + return sumReport(); + } + + return null; + } + + +}