Merge remote-tracking branch 'origin/master-xiantao5-lhj0905'

This commit is contained in:
10001392 2024-09-18 11:10:50 +08:00
commit aeb0bf8522
4 changed files with 86 additions and 10 deletions

View File

@ -98,12 +98,13 @@ public class DQBomApi extends BaseApi {
@PostMapping("getPageList")
@ApiOperation("分页查询数据")
public ResultVO<Page<BomNewDQbomVO>> getPageList(@Valid @RequestBody @NotNull BomNewDQbomPageQuery query) {
if (query.getStatus() == 2) {
if (StrUtil.isBlank(query.getStartDate()) && StrUtil.isBlank(query.getEndDate())) {
query.setStartDate(LocalDateTimeUtil.format(LocalDateTime.now().plusDays(-2), "yyyy-MM-dd"));
query.setEndDate(LocalDateTimeUtil.format(LocalDateTime.now().plusDays(1), "yyyy-MM-dd"));
}
}
// 电气BOM正式表查询无须添加时间条件 by 10002327 240918
// if (query.getStatus() == 2) {
// if (StrUtil.isBlank(query.getStartDate()) && StrUtil.isBlank(query.getEndDate())) {
// query.setStartDate(LocalDateTimeUtil.format(LocalDateTime.now().plusDays(-2), "yyyy-MM-dd"));
// query.setEndDate(LocalDateTimeUtil.format(LocalDateTime.now().plusDays(1), "yyyy-MM-dd"));
// }
// }
return ResultVO.success(dQBomService.getPageList(query));
}

View File

@ -431,5 +431,12 @@ public class PBomApi extends BaseApi {
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));
}
}

View File

@ -6,8 +6,6 @@ import cn.hutool.core.util.StrUtil;
import cn.hutool.extra.spring.SpringUtil;
import com.alibaba.fastjson.JSON;
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.exception.NflgBusinessException;
import com.nflg.product.bomnew.client.MaterialMainClient;
@ -39,6 +37,7 @@ import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.*;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.function.Function;
import java.util.stream.Collectors;
@ -200,8 +199,8 @@ public class BomNewEbomGenerateVirtualPackageServiceFor31Impl implements IBomNew
}));
//对map的值进行排序
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("")
.compareTo(Optional.of(c2).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(m -> String.format("%s%s",m.getOrderNumber(),m.getDrawingNo().contains("仙桃)")?"2":"1")).orElse(""))));
//对map值的集合按照 按发货-直发-制作的顺序排序
Function<BomNewEbomChildEntity,String> sortFn = (ent) -> {
String num = "1";
@ -222,6 +221,14 @@ public class BomNewEbomGenerateVirtualPackageServiceFor31Impl implements IBomNew
};
childrenForAdd.removeAll(childrenForAdd);
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 {
@ -318,6 +325,14 @@ public class BomNewEbomGenerateVirtualPackageServiceFor31Impl implements IBomNew
newDrawingNo = buildDrawingNo(root.getDrawingNo(), child.getMaterialName(), child.getDrawingNo(), VirtualPackageTypeEnum.MAKING_PACKAGE, true);
BomNewEbomParentEntity zp = updateParentVirtualPackage(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.setModifyTime(LocalDateTime.now());
@ -430,6 +445,12 @@ public class BomNewEbomGenerateVirtualPackageServiceFor31Impl implements IBomNew
newDrawingNo = buildDrawingNo(root.getDrawingNo(), child.getMaterialName(), child.getDrawingNo(), VirtualPackageTypeEnum.MAKING_PACKAGE, false);
BomNewEbomParentEntity zp = updateParentVirtualPackage(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.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");
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) {

View File

@ -1963,4 +1963,46 @@ public class BomNewPbomParentService extends ServiceImpl<BomNewPbomParentMapper,
this.getBaseMapper().delPBomParent(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()),type, finalCurrLevel.get(),currNos + " > " + finalPMap.get(c.getBomRowId()).getMaterialNo());
}
});
}
}