From 1cda5d400d8bd9ff5a0b974c838dc9f32e4ee530 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 09:09:28 +0800 Subject: [PATCH 1/5] =?UTF-8?q?=E5=BC=82=E5=B8=B8=E6=A3=80=E6=9F=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bomnew/service/domain/EBom/CheckEBomException.java | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/CheckEBomException.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/CheckEBomException.java index b295500e..79247a05 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/CheckEBomException.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/CheckEBomException.java @@ -9,10 +9,7 @@ import cn.hutool.extra.spring.SpringUtil; import com.google.common.collect.ImmutableList; import com.google.common.collect.Sets; import com.nflg.product.base.core.exception.NflgBusinessException; -import com.nflg.product.bomnew.constant.EBomConstant; -import com.nflg.product.bomnew.constant.EBomExceptionStatusEnum; -import com.nflg.product.bomnew.constant.MaterialGetEnum; -import com.nflg.product.bomnew.constant.ProjectTypeInputTypeEnum; +import com.nflg.product.bomnew.constant.*; import com.nflg.product.bomnew.pojo.entity.BomNewEbomParentEntity; import com.nflg.product.bomnew.pojo.vo.BaseMaterialVO; import com.nflg.product.bomnew.pojo.vo.BomNewEbomParentVO; @@ -189,7 +186,7 @@ public class CheckEBomException { } for (BomNewEbomParentVO exItem : exceptionList) { List parentByLevel = BomLevelUtil.getParentByLevel(exItem.getLevelNo()); - List warnList = allBomDetail.stream().filter(u -> u.getBomRowId() > 0 && parentByLevel.contains(u.getLevelNo()) && EBomExceptionStatusEnum.OK.equalsValue(u.getExceptionStatus())).collect(Collectors.toList()); + List warnList = allBomDetail.stream().filter(u -> !u.getVirtualPartType().equals(VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE.getValue()) && !u.getVirtualPartType().equals(VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE.getValue()) && u.getBomRowId() > 0 && parentByLevel.contains(u.getLevelNo()) && EBomExceptionStatusEnum.OK.equalsValue(u.getExceptionStatus())).collect(Collectors.toList()); for (BomNewEbomParentVO k :warnList) { k.setExceptionStatus(EBomExceptionStatusEnum.EXCEPT_NO_14.getValue()); } 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 2/5] =?UTF-8?q?=E5=90=8C=E6=AD=A5sap+=E5=8F=91=E5=B8=83PBO?= =?UTF-8?q?M?= 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>() { + }, importToSapDTO.getParent()); + inputStructure.put("I_STKO", parentMap); + params.setInputStructure(inputStructure); + + Map>> inputTables = new HashMap<>(); + List> childMapList = Convert.convert(new TypeReference>>() { + }, importToSapDTO.getChildList()); + inputTables.put("T_BOM", childMapList); + params.setInputTables(inputTables); + + try { + log.info("PBOM导入到SAP--参数:" + JSON.toJSONString(params)); + SapResult sapResult = sapService.doSapFun(params); + Map exportMap = sapResult.getExportMap(); + if (!sapResult.isSuccess()) { + return ResultVO.error(STATE.Error, "接口连接失败"); + } + + log.info("PBOM导入到SAP--返回值:" + JSON.toJSONString(exportMap)); + String eErrmsg = String.valueOf(exportMap.get("E_ERRMSG")); + if (StrUtil.isNotEmpty(eErrmsg)) { + return ResultVO.error(STATE.Error, eErrmsg); + } + } catch (Exception e) { + throw new RuntimeException(e); + } + } + + return ResultVO.success(); + } +} diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/util/sap/ConnectPooled.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/SapService.java similarity index 93% rename from nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/util/sap/ConnectPooled.java rename to nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/SapService.java index db4cdcb6..beca05f5 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/util/sap/ConnectPooled.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/SapService.java @@ -1,24 +1,26 @@ -package com.nflg.product.bomnew.util.sap; - +package com.nflg.product.bomnew.service; +import com.nflg.product.bomnew.pojo.dto.sap.SapReqParams; +import com.nflg.product.bomnew.pojo.dto.sap.SapResult; import com.sap.conn.jco.*; import com.sap.conn.jco.ext.DestinationDataProvider; import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeansException; import org.springframework.beans.factory.annotation.Value; -import org.springframework.stereotype.Component; +import org.springframework.context.ApplicationContext; +import org.springframework.context.ApplicationContextAware; +import org.springframework.stereotype.Service; -import javax.annotation.PostConstruct; import java.io.File; import java.io.FileOutputStream; import java.util.*; /** - * SAP JCO3 连接池 + * sap服務 */ +@Service @Slf4j -@Component -public class ConnectPooled { - +public class SapService implements ApplicationContextAware { @Value("${custom.sap.host}") private String sapHost; @Value("${custom.sap.sysnr}") @@ -36,33 +38,31 @@ public class ConnectPooled { @Value("${custom.sap.peak}") private String sapPeak; - static String ABAP_AS_POOLED = "ABAP_AS_WITH_POOL"; + private static String ABAP_AS_POOLED = "ABAP_AS_WITH_POOL"; + + - /** - * 初始化SAP连接 - * PostConstruct 注解的方法在项目启动的时候执行这个方法,也可以理解为在spring容器启动的时候执行,可作为一些数据的常规化加载,比如数据字典之类的 - */ - @PostConstruct private void initProperties() { Properties connectProperties = new Properties(); connectProperties.setProperty(DestinationDataProvider.JCO_ASHOST, sapHost); - connectProperties.setProperty(DestinationDataProvider.JCO_SYSNR, sapSysnr); - connectProperties.setProperty(DestinationDataProvider.JCO_CLIENT, sapClient); + connectProperties.setProperty(DestinationDataProvider.JCO_SYSNR,sapSysnr); + connectProperties.setProperty(DestinationDataProvider.JCO_CLIENT,sapClient); // QAS800 - connectProperties.setProperty(DestinationDataProvider.JCO_USER, sapUsername); + connectProperties.setProperty(DestinationDataProvider.JCO_USER,sapUsername); // 注:密码是区分大小写的,要注意大小写 - connectProperties.setProperty(DestinationDataProvider.JCO_PASSWD, sapPassword); - connectProperties.setProperty(DestinationDataProvider.JCO_LANG, sapLang); + connectProperties.setProperty(DestinationDataProvider.JCO_PASSWD,sapPassword); + connectProperties.setProperty(DestinationDataProvider.JCO_LANG ,sapLang); // *********连接池方式与直接不同的是设置了下面两个连接属性 // JCO_PEAK_LIMIT - 同时可创建的最大活动连接数,0表示无限制,默认为JCO_POOL_CAPACITY的值 // 如果小于JCO_POOL_CAPACITY的值,则自动设置为该值,在没有设置JCO_POOL_CAPACITY的情况下为0 - connectProperties.setProperty(DestinationDataProvider.JCO_PEAK_LIMIT, sapPeak); + connectProperties.setProperty(DestinationDataProvider.JCO_PEAK_LIMIT,sapPeak); // JCO_POOL_CAPACITY - 空闲连接数,如果为0,则没有连接池效果,默认为1 - connectProperties.setProperty(DestinationDataProvider.JCO_POOL_CAPACITY, sapPool); + connectProperties.setProperty(DestinationDataProvider.JCO_POOL_CAPACITY,sapPool); createDataFile(ABAP_AS_POOLED, "jcoDestination", connectProperties); } - static void createDataFile(String name, String suffix, Properties properties) { + + void createDataFile(String name, String suffix, Properties properties) { File cfg = new File(name + "." + suffix); if (!cfg.exists()) { try { @@ -75,6 +75,7 @@ public class ConnectPooled { } } + public static void connectWithPooled() throws JCoException { JCoDestination destination = JCoDestinationManager.getDestination(ABAP_AS_POOLED); System.out.println("Attributes:"); @@ -295,10 +296,8 @@ public class ConnectPooled { return destination; } -// public static void main(String[] args) throws JCoException { -//// connectWithPooled(); -//// accessSAPStructure(); -//// workWithTable(); -// } - -} \ No newline at end of file + @Override + public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { + initProperties(); + } +} diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/EBomToPBom.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/EBomToPBom.java index 2f7f62df..74802a0c 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/EBomToPBom.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/EBomToPBom.java @@ -305,9 +305,10 @@ public class EBomToPBom { if (CollUtil.isNotEmpty(parentList)) { sum = NumberUtil.mul(sum, parentList.get(0).getNum()); parentFullPathNum.add(parentList.get(0).getNum()); - } else { - parentFullPathNum.add(parentList.get(0).getNum()); } +// else { +// parentFullPathNum.add(parentList.get(0).getNum()); +// } parentLevelNo = BomLevelUtil.getParentLevelNo(parentLevelNo); } diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/util/BomLevelUtil.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/util/BomLevelUtil.java index 7d241b6a..73cfb1b4 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/util/BomLevelUtil.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/util/BomLevelUtil.java @@ -20,6 +20,6 @@ public class BomLevelUtil { public static String getParentLevelNo(String levelNo){ List result=new ArrayList<>(); String[] parts = levelNo.split("-"); - return String.join("-", Arrays.copyOfRange(parts, 0, levelNo.length()-1)); + return String.join("-", Arrays.copyOfRange(parts, 0, parts.length-1)); } } diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/util/sap/LevelNumUtil.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/util/LevelNumUtil.java similarity index 94% rename from nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/util/sap/LevelNumUtil.java rename to nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/util/LevelNumUtil.java index 803bb5b4..bf5b2a13 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/util/sap/LevelNumUtil.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/util/LevelNumUtil.java @@ -1,4 +1,4 @@ -package com.nflg.product.bomnew.util.sap; +package com.nflg.product.bomnew.util; import cn.hutool.core.util.StrUtil; From b1a3a82515616b00e425d38d7831987a0aabe404 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 15:27:49 +0800 Subject: [PATCH 3/5] =?UTF-8?q?=E5=90=8C=E6=AD=A5sap+=E5=8F=91=E5=B8=83PBO?= =?UTF-8?q?M?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mapper/master/BomNewEbomVirtualPackageCompositionMapper.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nflg_project_dev/nflg-bom-new/src/main/resources/mapper/master/BomNewEbomVirtualPackageCompositionMapper.xml b/nflg_project_dev/nflg-bom-new/src/main/resources/mapper/master/BomNewEbomVirtualPackageCompositionMapper.xml index 8d86a52d..8e3950ad 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/resources/mapper/master/BomNewEbomVirtualPackageCompositionMapper.xml +++ b/nflg_project_dev/nflg-bom-new/src/main/resources/mapper/master/BomNewEbomVirtualPackageCompositionMapper.xml @@ -25,6 +25,6 @@ delete from t_bom_new_ebom_virtual_package_composition where virtual_package_material_no=#{virtualPackageMaterialNo} - and parent_material_no=#{parentMaterialNo}} + and parent_material_no=#{parentMaterialNo} From df856477cbf1c7ee86c7378da478d4a6f799b096 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 18:39:54 +0800 Subject: [PATCH 4/5] =?UTF-8?q?=E8=99=9A=E6=8B=9F=E5=8C=85=E5=9B=BE?= =?UTF-8?q?=E5=8F=B7+=E8=BD=ACEbom?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bomnew/pojo/vo/BomNewEbomParentVO.java | 2 +- .../domain/EBom/VirtualPackageBase.java | 38 +++++++++++++------ .../domain/EBom/VirtualPackageFor21.java | 4 +- .../domain/EBom/VirtualPackageFor31.java | 4 +- 4 files changed, 32 insertions(+), 16 deletions(-) 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/domain/EBom/VirtualPackageBase.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/VirtualPackageBase.java index 9721dc72..3b4d8a3b 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/VirtualPackageBase.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/VirtualPackageBase.java @@ -61,11 +61,31 @@ public abstract class VirtualPackageBase { * @param virtualPackageTypeEnums * @return */ - protected void generateVMNo(List child,VirtualPackageTypeEnum ... virtualPackageTypeEnums){ + protected void generateVMNoFor31(String parentDrawingNo, List child,VirtualPackageTypeEnum ... virtualPackageTypeEnums){ List params=new ArrayList<>(); for ( BomNewEbomParentVO ch: child ) { for (VirtualPackageTypeEnum vpy : virtualPackageTypeEnums) { - params.add(buildAddMaterialParamDo(StrUtil.join("",ch.getRowId().toString(), vpy.getConMaterialName()), ch.getDrawingNo(), ch.getMaterialName(), vpy)); + String vDrawingNo = String.join("","(",parentDrawingNo,")","(",ch.getMaterialName(),")","(",vpy.getConMaterialName(),")" ); + params.add(buildAddMaterialParamDo(StrUtil.join("",ch.getRowId().toString(), vpy.getConMaterialName()), vDrawingNo, vDrawingNo, vpy)); + } + } + List addM = params.stream().filter(u -> StrUtil.isBlank(u.getMaterialNo())).collect(Collectors.toList()); + vMNos= SpringUtil.getBean(MaterialService.class).batchAddMaterial(addM); + + } + + /** + * 申请虚拟包 + * @param child + * @param virtualPackageTypeEnums + * @return + */ + protected void generateVMNoF21(String materialDesc, List child,VirtualPackageTypeEnum ... virtualPackageTypeEnums){ + List params=new ArrayList<>(); + for ( BomNewEbomParentVO ch: child ) { + for (VirtualPackageTypeEnum vpy : virtualPackageTypeEnums) { + String vDrawingNo = String.join("","(",materialDesc,")","(",vpy.getConMaterialName(),")" ); + params.add(buildAddMaterialParamDo(StrUtil.join("",ch.getRowId().toString(), vpy.getConMaterialName()), vDrawingNo, vDrawingNo, vpy)); } } List addM = params.stream().filter(u -> StrUtil.isBlank(u.getMaterialNo())).collect(Collectors.toList()); @@ -76,16 +96,12 @@ public abstract class VirtualPackageBase { //申请物料编码 private AddVirtrualMaterialDTO buildAddMaterialParamDo(String key, String drawingNo, String materialName, VirtualPackageTypeEnum virtualPackageType){ - String vDrawingNo = String.join("","(",drawingNo,")","(",virtualPackageType.getConMaterialName(),")" ); - String vMaterialName = StrUtil.join("","(",materialName,")","(",virtualPackageType.getConMaterialName(),")"); - String vMaterialDesc = StrUtil.join("", "(",drawingNo,")" ,"(", materialName,")","(",virtualPackageType.getConMaterialName(),")"); - - List oldMaterialList = SpringUtil.getBean(MaterialMainService.class).lambdaQuery().eq(MaterialMainEntity::getDrawingNo, vDrawingNo) + List oldMaterialList = SpringUtil.getBean(MaterialMainService.class).lambdaQuery().eq(MaterialMainEntity::getDrawingNo, drawingNo) .list(); AddVirtrualMaterialDTO ent=new AddVirtrualMaterialDTO(); if(CollUtil.isNotEmpty(oldMaterialList)){ ent.setKey(key); - ent.setDrawingNo(vDrawingNo); + ent.setDrawingNo(drawingNo); ent.setMaterialNo(oldMaterialList.get(0).getMaterialNo()); ent.setMaterialName(oldMaterialList.get(0).getMaterialName()); ent.setMaterialDesc(oldMaterialList.get(0).getMaterialDesc()); @@ -93,9 +109,9 @@ public abstract class VirtualPackageBase { } else { ent.setKey(key); - ent.setDrawingNo(vDrawingNo); - ent.setMaterialName(vMaterialName); - ent.setMaterialDesc(vMaterialDesc); + ent.setDrawingNo(drawingNo); + ent.setMaterialName(materialName); + ent.setMaterialDesc(materialName); ent.setMaterialCategoryCode(virtualPackageType.getMaterialCategoryCode()); } return ent; diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/VirtualPackageFor21.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/VirtualPackageFor21.java index 3483fd02..0cc1f7e6 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/VirtualPackageFor21.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/VirtualPackageFor21.java @@ -45,10 +45,10 @@ public class VirtualPackageFor21 extends VirtualPackageBase { BomNewEbomParentVO vo= Convert.convert(BomNewEbomParentVO.class,parent ); if(virtualPackageValue.contains(VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE.getValue()) && (parent.getVirtrualPackageEnum()| VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE.getValue())!=VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE.getValue()){ - generateVMNo(ImmutableList.of(vo),VirtualPackageTypeEnum.MAKING_PACKAGE, VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE,VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE); + generateVMNoF21(parent.getMaterialDesc(), ImmutableList.of(vo),VirtualPackageTypeEnum.MAKING_PACKAGE, VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE,VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE); } else { - generateVMNo(ImmutableList.of(vo),VirtualPackageTypeEnum.MAKING_PACKAGE, VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE); + generateVMNoF21(parent.getMaterialDesc(),ImmutableList.of(vo),VirtualPackageTypeEnum.MAKING_PACKAGE, VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE); } diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/VirtualPackageFor31.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/VirtualPackageFor31.java index 9080cd0c..ed8afcca 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/VirtualPackageFor31.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/VirtualPackageFor31.java @@ -44,11 +44,11 @@ public class VirtualPackageFor31 extends VirtualPackageBase { //生成虚拟包 if(CollUtil.isNotEmpty(child)) { if (virtualPackageValue.contains(VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE.getValue()) && (VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE.getValue() & parent.getVirtrualPackageEnum()) != VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE.getValue()){ - generateVMNo(child , VirtualPackageTypeEnum.DELIVERY_PACKAGE,VirtualPackageTypeEnum.MAKING_PACKAGE + generateVMNoFor31(parent.getDrawingNo(), child , VirtualPackageTypeEnum.DELIVERY_PACKAGE,VirtualPackageTypeEnum.MAKING_PACKAGE ,VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE, VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE); } else { - generateVMNo(child, VirtualPackageTypeEnum.DELIVERY_PACKAGE, VirtualPackageTypeEnum.MAKING_PACKAGE + generateVMNoFor31(parent.getDrawingNo(),child, VirtualPackageTypeEnum.DELIVERY_PACKAGE, VirtualPackageTypeEnum.MAKING_PACKAGE , VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE); } From f7fc1a9d41a3af4ce6dd4009c1b505d7d7b63563 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 19:00:45 +0800 Subject: [PATCH 5/5] =?UTF-8?q?=E5=8F=98=E6=9B=B4=E5=8E=9F=E5=9B=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../nflg/product/bomnew/api/user/EbomApi.java | 6 +++--- .../pojo/dto/EBomUpgradeChangesParamDTO.java | 21 +++++++++++++++++++ .../service/BomNewEbomParentService.java | 13 ++++++++---- 3 files changed, 33 insertions(+), 7 deletions(-) create mode 100644 nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/dto/EBomUpgradeChangesParamDTO.java 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/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/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