Browse Source

feat: 初始化基础档案模块

master
Yen 3 months ago
parent
commit
3115a10f02
  1. 16
      cms-api/cms-admin-svc/src/main/resources/application-pro.yml
  2. 104
      cms-modules/cms-basic/cms-basic-api/src/main/java/com/qs/serve/modules/basic/entity/BmsRegion.java
  3. 91
      cms-modules/cms-basic/cms-basic-api/src/main/java/com/qs/serve/modules/basic/entity/BmsRegion2.java
  4. 136
      cms-modules/cms-basic/cms-basic-api/src/main/java/com/qs/serve/modules/basic/entity/BmsSubject.java
  5. 146
      cms-modules/cms-basic/cms-basic-api/src/main/java/com/qs/serve/modules/basic/entity/GoodsCategory.java
  6. 155
      cms-modules/cms-basic/cms-basic-api/src/main/java/com/qs/serve/modules/basic/entity/GoodsSku.java
  7. 142
      cms-modules/cms-basic/cms-basic-api/src/main/java/com/qs/serve/modules/basic/entity/GoodsSpu.java
  8. 30
      cms-modules/cms-basic/cms-basic-api/src/main/java/com/qs/serve/modules/basic/entity/dto/GoodsTargetInfo.java
  9. 84
      cms-modules/cms-basic/cms-basic-api/src/main/java/com/qs/serve/modules/basic/entity/dto/TbsCenterDto.java
  10. 11
      cms-modules/cms-basic/cms-basic-bus/src/main/java/com/qs/serve/modules/basic/consts/TbsGoodsType.java
  11. 14
      cms-modules/cms-basic/cms-basic-bus/src/main/java/com/qs/serve/modules/basic/mapper/BmsRegion2Mapper.java
  12. 17
      cms-modules/cms-basic/cms-basic-bus/src/main/java/com/qs/serve/modules/basic/mapper/BmsRegionMapper.java
  13. 17
      cms-modules/cms-basic/cms-basic-bus/src/main/java/com/qs/serve/modules/basic/mapper/BmsSubjectMapper.java
  14. 19
      cms-modules/cms-basic/cms-basic-bus/src/main/java/com/qs/serve/modules/basic/mapper/GoodsCategoryMapper.java
  15. 21
      cms-modules/cms-basic/cms-basic-bus/src/main/java/com/qs/serve/modules/basic/mapper/GoodsSkuMapper.java
  16. 20
      cms-modules/cms-basic/cms-basic-bus/src/main/java/com/qs/serve/modules/basic/mapper/GoodsSpuMapper.java
  17. 79
      cms-modules/cms-basic/cms-basic-bus/src/main/java/com/qs/serve/modules/basic/service/GoodsApplicationService.java
  18. 15
      cms-modules/cms-basic/cms-basic-bus/src/main/java/com/qs/serve/modules/basic/service/GoodsCategoryService.java
  19. 22
      cms-modules/cms-basic/cms-basic-bus/src/main/java/com/qs/serve/modules/basic/service/GoodsSkuService.java
  20. 21
      cms-modules/cms-basic/cms-basic-bus/src/main/java/com/qs/serve/modules/basic/service/GoodsSpuService.java
  21. 29
      cms-modules/cms-basic/cms-basic-bus/src/main/java/com/qs/serve/modules/basic/service/impl/GoodsCategoryServiceImpl.java
  22. 56
      cms-modules/cms-basic/cms-basic-bus/src/main/java/com/qs/serve/modules/basic/service/impl/GoodsSkuServiceImpl.java
  23. 46
      cms-modules/cms-basic/cms-basic-bus/src/main/java/com/qs/serve/modules/basic/service/impl/GoodsSpuServiceImpl.java
  24. 21
      cms-modules/cms-policy/cms-policy-api/src/main/java/com/qs/serve/modules/tzc/entity/TzcRebateSubject.java
  25. 2
      cms-modules/cms-policy/cms-policy-api/src/main/java/com/qs/serve/modules/tzc/entity/bo/TzcRebateGoodsParam.java
  26. 134
      cms-modules/cms-policy/cms-policy-bus/src/main/java/com/qs/serve/modules/tzc/service/impl/TzcRebateApplicationServiceImpl.java
  27. 6
      cms-modules/cms-system/src/main/java/com/qs/serve/modules/seeyon/service/SeeYonBaseService.java
  28. 14
      cms-modules/cms-system/src/main/java/com/qs/serve/modules/seeyon/service/SeeYonServiceStaticUtil.java
  29. 16
      cms-modules/cms-system/src/main/java/com/qs/serve/modules/vtb/controller/VtbVerificationController.java

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

@ -1,5 +1,19 @@
feign:
client:
config:
default:
connectTimeout: 5000 # 连接超时时间
readTimeout: 5000 # 读取超时时间
httpclient:
enabled: true
# 服务列表
service-list:
policy-svc: http://localhost:7403
#项目配置
project:
tenant:
enable: true
#关闭权限
close-auth: 'false'
#true-请求端;false-接收端
@ -26,7 +40,7 @@ project:
dev: false
seeyon:
enable: true
url: 'http://192.168.0.9:7444'
url: 'http://192.168.0.9:7445'
#请求致远OA的拓展服务(用于修改密码)
extApi: 'http://192.168.10.244:9003/'

104
cms-modules/cms-basic/cms-basic-api/src/main/java/com/qs/serve/modules/basic/entity/BmsRegion.java

