Browse Source

feat: 年度返利测试

master
Yen 2 months ago
parent
commit
c5b18ea5e2
  1. 2
      cms-api/cms-admin-svc/src/main/resources/application.yml
  2. 6
      cms-common/src/main/java/com/qs/serve/framework/base/model/R.java
  3. 1
      cms-modules/cms-system/src/main/java/com/qs/serve/modules/oms/controller/api/OmsSaleOrderApi.java
  4. 2
      cms-modules/cms-system/src/main/java/com/qs/serve/modules/sys/service/impl/SysDeleteLogServiceImpl.java
  5. 26
      cms-modules/cms-system/src/main/java/com/qs/serve/modules/tbs/controller/TbsActivityCheckController.java
  6. 8
      cms-modules/cms-system/src/main/java/com/qs/serve/modules/tbs/controller/TbsActivityTemplateController.java
  7. 4
      cms-modules/cms-system/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyServiceImpl.java
  8. 3
      cms-modules/cms-system/src/main/java/com/qs/serve/modules/tzc/controller/TzcRebateController.java
  9. 2
      cms-modules/cms-system/src/main/java/com/qs/serve/modules/tzc/service/TzcRebateApplication4VerificationService.java
  10. 7
      cms-modules/cms-system/src/main/java/com/qs/serve/modules/tzc/service/impl/TzcRebateApplication4CostServiceImpl.java
  11. 4
      cms-modules/cms-system/src/main/java/com/qs/serve/modules/tzc/service/impl/TzcRebateApplication4VerificationServiceImpl.java
  12. 2
      cms-modules/cms-system/src/main/java/com/qs/serve/modules/vtb/controller/VtbVerificationBatchController.java
  13. 2
      cms-modules/cms-system/src/main/java/com/qs/serve/modules/vtb/service/VtbVerificationBatchService.java
  14. 4
      cms-modules/cms-system/src/main/java/com/qs/serve/modules/vtb/service/impl/VtbVerificationBatchServiceImpl.java

2
cms-api/cms-admin-svc/src/main/resources/application.yml

@ -58,7 +58,7 @@ mybatis-plus:
# 日志配置 # 日志配置
logging: logging:
level: level:
ROOT: debug ROOT: info
com.qs.serve: debug com.qs.serve: debug
com.qs.serve.modules.his: debug com.qs.serve.modules.his: debug
com.qs.serve.modules.sys: debug com.qs.serve.modules.sys: debug

6
cms-common/src/main/java/com/qs/serve/framework/base/model/R.java

