正查汇总调整
This commit is contained in:
parent
bb6e4daec0
commit
3b87848f60
|
|
@ -138,10 +138,30 @@ public class BomReportApi extends BaseApi {
|
||||||
return resultBom1VO;
|
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) {
|
if (resultBom2VO != null) {
|
||||||
return resultBom2VO;
|
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())) {
|
if (!ObjectUtil.equal(query.getLeft().getQueryType(), query.getRight().getQueryType())) {
|
||||||
|
|
||||||
return ResultVO.error(STATE.ParamErr, "查询方式不一致");
|
return ResultVO.error(STATE.ParamErr, "查询方式不一致");
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
package com.nflg.product.bomnew.pojo.vo;
|
package com.nflg.product.bomnew.pojo.vo;
|
||||||
|
|
||||||
import cn.hutool.core.util.NumberUtil;
|
import cn.hutool.core.util.NumberUtil;
|
||||||
|
import cn.hutool.core.util.StrUtil;
|
||||||
import io.swagger.annotations.ApiModelProperty;
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
|
|
@ -31,6 +32,19 @@ public class ForwardReportVO extends BaseMaterialVO {
|
||||||
|
|
||||||
@ApiModelProperty("层级")
|
@ApiModelProperty("层级")
|
||||||
private Integer levelNum;
|
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 = "工厂编码")
|
@ApiModelProperty(value = "工厂编码")
|
||||||
private String facCode;
|
private String facCode;
|
||||||
|
|
@ -56,6 +70,8 @@ public class ForwardReportVO extends BaseMaterialVO {
|
||||||
@ApiModelProperty(value = "数量")
|
@ApiModelProperty(value = "数量")
|
||||||
private BigDecimal num;
|
private BigDecimal num;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public BigDecimal getNum(){
|
public BigDecimal getNum(){
|
||||||
|
|
||||||
if(Objects.nonNull(num)) {
|
if(Objects.nonNull(num)) {
|
||||||
|
|
|
||||||
|
|
@ -44,10 +44,33 @@ public abstract class BaseForwardReport {
|
||||||
* @param bomList
|
* @param bomList
|
||||||
*/
|
*/
|
||||||
protected void sumLevel(List<ForwardReportVO> bomList) {
|
protected void sumLevel(List<ForwardReportVO> bomList) {
|
||||||
|
if(CollUtil.isEmpty(bomList)){
|
||||||
|
return;
|
||||||
|
}
|
||||||
//分层统计,避免使用遍历树统计
|
//分层统计,避免使用遍历树统计
|
||||||
Map<Integer, List<ForwardReportVO>> listMap = bomList.stream().collect(Collectors.groupingBy(ForwardReportVO::getLevelNum));
|
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));
|
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 -> {
|
value.forEach(parent -> {
|
||||||
List<ForwardReportVO> dataList = bomParentMap.get(parent.getBomRowId());
|
List<ForwardReportVO> dataList = bomParentMap.get(parent.getBomRowId());
|
||||||
if (CollectionUtil.isNotEmpty(dataList) ) {
|
if (CollectionUtil.isNotEmpty(dataList) ) {
|
||||||
|
|
|
||||||
|
|
@ -294,17 +294,24 @@ public class EBomForwardReport extends BaseForwardReport {
|
||||||
|
|
||||||
initMaterialInfo(parentChildList);
|
initMaterialInfo(parentChildList);
|
||||||
initMaterialInfo(ImmutableList.of(parentFormal));
|
initMaterialInfo(ImmutableList.of(parentFormal));
|
||||||
AtomicInteger orderNum = new AtomicInteger(1);
|
if (CollectionUtil.isNotEmpty(parentChildList)) {
|
||||||
parentFormal.setLevelNum(1);
|
AtomicInteger orderNum = new AtomicInteger(1);
|
||||||
parentFormal.setOrderNumber(orderNum.getAndIncrement() + "");
|
parentFormal.setLevelNum(1);
|
||||||
nodesList.add(Convert.convert(ForwardReportVO.class, parentFormal));
|
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);
|
nodesList.addAll(nodeList);
|
||||||
for (ForwardReportVO vo :
|
for (ForwardReportVO vo :
|
||||||
nodeList) {
|
nodeList) {
|
||||||
|
vo.setBomVersion(parentFormal.getCurrentVersion());
|
||||||
// vo.setDeviseName(parentFormal.getDeviseName());
|
// vo.setDeviseName(parentFormal.getDeviseName());
|
||||||
vo.setExpireEndTime(parentFormal.getConvertToEbomTime());
|
vo.setExpireEndTime(parentFormal.getConvertToEbomTime());
|
||||||
}
|
}
|
||||||
|
|
@ -489,40 +496,77 @@ public class EBomForwardReport extends BaseForwardReport {
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
ReportBomVO sumReport() {
|
ReportBomVO sumReport() {
|
||||||
List<BomNewEbomParentVO> listParent = getParentV2();
|
|
||||||
if (CollUtil.isEmpty(listParent)) {
|
ReportBomVO multiReportObj = multiReport();
|
||||||
|
|
||||||
|
if(multiReportObj==null || CollUtil.isEmpty(multiReportObj.getChildNodes())){
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
BomNewEbomParentVO parentFormal0 = listParent.get(0);
|
|
||||||
ForwardReportVO forwardReportVO = Convert.convert(ForwardReportVO.class, parentFormal0);
|
|
||||||
|
|
||||||
List<ForwardReportVO> nodesList = new ArrayList<>();
|
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);
|
|
||||||
|
|
||||||
//无子级的数据
|
if(CollUtil.isNotEmpty(value)){
|
||||||
List<ForwardReportVO> nodeList = leafMergeMaterialNo(convertBomList);
|
//无子级的数据
|
||||||
|
List<ForwardReportVO> nodeList = leafMergeMaterialNo(value);
|
||||||
|
|
||||||
nodesList.addAll(nodeList);
|
AtomicInteger orderNum = new AtomicInteger(1);
|
||||||
AtomicInteger orderNum = new AtomicInteger(1);
|
for (ForwardReportVO vo :
|
||||||
for (ForwardReportVO vo :
|
nodeList) {
|
||||||
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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -311,14 +311,20 @@ public class PBomForwardReport extends BaseForwardReport {
|
||||||
parentFormal.setOrderNumber(orderNum.getAndIncrement() + "");
|
parentFormal.setOrderNumber(orderNum.getAndIncrement() + "");
|
||||||
nodesList.add(Convert.convert(ForwardReportVO.class, parentFormal));
|
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);
|
|
||||||
}
|
}
|
||||||
return buildReportBomVo(forwardReportVO,nodesList);
|
return buildReportBomVo(forwardReportVO,nodesList);
|
||||||
}
|
}
|
||||||
|
|
@ -497,7 +503,7 @@ public class PBomForwardReport extends BaseForwardReport {
|
||||||
|
|
||||||
for (ForwardReportVO vo :
|
for (ForwardReportVO vo :
|
||||||
nodeList) {
|
nodeList) {
|
||||||
|
vo.setBomVersion(parentFormal.getCurrentVersion());
|
||||||
// vo.setDeviseName(parentFormal.getDeviseName());
|
// vo.setDeviseName(parentFormal.getDeviseName());
|
||||||
// vo.setCreatedTime(parentFormal.getCreatedTime());
|
// vo.setCreatedTime(parentFormal.getCreatedTime());
|
||||||
vo.setExpireEndTime(parentFormal.getReleaseTime());
|
vo.setExpireEndTime(parentFormal.getReleaseTime());
|
||||||
|
|
@ -517,41 +523,77 @@ public class PBomForwardReport extends BaseForwardReport {
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
ReportBomVO sumReport() {
|
ReportBomVO sumReport() {
|
||||||
List<BomNewPbomParentVO> listParent=getParentV2();
|
|
||||||
if (CollUtil.isEmpty(listParent)) {
|
ReportBomVO multiReportObj = multiReport();
|
||||||
|
|
||||||
|
if(multiReportObj==null || CollUtil.isEmpty(multiReportObj.getChildNodes())){
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
BomNewPbomParentVO parentFormal0=listParent.get(0);
|
List<ForwardReportVO> nodesList = new ArrayList<>();
|
||||||
ForwardReportVO forwardReportVO = Convert.convert(ForwardReportVO.class, parentFormal0);
|
Map<String,List<ForwardReportVO>> bomVesionMap=multiReportObj.getChildNodes().stream().collect(Collectors.groupingBy(ForwardReportVO::getBomVersion));
|
||||||
|
bomVesionMap.forEach((key, value) -> {
|
||||||
|
|
||||||
List<ForwardReportVO> nodesList=new ArrayList<>();
|
if(CollUtil.isNotEmpty(value)) {
|
||||||
for (BomNewPbomParentVO parentFormal:
|
//无子级的数据
|
||||||
listParent ) {
|
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());
|
|
||||||
}
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
}
|
multiReportObj.getChildNodes().clear();
|
||||||
return buildReportBomVo(forwardReportVO,nodesList);
|
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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue