From 251930ad8f3f505fd16784fcde8c982d462eca0b Mon Sep 17 00:00:00 2001 From: liuy <37787198+LiuyCodes@users.noreply.github.com> Date: Mon, 28 Oct 2024 14:56:02 +0800 Subject: [PATCH] =?UTF-8?q?refactor(sales):=20=E4=BC=98=E5=8C=96=E9=94=80?= =?UTF-8?q?=E5=94=AE=E5=92=8C=E9=80=80=E8=B4=A7=E6=B5=81=E7=A8=8B=E7=9A=84?= =?UTF-8?q?=E5=B9=B6=E5=8F=91=E6=8E=A7=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在 SoSaleOutPluginInitializerToC 和 SoSaleReturnPluginInitializerToC 类中添加了 ReentrantLock- 为 getSetStock 和 getSetTran 方法添加了并发控制逻辑 - 增加了异常捕获和日志记录,提高了系统的健壮性 --- .../sales/SoSaleOutPluginInitializerToC.java | 40 +++++++++++------ .../SoSaleReturnPluginInitializerToC.java | 44 +++++++++++++------ 2 files changed, 58 insertions(+), 26 deletions(-) diff --git a/buildpackage/src/main/java/com/hzya/frame/plugin/lets/plugin/sales/SoSaleOutPluginInitializerToC.java b/buildpackage/src/main/java/com/hzya/frame/plugin/lets/plugin/sales/SoSaleOutPluginInitializerToC.java index 2d89209b..fd8eeb02 100644 --- a/buildpackage/src/main/java/com/hzya/frame/plugin/lets/plugin/sales/SoSaleOutPluginInitializerToC.java +++ b/buildpackage/src/main/java/com/hzya/frame/plugin/lets/plugin/sales/SoSaleOutPluginInitializerToC.java @@ -408,12 +408,19 @@ public class SoSaleOutPluginInitializerToC extends PluginBaseEntity { * @author liuyang */ private void getSetStock(List headerDetailsDtoList) throws Exception { - //过滤成功的数据 - List headerDetailsDtos = filterDataStock(headerDetailsDtoList); - //保存到mysql底表 - batchInsert(headerDetailsDtos); - //执行推送主逻辑 - implementStock(headerDetailsDtos); + LOCK1.lock(); + try { + //过滤成功的数据 + List headerDetailsDtos = filterDataStock(headerDetailsDtoList); + //保存到mysql底表 + batchInsert(headerDetailsDtos); + //执行推送主逻辑 + implementStock(headerDetailsDtos); + } catch (Exception e) { + logger.error("TOC销售-库存:getSetStock方法抛出异常", e); + } finally { + LOCK1.unlock(); + } } /** @@ -422,13 +429,20 @@ public class SoSaleOutPluginInitializerToC extends PluginBaseEntity { * @author liuyang */ private void getSetTran(List headerDetailsDtoList) throws Exception { - //先过滤成功的数据,再保存到低表 - //headerDetailsDtos携带红、蓝单据推送成功与否的明细行 - List headerDetailsDtos = filterDataTran(headerDetailsDtoList); - //保存到mysql底表 - batchInsert(headerDetailsDtos); - //执行推送主逻辑 - implementTran(headerDetailsDtos); + LOCK2.lock(); + try { + //先过滤成功的数据,再保存到低表 + //headerDetailsDtos携带红、蓝单据推送成功与否的明细行 + List headerDetailsDtos = filterDataTran(headerDetailsDtoList); + //保存到mysql底表 + batchInsert(headerDetailsDtos); + //执行推送主逻辑 + implementTran(headerDetailsDtos); + } catch (Exception e) { + logger.error("TOC销售-交易成功:getSetTran方法抛出异常", e); + } finally { + LOCK2.unlock(); + } } /** diff --git a/buildpackage/src/main/java/com/hzya/frame/plugin/lets/plugin/sales/SoSaleReturnPluginInitializerToC.java b/buildpackage/src/main/java/com/hzya/frame/plugin/lets/plugin/sales/SoSaleReturnPluginInitializerToC.java index 6ef56932..adc18c67 100644 --- a/buildpackage/src/main/java/com/hzya/frame/plugin/lets/plugin/sales/SoSaleReturnPluginInitializerToC.java +++ b/buildpackage/src/main/java/com/hzya/frame/plugin/lets/plugin/sales/SoSaleReturnPluginInitializerToC.java @@ -57,7 +57,11 @@ public class SoSaleReturnPluginInitializerToC extends PluginBaseEntity { Logger logger = LoggerFactory.getLogger(SoSaleReturnPluginInitializerToC.class); - private static final ReentrantLock LOCK = new ReentrantLock(true); +// private static final ReentrantLock LOCK = new ReentrantLock(true); + + private static final ReentrantLock LOCK1 = new ReentrantLock(true); + + private static final ReentrantLock LOCK2 = new ReentrantLock(true); private static final String STOCK = "stock"; @@ -333,12 +337,19 @@ public class SoSaleReturnPluginInitializerToC extends PluginBaseEntity { * @author liuyang */ private void getSetStock(List returnGoodHeaderDetailsDataDtoArrayList) throws Exception { - //过滤成功的数据 - List stockinOrderList = filterDataStock(returnGoodHeaderDetailsDataDtoArrayList); - //保存到mysql - batchInsert(stockinOrderList); - //执行推送主逻辑 - implementStock(stockinOrderList); + LOCK1.lock(); + try { + //过滤成功的数据 + List stockinOrderList = filterDataStock(returnGoodHeaderDetailsDataDtoArrayList); + //保存到mysql + batchInsert(stockinOrderList); + //执行推送主逻辑 + implementStock(stockinOrderList); + } catch (Exception e) { + logger.error("TOC退货-库存:getSetStock方法抛出异常", e); + } finally { + LOCK1.unlock(); + } } /** @@ -347,12 +358,19 @@ public class SoSaleReturnPluginInitializerToC extends PluginBaseEntity { * @author liuyang */ private void getSetTran(List returnGoodHeaderDetailsDataDtoArrayList) throws Exception { - //过滤成功的数据 - List stockinOrderList = filterDataTran(returnGoodHeaderDetailsDataDtoArrayList); - //保存到mysql - batchInsert(stockinOrderList); - //执行推送主逻辑 - implementTran(stockinOrderList); + LOCK2.lock(); + try { + //过滤成功的数据 + List stockinOrderList = filterDataTran(returnGoodHeaderDetailsDataDtoArrayList); + //保存到mysql + batchInsert(stockinOrderList); + //执行推送主逻辑 + implementTran(stockinOrderList); + } catch (Exception e) { + logger.error("TOC退货-确认收入:getSetTran方法抛出异常", e); + } finally { + LOCK2.unlock(); + } } /**