@ -0,0 +1,104 @@
package com.qs.serve.modules.basic.entity;
import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.qs.serve.mbp.handler.SplitStringTypeHandler;
import lombok.Data;
import org.apache.ibatis.type.JdbcType;
import org.hibernate.validator.constraints.Length;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.List;
/**
* 区域档案 实体类
* @author YenHex
* @since 2022-10-10
*/
@Data
@TableName(value = "bms_region",autoResultMap = true)
public class BmsRegion implements Serializable {
private static final long serialVersionUID = 1L;
/** id */
@TableId(type = IdType.INPUT)
private String id;
/** 名称 */
@Length(max = 20,message = "名称长度不能超过20字")
private String name;
/** 别名 */
private String aliasRegion;
/** 编码 */
@Length(max = 20,message = "编码长度不能超过20字")
private String code;
/** 父级ID */
@Length(max = 32,message = "父级ID长度不能超过32字")
private String pid;
/** 备注 */
private String remark;
/** 层级 */
private Integer level;
/** 祖级id */
private String pathIds;
/** 祖级id */
private String pathNames;
/** 是否停用 */
private Integer stopFlag;
/** 工厂产地ID */
@TableField(typeHandler = SplitStringTypeHandler.class,jdbcType= JdbcType.VARCHAR)
private String[] factoryIds;
/** 系统编码1 */
private String sysCode1;
/** 系统编码2 */
private String sysCode2;
/** 系统编码3 */
private String sysCode3;
/** 创建时间 */
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
@TableField(fill = FieldFill.INSERT)
private LocalDateTime createTime;
/** 创建人 */
@TableField(fill = FieldFill.INSERT)
private String createBy;
/** 更新时间 */
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
@TableField(fill = FieldFill.UPDATE)
private LocalDateTime updateTime;
/** 更新人 */
@TableField(fill = FieldFill.UPDATE)
private String updateBy;
/** 租户id */
@JsonIgnore
@JsonProperty
private String tenantId;
/** 删除标识 */
@JsonIgnore
@JsonProperty
private Boolean delFlag;
}

91
cms-modules/cms-basic/cms-basic-api/src/main/java/com/qs/serve/modules/basic/entity/BmsRegion2.java

@ -0,0 +1,91 @@
package com.qs.serve.modules.basic.entity;
import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import org.hibernate.validator.constraints.Length;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.List;
/**
* 区域档案 实体类
* @author YenHex
* @since 2022-10-10
*/
@Data
@TableName(value = "bms_region2")
public class BmsRegion2 implements Serializable {
private static final long serialVersionUID = 1L;
/** id */
@TableId(type = IdType.INPUT)
private String id;
/** 名称 */
@Length(max = 20,message = "名称长度不能超过20字")
private String name;
/** 编码 */
@Length(max = 20,message = "编码长度不能超过20字")
private String code;
/** 父级ID */
@Length(max = 32,message = "父级ID长度不能超过32字")
private String pid;
/** 层级 */
private Integer level;
/** 祖级id */
private String pathIds;
/** 祖级id */
private String pathNames;
private String remark;
/** 系统编码1 */
private String sysCode1;
/** 系统编码2 */
private String sysCode2;
/** 系统编码3 */
private String sysCode3;
/** 创建时间 */
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
@TableField(fill = FieldFill.INSERT)
private LocalDateTime createTime;
/** 创建人 */
@TableField(fill = FieldFill.INSERT)
private String createBy;
/** 更新时间 */
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
@TableField(fill = FieldFill.UPDATE)
private LocalDateTime updateTime;
/** 更新人 */
@TableField(fill = FieldFill.UPDATE)
private String updateBy;
/** 租户id */
@JsonIgnore
@JsonProperty
private String tenantId;
/** 删除标识 */
@JsonIgnore
@JsonProperty
private Boolean delFlag;
}

136
cms-modules/cms-basic/cms-basic-api/src/main/java/com/qs/serve/modules/basic/entity/BmsSubject.java

@ -0,0 +1,136 @@
package com.qs.serve.modules.basic.entity;
import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import org.hibernate.validator.constraints.Length;
import org.springframework.format.annotation.DateTimeFormat;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.List;
/**
* 科目 实体类
* @author YenHex
* @since 2022-11-07
*/
@Data
@TableName("bms_subject")
public class BmsSubject implements Serializable {
private static final long serialVersionUID = 1L;
/** id */
@TableId(type = IdType.AUTO)
private Long id;
/** 科目名称 */
@NotBlank(message = "科目名称不能为空")
@Length(max = 50,message = "科目名称长度不能超过50字")
private String subjectName;
private String pathNames;
/** 科目编码 */
@NotBlank(message = "科目编码不能为空")
@Length(max = 50,message = "科目编码长度不能超过50字")
private String subjectCode;
/** 父级id */
@NotNull(message = "父级id不能为空")
private Long pid;
/** 销售区域:0全部可见;1-部分可见;2-全部不可见 */
private Integer saleRegionFlag;
/** 行政区域:0全部可见;1-部分可见;2-全部不可见 */
private Integer bizRegionFlag;
/** 是否进场费用 */
private Integer slottingFlag;
@TableField(exist = false)
private String parName;
private Integer level;
/** 应用与发布费用时,必选网点拦截 */
private Integer pointSelectFlag;
/** 备注 */
@Length(max = 255,message = "备注长度不能超过255字")
private String remark;
private String thirdCode;
private String thirdName;
/** 创建时间 */
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
@TableField(fill = FieldFill.INSERT)
private LocalDateTime createTime;
/** 最后更新时间 */
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
@TableField(fill = FieldFill.UPDATE)
private LocalDateTime updateTime;
/** 所属租户 */
@JsonIgnore
@JsonProperty
private String tenantId;
/** 逻辑删除标记(0:显示;1:隐藏) */
@JsonIgnore
@JsonProperty
private String delFlag;
/** 创建人 */
@TableField(fill = FieldFill.INSERT)
private String createBy;
/** 更新人 */
@TableField(fill = FieldFill.UPDATE)
private String updateBy;
/** 表单ID */
private Long formId;
/** 表单id(费用申请) */
private Long formIdForCostApply;
@TableField(exist = false)
private Object subjectFormInfo;
@TableField(exist = false)
private Object subjectFormInfo4CostApply;
/** 销售区域id */
@TableField(exist = false)
private List<String> saleRegionIds;
/** 行政区域id */
@TableField(exist = false)
private List<String> bizRegionIds;
/** 销售区域 */
@TableField(exist = false)
private List<?> saleRegionInfos;
/** 行政区域 */
@TableField(exist = false)
private List<?> bizRegionInfos;
@TableField(exist = false)
private List<Long> selectIds;
}

