From 119e0d5faa09ba025ef772413b19834907ac25d1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E9=B9=8F=E9=A3=9E?= Date: Mon, 29 Apr 2024 10:06:22 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20pbom=E5=A2=9E=E5=8A=A0=E5=AF=BC?= =?UTF-8?q?=E5=87=BA=E5=88=B0sap=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../nflg/product/bomnew/api/user/PBomApi.java | 40 ++++-------- .../pojo/entity/BomNewPbomParentEntity.java | 14 ++++ .../service/BomNewPbomParentService.java | 64 +++++++++++++++++++ 3 files changed, 91 insertions(+), 27 deletions(-) diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/api/user/PBomApi.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/api/user/PBomApi.java index 0a91cc52..78260c37 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/api/user/PBomApi.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/api/user/PBomApi.java @@ -14,10 +14,7 @@ import com.nflg.product.bomnew.pojo.dto.sap.impart2.ImportSapParamDTO; import com.nflg.product.bomnew.pojo.entity.BomNewPbomParentEntity; import com.nflg.product.bomnew.pojo.entity.BomNewTechnologyPackageTypeEntity; import com.nflg.product.bomnew.pojo.query.BomNewPbomParentQuery; -import com.nflg.product.bomnew.pojo.vo.BaseMaterialVO; -import com.nflg.product.bomnew.pojo.vo.BomCopyCheckResultVO; -import com.nflg.product.bomnew.pojo.vo.BomNewPbomParentVO; -import com.nflg.product.bomnew.pojo.vo.BomNewPbomWorkExcelVO; +import com.nflg.product.bomnew.pojo.vo.*; import com.nflg.product.bomnew.service.*; import com.nflg.product.bomnew.util.EecExcelUtil; import com.nflg.product.bomnew.util.VUtils; @@ -29,6 +26,7 @@ import org.springframework.web.bind.annotation.*; 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.ArrayList; import java.util.List; @@ -330,27 +328,15 @@ public class PBomApi extends BaseApi { return result; } - - - - - - - - - - - - - - - - - - - - - - - + /** + * 导入到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 bomNewPbomParentService.importToSAP(rootBomRowIds.get(0)); + } } diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/entity/BomNewPbomParentEntity.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/entity/BomNewPbomParentEntity.java index 986638e5..0ee8f7a7 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/entity/BomNewPbomParentEntity.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/entity/BomNewPbomParentEntity.java @@ -341,6 +341,20 @@ public class BomNewPbomParentEntity implements Serializable { @ApiModelProperty(value = "修改时间") private LocalDateTime modifyTime; + /** + * 导入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 = -31999878274445137L; } diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/BomNewPbomParentService.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/BomNewPbomParentService.java index 676d8f82..e222700d 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/BomNewPbomParentService.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/BomNewPbomParentService.java @@ -3,7 +3,9 @@ package com.nflg.product.bomnew.service; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.convert.Convert; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.NumberUtil; +import cn.hutool.core.util.RandomUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.extra.spring.SpringUtil; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; @@ -20,6 +22,7 @@ import com.nflg.product.bomnew.constant.*; import com.nflg.product.bomnew.mapper.master.BomNewPbomParentMapper; 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.BomNewPbomParentQuery; import com.nflg.product.bomnew.pojo.vo.*; @@ -40,6 +43,7 @@ import java.io.IOException; 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; @@ -1024,6 +1028,10 @@ public class BomNewPbomParentService extends ServiceImpl { + importToSAP(bomRowId); + }); } catch (Exception ex) { throw new NflgBusinessException(STATE.BusinessError, "发布Pbom失败:" + ex.getMessage()); } @@ -1090,4 +1098,60 @@ public class BomNewPbomParentService extends ServiceImpl> importToSAP(Long rootRowId) { + BomNewPbomParentEntity root = this.getById(rootRowId); + VUtils.isTure(Objects.isNull(root)).throwMessage("数据不存在"); + VUtils.isTure(root.getRootIs() != 1).throwMessage("请选择根节点"); + + ImportSapParamDTO sapDto = new ImportSapParamDTO(); + sapDto.setZID(RandomUtil.randomNumbers(5)); + sapDto.setI_WERKS("1"); + sapDto.setI_STLAN("1"); + List t1s = new ArrayList<>(); + buildChildrenForSap(root, t1s); + sapDto.setT1(t1s); + ResultVO> resultVO = SpringUtil.getBean(SapOpUtilService.class).importToSapV2(sapDto, null); + boolean update = lambdaUpdate().eq(BomNewPbomParentEntity::getRowId, rootRowId) + .set(BomNewPbomParentEntity::getSapTime, LocalDateTime.now()) + .set(Objects.equals(resultVO.getState(), STATE.Success.getState()) + , BomNewPbomParentEntity::getSapState, MBomConstantEnum.MBomStatusEnum.PUB_SAP.getValue()) + .set(!Objects.equals(resultVO.getState(), STATE.Success.getState()) && t1s.size() == resultVO.getData().size() + , BomNewPbomParentEntity::getSapState, MBomConstantEnum.MBomStatusEnum.PUB_ERROR_ALL.getValue()) + .set(!Objects.equals(resultVO.getState(), STATE.Success.getState()) && t1s.size() != resultVO.getData().size() + , BomNewPbomParentEntity::getSapState, MBomConstantEnum.MBomStatusEnum.PUB_ERROR.getValue()) + .update(); + return update ? resultVO : ResultVO.error("更新数据失败"); + } + + private void buildChildrenForSap(BomNewPbomParentEntity parent, List t1s) { + List children = pbomChildService.lambdaQuery() + .eq(BomNewPbomChildEntity::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()); + if (BomConstant.PROJECT_TYPE_TEMPORARY.equals(c.getProjectType())) { + t1.setIDNRK(""); + t1.setPOTX1(c.getMaterialName()); + } + t1.setDATUM(dateYMD); + t1s.add(t1); + BomNewPbomParentEntity cp = lambdaQuery() + .eq(BomNewPbomParentEntity::getMaterialNo, c.getMaterialNo()) + .eq(BomNewPbomParentEntity::getStatus, EBomStatusEnum.PUBLISHED.getValue()) + .one(); + if (!Objects.isNull(cp)) { + buildChildrenForSap(cp, t1s); + } + }); + } + } }