From 717c10f5bd648849fd05137ef4605c7dc32c0046 Mon Sep 17 00:00:00 2001 From: 10001392 <1055202292@qq.com> Date: Tue, 24 Dec 2024 16:37:41 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90=E7=89=A9=E6=96=99=E4=B8=BB=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E3=80=91=E5=90=8C=E6=AD=A5HANA=E7=89=A9=E6=96=99?= =?UTF-8?q?=E4=BB=B7=E6=A0=BC=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../material/job/SaticScheduleTask.java | 3 ++- .../pojo/entity/MaterialMainEntity.java | 7 ++++++ .../material/pojo/sop/SopMaterialInfo.java | 2 ++ .../material/service/MaterialMainService.java | 23 +++++++++++++++++- .../material/service/SapInfoService.java | 24 +++++++++++++++++++ 5 files changed, 57 insertions(+), 2 deletions(-) diff --git a/nflg_project_dev/material/src/main/java/com/nflg/product/material/job/SaticScheduleTask.java b/nflg_project_dev/material/src/main/java/com/nflg/product/material/job/SaticScheduleTask.java index d1d2b465..e21db39f 100644 --- a/nflg_project_dev/material/src/main/java/com/nflg/product/material/job/SaticScheduleTask.java +++ b/nflg_project_dev/material/src/main/java/com/nflg/product/material/job/SaticScheduleTask.java @@ -95,11 +95,12 @@ public class SaticScheduleTask { } /** - * 每天凌晨12点从SAP获取物料的最近出库时间、最近采购价格、最近采购日期 + * 每天凌晨12点从SAP获取物料的最近出库时间、最近采购价格、最近采购日期、物料价格 * 只针对物料状态material_state为1:激活 2:禁止采购 3:售后专用 * 流程状态:15:已审核 100: 历史正式物料(已审核) */ @Scheduled(cron = "0 0 3 * * ?") +// @Scheduled(cron = "0 0/2 * * * ? ") // 测试使用,每2分钟 public void materialPurchaseInfo() throws Exception { materialMainService.materialPurchaseInfo(); } diff --git a/nflg_project_dev/material/src/main/java/com/nflg/product/material/pojo/entity/MaterialMainEntity.java b/nflg_project_dev/material/src/main/java/com/nflg/product/material/pojo/entity/MaterialMainEntity.java index ef684677..60b865e7 100644 --- a/nflg_project_dev/material/src/main/java/com/nflg/product/material/pojo/entity/MaterialMainEntity.java +++ b/nflg_project_dev/material/src/main/java/com/nflg/product/material/pojo/entity/MaterialMainEntity.java @@ -376,6 +376,13 @@ public class MaterialMainEntity implements Serializable { @ApiModelProperty("通用程度") private String generalLevel; + /** + * 物料价格 + */ + @TableField(value = "material_price") + @ApiModelProperty(value = "物料价格") + private BigDecimal materialPrice; + private static final long serialVersionUID = 1L; } diff --git a/nflg_project_dev/material/src/main/java/com/nflg/product/material/pojo/sop/SopMaterialInfo.java b/nflg_project_dev/material/src/main/java/com/nflg/product/material/pojo/sop/SopMaterialInfo.java index 9ecf4d4c..baaca7f5 100644 --- a/nflg_project_dev/material/src/main/java/com/nflg/product/material/pojo/sop/SopMaterialInfo.java +++ b/nflg_project_dev/material/src/main/java/com/nflg/product/material/pojo/sop/SopMaterialInfo.java @@ -65,4 +65,6 @@ public class SopMaterialInfo { private String PLIFZ; // 采购属性信息 end + @ApiModelProperty("物料价格") + private String materialPrice; } diff --git a/nflg_project_dev/material/src/main/java/com/nflg/product/material/service/MaterialMainService.java b/nflg_project_dev/material/src/main/java/com/nflg/product/material/service/MaterialMainService.java index dbf828d6..ac42097d 100644 --- a/nflg_project_dev/material/src/main/java/com/nflg/product/material/service/MaterialMainService.java +++ b/nflg_project_dev/material/src/main/java/com/nflg/product/material/service/MaterialMainService.java @@ -1948,6 +1948,22 @@ public class MaterialMainService extends ServiceImpl getSapPriceInfo(List materialNos) throws Exception { + String materialNoSnippet = CollUtil.join(materialNos, "','"); + materialNoSnippet = "'".concat(materialNoSnippet).concat("'"); + // select IDNRK,RECORDMODE,TXTLG,MENGE,MEINS,OBDAYS,EKGRP,BESKZ,SOBSL,MATL_GROUP,PICTURE,DATA_UPDATE, STORE, MAKER,PROPOSER,MOVE_TIME,DEPT,LVORM,VPRSV,PEINH,VERPR,STPRS,WAERS from SAPABAP1."/BIC/AZQT_M00122" + String sql = "select IDNRK,(case when peinh = 0 then 0 when peinh <> 0 and vprsv = 'V' then verpr / peinh else stprs / peinh end) materialPrice from SAPABAP1.\"/BIC/AZQT_M00122\""; + sql = sql.concat(" where idnrk in ( "); + sql = sql.concat(materialNoSnippet).concat(" ) "); + + log.info("获取HANA物料价格"); + PreparedStatement preparedStatement = sopConnection.prepareStatement(sql); + ResultSet resultSet = preparedStatement.executeQuery(); + List sopMaterialInfos = resultSetToBean(resultSet, SopMaterialInfo.class); + + return sopMaterialInfos; + } + /** * 获取HANA物料采购属性信息 * @param materialNos @@ -2224,8 +2240,13 @@ public class MaterialMainService extends ServiceImpl filterList) { diff --git a/nflg_project_dev/material/src/main/java/com/nflg/product/material/service/SapInfoService.java b/nflg_project_dev/material/src/main/java/com/nflg/product/material/service/SapInfoService.java index 34f1dd93..ec66a93f 100644 --- a/nflg_project_dev/material/src/main/java/com/nflg/product/material/service/SapInfoService.java +++ b/nflg_project_dev/material/src/main/java/com/nflg/product/material/service/SapInfoService.java @@ -57,8 +57,16 @@ public class SapInfoService { System.out.println("获取sap最近库存时间数据错误"); } }, futureTaskPool); + CompletableFuture task6 = CompletableFuture.runAsync(() -> { + try { + initSapPriceInfo(result); + } catch (Exception e) { + System.out.println("获取sap物料价格数据错误".concat(e.getMessage())); + } + }, futureTaskPool); task4.join(); task5.join(); + task6.join(); } public void initSapInfo(List> result) { @@ -153,6 +161,22 @@ public class SapInfoService { } } + private void initSapPriceInfo(List> data) throws Exception { + List materialNos = data.stream().map(u -> u.get("materialNo").toString()).collect(Collectors.toList()); + List sapMaterialList = materialMainService.getSapPriceInfo(handlerToSapMaterialNo(materialNos)); + if (sapMaterialList != null && sapMaterialList.size() > 0) { + Map sapMaterialMp = sapMaterialList.stream().collect(Collectors.toMap(SopMaterialInfo::getIDNRK, user -> user, (oldValue, newValue) -> newValue)); + data.forEach(m -> { + if (sapMaterialMp.containsKey(handlerMaterialNoToSapMaterialNo(m.get("materialNo").toString()))) { + SopMaterialInfo sapMaterialInfo = sapMaterialMp.get(handlerMaterialNoToSapMaterialNo(m.get("materialNo").toString())); + if (sapMaterialInfo != null) { + m.put("materialPrice", sapMaterialInfo.getMaterialPrice()); + } + } + }); + } + } + public void materialPurchasePropInfoTask(List> result) { CompletableFuture task = CompletableFuture.runAsync(() -> { try {