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 8ef0145..117d0fd 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 @@ -32,6 +32,8 @@ public class TzcRebateLevelsArgument implements Serializable { @TableId(type = IdType.AUTO) private Long id; + private Long rebateId; + /** 坎级id */ private Long levelId; diff --git a/cms-modules/cms-policy/cms-policy-api/src/main/java/com/qs/serve/modules/tzc/entity/qo/TzcRebateQuery.java b/cms-modules/cms-policy/cms-policy-api/src/main/java/com/qs/serve/modules/tzc/entity/qo/TzcRebateQuery.java new file mode 100644 index 0000000..90be7aa --- /dev/null +++ b/cms-modules/cms-policy/cms-policy-api/src/main/java/com/qs/serve/modules/tzc/entity/qo/TzcRebateQuery.java @@ -0,0 +1,16 @@ +package com.qs.serve.modules.tzc.entity.qo; + +import com.qs.serve.modules.tzc.entity.TzcRebate; +import lombok.Data; + +/** + * @author YenHex + * @since 2025/4/28 + */ +@Data +public class TzcRebateQuery extends TzcRebate { + + Integer pageNum; + Integer pageSize; + +} diff --git a/cms-modules/cms-system/src/main/java/com/qs/serve/modules/tbs/controller/TbsActivityTemplateController.java b/cms-modules/cms-system/src/main/java/com/qs/serve/modules/tbs/controller/TbsActivityTemplateController.java index c2b8404..bd0cb78 100644 --- a/cms-modules/cms-system/src/main/java/com/qs/serve/modules/tbs/controller/TbsActivityTemplateController.java +++ b/cms-modules/cms-system/src/main/java/com/qs/serve/modules/tbs/controller/TbsActivityTemplateController.java @@ -206,17 +206,16 @@ public class TbsActivityTemplateController { // 罗列所有可见的模板 LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); lqw.eq(TbsActivityTemplate::getBizRegionFlag,0) - .or() .eq(TbsActivityTemplate::getSaleRegionFlag,0) - .or() .eq(TbsActivityTemplate::getCustomFlag,0) ; List activityTemplateList = tbsActivityTemplateService.list(lqw); List tmpIds = activityTemplateList.stream().map(TbsActivityTemplate::getId).collect(Collectors.toList()); // 过滤客户仅可见的模板 - List templateRegions = tbsActivityTemplateRegionService.getTemplateIds(id,tmpIds); + List templateRegions = tbsActivityTemplateRegionService.getTemplateIds(id); List templateIds = templateRegions.stream().map(TbsActivityTemplateRegion::getTemplateId) .distinct().collect(Collectors.toList()); + templateIds.addAll(tmpIds); if(CollectionUtil.isEmpty(templateIds)){ return R.ok(); } diff --git a/cms-modules/cms-system/src/main/java/com/qs/serve/modules/tbs/entity/TbsActivityTemplate.java b/cms-modules/cms-system/src/main/java/com/qs/serve/modules/tbs/entity/TbsActivityTemplate.java index 690d319..7516257 100644 --- a/cms-modules/cms-system/src/main/java/com/qs/serve/modules/tbs/entity/TbsActivityTemplate.java +++ b/cms-modules/cms-system/src/main/java/com/qs/serve/modules/tbs/entity/TbsActivityTemplate.java @@ -32,13 +32,18 @@ public class TbsActivityTemplate implements Serializable { @TableId(type = IdType.AUTO) private Long id; + /** + * 模板类型:0-费用申请(默认);1-返利申请 + */ + private Integer templateType; + /** 模板名称 */ @NotBlank(message = "模板名称不能为空") @Length(max = 60,message = "模板名称长度不能超过60字") @TableField(condition = SqlCondition.LIKE) private String templateName; - /** 模板状态 */ + /** 模板状态0-close;1-enable */ @NotNull(message = "模板状态不能为空") private Integer templateState; @@ -58,7 +63,7 @@ public class TbsActivityTemplate implements Serializable { /** 客户标识:0-全部可见;1-部分可见;2-全部不可 */ private Integer customFlag; - /** 合同类型:0->无;1->有合同 */ + /** 合同类型:0->常规;1->协议类;2->进场费 */ private Integer contractFlag; /** 费用申请主题 */ diff --git a/cms-modules/cms-system/src/main/java/com/qs/serve/modules/tbs/service/TbsActivityTemplateRegionService.java b/cms-modules/cms-system/src/main/java/com/qs/serve/modules/tbs/service/TbsActivityTemplateRegionService.java index 1d9e906..75c0abb 100644 --- a/cms-modules/cms-system/src/main/java/com/qs/serve/modules/tbs/service/TbsActivityTemplateRegionService.java +++ b/cms-modules/cms-system/src/main/java/com/qs/serve/modules/tbs/service/TbsActivityTemplateRegionService.java @@ -12,7 +12,15 @@ import java.util.List; */ public interface TbsActivityTemplateRegionService extends IService { - List getTemplateIds(String supplierId,List ignoreTemplateIds); + List getTemplateIds(String supplierId); + + /** + * 检查客户的区域数据(不判断状态) + * @param templateId + * @param supplierId + * @return + */ + boolean checkSupplier(Long templateId,String supplierId); } diff --git a/cms-modules/cms-system/src/main/java/com/qs/serve/modules/tbs/service/TbsActivityTemplateService.java b/cms-modules/cms-system/src/main/java/com/qs/serve/modules/tbs/service/TbsActivityTemplateService.java index a73ec47..a73dc18 100644 --- a/cms-modules/cms-system/src/main/java/com/qs/serve/modules/tbs/service/TbsActivityTemplateService.java +++ b/cms-modules/cms-system/src/main/java/com/qs/serve/modules/tbs/service/TbsActivityTemplateService.java @@ -11,6 +11,17 @@ import com.qs.serve.modules.tbs.entity.bo.TbsActivityTemplateBo; */ public interface TbsActivityTemplateService extends IService { + /** + * 编辑活动模板 + + 可见范围规则: + 1.可见范围小优先级比可见范围高,如:行政区域可见,客户部分可见,最终结果以客户可见为准 + 2.全部可见需要设置三个维度全部可见 + 3.全部不可见(已弃用,为兼容旧数据逻辑,兼容如下:某维度有全部不可见,则该模板全部不可见) + + * @param templateBo + * @return + */ TbsActivityTemplate modify(TbsActivityTemplateBo templateBo); void updateState(); 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 13eca24..d1bcb17 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,6 +146,9 @@ public class TbsActivityServiceImpl extends ServiceImpl implements TbsActivityTemplateRegionService { private final BmsSupplierService supplierService; + private final TbsActivityTemplateMapper tbsActivityTemplateMapper; @Override - public List getTemplateIds(String supplierId,List ignoreTemplateIds){ + public boolean checkSupplier(Long templateId,String supplierId) { List saleRegionIds = new ArrayList<>(); List bizRegionIds = new ArrayList<>(); + saleRegionIds.add("-1"); + bizRegionIds.add("-1"); + BmsSupplier supplier = supplierService.getById(supplierId); + if(supplier.getRegionFirst()!=null){ saleRegionIds.add(supplier.getRegionFirst()); } + if(supplier.getRegionSecond()!=null){ saleRegionIds.add(supplier.getRegionSecond()); } + if(supplier.getRegionThird()!=null){ saleRegionIds.add(supplier.getRegionThird()); } + if(supplier.getRegionFourthly()!=null){ saleRegionIds.add(supplier.getRegionFourthly()); } + if(supplier.getRegion2First()!=null){ bizRegionIds.add(supplier.getRegion2First()); } + if(supplier.getRegion2Second()!=null){ bizRegionIds.add(supplier.getRegion2Second()); } + if(supplier.getRegion2Third()!=null){ bizRegionIds.add(supplier.getRegion2Third()); } + if(supplier.getRegion2Fourthly()!=null){ bizRegionIds.add(supplier.getRegion2Fourthly()); } + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.and( + a1->a1.eq(TbsActivityTemplateRegion::getType,"sale") + .in(TbsActivityTemplateRegion::getRegionId,saleRegionIds) + ).or().and( + a1->a1.eq(TbsActivityTemplateRegion::getType,"biz") + .in(TbsActivityTemplateRegion::getRegionId,bizRegionIds) + ).or().and( + a1->a1.eq(TbsActivityTemplateRegion::getType,"cus") + .eq(TbsActivityTemplateRegion::getRegionId,supplierId)); + return this.count(lqw)>0; + } + + @Override + public List getTemplateIds(String supplierId){ + List saleRegionIds = new ArrayList<>(); + List bizRegionIds = new ArrayList<>(); + saleRegionIds.add("-1"); + bizRegionIds.add("-1"); BmsSupplier supplier = supplierService.getById(supplierId); if(supplier.getRegionFirst()!=null){ saleRegionIds.add(supplier.getRegionFirst()); } if(supplier.getRegionSecond()!=null){ saleRegionIds.add(supplier.getRegionSecond()); } @@ -40,26 +73,15 @@ public class TbsActivityTemplateRegionServiceImpl extends ServiceImpl lqw = new LambdaQueryWrapper<>(); - if(CollectionUtil.isNotEmpty(ignoreTemplateIds)){ - lqw.notIn(TbsActivityTemplateRegion::getTemplateId,ignoreTemplateIds); - } - if(CollectionUtil.isNotEmpty(saleRegionIds) && bizRegionIds.size()==0 ){ - lqw.eq(TbsActivityTemplateRegion::getType,"sale") - .in(TbsActivityTemplateRegion::getRegionId,saleRegionIds); - }else if(CollectionUtil.isNotEmpty(bizRegionIds) && saleRegionIds.size()==0 ){ - lqw.eq(TbsActivityTemplateRegion::getType,"biz") - .in(TbsActivityTemplateRegion::getRegionId,bizRegionIds); - }else if (CollectionUtil.isNotEmpty(saleRegionIds)&&CollectionUtil.isNotEmpty(bizRegionIds)){ lqw.and( a1->a1.eq(TbsActivityTemplateRegion::getType,"sale") .in(TbsActivityTemplateRegion::getRegionId,saleRegionIds) ).or().and( a1->a1.eq(TbsActivityTemplateRegion::getType,"biz") .in(TbsActivityTemplateRegion::getRegionId,bizRegionIds) - ); - }else { - return new ArrayList<>(); - } + ).or().and( + a1->a1.eq(TbsActivityTemplateRegion::getType,"cus") + .eq(TbsActivityTemplateRegion::getRegionId,supplierId)); return this.list(lqw); } diff --git a/cms-modules/cms-system/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyPart1ServiceImpl.java b/cms-modules/cms-system/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyPart1ServiceImpl.java index 611576d..78e231c 100644 --- a/cms-modules/cms-system/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyPart1ServiceImpl.java +++ b/cms-modules/cms-system/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyPart1ServiceImpl.java @@ -112,6 +112,9 @@ public class TbsCostApplyPart1ServiceImpl implements TbsCostApplyPart1Service { public TbsCostApply copyById(Long costId) { final String newCostApplyCode = CodeGenUtil.generate(CodeGenUtil.SourceKey.CostApply); TbsCostApply costApply = tbsCostApplyService.getById(costId); + if(costApply.getRebateId()!=null){ + Assert.throwEx("返利政策的费用不支持编辑"); + } costApply.setId(null); SysUser sysUser = sysUserMapper.selectById(AuthContextUtils.getSysUserId()); costApply.setUserId(sysUser.getId()); diff --git a/cms-modules/cms-system/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyServiceImpl.java b/cms-modules/cms-system/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyServiceImpl.java index 8f56bd8..5b8418d 100644 --- a/cms-modules/cms-system/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyServiceImpl.java +++ b/cms-modules/cms-system/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyServiceImpl.java @@ -543,8 +543,8 @@ public class TbsCostApplyServiceImpl extends ServiceImpl bizRegionIds = supplier.listBizRegionIds(); List saleRegionIds = supplier.listSaleRegionIds(); + String supplierId = supplier.getId(); boolean isPass = false; for (TbsActivityTemplateRegion templateRegion : regionList) { if(templateRegion.getType().equals("sale")&&template.getSaleRegionFlag().equals(1)){ @@ -568,6 +569,12 @@ public class TbsCostApplyServiceImpl extends ServiceImpl checkTemplateId(List supplierList, TbsActivityTemplate template) { Long templateId = template.getId(); - boolean isIgnore = template.getSaleRegionFlag().equals(0)&&template.getBizRegionFlag().equals(0); - boolean isStop = template.getSaleRegionFlag().equals(2)&&template.getBizRegionFlag().equals(2); + boolean isIgnore = template.getSaleRegionFlag().equals(0)&&template.getBizRegionFlag().equals(0)&&template.getContractFlag().equals(0); + boolean isStop = template.getSaleRegionFlag().equals(2)&&template.getBizRegionFlag().equals(2)&&template.getCustomFlag().equals(2); if(isStop){ return new ArrayList<>(); } @@ -592,6 +599,7 @@ public class TbsCostApplyServiceImpl extends ServiceImpl bizRegionIds = supplier.listBizRegionIds(); List saleRegionIds = supplier.listSaleRegionIds(); + String supplierId = supplier.getId(); boolean isPass = false; for (TbsActivityTemplateRegion templateRegion : regionList) { if(templateRegion.getType().equals("sale")&&template.getSaleRegionFlag().equals(1)){ @@ -606,6 +614,13 @@ public class TbsCostApplyServiceImpl extends ServiceImpl> getPage(TzcRebate param){ - LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(param); - PageUtil.startPage(); + @PostMapping("/page") + public R> getPage(@RequestBody TzcRebateQuery param){ + TzcRebate v = CopierUtil.copy(param, new TzcRebate()); + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + PageHelper.startPage(param.getPageNum(), param.getPageSize()); List list = tzcRebateService.list(lqw); return R.byPageHelperList(list); } 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 4b2a6a2..b9d6196 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 @@ -16,6 +16,12 @@ 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.sys.common.AuthContextUtils; +import com.qs.serve.modules.sys.entity.SysUser; +import com.qs.serve.modules.sys.service.SysUserService; +import com.qs.serve.modules.tbs.entity.TbsActivityTemplate; +import com.qs.serve.modules.tbs.service.TbsActivityTemplateRegionService; +import com.qs.serve.modules.tbs.service.TbsActivityTemplateService; import com.qs.serve.modules.tbs.service.TbsCenterDtoService; import com.qs.serve.modules.tzc.consts.TzcArgTypes; import com.qs.serve.modules.tzc.entity.*; @@ -59,6 +65,10 @@ public class TzcRebateApplicationServiceImpl implements TzcRebateApplicationServ private final TzcRebateLevelsConfigService tzcRebateLevelsConfigService; private final TzcRebateLevelsService tzcRebateLevelsService; + private final SysUserService sysUserService; + + private final TbsActivityTemplateService tbsActivityTemplateService; + private final TbsActivityTemplateRegionService tbsActivityTemplateRegionService; private final BmsCostCenterMapper bmsCostCenterMapper; private final BmsSupplierMapper bmsSupplierMapper; private final BmsSubjectMapper bmsSubjectMapper; @@ -109,6 +119,7 @@ public class TzcRebateApplicationServiceImpl implements TzcRebateApplicationServ } } } + levelsVoList.add(levelsVo); } return levelsVoList; } @@ -170,6 +181,10 @@ public class TzcRebateApplicationServiceImpl implements TzcRebateApplicationServ // 返利主表信息 TzcRebate rebate = buildRebateInfo(param, rebateId, rebateCode, supplier); + SysUser sysUser = sysUserService.getById(AuthContextUtils.getSysUserId()); + rebate.setUserId(sysUser.getId()); + rebate.setUserCode(sysUser.getCode()); + rebate.setUserName(sysUser.getName()); tzcRebateService.saveOrUpdate(rebate); // 重新赋值获取最新id rebateId = rebate.getId(); @@ -350,12 +365,14 @@ public class TzcRebateApplicationServiceImpl implements TzcRebateApplicationServ 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); argumentList.add(argument); @@ -369,8 +386,25 @@ public class TzcRebateApplicationServiceImpl implements TzcRebateApplicationServ TzcRebate rebate = new TzcRebate(); rebate.setId(rebateId); rebate.setRebateCode(rebateCode); -// rebate.setTemplateId(); -// rebate.setTemplateName(); + Long templateId = param.getTemplateId(); +// TbsActivityTemplate template = tbsActivityTemplateService.getById(templateId); +// if (template==null){ +// Assert.throwEx("模板不存在"); +// } +// if (template.getTemplateState().equals(0)){ +// Assert.throwEx("模板未启用"); +// } +// boolean allVisible = template.getCustomFlag().equals(0) +// &&template.getSaleRegionFlag().equals(0) +// &&template.getBizRegionFlag().equals(0); +// if(!allVisible){ +// boolean check = tbsActivityTemplateRegionService.checkSupplier(templateId,param.getSupplierId()+""); +// if(!check){ +// Assert.throwEx("当前客户未授权"); +// } +// } +// rebate.setTemplateId(templateId); +// rebate.setTemplateName(template.getTemplateName()); rebate.setRebateName(param.getRebateName()); rebate.setRebateStatus(TzcRebateStatus.DRAFT.getStatus()); rebate.setActivityStartTime(param.getActivityStartTime()); @@ -512,12 +546,12 @@ public class TzcRebateApplicationServiceImpl implements TzcRebateApplicationServ BigDecimal oneHundred = new BigDecimal(100); List subjectParamList = param.getSubjectList(); BigDecimal totalRate = BigDecimal.ZERO; - BigDecimal totalAmount = BigDecimal.ZERO; + //BigDecimal totalAmount = BigDecimal.ZERO; for (TzcRebateSubjectParam subjectParam : subjectParamList) { List centerParamList = subjectParam.getCenterList(); BigDecimal totalCenterRate = BigDecimal.ZERO; - BigDecimal totalCenterAmount = BigDecimal.ZERO; + //BigDecimal totalCenterAmount = BigDecimal.ZERO; for (TzcRebateCenterParam centerParam : centerParamList) { if(centerParam.getCenterRate().compareTo(BigDecimal.ZERO)<0){ Assert.throwEx("成本中心占比不能小于0"); @@ -526,14 +560,14 @@ public class TzcRebateApplicationServiceImpl implements TzcRebateApplicationServ // Assert.throwEx("成本中心额度不能小于0"); // } totalCenterRate = totalCenterRate.add(centerParam.getCenterRate()); - totalCenterAmount = totalCenterAmount.add(centerParam.getCenterAmount()); + //totalCenterAmount = totalCenterAmount.add(centerParam.getCenterAmount()); } if(totalCenterRate.compareTo(oneHundred)!=0){ Assert.throwEx("科目的成本中心合计占比异常,当前:"+totalCenterRate+"%"); } - if(totalCenterAmount.compareTo(subjectParam.getSubjectAmount())!=0){ - Assert.throwEx("科目的成本中心合计计必须为返利科目额度"+totalCenterAmount+"元"); - } +// if(totalCenterAmount.compareTo(subjectParam.getSubjectAmount())!=0){ +// Assert.throwEx("科目的成本中心合计计必须为返利科目额度"+totalCenterAmount+"元"); +// } if(subjectParam.getSubjectRate().compareTo(BigDecimal.ZERO)<0){ Assert.throwEx("科目占比不能小于0"); } @@ -541,7 +575,7 @@ public class TzcRebateApplicationServiceImpl implements TzcRebateApplicationServ // Assert.throwEx("科目额度不能小于0"); // } totalRate = totalRate.add(subjectParam.getSubjectRate()); - totalAmount = totalAmount.add(subjectParam.getSubjectAmount()); + //totalAmount = totalAmount.add(subjectParam.getSubjectAmount()); } if(totalRate.compareTo(oneHundred)!=0){