Browse Source

feat: 迁移回旧模块拓展返利功能

master
Yen 3 months ago
parent
commit
27d069d949
  1. 14
      cms-modules/cms-policy/cms-policy-api/src/main/java/com/qs/serve/modules/tzc/consts/TzcArgTypes.java
  2. 41
      cms-modules/cms-policy/cms-policy-api/src/main/java/com/qs/serve/modules/tzc/entity/TzcRebatePeriod.java
  3. 14
      cms-modules/cms-system/src/main/java/com/qs/serve/modules/tzc/mapper/TzcRebateCenterMapper.java
  4. 14
      cms-modules/cms-system/src/main/java/com/qs/serve/modules/tzc/mapper/TzcRebateGoodsMapper.java
  5. 14
      cms-modules/cms-system/src/main/java/com/qs/serve/modules/tzc/mapper/TzcRebateLevelsArgumentMapper.java
  6. 14
      cms-modules/cms-system/src/main/java/com/qs/serve/modules/tzc/mapper/TzcRebateLevelsConfigMapper.java
  7. 14
      cms-modules/cms-system/src/main/java/com/qs/serve/modules/tzc/mapper/TzcRebateLevelsMapper.java
  8. 14
      cms-modules/cms-system/src/main/java/com/qs/serve/modules/tzc/mapper/TzcRebateMapper.java
  9. 14
      cms-modules/cms-system/src/main/java/com/qs/serve/modules/tzc/mapper/TzcRebatePeriodMapper.java
  10. 14
      cms-modules/cms-system/src/main/java/com/qs/serve/modules/tzc/mapper/TzcRebateSubjectMapper.java
  11. 26
      cms-modules/cms-system/src/main/java/com/qs/serve/modules/tzc/service/TzcRebateApplicationService.java
  12. 14
      cms-modules/cms-system/src/main/java/com/qs/serve/modules/tzc/service/TzcRebateCenterService.java
  13. 14
      cms-modules/cms-system/src/main/java/com/qs/serve/modules/tzc/service/TzcRebateGoodsService.java
  14. 14
      cms-modules/cms-system/src/main/java/com/qs/serve/modules/tzc/service/TzcRebateLevelsArgumentService.java
  15. 14
      cms-modules/cms-system/src/main/java/com/qs/serve/modules/tzc/service/TzcRebateLevelsConfigService.java
  16. 14
      cms-modules/cms-system/src/main/java/com/qs/serve/modules/tzc/service/TzcRebateLevelsService.java
  17. 14
      cms-modules/cms-system/src/main/java/com/qs/serve/modules/tzc/service/TzcRebatePeriodService.java
  18. 14
      cms-modules/cms-system/src/main/java/com/qs/serve/modules/tzc/service/TzcRebateService.java
  19. 14
      cms-modules/cms-system/src/main/java/com/qs/serve/modules/tzc/service/TzcRebateSubjectService.java
  20. 303
      cms-modules/cms-system/src/main/java/com/qs/serve/modules/tzc/service/impl/TzcRebateApplicationServiceImpl.java
  21. 22
      cms-modules/cms-system/src/main/java/com/qs/serve/modules/tzc/service/impl/TzcRebateCenterServiceImpl.java
  22. 22
      cms-modules/cms-system/src/main/java/com/qs/serve/modules/tzc/service/impl/TzcRebateGoodsServiceImpl.java
  23. 22
      cms-modules/cms-system/src/main/java/com/qs/serve/modules/tzc/service/impl/TzcRebateLevelsArgumentServiceImpl.java
  24. 22
      cms-modules/cms-system/src/main/java/com/qs/serve/modules/tzc/service/impl/TzcRebateLevelsConfigServiceImpl.java
  25. 22
      cms-modules/cms-system/src/main/java/com/qs/serve/modules/tzc/service/impl/TzcRebateLevelsServiceImpl.java
  26. 22
      cms-modules/cms-system/src/main/java/com/qs/serve/modules/tzc/service/impl/TzcRebatePeriodServiceImpl.java
  27. 22
      cms-modules/cms-system/src/main/java/com/qs/serve/modules/tzc/service/impl/TzcRebateServiceImpl.java
  28. 22
      cms-modules/cms-system/src/main/java/com/qs/serve/modules/tzc/service/impl/TzcRebateSubjectServiceImpl.java

14
cms-modules/cms-policy/cms-policy-api/src/main/java/com/qs/serve/modules/tzc/consts/TzcArgTypes.java

@ -0,0 +1,14 @@
package com.qs.serve.modules.tzc.consts;
/**
* @author YenHex
* @since 2025/4/23
*/
public enum TzcArgTypes {
// 期间补偿 扩展
PeriodExtend,
// 坎级 扩展
LevelExtend
}

41
cms-modules/cms-policy/cms-policy-api/src/main/java/com/qs/serve/modules/tzc/entity/TzcRebatePeriod.java