146
cms-modules/cms-basic/cms-basic-api/src/main/java/com/qs/serve/modules/basic/entity/GoodsCategory.java

@ -0,0 +1,146 @@
package com.qs.serve.modules.basic.entity;
import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.qs.serve.common.utils.StringUtils;
import lombok.Data;
import org.hibernate.validator.constraints.Length;
import org.springframework.format.annotation.DateTimeFormat;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.List;
/**
* 分类 实体类
* @author YenHex
* @since 2022-10-09
*/
@Data
@TableName("goods_category")
public class GoodsCategory implements Serializable {
private static final long serialVersionUID = 1L;
/** PK */
@TableId(type = IdType.AUTO)
private Long id;
/** (1:开启;0:关闭) */
private Integer enable;
@NotBlank(message = "编码不能为空")
@TableField(condition = SqlCondition.LIKE)
private String code;
/** 父分类编号 */
private Long parentId;
/** 名称 */
@Length(max = 64,message = "名称长度不能超过16字")
@TableField(condition = SqlCondition.LIKE)
private String name;
/** 排序 */
private Integer level;
/** 等级路径id */
private String levelPath;
/** 等级路径 */
private String levelPathNames;
/** 描述 */
@Length(max = 255,message = "描述长度不能超过255字")
private String description;
/** 图片 */
@Length(max = 255,message = "图片长度不能超过255字")
private String picUrl;
/** 账套编码 */
private String bookBelong;
/** 账套名称 */
private String bookName;
/** 排序 */
private Integer sort;
/** 创建时间 */
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
@TableField(fill = FieldFill.INSERT)
private LocalDateTime createTime;
/** 最后更新时间 */
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
@TableField(fill = FieldFill.UPDATE)
private LocalDateTime updateTime;
/** 所属租户 */
@JsonIgnore
@JsonProperty
private String tenantId;
/** 逻辑删除标记(0:显示;1:隐藏) */
@JsonIgnore
@JsonProperty
private String delFlag;
/** 创建人 */
@TableField(fill = FieldFill.INSERT)
private String createBy;
/** 更新人 */
@TableField(fill = FieldFill.UPDATE)
private String updateBy;
/** 可投放费用标识 */
private Integer costFlag;
@TableField(exist = false)
private Object parentInfo;
/** 加载spu */
@TableField(exist = false)
private Integer loadSpuData;
@TableField(exist = false)
private List<Long> selectIds;
@TableField(exist = false)
private String brandLabel;
@TableField(exist = false)
private String categoryLabel;
@TableField(exist = false)
private String seriseLabel;
@TableField(exist = false)
private Integer relateBrandFlag;
public void initCategoryNameByPathsName(){
if(!StringUtils.hasText(this.levelPathNames)){
return;
}
String[] names = this.levelPathNames.split("_");
if(names.length==1){
this.brandLabel = names[0];
}else if(names.length==2){
this.brandLabel = names[0];
this.categoryLabel = names[1];
}else if(names.length >=3){
this.brandLabel = names[0];
this.categoryLabel = names[1];
this.seriseLabel = names[2];
}
}
}

155
cms-modules/cms-basic/cms-basic-api/src/main/java/com/qs/serve/modules/basic/entity/GoodsSku.java

