This commit is contained in:
parent
465d760d69
commit
bafa5b2478
|
|
@ -0,0 +1,2 @@
|
|||
package com.nflg.product.bomnew.pojo.query;public class CompareReportQuery {
|
||||
}
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
package com.nflg.product.bomnew.pojo.vo;public class CompareReportListVO {
|
||||
}
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
package com.nflg.product.bomnew.pojo.vo;public class CompareReportVO {
|
||||
}
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
package com.nflg.product.bomnew.service;public class CompareReportService {
|
||||
}
|
||||
|
|
@ -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<BomNewOriginalParentEntity> buildQuery() {
|
||||
QueryWrapper<BomNewOriginalParentEntity> 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<BomNewOriginalParentEntity> queryWrapper = buildQuery();
|
||||
List<BomNewOriginalParentEntity> 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<BomNewEbomChildFormalEntity> queryWrapper = new QueryWrapper<>();
|
||||
// queryWrapper.lambda().eq(BomNewEbomChildFormalEntity::getParentRowId, parentFormal.getRowId());
|
||||
//
|
||||
// List<BomNewEbomChildFormalEntity> list = SpringUtil.getBean(BomNewEbomChildFormalService.class).list(queryWrapper);
|
||||
//
|
||||
List<BomOriginalListVO> list = SpringUtil.getBean(BomNewOriginalParentService.class).getBaseMapper().getParentChild(parentFormal.getRowId());
|
||||
List<ForwardReportVO> nodeList=null;
|
||||
|
||||
if (CollectionUtil.isNotEmpty(list)) {
|
||||
int noNum=1;
|
||||
nodeList = Convert.convert(new TypeReference<List<ForwardReportVO>>() {
|
||||
}, 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<BomOriginalListVO> bomDetailList(Long bomRowId) {
|
||||
List<BomOriginalListVO> childList = SpringUtil.getBean(BomNewOriginalParentService.class).getBaseMapper().getParentChild(bomRowId);
|
||||
OriginalBomFormalTreeTask task = new OriginalBomFormalTreeTask(childList);
|
||||
ForkJoinPool pool = new ForkJoinPool();
|
||||
ForkJoinTask<List<BomOriginalListVO>> submit = pool.submit(task);
|
||||
|
||||
List<BomOriginalListVO> bomList = submit.join();
|
||||
return bomList;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 多层
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
ReportBomVO multiReport() {
|
||||
BomNewOriginalParentEntity parentFormal = getParent();
|
||||
|
||||
|
||||
ForwardReportVO forwardReportVO = Convert.convert(ForwardReportVO.class, parentFormal);
|
||||
forwardReportVO.setCreatedTime(parentFormal.getConvertToEbomTime());
|
||||
|
||||
List<BomOriginalListVO> bomList = bomDetailList(parentFormal.getRowId());
|
||||
List<ForwardReportVO> convertBomList = Convert.convert(new TypeReference<List<ForwardReportVO>>() {
|
||||
}, bomList);
|
||||
|
||||
sumLevel(convertBomList);
|
||||
List<ForwardReportVO> 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<BomOriginalListVO> bomList = bomDetailList(parentFormal.getRowId());
|
||||
List<ForwardReportVO> convertBomList = Convert.convert(new TypeReference<List<ForwardReportVO>>() {
|
||||
}, bomList);
|
||||
|
||||
sumLevel(convertBomList);
|
||||
|
||||
//无子级的数据
|
||||
List<ForwardReportVO> 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;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
Loading…
Reference in New Issue