diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/api/user/EbomApi.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/api/user/EbomApi.java index 1780e572..d9c5fcc3 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/api/user/EbomApi.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/api/user/EbomApi.java @@ -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 importToSAP(@Valid @RequestBody @NotEmpty List rootBomRowIds) { + VUtils.isTure(rootBomRowIds.size() > 1).throwMessage("每次只能导入1条"); + return bomNewEbomParentService.importToSAP(rootBomRowIds.get(0)); + } } diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/entity/BomNewEbomParentEntity.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/entity/BomNewEbomParentEntity.java index 68c9abf4..ece90393 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/entity/BomNewEbomParentEntity.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/entity/BomNewEbomParentEntity.java @@ -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; } diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/BomNewEbomParentService.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/BomNewEbomParentService.java index 01438e3a..8d57df1c 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/BomNewEbomParentService.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/BomNewEbomParentService.java @@ -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 { + importToSAP(bomRowId); + }); + } + } + + public ResultVO 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 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 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 t1s) { + List 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); + } + }); } }