@ -0,0 +1,155 @@
package com.qs.serve.modules.basic.entity;
import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
import jdk.nashorn.internal.ir.annotations.Ignore;
import lombok.Data;
import org.hibernate.validator.constraints.Length;
import org.springframework.format.annotation.DateTimeFormat;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;
/**
* sku 实体类
* @author YenHex
* @since 2022-10-09
*/
@Data
@TableName("goods_sku")
public class GoodsSku implements Serializable {
private static final long serialVersionUID = 1L;
/** PK */
@TableId(type = IdType.AUTO)
private Long id;
/** sku编码 */
@Length(max = 32,message = "sku编码长度不能超过32字")
private String skuCode;
private String skuName;
private String skuAddCode;
/** 商品Id */
@NotNull(message = "商品Id不能为空")
private Long spuId;
/** 图片 */
@Length(max = 500,message = "图片长度不能超过500字")
private String picUrl;
/** 销售价格 */
private BigDecimal salesPrice;
/** 市场价 */
private BigDecimal marketPrice;
/** 成本价 */
private BigDecimal costPrice;
/** 规格值 */
private String specInfos;
/** 库存 */
@NotNull(message = "库存不能为空")
private Integer stock;
/** 重量(kg) */
@NotNull(message = "重量(kg)不能为空")
private BigDecimal weight;
/** 体积(m³) */
@NotNull(message = "体积(m³)不能为空")
private BigDecimal volume;
/** 净重 */
private BigDecimal invUnitWeight;
/** 最低起批数(0->不限制) */
private Integer minPurchase;
/** 是否开启 1、是;0否 */
private Integer enable;
/** 是否可以下单 1、是;0否 */
private Integer orderFlag;
private Integer specialFlag;
/** 在线下单 */
private Integer orderOnlineFlag;
/** 线下下单 */
private Integer orderOfflineFlag;
/** 单位id */
private Long unitId;
/** 单位 */
private String unitName;
/** 版本号 */
private Integer version;
/** 备注 */
private String remark;
/** 账套编码 */
private String bookBelong;
/** 账套名称 */
private String bookName;
/** 产地 */
@NotNull(message = "产地不能为空")
private String belong;
/** 包装 */
@NotNull(message = "包装不能为空")
private String wrapVal;
/** 口味 */
@NotNull(message = "口味不能为空")
private String tasteVal;
/** 最后更新时间 */
@TableField(fill = FieldFill.UPDATE)
private LocalDateTime updateTime;
/** 创建时间 */
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
@TableField(fill = FieldFill.INSERT)
private LocalDateTime createTime;
/** 所属租户 */
@JsonIgnore
@JsonProperty
private String tenantId;
/** 逻辑删除标记(0:显示;1:隐藏) */
@JsonIgnore
@JsonProperty
private String delFlag;
/** 创建人 */
@TableField(fill = FieldFill.INSERT)
private String createBy;
/** 更新人 */
@TableField(fill = FieldFill.UPDATE)
private String updateBy;
/** 可投放费用标识 */
private Integer costFlag;
}

142
cms-modules/cms-basic/cms-basic-api/src/main/java/com/qs/serve/modules/basic/entity/GoodsSpu.java

@ -0,0 +1,142 @@
package com.qs.serve.modules.basic.entity;
import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.qs.serve.mbp.handler.SplitStringTypeHandler;
import lombok.Data;
import org.apache.ibatis.type.JdbcType;
import org.hibernate.validator.constraints.Length;
import org.springframework.format.annotation.DateTimeFormat;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
/**
* spu 实体类
* @author YenHex
* @since 2022-10-09
*/
@Data
@TableName(value = "goods_spu",autoResultMap = true)
public class GoodsSpu implements Serializable {
private static final long serialVersionUID = 1L;
/** PK */
@TableId(type = IdType.AUTO)
private Long id;
/** 商品编码 */
@NotBlank(message = "商品编码不能为空")
@Length(max = 32,message = "商品编码长度不能超过32字")
@TableField(condition = SqlCondition.LIKE)
private String spuCode;
/** 商品名字 */
@NotBlank(message = "商品名字不能为空")
@Length(max = 200,message = "商品名字长度不能超过200字")
@TableField(condition = SqlCondition.LIKE)
private String name;
/** 一级分类、品牌ID */
@NotNull(message = "一级分类ID不能为空")
private String categoryFirst;
/** 二级分类、类目ID */
private String categorySecond;
/** 三级分类、系列ID */
private String categoryThird;
/** 最后一级分类 */
private String categoryLast;
/** 商品图片 */
@TableField(typeHandler = SplitStringTypeHandler.class,jdbcType= JdbcType.VARCHAR)
private String[] picUrls;
/** 上下架(1是 0否) */
private Integer shelf;
/** 是否可以下单 1、是;0否 */
private Integer orderFlag;
/** 排序字段 */
@NotNull(message = "排序字段不能为空")
private Integer sort;
/** 销量 */
private Integer saleNum;
/** 产品口味(非sku规格值) */
private String tasteValue;
/** 创建时间 */
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
@TableField(fill = FieldFill.INSERT)
private LocalDateTime createTime;
/** 最后更新时间 */
@TableField(fill = FieldFill.UPDATE)
private LocalDateTime updateTime;
/** 创建人 */
@TableField(fill = FieldFill.INSERT)
private String createBy;
/** 更新人 */
@TableField(fill = FieldFill.UPDATE)
private String updateBy;
/** 所属租户 */
@JsonIgnore
@JsonProperty
private String tenantId;
/** 逻辑删除标记(0:显示;1:隐藏) */
@JsonIgnore
@JsonProperty
private String delFlag;
/** 可投放费用标识 */
private Integer costFlag;
/** 账套编码 */
private String bookBelong;
/** 账套名称 */
private String bookName;
/** 在线下单 */
private Integer orderOnlineFlag;
/** 线下下单 */
private Integer orderOfflineFlag;
/** 存货标识 */
private Integer spuCunhuoFlag;
/** 特殊SKUID */
private Long specialSkuId;
/** 销售分组id(默认0,表所有) */
private Long goodsSaleGroupId;
/** 商品销售类型:0-普通商品;1-赠品 */
private Integer goodsSaleType;
private String skuNumVal;
}

30
cms-modules/cms-basic/cms-basic-api/src/main/java/com/qs/serve/modules/basic/entity/dto/GoodsTargetInfo.java

