正查汇总调整

This commit is contained in:
jing's 2024-07-17 20:50:16 +08:00
parent bb6e4daec0
commit 3b87848f60
5 changed files with 210 additions and 65 deletions

View File

@ -138,10 +138,30 @@ public class BomReportApi extends BaseApi {
return resultBom1VO;
}
if (query.getLeft().getVersionStrategy().compareTo(ReportConstant.VersionStrategyEnum.ALL.getValue()) == 0
|| query.getLeft().getVersionStrategy().compareTo(ReportConstant.VersionStrategyEnum.DEFINE.getValue()) == 0 ) {
if(StrUtil.isEmpty(query.getLeft().getBomVersion()))
return ResultVO.error(STATE.ParamErr, "比对左边请选择一个版本");
}
if (resultBom2VO != null) {
return resultBom2VO;
}
if (query.getRight().getVersionStrategy().compareTo(ReportConstant.VersionStrategyEnum.ALL.getValue()) == 0
|| query.getRight().getVersionStrategy().compareTo(ReportConstant.VersionStrategyEnum.DEFINE.getValue()) == 0 ) {
if(StrUtil.isEmpty(query.getRight().getBomVersion()))
return ResultVO.error(STATE.ParamErr, "比对右侧请选择一个版本");
}
if (!ObjectUtil.equal(query.getLeft().getQueryType(), query.getRight().getQueryType())) {
return ResultVO.error(STATE.ParamErr, "查询方式不一致");

View File

@ -1,6 +1,7 @@
package com.nflg.product.bomnew.pojo.vo;
import cn.hutool.core.util.NumberUtil;
import cn.hutool.core.util.StrUtil;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@ -31,6 +32,19 @@ public class ForwardReportVO extends BaseMaterialVO {
@ApiModelProperty("层级")
private Integer levelNum;
@ApiModelProperty("查询物料bom版本")
private String bomVersion;
@ApiModelProperty("层级描述")
private String levelNumText;
public String getLevelNumText(){
if(Objects.nonNull(levelNum)){
levelNumText=StrUtil.repeat(".",levelNum);
levelNumText=levelNumText+levelNum;
}
return levelNumText;
}
@ApiModelProperty(value = "工厂编码")
private String facCode;
@ -56,6 +70,8 @@ public class ForwardReportVO extends BaseMaterialVO {
@ApiModelProperty(value = "数量")
private BigDecimal num;
public BigDecimal getNum(){
if(Objects.nonNull(num)) {

View File

@ -44,10 +44,33 @@ public abstract class BaseForwardReport {
* @param bomList
*/
protected void sumLevel(List<ForwardReportVO> bomList) {
if(CollUtil.isEmpty(bomList)){
return;
}
//分层统计避免使用遍历树统计
Map<Integer, List<ForwardReportVO>> listMap = bomList.stream().collect(Collectors.groupingBy(ForwardReportVO::getLevelNum));
// List<Map.Entry<Integer,List<ForwardReportVO>>> sortList=new ArrayList<>(listMap.entrySet());
// Collections.sort(sortList, new Comparator<Map.Entry<Integer, List<ForwardReportVO>>>() {
// @Override
// public int compare(Map.Entry<Integer, List<ForwardReportVO>> o1, Map.Entry<Integer, List<ForwardReportVO>> o2) {
// return o1.getKey().compareTo(o2.getKey());
// }
// });
//排序 层级升序
Map<Integer, List<ForwardReportVO>> sortListMap= CollectionUtil.sort(listMap, new Comparator<Integer>() {
@Override
public int compare( Integer o1, Integer o2) {
return o1.compareTo(o2 );
}
});
sortListMap.putAll(listMap);
Map<Long, List<ForwardReportVO>> bomParentMap = bomList.stream().filter(u->Objects.nonNull(u.getParentRowId())&&u.getParentRowId()>0).collect(Collectors.groupingBy(ForwardReportVO::getParentRowId));
listMap.forEach((key, value) -> {
sortListMap.forEach((key, value) -> {
value.forEach(parent -> {
List<ForwardReportVO> dataList = bomParentMap.get(parent.getBomRowId());
if (CollectionUtil.isNotEmpty(dataList) ) {

View File

@ -294,17 +294,24 @@ public class EBomForwardReport extends BaseForwardReport {
initMaterialInfo(parentChildList);
initMaterialInfo(ImmutableList.of(parentFormal));
AtomicInteger orderNum = new AtomicInteger(1);
parentFormal.setLevelNum(1);
parentFormal.setOrderNumber(orderNum.getAndIncrement() + "");
nodesList.add(Convert.convert(ForwardReportVO.class, parentFormal));
if (CollectionUtil.isNotEmpty(parentChildList)) {
AtomicInteger orderNum = new AtomicInteger(1);
parentFormal.setLevelNum(1);
parentFormal.setOrderNumber(orderNum.getAndIncrement() + "");
nodesList.add(Convert.convert(ForwardReportVO.class, parentFormal));
bomUpAndLowLevel(ImmutableList.of(parentFormal), parentChildList, null, 2, orderNum);
bomUpAndLowLevel(ImmutableList.of(parentFormal), parentChildList, null, 2, orderNum);
List<ForwardReportVO> nodeList = Convert.convert(new TypeReference<List<ForwardReportVO>>() {
}, parentChildList);
nodeList.forEach(item->{
item.setBomVersion(parentFormal.getCurrentVersion());
});
nodesList.addAll(nodeList);
}
List<ForwardReportVO> nodeList = Convert.convert(new TypeReference<List<ForwardReportVO>>() {
}, parentChildList);
nodesList.addAll(nodeList);
}
@ -469,7 +476,7 @@ public class EBomForwardReport extends BaseForwardReport {
nodesList.addAll(nodeList);
for (ForwardReportVO vo :
nodeList) {
vo.setBomVersion(parentFormal.getCurrentVersion());
// vo.setDeviseName(parentFormal.getDeviseName());
vo.setExpireEndTime(parentFormal.getConvertToEbomTime());
}
@ -489,40 +496,77 @@ public class EBomForwardReport extends BaseForwardReport {
* @return
*/
ReportBomVO sumReport() {
List<BomNewEbomParentVO> listParent = getParentV2();
if (CollUtil.isEmpty(listParent)) {
ReportBomVO multiReportObj = multiReport();
if(multiReportObj==null || CollUtil.isEmpty(multiReportObj.getChildNodes())){
return null;
}
BomNewEbomParentVO parentFormal0 = listParent.get(0);
ForwardReportVO forwardReportVO = Convert.convert(ForwardReportVO.class, parentFormal0);
List<ForwardReportVO> nodesList = new ArrayList<>();
for (BomNewEbomParentVO parentFormal : listParent) {
Map<String,List<ForwardReportVO>> bomVesionMap=multiReportObj.getChildNodes().stream().collect(Collectors.groupingBy(ForwardReportVO::getBomVersion));
bomVesionMap.forEach((key, value) -> {
List<BomNewEbomParentVO> bomList = bomDetailAndParent(parentFormal);
if (CollUtil.isEmpty(bomList)) {
continue;
}
List<ForwardReportVO> convertBomList = Convert.convert(new TypeReference<List<ForwardReportVO>>() {
}, bomList);
sumLevel(convertBomList);
//无子级的数据
List<ForwardReportVO> nodeList = leafMergeMaterialNo(convertBomList);
if(CollUtil.isNotEmpty(value)){
//无子级的数据
List<ForwardReportVO> nodeList = leafMergeMaterialNo(value);
nodesList.addAll(nodeList);
AtomicInteger orderNum = new AtomicInteger(1);
for (ForwardReportVO vo :
nodeList) {
AtomicInteger orderNum = new AtomicInteger(1);
for (ForwardReportVO vo :
nodeList) {
// vo.setLevelNum(1);
vo.setOrderNumber(orderNum.incrementAndGet() + "");
}
nodesList.addAll(nodeList);
vo.setLevelNum(1);
vo.setOrderNumber(orderNum.incrementAndGet() + "");
vo.setExpireEndTime(parentFormal.getConvertToEbomTime());
// vo.setDeviseName(forwardReportVO.getDeviseName());
}
}
return buildReportBomVo(forwardReportVO, nodesList);
});
multiReportObj.getChildNodes().clear();
multiReportObj.getChildNodes().addAll(nodesList);
return multiReportObj;
// List<BomNewEbomParentVO> listParent = getParentV2();
// if (CollUtil.isEmpty(listParent)) {
// return null;
// }
// BomNewEbomParentVO parentFormal0 = listParent.get(0);
// ForwardReportVO forwardReportVO = Convert.convert(ForwardReportVO.class, parentFormal0);
//
// List<ForwardReportVO> nodesList = new ArrayList<>();
// for (BomNewEbomParentVO parentFormal : listParent) {
//
// List<BomNewEbomParentVO> bomList = bomDetailAndParent(parentFormal);
// if (CollUtil.isEmpty(bomList)) {
// continue;
// }
// List<ForwardReportVO> convertBomList = Convert.convert(new TypeReference<List<ForwardReportVO>>() {
// }, bomList);
// sumLevel(convertBomList);
//
// //无子级的数据
// List<ForwardReportVO> nodeList = leafMergeMaterialNo(convertBomList);
//
// nodesList.addAll(nodeList);
// AtomicInteger orderNum = new AtomicInteger(1);
// for (ForwardReportVO vo :
// nodeList) {
//
// vo.setLevelNum(1);
// vo.setOrderNumber(orderNum.incrementAndGet() + "");
// vo.setExpireEndTime(parentFormal.getConvertToEbomTime());
// // vo.setDeviseName(forwardReportVO.getDeviseName());
// }
//
// }
// return buildReportBomVo(forwardReportVO, nodesList);
}

View File

@ -311,14 +311,20 @@ public class PBomForwardReport extends BaseForwardReport {
parentFormal.setOrderNumber(orderNum.getAndIncrement() + "");
nodesList.add(Convert.convert(ForwardReportVO.class, parentFormal));
bomUpAndLowLevel(ImmutableList.of(parentFormal), parentChildList, null, 2, orderNum);
List<ForwardReportVO> nodeList = Convert.convert(new TypeReference<List<ForwardReportVO>>() {
}, parentChildList);
nodeList.forEach(item->{
item.setBomVersion(parentFormal.getCurrentVersion());
});
nodesList.addAll(nodeList);
}
List<ForwardReportVO> nodeList = Convert.convert(new TypeReference<List<ForwardReportVO>>() {
}, parentChildList);
nodesList.addAll(nodeList);
}
return buildReportBomVo(forwardReportVO,nodesList);
}
@ -497,7 +503,7 @@ public class PBomForwardReport extends BaseForwardReport {
for (ForwardReportVO vo :
nodeList) {
vo.setBomVersion(parentFormal.getCurrentVersion());
// vo.setDeviseName(parentFormal.getDeviseName());
// vo.setCreatedTime(parentFormal.getCreatedTime());
vo.setExpireEndTime(parentFormal.getReleaseTime());
@ -517,41 +523,77 @@ public class PBomForwardReport extends BaseForwardReport {
* @return
*/
ReportBomVO sumReport() {
List<BomNewPbomParentVO> listParent=getParentV2();
if (CollUtil.isEmpty(listParent)) {
ReportBomVO multiReportObj = multiReport();
if(multiReportObj==null || CollUtil.isEmpty(multiReportObj.getChildNodes())){
return null;
}
BomNewPbomParentVO parentFormal0=listParent.get(0);
ForwardReportVO forwardReportVO = Convert.convert(ForwardReportVO.class, parentFormal0);
List<ForwardReportVO> nodesList = new ArrayList<>();
Map<String,List<ForwardReportVO>> bomVesionMap=multiReportObj.getChildNodes().stream().collect(Collectors.groupingBy(ForwardReportVO::getBomVersion));
bomVesionMap.forEach((key, value) -> {
List<ForwardReportVO> nodesList=new ArrayList<>();
for (BomNewPbomParentVO parentFormal:
listParent ) {
if(CollUtil.isNotEmpty(value)) {
//无子级的数据
List<ForwardReportVO> nodeList = leafMergeMaterialNo(value);
AtomicInteger orderNum = new AtomicInteger(1);
for (ForwardReportVO vo :
nodeList) {
List<BomNewPbomParentVO> bomList = bomDetailAndParent(parentFormal );
// vo.setLevelNum(1);
vo.setOrderNumber(orderNum.incrementAndGet() + "");
}
nodesList.addAll(nodeList);
if(CollUtil.isEmpty(bomList)){
continue;
}
List<ForwardReportVO> convertBomList = Convert.convert(new TypeReference<List<ForwardReportVO>>() {
}, bomList);
sumLevel(convertBomList);
List<ForwardReportVO> nodeList = leafMergeMaterialNo(convertBomList);
nodesList.addAll(nodeList);
int noNum = 1;
for (ForwardReportVO vo : nodeList) {
vo.setOrderNumber(noNum + "");
noNum++;
// vo.setDeviseName(forwardReportVO.getDeviseName());
vo.setCreatedTime(parentFormal.getCreatedTime());
vo.setExpireEndTime(parentFormal.getReleaseTime());
}
});
}
return buildReportBomVo(forwardReportVO,nodesList);
multiReportObj.getChildNodes().clear();
multiReportObj.getChildNodes().addAll(nodesList);
return multiReportObj;
// List<BomNewPbomParentVO> listParent=getParentV2();
// if (CollUtil.isEmpty(listParent)) {
// return null;
// }
// BomNewPbomParentVO parentFormal0=listParent.get(0);
// ForwardReportVO forwardReportVO = Convert.convert(ForwardReportVO.class, parentFormal0);
//
// List<ForwardReportVO> nodesList=new ArrayList<>();
// for (BomNewPbomParentVO parentFormal:
// listParent ) {
//
//
// List<BomNewPbomParentVO> bomList = bomDetailAndParent(parentFormal );
//
// if(CollUtil.isEmpty(bomList)){
// continue;
// }
// List<ForwardReportVO> convertBomList = Convert.convert(new TypeReference<List<ForwardReportVO>>() {
// }, bomList);
//
// sumLevel(convertBomList);
// List<ForwardReportVO> nodeList = leafMergeMaterialNo(convertBomList);
// nodesList.addAll(nodeList);
// int noNum = 1;
// for (ForwardReportVO vo : nodeList) {
// vo.setOrderNumber(noNum + "");
// noNum++;
// // vo.setDeviseName(forwardReportVO.getDeviseName());
// vo.setCreatedTime(parentFormal.getCreatedTime());
// vo.setExpireEndTime(parentFormal.getReleaseTime());
// }
//
//
// }
// return buildReportBomVo(forwardReportVO,nodesList);
}