From f2e9ac83f23c74dc7414ac4881cf16916f342166 Mon Sep 17 00:00:00 2001 From: yinq Date: Fri, 18 Apr 2025 14:19:46 +0800 Subject: [PATCH] =?UTF-8?q?change=20-=20=E4=BB=A5=E7=8B=AC=E7=AB=8B?= =?UTF-8?q?=E4=BA=8B=E5=8A=A1=E6=96=B9=E5=BC=8F=E6=9B=B4=E6=96=B0WMS?= =?UTF-8?q?=E5=8E=9F=E6=9D=90=E6=96=99=E5=85=A5=E5=BA=93=E5=8D=95=E7=8A=B6?= =?UTF-8?q?=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/WmsErpScheduledTaskServiceImpl.java | 43 +++++++++++++++---- 1 file changed, 35 insertions(+), 8 deletions(-) diff --git a/hw-modules/hw-wms/src/main/java/com/hw/wms/service/impl/WmsErpScheduledTaskServiceImpl.java b/hw-modules/hw-wms/src/main/java/com/hw/wms/service/impl/WmsErpScheduledTaskServiceImpl.java index efe950fa..a31fbe46 100644 --- a/hw-modules/hw-wms/src/main/java/com/hw/wms/service/impl/WmsErpScheduledTaskServiceImpl.java +++ b/hw-modules/hw-wms/src/main/java/com/hw/wms/service/impl/WmsErpScheduledTaskServiceImpl.java @@ -1,6 +1,9 @@ package com.hw.wms.service.impl; import com.alibaba.fastjson2.JSONObject; +import com.alibaba.nacos.shaded.com.google.gson.Gson; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; import com.hw.common.core.constant.SecurityConstants; import com.hw.common.core.constant.WmsConstants; import com.hw.common.core.domain.R; @@ -134,21 +137,45 @@ public class WmsErpScheduledTaskServiceImpl implements IWmsErpScheduledTaskServi String params = data.toJSONString(); try { R paramsResult = remoteJindieService.savePurchaseStorage(params, SecurityConstants.INNER); - String paramsResultData = paramsResult.getMsg(); - JSONObject jsonObject = JSONObject.parseObject(paramsResultData); - Boolean isSuccess = (Boolean) jsonObject.get("IsSuccess"); + Gson gson = new Gson(); + String paramsResulJson = gson.toJson(paramsResult); + log.info("+++++++++paramsResult+++++++" + paramsResulJson); + ObjectMapper mapper = new ObjectMapper(); + JsonNode rootNode = mapper.readTree(paramsResulJson); + String msgStr = rootNode.path("data").path("msg").asText(); + log.info("+++++++++msgStr+++++++" + msgStr); + JsonNode msgNode = mapper.readTree(msgStr); + boolean isSuccess = msgNode.path("IsSuccess").asBoolean(); + log.info("+++++++++isSuccess+++++++" + isSuccess); if (isSuccess) { result++; - log.info("synchronizeInventoryInformationToERP同步原材料入库成功:" + paramsResult.toString()); + log.info("synchronizeInventoryInformationToERP同步原材料入库成功:" + paramsResulJson); } else { - log.error("synchronizeInventoryInformationToERP同步原材料入库失败:" + paramsResult.toString()); - throw new ServiceException("同步原材料入库失败" + paramsResult.toString()); + updateWmsRawInStockWithoutRollback(wmsRawInstockList); + log.error("synchronizeInventoryInformationToERP同步原材料入库失败:" + paramsResulJson); + throw new ServiceException("同步原材料入库失败" + paramsResulJson); } } catch (Exception e) { - log.error("同步原材料入库失败" + e.getMessage()); - throw new ServiceException("同步原材料入库失败" + e.getMessage()); + updateWmsRawInStockWithoutRollback(wmsRawInstockList); + log.error("同步原材料入库失败:" + e); + throw new ServiceException("同步原材料入库失败::" + e); } + } + /** + * 以独立事务方式更新WMS原材料入库单状态(不受外部事务回滚影响) + * 使用REQUIRES_NEW传播级别确保即使外部事务回滚,本方法的更新操作也会提交 + * + * @param wmsRawInstockList 需要更新的原材料入库单列表 + */ + @Transactional(propagation = Propagation.REQUIRES_NEW) + public void updateWmsRawInStockWithoutRollback(List wmsRawInstockList) { + for (WmsRawInstock rawInstock : wmsRawInstockList) { + rawInstock.setErpStatus("0");//同步ERP状态(0:失败,1成功) + rawInstock.setErpAmount(rawInstock.getInstockAmount()); + rawInstock.setUpdateDate(DateUtils.getNowDate()); + wmsRawInstockMapper.updateWmsRawInstock(rawInstock); + } } /**