@ -0,0 +1,30 @@
package com.qs.serve.modules.basic.entity.dto;
import lombok.Data;
/**
* @author YenHex
* @since 2023/2/20
*/
@Data
public class GoodsTargetInfo {
/** 目标类型(brand、category、series、spu、sku) */
private String targetType;
/** 目标id */
private Long targetId;
/** 目标编码 */
private String targetCode;
/** 目标名称 */
private String targetName;
/** 目标等级id路径 */
private String targetLevelPathIds;
/** 目标等级名称路径 */
private String targetLevelPathNames;
}

84
cms-modules/cms-basic/cms-basic-api/src/main/java/com/qs/serve/modules/basic/entity/dto/TbsCenterDto.java

@ -0,0 +1,84 @@
package com.qs.serve.modules.basic.entity.dto;
import com.qs.serve.modules.basic.entity.BmsCostCenter;
import com.qs.serve.modules.basic.entity.BmsRegion;
import com.qs.serve.modules.basic.entity.BmsRegion2;
import com.qs.serve.modules.basic.entity.BmsSupplier;
import lombok.Data;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.time.LocalDateTime;
/**
* @author YenHex
* @since 2022/11/10
*/
@Data
public class TbsCenterDto {
String id;
String centerCode;
String centerName;
String centerType;
LocalDateTime createTime;
/** 费用占比率,单位百分位(该成本中心在费用中占比) */
@NotNull(message = "费用占比率不能为空")
private BigDecimal centerRate;
/** 费用占比金额(该成本中心在费用金额) */
@NotNull(message = "费用占比率不能为空")
private BigDecimal centerAmount;
public TbsCenterDto(){
}
public TbsCenterDto(String id, String centerCode, String centerName, String centerType, LocalDateTime createTime) {
this.id = id;
this.centerCode = centerCode;
this.centerName = centerName;
this.centerType = centerType;
this.createTime = createTime;
}
public TbsCenterDto(String id, String centerCode, String centerName, String centerType) {
this.id = id;
this.centerCode = centerCode;
this.centerName = centerName;
this.centerType = centerType;
}
public TbsCenterDto(BmsRegion bmsRegion){
this.id = bmsRegion.getId();
this.centerCode = bmsRegion.getCode();
this.centerName = bmsRegion.getName();
this.centerType = "saleRegion";
}
public TbsCenterDto(BmsRegion2 bmsRegion){
this.id = bmsRegion.getId();
this.centerCode = bmsRegion.getCode();
this.centerName = bmsRegion.getName();
this.centerType = "bizRegion";
}
public TbsCenterDto(BmsSupplier supplier){
this.id = supplier.getId();
this.centerCode = supplier.getCode();
this.centerName = supplier.getName();
this.centerType = "customer";
}
public TbsCenterDto(BmsCostCenter costCenter){
this.id = costCenter.getId().toString();
this.centerCode = costCenter.getCode();
this.centerName = costCenter.getName();
this.centerType = "center";
}
}

11
cms-modules/cms-basic/cms-basic-bus/src/main/java/com/qs/serve/modules/basic/consts/TbsGoodsType.java

@ -0,0 +1,11 @@
package com.qs.serve.modules.basic.consts;
/**
* @author YenHex
* @since 2022/11/9
*/
public enum TbsGoodsType {
brand,category,series,spu,sku
}

14
cms-modules/cms-basic/cms-basic-bus/src/main/java/com/qs/serve/modules/basic/mapper/BmsRegion2Mapper.java

@ -0,0 +1,14 @@
package com.qs.serve.modules.basic.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.qs.serve.modules.basic.entity.BmsRegion2;
/**
* 区域档案 Mapper
* @author YenHex
* @date 2022-10-10
*/
public interface BmsRegion2Mapper extends BaseMapper<BmsRegion2> {
}

17
cms-modules/cms-basic/cms-basic-bus/src/main/java/com/qs/serve/modules/basic/mapper/BmsRegionMapper.java

@ -0,0 +1,17 @@
package com.qs.serve.modules.basic.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.qs.serve.modules.basic.entity.BmsRegion;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;
/**
* 区域档案 Mapper
* @author YenHex
* @date 2022-10-10
*/
public interface BmsRegionMapper extends BaseMapper<BmsRegion> {
}

17
cms-modules/cms-basic/cms-basic-bus/src/main/java/com/qs/serve/modules/basic/mapper/BmsSubjectMapper.java

@ -0,0 +1,17 @@
package com.qs.serve.modules.basic.mapper;
import com.baomidou.mybatisplus.annotation.InterceptorIgnore;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.qs.serve.modules.basic.entity.BmsSubject;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Update;
/**
* 科目 Mapper
* @author YenHex
* @date 2022-11-07
*/
public interface BmsSubjectMapper extends BaseMapper<BmsSubject> {
}

19
cms-modules/cms-basic/cms-basic-bus/src/main/java/com/qs/serve/modules/basic/mapper/GoodsCategoryMapper.java

@ -0,0 +1,19 @@
package com.qs.serve.modules.basic.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.qs.serve.modules.basic.entity.GoodsCategory;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;
import java.util.List;
/**
* 分类 Mapper
* @author YenHex
* @date 2022-10-09
*/
public interface GoodsCategoryMapper extends BaseMapper<GoodsCategory> {
}

21
cms-modules/cms-basic/cms-basic-bus/src/main/java/com/qs/serve/modules/basic/mapper/GoodsSkuMapper.java

