From c1265b656b4404e2941e1ade565a39a038ecc898 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E5=A4=A7=E7=B1=B3?= <470431449@qq.com>
Date: Tue, 16 Jan 2024 14:55:29 +0800
Subject: [PATCH] =?UTF-8?q?=E5=90=8C=E6=AD=A5sap+=E5=8F=91=E5=B8=83PBOM?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
nflg_project_dev/nflg-bom-new/pom.xml | 2 +
.../product/bomnew/config/NacosConfig.java | 4 +
.../pojo/dto/sap/ImportToSapChildDTO.java | 35 ++++++
.../bomnew/pojo/dto/sap/ImportToSapDTO.java | 15 +++
.../pojo/dto/sap/ImportToSapParentDTO.java | 29 +++++
.../{util => pojo/dto}/sap/SapReqParams.java | 2 +-
.../{util => pojo/dto}/sap/SapResult.java | 2 +-
.../service/BomNewPbomParentService.java | 103 ++++++++++++++++--
.../bomnew/service/SapOpUtilService.java | 73 +++++++++++++
.../SapService.java} | 57 +++++-----
.../service/domain/EBom/EBomToPBom.java | 5 +-
.../product/bomnew/util/BomLevelUtil.java | 2 +-
.../bomnew/util/{sap => }/LevelNumUtil.java | 2 +-
13 files changed, 286 insertions(+), 45 deletions(-)
create mode 100644 nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/dto/sap/ImportToSapChildDTO.java
create mode 100644 nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/dto/sap/ImportToSapDTO.java
create mode 100644 nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/dto/sap/ImportToSapParentDTO.java
rename nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/{util => pojo/dto}/sap/SapReqParams.java (96%)
rename nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/{util => pojo/dto}/sap/SapResult.java (92%)
create mode 100644 nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/SapOpUtilService.java
rename nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/{util/sap/ConnectPooled.java => service/SapService.java} (93%)
rename nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/util/{sap => }/LevelNumUtil.java (94%)
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/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/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/service/BomNewPbomParentService.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/BomNewPbomParentService.java
index 22b9bbad..8e178bad 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
@@ -1,15 +1,12 @@
package com.nflg.product.bomnew.service;
-import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.convert.Convert;
-import cn.hutool.core.lang.TypeReference;
import cn.hutool.core.util.NumberUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.core.toolkit.IdWorker;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.google.common.collect.ImmutableList;
@@ -19,26 +16,27 @@ import com.nflg.product.base.core.exception.NflgBusinessException;
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.ImportToSapChildDTO;
+import com.nflg.product.bomnew.pojo.dto.sap.ImportToSapDTO;
+import com.nflg.product.bomnew.pojo.dto.sap.ImportToSapParentDTO;
import com.nflg.product.bomnew.pojo.entity.*;
import com.nflg.product.bomnew.pojo.query.BomNewPbomParentQuery;
import com.nflg.product.bomnew.pojo.vo.*;
import com.nflg.product.bomnew.service.domain.PBom.*;
import com.nflg.product.bomnew.util.*;
-import com.nflg.product.bomnew.util.sap.LevelNumUtil;
-import io.swagger.models.auth.In;
+import com.nflg.product.bomnew.util.LevelNumUtil;
import nflg.product.common.constant.STATE;
+import nflg.product.common.vo.ResultVO;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
-import org.ttzero.excel.entity.ListMapSheet;
-import org.ttzero.excel.entity.ListSheet;
import org.ttzero.excel.entity.Workbook;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
-import java.io.UnsupportedEncodingException;
import java.math.BigDecimal;
+import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.util.*;
import java.util.concurrent.ExecutionException;
@@ -93,6 +91,9 @@ public class BomNewPbomParentService 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