diff --git a/nflg_project_dev/nflg-bom-new/pom.xml b/nflg_project_dev/nflg-bom-new/pom.xml
index 851a9bf6..6f32fd98 100644
--- a/nflg_project_dev/nflg-bom-new/pom.xml
+++ b/nflg_project_dev/nflg-bom-new/pom.xml
@@ -119,6 +119,7 @@
+
org.springframework.boot
@@ -129,6 +130,7 @@
2.6.4
+
\ No newline at end of file
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 6138b368..4209ca3d 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
@@ -155,9 +155,9 @@ public class EbomApi extends BaseApi {
@PostMapping("upgradeChanges")
@ApiOperation("发起变更")
- public ResultVO upgradeChanges(@RequestBody List bomRowIds) {
- VUtils.isTure(CollUtil.isEmpty(bomRowIds)).throwMessage("请选择要发起变更的物料");
- bomNewEbomParentService.upgradeChanges(bomRowIds);
+ public ResultVO upgradeChanges(@RequestBody EBomUpgradeChangesParamDTO param) {
+ VUtils.isTure(CollUtil.isEmpty(param.getBomRowIds())).throwMessage("请选择要发起变更的物料");
+ bomNewEbomParentService.upgradeChanges(param);
return ResultVO.success(true);
diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/config/NacosConfig.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/config/NacosConfig.java
index 40098a5d..c77f4b32 100644
--- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/config/NacosConfig.java
+++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/config/NacosConfig.java
@@ -108,6 +108,10 @@ public class NacosConfig {
+
+
+
+
public static NacosConfig getNacosConfig(){
return SpringContextUtils.getBean(NacosConfig.class);
}
diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/dto/EBomUpgradeChangesParamDTO.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/dto/EBomUpgradeChangesParamDTO.java
new file mode 100644
index 00000000..3441f3a9
--- /dev/null
+++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/dto/EBomUpgradeChangesParamDTO.java
@@ -0,0 +1,21 @@
+package com.nflg.product.bomnew.pojo.dto;
+
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class EBomUpgradeChangesParamDTO {
+
+ @ApiModelProperty("bom行ID")
+ private List bomRowIds;
+
+ @ApiModelProperty("升版说明")
+ private String changeDesc;
+
+
+ @ApiModelProperty("通知单号")
+ private String noticeNums;
+}
diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/dto/sap/ImportToSapChildDTO.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/dto/sap/ImportToSapChildDTO.java
new file mode 100644
index 00000000..dd66b8a9
--- /dev/null
+++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/dto/sap/ImportToSapChildDTO.java
@@ -0,0 +1,35 @@
+package com.nflg.product.bomnew.pojo.dto.sap;
+
+import lombok.Data;
+
+@Data
+public class ImportToSapChildDTO {
+ // 物料编码
+ private String IDNRK;
+ // 序号
+ private String POSNR;
+ // 项目类别
+ private String POSTP;
+ // 数量
+ private String MENGE;
+ // 单位
+ private String MEINS;
+
+ /** 暂时未用到的字段 */
+// // 工厂
+// private String WERKS;
+// // 物料描述
+// private String MAKTX;
+// // 创建日期
+// @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+// private String ANDAT;
+// // 修改日期
+// @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+// private String AEDAT;
+// // 有效起始日
+// private String DATUV;
+// // 有效至
+// private String DATUB;
+// // 设计人员
+// private String ANNAM;
+}
diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/dto/sap/ImportToSapDTO.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/dto/sap/ImportToSapDTO.java
new file mode 100644
index 00000000..43ca377a
--- /dev/null
+++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/dto/sap/ImportToSapDTO.java
@@ -0,0 +1,15 @@
+package com.nflg.product.bomnew.pojo.dto.sap;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class ImportToSapDTO {
+
+ // 抬头
+ private ImportToSapParentDTO parent;
+
+ // 组件
+ private List childList;
+}
diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/dto/sap/ImportToSapParentDTO.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/dto/sap/ImportToSapParentDTO.java
new file mode 100644
index 00000000..1f7e2428
--- /dev/null
+++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/dto/sap/ImportToSapParentDTO.java
@@ -0,0 +1,29 @@
+package com.nflg.product.bomnew.pojo.dto.sap;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+@Data
+public class ImportToSapParentDTO {
+ // 工厂
+ private String WERKS;
+ // 物料号
+ private String MATNR;
+ // BOM用途
+ private String STLAN;
+ // 基本数量
+ private String BMENG;
+ // 单位
+ private String BMEIN;
+ // BOM状态:1=EBOM生成、2=暂存(当编辑时状态改为暂存)、3=已发布
+ private String STLST;
+ // 有效起始日
+ @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+ private String DATUV;
+
+ /** 暂时未用到的字段 */
+ // 物料描述
+// private String MAKTX;
+ // 可选的bom
+// private String STLAL;
+}
diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/util/sap/SapReqParams.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/dto/sap/SapReqParams.java
similarity index 96%
rename from nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/util/sap/SapReqParams.java
rename to nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/dto/sap/SapReqParams.java
index 67b5560f..e678b6ee 100644
--- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/util/sap/SapReqParams.java
+++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/dto/sap/SapReqParams.java
@@ -1,4 +1,4 @@
-package com.nflg.product.bomnew.util.sap;
+package com.nflg.product.bomnew.pojo.dto.sap;
import lombok.Data;
diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/util/sap/SapResult.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/dto/sap/SapResult.java
similarity index 92%
rename from nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/util/sap/SapResult.java
rename to nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/dto/sap/SapResult.java
index 3deb2ca1..bbee0c2f 100644
--- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/util/sap/SapResult.java
+++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/dto/sap/SapResult.java
@@ -1,4 +1,4 @@
-package com.nflg.product.bomnew.util.sap;
+package com.nflg.product.bomnew.pojo.dto.sap;
import com.sap.conn.jco.JCoParameterList;
import lombok.Data;
diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/vo/BomNewEbomParentVO.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/vo/BomNewEbomParentVO.java
index 4fd1d6da..2baed037 100644
--- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/vo/BomNewEbomParentVO.java
+++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/vo/BomNewEbomParentVO.java
@@ -313,7 +313,7 @@ public class BomNewEbomParentVO extends BaseMaterialVO implements Serializable {
private Integer virtualPartIs;
@ApiModelProperty("0-非虚拟包 1-发货包 2-制作包 4-直发包 8-发货前装配包")
- private Integer virtualPartType;
+ private Integer virtualPartType=0;
@ApiModelProperty("生成虚拟包的跟节点物料编码")
private String virtualPartRootMaterialNo;
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 32dcfb55..2cb26233 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
@@ -304,6 +304,8 @@ public class BomNewEbomParentService extends ServiceImplparentEntity.getStatus()) {
@@ -672,16 +674,16 @@ public class BomNewEbomParentService extends ServiceImpl bomRowIds) {
- List list = this.lambdaQuery().in(BomNewEbomParentEntity::getRowId, bomRowIds).list();
+ public void upgradeChanges(EBomUpgradeChangesParamDTO paramDTO) {
+ List list = this.lambdaQuery().in(BomNewEbomParentEntity::getRowId, paramDTO.getBomRowIds()).list();
List notConvertToPbom = list.stream().filter(u -> u.getStatus() < EBomStatusEnum.PUBLISHED.getValue()).map(u -> u.getMaterialNo()).collect(Collectors.toList());
VUtils.isTure(CollUtil.isNotEmpty(notConvertToPbom)).throwMessage(StrUtil.join(",", notConvertToPbom) + "未转PBom,不能发起变更");
List parentResult = new ArrayList<>();
List childResult = new ArrayList<>();
- for (Long bomRowId : bomRowIds) {
+ for (Long bomRowId : paramDTO.getBomRowIds()) {
BomNewEbomParentEntity parent = this.getById(bomRowId);
List child = ebomChildService.lambdaQuery().eq(BomNewEbomChildEntity::getParentRowId, bomRowId).list();
@@ -691,10 +693,13 @@ public class BomNewEbomParentService extends ServiceImpl childResult=new ArrayList<>();
+ ImportToSapChildDTO childEnt =new ImportToSapChildDTO();
+ childEnt.setIDNRK("1100021745");
+ childEnt.setPOSNR("045");
+ childEnt.setPOSTP("F");
+ childEnt.setMENGE("6");
+ childEnt.setMEINS("PC");
+ childResult.add(childEnt);
+
+ result.setChildList(childResult);
+
+
+ List sapParams=new ArrayList<>();
+
+ sapParams.add(result);
+ ResultVO syncResult = sapOpUtilService.importPBomToSap(sapParams);
+ VUtils.isTure(!syncResult.getState().equals(STATE.Success)).throwMessage("同步SAP失败:"+syncResult.getMsg());
+ }
+
+ private void importSap(BomNewPbomParentEntity parent, List children){
+
+ List pbom = children.stream().filter(u -> u.getBomRowId() > 0).collect(Collectors.toList());
+ List parentChild = children.stream().filter(u -> u.getParentRowId().equals(parent.getRowId())).collect(Collectors.toList());
+ List sapParams=new ArrayList<>();
+ sapParams.add(buildSapBom(Convert.convert(BomNewPbomParentVO.class, parent), parentChild));
+
+ for (BomNewPbomParentVO pt :pbom) {
+ List pChild = children.stream().filter(u -> u.getParentRowId().equals(pt.getBomRowId())).collect(Collectors.toList());
+ sapParams.add(buildSapBom(Convert.convert(BomNewPbomParentVO.class, parent), pChild));
+ }
+ if(CollUtil.isNotEmpty(sapParams)) {
+ sapOpUtilService.importPBomToSap(sapParams);
+ }
+
+ }
+
+ private ImportToSapDTO buildSapBom(BomNewPbomParentVO parentVO, List children){
+
+ ImportToSapDTO result=new ImportToSapDTO();
+ ImportToSapParentDTO sapParent=new ImportToSapParentDTO();
+ SimpleDateFormat spt=new SimpleDateFormat("yyyy-MM-dd");
+ sapParent.setWERKS(parentVO.getFacCode());
+ sapParent.setMATNR(parentVO.getMaterialNo());
+ sapParent.setSTLAN("");
+ sapParent.setBMENG(parentVO.getNum().toString());
+ sapParent.setBMEIN(parentVO.getMaterialUnit());
+ sapParent.setSTLST("3");
+ sapParent.setDATUV(spt.format( parentVO.getCreatedTime()));
+
+ List childResult=new ArrayList<>();
+ for (BomNewPbomParentVO child :children) {
+ ImportToSapChildDTO childEnt =new ImportToSapChildDTO();
+ childEnt.setIDNRK(child.getMaterialNo());
+ childEnt.setPOSNR(child.getOrderNumber());
+ childEnt.setPOSTP(child.getProjectType());
+ childEnt.setMENGE(child.getNum().toString());
+ childEnt.setMEINS(child.getMaterialUnit());
+ childResult.add(childEnt);
+ }
+
+ result.setParent(sapParent);
+ result.setChildList(childResult);
+ return result;
+ }
+
+
+
/**
* 获取CRM 订单号
*
diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/SapOpUtilService.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/SapOpUtilService.java
new file mode 100644
index 00000000..4e55061e
--- /dev/null
+++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/SapOpUtilService.java
@@ -0,0 +1,73 @@
+package com.nflg.product.bomnew.service;
+
+
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.convert.Convert;
+import cn.hutool.core.lang.TypeReference;
+import cn.hutool.core.util.StrUtil;
+import com.alibaba.fastjson.JSON;
+import com.nflg.product.bomnew.pojo.dto.sap.ImportToSapDTO;
+import com.nflg.product.bomnew.pojo.dto.sap.SapReqParams;
+import com.nflg.product.bomnew.pojo.dto.sap.SapResult;
+import lombok.extern.slf4j.Slf4j;
+import nflg.product.common.constant.STATE;
+import nflg.product.common.vo.ResultVO;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+@Service
+@Slf4j
+public class SapOpUtilService {
+
+ @Resource
+ SapService sapService;
+
+
+
+ public ResultVO importPBomToSap(List sapList) {
+ if (CollUtil.isEmpty(sapList)) {
+ return null;
+ }
+
+ for (ImportToSapDTO importToSapDTO : sapList) {
+ SapReqParams params = new SapReqParams();
+ // 接口名
+ params.setFunName("ZRFC_PP_CREATEBOM");
+
+ Map> inputStructure = new HashMap<>();
+ Map parentMap = Convert.convert(new TypeReference