@ -0,0 +1,21 @@
package com.qs.serve.modules.basic.mapper;
import com.baomidou.mybatisplus.annotation.InterceptorIgnore;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.qs.serve.modules.basic.entity.GoodsSku;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;
import java.util.List;
/**
* sku Mapper
* @author YenHex
* @date 2022-10-09
*/
public interface GoodsSkuMapper extends BaseMapper<GoodsSku> {
}

20
cms-modules/cms-basic/cms-basic-bus/src/main/java/com/qs/serve/modules/basic/mapper/GoodsSpuMapper.java

@ -0,0 +1,20 @@
package com.qs.serve.modules.basic.mapper;
import com.baomidou.mybatisplus.annotation.InterceptorIgnore;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.qs.serve.modules.basic.entity.GoodsSpu;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Update;
import java.util.List;
/**
* spu Mapper
* @author YenHex
* @date 2022-10-09
*/
public interface GoodsSpuMapper extends BaseMapper<GoodsSpu> {
}

79
cms-modules/cms-basic/cms-basic-bus/src/main/java/com/qs/serve/modules/basic/service/GoodsApplicationService.java

@ -0,0 +1,79 @@
package com.qs.serve.modules.basic.service;
import com.qs.serve.modules.basic.consts.TbsGoodsType;
import com.qs.serve.modules.basic.entity.GoodsCategory;
import com.qs.serve.modules.basic.entity.GoodsSku;
import com.qs.serve.modules.basic.entity.GoodsSpu;
import com.qs.serve.modules.basic.entity.dto.GoodsTargetInfo;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
/**
* @author YenHex
* @since 2025/4/21
*/
@Slf4j
@Service
@AllArgsConstructor
public class GoodsApplicationService {
private final GoodsSpuService goodsSpuService;
private final GoodsCategoryService goodsCategoryService;
private final GoodsSkuService goodsSkuService;
public List<GoodsTargetInfo> getGoodsTargetInfo(String goodsType, List<Long> goodsIds){
List<GoodsTargetInfo> resultList = new ArrayList<>();
if(goodsType.equals(TbsGoodsType.spu.name())){
for (Long spuId : goodsIds) {
GoodsSpu goodsSpu = goodsSpuService.getById(spuId);
GoodsCategory category1 = goodsCategoryService.getById(goodsSpu.getCategoryFirst());
GoodsCategory category2 = goodsCategoryService.getById(goodsSpu.getCategorySecond());
GoodsCategory category3 = goodsCategoryService.getById(goodsSpu.getCategoryThird());
GoodsTargetInfo targetInfo = new GoodsTargetInfo();
targetInfo.setTargetType(goodsType);
targetInfo.setTargetId(goodsSpu.getId());
targetInfo.setTargetCode(goodsSpu.getSpuCode());
targetInfo.setTargetName(goodsSpu.getName());
targetInfo.setTargetLevelPathIds(category1.getId()+"_"+category2.getId()+"_"+category3.getId()+"_"+goodsSpu.getId());
targetInfo.setTargetLevelPathNames(category1.getName()+"_"+category2.getName()+"_"+category3.getName()+"_"+goodsSpu.getName());
resultList.add(targetInfo);
}
}else if (goodsType.equals(TbsGoodsType.sku.name())){
for (Long skuId : goodsIds) {
GoodsSku sku = goodsSkuService.getById(skuId);
GoodsSpu goodsSpu = goodsSpuService.getById(sku.getSpuId());
GoodsCategory category1 = goodsCategoryService.getById(goodsSpu.getCategoryFirst());
GoodsCategory category2 = goodsCategoryService.getById(goodsSpu.getCategorySecond());
GoodsCategory category3 = goodsCategoryService.getById(goodsSpu.getCategoryThird());
GoodsTargetInfo targetInfo = new GoodsTargetInfo();
targetInfo.setTargetType(goodsType);
targetInfo.setTargetId(sku.getId());
targetInfo.setTargetCode(sku.getSkuCode());
targetInfo.setTargetName(sku.getSpecInfos());
targetInfo.setTargetLevelPathIds(category1.getId()+"_"+category2.getId()+"_"+category3.getId()+"_"+goodsSpu.getId()+"_"+sku.getId());
targetInfo.setTargetLevelPathNames(category1.getName()+"_"+category2.getName()+"_"+category3.getName()+"_"+goodsSpu.getName()+"_"+sku.getSpecInfos());
resultList.add(targetInfo);
}
}else {
//品牌、品类、系列
for (Long categoryId : goodsIds) {
GoodsCategory category = goodsCategoryService.getById(categoryId);
GoodsTargetInfo targetInfo = new GoodsTargetInfo();
targetInfo.setTargetType(goodsType);
targetInfo.setTargetId(category.getId());
targetInfo.setTargetCode(category.getCode());
targetInfo.setTargetName(category.getName());
targetInfo.setTargetLevelPathIds(category.getLevelPath());
targetInfo.setTargetLevelPathNames(category.getLevelPathNames());
resultList.add(targetInfo);
}
}
return resultList;
}
}

15
cms-modules/cms-basic/cms-basic-bus/src/main/java/com/qs/serve/modules/basic/service/GoodsCategoryService.java

@ -0,0 +1,15 @@
package com.qs.serve.modules.basic.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.qs.serve.modules.basic.entity.GoodsCategory;
/**
* 分类 服务接口
* @author YenHex
* @date 2022-10-09
*/
public interface GoodsCategoryService extends IService<GoodsCategory> {
}

22
cms-modules/cms-basic/cms-basic-bus/src/main/java/com/qs/serve/modules/basic/service/GoodsSkuService.java

