Merge branch 'feature/DM/nflg-bom' of http://112.74.186.154:3000/nflj/nflg_project into feature/DM/nflg-bom
This commit is contained in:
commit
b6cd238c50
|
|
@ -3,6 +3,7 @@ package com.nflg;
|
|||
import org.springframework.boot.SpringApplication;
|
||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
|
||||
import org.springframework.cloud.openfeign.EnableFeignClients;
|
||||
import org.springframework.context.ConfigurableApplicationContext;
|
||||
import org.springframework.context.annotation.ComponentScan;
|
||||
import org.springframework.scheduling.annotation.EnableScheduling;
|
||||
|
|
@ -18,6 +19,7 @@ import java.util.TimeZone;
|
|||
@EnableOpenApi
|
||||
@EnableDiscoveryClient
|
||||
@EnableScheduling
|
||||
@EnableFeignClients
|
||||
public class BomnewApplication {
|
||||
|
||||
public static void main(String[] args) {
|
||||
|
|
|
|||
|
|
@ -19,6 +19,8 @@ import io.swagger.annotations.ApiOperation;
|
|||
import nflg.product.common.constant.STATE;
|
||||
import nflg.product.common.vo.ResultVO;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.transaction.support.TransactionSynchronizationAdapter;
|
||||
import org.springframework.transaction.support.TransactionSynchronizationManager;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
import org.ttzero.excel.entity.ListMapSheet;
|
||||
|
|
@ -135,8 +137,13 @@ public class OriginalBomApi extends BaseApi {
|
|||
return ResultVO.error("请上传Excel文件");
|
||||
}
|
||||
originalParentService.importBom(file);
|
||||
TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronizationAdapter() {
|
||||
@Override
|
||||
public void afterCommit() {
|
||||
originalParentService.computeLevelNumAndRootState();
|
||||
}
|
||||
});
|
||||
|
||||
originalParentService.computeLevelNumAndRootState();
|
||||
return ResultVO.success(true);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ import org.springframework.cloud.openfeign.FeignClient;
|
|||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
|
||||
@FeignClient(value = "service-material")
|
||||
@FeignClient(value = "material")
|
||||
public interface MaterialMainClient {
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -2,6 +2,9 @@ package com.nflg.product.bomnew.mapper.master;
|
|||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.nflg.product.bomnew.pojo.entity.BomNewOriginalChildEntity;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* t_bom_new_original_child 表数据库访问层
|
||||
|
|
@ -11,4 +14,7 @@ import com.nflg.product.bomnew.pojo.entity.BomNewOriginalChildEntity;
|
|||
* @since 2023-11-09 09:25:02
|
||||
*/
|
||||
public interface BomNewOriginalChildMapper extends BaseMapper<BomNewOriginalChildEntity> {
|
||||
|
||||
|
||||
void delOriginalChildNotInRowIds(@Param("rowIds")List<Long> rowIds);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -49,4 +49,7 @@ public class BaseMaterialVO {
|
|||
*/
|
||||
@ApiModelProperty(value = "材料")
|
||||
private String material;
|
||||
|
||||
@ApiModelProperty("材质")
|
||||
private String materialTexture;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -85,11 +85,7 @@ public class BomNewEbomParentVO extends BaseMaterialVO implements Serializable {
|
|||
@ApiModelProperty(value = "是否最新版 0-否 1-是")
|
||||
private Integer lastVersionIs;
|
||||
|
||||
/**
|
||||
* 材质
|
||||
*/
|
||||
@ApiModelProperty(value = "材质")
|
||||
private String materialTexture;
|
||||
|
||||
|
||||
/**
|
||||
* 单重
|
||||
|
|
|
|||
|
|
@ -112,7 +112,7 @@ public class BomOriginalListVO extends BaseMaterialVO {
|
|||
/**
|
||||
* 状态 1=待转换、2=已转换、3=借用件
|
||||
*/
|
||||
@ApiModelProperty(value = "状态 1=待转换、2=已转换、3=借用件")
|
||||
@ApiModelProperty(value = "状态 1=待转换、2=已转换、3=借用件,4=引用件")
|
||||
private Integer status;
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -41,6 +41,7 @@ import java.util.concurrent.ExecutionException;
|
|||
import java.util.concurrent.ForkJoinPool;
|
||||
import java.util.concurrent.ForkJoinTask;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
|
||||
/**
|
||||
|
|
@ -106,8 +107,8 @@ public class BomNewOriginalParentService extends ServiceImpl<BomNewOriginalParen
|
|||
|
||||
if (CollUtil.isNotEmpty(childEntities)) {
|
||||
//删除行
|
||||
List<Long> delRowIds = bom.getBomList().stream().filter(u -> u.getDelIs().equals(1)).map(u -> u.getRowId()).collect(Collectors.toList());
|
||||
originalChildService.getBaseMapper().deleteBatchIds(delRowIds);
|
||||
List<Long> delRowIds = bom.getBomList().stream().map(u->u.getRowId()).collect(Collectors.toList());
|
||||
originalChildService.getBaseMapper().delOriginalChildNotInRowIds(delRowIds);
|
||||
originalChildService.saveOrUpdateBatch(childEntities);
|
||||
}
|
||||
return true;
|
||||
|
|
@ -160,15 +161,15 @@ public class BomNewOriginalParentService extends ServiceImpl<BomNewOriginalParen
|
|||
child.setLevelNum(parentEntity.getLevelNum());
|
||||
child.setDeptName(parentEntity.getDeptName());
|
||||
child.setSource(parentEntity.getSource());
|
||||
if(child.equals(OriginalStatusEnum.OVER_CONVERT)){
|
||||
if(parentEntity.getStatus().equals(OriginalStatusEnum.OVER_CONVERT)){
|
||||
child.setStatus(OriginalStatusEnum.BORROWED_PARTS.getValue());
|
||||
}
|
||||
//非本人则为借用件
|
||||
if (child.getCreatedBy().equals(SessionUtil.getUserCode()) && OriginalStatusEnum.UN_CONVERT.equalsValue(parentEntity.getStatus())) {
|
||||
if (!parentEntity.getCreatedBy().equals(child.getCreatedBy()) && OriginalStatusEnum.UN_CONVERT.equalsValue(parentEntity.getStatus())) {
|
||||
child.setStatus(OriginalStatusEnum.REFERENCE.getValue());
|
||||
}
|
||||
} else { //无BOM-版本时 确定版本号
|
||||
child.setStatus(OriginalStatusEnum.UN_CONVERT.getValue());
|
||||
child.setStatus(parent.getStatus());
|
||||
child.setSource(Objects.nonNull(parent) ? parent.getSource() : OriginalSourceEnum.CAD_IMPORT.getValue());
|
||||
child.setDeviseUserCode(parent.getDeviseUserCode());
|
||||
child.setDeviseName(parent.getDeviseName());
|
||||
|
|
@ -206,6 +207,7 @@ public class BomNewOriginalParentService extends ServiceImpl<BomNewOriginalParen
|
|||
*/
|
||||
private List<BomOriginalListVO> getBomTree(Long rowId) throws ExecutionException, InterruptedException {
|
||||
List<BomOriginalListVO> bomDetail = this.getBaseMapper().getParentChild(rowId);
|
||||
BomNewOriginalParentEntity parentEntity = this.getBaseMapper().selectById(rowId);
|
||||
OriginalBomDetailTask detailTask = new OriginalBomDetailTask(bomDetail);
|
||||
ForkJoinTask<List<BomOriginalListVO>> submit = bomDetailPool.submit(detailTask);
|
||||
|
||||
|
|
@ -301,9 +303,12 @@ public class BomNewOriginalParentService extends ServiceImpl<BomNewOriginalParen
|
|||
VUtils.isTure(Objects.isNull(parentEntity)).throwMessage("该节点不存在,请检查参数是否正确");
|
||||
VUtils.isTure(!parentEntity.getCreatedBy().equals(SessionUtil.getUserCode())).throwMessage("该节点不属于你,你无权删除");
|
||||
List<BomOriginalListVO> bomTree = getBomTree(bomRowId);
|
||||
|
||||
|
||||
List<Long> delParentRowId = bomTree.stream().filter(u -> u.getCreatedBy().equals(SessionUtil.getUserCode()) && OriginalStatusEnum.UN_CONVERT.equalsValue(u.getStatus())).map(u -> u.getParentRowId()).collect(Collectors.toList());
|
||||
//需删除的BOM
|
||||
List<BomOriginalListVO> delBom = bomTree.stream().filter(u -> u.getBomRowId() > 0 && OriginalStatusEnum.UN_CONVERT.equalsValue(u.getStatus())).collect(Collectors.toList());
|
||||
List<Long> delParentRowId=new ArrayList<>();
|
||||
for ( BomOriginalListVO bom: delBom) {
|
||||
delParentRowId.add(bom.getBomRowId());
|
||||
}
|
||||
delParentRowId.add(bomRowId);
|
||||
if (CollUtil.isNotEmpty(delParentRowId)) {
|
||||
this.getBaseMapper().delBatch(delParentRowId);
|
||||
|
|
|
|||
|
|
@ -122,7 +122,7 @@ public abstract class BaseConvert {
|
|||
parentEntity.setStatus(OriginalStatusEnum.UN_CONVERT.getValue());
|
||||
parentEntity.setEditStatus(OriginalEditStatusEnum.HANDLER_CREATED.getValue());
|
||||
parentEntity.setDeptRowId(SessionUtil.getPartRowId());
|
||||
parentEntity.setDeptName(SessionUtil.getSecondFullDeptName());
|
||||
parentEntity.setDeptName(SessionUtil.getDepartName());
|
||||
|
||||
parentEntity.setSource(originalSourceEnum.getValue());
|
||||
parentEntity.setCreatedBy(material.getCreatedBy());
|
||||
|
|
|
|||
|
|
@ -4,6 +4,8 @@ import cn.hutool.core.collection.CollUtil;
|
|||
import cn.hutool.core.util.StrUtil;
|
||||
import cn.hutool.extra.spring.SpringUtil;
|
||||
import com.google.common.collect.ImmutableList;
|
||||
import com.nflg.product.base.core.conmon.util.SessionUtil;
|
||||
import com.nflg.product.bomnew.constant.OriginalStatusEnum;
|
||||
import com.nflg.product.bomnew.pojo.entity.BomNewOriginalParentEntity;
|
||||
import com.nflg.product.bomnew.pojo.vo.BomOriginalListVO;
|
||||
import com.nflg.product.bomnew.service.BomNewOriginalParentService;
|
||||
|
|
@ -59,6 +61,14 @@ public class OriginalBomDetailTask extends RecursiveTask<List<BomOriginalListVO>
|
|||
detailVO.setChildBomRowId(bomNewOriginalParentEntity.getRowId());
|
||||
detailVO.setBomRowId(bomNewOriginalParentEntity.getRowId());
|
||||
|
||||
if(bomNewOriginalParentEntity.getStatus().equals(OriginalStatusEnum.OVER_CONVERT)){
|
||||
detailVO.setStatus(OriginalStatusEnum.BORROWED_PARTS.getValue());
|
||||
}
|
||||
//非本人则为借用件
|
||||
if (!bomNewOriginalParentEntity.getCreatedBy().equals(detailVO.getCreatedBy()) && OriginalStatusEnum.UN_CONVERT.equalsValue(bomNewOriginalParentEntity.getStatus())) {
|
||||
detailVO.setStatus(OriginalStatusEnum.REFERENCE.getValue());
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -82,7 +92,8 @@ public class OriginalBomDetailTask extends RecursiveTask<List<BomOriginalListVO>
|
|||
result.addAll(bomDetail);
|
||||
|
||||
if (CollUtil.isNotEmpty(bomDetail)) {
|
||||
levelNumAdd();
|
||||
List<BomOriginalListVO> collect = bomDetail.stream().filter(u -> u.getStatus().equals(1)).collect(Collectors.toList());
|
||||
levelNumAdd(collect.size());
|
||||
List<Long> childBowIds = bomDetail.stream().filter(u-> u.getChildBomRowId()!=null && u.getChildBomRowId() > 0).map(u->u.getChildBomRowId()).collect(Collectors.toList());
|
||||
if(CollUtil.isNotEmpty(childBowIds)) {
|
||||
List<BomOriginalListVO> bom = SpringUtil.getBean(BomNewOriginalParentService.class).getBaseMapper().getParentChildBatch(childBowIds);
|
||||
|
|
@ -99,7 +110,7 @@ public class OriginalBomDetailTask extends RecursiveTask<List<BomOriginalListVO>
|
|||
|
||||
}
|
||||
|
||||
public synchronized void levelNumAdd(){
|
||||
levelNum++;
|
||||
public synchronized void levelNumAdd(Integer num){
|
||||
levelNum=levelNum+num;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -62,7 +62,7 @@ public class OriginalBomToEBomConvert extends BaseConvert {
|
|||
}
|
||||
|
||||
public void convert() {
|
||||
checkData();
|
||||
// checkData();
|
||||
|
||||
SpringUtil.getBean(MaterialMainService.class).intiMaterialInfo(ImmutableList.of(parent));
|
||||
SpringUtil.getBean(MaterialMainService.class).intiMaterialInfo(bomDetail);
|
||||
|
|
|
|||
|
|
@ -131,10 +131,20 @@ public class PlmBomToOriginalConvert extends BaseConvert {
|
|||
{
|
||||
BomNewOriginalParentEntity oBOM =getOriginalBomForMaterial(parent.getChartNo());
|
||||
if(Objects.isNull(oBOM)){
|
||||
BomNewOriginalParentEntity parentEntity = buildParentEntity(parent,"",originalSourceEnum);
|
||||
|
||||
if (StrUtil.isNotBlank(parent.getMaterialCategoryCode()) && parent.getMaterialCategoryCode().equals(OriginalConstant.COMMON_MATERIAL_CATEGORY_CODE) && CollUtil.isEmpty(childs)) {
|
||||
handlerCommonMaterial(parentEntity);
|
||||
// 一般零部件
|
||||
if(StrUtil.isNotBlank(parent.getMaterialCategoryCode()) && parent.getMaterialCategoryCode().equals(OriginalConstant.COMMON_MATERIAL_CATEGORY_CODE) && CollUtil.isEmpty(childs)) {
|
||||
// 有物料编码,则通过规则匹配物料作为下级
|
||||
if (StrUtil.isNotBlank(parent.getMaterialNo())) {
|
||||
BomNewOriginalParentEntity parentEntity = buildParentEntity(parent, "", originalSourceEnum);
|
||||
handlerCommonMaterial(parentEntity);
|
||||
}
|
||||
else { //无物料编码,则通过规则找物料 ,找到则替换,未找到则直接进库。ebom 再处理
|
||||
handlerCommonMaterialForReplace(parent);
|
||||
BomNewOriginalParentEntity parentEntity = buildParentEntity(parent, "", originalSourceEnum);
|
||||
}
|
||||
}
|
||||
else {
|
||||
BomNewOriginalParentEntity parentEntity = buildParentEntity(parent, "", originalSourceEnum);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -149,10 +159,14 @@ public class PlmBomToOriginalConvert extends BaseConvert {
|
|||
//通过规则- 获取子级物料
|
||||
BomNewOriginalParentEntity originalBomForMaterial = getOriginalBomForMaterial(childVo.getChartNo());
|
||||
List<BomNewOriginalParentEntity> parentResultOne = this.resultParent.stream().filter(u -> u.getDrawingNo().equals(childVo.getChartNo())).collect(Collectors.toList());
|
||||
if (Objects.isNull(originalBomForMaterial) && CollUtil.isEmpty(parentResultOne) ) {
|
||||
childVo.setCreatedBy(parentEntity.getCreatedBy());
|
||||
BomNewOriginalParentEntity parentEntity1 = buildParentEntity(childVo, "",originalSourceEnum);
|
||||
handlerCommonMaterial(parentEntity1);
|
||||
if(StrUtil.isNotBlank(childVo.getMaterialNo())) {
|
||||
if (Objects.isNull(originalBomForMaterial) && CollUtil.isEmpty(parentResultOne)) {
|
||||
childVo.setCreatedBy(parentEntity.getCreatedBy());
|
||||
BomNewOriginalParentEntity parentEntity1 = buildParentEntity(childVo, "", originalSourceEnum);
|
||||
handlerCommonMaterial(parentEntity1);
|
||||
}
|
||||
}else {
|
||||
handlerCommonMaterialForReplace(childVo);
|
||||
}
|
||||
buildChildEntity(childVo,parentEntity);
|
||||
|
||||
|
|
@ -184,6 +198,27 @@ public class PlmBomToOriginalConvert extends BaseConvert {
|
|||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
private void handlerCommonMaterialForReplace(BomOriginalPlmBomVO parentEntity) {
|
||||
//通过规则获取物料编码
|
||||
MaterialMateVO materialMate = getMaterialByRel(parentEntity);
|
||||
//找到对应物料
|
||||
if (Objects.nonNull(materialMate)) {
|
||||
List<BaseMaterialVO> materialBaseInfo = SpringUtil.getBean(MaterialMainMapper.class).getMaterialBaseInfo(ImmutableList.of(materialMate.getMaterialNo()));
|
||||
if (CollUtil.isNotEmpty(materialBaseInfo)) {
|
||||
//根据物料编码-
|
||||
BaseMaterialVO baseMaterialVO = materialBaseInfo.get(0);
|
||||
parentEntity.setMaterialNo(baseMaterialVO.getMaterialNo());
|
||||
parentEntity.setMaterialName(baseMaterialVO.getMaterialName());
|
||||
parentEntity.setMaterialDesc(baseMaterialVO.getMaterialDesc());
|
||||
parentEntity.setMaterialTexture(baseMaterialVO.getMaterialTexture());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -26,4 +26,11 @@
|
|||
row_id, parent_row_id, order_number, drawing_no, material_no, material_name, material_desc, unit_weight, num, total_weight ,remark,created_by,created_time ,edit_status </sql>
|
||||
|
||||
|
||||
<delete id="delOriginalChildNotInRowIds">
|
||||
delete from t_bom_new_original_child where row_id not in
|
||||
<foreach collection="rowIds" item="rowId" open="(" separator="," close=")">
|
||||
#{rowId}
|
||||
</foreach>
|
||||
</delete>
|
||||
|
||||
</mapper>
|
||||
|
|
|
|||
|
|
@ -71,6 +71,7 @@
|
|||
|
||||
<select id="getMaterialBaseInfo" resultType="com.nflg.product.bomnew.pojo.vo.BaseMaterialVO">
|
||||
select row_id as materialRowId, material_no, material_name, material_desc, procure_type, project_type, material_state,drawing_no,material_category_code ,material_get_type,drawing_no
|
||||
,material_texture as material ,material_texture
|
||||
from t_material_main
|
||||
where material_no in
|
||||
<foreach collection="materialNos" item="item" open="(" close=")" separator=",">
|
||||
|
|
|
|||
Loading…
Reference in New Issue