From b440859f5a0ffa72cc5a33af0d3ef2a8b4c4502b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=A8=E4=B8=87=E9=87=8C?= <1726150332@qq.com> Date: Thu, 8 Jan 2026 14:24:48 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9BOM=E5=90=8C=E6=AD=A5?= =?UTF-8?q?=E9=80=BB=E8=BE=91=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/op/sap/controller/SapController.java | 51 +++++---- .../sap/service/impl/SapBomServiceImpl.java | 106 ++++++++---------- 2 files changed, 76 insertions(+), 81 deletions(-) diff --git a/op-modules/op-sap/src/main/java/com/op/sap/controller/SapController.java b/op-modules/op-sap/src/main/java/com/op/sap/controller/SapController.java index b87c0d430..14d3b6670 100644 --- a/op-modules/op-sap/src/main/java/com/op/sap/controller/SapController.java +++ b/op-modules/op-sap/src/main/java/com/op/sap/controller/SapController.java @@ -141,29 +141,34 @@ public class SapController extends BaseController { }finally { DynamicDataSourceContextHolder.poll(); } - List> dateSources = dateSources0.getData(); - - dateSources.forEach(dateSource -> { - if (!"ds_999".equals(dateSource.get("poolName"))) { - try { - DynamicDataSourceContextHolder.push(dateSource.get("poolName"));// 这是数据源的key - Date maxTime0 = sapBomMapper.getBomMaxTime(); - if (maxTime0 != null) { - Calendar calendar = Calendar.getInstance(); - calendar.setTime(maxTime0); - calendar.add(Calendar.DAY_OF_YEAR, 1); - Date maxTime = calendar.getTime(); - qo.setAedat(DateFormatUtils.format(maxTime, "yyyyMMdd"));//修改日期20230923 - } - R r = sapBomService.bomSync(qo); - if (r.getCode() != 200) { - logger.error("++++++++++++" + dateSource.get("poolName") + "同步bom失败,错误信息:" + r.getMsg()); - } - }finally { - DynamicDataSourceContextHolder.poll(); - } - } - }); + Calendar calendar = Calendar.getInstance(); + Date maxTime = calendar.getTime(); + qo.setAedat(DateFormatUtils.format(maxTime, "yyyyMMdd")); + R r = sapBomService.bomSync(qo); +// List> dateSources = dateSources0.getData(); +// +// dateSources.forEach(dateSource -> { +// if (!"ds_999".equals(dateSource.get("poolName"))) { +// try { +// DynamicDataSourceContextHolder.push(dateSource.get("poolName"));// 这是数据源的key +// Date maxTime0 = sapBomMapper.getBomMaxTime(); +// if (maxTime0 != null) { +// Calendar calendar = Calendar.getInstance(); +// calendar.setTime(maxTime0); +// calendar.add(Calendar.DAY_OF_YEAR, 1); +// Date maxTime = calendar.getTime(); +// qo.setAedat(DateFormatUtils.format(maxTime, "yyyyMMdd"));//修改日期20230923 +// } +// qo.setMatkl("0000000100354842"); +// R r = sapBomService.bomSync(qo); +// if (r.getCode() != 200) { +// logger.error("++++++++++++" + dateSource.get("poolName") + "同步bom失败,错误信息:" + r.getMsg()); +// } +// }finally { +// DynamicDataSourceContextHolder.poll(); +// } +// } +// }); return R.ok(); diff --git a/op-modules/op-sap/src/main/java/com/op/sap/service/impl/SapBomServiceImpl.java b/op-modules/op-sap/src/main/java/com/op/sap/service/impl/SapBomServiceImpl.java index 7647db214..923baa818 100644 --- a/op-modules/op-sap/src/main/java/com/op/sap/service/impl/SapBomServiceImpl.java +++ b/op-modules/op-sap/src/main/java/com/op/sap/service/impl/SapBomServiceImpl.java @@ -1,5 +1,6 @@ package com.op.sap.service.impl; +import com.alibaba.fastjson2.JSONObject; import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder; import com.op.common.core.constant.Constants; import com.op.common.core.domain.R; @@ -21,6 +22,8 @@ import com.sap.conn.jco.*; import org.apache.ibatis.session.ExecutorType; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -45,6 +48,7 @@ public class SapBomServiceImpl implements SapBomService { @Autowired private JCoDestination dest; + private static final Logger log = LoggerFactory.getLogger(SapBomServiceImpl.class); @Override public R bomSync(SapBomQuery sapBomQuery) { @@ -124,15 +128,11 @@ public class SapBomServiceImpl implements SapBomService { S_AEDAT.setValue(Constants.LOW, sapBomQuery.getAedat()); S_AEDAT.setValue("HIGH", END_DATE); } -// -// -// -// // // 获取调用 RFC 函数对象 func.execute(dest); // // 获取 内表 - ZMES_PRO JCoTable maraTable = func.getTableParameterList().getTable("LT_BOM"); -// JCoRecordMetaData metaData = maraTable.getRecordMetaData(); + System.out.println(maraTable); List sapBomList = new ArrayList<>(); List sapBomComponentList = new ArrayList<>(); for (int i = 0; i < maraTable.getNumRows(); i++) { @@ -193,10 +193,10 @@ public class SapBomServiceImpl implements SapBomService { */ SapBom sapBom = new SapBom(); sapBom.setFactoryCode(WERKS); - sapBom.setProductionVersion(STLAL); + sapBom.setProductionVersion(VERID); sapBom.setBomCode(STLNR); sapBom.setCumc(OJMBR); - sapBom.setComponent(PMATNR); + // sapBom.setComponent(PMATNR); sapBom.setOptionalBom(STLAL); sapBom.setPvvd(DateUtils.dateTime("yyyy-MM-dd", ADATU)); sapBom.setPved(DateUtils.dateTime("yyyy-MM-dd", BDATU)); @@ -204,13 +204,15 @@ public class SapBomServiceImpl implements SapBomService { sapBom.setBomCalculateUnit(MEINS); sapBom.setBomBaseNumber(new BigDecimal(BMENG)); sapBom.setBomBaseUnit(BMEIN); - sapBom.setComponentUnit(PMEINS); - sapBom.setComponentProFlag(PBESKZ); + // sapBom.setComponentUnit(PMEINS); + // sapBom.setComponentProFlag(PBESKZ); // sapBom.setCurrentVersion(""); sapBom.setCreateBy(ANNAM); sapBom.setCreateTime(DateUtils.dateTime("yyyy-MM-dd", ANDAT)); sapBom.setUpdateBy(AENAM); sapBom.setUpdateTime(DateUtils.dateTime("yyyy-MM-dd", AEDAT)); + sapBom.setAttr1(MATNR); + sapBom.setAttr2(MAKTX); SapBomComponent sapBomComponent = new SapBomComponent(); sapBomComponent.setId(IdUtils.simpleUUID().toString()); sapBomComponent.setBomCode(STLNR); @@ -226,82 +228,70 @@ public class SapBomServiceImpl implements SapBomService { sapBomComponent.setLossRate(new BigDecimal(PAUSCH)); sapBomComponent.setLossAmount(new BigDecimal(PXHLCE)); sapBomComponent.setCilosses(new BigDecimal(PMNGKO)); + sapBomComponent.setComponentUnit(PMEINS); sapBomComponent.setCreateBy(ANNAM); + sapBomComponent.setComponentProFlag(PBESKZ); sapBomComponent.setCreateTime(DateUtils.getNowDate()); sapBomComponent.setUpdateBy(AENAM); sapBomComponent.setUpdateTime(DateUtils.getNowDate()); sapBomComponentList.add(sapBomComponent); sapBomList.add(sapBom); } -// createBOM(sapBomList,sapBomComponentList); + createBOM(sapBomList,sapBomComponentList); return R.ok(); } catch (Exception e) { return R.fail(e.getMessage()); } } - @Override - public SapBom getMaxRevisionBom(String STLNR) { - List list = sapBomMapper.selectBaseBomByBomCode(STLNR); - if (list == null || list.size() <= 0) { - return null; - } - - return list.get(0); - } public void createBOM(List sapBomList, List sapBomComponentList) { + log.info("BOM同步开始---------"); List newBomList = sapBomList.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(SapBom::getBomCode))), ArrayList::new)); DynamicDataSourceContextHolder.push("ds_1000"); try { if (newBomList.size() > 0) { - - SqlSession sqlSession = sqlSessionFactory.openSession(ExecutorType.BATCH, false); for (SapBom sapBom : newBomList) { - List sapBomComponents; - //查询Bom号是否存在 - SapBom bomModel = this.getMaxRevisionBom(sapBom.getBomCode()); - //存在且版本号大于现有版本 - if (bomModel != null && sapBom.getOptionalBom() != null && Float.parseFloat(sapBom.getOptionalBom()) > Float.parseFloat(bomModel.getOptionalBom())) { - //升级BOM - String bomBo = HandleEnum.BOM.getHandle(sapBom.getFactoryCode(), sapBom.getBomCode(), sapBom.getOptionalBom()); - sapBom.setBomBo(bomBo); + //更新BOM表数据 + sapBomMapper.updateBaseBom(sapBom); +// List sapBomComponents; +// //查询Bom是否存在 +// SapBom bomModel = sapBomMapper.selectBaseBomByBomCode(sapBom.getBomCode()); +// //Bom存在则更新现有BOM +// if (bomModel != null ) { +// sapBomMapper.updateBaseBom(sapBom); +// //删除base_bom_component表现有的数据 + sapBomComponentMapper.deleteSapBomComponentByBomCode(sapBom.getBomCode()); +// //执行插入 +// sapBomComponentList.stream().forEach(components -> { +// sapBomComponentMapper.insertSapBomComponent(components); +// }); +// +// } else if (bomModel == null) { //插入BOM表 - sapBomMapper.insertBaseBom(sapBom); - //筛选组件清单 - sapBomComponents = sapBomComponentList.stream().filter(sbc -> - sbc.getBomCode().equals(sapBom.getBomCode())).collect(Collectors.toList()); + // sapBomMapper.insertBaseBom(sapBom); //执行插入 - sapBomComponents.stream().forEach(components -> { - components.setBomBo(bomBo); - sapBomComponentMapper.insertSapBomComponent(components); - }); - - } else if (bomModel == null && sapBom.getOptionalBom() != null) { - //插入初始BOM - String bomBo = HandleEnum.BOM.getHandle(sapBom.getFactoryCode(), sapBom.getBomCode(), sapBom.getOptionalBom()); - sapBom.setBomBo(bomBo); - //插入BOM表 - sapBomMapper.insertBaseBom(sapBom); - //筛选组件清单 - sapBomComponents = sapBomComponentList.stream().filter(sbc -> - sbc.getBomCode().equals(sapBom.getBomCode())).collect(Collectors.toList()); - //执行插入 - sapBomComponents.stream().forEach(components -> { - components.setBomBo(bomBo); - sapBomComponentMapper.insertSapBomComponent(components); - }); - - } - sqlSession.commit(); - sqlSession.clearCache(); +// for (SapBomComponent sapBomComponent : sapBomComponentList){ +// sapBomComponentMapper.insertSapBomComponent(sapBomComponent); +// } +// } } +// for (SapBomComponent sapBomComponent : sapBomComponentList){ +// sapBomComponentMapper.insertSapBomComponent(sapBomComponent); +// } } - }finally { + //执行插入 + for (SapBomComponent sapBomComponent : sapBomComponentList){ + sapBomComponentMapper.insertSapBomComponent(sapBomComponent); + } + log.info("BOM同步结束---------"); + }catch (Exception e){ + System.out.println(e.getMessage()); + } + finally { DynamicDataSourceContextHolder.poll(); } } - }