Browse Source

返利调整:opt:返利自动核销天数参数;feat:自动计算同期发货金额;opt:活动简述使用坎级例子;feat:是否自动发起需要做核销分支

master
Yen 2 months ago
parent
commit
e7bd9da8b8
  1. 5
      cms-modules/cms-policy/cms-policy-api/src/main/java/com/qs/serve/modules/tzc/entity/TzcRebate.java
  2. 6
      cms-modules/cms-policy/cms-policy-api/src/main/java/com/qs/serve/modules/tzc/entity/bo/TzcRebateParam.java
  3. 8
      cms-modules/cms-system/src/main/java/com/qs/serve/modules/bir/service/impl/BirCenterRateServiceImpl.java
  4. 40
      cms-modules/cms-system/src/main/java/com/qs/serve/modules/tzc/service/impl/TzcRebateApplication4CostServiceImpl.java
  5. 13
      cms-modules/cms-system/src/main/java/com/qs/serve/modules/tzc/service/impl/TzcRebateApplicationServiceImpl.java
  6. 19
      cms-modules/cms-system/src/main/java/com/qs/serve/modules/vtb/common/VerificationUtil.java
  7. 10
      cms-modules/cms-system/src/main/java/com/qs/serve/modules/vtb/listener/VtbRebateAutoEventListener.java
  8. 2
      cms-modules/cms-system/src/main/java/com/qs/serve/modules/vtb/service/impl/VtbVerificationBatchServiceImpl.java
  9. 1
      cms-modules/cms-system/src/main/java/com/qs/serve/modules/vtb/service/impl/VtbVerificationServiceImpl.java
  10. 15
      cms-modules/cms-system/src/test/java/com/qs/TestStringSub.java

5
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")

6
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")

8
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<TbsBudget> tbsBudgetList = tbsBudgetMapper.selectList(budgetLambdaQueryWrapper);
//通过预算ID取预算的发货和金额
List<Long> budgetIds = tbsBudgetList.stream().map(TbsBudget::getId).collect(Collectors.toList());
budgetIds.add(0L);
LambdaQueryWrapper<TbsScheduleItemBudget> scheduleItemBudgetLambdaQueryWrapper = new LambdaQueryWrapper<>();
scheduleItemBudgetLambdaQueryWrapper.in(TbsScheduleItemBudget::getBudgetId,tbsBudgetList.stream().map(TbsBudget::getId).collect(Collectors.toList()));
scheduleItemBudgetLambdaQueryWrapper.in(TbsScheduleItemBudget::getBudgetId,budgetIds);
List<TbsScheduleItemBudget> 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<TbsBudgetLog> tbsbudgetLogLambdaQueryWrapper = new LambdaQueryWrapper<TbsBudgetLog>();

40
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<Long,List<TzcRebateCenter>> centerMap = centerList.stream()
.collect(Collectors.groupingBy(TzcRebateCenter::getRebateSubjectId));
List<TbsActivity> 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;
}

13
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));

19
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<Integer> 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核销");

10
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();
}
}
}

2
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<VtbVerification
data.put("templateId", costApply.getTemplateId());
data.put("templateName", costApply.getTemplateTitle());
data.put("jinE",totalAmt);
data.put("auto_check",VerificationUtil.getAutoFlag());
newWayData.put("formmain_2178",data);
mainProcess.setTableName("formmain_2178");
mainProcess.setData(newWayData);

1
cms-modules/cms-system/src/main/java/com/qs/serve/modules/vtb/service/impl/VtbVerificationServiceImpl.java

@ -1179,6 +1179,7 @@ public class VtbVerificationServiceImpl extends ServiceImpl<VtbVerificationMappe
data.put("exsp1",TbsSeeYonConst.CostCheckConf.Code());
data.put("jinE", verification.getAmount().toString());
data.put("money", verification.getAmount().toString());
data.put("auto_check", VerificationUtil.getAutoFlag());
TbsCostApply costApply = costApplyService.getById(activity.getCostApplyId());
data.put("templateId", costApply.getTemplateId());

15
cms-modules/cms-system/src/test/java/com/qs/TestStringSub.java

@ -0,0 +1,15 @@
package com.qs;
/**
* @author YenHex
* @since 2025/5/28
*/
public class TestStringSub {
public static void main(String[] args) {
String str = "1234567890";
str = str.substring(0,5)+"...";
System.out.println(str);
}
}
Loading…
Cancel
Save