@ -39,16 +39,14 @@ public class TzcRebatePeriod implements Serializable {
private String periodTitle;
/** 开始时间 */
@Length(max = 0,message = "开始时间长度不能超过0字")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
private LocalDateTime periodStartDate;
@DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
private LocalDate periodStartDate;
/** 结束时间 */
@Length(max = 0,message = "结束时间长度不能超过0字")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
private LocalDateTime periodEndDate;
@DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
private LocalDate periodEndDate;
/** 区间目标金额 */
private BigDecimal periodAmount;
@ -111,32 +109,5 @@ public class TzcRebatePeriod implements Serializable {
@JsonProperty
private String delFlag;
public static TzcRebatePeriod toNewObject(TzcRebatePeriod source){
TzcRebatePeriod rebatePeriod = new TzcRebatePeriod();
rebatePeriod.setId(source.getId());
rebatePeriod.setRebateId(source.getRebateId());
rebatePeriod.setPeriodTitle(source.getPeriodTitle());
rebatePeriod.setPeriodStartDate(source.getPeriodStartDate());
rebatePeriod.setPeriodEndDate(source.getPeriodEndDate());
rebatePeriod.setPeriodAmount(source.getPeriodAmount());
rebatePeriod.setSamePeriodAmount(source.getSamePeriodAmount());
rebatePeriod.setCompensationFlag(source.getCompensationFlag());
rebatePeriod.setSumAddFlag(source.getSumAddFlag());
rebatePeriod.setRateAmtFlag(source.getRateAmtFlag());
rebatePeriod.setSumRateVal(source.getSumRateVal());
rebatePeriod.setSumAmtVal(source.getSumAmtVal());
rebatePeriod.setAddRateVal(source.getAddRateVal());
rebatePeriod.setAddAmtVal(source.getAddAmtVal());
rebatePeriod.setRemark(source.getRemark());
rebatePeriod.setCreateTime(source.getCreateTime());
rebatePeriod.setUpdateTime(source.getUpdateTime());
rebatePeriod.setTenantId(source.getTenantId());
rebatePeriod.setCreateBy(source.getCreateBy());
rebatePeriod.setUpdateBy(source.getUpdateBy());
rebatePeriod.setDelFlag(source.getDelFlag());
return rebatePeriod;
}
}

14
cms-modules/cms-system/src/main/java/com/qs/serve/modules/tzc/mapper/TzcRebateCenterMapper.java

@ -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> {
}

14
cms-modules/cms-system/src/main/java/com/qs/serve/modules/tzc/mapper/TzcRebateGoodsMapper.java

@ -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> {
}

14
cms-modules/cms-system/src/main/java/com/qs/serve/modules/tzc/mapper/TzcRebateLevelsArgumentMapper.java

@ -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> {
}

14
cms-modules/cms-system/src/main/java/com/qs/serve/modules/tzc/mapper/TzcRebateLevelsConfigMapper.java

@ -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> {
}

14
cms-modules/cms-system/src/main/java/com/qs/serve/modules/tzc/mapper/TzcRebateLevelsMapper.java

@ -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> {
}

14
cms-modules/cms-system/src/main/java/com/qs/serve/modules/tzc/mapper/TzcRebateMapper.java

@ -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> {
}

14
cms-modules/cms-system/src/main/java/com/qs/serve/modules/tzc/mapper/TzcRebatePeriodMapper.java

@ -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> {
}

14
cms-modules/cms-system/src/main/java/com/qs/serve/modules/tzc/mapper/TzcRebateSubjectMapper.java

@ -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> {
}

26
cms-modules/cms-system/src/main/java/com/qs/serve/modules/tzc/service/TzcRebateApplicationService.java

@ -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);
}

14
cms-modules/cms-system/src/main/java/com/qs/serve/modules/tzc/service/TzcRebateCenterService.java

@ -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> {
}

14
cms-modules/cms-system/src/main/java/com/qs/serve/modules/tzc/service/TzcRebateGoodsService.java

@ -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> {
}

14
cms-modules/cms-system/src/main/java/com/qs/serve/modules/tzc/service/TzcRebateLevelsArgumentService.java

@ -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> {
}

14
cms-modules/cms-system/src/main/java/com/qs/serve/modules/tzc/service/TzcRebateLevelsConfigService.java

@ -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> {
}

14
cms-modules/cms-system/src/main/java/com/qs/serve/modules/tzc/service/TzcRebateLevelsService.java

@ -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> {
}

14
cms-modules/cms-system/src/main/java/com/qs/serve/modules/tzc/service/TzcRebatePeriodService.java

@ -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> {
}

14
cms-modules/cms-system/src/main/java/com/qs/serve/modules/tzc/service/TzcRebateService.java

@ -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> {
}

14
cms-modules/cms-system/src/main/java/com/qs/serve/modules/tzc/service/TzcRebateSubjectService.java

@ -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> {
}

303
cms-modules/cms-system/src/main/java/com/qs/serve/modules/tzc/service/impl/TzcRebateApplicationServiceImpl.java

@ -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) {
}
}

22
cms-modules/cms-system/src/main/java/com/qs/serve/modules/tzc/service/impl/TzcRebateCenterServiceImpl.java

@ -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 {
}

22
cms-modules/cms-system/src/main/java/com/qs/serve/modules/tzc/service/impl/TzcRebateGoodsServiceImpl.java

@ -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 {
}

22
cms-modules/cms-system/src/main/java/com/qs/serve/modules/tzc/service/impl/TzcRebateLevelsArgumentServiceImpl.java

@ -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 {
}

22
cms-modules/cms-system/src/main/java/com/qs/serve/modules/tzc/service/impl/TzcRebateLevelsConfigServiceImpl.java

@ -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 {
}

22
cms-modules/cms-system/src/main/java/com/qs/serve/modules/tzc/service/impl/TzcRebateLevelsServiceImpl.java

@ -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 {
}

22
cms-modules/cms-system/src/main/java/com/qs/serve/modules/tzc/service/impl/TzcRebatePeriodServiceImpl.java

@ -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 {
}

22
cms-modules/cms-system/src/main/java/com/qs/serve/modules/tzc/service/impl/TzcRebateServiceImpl.java

@ -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 {
}

22
cms-modules/cms-system/src/main/java/com/qs/serve/modules/tzc/service/impl/TzcRebateSubjectServiceImpl.java

@ -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…
Cancel
Save