From 87521e0dbcd569c498da24287c3b5f4d4d743ac4 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 08:59:12 +0800 Subject: [PATCH 1/4] =?UTF-8?q?optimize:=20=E4=BF=9D=E5=AD=98=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E6=97=B6=EF=BC=8C=E5=A6=82=E6=9E=9C=E6=98=AFT?= =?UTF-8?q?=E9=A1=B9=EF=BC=8C=E4=B8=94=E6=95=B0=E9=87=8F=E4=B8=BA=E7=A9=BA?= =?UTF-8?q?=E6=88=96=E8=80=85=E4=B8=BA0=EF=BC=8C=E5=88=99=E5=B0=86?= =?UTF-8?q?=E6=95=B0=E9=87=8F=E6=94=B9=E4=B8=BA1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/nflg/product/bomnew/service/DQBomService.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/DQBomService.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/DQBomService.java index fc0bf3cb..9b501252 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/DQBomService.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/DQBomService.java @@ -282,6 +282,10 @@ public class DQBomService { c.setIdentityNo(c.getParentRowId() + "_" + c.getRowId()); c.setOrderNumber(StrUtil.padPre(String.valueOf(index + 1), 3, '0')); c.setTotalWeight(BomUtil.calculateTotalWeight(c.getNum(), query.getChildren().get(index).getUnitWeight())); + if (StrUtil.equals(BomConstant.PROJECT_TYPE_TEMPORARY, c.getProjectType()) + && (Objects.isNull(c.getNum()) || NumberUtil.equals(c.getNum(), BigDecimal.ZERO))) { + c.setNum(BigDecimal.ONE); + } //处理parent BomNewDQbomParentEntity cp = dQBomParentService.lambdaQuery() .eq(BomNewDQbomParentEntity::getMaterialNo, c.getMaterialNo()) From fa51e7dacd8dfe5c9f312f9ffef922dddebea639 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 09:35:48 +0800 Subject: [PATCH 2/4] =?UTF-8?q?feat:=20ebom=E5=B7=A5=E4=BD=9C=E6=98=8E?= =?UTF-8?q?=E7=BB=86=E5=88=97=E8=A1=A8=E5=92=8C=E6=AD=A3=E5=BC=8F=E8=A1=A8?= =?UTF-8?q?=E5=88=97=E8=A1=A8=E6=A8=A1=E7=B3=8A=E6=90=9C=E7=B4=A2=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E5=AF=B9=E2=80=9C=E5=8F=AA=E6=98=BE=E7=A4=BA=E8=87=AA?= =?UTF-8?q?=E5=B7=B1=E2=80=9D=E6=95=B0=E6=8D=AE=E7=9A=84=E6=94=AF=E6=8C=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bomnew/pojo/query/BomNewEbomParentQuery.java | 12 +++++------- .../mapper/master/BomNewEbomParentMapper.xml | 15 +++++++++++++-- 2 files changed, 18 insertions(+), 9 deletions(-) diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/query/BomNewEbomParentQuery.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/query/BomNewEbomParentQuery.java index 5aaa042f..a085a7e9 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/query/BomNewEbomParentQuery.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/query/BomNewEbomParentQuery.java @@ -6,8 +6,6 @@ import lombok.Data; import lombok.experimental.Accessors; import java.io.Serializable; -import java.math.BigDecimal; -import java.time.LocalDateTime; /** * t_bom_new_ebom_parent @@ -33,8 +31,6 @@ public class BomNewEbomParentQuery extends BasePageQuery implements Serializabl @ApiModelProperty(value = "物料编码") private String materialNo; - - /** * 设计人员名称 */ @@ -50,9 +46,11 @@ public class BomNewEbomParentQuery extends BasePageQuery implements Serializabl @ApiModelProperty("数据类型 0-EBOM工作列表数据 1-EBOM正式工作表明细 2-变更影响") private Integer dataType=0; + /* + * 是否仅显示自己的数据:0=所有人的数据;1=仅自己的数据,默认为0 + */ + @ApiModelProperty(value = "是否仅显示自己的数据:0=所有人的数据;1=仅自己的数据,默认为0") + private Integer showMySelfOnly = 0; - - - private static final long serialVersionUID = 1L; } diff --git a/nflg_project_dev/nflg-bom-new/src/main/resources/mapper/master/BomNewEbomParentMapper.xml b/nflg_project_dev/nflg-bom-new/src/main/resources/mapper/master/BomNewEbomParentMapper.xml index b3043205..e391f8da 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/resources/mapper/master/BomNewEbomParentMapper.xml +++ b/nflg_project_dev/nflg-bom-new/src/main/resources/mapper/master/BomNewEbomParentMapper.xml @@ -187,11 +187,19 @@ @@ -385,6 +393,9 @@ SELECT *,row_id as bomRowId FROM t_bom_new_ebom_parent + + AND created_by = #{userCode} + WHERE status IN (1,3) AND (user_root_is=1 OR root_is_for_wait_review=1) AND created_by=#{userCode} From 10e545f6d12fbbe88c0eb00ea83270282465c2e0 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 09:52:55 +0800 Subject: [PATCH 3/4] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E5=AF=BC=E5=87=BA?= =?UTF-8?q?excel=E6=95=B0=E6=8D=AE=E4=B8=AD=E5=90=8D=E5=AD=97=E5=AD=97?= =?UTF-8?q?=E6=AE=B5=E6=95=B0=E6=8D=AE=E4=B8=BA=E7=A9=BA=E7=9A=84=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/nflg/product/bomnew/pojo/vo/DQbomExcelVO.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/vo/DQbomExcelVO.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/vo/DQbomExcelVO.java index a2fc6298..b68fcb3f 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/vo/DQbomExcelVO.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/vo/DQbomExcelVO.java @@ -24,7 +24,7 @@ public class DQbomExcelVO extends BaseImportExcelDTO { private String drawingNo; @ExcelColumn("名称") - private String materialName; + private String materialDesc; @ExcelColumn("材料") private String materialTexture; 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 4/4] =?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); + } + }); + } + } }