From 7b9b27f35387d10b3eabaaa00e364b8723566925 Mon Sep 17 00:00:00 2001 From: Yen Date: Tue, 29 Apr 2025 14:12:19 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E8=BF=94=E5=88=A9=E6=A8=A1=E6=9D=BF?= =?UTF-8?q?=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../serve/modules/tzc/consts/TzcArgTypes.java | 2 +- .../tzc/entity/TzcRebateLevelsArgument.java | 3 - .../modules/tzc/entity/bo/TzcRebateParam.java | 15 ++ .../service/TzcRebateApplicationService.java | 28 --- .../impl/TzcRebateApplicationServiceImpl.java | 224 ------------------ .../goods/controller/GoodsSpuController.java | 2 + .../modules/tbs/entity/TbsCostApply.java | 2 +- .../service/impl/TbsActivityServiceImpl.java | 2 +- .../impl/TbsCostApplyPart1ServiceImpl.java | 2 +- .../service/impl/TbsCostApplyServiceImpl.java | 3 + .../TzcRebateApplication4CostServiceImpl.java | 2 +- .../impl/TzcRebateApplicationServiceImpl.java | 7 +- 12 files changed, 28 insertions(+), 264 deletions(-) delete mode 100644 cms-modules/cms-policy/cms-policy-bus/src/main/java/com/qs/serve/modules/tzc/service/TzcRebateApplicationService.java delete mode 100644 cms-modules/cms-policy/cms-policy-bus/src/main/java/com/qs/serve/modules/tzc/service/impl/TzcRebateApplicationServiceImpl.java diff --git a/cms-modules/cms-policy/cms-policy-api/src/main/java/com/qs/serve/modules/tzc/consts/TzcArgTypes.java b/cms-modules/cms-policy/cms-policy-api/src/main/java/com/qs/serve/modules/tzc/consts/TzcArgTypes.java index a996e42..f2592e3 100644 --- a/cms-modules/cms-policy/cms-policy-api/src/main/java/com/qs/serve/modules/tzc/consts/TzcArgTypes.java +++ b/cms-modules/cms-policy/cms-policy-api/src/main/java/com/qs/serve/modules/tzc/consts/TzcArgTypes.java @@ -7,7 +7,7 @@ package com.qs.serve.modules.tzc.consts; public enum TzcArgTypes { // 期间补偿 扩展 - PeriodSupplement, + //PeriodSupplement, // 坎级返利 扩展 LevelReturn, // 坎级总目标返利 扩展(期间补偿) diff --git a/cms-modules/cms-policy/cms-policy-api/src/main/java/com/qs/serve/modules/tzc/entity/TzcRebateLevelsArgument.java b/cms-modules/cms-policy/cms-policy-api/src/main/java/com/qs/serve/modules/tzc/entity/TzcRebateLevelsArgument.java index 117d0fd..896263d 100644 --- a/cms-modules/cms-policy/cms-policy-api/src/main/java/com/qs/serve/modules/tzc/entity/TzcRebateLevelsArgument.java +++ b/cms-modules/cms-policy/cms-policy-api/src/main/java/com/qs/serve/modules/tzc/entity/TzcRebateLevelsArgument.java @@ -41,9 +41,6 @@ public class TzcRebateLevelsArgument implements Serializable { @Length(max = 64,message = "业务类型:返利;总目标;补偿长度不能超过64字") private String businessType; - /** 补偿的期间id */ - private Long periodId; - /** 目标销量维度:0-总量;1-增量 */ private Integer sumAddFlag; 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 6416833..087bf9e 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 @@ -31,34 +31,43 @@ public class TzcRebateParam{ private String rebateName; /** 返利开始时间 */ + @NotNull(message = "返利开始时间不能为空") @DateTimeFormat(pattern = "yyyy-MM-dd") private LocalDate activityStartTime; /** 返利结束时间 */ + @NotNull(message = "返利结束时间不能为空") @DateTimeFormat(pattern = "yyyy-MM-dd") private LocalDate activityEndTime; /** 核销模式:0-人工复核;1-自动核销 */ + @NotNull(message = "核销模式不能为空") private Integer checkModel; /** 超过多少金额自动核销变为人工核销 */ + @NotNull(message = "超过多少金额自动核销变为人工核销不能为空") private BigDecimal checkMaxAmount; /** 自动核销日期类型:0-手动设置;1-自然月;2-自然周 */ + @NotNull(message = "自动核销日期类型不能为空") private Integer checkAutoDateType; /** 核销开始时间 */ + @NotNull(message = "核销开始时间不能为空") @DateTimeFormat(pattern = "yyyy-MM-dd") private LocalDate checkStartDate; /** 核销结束时间 */ + @NotNull(message = "核销结束时间不能为空") @DateTimeFormat(pattern = "yyyy-MM-dd") private LocalDate checkEndDate; /** 客户id */ + @NotNull(message = "客户id不能为空") private Long supplierId; /** 返利总金额 */ + @NotNull(message = "返利总金额(总预算上限)不能为空") private BigDecimal rebateAmount; /** 备注 */ @@ -67,31 +76,37 @@ public class TzcRebateParam{ /** * 产品类型:brand、category、series、spu、sku */ + @NotNull(message = "产品类型不能为空") private String goodsType; /** * 商品列表 */ + @NotNull(message = "商品列表不能为空") private List goodsList; /** * 科目列表(内含成本中心列表) */ + @NotNull(message = "科目列表不能为空") private List subjectList; /** * 期间列表 */ + @NotNull(message = "期间列表不能为空") private List periodList; /** * 坎级配置列 */ + @NotNull(message = "坎级配置列不能为空") private List configList; /** * 坎级配置列 */ + @NotNull(message = "坎级配置列不能为空") private List levelsList; } diff --git a/cms-modules/cms-policy/cms-policy-bus/src/main/java/com/qs/serve/modules/tzc/service/TzcRebateApplicationService.java b/cms-modules/cms-policy/cms-policy-bus/src/main/java/com/qs/serve/modules/tzc/service/TzcRebateApplicationService.java deleted file mode 100644 index 05ed14b..0000000 --- a/cms-modules/cms-policy/cms-policy-bus/src/main/java/com/qs/serve/modules/tzc/service/TzcRebateApplicationService.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.qs.serve.modules.tzc.service; - -import com.baomidou.mybatisplus.extension.service.IService; -import com.qs.serve.modules.tzc.entity.TzcRebate; -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); - -} - diff --git a/cms-modules/cms-policy/cms-policy-bus/src/main/java/com/qs/serve/modules/tzc/service/impl/TzcRebateApplicationServiceImpl.java b/cms-modules/cms-policy/cms-policy-bus/src/main/java/com/qs/serve/modules/tzc/service/impl/TzcRebateApplicationServiceImpl.java deleted file mode 100644 index 4d109dd..0000000 --- a/cms-modules/cms-policy/cms-policy-bus/src/main/java/com/qs/serve/modules/tzc/service/impl/TzcRebateApplicationServiceImpl.java +++ /dev/null @@ -1,224 +0,0 @@ -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.basic.entity.BmsSubject; -import com.qs.serve.modules.basic.entity.BmsSupplier; -import com.qs.serve.modules.basic.entity.dto.GoodsTargetInfo; -import com.qs.serve.modules.basic.mapper.BmsCostCenterMapper; -import com.qs.serve.modules.basic.mapper.BmsSubjectMapper; -import com.qs.serve.modules.basic.mapper.BmsSupplierMapper; -import com.qs.serve.modules.basic.service.GoodsApplicationService; -import com.qs.serve.modules.tzc.entity.TzcRebate; -import com.qs.serve.modules.tzc.entity.TzcRebateGoods; -import com.qs.serve.modules.tzc.entity.TzcRebateSubject; -import com.qs.serve.modules.tzc.entity.bo.*; -import com.qs.serve.modules.tzc.enums.TzcRebateStatus; -import com.qs.serve.modules.tzc.service.TzcRebateApplicationService; -import com.qs.serve.modules.tzc.service.TzcRebateService; -import lombok.AllArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.jetbrains.annotations.NotNull; -import org.springframework.stereotype.Service; - -import java.math.BigDecimal; -import java.util.ArrayList; -import java.util.HashMap; -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 BmsCostCenterMapper bmsCostCenterMapper; - private final BmsSupplierMapper bmsSupplierMapper; - private final BmsSubjectMapper bmsSubjectMapper; - private final GoodsApplicationService goodsApplicationService; - - @Override - 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.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.setRemark(param.getRemark()); - - // 返利的商品 - List tzcRebateGoodsList = this.buildRebateGoodsList(param.getGoodsType(),param.getGoodsList()); - // 返利的商品,关联主表id和code - for (TzcRebateGoods rebateGoods : tzcRebateGoodsList) { - rebateGoods.setRebateId(rebate.getId()); - rebateGoods.setRebateCode(rebate.getRebateCode()); - } - - // 返利的科目 - List tzcRebateSubjectList = this.buildRebateSubjectList(param.getSubjectList()); - - - return null; - } - - @NotNull - private List buildRebateSubjectList(List subjectList) { - List rebateSubjectList = new ArrayList<>(); - for (TzcRebateSubjectParam subjectParam : subjectList) { - TzcRebateSubject rebateSubject = new TzcRebateSubject(); - BmsSubject subject = bmsSubjectMapper.selectById(subjectParam.getSubjectId()); - 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()); - - List centerParamList= subjectParam.getCenterList(); - } - return rebateSubjectList; - } - - @NotNull - private List buildRebateGoodsList(String goodsTypeAll, List goodsList) { - List tzcRebateGoodsList = new ArrayList<>(); - // 方式一:支持多种 -// Map> goodsListMap = goodsList.stream() -// .collect(Collectors.groupingBy(TzcRebateGoodsParam::getGoodsType)); - // 方式二:只支持一种,兼容旧活动接口参数 - Map> goodsListMap = new HashMap<>(); - goodsListMap.put(goodsTypeAll,goodsList); - - for (Map.Entry> entry : goodsListMap.entrySet()) { - String goodsType = entry.getKey(); - List goodsParamList = entry.getValue(); - List 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 subjectParamList = param.getSubjectList(); - BigDecimal totalRate = BigDecimal.ZERO; - BigDecimal totalAmount = BigDecimal.ZERO; - for (TzcRebateSubjectParam subjectParam : subjectParamList) { - - List 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 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(CollUtil.isEmpty(param.getConfigList())){ - Assert.throwEx("坎级叠加标识为1时,坎级配置不能为空"); - } - } - - @Override - public void commitRebate(Long id) { - - } - -} diff --git a/cms-modules/cms-system/src/main/java/com/qs/serve/modules/goods/controller/GoodsSpuController.java b/cms-modules/cms-system/src/main/java/com/qs/serve/modules/goods/controller/GoodsSpuController.java index b2e666e..dddbcce 100644 --- a/cms-modules/cms-system/src/main/java/com/qs/serve/modules/goods/controller/GoodsSpuController.java +++ b/cms-modules/cms-system/src/main/java/com/qs/serve/modules/goods/controller/GoodsSpuController.java @@ -485,6 +485,8 @@ public class GoodsSpuController { */ @GetMapping("/export") public R> export(GoodsSpu param){ + // 防止标签查询异常 + param.setTagQueryList(null); if(DevEnvironmentConfig.OPEN_TENANT_BOOK){ param.setBookCodeList(BookAccountUtil.getCurrentUserAccount()); } diff --git a/cms-modules/cms-system/src/main/java/com/qs/serve/modules/tbs/entity/TbsCostApply.java b/cms-modules/cms-system/src/main/java/com/qs/serve/modules/tbs/entity/TbsCostApply.java index 8337247..f62557b 100644 --- a/cms-modules/cms-system/src/main/java/com/qs/serve/modules/tbs/entity/TbsCostApply.java +++ b/cms-modules/cms-system/src/main/java/com/qs/serve/modules/tbs/entity/TbsCostApply.java @@ -138,7 +138,7 @@ public class TbsCostApply implements Serializable { private String syFlowId; /** - * 合同类型:0->无;1->有合同;2->进场费 + * 合同类型:0->无;1->有合同;2->进场费;3->返利类型 */ private Integer contractFlag; diff --git a/cms-modules/cms-system/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsActivityServiceImpl.java b/cms-modules/cms-system/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsActivityServiceImpl.java index d1bcb17..30b7b99 100644 --- a/cms-modules/cms-system/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsActivityServiceImpl.java +++ b/cms-modules/cms-system/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsActivityServiceImpl.java @@ -146,7 +146,7 @@ public class TbsActivityServiceImpl extends ServiceImpl activityCenterList = new ArrayList<>(); 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 b9d6196..0ecb8da 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 @@ -152,8 +152,8 @@ public class TzcRebateApplicationServiceImpl implements TzcRebateApplicationServ if(rebateId!=null){ isUpdate = true; TzcRebate rebate = tzcRebateService.getById(rebateId); - if(TzcRebateStatus.DRAFT.isEqual(rebate.getRebateStatus())){ - Assert.throwEx("返利状态为初始化,不能修改"); + if(!TzcRebateStatus.DRAFT.isEqual(rebate.getRebateStatus())){ + Assert.throwEx("返利状态不为草稿,不能修改"); } rebateCode = rebate.getRebateCode(); }else { @@ -364,14 +364,12 @@ public class TzcRebateApplicationServiceImpl implements TzcRebateApplicationServ TzcRebateLevelsArgument argument = buildArgByParam(levelsParam.getOverallTargetArgument()); argument.setBusinessType(TzcArgTypes.LevelOverallReturn.name()); argument.setLevelId(levelId); - argument.setPeriodId(0L); argument.setRebateId(rebateId); tzcRebateLevelsArgumentService.save(argument); TzcRebateLevelsArgument argument2 = buildArgByParam(levelsParam.getTargetArgument()); argument2.setBusinessType(TzcArgTypes.LevelReturn.name()); argument2.setLevelId(levelId); - argument2.setPeriodId(0L); argument.setRebateId(rebateId); tzcRebateLevelsArgumentService.save(argument2); @@ -466,6 +464,7 @@ public class TzcRebateApplicationServiceImpl implements TzcRebateApplicationServ tzcRebatePeriodService.remove(qw); tzcRebateLevelsArgumentService.remove(qw); tzcRebateGoodsService.remove(qw); + tzcRebateLevelsService.remove(qw); tzcRebateLevelsConfigService.remove(qw); }