28 changed files with 749 additions and 35 deletions
@ -0,0 +1,14 @@ |
|||
package com.qs.serve.modules.tzc.consts; |
|||
|
|||
/** |
|||
* @author YenHex |
|||
* @since 2025/4/23 |
|||
*/ |
|||
public enum TzcArgTypes { |
|||
|
|||
// 期间补偿 扩展
|
|||
PeriodExtend, |
|||
// 坎级 扩展
|
|||
LevelExtend |
|||
|
|||
} |
@ -0,0 +1,14 @@ |
|||
package com.qs.serve.modules.tzc.mapper; |
|||
|
|||
import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
|||
import com.qs.serve.modules.tzc.entity.TzcRebateCenter; |
|||
|
|||
/** |
|||
* 活动成本中心项 Mapper |
|||
* @author YenHex |
|||
* @date 2025-04-15 |
|||
*/ |
|||
public interface TzcRebateCenterMapper extends BaseMapper<TzcRebateCenter> { |
|||
|
|||
} |
|||
|
@ -0,0 +1,14 @@ |
|||
package com.qs.serve.modules.tzc.mapper; |
|||
|
|||
import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
|||
import com.qs.serve.modules.tzc.entity.TzcRebateGoods; |
|||
|
|||
/** |
|||
* 返利商品 Mapper |
|||
* @author YenHex |
|||
* @date 2025-04-23 |
|||
*/ |
|||
public interface TzcRebateGoodsMapper extends BaseMapper<TzcRebateGoods> { |
|||
|
|||
} |
|||
|
@ -0,0 +1,14 @@ |
|||
package com.qs.serve.modules.tzc.mapper; |
|||
|
|||
import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
|||
import com.qs.serve.modules.tzc.entity.TzcRebateLevelsArgument; |
|||
|
|||
/** |
|||
* 返利坎级参数 Mapper |
|||
* @author YenHex |
|||
* @date 2025-04-15 |
|||
*/ |
|||
public interface TzcRebateLevelsArgumentMapper extends BaseMapper<TzcRebateLevelsArgument> { |
|||
|
|||
} |
|||
|
@ -0,0 +1,14 @@ |
|||
package com.qs.serve.modules.tzc.mapper; |
|||
|
|||
import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
|||
import com.qs.serve.modules.tzc.entity.TzcRebateLevelsConfig; |
|||
|
|||
/** |
|||
* 返利坎级 Mapper |
|||
* @author YenHex |
|||
* @date 2025-04-15 |
|||
*/ |
|||
public interface TzcRebateLevelsConfigMapper extends BaseMapper<TzcRebateLevelsConfig> { |
|||
|
|||
} |
|||
|
@ -0,0 +1,14 @@ |
|||
package com.qs.serve.modules.tzc.mapper; |
|||
|
|||
import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
|||
import com.qs.serve.modules.tzc.entity.TzcRebateLevels; |
|||
|
|||
/** |
|||
* 返利坎级 Mapper |
|||
* @author YenHex |
|||
* @date 2025-04-15 |
|||
*/ |
|||
public interface TzcRebateLevelsMapper extends BaseMapper<TzcRebateLevels> { |
|||
|
|||
} |
|||
|
@ -0,0 +1,14 @@ |
|||
package com.qs.serve.modules.tzc.mapper; |
|||
|
|||
import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
|||
import com.qs.serve.modules.tzc.entity.TzcRebate; |
|||
|
|||
/** |
|||
* 返利信息 Mapper |
|||
* @author YenHex |
|||
* @date 2025-04-15 |
|||
*/ |
|||
public interface TzcRebateMapper extends BaseMapper<TzcRebate> { |
|||
|
|||
} |
|||
|
@ -0,0 +1,14 @@ |
|||
package com.qs.serve.modules.tzc.mapper; |
|||
|
|||
import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
|||
import com.qs.serve.modules.tzc.entity.TzcRebatePeriod; |
|||
|
|||
/** |
|||
* 返利适用期间 Mapper |
|||
* @author YenHex |
|||
* @date 2025-04-15 |
|||
*/ |
|||
public interface TzcRebatePeriodMapper extends BaseMapper<TzcRebatePeriod> { |
|||
|
|||
} |
|||
|
@ -0,0 +1,14 @@ |
|||
package com.qs.serve.modules.tzc.mapper; |
|||
|
|||
import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
|||
import com.qs.serve.modules.tzc.entity.TzcRebateSubject; |
|||
|
|||
/** |
|||
* 活动科目项 Mapper |
|||
* @author YenHex |
|||
* @date 2025-04-15 |
|||
*/ |
|||
public interface TzcRebateSubjectMapper extends BaseMapper<TzcRebateSubject> { |
|||
|
|||
} |
|||
|
@ -0,0 +1,26 @@ |
|||
package com.qs.serve.modules.tzc.service; |
|||
|
|||
import com.qs.serve.modules.tzc.entity.bo.TzcRebateParam; |
|||
|
|||
/** |
|||
* 返利信息 服务接口 |
|||
* @author YenHex |
|||
* @date 2025-04-15 |
|||
*/ |
|||
public interface TzcRebateApplicationService { |
|||
|
|||
/** |
|||
* 编辑返利实体类 |
|||
* @param param |
|||
* @return |
|||
*/ |
|||
Object modifyRebate(TzcRebateParam param); |
|||
|
|||
/** |
|||
* 提交返利到OA |
|||
* @param id |
|||
*/ |
|||
void commitRebate(Long id); |
|||
|
|||
} |
|||
|
@ -0,0 +1,14 @@ |
|||
package com.qs.serve.modules.tzc.service; |
|||
|
|||
import com.baomidou.mybatisplus.extension.service.IService; |
|||
import com.qs.serve.modules.tzc.entity.TzcRebateCenter; |
|||
|
|||
/** |
|||
* 活动成本中心项 服务接口 |
|||
* @author YenHex |
|||
* @date 2025-04-15 |
|||
*/ |
|||
public interface TzcRebateCenterService extends IService<TzcRebateCenter> { |
|||
|
|||
} |
|||
|
@ -0,0 +1,14 @@ |
|||
package com.qs.serve.modules.tzc.service; |
|||
|
|||
import com.baomidou.mybatisplus.extension.service.IService; |
|||
import com.qs.serve.modules.tzc.entity.TzcRebateGoods; |
|||
|
|||
/** |
|||
* 返利商品 服务接口 |
|||
* @author YenHex |
|||
* @date 2025-04-23 |
|||
*/ |
|||
public interface TzcRebateGoodsService extends IService<TzcRebateGoods> { |
|||
|
|||
} |
|||
|
@ -0,0 +1,14 @@ |
|||
package com.qs.serve.modules.tzc.service; |
|||
|
|||
import com.baomidou.mybatisplus.extension.service.IService; |
|||
import com.qs.serve.modules.tzc.entity.TzcRebateLevelsArgument; |
|||
|
|||
/** |
|||
* 返利坎级参数 服务接口 |
|||
* @author YenHex |
|||
* @date 2025-04-15 |
|||
*/ |
|||
public interface TzcRebateLevelsArgumentService extends IService<TzcRebateLevelsArgument> { |
|||
|
|||
} |
|||
|
@ -0,0 +1,14 @@ |
|||
package com.qs.serve.modules.tzc.service; |
|||
|
|||
import com.baomidou.mybatisplus.extension.service.IService; |
|||
import com.qs.serve.modules.tzc.entity.TzcRebateLevelsConfig; |
|||
|
|||
/** |
|||
* 返利坎级 服务接口 |
|||
* @author YenHex |
|||
* @date 2025-04-15 |
|||
*/ |
|||
public interface TzcRebateLevelsConfigService extends IService<TzcRebateLevelsConfig> { |
|||
|
|||
} |
|||
|
@ -0,0 +1,14 @@ |
|||
package com.qs.serve.modules.tzc.service; |
|||
|
|||
import com.baomidou.mybatisplus.extension.service.IService; |
|||
import com.qs.serve.modules.tzc.entity.TzcRebateLevels; |
|||
|
|||
/** |
|||
* 返利坎级 服务接口 |
|||
* @author YenHex |
|||
* @date 2025-04-15 |
|||
*/ |
|||
public interface TzcRebateLevelsService extends IService<TzcRebateLevels> { |
|||
|
|||
} |
|||
|
@ -0,0 +1,14 @@ |
|||
package com.qs.serve.modules.tzc.service; |
|||
|
|||
import com.baomidou.mybatisplus.extension.service.IService; |
|||
import com.qs.serve.modules.tzc.entity.TzcRebatePeriod; |
|||
|
|||
/** |
|||
* 返利适用期间 服务接口 |
|||
* @author YenHex |
|||
* @date 2025-04-15 |
|||
*/ |
|||
public interface TzcRebatePeriodService extends IService<TzcRebatePeriod> { |
|||
|
|||
} |
|||
|
@ -0,0 +1,14 @@ |
|||
package com.qs.serve.modules.tzc.service; |
|||
|
|||
import com.baomidou.mybatisplus.extension.service.IService; |
|||
import com.qs.serve.modules.tzc.entity.TzcRebate; |
|||
|
|||
/** |
|||
* 返利信息 服务接口 |
|||
* @author YenHex |
|||
* @date 2025-04-15 |
|||
*/ |
|||
public interface TzcRebateService extends IService<TzcRebate> { |
|||
|
|||
} |
|||
|
@ -0,0 +1,14 @@ |
|||
package com.qs.serve.modules.tzc.service; |
|||
|
|||
import com.baomidou.mybatisplus.extension.service.IService; |
|||
import com.qs.serve.modules.tzc.entity.TzcRebateSubject; |
|||
|
|||
/** |
|||
* 活动科目项 服务接口 |
|||
* @author YenHex |
|||
* @date 2025-04-15 |
|||
*/ |
|||
public interface TzcRebateSubjectService extends IService<TzcRebateSubject> { |
|||
|
|||
} |
|||
|
@ -0,0 +1,303 @@ |
|||
package com.qs.serve.modules.tzc.service.impl; |
|||
|
|||
import cn.hutool.core.collection.CollUtil; |
|||
import com.qs.serve.common.exception.Assert; |
|||
import com.qs.serve.common.utils.CopierUtil; |
|||
import com.qs.serve.framework.base.model.ResultFlag; |
|||
import com.qs.serve.framework.redis.utils.CodeGenUtil; |
|||
import com.qs.serve.modules.bms.entity.BmsSubject; |
|||
import com.qs.serve.modules.bms.entity.BmsSupplier; |
|||
import com.qs.serve.modules.bms.mapper.BmsCostCenterMapper; |
|||
import com.qs.serve.modules.bms.mapper.BmsSubjectMapper; |
|||
import com.qs.serve.modules.bms.mapper.BmsSupplierMapper; |
|||
import com.qs.serve.modules.goods.entity.dto.GoodsTargetInfo; |
|||
import com.qs.serve.modules.goods.entity.dto.TbsCenterDto; |
|||
import com.qs.serve.modules.goods.service.GoodsApplicationService; |
|||
import com.qs.serve.modules.tbs.service.TbsCenterDtoService; |
|||
import com.qs.serve.modules.tzc.consts.TzcArgTypes; |
|||
import com.qs.serve.modules.tzc.entity.*; |
|||
import com.qs.serve.modules.tzc.entity.bo.*; |
|||
import com.qs.serve.modules.tzc.enums.TzcRebateStatus; |
|||
import com.qs.serve.modules.tzc.service.*; |
|||
import lombok.AllArgsConstructor; |
|||
import lombok.extern.slf4j.Slf4j; |
|||
import org.jetbrains.annotations.NotNull; |
|||
import org.springframework.stereotype.Service; |
|||
import org.springframework.transaction.annotation.Transactional; |
|||
|
|||
import java.math.BigDecimal; |
|||
import java.util.ArrayList; |
|||
import java.util.List; |
|||
import java.util.Map; |
|||
import java.util.stream.Collectors; |
|||
|
|||
/** |
|||
* @author YenHex |
|||
* @since 2025/4/16 |
|||
*/ |
|||
@Slf4j |
|||
@Service |
|||
@AllArgsConstructor |
|||
public class TzcRebateApplicationServiceImpl implements TzcRebateApplicationService { |
|||
|
|||
private final TzcRebateService tzcRebateService; |
|||
private final TzcRebateSubjectService tzcRebateSubjectService; |
|||
private final TzcRebateCenterService tzcRebateCenterService; |
|||
private final TzcRebatePeriodService tzcRebatePeriodService; |
|||
private final TzcRebateLevelsArgumentService tzcRebateLevelsArgumentService; |
|||
private final TzcRebateGoodsService tzcRebateGoodsService; |
|||
private final TzcRebateLevelsConfigService tzcRebateLevelsConfigService; |
|||
|
|||
private final BmsCostCenterMapper bmsCostCenterMapper; |
|||
private final BmsSupplierMapper bmsSupplierMapper; |
|||
private final BmsSubjectMapper bmsSubjectMapper; |
|||
private final GoodsApplicationService goodsApplicationService; |
|||
private final TbsCenterDtoService tbsCenterDtoService; |
|||
|
|||
@Override |
|||
@Transactional(rollbackFor = Exception.class) |
|||
public Object modifyRebate(TzcRebateParam param) { |
|||
|
|||
Long rebateId = param.getId(); |
|||
String rebateCode = null; |
|||
|
|||
if(rebateId!=null){ |
|||
TzcRebate rebate = tzcRebateService.getById(rebateId); |
|||
if(TzcRebateStatus.DRAFT.isEqual(rebate.getRebateStatus())){ |
|||
Assert.throwEx("返利状态为初始化,不能修改"); |
|||
} |
|||
rebateCode = rebate.getRebateCode(); |
|||
}else { |
|||
rebateCode = "FL"+CodeGenUtil.generate(CodeGenUtil.SourceKey.TZC_REBATE); |
|||
} |
|||
|
|||
// 校验返利参数
|
|||
this.validRebateParam(param); |
|||
|
|||
BmsSupplier supplier = bmsSupplierMapper.selectById(param.getSupplierId()); |
|||
if(supplier==null){ |
|||
Assert.throwEx("客户不存在"); |
|||
} |
|||
|
|||
TzcRebate rebate = new TzcRebate(); |
|||
rebate.setId(rebateId); |
|||
rebate.setRebateCode(rebateCode); |
|||
// rebate.setTemplateId();
|
|||
// rebate.setTemplateName();
|
|||
rebate.setRebateName(param.getRebateName()); |
|||
rebate.setRebateStatus(TzcRebateStatus.DRAFT.getStatus()); |
|||
rebate.setActivityStartTime(param.getActivityStartTime()); |
|||
rebate.setActivityEndTime(param.getActivityEndTime()); |
|||
rebate.setAutoDispatchFlag(param.getAutoDispatchFlag()); |
|||
rebate.setCheckModel(param.getCheckModel()); |
|||
rebate.setCheckMaxAmount(param.getCheckMaxAmount()); |
|||
rebate.setCheckAutoDateType(param.getCheckAutoDateType()); |
|||
rebate.setCheckStartDate(param.getCheckStartDate()); |
|||
rebate.setCheckEndDate(param.getCheckEndDate()); |
|||
rebate.setSupplierId(param.getSupplierId()); |
|||
rebate.setSupplierCode(supplier.getCode()); |
|||
rebate.setSupplierName(supplier.getName()); |
|||
rebate.setRebateAmount(param.getRebateAmount()); |
|||
rebate.setOverlayFlag(param.getOverlayFlag()); |
|||
rebate.setRemark(param.getRemark()); |
|||
tzcRebateService.saveOrUpdate(rebate); |
|||
// 重新赋值获取最新id
|
|||
rebateId = rebate.getId(); |
|||
|
|||
// 返利的商品
|
|||
List<TzcRebateGoods> tzcRebateGoodsList = this.buildRebateGoodsList(param.getGoodsList()); |
|||
// 返利的商品,关联主表id和code
|
|||
for (TzcRebateGoods rebateGoods : tzcRebateGoodsList) { |
|||
rebateGoods.setRebateId(rebate.getId()); |
|||
rebateGoods.setRebateCode(rebate.getRebateCode()); |
|||
} |
|||
tzcRebateGoodsService.saveBatch(tzcRebateGoodsList); |
|||
|
|||
// 返利的成本中心(引用类型赋值)
|
|||
List<TzcRebateCenter> rebateCenterList = new ArrayList<>(); |
|||
// 返利的科目
|
|||
List<TzcRebateSubject> tzcRebateSubjectList = this.buildRebateSubjectList(rebateId,param.getSubjectList(),rebateCenterList); |
|||
|
|||
// 期间及补偿参数保存
|
|||
for (TzcRebatePeriodParam periodParam : param.getPeriodList()) { |
|||
TzcRebatePeriod period = new TzcRebatePeriod(); |
|||
period.setRebateId(rebateId); |
|||
period.setPeriodTitle(periodParam.getPeriodTitle()); |
|||
period.setPeriodStartDate(periodParam.getPeriodStartDate()); |
|||
period.setPeriodEndDate(periodParam.getPeriodEndDate()); |
|||
period.setPeriodAmount(periodParam.getPeriodAmount()); |
|||
period.setSamePeriodAmount(periodParam.getSamePeriodAmount()); |
|||
period.setCompensationFlag(periodParam.getCompensationFlag()); |
|||
period.setRemark(periodParam.getRemark()); |
|||
tzcRebatePeriodService.save(period); |
|||
Long periodId = period.getId(); |
|||
|
|||
TzcRebateArgumentParam argumentParam = periodParam.getArgumentParam(); |
|||
TzcRebateLevelsArgument argument = new TzcRebateLevelsArgument(); |
|||
argument.setBusinessType(TzcArgTypes.PeriodExtend.name()); |
|||
argument.setLevelId(0L); |
|||
argument.setPeriodId(periodId); |
|||
argument.setSumAddFlag(argumentParam.getSumAddFlag()); |
|||
argument.setRateAmtFlag(argumentParam.getRateAmtFlag()); |
|||
argument.setSumReturnRate(argumentParam.getSumReturnRate()); |
|||
argument.setSumReturnFixed(argumentParam.getSumReturnFixed()); |
|||
argument.setSumMaxReturn(argumentParam.getSumMaxReturn()); |
|||
argument.setAddReturnRate(argumentParam.getAddReturnRate()); |
|||
argument.setAddReturnFixed(argumentParam.getAddReturnFixed()); |
|||
argument.setAddMaxReturn(argumentParam.getAddMaxReturn()); |
|||
tzcRebateLevelsArgumentService.save(argument); |
|||
} |
|||
|
|||
for (TzcRebateLevelsConfigParam configParam : param.getConfigList()) { |
|||
TzcRebateLevelsConfig config = new TzcRebateLevelsConfig(); |
|||
config.setRebateId(rebateId); |
|||
config.setLevelNum(config.getLevelNum()); |
|||
config.setLevelConfigs(config.getLevelConfigs()); |
|||
tzcRebateLevelsConfigService.save(config); |
|||
} |
|||
|
|||
return null; |
|||
} |
|||
|
|||
@NotNull |
|||
private List<TzcRebateSubject> buildRebateSubjectList(Long rebateId,List<TzcRebateSubjectParam> subjectList,List<TzcRebateCenter> rebateCenterList) { |
|||
List<TzcRebateSubject> rebateSubjectList = new ArrayList<>(); |
|||
for (TzcRebateSubjectParam subjectParam : subjectList) { |
|||
TzcRebateSubject rebateSubject = new TzcRebateSubject(); |
|||
BmsSubject subject = bmsSubjectMapper.selectById(subjectParam.getSubjectId()); |
|||
rebateSubject.setRebateId(rebateId); |
|||
rebateSubject.setSubjectId(subject.getId()); |
|||
rebateSubject.setSubjectCode(subject.getSubjectCode()); |
|||
rebateSubject.setSubjectName(subject.getSubjectName()); |
|||
rebateSubject.setSubjectRate(subjectParam.getSubjectRate()); |
|||
rebateSubject.setSubjectAmount(subjectParam.getSubjectAmount()); |
|||
rebateSubject.setRemark(subjectParam.getRemark()); |
|||
rebateSubject.setTmpUk(subjectParam.getTmpUk()); |
|||
// 保存科目
|
|||
tzcRebateSubjectService.save(rebateSubject); |
|||
Long rebateSubjectId = rebateSubject.getId(); |
|||
|
|||
List<TzcRebateCenterParam> centerParamList= subjectParam.getCenterList(); |
|||
for (TzcRebateCenterParam centerParam : centerParamList) { |
|||
String centerType = centerParam.getCenterType(); |
|||
String centerId = centerParam.getCenterId(); |
|||
TbsCenterDto centerDto = tbsCenterDtoService.getCenterDto(centerType,centerId); |
|||
TzcRebateCenter rebateCenter = new TzcRebateCenter(); |
|||
rebateCenter.setRebateId(rebateId); |
|||
rebateCenter.setRebateSubjectId(rebateSubjectId); |
|||
rebateCenter.setSubjectId(subject.getId()); |
|||
rebateCenter.setCenterAmount(centerParam.getCenterAmount()); |
|||
rebateCenter.setCenterRate(centerParam.getCenterRate()); |
|||
rebateCenter.setCenterType(centerDto.getCenterType()); |
|||
rebateCenter.setCenterId(centerDto.getId()); |
|||
rebateCenter.setCenterCode(centerDto.getCenterCode()); |
|||
rebateCenter.setCenterName(centerDto.getCenterName()); |
|||
rebateCenter.setRemark(centerParam.getRemark()); |
|||
rebateCenter.setTmpUk(centerParam.getTmpUk()); |
|||
rebateCenterList.add(rebateCenter); |
|||
} |
|||
} |
|||
// 批量保存成本中心
|
|||
tzcRebateCenterService.saveBatch(rebateCenterList); |
|||
return rebateSubjectList; |
|||
} |
|||
|
|||
@NotNull |
|||
private List<TzcRebateGoods> buildRebateGoodsList(List<TzcRebateGoodsParam> goodsList) { |
|||
List<TzcRebateGoods> tzcRebateGoodsList = new ArrayList<>(); |
|||
Map<String,List<TzcRebateGoodsParam>> goodsListMap = goodsList.stream() |
|||
.collect(Collectors.groupingBy(TzcRebateGoodsParam::getGoodsType)); |
|||
for (Map.Entry<String, List<TzcRebateGoodsParam>> entry : goodsListMap.entrySet()) { |
|||
String goodsType = entry.getKey(); |
|||
List<TzcRebateGoodsParam> goodsParamList = entry.getValue(); |
|||
List<GoodsTargetInfo> goodsTargetList = goodsApplicationService.getGoodsTargetInfo(goodsType,goodsParamList.stream() |
|||
.map(TzcRebateGoodsParam::getGoodsId).collect(Collectors.toList())); |
|||
for (GoodsTargetInfo targetInfo : goodsTargetList) { |
|||
TzcRebateGoods rebateGoods = CopierUtil.copy(targetInfo,new TzcRebateGoods()); |
|||
for (TzcRebateGoodsParam goodsParam : goodsParamList) { |
|||
if(goodsParam.getGoodsId().equals(targetInfo.getTargetId())){ |
|||
rebateGoods.setTmpUk(goodsParam.getTmpUk()); |
|||
rebateGoods.setRemark(goodsParam.getRemark()); |
|||
break; |
|||
} |
|||
} |
|||
tzcRebateGoodsList.add(rebateGoods); |
|||
} |
|||
} |
|||
return tzcRebateGoodsList; |
|||
} |
|||
|
|||
private void validRebateParam(TzcRebateParam param) { |
|||
BigDecimal oneHundred = new BigDecimal(100); |
|||
List<TzcRebateSubjectParam> subjectParamList = param.getSubjectList(); |
|||
BigDecimal totalRate = BigDecimal.ZERO; |
|||
BigDecimal totalAmount = BigDecimal.ZERO; |
|||
for (TzcRebateSubjectParam subjectParam : subjectParamList) { |
|||
|
|||
List<TzcRebateCenterParam> centerParamList = subjectParam.getCenterList(); |
|||
BigDecimal totalCenterRate = BigDecimal.ZERO; |
|||
BigDecimal totalCenterAmount = BigDecimal.ZERO; |
|||
for (TzcRebateCenterParam centerParam : centerParamList) { |
|||
if(centerParam.getCenterRate().compareTo(BigDecimal.ZERO)<0){ |
|||
Assert.throwEx("成本中心占比不能小于0"); |
|||
} |
|||
if(centerParam.getCenterAmount().compareTo(BigDecimal.ZERO)<0){ |
|||
Assert.throwEx("成本中心额度不能小于0"); |
|||
} |
|||
totalCenterRate = totalCenterRate.add(centerParam.getCenterRate()); |
|||
totalCenterAmount = totalCenterAmount.add(centerParam.getCenterAmount()); |
|||
} |
|||
if(totalCenterRate.compareTo(oneHundred)!=0){ |
|||
Assert.throwEx("科目的成本中心合计占比异常,当前:"+totalCenterRate+"%"); |
|||
} |
|||
if(totalCenterAmount.compareTo(subjectParam.getSubjectAmount())!=0){ |
|||
Assert.throwEx("科目的成本中心合计计必须为返利科目额度"+totalCenterAmount+"元"); |
|||
} |
|||
if(subjectParam.getSubjectRate().compareTo(BigDecimal.ZERO)<0){ |
|||
Assert.throwEx("科目占比不能小于0"); |
|||
} |
|||
if(subjectParam.getSubjectAmount().compareTo(BigDecimal.ZERO)<0){ |
|||
Assert.throwEx("科目额度不能小于0"); |
|||
} |
|||
totalRate = totalRate.add(subjectParam.getSubjectRate()); |
|||
totalAmount = totalAmount.add(subjectParam.getSubjectAmount()); |
|||
|
|||
} |
|||
if(totalRate.compareTo(oneHundred)!=0){ |
|||
Assert.throwEx("科目占比合计["+totalRate+"%]不为100%"); |
|||
} |
|||
if(totalAmount.compareTo(param.getRebateAmount())!=0){ |
|||
Assert.throwEx("科目额度合计异常金额:"+totalAmount+"元"); |
|||
} |
|||
|
|||
List<TzcRebatePeriodParam> periodList = param.getPeriodList(); |
|||
for (int i = 0; i < periodList.size(); i++) { |
|||
TzcRebatePeriodParam period = periodList.get(i); |
|||
for (int j = i + 1; j < periodList.size(); j++) { |
|||
TzcRebatePeriodParam period2 = periodList.get(j); |
|||
if (period.getPeriodEndDate().compareTo(period2.getPeriodStartDate()) >= 0 |
|||
&& period.getPeriodStartDate().compareTo(period2.getPeriodEndDate()) <= 0) { |
|||
Assert.throwEx("["+period.getPeriodTitle()+"]与["+period2.getPeriodTitle()+"],时间段存在交集"); |
|||
} |
|||
} |
|||
if(ResultFlag.isTrue(period.getCompensationFlag())){ |
|||
if(period.getArgumentParam()==null){ |
|||
Assert.throwEx("["+period.getPeriodTitle()+"]返利补偿不能为空"); |
|||
} |
|||
} |
|||
} |
|||
|
|||
// 校验坎级叠加
|
|||
if(ResultFlag.isTrue(param.getOverlayFlag())){ |
|||
if(CollUtil.isEmpty(param.getConfigList())){ |
|||
Assert.throwEx("坎级叠加标识为1时,坎级配置不能为空"); |
|||
} |
|||
} |
|||
} |
|||
|
|||
@Override |
|||
public void commitRebate(Long id) { |
|||
|
|||
} |
|||
|
|||
} |
@ -0,0 +1,22 @@ |
|||
package com.qs.serve.modules.tzc.service.impl; |
|||
|
|||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
|||
import com.qs.serve.modules.tzc.entity.TzcRebateCenter; |
|||
import com.qs.serve.modules.tzc.mapper.TzcRebateCenterMapper; |
|||
import com.qs.serve.modules.tzc.service.TzcRebateCenterService; |
|||
import lombok.AllArgsConstructor; |
|||
import lombok.extern.slf4j.Slf4j; |
|||
import org.springframework.stereotype.Service; |
|||
|
|||
/** |
|||
* 活动成本中心项 服务实现类 |
|||
* @author YenHex |
|||
* @since 2025-04-15 |
|||
*/ |
|||
@Slf4j |
|||
@Service |
|||
@AllArgsConstructor |
|||
public class TzcRebateCenterServiceImpl extends ServiceImpl<TzcRebateCenterMapper,TzcRebateCenter> implements TzcRebateCenterService { |
|||
|
|||
} |
|||
|
@ -0,0 +1,22 @@ |
|||
package com.qs.serve.modules.tzc.service.impl; |
|||
|
|||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
|||
import lombok.AllArgsConstructor; |
|||
import lombok.extern.slf4j.Slf4j; |
|||
import org.springframework.stereotype.Service; |
|||
import com.qs.serve.modules.tzc.entity.TzcRebateGoods; |
|||
import com.qs.serve.modules.tzc.service.TzcRebateGoodsService; |
|||
import com.qs.serve.modules.tzc.mapper.TzcRebateGoodsMapper; |
|||
|
|||
/** |
|||
* 返利商品 服务实现类 |
|||
* @author YenHex |
|||
* @since 2025-04-23 |
|||
*/ |
|||
@Slf4j |
|||
@Service |
|||
@AllArgsConstructor |
|||
public class TzcRebateGoodsServiceImpl extends ServiceImpl<TzcRebateGoodsMapper,TzcRebateGoods> implements TzcRebateGoodsService { |
|||
|
|||
} |
|||
|
@ -0,0 +1,22 @@ |
|||
package com.qs.serve.modules.tzc.service.impl; |
|||
|
|||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
|||
import com.qs.serve.modules.tzc.entity.TzcRebateLevelsArgument; |
|||
import com.qs.serve.modules.tzc.mapper.TzcRebateLevelsArgumentMapper; |
|||
import com.qs.serve.modules.tzc.service.TzcRebateLevelsArgumentService; |
|||
import lombok.AllArgsConstructor; |
|||
import lombok.extern.slf4j.Slf4j; |
|||
import org.springframework.stereotype.Service; |
|||
|
|||
/** |
|||
* 返利坎级参数 服务实现类 |
|||
* @author YenHex |
|||
* @since 2025-04-15 |
|||
*/ |
|||
@Slf4j |
|||
@Service |
|||
@AllArgsConstructor |
|||
public class TzcRebateLevelsArgumentServiceImpl extends ServiceImpl<TzcRebateLevelsArgumentMapper,TzcRebateLevelsArgument> implements TzcRebateLevelsArgumentService { |
|||
|
|||
} |
|||
|
@ -0,0 +1,22 @@ |
|||
package com.qs.serve.modules.tzc.service.impl; |
|||
|
|||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
|||
import com.qs.serve.modules.tzc.entity.TzcRebateLevelsConfig; |
|||
import com.qs.serve.modules.tzc.mapper.TzcRebateLevelsConfigMapper; |
|||
import com.qs.serve.modules.tzc.service.TzcRebateLevelsConfigService; |
|||
import lombok.AllArgsConstructor; |
|||
import lombok.extern.slf4j.Slf4j; |
|||
import org.springframework.stereotype.Service; |
|||
|
|||
/** |
|||
* 返利坎级 服务实现类 |
|||
* @author YenHex |
|||
* @since 2025-04-15 |
|||
*/ |
|||
@Slf4j |
|||
@Service |
|||
@AllArgsConstructor |
|||
public class TzcRebateLevelsConfigServiceImpl extends ServiceImpl<TzcRebateLevelsConfigMapper,TzcRebateLevelsConfig> implements TzcRebateLevelsConfigService { |
|||
|
|||
} |
|||
|
@ -0,0 +1,22 @@ |
|||
package com.qs.serve.modules.tzc.service.impl; |
|||
|
|||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
|||
import com.qs.serve.modules.tzc.entity.TzcRebateLevels; |
|||
import com.qs.serve.modules.tzc.mapper.TzcRebateLevelsMapper; |
|||
import com.qs.serve.modules.tzc.service.TzcRebateLevelsService; |
|||
import lombok.AllArgsConstructor; |
|||
import lombok.extern.slf4j.Slf4j; |
|||
import org.springframework.stereotype.Service; |
|||
|
|||
/** |
|||
* 返利坎级 服务实现类 |
|||
* @author YenHex |
|||
* @since 2025-04-15 |
|||
*/ |
|||
@Slf4j |
|||
@Service |
|||
@AllArgsConstructor |
|||
public class TzcRebateLevelsServiceImpl extends ServiceImpl<TzcRebateLevelsMapper,TzcRebateLevels> implements TzcRebateLevelsService { |
|||
|
|||
} |
|||
|
@ -0,0 +1,22 @@ |
|||
package com.qs.serve.modules.tzc.service.impl; |
|||
|
|||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
|||
import com.qs.serve.modules.tzc.entity.TzcRebatePeriod; |
|||
import com.qs.serve.modules.tzc.mapper.TzcRebatePeriodMapper; |
|||
import com.qs.serve.modules.tzc.service.TzcRebatePeriodService; |
|||
import lombok.AllArgsConstructor; |
|||
import lombok.extern.slf4j.Slf4j; |
|||
import org.springframework.stereotype.Service; |
|||
|
|||
/** |
|||
* 返利适用期间 服务实现类 |
|||
* @author YenHex |
|||
* @since 2025-04-15 |
|||
*/ |
|||
@Slf4j |
|||
@Service |
|||
@AllArgsConstructor |
|||
public class TzcRebatePeriodServiceImpl extends ServiceImpl<TzcRebatePeriodMapper,TzcRebatePeriod> implements TzcRebatePeriodService { |
|||
|
|||
} |
|||
|
@ -0,0 +1,22 @@ |
|||
package com.qs.serve.modules.tzc.service.impl; |
|||
|
|||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
|||
import com.qs.serve.modules.tzc.entity.TzcRebate; |
|||
import com.qs.serve.modules.tzc.mapper.TzcRebateMapper; |
|||
import com.qs.serve.modules.tzc.service.TzcRebateService; |
|||
import lombok.AllArgsConstructor; |
|||
import lombok.extern.slf4j.Slf4j; |
|||
import org.springframework.stereotype.Service; |
|||
|
|||
/** |
|||
* 返利信息 服务实现类 |
|||
* @author YenHex |
|||
* @since 2025-04-15 |
|||
*/ |
|||
@Slf4j |
|||
@Service |
|||
@AllArgsConstructor |
|||
public class TzcRebateServiceImpl extends ServiceImpl<TzcRebateMapper,TzcRebate> implements TzcRebateService { |
|||
|
|||
} |
|||
|
@ -0,0 +1,22 @@ |
|||
package com.qs.serve.modules.tzc.service.impl; |
|||
|
|||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
|||
import com.qs.serve.modules.tzc.entity.TzcRebateSubject; |
|||
import com.qs.serve.modules.tzc.mapper.TzcRebateSubjectMapper; |
|||
import com.qs.serve.modules.tzc.service.TzcRebateSubjectService; |
|||
import lombok.AllArgsConstructor; |
|||
import lombok.extern.slf4j.Slf4j; |
|||
import org.springframework.stereotype.Service; |
|||
|
|||
/** |
|||
* 活动科目项 服务实现类 |
|||
* @author YenHex |
|||
* @since 2025-04-15 |
|||
*/ |
|||
@Slf4j |
|||
@Service |
|||
@AllArgsConstructor |
|||
public class TzcRebateSubjectServiceImpl extends ServiceImpl<TzcRebateSubjectMapper,TzcRebateSubject> implements TzcRebateSubjectService { |
|||
|
|||
} |
|||
|
Loading…
Reference in new issue