feat: ebom转pbom时,导入数据到sap,另增加单独导入sap的接口

This commit is contained in:
曹鹏飞 2024-04-25 16:47:14 +08:00
parent 515a72c325
commit 25ea8efdf4
3 changed files with 102 additions and 13 deletions

View File

@ -31,6 +31,8 @@ import org.ttzero.excel.entity.Workbook;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;
import javax.validation.constraints.NotEmpty;
import java.io.IOException;
import java.util.List;
import java.util.Objects;
@ -450,5 +452,15 @@ public class EbomApi extends BaseApi {
return ResultVO.success();
}
/**
* 导入到SAP
* @param rootBomRowIds 顶级bom的rowId
* @return
*/
@PostMapping("importToSAP")
@ApiOperation("导入到SAP")
public ResultVO<Boolean> importToSAP(@Valid @RequestBody @NotEmpty List<Long> rootBomRowIds) {
VUtils.isTure(rootBomRowIds.size() > 1).throwMessage("每次只能导入1条");
return bomNewEbomParentService.importToSAP(rootBomRowIds.get(0));
}
}

View File

@ -1,19 +1,17 @@
package com.nflg.product.bomnew.pojo.entity;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.*;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serializable;
import lombok.Data;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.time.LocalDate;
/**
* t_bom_new_ebom_parent
@ -365,5 +363,19 @@ public class BomNewEbomParentEntity implements Serializable {
@ApiModelProperty(value = "待复核根节点")
private Integer rootIsForWaitReview;
/**
* 导入SAP状态1-未导入3-已导入
*/
@TableField(value = "sap_state")
@ApiModelProperty(value = "导入SAP状态1-未导入3-已导入")
private Integer sapState;
/**
* 导入SAP时间
*/
@TableField(value = "sap_time")
@ApiModelProperty(value = "导入SAP时间")
private LocalDateTime sapTime;
private static final long serialVersionUID = 265246823929418418L;
}

View File

@ -4,11 +4,10 @@ import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.convert.Convert;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.date.LocalDateTimeUtil;
import cn.hutool.core.lang.TypeReference;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.NumberUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.core.util.*;
import cn.hutool.extra.spring.SpringUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
@ -23,6 +22,8 @@ import com.nflg.product.base.core.exception.NflgBusinessException;
import com.nflg.product.bomnew.constant.*;
import com.nflg.product.bomnew.mapper.master.BomNewEbomParentMapper;
import com.nflg.product.bomnew.pojo.dto.*;
import com.nflg.product.bomnew.pojo.dto.sap.impart2.ImportSapParamDTO;
import com.nflg.product.bomnew.pojo.dto.sap.impart2.T1DTO;
import com.nflg.product.bomnew.pojo.entity.*;
import com.nflg.product.bomnew.pojo.query.BomNewEbomMaterialQuery;
import com.nflg.product.bomnew.pojo.query.BomNewEbomParentQuery;
@ -46,6 +47,7 @@ import java.io.OutputStream;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.*;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ForkJoinPool;
import java.util.concurrent.ForkJoinTask;
@ -919,6 +921,69 @@ public class BomNewEbomParentService extends ServiceImpl<BomNewEbomParentMapper,
SpringUtil.getBean(BomNewEbomParentFormalService.class).copyEbomFormal(bomRowId);
CompletableFuture.runAsync(() -> {
importToSAP(bomRowId);
});
}
}
public ResultVO<Boolean> importToSAP(Long bomRowId) {
BomNewEbomParentEntity root = this.getById(bomRowId);
VUtils.isTure(Objects.isNull(root)).throwMessage("数据不存在");
VUtils.isTure(root.getRootIs() != 1).throwMessage("请选择根节点");
ImportSapParamDTO sapDto = new ImportSapParamDTO();
sapDto.setZID(RandomUtil.randomNumbers(5));
sapDto.setI_WERKS(FactoryCodeEnum.FACTORY_1010.getValue());
sapDto.setI_STLAN("2");
String dateYMD = DateUtil.format(new Date(), "yyyyMMdd");
List<T1DTO> t1s = new ArrayList<>();
T1DTO troot = new T1DTO();
troot.setID(RandomUtil.randomNumbers(5));
troot.setMATNR("");
troot.setIDNRK(root.getMaterialNo());
troot.setMEINS(root.getMaterialUnit());
troot.setMENGE("1");
troot.setPOSTP("");
troot.setDATUM(dateYMD);
t1s.add(troot);
buildChildrenForSap(root, t1s);
sapDto.setT1(t1s);
ResultVO<Boolean> resultVO = SpringUtil.getBean(SapOpUtilService.class).importToSapV2(sapDto, null);
if (resultVO.getState().equals(STATE.Success.getState())) {
BomNewEbomParentEntity parentEntity = new BomNewEbomParentEntity();
parentEntity.setRowId(bomRowId);
parentEntity.setSapState(MBomConstantEnum.MBomStatusEnum.PUB_SAP.getValue());
parentEntity.setSapTime(LocalDateTimeUtil.now());
updateById(parentEntity);
}
return resultVO;
}
private void buildChildrenForSap(BomNewEbomParentEntity parent, List<T1DTO> t1s) {
List<BomNewEbomChildEntity> children = ebomChildService.lambdaQuery()
.eq(BomNewEbomChildEntity::getParentRowId, parent.getRowId())
.list();
if (CollUtil.isNotEmpty(children)) {
String dateYMD = DateUtil.format(new Date(), "yyyyMMdd");
children.forEach(c -> {
T1DTO t1 = new T1DTO();
t1.setID(RandomUtil.randomNumbers(5));
t1.setMATNR(parent.getMaterialNo());
t1.setIDNRK(c.getMaterialNo());
t1.setMEINS(c.getMaterialUnit());
t1.setMENGE(c.getNum().toString());
t1.setPOSTP(c.getProjectType());
t1.setDATUM(dateYMD);
t1s.add(t1);
BomNewEbomParentEntity cp = lambdaQuery()
.eq(BomNewEbomParentEntity::getMaterialNo, c.getMaterialNo())
.eq(BomNewEbomParentEntity::getStatus, EBomStatusEnum.PUBLISHED.getValue())
.one();
if (!Objects.isNull(cp)) {
buildChildrenForSap(cp, t1s);
}
});
}
}