Merge remote-tracking branch 'origin/master-xiantao5-lhj0905' into test
This commit is contained in:
commit
35ab3987ae
|
|
@ -431,5 +431,12 @@ public class PBomApi extends BaseApi {
|
||||||
return ResultVO.success(ImmutableList.of(userFactory));
|
return ResultVO.success(ImmutableList.of(userFactory));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@GetMapping("checkBomExist")
|
||||||
|
@ApiOperation("BOM完整性检查")
|
||||||
|
public ResultVO<List<String>> checkBomExist(@Valid @RequestParam("bomRowId") @NotNull Long bomRowId,
|
||||||
|
@Valid @RequestParam("type") @NotNull Integer type){
|
||||||
|
return ResultVO.success(bomNewPbomParentService.checkBomExist(bomRowId,type));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -6,8 +6,6 @@ import cn.hutool.core.util.StrUtil;
|
||||||
import cn.hutool.extra.spring.SpringUtil;
|
import cn.hutool.extra.spring.SpringUtil;
|
||||||
import com.alibaba.fastjson.JSON;
|
import com.alibaba.fastjson.JSON;
|
||||||
import com.baomidou.mybatisplus.core.toolkit.IdWorker;
|
import com.baomidou.mybatisplus.core.toolkit.IdWorker;
|
||||||
import com.google.common.collect.Lists;
|
|
||||||
import com.google.common.collect.Maps;
|
|
||||||
import com.nflg.product.base.core.conmon.util.SessionUtil;
|
import com.nflg.product.base.core.conmon.util.SessionUtil;
|
||||||
import com.nflg.product.base.core.exception.NflgBusinessException;
|
import com.nflg.product.base.core.exception.NflgBusinessException;
|
||||||
import com.nflg.product.bomnew.client.MaterialMainClient;
|
import com.nflg.product.bomnew.client.MaterialMainClient;
|
||||||
|
|
@ -39,6 +37,7 @@ import java.math.BigDecimal;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.concurrent.CompletableFuture;
|
import java.util.concurrent.CompletableFuture;
|
||||||
|
import java.util.concurrent.atomic.AtomicInteger;
|
||||||
import java.util.function.Function;
|
import java.util.function.Function;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
|
@ -200,8 +199,8 @@ public class BomNewEbomGenerateVirtualPackageServiceFor31Impl implements IBomNew
|
||||||
}));
|
}));
|
||||||
//对map的值,进行排序
|
//对map的值,进行排序
|
||||||
List<Map.Entry<String,List<BomNewEbomChildEntity>>> mpList = new ArrayList<>(chMap.entrySet());
|
List<Map.Entry<String,List<BomNewEbomChildEntity>>> mpList = new ArrayList<>(chMap.entrySet());
|
||||||
mpList.sort(Map.Entry.comparingByValue((c1,c2) -> Optional.ofNullable(c1).map(l->l.get(0)).map(BomNewEbomChildEntity::getOrderNumber).orElse("")
|
mpList.sort(Map.Entry.comparingByValue((c1,c2) -> Optional.ofNullable(c1).map(l->l.get(0)).map(m -> String.format("%s%s",m.getOrderNumber(),m.getDrawingNo().contains("仙桃)")?"2":"1")).orElse("")
|
||||||
.compareTo(Optional.of(c2).map(l->l.get(0)).map(BomNewEbomChildEntity::getOrderNumber).orElse(""))));
|
.compareTo(Optional.of(c2).map(l->l.get(0)).map(m -> String.format("%s%s",m.getOrderNumber(),m.getDrawingNo().contains("仙桃)")?"2":"1")).orElse(""))));
|
||||||
//对map值的集合按照 按发货-直发-制作的顺序排序
|
//对map值的集合按照 按发货-直发-制作的顺序排序
|
||||||
Function<BomNewEbomChildEntity,String> sortFn = (ent) -> {
|
Function<BomNewEbomChildEntity,String> sortFn = (ent) -> {
|
||||||
String num = "1";
|
String num = "1";
|
||||||
|
|
@ -222,6 +221,14 @@ public class BomNewEbomGenerateVirtualPackageServiceFor31Impl implements IBomNew
|
||||||
};
|
};
|
||||||
childrenForAdd.removeAll(childrenForAdd);
|
childrenForAdd.removeAll(childrenForAdd);
|
||||||
mpList.forEach(m -> childrenForAdd.addAll(m.getValue().stream().sorted(Comparator.comparing(sortFn::apply)).collect(Collectors.toList())));
|
mpList.forEach(m -> childrenForAdd.addAll(m.getValue().stream().sorted(Comparator.comparing(sortFn::apply)).collect(Collectors.toList())));
|
||||||
|
//(发货)、(油漆) 对序号重新排序 by 10002327 240909
|
||||||
|
List<String> drawingNoList = childrenForAdd.stream().filter(c -> c.getDrawingNo().contains("(发货)") || c.getDrawingNo().contains("(油漆)"))
|
||||||
|
.map(BomNewEbomChildEntity::getDrawingNo).collect(Collectors.toList());
|
||||||
|
childrenForAdd.forEach(c -> {
|
||||||
|
if(c.getDrawingNo().contains("(发货)") || c.getDrawingNo().contains("(油漆)")){
|
||||||
|
c.setOrderNumber(StrUtil.padPre(String.valueOf(drawingNoList.indexOf(c.getDrawingNo()) + 1),3,"0"));
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
|
@ -318,6 +325,14 @@ public class BomNewEbomGenerateVirtualPackageServiceFor31Impl implements IBomNew
|
||||||
newDrawingNo = buildDrawingNo(root.getDrawingNo(), child.getMaterialName(), child.getDrawingNo(), VirtualPackageTypeEnum.MAKING_PACKAGE, true);
|
newDrawingNo = buildDrawingNo(root.getDrawingNo(), child.getMaterialName(), child.getDrawingNo(), VirtualPackageTypeEnum.MAKING_PACKAGE, true);
|
||||||
BomNewEbomParentEntity zp = updateParentVirtualPackage(oldDrawingNo, newDrawingNo);
|
BomNewEbomParentEntity zp = updateParentVirtualPackage(oldDrawingNo, newDrawingNo);
|
||||||
updateChildVirtualPackage(fp.getRowId(), oldDrawingNo, newDrawingNo);
|
updateChildVirtualPackage(fp.getRowId(), oldDrawingNo, newDrawingNo);
|
||||||
|
|
||||||
|
//处理发货前装配 by 10002327 240909
|
||||||
|
oldDrawingNo = buildDrawingNo(root.getDrawingNo(), child.getMaterialName(), child.getDrawingNo(), VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE, false);
|
||||||
|
newDrawingNo = buildDrawingNo(root.getDrawingNo(), child.getMaterialName(), child.getDrawingNo(), VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE, true);
|
||||||
|
updateParentVirtualPackage(oldDrawingNo, newDrawingNo);
|
||||||
|
updateChildVirtualPackage(fp.getRowId(), oldDrawingNo, newDrawingNo);
|
||||||
|
|
||||||
|
|
||||||
//挂载物料
|
//挂载物料
|
||||||
child.setParentRowId(zp.getRowId());
|
child.setParentRowId(zp.getRowId());
|
||||||
child.setModifyTime(LocalDateTime.now());
|
child.setModifyTime(LocalDateTime.now());
|
||||||
|
|
@ -430,6 +445,12 @@ public class BomNewEbomGenerateVirtualPackageServiceFor31Impl implements IBomNew
|
||||||
newDrawingNo = buildDrawingNo(root.getDrawingNo(), child.getMaterialName(), child.getDrawingNo(), VirtualPackageTypeEnum.MAKING_PACKAGE, false);
|
newDrawingNo = buildDrawingNo(root.getDrawingNo(), child.getMaterialName(), child.getDrawingNo(), VirtualPackageTypeEnum.MAKING_PACKAGE, false);
|
||||||
BomNewEbomParentEntity zp = updateParentVirtualPackage(oldDrawingNo, newDrawingNo);
|
BomNewEbomParentEntity zp = updateParentVirtualPackage(oldDrawingNo, newDrawingNo);
|
||||||
updateChildVirtualPackage(fp.getRowId(), oldDrawingNo, newDrawingNo);
|
updateChildVirtualPackage(fp.getRowId(), oldDrawingNo, newDrawingNo);
|
||||||
|
//处理发货前装配 by 10002327 240909
|
||||||
|
oldDrawingNo = buildDrawingNo(root.getDrawingNo(), child.getMaterialName(), child.getDrawingNo(), VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE, true);
|
||||||
|
newDrawingNo = buildDrawingNo(root.getDrawingNo(), child.getMaterialName(), child.getDrawingNo(), VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE, false);
|
||||||
|
updateParentVirtualPackage(oldDrawingNo, newDrawingNo);
|
||||||
|
updateChildVirtualPackage(fp.getRowId(), oldDrawingNo, newDrawingNo);
|
||||||
|
|
||||||
//挂载物料
|
//挂载物料
|
||||||
child.setParentRowId(zp.getRowId());
|
child.setParentRowId(zp.getRowId());
|
||||||
child.setModifyTime(LocalDateTime.now());
|
child.setModifyTime(LocalDateTime.now());
|
||||||
|
|
@ -479,6 +500,11 @@ public class BomNewEbomGenerateVirtualPackageServiceFor31Impl implements IBomNew
|
||||||
//直发包
|
//直发包
|
||||||
BomNewEbomChildEntity xc3 = buildVirtualPackage(true, xp1.getRowId(), root, child.getMaterialName(), child.getDrawingNo(), VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE, "001");
|
BomNewEbomChildEntity xc3 = buildVirtualPackage(true, xp1.getRowId(), root, child.getMaterialName(), child.getDrawingNo(), VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE, "001");
|
||||||
buildVirtualPackage(xp1, xc3);
|
buildVirtualPackage(xp1, xc3);
|
||||||
|
|
||||||
|
//仙桃工厂增加 装配包与制作包平级 1020工厂 by 10002327 240909
|
||||||
|
BomNewEbomChildEntity xc4 = buildVirtualPackage(true, xp1.getRowId(), root, child.getMaterialName(), child.getDrawingNo(), VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE, "003");
|
||||||
|
buildVirtualPackage(xp1, xc4);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void selectedAll(BomNewEbomParentEntity root, BomNewEbomChildEntity child, ChildListForGenerateVirtualPackageVO old) {
|
private void selectedAll(BomNewEbomParentEntity root, BomNewEbomChildEntity child, ChildListForGenerateVirtualPackageVO old) {
|
||||||
|
|
|
||||||
|
|
@ -1963,4 +1963,46 @@ public class BomNewPbomParentService extends ServiceImpl<BomNewPbomParentMapper,
|
||||||
this.getBaseMapper().delPBomParent(bomRowIds);
|
this.getBaseMapper().delPBomParent(bomRowIds);
|
||||||
this.getBaseMapper().delPBomChild(bomRowIds);
|
this.getBaseMapper().delPBomChild(bomRowIds);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* BOM完整性检查 版本号为A-1的
|
||||||
|
* @param bomRowId
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public List<String> checkBomExist(Long bomRowId, Integer type){
|
||||||
|
List<String> rList = Lists.newArrayList();
|
||||||
|
|
||||||
|
BomNewPbomParentEntity parent = this.getById(bomRowId);
|
||||||
|
VUtils.isTure(parent == null).throwMessage("该BOM不存在:" + bomRowId);
|
||||||
|
|
||||||
|
checkChild(rList,parent,type,1,parent.getMaterialNo());
|
||||||
|
return rList;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void checkChild(List<String> rList,BomNewPbomParentEntity parent, Integer type,int currLevel,String currNos){
|
||||||
|
List<BomNewPbomParentVO> cList = getChild(parent,type);
|
||||||
|
List<Long> bomRowIdList = cList.stream().filter(c -> c.getBomRowId() > 0).map(BomNewPbomParentVO::getBomRowId).distinct().collect(Collectors.toList());
|
||||||
|
List<BomNewPbomParentEntity> pList = Lists.newArrayList();
|
||||||
|
Map<Long,BomNewPbomParentEntity> pMap = Maps.newHashMap();
|
||||||
|
//bomRowId不为空或0 表示还有下一级需要展开递归
|
||||||
|
if(!bomRowIdList.isEmpty()){
|
||||||
|
pList = this.listByIds(bomRowIdList);
|
||||||
|
pMap = pList.stream().collect(Collectors.toMap(BomNewPbomParentEntity::getRowId,Function.identity()));
|
||||||
|
}
|
||||||
|
Map<Long, BomNewPbomParentEntity> finalPMap = pMap;
|
||||||
|
AtomicInteger finalCurrLevel = new AtomicInteger(currLevel);
|
||||||
|
cList.forEach(c -> {
|
||||||
|
if(StrUtil.equalsIgnoreCase(OriginalConstant.NO_BOM_VERSION,c.getCurrentVersion())){
|
||||||
|
rList.add(currNos + " > " + c.getMaterialNo());
|
||||||
|
}
|
||||||
|
//不为空则进行递归 currLevel < 200 不再递归判断为死循环
|
||||||
|
if(finalPMap.get(c.getBomRowId()) != null && currLevel < 200){
|
||||||
|
finalCurrLevel.getAndIncrement();
|
||||||
|
checkChild(rList,finalPMap.get(c.getBomRowId()), finalCurrLevel.get(),type,currNos + " > " + finalPMap.get(c.getBomRowId()).getMaterialNo());
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue