From bbba76de054e32256073bba7415380eb0026e24a Mon Sep 17 00:00:00 2001 From: liuy <37787198+LiuyCodes@users.noreply.github.com> Date: Fri, 11 Oct 2024 15:34:23 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8DOFS=E5=94=AE=E5=90=8E?= =?UTF-8?q?=E5=85=A5=E5=BA=93=E5=8D=95=E4=BC=98=E6=83=A0=E9=87=91=E9=A2=9D?= =?UTF-8?q?=E8=AE=A1=E7=AE=97=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在SoSaleReturnPluginInitializerToC类中添加累加优惠金额的方法 - 修改GoodsRertunSonDetailsDto类,增加优惠金额字段 - 在OfsOrderAfterSalesAmountAllocationUtil类中移除测试代码 -优化OfsOrderSaleAmountAllocationUtil类中的测试代码 --- .../sales/SoSaleOutPluginInitializerToB.java | 2 +- .../sales/SoSaleOutPluginInitializerToC.java | 8 +- .../SoSaleReturnPluginInitializerToC.java | 127 ++++++++++++++++++ .../lets/u8cdto/GoodsRertunSonDetailsDto.java | 12 ++ ...fsOrderAfterSalesAmountAllocationUtil.java | 8 ++ .../OfsOrderSaleAmountAllocationUtil.java | 12 +- .../RerturnGoodsOrderSearchDetails.java | 1 + 7 files changed, 159 insertions(+), 11 deletions(-) diff --git a/buildpackage/src/main/java/com/hzya/frame/plugin/lets/plugin/sales/SoSaleOutPluginInitializerToB.java b/buildpackage/src/main/java/com/hzya/frame/plugin/lets/plugin/sales/SoSaleOutPluginInitializerToB.java index e2a7a36a..d5594506 100644 --- a/buildpackage/src/main/java/com/hzya/frame/plugin/lets/plugin/sales/SoSaleOutPluginInitializerToB.java +++ b/buildpackage/src/main/java/com/hzya/frame/plugin/lets/plugin/sales/SoSaleOutPluginInitializerToB.java @@ -1835,7 +1835,7 @@ public class SoSaleOutPluginInitializerToB extends PluginBaseEntity { //单据红字标识 salesInvoiceHeadDto.setPk_defdoc16(OverallConstant.getOverAllValue("u8c自定义项档案-单据红字标识-N主键")); salesInvoiceHeadDto.setVdef16(OverallConstant.getOverAllValue("u8c自定义项档案-单据红字标识-N名称")); - + List salesInvoiceBodyDtoList = new ArrayList<>(); for (int j = 0; j < details.size(); j++) { DetailsDto detailsDto = details.get(j); 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 0764fb34..9ddab6aa 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 @@ -862,10 +862,10 @@ public class SoSaleOutPluginInitializerToC extends PluginBaseEntity { saleorderRequestChildrenDtoList.add(saleorderRequestChildrenDto); //销售订单单据推送到u8c - //TODO 测试 - if (true) { - continue; - } + //测试 +// if (true) { +// continue; +// } List saleorderRequestDtoList = new ArrayList<>(); saleorderRequestDtoList.add(saleorderRequestDto); 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 0f4a2b54..81980925 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 @@ -683,6 +683,27 @@ public class SoSaleReturnPluginInitializerToC extends PluginBaseEntity { saleorderRequestChildrenDto.setNtaxrate(new BigDecimal(bdTaxitemsEntity1.getTaxratio()).stripTrailingZeros().toPlainString());//税率 // saleorderRequestChildrenDto.setVdef2(bdCostsubjEntity.getCostname());//收支项目 // saleorderRequestChildrenDto.setPk_defdoc2(bdCostsubjEntity.getPkCostsubj()); + //如果优惠金额为0,则传0 + if (goodsRertunSonDetailsDto != null && !"0".equals(goodsRertunSonDetailsDto.getVdef4().stripTrailingZeros().toPlainString())) { + saleorderRequestChildrenDto.setVdef4("-" + goodsRertunSonDetailsDto.getVdef4().stripTrailingZeros().toPlainString()); + } else { + saleorderRequestChildrenDto.setVdef4("0"); + } + if (goodsRertunSonDetailsDto != null && !"0".equals(goodsRertunSonDetailsDto.getVdef5().stripTrailingZeros().toPlainString())) { + saleorderRequestChildrenDto.setVdef5("-" + goodsRertunSonDetailsDto.getVdef5().stripTrailingZeros().toPlainString()); + } else { + saleorderRequestChildrenDto.setVdef5("0"); + } + if (goodsRertunSonDetailsDto != null && !"0".equals(goodsRertunSonDetailsDto.getVdef6().stripTrailingZeros().toPlainString())) { + saleorderRequestChildrenDto.setVdef6("-" + goodsRertunSonDetailsDto.getVdef6().stripTrailingZeros().toPlainString()); + } else { + saleorderRequestChildrenDto.setVdef6("0"); + } + if (goodsRertunSonDetailsDto != null && !"0".equals(goodsRertunSonDetailsDto.getVdef7().stripTrailingZeros().toPlainString())) { + saleorderRequestChildrenDto.setVdef7("-" + goodsRertunSonDetailsDto.getVdef7().stripTrailingZeros().toPlainString()); + } else { + saleorderRequestChildrenDto.setVdef7("0"); + } saleorderRequestChildrenDtoList.add(saleorderRequestChildrenDto); //销售订单单据推送到u8c @@ -869,6 +890,27 @@ public class SoSaleReturnPluginInitializerToC extends PluginBaseEntity { saleorderRequestChildrenDto.setNtaxrate(new BigDecimal(bdTaxitemsEntity1.getTaxratio()).stripTrailingZeros().toPlainString());//税率 // saleorderRequestChildrenDto.setVdef2(bdCostsubjEntity.getCostname());//收支项目 // saleorderRequestChildrenDto.setPk_defdoc2(bdCostsubjEntity.getPkCostsubj()); + //如果优惠金额为0,则传0 + if (goodsRertunSonDetailsDto != null && !"0".equals(goodsRertunSonDetailsDto.getVdef4().stripTrailingZeros().toPlainString())) { + saleorderRequestChildrenDto.setVdef4("-" + goodsRertunSonDetailsDto.getVdef4().stripTrailingZeros().toPlainString()); + } else { + saleorderRequestChildrenDto.setVdef4("0"); + } + if (goodsRertunSonDetailsDto != null && !"0".equals(goodsRertunSonDetailsDto.getVdef5().stripTrailingZeros().toPlainString())) { + saleorderRequestChildrenDto.setVdef5("-" + goodsRertunSonDetailsDto.getVdef5().stripTrailingZeros().toPlainString()); + } else { + saleorderRequestChildrenDto.setVdef5("0"); + } + if (goodsRertunSonDetailsDto != null && !"0".equals(goodsRertunSonDetailsDto.getVdef6().stripTrailingZeros().toPlainString())) { + saleorderRequestChildrenDto.setVdef6("-" + goodsRertunSonDetailsDto.getVdef6().stripTrailingZeros().toPlainString()); + } else { + saleorderRequestChildrenDto.setVdef6("0"); + } + if (goodsRertunSonDetailsDto != null && !"0".equals(goodsRertunSonDetailsDto.getVdef7().stripTrailingZeros().toPlainString())) { + saleorderRequestChildrenDto.setVdef7("-" + goodsRertunSonDetailsDto.getVdef7().stripTrailingZeros().toPlainString()); + } else { + saleorderRequestChildrenDto.setVdef7("0"); + } saleorderRequestChildrenDtoList.add(saleorderRequestChildrenDto); //销售订单单据推送到u8c @@ -1376,6 +1418,10 @@ public class SoSaleReturnPluginInitializerToC extends PluginBaseEntity { GoodsRertunSonDetailsDto goodsRertunSonDetailsDto = sonDetailsDtoList.get(0); goodsRertunSonDetailsDto.setGroupShipQty(groupShipQty); goodsRertunSonDetailsDto.setGroupTotalPayAmount(groupTotalPayAmount); + + //累加优惠金额 + accumulationDiscountAmount(sonDetailsDtoList); + logger.info("TOB{}个明细行发生了合并!", sonDetailsDtoList.size()); return goodsRertunSonDetailsDto; } else { @@ -2144,4 +2190,85 @@ public class SoSaleReturnPluginInitializerToC extends PluginBaseEntity { } return dateRange; } + + /** + * 累加平台优惠 + * + * @param sonDetailsDtoList OFS售后入库单 + * @author liuyang + */ + private void accumulationDiscountAmount(List sonDetailsDtoList) throws Exception { + Assert.notNull(sonDetailsDtoList, "sonDetailsDtoList不能为空"); + + if (sonDetailsDtoList.size() > 0) { + BigDecimal totalShareTargetPlatformDiscounts = new BigDecimal("0"); + BigDecimal totalShareTargetMerchantDiscounts = new BigDecimal("0"); + BigDecimal totalShareTargetExpertDiscounts = new BigDecimal("0"); + BigDecimal totalShareTargetPayDiscounts = new BigDecimal("0"); + + for (int i = 0; i < sonDetailsDtoList.size(); i++) { + //OFS售后入库单表体 + GoodsRertunSonDetailsDto goodsRertunSonDetailsDto = sonDetailsDtoList.get(i); + //OFS售后入库单表头 + StockinOrderSearchResponse.StockinOrder.StockinH header1 = goodsRertunSonDetailsDto.getHeader(); + Assert.notNull(header1, "OFS售后入库单表头不能为空!"); + //OFS售后订单 + RerturnGoodsOrderSearchData rerturnGoodsOrderSearchData = header1.getRerturnGoodsOrderSearchData(); + Assert.notNull(rerturnGoodsOrderSearchData, "通过OFS售后入库单号无法关联批量到OFS售后订单! OFS售后入库单编码:{} OFS售后订单号:{}", header1.getCode(), header1.getRefOrderCode()); + RerturnGoodsOrderSearchHeader header = rerturnGoodsOrderSearchData.getHeader(); + List details = rerturnGoodsOrderSearchData.getDetails(); + + //四舍五入保留2位 + RerturnGoodsOrderSearchDetails ofsOrderDetail = findOfsOrderDetail(details, goodsRertunSonDetailsDto); + if (ofsOrderDetail.getShareTargetPlatformDiscounts() != null) { + totalShareTargetPlatformDiscounts = totalShareTargetPlatformDiscounts.add(ofsOrderDetail.getShareTargetPlatformDiscounts()); + } + if (ofsOrderDetail.getShareTargetMerchantDiscounts() != null) { + totalShareTargetMerchantDiscounts = totalShareTargetMerchantDiscounts.add(ofsOrderDetail.getShareTargetMerchantDiscounts()); + } + if (ofsOrderDetail.getShareTargetExpertDiscounts() != null) { + totalShareTargetExpertDiscounts = totalShareTargetExpertDiscounts.add(ofsOrderDetail.getShareTargetExpertDiscounts()); + } + if (ofsOrderDetail.getShareTargetPayDiscounts() != null) { + totalShareTargetPayDiscounts = totalShareTargetPayDiscounts.add(ofsOrderDetail.getShareTargetPayDiscounts()); + } + logger.info("对应的售后入库单明细行主键:{}", goodsRertunSonDetailsDto.getId()); + } + + GoodsRertunSonDetailsDto goodsRertunSonDetailsDto = sonDetailsDtoList.get(0); + StockinOrderSearchResponse.StockinOrder.StockinH header = goodsRertunSonDetailsDto.getHeader(); + + goodsRertunSonDetailsDto.setVdef4(totalShareTargetPlatformDiscounts.setScale(2, BigDecimal.ROUND_HALF_UP)); + goodsRertunSonDetailsDto.setVdef5(totalShareTargetMerchantDiscounts.setScale(2, BigDecimal.ROUND_HALF_UP)); + goodsRertunSonDetailsDto.setVdef6(totalShareTargetExpertDiscounts.setScale(2, BigDecimal.ROUND_HALF_UP)); + goodsRertunSonDetailsDto.setVdef7(totalShareTargetPayDiscounts.setScale(2, BigDecimal.ROUND_HALF_UP)); + + logger.info("售后入库明细主键:{} 售后入库单号:{} 最终汇总好的平台优惠:{}、支付优惠:{}、达人优惠:{}、商家优惠:{}", goodsRertunSonDetailsDto.getId(), header.getCode(), goodsRertunSonDetailsDto.getVdef4(), goodsRertunSonDetailsDto.getVdef5(), goodsRertunSonDetailsDto.getVdef6(), goodsRertunSonDetailsDto.getVdef7()); + } else { + logger.info("accumulationDiscountAmount方法对应的sonDetailsDtoList.size为零!"); + } + } + + /** + * 根据OFS售后入库单明细行,查找匹配OFS售后订单明细行 + * + * @param details OFS售后订单明细行 + * @param goodsRertunSonDetailsDto OFS售后入库单明细对象 + * @author liuyang + */ + private RerturnGoodsOrderSearchDetails findOfsOrderDetail(List details, GoodsRertunSonDetailsDto goodsRertunSonDetailsDto) { + Assert.notNull(details, "details不能为空"); + Assert.notNull(goodsRertunSonDetailsDto, "goodsRertunSonDetailsDto不能为空"); + + for (int i = 0; i < details.size(); i++) { + RerturnGoodsOrderSearchDetails rerturnGoodsOrderSearchDetails = details.get(i); + if (goodsRertunSonDetailsDto.getRefOrderDetailId() != null && rerturnGoodsOrderSearchDetails.getId() != null) { + if (goodsRertunSonDetailsDto.getRefOrderDetailId().equals(rerturnGoodsOrderSearchDetails.getId())) { + return rerturnGoodsOrderSearchDetails; + } + } + } + Assert.state(false, "根据OFS售后入库单明细行,无法查找OFS售后订单明细行 来源明细行主键:{} 来源单据主键:{}", goodsRertunSonDetailsDto.getRefOrderDetailId(), goodsRertunSonDetailsDto.getRefOrderId()); + return null; + } } \ No newline at end of file diff --git a/buildpackage/src/main/java/com/hzya/frame/plugin/lets/u8cdto/GoodsRertunSonDetailsDto.java b/buildpackage/src/main/java/com/hzya/frame/plugin/lets/u8cdto/GoodsRertunSonDetailsDto.java index 37e8d399..3d048c8a 100644 --- a/buildpackage/src/main/java/com/hzya/frame/plugin/lets/u8cdto/GoodsRertunSonDetailsDto.java +++ b/buildpackage/src/main/java/com/hzya/frame/plugin/lets/u8cdto/GoodsRertunSonDetailsDto.java @@ -119,4 +119,16 @@ public class GoodsRertunSonDetailsDto extends StockinOrderSearchResponse.Stockin * 存货税率 */ private BdTaxitemsEntity bdTaxitemsEntity; + + //累加平台优惠 + private BigDecimal vdef4; + + //累加支付优惠 + private BigDecimal vdef5; + + //累加达人优惠 + private BigDecimal vdef6; + + //累加商家优惠 + private BigDecimal vdef7; } \ No newline at end of file diff --git a/buildpackage/src/main/java/com/hzya/frame/plugin/lets/util/OfsOrderAfterSalesAmountAllocationUtil.java b/buildpackage/src/main/java/com/hzya/frame/plugin/lets/util/OfsOrderAfterSalesAmountAllocationUtil.java index 8f0da61e..16f5157b 100644 --- a/buildpackage/src/main/java/com/hzya/frame/plugin/lets/util/OfsOrderAfterSalesAmountAllocationUtil.java +++ b/buildpackage/src/main/java/com/hzya/frame/plugin/lets/util/OfsOrderAfterSalesAmountAllocationUtil.java @@ -58,8 +58,16 @@ public class OfsOrderAfterSalesAmountAllocationUtil { * @author liuyang */ public void tocSalesAmountAllocation(RerturnGoodsOrderSearchData rerturnGoodsOrderSearchData) throws Exception { + Assert.notNull(rerturnGoodsOrderSearchData, "rerturnGoodsOrderSearchData不能为空"); logger.info("==TOC退货金额分摊开始=="); + //测试 +// RerturnGoodsOrderSearchHeader header2 = rerturnGoodsOrderSearchData.getHeader(); +// header2.setPlatformDiscounts("3.75"); +// header2.setMerchantDiscounts("7.88"); +// header2.setExpertDiscounts("4.22"); +// header2.setPayDiscounts("1.96"); + Assert.notNull(rerturnGoodsOrderSearchData, "OFS售后订单对象不能为空"); RerturnGoodsOrderSearchHeader header = rerturnGoodsOrderSearchData.getHeader(); List detailsOld = rerturnGoodsOrderSearchData.getDetails(); diff --git a/buildpackage/src/main/java/com/hzya/frame/plugin/lets/util/OfsOrderSaleAmountAllocationUtil.java b/buildpackage/src/main/java/com/hzya/frame/plugin/lets/util/OfsOrderSaleAmountAllocationUtil.java index 9660b4ef..59a3692f 100644 --- a/buildpackage/src/main/java/com/hzya/frame/plugin/lets/util/OfsOrderSaleAmountAllocationUtil.java +++ b/buildpackage/src/main/java/com/hzya/frame/plugin/lets/util/OfsOrderSaleAmountAllocationUtil.java @@ -57,12 +57,12 @@ public class OfsOrderSaleAmountAllocationUtil { public void tocSalesAmountAllocation(com.hzya.frame.ttxofs.dto.ofssalesordersearch.HeaderDetailsDto headerDetailsDto) throws Exception { logger.info("==TOC销售金额分摊开始=="); - //TODO 测试 - HeaderDto header1 = headerDetailsDto.getHeader(); - header1.setPlatformDiscounts("2.3"); - header1.setMerchantDiscounts("4.9"); - header1.setExpertDiscounts("1.2"); - header1.setPayDiscounts("6.7"); + //测试 +// HeaderDto header1 = headerDetailsDto.getHeader(); +// header1.setPlatformDiscounts("2.3"); +// header1.setMerchantDiscounts("4.9"); +// header1.setExpertDiscounts("1.2"); +// header1.setPayDiscounts("6.7"); Assert.notNull(headerDetailsDto, "OFS销售订单对象不能为空"); HeaderDto header = headerDetailsDto.getHeader(); diff --git a/service/src/main/java/com/hzya/frame/ttxofs/dto/returngoodordersearch/RerturnGoodsOrderSearchDetails.java b/service/src/main/java/com/hzya/frame/ttxofs/dto/returngoodordersearch/RerturnGoodsOrderSearchDetails.java index b9f00121..3964695c 100755 --- a/service/src/main/java/com/hzya/frame/ttxofs/dto/returngoodordersearch/RerturnGoodsOrderSearchDetails.java +++ b/service/src/main/java/com/hzya/frame/ttxofs/dto/returngoodordersearch/RerturnGoodsOrderSearchDetails.java @@ -44,6 +44,7 @@ public class RerturnGoodsOrderSearchDetails { private String createdBy; private String lastUpdated; private String lastUpdatedBy; + private String refOrderDetailId; //分摊比例 private BigDecimal sharingRatio;