@ -0,0 +1,22 @@
package com.qs.serve.modules.basic.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.qs.serve.modules.basic.entity.GoodsSku;
import java.util.List;
/**
* sku 服务接口
* @author YenHex
* @date 2022-10-09
*/
public interface GoodsSkuService extends IService<GoodsSku> {
GoodsSku getByCode(String code);
List<GoodsSku> getByCodes(List<String> codes);
List<GoodsSku> getBySpuId(Long spuId);
}

21
cms-modules/cms-basic/cms-basic-bus/src/main/java/com/qs/serve/modules/basic/service/GoodsSpuService.java

@ -0,0 +1,21 @@
package com.qs.serve.modules.basic.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.qs.serve.modules.basic.entity.GoodsSpu;
import java.util.List;
/**
* spu 服务接口
* @author YenHex
* @date 2022-10-09
*/
public interface GoodsSpuService extends IService<GoodsSpu> {
GoodsSpu getByCode(String code);
List<GoodsSpu> getByCodes(List<String> codes);
}

29
cms-modules/cms-basic/cms-basic-bus/src/main/java/com/qs/serve/modules/basic/service/impl/GoodsCategoryServiceImpl.java

@ -0,0 +1,29 @@
package com.qs.serve.modules.basic.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.qs.serve.common.exception.Assert;
import com.qs.serve.common.utils.CopierUtil;
import com.qs.serve.modules.basic.entity.GoodsCategory;
import com.qs.serve.modules.basic.mapper.GoodsCategoryMapper;
import com.qs.serve.modules.basic.service.GoodsCategoryService;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
/**
* 分类 服务实现类
* @author YenHex
* @since 2022-10-09
*/
@Slf4j
@Service
@AllArgsConstructor
public class GoodsCategoryServiceImpl extends ServiceImpl<GoodsCategoryMapper, GoodsCategory> implements GoodsCategoryService {
}

56
cms-modules/cms-basic/cms-basic-bus/src/main/java/com/qs/serve/modules/basic/service/impl/GoodsSkuServiceImpl.java

@ -0,0 +1,56 @@
package com.qs.serve.modules.basic.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.qs.serve.common.exception.Assert;
import com.qs.serve.common.utils.CopierUtil;
import com.qs.serve.common.utils.SpringUtils;
import com.qs.serve.common.utils.StringUtils;
import com.qs.serve.framework.base.model.R;
import com.qs.serve.modules.basic.entity.GoodsSku;
import com.qs.serve.modules.basic.mapper.GoodsSkuMapper;
import com.qs.serve.modules.basic.service.GoodsSkuService;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
/**
* sku 服务实现类
* @author YenHex
* @since 2022-10-09
*/
@Slf4j
@Service
@AllArgsConstructor
public class GoodsSkuServiceImpl extends ServiceImpl<GoodsSkuMapper, GoodsSku> implements GoodsSkuService {
@Override
public GoodsSku getByCode(String code) {
LambdaQueryWrapper<GoodsSku> lqw = new LambdaQueryWrapper<>();
lqw.eq(GoodsSku::getSkuCode,code);
return getOne(lqw,false);
}
@Override
public List<GoodsSku> getByCodes(List<String> codes) {
LambdaQueryWrapper<GoodsSku> lqw = new LambdaQueryWrapper<>();
lqw.in(GoodsSku::getSkuCode,codes);
return this.list(lqw);
}
@Override
public List<GoodsSku> getBySpuId(Long spuId) {
LambdaQueryWrapper<GoodsSku> lqw = new LambdaQueryWrapper<>();
lqw.eq(GoodsSku::getSpuId,spuId);
return list(lqw);
}
}

46
cms-modules/cms-basic/cms-basic-bus/src/main/java/com/qs/serve/modules/basic/service/impl/GoodsSpuServiceImpl.java

@ -0,0 +1,46 @@
package com.qs.serve.modules.basic.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.qs.serve.common.exception.Assert;
import com.qs.serve.common.utils.CopierUtil;
import com.qs.serve.common.utils.PageUtil;
import com.qs.serve.modules.basic.entity.GoodsSpu;
import com.qs.serve.modules.basic.mapper.GoodsSpuMapper;
import com.qs.serve.modules.basic.service.GoodsSpuService;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
/**
* spu 服务实现类
* @author YenHex
* @since 2022-10-09
*/
@Slf4j
@Service
@AllArgsConstructor
public class GoodsSpuServiceImpl extends ServiceImpl<GoodsSpuMapper, GoodsSpu> implements GoodsSpuService {
@Override
public GoodsSpu getByCode(String code) {
LambdaQueryWrapper<GoodsSpu> lqw = new LambdaQueryWrapper<>();
lqw.eq(GoodsSpu::getSpuCode,code);
return getOne(lqw,false);
}
@Override
public List<GoodsSpu> getByCodes(List<String> spuCodes) {
LambdaQueryWrapper<GoodsSpu> lqw = new LambdaQueryWrapper<>();
lqw.in(GoodsSpu::getSpuCode,spuCodes);
return list(lqw);
}
}

21
cms-modules/cms-policy/cms-policy-api/src/main/java/com/qs/serve/modules/tzc/entity/TzcRebateSubject.java

