pbom-版本处理

This commit is contained in:
luolm 2024-09-17 22:07:35 +08:00
parent 4f26f1425f
commit f115ca8236
10 changed files with 46 additions and 13 deletions

View File

@ -116,6 +116,10 @@ public class BomNewEbomChildEntity implements Serializable {
@ApiModelProperty(value = "数量")
private BigDecimal num;
public BigDecimal getNum() {
return num==null?null:num.stripTrailingZeros();
}
/**
* 总重
*/

View File

@ -374,6 +374,10 @@ public class BomNewPbomParentEntity implements Serializable {
@ApiModelProperty(value = "来源状态1-EBOM导入、2-PBOM创建、3-E->P修改")
private Integer sourceStatus;
@TableField(value = "ebom_version")
@ApiModelProperty(value = "ebom-发布后的版本")
private String ebomVersion;
private static final long serialVersionUID = -31999878274445137L;
}

View File

@ -375,6 +375,9 @@ public class BomNewEbomParentVO extends BaseMaterialVO implements Serializable {
return MyStrUtil.joinStr(getMaterialNo(),getNum());
}
@ApiModelProperty("ebom发布后的版本")
private String ebomVersion="";
private static final long serialVersionUID = 1L;
@Override

View File

@ -344,6 +344,9 @@ public class BomNewPbomParentVO extends BaseMaterialVO implements Serializable {
//发布PBOM 对比Pbom已发布版是否一致一致则不转PBOM正式直接删除PBOM 草稿数据
private Integer delIs=0;
@ApiModelProperty(value = "ebom-发布后的版本")
private String ebomVersion;
private static final long serialVersionUID = 1L;
@Override

View File

@ -1197,7 +1197,7 @@ public class BomNewPbomParentService extends ServiceImpl<BomNewPbomParentMapper,
.ge(BomNewPbomParentEntity::getStatus,PBomStatusEnum.PUBLISH.getValue())
.eq(BomNewPbomParentEntity::getFacCode, newPBom.getFacCode()).last(" order by current_version desc limit 1").one();
if(Objects.isNull(oldParent)){
newPBom.setCurrentVersion(VersionUtil.getNextVersion(""));
// newPBom.setCurrentVersion(VersionUtil.getNextVersion(""));
continue;
}
//旧bom除T项之外
@ -1207,7 +1207,8 @@ public class BomNewPbomParentService extends ServiceImpl<BomNewPbomParentMapper,
List<BomNewPbomParentVO> newChildren = this.getBaseMapper().getParentChild(newPBom.getBomRowId());
List<BomNewPbomParentVO> newBomNoTChildren = newChildren.stream().filter(u -> !EBomConstant.PROJECT_TYPE_T.equalsIgnoreCase(u.getProjectType())).collect(Collectors.toList());
if(oldBomNoTChildren.size()!=newBomNoTChildren.size()){
newPBom.setCurrentVersion(VersionUtil.getNextVersion(oldParent.getCurrentVersion()));
// newPBom.setCurrentVersion(VersionUtil.getNextVersion(oldParent.getCurrentVersion()));
continue;
}
Set<String> oldChildSet = oldBomNoTChildren.stream().map(u -> u.getMaterialNoAndNum()).collect(Collectors.toSet());
@ -1246,12 +1247,12 @@ public class BomNewPbomParentService extends ServiceImpl<BomNewPbomParentMapper,
}
}
}
else if(oldChildSet.equals(newChildSet)){
newPBom.setCurrentVersion( VersionUtil.getNextVersionForSmallVersion(oldParent.getCurrentVersion()));
}
else {
newPBom.setCurrentVersion(VersionUtil.getNextVersion(oldParent.getCurrentVersion()));
}
// else if(oldChildSet.equals(newChildSet)){
// newPBom.setCurrentVersion( VersionUtil.getNextVersionForSmallVersion(oldParent.getCurrentVersion()));
// }
// else {
// newPBom.setCurrentVersion(VersionUtil.getNextVersion(oldParent.getCurrentVersion()));
// }
}
}

View File