@ -1,9 +1,11 @@
package com.qs.serve.framework.base.model; package com.qs.serve.framework.base.model;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.github.pagehelper.PageInfo; import com.github.pagehelper.PageInfo;
import com.qs.serve.common.utils.PageUtil; import com.qs.serve.common.utils.PageUtil;
import lombok.Getter; import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter; import lombok.Setter;
import java.io.Serializable; import java.io.Serializable;
@ -19,6 +21,7 @@ import java.util.List;
*/ */
@Getter @Getter
@Setter @Setter
@NoArgsConstructor
public class R<T> implements Serializable { public class R<T> implements Serializable {
public R(int status, String msg) { public R(int status, String msg) {
@ -42,6 +45,9 @@ public class R<T> implements Serializable {
*/ */
private String msg; private String msg;
@JsonIgnore
private String message;
/** /**
* 数据 * 数据
*/ */

1
cms-modules/cms-system/src/main/java/com/qs/serve/modules/oms/controller/api/OmsSaleOrderApi.java

@ -208,6 +208,7 @@ public class OmsSaleOrderApi {
PageUtil.startPage(); PageUtil.startPage();
LambdaQueryWrapper<OmsSaleOrder> orderWrapper = new LambdaQueryWrapper<>(param); LambdaQueryWrapper<OmsSaleOrder> orderWrapper = new LambdaQueryWrapper<>(param);
orderWrapper.orderByDesc(OmsSaleOrder::getUserCreateTime);
List<OmsSaleOrder> list = omsSaleOrderService.list(orderWrapper); List<OmsSaleOrder> list = omsSaleOrderService.list(orderWrapper);
this.buildOrderVoInfo(list); this.buildOrderVoInfo(list);
return R.byPageHelperList(list); return R.byPageHelperList(list);

2
cms-modules/cms-system/src/main/java/com/qs/serve/modules/sys/service/impl/SysDeleteLogServiceImpl.java

@ -99,8 +99,8 @@ public class SysDeleteLogServiceImpl extends ServiceImpl<SysDeleteLogMapper,SysD
costDeletion.setCacc(bookCode); costDeletion.setCacc(bookCode);
costDeletion.setVerificationCode(costApply.getCode()); costDeletion.setVerificationCode(costApply.getCode());
String rs = HttpUtil.doPost(url, JsonUtil.objectToJson(costDeletion),null); String rs = HttpUtil.doPost(url, JsonUtil.objectToJson(costDeletion),null);
R rsObj = JsonUtil.jsonToPojo(rs, R.class);
log.warn("【请求删除ERP费用】{},返回结果:{}",costApplyId,rs); log.warn("【请求删除ERP费用】{},返回结果:{}",costApplyId,rs);
R rsObj = JsonUtil.jsonToPojo(rs, R.class);
if(rsObj==null||!rsObj.getStatus().equals(200)){ if(rsObj==null||!rsObj.getStatus().equals(200)){
Assert.throwEx("远程删除失败:"+rs); Assert.throwEx("远程删除失败:"+rs);
} }

26
cms-modules/cms-system/src/main/java/com/qs/serve/modules/tbs/controller/TbsActivityCheckController.java

@ -15,6 +15,7 @@ import com.qs.serve.modules.tbs.entity.TbsActivitySubject;
import com.qs.serve.modules.tbs.entity.TbsCostApply; import com.qs.serve.modules.tbs.entity.TbsCostApply;
import com.qs.serve.modules.tbs.mapper.TbsActivityMapper; import com.qs.serve.modules.tbs.mapper.TbsActivityMapper;
import com.qs.serve.modules.tbs.service.*; import com.qs.serve.modules.tbs.service.*;
import com.qs.serve.modules.tzc.consts.TzcArgTypes;
import com.qs.serve.modules.tzc.entity.TzcRebatePeriod; import com.qs.serve.modules.tzc.entity.TzcRebatePeriod;
import com.qs.serve.modules.tzc.entity.dto.TzcRebateCalculateDTO; import com.qs.serve.modules.tzc.entity.dto.TzcRebateCalculateDTO;
import com.qs.serve.modules.tzc.service.TzcRebateApplication4VerificationService; import com.qs.serve.modules.tzc.service.TzcRebateApplication4VerificationService;
@ -25,6 +26,7 @@ import com.qs.serve.modules.vtb.entity.bo.VtbVerificationSubjectBo;
import com.qs.serve.modules.vtb.entity.bo.VtbVerificationSubjectCenterBo; import com.qs.serve.modules.vtb.entity.bo.VtbVerificationSubjectCenterBo;
import com.qs.serve.modules.vtb.event.VtbRebateAutoEvent; import com.qs.serve.modules.vtb.event.VtbRebateAutoEvent;
import com.qs.serve.modules.vtb.service.VtbFundFlowService; import com.qs.serve.modules.vtb.service.VtbFundFlowService;
import com.qs.serve.modules.vtb.service.VtbVerificationBatchService;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
@ -62,6 +64,7 @@ public class TbsActivityCheckController {
private final TbsActivityMapper tbsActivityMapper; private final TbsActivityMapper tbsActivityMapper;
private final TzcRebateApplication4VerificationService tzcRebateApplication4VerificationService; private final TzcRebateApplication4VerificationService tzcRebateApplication4VerificationService;
private final ApplicationEventPublisher eventPublisher; private final ApplicationEventPublisher eventPublisher;
private final VtbVerificationBatchService vtbVerificationBatchService;
public void createAutoEvent(){ public void createAutoEvent(){
@ -79,19 +82,21 @@ public class TbsActivityCheckController {
public void createAutoEvent(@PathVariable("actId") Long activityId){ public void createAutoEvent(@PathVariable("actId") Long activityId){
TbsActivity activity = tbsActivityService.getById(activityId); TbsActivity activity = tbsActivityService.getById(activityId);
TbsCostApply costApply = tbsCostApplyService.getById(activity.getCostApplyId()); TbsCostApply costApply = tbsCostApplyService.getById(activity.getCostApplyId());
VtbVerificationBo commitBo = createVerificationBo(activity); VtbVerificationBo commitBo = createVerificationBo(activity, TzcArgTypes.LevelReturn);
if (commitBo == null) return; if (commitBo == null){
return;
}
eventPublisher.publishEvent(new VtbRebateAutoEvent(this, commitBo, costApply.getUserId())); eventPublisher.publishEvent(new VtbRebateAutoEvent(this, commitBo, costApply.getUserId()));
} }
@Nullable @Nullable
private VtbVerificationBo createVerificationBo(TbsActivity activity) { private VtbVerificationBo createVerificationBo(TbsActivity activity,TzcArgTypes argType) {
Long activityId = activity.getId(); Long activityId = activity.getId();
// 通过周期查询发货金额 // 通过周期查询发货金额
ErpDispatchSumPmsVo erpDispatchSumPmsVo = tbsActivityService.getDispatchSumByActivity(activity); ErpDispatchSumPmsVo erpDispatchSumPmsVo = tbsActivityService.getDispatchSumByActivity(activity);
BigDecimal dispatchAmount = erpDispatchSumPmsVo.getTotalAmount(); BigDecimal dispatchAmount = erpDispatchSumPmsVo.getTotalAmount();
// 此次核销金额 // 此次核销金额
TzcRebateCalculateDTO calculateDTO = tzcRebateApplication4VerificationService.getActivityRebateAmount(activityId,dispatchAmount); TzcRebateCalculateDTO calculateDTO = tzcRebateApplication4VerificationService.getActivityRebateAmount(activityId,dispatchAmount,argType);
BigDecimal vtbAmt = calculateDTO.getTotalReturnAmt(); BigDecimal vtbAmt = calculateDTO.getTotalReturnAmt();
if (vtbAmt.compareTo(BigDecimal.ZERO)==0){ if (vtbAmt.compareTo(BigDecimal.ZERO)==0){
// 没有返利金额 // 没有返利金额
@ -148,23 +153,24 @@ public class TbsActivityCheckController {
List<VtbVerificationBo> verificationBoList = new ArrayList<>(); List<VtbVerificationBo> verificationBoList = new ArrayList<>();
BigDecimal totalAmount = BigDecimal.ZERO; BigDecimal totalAmount = BigDecimal.ZERO;
for (TbsActivity activity : activityList) { for (TbsActivity activity : activityList) {
VtbVerificationBo verificationBo = this.createVerificationBo(activity); VtbVerificationBo verificationBo = this.createVerificationBo(activity,TzcArgTypes.LevelOverallReturn);
if (verificationBo==null){ if (verificationBo==null){
continue; continue;
} }
verificationBoList.add(verificationBo); verificationBoList.add(verificationBo);
for (VtbVerificationSubjectCenterBo centerBo : verificationBo.getSubjectCenterList()) { for (VtbVerificationSubjectBo subjectBo : verificationBo.getSubjectList()) {
totalAmount = subjectBo.getAmount().add(totalAmount);
} }
} }
VtbVerificationBatchBo batchBo = new VtbVerificationBatchBo(); VtbVerificationBatchBo batchBo = new VtbVerificationBatchBo();
batchBo.setVerificationList(verificationBoList); batchBo.setVerificationList(verificationBoList);
batchBo.setRemark("年度返利核销"); batchBo.setRemark("年度返利核销");
//batchBo.setPayWayId(0); // 票扣
batchBo.setPayWayId(1L);
batchBo.setCostApplyId(costApplyId); batchBo.setCostApplyId(costApplyId);
//batchBo.setTotalAmount(); batchBo.setTotalAmount(totalAmount);
batchBo.setRebateOfYearFlag(1); batchBo.setRebateOfYearFlag(1);
vtbVerificationBatchService.submit(batchBo,costApply.getUserId());
} }

8
cms-modules/cms-system/src/main/java/com/qs/serve/modules/tbs/controller/TbsActivityTemplateController.java

@ -334,6 +334,14 @@ public class TbsActivityTemplateController {
}); });
} }
if(CollectionUtil.isNotEmpty(supplierList)){
List<String> cusIds = supplierList.stream().map(BmsSupplier::getId).collect(Collectors.toList());
tempLqw.or(con->{
con.eq(TbsActivityTemplateRegion::getType,"cus");
con.in(TbsActivityTemplateRegion::getRegionId,cusIds);
});
}
List<TbsActivityTemplateRegion> templateRegions = null; List<TbsActivityTemplateRegion> templateRegions = null;
if(CollectionUtil.isNotEmpty(saleRegionIds)||CollectionUtil.isNotEmpty(bizRegionIds)){ if(CollectionUtil.isNotEmpty(saleRegionIds)||CollectionUtil.isNotEmpty(bizRegionIds)){
templateRegions = tbsActivityTemplateRegionService.list(tempLqw); templateRegions = tbsActivityTemplateRegionService.list(tempLqw);

4
cms-modules/cms-system/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyServiceImpl.java

@ -696,7 +696,9 @@ public class TbsCostApplyServiceImpl extends ServiceImpl<TbsCostApplyMapper,TbsC
boolean isIgnoreSubject = false; boolean isIgnoreSubject = false;
if(activityList.size()==1){ if(activityList.size()==1){
Long templateId = activityList.get(0).getTemplateId(); Long templateId = activityList.get(0).getTemplateId();
if (templateId!=null){ boolean isBack = tbsCostApply.getChargeState().equals(TbsCostApplyState.State_4_refused.getCode())
||tbsCostApply.getChargeState().equals(TbsCostApplyState.State_7_changed.getCode());
if (templateId!=null && !isBack){
// 模板不拦截科目范围 // 模板不拦截科目范围
isIgnoreSubject = true; isIgnoreSubject = true;
// 拦截模板的可见范围 // 拦截模板的可见范围

3
cms-modules/cms-system/src/main/java/com/qs/serve/modules/tzc/controller/TzcRebateController.java

@ -11,6 +11,7 @@ import com.qs.serve.common.utils.StringUtils;
import com.qs.serve.framework.base.model.PageVo; import com.qs.serve.framework.base.model.PageVo;
import com.qs.serve.framework.base.model.R; import com.qs.serve.framework.base.model.R;
import com.qs.serve.framework.base.util.DebugStrUtil; import com.qs.serve.framework.base.util.DebugStrUtil;
import com.qs.serve.modules.tzc.consts.TzcArgTypes;
import com.qs.serve.modules.tzc.entity.bo.TzcRebateParam; import com.qs.serve.modules.tzc.entity.bo.TzcRebateParam;
import com.qs.serve.modules.tzc.entity.dto.TzcRebateCalculateDTO; import com.qs.serve.modules.tzc.entity.dto.TzcRebateCalculateDTO;
import com.qs.serve.modules.tzc.entity.qo.TzcGetActivityRebateQuery; import com.qs.serve.modules.tzc.entity.qo.TzcGetActivityRebateQuery;
@ -55,7 +56,7 @@ public class TzcRebateController {
if (queryList != null){ if (queryList != null){
List<TzcRebateCalculateDTO> result = new ArrayList<>(); List<TzcRebateCalculateDTO> result = new ArrayList<>();
for (TzcGetActivityRebateQuery query : queryList) { for (TzcGetActivityRebateQuery query : queryList) {
TzcRebateCalculateDTO dto = tzcRebateApplication4VerificationService.getActivityRebateAmount(query.getActivityId(),query.getDispatchAmount()); TzcRebateCalculateDTO dto = tzcRebateApplication4VerificationService.getActivityRebateAmount(query.getActivityId(),query.getDispatchAmount(), TzcArgTypes.LevelReturn);
if (dto != null){ if (dto != null){
result.add(dto); result.add(dto);
} }

2
cms-modules/cms-system/src/main/java/com/qs/serve/modules/tzc/service/TzcRebateApplication4VerificationService.java

@ -30,7 +30,7 @@ public interface TzcRebateApplication4VerificationService {
* @param dispatchAmt * @param dispatchAmt
* @return * @return
*/ */
TzcRebateCalculateDTO getActivityRebateAmount(Long activityId,BigDecimal dispatchAmt); TzcRebateCalculateDTO getActivityRebateAmount(Long activityId,BigDecimal dispatchAmt,TzcArgTypes argType);
} }

7
cms-modules/cms-system/src/main/java/com/qs/serve/modules/tzc/service/impl/TzcRebateApplication4CostServiceImpl.java

@ -590,13 +590,18 @@ public class TzcRebateApplication4CostServiceImpl implements TzcRebateApplicatio
dto.appendErrorMsg("坎级ID:"+rebateLevels.getId()+",缺少参数:"+argType.name()); dto.appendErrorMsg("坎级ID:"+rebateLevels.getId()+",缺少参数:"+argType.name());
continue; continue;
} }
dto.appendDebugMsg("读取坎级("+rebateLevels.getLevelNum()+")配置 ,返利参数:"+currentArgument.getBusinessType()); dto.appendDebugMsg("读取坎级("+rebateLevels.getLevelNum()+")配置 ,返利参数:"
+currentArgument.getBusinessType()+"最高返利金额:"+currentArgument.getMaxReturn());
TzcRebateLevelAmountDTO rebateLevelsDTO = CopierUtil.copy(rebateLevels,new TzcRebateLevelAmountDTO()); TzcRebateLevelAmountDTO rebateLevelsDTO = CopierUtil.copy(rebateLevels,new TzcRebateLevelAmountDTO());
rebateLevelsDTO.setArgument(currentArgument); rebateLevelsDTO.setArgument(currentArgument);
// 选择的策略:0-百分比;1-固定金额 // 选择的策略:0-百分比;1-固定金额
if (currentArgument.getRateAmtFlag().equals(1)){ if (currentArgument.getRateAmtFlag().equals(1)){
rebateLevelsDTO.setReturnAmt(currentArgument.getReturnFixed()); rebateLevelsDTO.setReturnAmt(currentArgument.getReturnFixed());
rebateLevelsDTO.setDebugMsg("返利为固定金额:"+currentArgument.getReturnFixed()); rebateLevelsDTO.setDebugMsg("返利为固定金额:"+currentArgument.getReturnFixed());
if (currentArgument.getMaxReturn()!=null && currentArgument.getReturnFixed().compareTo(currentArgument.getMaxReturn())>0){
rebateLevelsDTO.setDebugMsg("最高返利金额:"+currentArgument.getMaxReturn());
rebateLevelsDTO.setReturnAmt(currentArgument.getMaxReturn());
}
}else if (currentArgument.getRateAmtFlag().equals(0)){ }else if (currentArgument.getRateAmtFlag().equals(0)){
//目标销量维度:0-总量;1-增量 //目标销量维度:0-总量;1-增量
if (currentArgument.getSumAddFlag().equals(0)){ if (currentArgument.getSumAddFlag().equals(0)){

4
cms-modules/cms-system/src/main/java/com/qs/serve/modules/tzc/service/impl/TzcRebateApplication4VerificationServiceImpl.java

@ -256,7 +256,7 @@ public class TzcRebateApplication4VerificationServiceImpl implements TzcRebateAp
} }
@Override @Override
public TzcRebateCalculateDTO getActivityRebateAmount(Long activityId, BigDecimal dispatchAmt) { public TzcRebateCalculateDTO getActivityRebateAmount(Long activityId, BigDecimal dispatchAmt,TzcArgTypes argType) {
TbsActivity activity = tbsActivityMapper.selectById(activityId); TbsActivity activity = tbsActivityMapper.selectById(activityId);
if (activity.getRebatePeriodId()==null||activity.getRebatePeriodId().equals(0L)){ if (activity.getRebatePeriodId()==null||activity.getRebatePeriodId().equals(0L)){
return null; return null;
@ -271,7 +271,7 @@ public class TzcRebateApplication4VerificationServiceImpl implements TzcRebateAp
rebatePeriod.getPeriodAmount() rebatePeriod.getPeriodAmount()
); );
List<TzcRebateLevelAmountDTO> levelAmountList = tzcRebateApplication4CostService.calculateRebate( List<TzcRebateLevelAmountDTO> levelAmountList = tzcRebateApplication4CostService.calculateRebate(
calculateDTO,dispatchAmt, sameDispatchAmt, TzcArgTypes.LevelReturn); calculateDTO,dispatchAmt, sameDispatchAmt, argType);
return this.calculateRebateVerification(calculateDTO, levelAmountList, activity); return this.calculateRebateVerification(calculateDTO, levelAmountList, activity);
} }

2
cms-modules/cms-system/src/main/java/com/qs/serve/modules/vtb/controller/VtbVerificationBatchController.java

@ -135,7 +135,7 @@ public class VtbVerificationBatchController {
@SysLog(module = SystemModule.Verification, title = "批量核销", biz = BizType.INSERT) @SysLog(module = SystemModule.Verification, title = "批量核销", biz = BizType.INSERT)
public R<?> save(@RequestBody @Valid VtbVerificationBatchBo param){ public R<?> save(@RequestBody @Valid VtbVerificationBatchBo param){
seeYonService.testConnection(); seeYonService.testConnection();
vtbVerificationBatchService.submit(param); vtbVerificationBatchService.submit(param,AuthContextUtils.getSysUserId());
return R.ok(); return R.ok();
} }

2
cms-modules/cms-system/src/main/java/com/qs/serve/modules/vtb/service/VtbVerificationBatchService.java

@ -20,7 +20,7 @@ public interface VtbVerificationBatchService extends IService<VtbVerificationBat
* 提交批量核销 * 提交批量核销
* @param submitBo * @param submitBo
*/ */
void submit(VtbVerificationBatchBo submitBo); void submit(VtbVerificationBatchBo submitBo,String userId);
List<VtbVerification> listVerifications(Long batchId); List<VtbVerification> listVerifications(Long batchId);

4
cms-modules/cms-system/src/main/java/com/qs/serve/modules/vtb/service/impl/VtbVerificationBatchServiceImpl.java

@ -97,7 +97,7 @@ public class VtbVerificationBatchServiceImpl extends ServiceImpl<VtbVerification
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void submit(VtbVerificationBatchBo submitBo) { public void submit(VtbVerificationBatchBo submitBo,String userId) {
String templateCode = TbsSeeYonConst.BatchCostCheckConf.Code(); String templateCode = TbsSeeYonConst.BatchCostCheckConf.Code();
TbsCostApply costApply = tbsCostApplyService.getById(submitBo.getCostApplyId()); TbsCostApply costApply = tbsCostApplyService.getById(submitBo.getCostApplyId());
// if(costApply.getContractFlag().equals(3)){ // if(costApply.getContractFlag().equals(3)){
@ -105,7 +105,7 @@ public class VtbVerificationBatchServiceImpl extends ServiceImpl<VtbVerification
// } // }
BmsSupplier supplier = bmsSupplierService.getById(costApply.getSupplierId()); BmsSupplier supplier = bmsSupplierService.getById(costApply.getSupplierId());
List<TbsActivity> activityList = tbsActivityService.listByCostApplyId(costApply.getId()); List<TbsActivity> activityList = tbsActivityService.listByCostApplyId(costApply.getId());
SysUser sysUser = sysUserService.getById(AuthContextUtils.getSysUserId()); SysUser sysUser = sysUserService.getById(userId);
sysUser.checkSyAccount(); sysUser.checkSyAccount();
redisService.throwResLock(VtbVerificationBatch.class.getSimpleName(),submitBo.getCostApplyId()+""); redisService.throwResLock(VtbVerificationBatch.class.getSimpleName(),submitBo.getCostApplyId()+"");
// 校验核销状态 // 校验核销状态

Loading…
Cancel
Save