@ -93,26 +93,5 @@ public class TzcRebateSubject implements Serializable {
/** 前端用于绑定模板id */
private String tmpUk;
public static TzcRebateSubject toNewObject(TzcRebateSubject source){
TzcRebateSubject rebateSubject = new TzcRebateSubject();
rebateSubject.setId(source.getId());
rebateSubject.setRebateId(source.getRebateId());
rebateSubject.setSubjectId(source.getSubjectId());
rebateSubject.setSubjectCode(source.getSubjectCode());
rebateSubject.setSubjectName(source.getSubjectName());
rebateSubject.setSubjectRate(source.getSubjectRate());
rebateSubject.setSubjectAmount(source.getSubjectAmount());
rebateSubject.setRemark(source.getRemark());
rebateSubject.setCreateTime(source.getCreateTime());
rebateSubject.setUpdateTime(source.getUpdateTime());
rebateSubject.setTenantId(source.getTenantId());
rebateSubject.setCreateBy(source.getCreateBy());
rebateSubject.setUpdateBy(source.getUpdateBy());
rebateSubject.setDelFlag(source.getDelFlag());
rebateSubject.setTmpUk(source.getTmpUk());
return rebateSubject;
}
}

2
cms-modules/cms-policy/cms-policy-api/src/main/java/com/qs/serve/modules/tzc/entity/bo/TzcRebateGoodsParam.java

@ -24,7 +24,7 @@ public class TzcRebateGoodsParam {
/**
* 产品id
*/
private String goodsId;
private Long goodsId;
private String remark;

134
cms-modules/cms-policy/cms-policy-bus/src/main/java/com/qs/serve/modules/tzc/service/impl/TzcRebateApplicationServiceImpl.java

@ -2,21 +2,33 @@ 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.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* @author YenHex
@ -31,6 +43,8 @@ public class TzcRebateApplicationServiceImpl implements TzcRebateApplicationServ
private final BmsCostCenterMapper bmsCostCenterMapper;
private final BmsSupplierMapper bmsSupplierMapper;
private final BmsSubjectMapper bmsSubjectMapper;
private final GoodsApplicationService goodsApplicationService;
@Override
public Object modifyRebate(TzcRebateParam param) {
@ -48,6 +62,96 @@ public class TzcRebateApplicationServiceImpl implements TzcRebateApplicationServ
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());
// 返利的商品
List<TzcRebateGoods> tzcRebateGoodsList = this.buildRebateGoodsList(param.getGoodsList());
// 返利的商品,关联主表id和code
for (TzcRebateGoods rebateGoods : tzcRebateGoodsList) {
rebateGoods.setRebateId(rebate.getId());
rebateGoods.setRebateCode(rebate.getRebateCode());
}
// 返利的科目
List<TzcRebateSubject> tzcRebateSubjectList = this.buildRebateSubjectList(param.getSubjectList());
return null;
}
@NotNull
private List<TzcRebateSubject> buildRebateSubjectList(List<TzcRebateSubjectParam> subjectList) {
List<TzcRebateSubject> 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<TzcRebateCenterParam> centerParamList= subjectParam.getCenterList();
}
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;
@ -113,36 +217,6 @@ public class TzcRebateApplicationServiceImpl implements TzcRebateApplicationServ
Assert.throwEx("坎级叠加标识为1时,坎级配置不能为空");
}
}
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();
// rebate.setSupplierName();
rebate.setRebateAmount(param.getRebateAmount());
rebate.setOverlayFlag(param.getOverlayFlag());
rebate.setRemark(param.getRemark());
return null;
}
@Override

6
cms-modules/cms-system/src/main/java/com/qs/serve/modules/seeyon/service/SeeYonBaseService.java

@ -9,10 +9,14 @@ import com.qs.serve.modules.sys.mapper.SysUserMapper;
*/
public interface SeeYonBaseService {
String getTemplateCode();
default SeeYonRequestService getRequestService(){
return SpringUtils.getBean(SeeYonRequestService.class);
if(SeeYonServiceStaticUtil.seeYonRequestService==null){
SeeYonServiceStaticUtil.seeYonRequestService = SpringUtils.getBean(SeeYonRequestService.class);
}
return SeeYonServiceStaticUtil.seeYonRequestService;
}
default SysUserMapper getUserMapper(){

14
cms-modules/cms-system/src/main/java/com/qs/serve/modules/seeyon/service/SeeYonServiceStaticUtil.java

@ -0,0 +1,14 @@
package com.qs.serve.modules.seeyon.service;
import lombok.experimental.UtilityClass;
/**
* @author YenHex
* @since 2025/4/21
*/
@UtilityClass
public class SeeYonServiceStaticUtil {
public static SeeYonRequestService seeYonRequestService = null;
}

16
cms-modules/cms-system/src/main/java/com/qs/serve/modules/vtb/controller/VtbVerificationController.java

@ -77,6 +77,22 @@ public class VtbVerificationController {
private VtbVerificationOperationServiceImpl vtbVerificationOperationService;
private VtbVerificationApplication2 vtbVerificationApplication2;
@GetMapping("/tryToAccessOa")
public R<?> tryToAccessOa() {
List<VtbVerification> verificationList = vtbVerificationService.list(
new LambdaQueryWrapper<VtbVerification>()
.select(VtbVerification::getId)
.eq(VtbVerification::getVerificationState, VtbVerificationState.Commiting.getCode())
);
for (VtbVerification verification : verificationList) {
try {
vtbVerificationOperationService.runCompensate(verification.getId()+"");
} catch (Exception e) {
e.printStackTrace();
}
}
return R.ok();
}
/**
* 创建协议类核销记录

Loading…
Cancel
Save