@ -19,6 +19,7 @@ import com.nflg.product.bomnew.pojo.vo.BaseMaterialVO;
import com.nflg.product.bomnew.pojo.vo.BomNewEbomParentVO;
import com.nflg.product.bomnew.pojo.vo.BomNewPbomParentVO;
import com.nflg.product.bomnew.service.*;
import com.nflg.product.bomnew.util.MyStrUtil;
import com.nflg.product.bomnew.util.VUtils;
import com.nflg.product.bomnew.util.VersionUtil;
import io.swagger.annotations.ApiModelProperty;
@ -197,6 +198,10 @@ public abstract class EBomToPbomBase {
oldParent.setCreatedBy(SessionUtil.getUserCode());
oldParent.setDeptName(SessionUtil.getDepartName());
oldParent.setDeptRowId(SessionUtil.getDepartRowId());
oldParent.setEbomVersion(parentVo.getEbomVersion());
if(StrUtil.isNotBlank(parentVo.getEbomVersion())){
oldParent.setCurrentVersion(parentVo.getEbomVersion());
}
this.pBomParentResult.add(oldParent);
return oldParent;
}
@ -208,7 +213,7 @@ public abstract class EBomToPbomBase {
return null;
} else { //pbom-处于正式表
return buildParentEntity(parentVo, facCode, oldParent, VersionUtil.getNextVersionForSmallVersion(oldParent.getCurrentVersion()));
return buildParentEntity(parentVo, facCode, oldParent, VersionUtil.getPBomUpgradNextVersion(oldParent.getCurrentVersion()));
}
@ -334,6 +339,11 @@ public abstract class EBomToPbomBase {
pBomParent.setCreatedBy(SessionUtil.getUserCode());
pBomParent.setSource(PbomSourceEnum.FROM_EBOM.getValue());
pBomParent.setSourceStatus(PbomSourceStatusEnum.EBOM.getValue());
pBomParent.setEbomVersion(parentVo.getEbomVersion());
if(StrUtil.isNotBlank(parentVo.getEbomVersion()) ){
pBomParent.setCurrentVersion(parentVo.getEbomVersion());
}
if (Objects.nonNull(oldParent)) {
oldParent.setExpireEndTime(LocalDateTime.now());
oldParent.setLastVersionIs(0);
@ -780,7 +790,7 @@ public abstract class EBomToPbomBase {
}
Map<String, List<BomNewEbomChildEntity>> oldChildMap = oldChildList.stream().collect(Collectors.groupingBy(u -> StrUtil.join("", u.getMaterialNo(), u.getProjectType(), u.getNum())));
for (BomNewEbomParentVO newChild : newChildList) {
String key = StrUtil.join("", newChild.getMaterialNo(), newChild.getProjectType(), newChild.getNum());
String key = MyStrUtil.joinStr(newChild.getMaterialNo(), newChild.getProjectType(), newChild.getNum());
if (!oldChildMap.containsKey(key)) {
return false;
}
@ -833,17 +843,20 @@ public abstract class EBomToPbomBase {
} else if (isSameEBomV2FormMaterialNoAndNum(oldParentChild, newParentChild)) {
parentBom.setCurrentVersion(VersionUtil.getNextVersionForSmallVersion(oldEBom.getCurrentVersion()));
parentBom.setHasChangeState(2);
parentBom.setEbomVersion(parentBom.getCurrentVersion());
delOldEBom.add(oldEBom.getRowId());
addEBomNew.add(parentBom.getBomRowId());
} else {
parentBom.setCurrentVersion(VersionUtil.getNextVersion(oldEBom.getCurrentVersion()));
parentBom.setHasChangeState(2);
parentBom.setEbomVersion(parentBom.getCurrentVersion());
delOldEBom.add(oldEBom.getRowId());
addEBomNew.add(parentBom.getBomRowId());
}
}
else {
parentBom.setEbomVersion(VersionUtil.getNextVersion(""));
addEBomNew.add(parentBom.getBomRowId());
}
}

View File

@ -211,7 +211,7 @@ public abstract class FormalEBomToPbomBase {
return null;
} else { //pbom-处于正式表(全部生成小版本)
return buildParentEntity(parentVo, facCode, oldParent, VersionUtil.getNextVersionForSmallVersion(oldParent.getCurrentVersion()));
return buildParentEntity(parentVo, facCode, oldParent, VersionUtil.getPBomUpgradNextVersion(oldParent.getCurrentVersion()));
}

View File

@ -92,6 +92,7 @@ public class PBomDetailTask extends RecursiveTask<List<BomNewPbomParentVO>> {
detailVO.setBomExist(ebomParentEntity.getBomExist());
detailVO.setShouldBomExist(ebomParentEntity.getShouldBomExist());
detailVO.setVirtualPackageIs(ebomParentEntity.getVirtualPackageIs());
detailVO.setEbomVersion(ebomParentEntity.getEbomVersion());
} else {
BomNewPbomParentEntity parent = SpringUtil.getBean(BomNewPbomParentService.class).lambdaQuery().eq(BomNewPbomParentEntity::getRowId, detailVO.getParentRowId()).one();
detailVO.setDeviseUserCode(parent.getDeviseUserCode());

View File

@ -175,7 +175,10 @@ public class VersionUtil {
char lastChar = version.charAt(version.length() - 1);
boolean isLetter = Character.isLetter(lastChar);
if (!isLetter) {
return version + ".a";
if(version.contains(".")){
return version + "a";
}
return version + ".0a";
} else {
int lastCharIndex = version.length() - 1;
char newLastChar = (char) (lastChar + 1);

View File

@ -48,6 +48,7 @@
<result column="notice_nums" property="noticeNums" jdbcType="VARCHAR"/>
<result column="order_no" property="orderNo" jdbcType="VARCHAR"/>
<result column="modify_time" property="modifyTime" jdbcType="TIMESTAMP"/>
<result column="ebom_version" property="ebomVersion" jdbcType="VARCHAR"/>
</resultMap>
<sql id="Base_Column_List">
@ -57,7 +58,7 @@
should_bom_exist, super_material_status, bom_exist, last_version_is, edit_status, status, user_root_is,
virtual_package_is, source_row_id, devise_user_code, devise_name,technology_user_code,technology_user_name, created_by, created_time, created_job,
release_time, release_user_name,last_convert_mbom_user_name,last_convert_mbom_time, expire_end_time, remark, dept_name, level_num, change_desc, notice_nums,
order_no, modify_time
order_no, modify_time,ebom_version
</sql>
<sql id="whr">