From e7bd9da8b8a2538a06c0390e5f8f6af36076aa9d Mon Sep 17 00:00:00 2001 From: Yen Date: Wed, 28 May 2025 15:34:46 +0800 Subject: [PATCH] =?UTF-8?q?=E8=BF=94=E5=88=A9=E8=B0=83=E6=95=B4=EF=BC=9Aop?= =?UTF-8?q?t:=E8=BF=94=E5=88=A9=E8=87=AA=E5=8A=A8=E6=A0=B8=E9=94=80?= =?UTF-8?q?=E5=A4=A9=E6=95=B0=E5=8F=82=E6=95=B0=EF=BC=9Bfeat:=E8=87=AA?= =?UTF-8?q?=E5=8A=A8=E8=AE=A1=E7=AE=97=E5=90=8C=E6=9C=9F=E5=8F=91=E8=B4=A7?= =?UTF-8?q?=E9=87=91=E9=A2=9D=EF=BC=9Bopt:=E6=B4=BB=E5=8A=A8=E7=AE=80?= =?UTF-8?q?=E8=BF=B0=E4=BD=BF=E7=94=A8=E5=9D=8E=E7=BA=A7=E4=BE=8B=E5=AD=90?= =?UTF-8?q?=EF=BC=9Bfeat:=E6=98=AF=E5=90=A6=E8=87=AA=E5=8A=A8=E5=8F=91?= =?UTF-8?q?=E8=B5=B7=E9=9C=80=E8=A6=81=E5=81=9A=E6=A0=B8=E9=94=80=E5=88=86?= =?UTF-8?q?=E6=94=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../serve/modules/tzc/entity/TzcRebate.java | 5 ++- .../modules/tzc/entity/bo/TzcRebateParam.java | 6 ++- .../impl/BirCenterRateServiceImpl.java | 8 +++- .../TzcRebateApplication4CostServiceImpl.java | 40 ++++++++++++++++--- .../impl/TzcRebateApplicationServiceImpl.java | 13 ++++-- .../modules/vtb/common/VerificationUtil.java | 19 +++++++++ .../listener/VtbRebateAutoEventListener.java | 10 ++++- .../impl/VtbVerificationBatchServiceImpl.java | 2 +- .../impl/VtbVerificationServiceImpl.java | 1 + .../src/test/java/com/qs/TestStringSub.java | 15 +++++++ 10 files changed, 102 insertions(+), 17 deletions(-) create mode 100644 cms-modules/cms-system/src/test/java/com/qs/TestStringSub.java diff --git a/cms-modules/cms-policy/cms-policy-api/src/main/java/com/qs/serve/modules/tzc/entity/TzcRebate.java b/cms-modules/cms-policy/cms-policy-api/src/main/java/com/qs/serve/modules/tzc/entity/TzcRebate.java index 091245a..b06dae5 100644 --- a/cms-modules/cms-policy/cms-policy-api/src/main/java/com/qs/serve/modules/tzc/entity/TzcRebate.java +++ b/cms-modules/cms-policy/cms-policy-api/src/main/java/com/qs/serve/modules/tzc/entity/TzcRebate.java @@ -71,9 +71,12 @@ public class TzcRebate implements Serializable { /** 超过多少金额自动核销变为人工核销 */ private BigDecimal checkMaxAmount; - /** 自动核销日期类型:0-手动设置;1-自然月;2-自然周 */ + /** 自动核销日期类型:0-自然月;1-自然周;2-活动周期(作废);3-活动天数 */ private Integer checkAutoDateType; + /** 自动核销延迟天数 */ + private Integer checkAutoDays; + /** 核销开始时间 */ @DateTimeFormat(pattern = "yyyy-MM-dd") @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8") diff --git a/cms-modules/cms-policy/cms-policy-api/src/main/java/com/qs/serve/modules/tzc/entity/bo/TzcRebateParam.java b/cms-modules/cms-policy/cms-policy-api/src/main/java/com/qs/serve/modules/tzc/entity/bo/TzcRebateParam.java index cafbd2e..32bb5d4 100644 --- a/cms-modules/cms-policy/cms-policy-api/src/main/java/com/qs/serve/modules/tzc/entity/bo/TzcRebateParam.java +++ b/cms-modules/cms-policy/cms-policy-api/src/main/java/com/qs/serve/modules/tzc/entity/bo/TzcRebateParam.java @@ -51,10 +51,12 @@ public class TzcRebateParam{ //@NotNull(message = "超过多少金额自动核销变为人工核销不能为空") private BigDecimal checkMaxAmount; - /** 自动核销日期类型:0-手动设置;1-自然月;2-自然周 */ - @NotNull(message = "自动核销日期类型不能为空") + /** 自动核销日期类型:0-自然月;1-自然周;2-活动周期(作废);3-活动天数 */ private Integer checkAutoDateType; + /** 自动核销延迟天数 */ + private Integer checkAutoDays; + // /** 核销开始时间 */ // @NotNull(message = "核销开始时间不能为空") // @DateTimeFormat(pattern = "yyyy-MM-dd") diff --git a/cms-modules/cms-system/src/main/java/com/qs/serve/modules/bir/service/impl/BirCenterRateServiceImpl.java b/cms-modules/cms-system/src/main/java/com/qs/serve/modules/bir/service/impl/BirCenterRateServiceImpl.java index f52608a..5607c9b 100644 --- a/cms-modules/cms-system/src/main/java/com/qs/serve/modules/bir/service/impl/BirCenterRateServiceImpl.java +++ b/cms-modules/cms-system/src/main/java/com/qs/serve/modules/bir/service/impl/BirCenterRateServiceImpl.java @@ -267,11 +267,15 @@ public class BirCenterRateServiceImpl implements BirCenterRateService { budgetLambdaQueryWrapper.eq(TbsBudget::getCenterType,centerType); List tbsBudgetList = tbsBudgetMapper.selectList(budgetLambdaQueryWrapper); //通过预算ID取预算的发货和金额 + List budgetIds = tbsBudgetList.stream().map(TbsBudget::getId).collect(Collectors.toList()); + budgetIds.add(0L); LambdaQueryWrapper scheduleItemBudgetLambdaQueryWrapper = new LambdaQueryWrapper<>(); - scheduleItemBudgetLambdaQueryWrapper.in(TbsScheduleItemBudget::getBudgetId,tbsBudgetList.stream().map(TbsBudget::getId).collect(Collectors.toList())); + scheduleItemBudgetLambdaQueryWrapper.in(TbsScheduleItemBudget::getBudgetId,budgetIds); List scheduleItemBudgetList = tbsScheduleItemBudgetMapper.selectList(scheduleItemBudgetLambdaQueryWrapper); //合计目标发货和金定额 - BigDecimal targetDispatchAmout = scheduleItemBudgetList.stream().map(a->a.getPreDispatchAmount()==null?BigDecimal.ZERO:a.getPreDispatchAmount()).reduce(BigDecimal.ZERO,BigDecimal::add); + BigDecimal targetDispatchAmout = scheduleItemBudgetList.stream() + .map(a->a.getPreDispatchAmount()==null?BigDecimal.ZERO:a.getPreDispatchAmount()) + .reduce(BigDecimal.ZERO,BigDecimal::add); costCenter.setTargetSales(targetDispatchAmout.toString()); LambdaQueryWrapper tbsbudgetLogLambdaQueryWrapper = new LambdaQueryWrapper(); diff --git a/cms-modules/cms-system/src/main/java/com/qs/serve/modules/tzc/service/impl/TzcRebateApplication4CostServiceImpl.java b/cms-modules/cms-system/src/main/java/com/qs/serve/modules/tzc/service/impl/TzcRebateApplication4CostServiceImpl.java index 2518d49..356a129 100644 --- a/cms-modules/cms-system/src/main/java/com/qs/serve/modules/tzc/service/impl/TzcRebateApplication4CostServiceImpl.java +++ b/cms-modules/cms-system/src/main/java/com/qs/serve/modules/tzc/service/impl/TzcRebateApplication4CostServiceImpl.java @@ -1,11 +1,14 @@ package com.qs.serve.modules.tzc.service.impl; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.qs.serve.common.exception.Assert; import com.qs.serve.common.utils.CopierUtil; +import com.qs.serve.common.utils.StringUtils; import com.qs.serve.framework.base.util.DebugStrUtil; +import com.qs.serve.modules.erp.entity.vo.ErpDispatchSumPmsVo; import com.qs.serve.modules.tbs.common.TbsActivityState; import com.qs.serve.modules.tbs.common.TbsCostApplyState; import com.qs.serve.modules.tbs.entity.*; @@ -73,11 +76,13 @@ public class TzcRebateApplication4CostServiceImpl implements TzcRebateApplicatio // 默认延迟半个月 preCheckDays = 15; } - // 自动核销日期类型:0-手动设置;1-自然月;2-自然周 - if (rebate.getCheckAutoDateType().equals(1)){ + // 自动核销日期类型:0-自然月;1-自然周;2-活动周期(作废);3-活动天数 + if (rebate.getCheckAutoDateType().equals(0)){ preCheckDays = 30; - }else if (rebate.getCheckAutoDateType().equals(2)){ + }else if (rebate.getCheckAutoDateType().equals(1)){ preCheckDays = 7; + }else if (rebate.getCheckAutoDateType().equals(3)){ + preCheckDays = rebate.getCheckAutoDays(); } // 总返利金额 BigDecimal totalAllAmount = maxLevelsAmount.multiply(new BigDecimal(periodList.size())); @@ -98,8 +103,6 @@ public class TzcRebateApplication4CostServiceImpl implements TzcRebateApplicatio tbsActivitySubjectService.remove(delQw); } - - // 转化为费用申请 TbsCostApply costApply = new TbsCostApply(); boolean needComp = false; @@ -131,9 +134,17 @@ public class TzcRebateApplication4CostServiceImpl implements TzcRebateApplicatio tbsCostApplyService.save(costApply); Long costApplyId = costApply.getId(); + String levelRemark = levelsList.stream() + .filter(a-> StringUtils.isNotEmpty(a.getExampleRemark())) + .map(TzcRebateLevels::getExampleRemark) + .collect(Collectors.joining(";")); + levelRemark = levelRemark.substring(0,590) + "..."; + Map> centerMap = centerList.stream() .collect(Collectors.groupingBy(TzcRebateCenter::getRebateSubjectId)); + List activityList = new ArrayList<>(); + for (int i = 0; i < periodList.size(); i++) { TzcRebatePeriod period = periodList.get(i); //构建活动 @@ -144,7 +155,7 @@ public class TzcRebateApplication4CostServiceImpl implements TzcRebateApplicatio activity.setActivityCode(rebate.getRebateCode()+"_"+(i+1)); activity.setActivityState(TbsActivityState.STATE_0_Todo); activity.setCostPassFlag(0); - activity.setActTitle(rebate.getRebateName()); + activity.setActTitle(levelRemark); activity.setSupplierId(rebate.getSupplierId()); activity.setSupplierName(rebate.getSupplierName()); activity.setSupplierCode(rebate.getSupplierCode()); @@ -158,6 +169,8 @@ public class TzcRebateApplication4CostServiceImpl implements TzcRebateApplicatio activity.setAutoCheckState(rebate.getCheckModel()); activity.setTotalAmount(maxLevelsAmount); tbsActivityService.save(activity); + + activityList.add(activity); Long activityId = activity.getId(); // 构建活动商品(ActivityGoods) @@ -210,6 +223,21 @@ public class TzcRebateApplication4CostServiceImpl implements TzcRebateApplicatio tbsActivityCenterGoodsService.saveBatch(centerGoodsList); } } + + // 当不填写同期期间的发货金额时,则从数据库加载发货金额 + for (TzcRebatePeriod period : periodList) { + if (period.getSamePeriodAmount()==null){ + for (TbsActivity activity : activityList) { + if (period.getId().equals(activity.getRebatePeriodId())){ + ErpDispatchSumPmsVo dispatchSumPmsVo = tbsActivityService.getDispatchSumByActivity(activity); + period.setPeriodAmount(dispatchSumPmsVo.getTotalAmount()); + tzcRebatePeriodService.updateById(period); + break; + } + } + } + } + return costApplyId; } diff --git a/cms-modules/cms-system/src/main/java/com/qs/serve/modules/tzc/service/impl/TzcRebateApplicationServiceImpl.java b/cms-modules/cms-system/src/main/java/com/qs/serve/modules/tzc/service/impl/TzcRebateApplicationServiceImpl.java index a97dfc9..8587b36 100644 --- a/cms-modules/cms-system/src/main/java/com/qs/serve/modules/tzc/service/impl/TzcRebateApplicationServiceImpl.java +++ b/cms-modules/cms-system/src/main/java/com/qs/serve/modules/tzc/service/impl/TzcRebateApplicationServiceImpl.java @@ -284,6 +284,9 @@ public class TzcRebateApplicationServiceImpl implements TzcRebateApplicationServ .set(TzcRebate::getCostApplyId,costApplyId) .set(TzcRebate::getRebateAmount,totalAllAmount) ); + + + return rebate; } @@ -458,12 +461,14 @@ public class TzcRebateApplicationServiceImpl implements TzcRebateApplicationServ rebate.setCheckModel(param.getCheckModel()); rebate.setCheckMaxAmount(param.getCheckMaxAmount()); rebate.setCheckAutoDateType(param.getCheckAutoDateType()); - // 自动核销日期类型:0-手动设置;1-自然月;2-自然周 - int days = 15; + // 自动核销日期类型:0-自然月;1-自然周;2-活动周期(作废);3-活动天数 + int days = 30; if (param.getCheckAutoDateType().equals(1)){ - days = 30; - }else if (param.getCheckAutoDateType().equals(2)){ days = 7; + }else if (param.getCheckAutoDateType().equals(2)){ + //days = 30; + }else if (param.getCheckAutoDateType().equals(3)){ + days = param.getCheckAutoDays(); } rebate.setCheckStartDate(param.getActivityStartTime().plusDays(days)); rebate.setCheckEndDate(param.getActivityEndTime().plusDays(days)); diff --git a/cms-modules/cms-system/src/main/java/com/qs/serve/modules/vtb/common/VerificationUtil.java b/cms-modules/cms-system/src/main/java/com/qs/serve/modules/vtb/common/VerificationUtil.java index c09eba0..9aa9813 100644 --- a/cms-modules/cms-system/src/main/java/com/qs/serve/modules/vtb/common/VerificationUtil.java +++ b/cms-modules/cms-system/src/main/java/com/qs/serve/modules/vtb/common/VerificationUtil.java @@ -10,6 +10,25 @@ import com.qs.serve.modules.tbs.entity.TbsCostApply; */ public class VerificationUtil { + + private final static ThreadLocal AUTO_FLAG = new ThreadLocal<>(); + + public static void removeThreadLocal(){ + AUTO_FLAG.remove(); + } + + public static Integer getAutoFlag(){ + Integer value = AUTO_FLAG.get(); + if (value==null){ + return 0; + } + return value; + } + + public static void setAutoFlag(Integer autoFlag){ + AUTO_FLAG.set(autoFlag); + } + public static void verifyCostState(TbsCostApply costApply) { if(costApply.getContractFlag().equals(1)){ Assert.throwEx("协议类申请不支持CRM核销"); diff --git a/cms-modules/cms-system/src/main/java/com/qs/serve/modules/vtb/listener/VtbRebateAutoEventListener.java b/cms-modules/cms-system/src/main/java/com/qs/serve/modules/vtb/listener/VtbRebateAutoEventListener.java index 98a180a..825295d 100644 --- a/cms-modules/cms-system/src/main/java/com/qs/serve/modules/vtb/listener/VtbRebateAutoEventListener.java +++ b/cms-modules/cms-system/src/main/java/com/qs/serve/modules/vtb/listener/VtbRebateAutoEventListener.java @@ -1,6 +1,7 @@ package com.qs.serve.modules.vtb.listener; import com.qs.serve.modules.sys.common.AuthContextUtils; +import com.qs.serve.modules.vtb.common.VerificationUtil; import com.qs.serve.modules.vtb.entity.bo.VtbVerificationBo; import com.qs.serve.modules.vtb.event.VtbRebateAutoEvent; import com.qs.serve.modules.vtb.service.VtbVerificationService; @@ -23,7 +24,14 @@ public class VtbRebateAutoEventListener { @EventListener public void handleVtbRebateAutoEvent(VtbRebateAutoEvent event) { VtbVerificationBo verificationBo = event.getVerificationBo(); - vtbVerificationService.commit(verificationBo,event.getUserId()); + VerificationUtil.setAutoFlag(1); + try { + vtbVerificationService.commit(verificationBo,event.getUserId()); + } catch (Exception e) { + e.printStackTrace(); + }finally { + VerificationUtil.removeThreadLocal(); + } } } diff --git a/cms-modules/cms-system/src/main/java/com/qs/serve/modules/vtb/service/impl/VtbVerificationBatchServiceImpl.java b/cms-modules/cms-system/src/main/java/com/qs/serve/modules/vtb/service/impl/VtbVerificationBatchServiceImpl.java index b6d3653..5c48bf1 100644 --- a/cms-modules/cms-system/src/main/java/com/qs/serve/modules/vtb/service/impl/VtbVerificationBatchServiceImpl.java +++ b/cms-modules/cms-system/src/main/java/com/qs/serve/modules/vtb/service/impl/VtbVerificationBatchServiceImpl.java @@ -207,7 +207,7 @@ public class VtbVerificationBatchServiceImpl extends ServiceImpl