diff --git a/cms-api/cms-admin-svc/src/main/resources/application-pro.yml b/cms-api/cms-admin-svc/src/main/resources/application-pro.yml index 76d35e1..638adbc 100644 --- a/cms-api/cms-admin-svc/src/main/resources/application-pro.yml +++ b/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/' diff --git a/cms-modules/cms-basic/cms-basic-api/src/main/java/com/qs/serve/modules/basic/entity/BmsRegion.java b/cms-modules/cms-basic/cms-basic-api/src/main/java/com/qs/serve/modules/basic/entity/BmsRegion.java new file mode 100644 index 0000000..66de0e7 --- /dev/null +++ b/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; + +} + diff --git a/cms-modules/cms-basic/cms-basic-api/src/main/java/com/qs/serve/modules/basic/entity/BmsRegion2.java b/cms-modules/cms-basic/cms-basic-api/src/main/java/com/qs/serve/modules/basic/entity/BmsRegion2.java new file mode 100644 index 0000000..45cb131 --- /dev/null +++ b/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; + +} + diff --git a/cms-modules/cms-basic/cms-basic-api/src/main/java/com/qs/serve/modules/basic/entity/BmsSubject.java b/cms-modules/cms-basic/cms-basic-api/src/main/java/com/qs/serve/modules/basic/entity/BmsSubject.java new file mode 100644 index 0000000..8613ac3 --- /dev/null +++ b/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 saleRegionIds; + + /** 行政区域id */ + @TableField(exist = false) + private List bizRegionIds; + + /** 销售区域 */ + @TableField(exist = false) + private List saleRegionInfos; + + /** 行政区域 */ + @TableField(exist = false) + private List bizRegionInfos; + + @TableField(exist = false) + private List selectIds; +} + diff --git a/cms-modules/cms-basic/cms-basic-api/src/main/java/com/qs/serve/modules/basic/entity/GoodsCategory.java b/cms-modules/cms-basic/cms-basic-api/src/main/java/com/qs/serve/modules/basic/entity/GoodsCategory.java new file mode 100644 index 0000000..5befabf --- /dev/null +++ b/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 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]; + } + } +} + diff --git a/cms-modules/cms-basic/cms-basic-api/src/main/java/com/qs/serve/modules/basic/entity/GoodsSku.java b/cms-modules/cms-basic/cms-basic-api/src/main/java/com/qs/serve/modules/basic/entity/GoodsSku.java new file mode 100644 index 0000000..8fc55f1 --- /dev/null +++ b/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; + +} + diff --git a/cms-modules/cms-basic/cms-basic-api/src/main/java/com/qs/serve/modules/basic/entity/GoodsSpu.java b/cms-modules/cms-basic/cms-basic-api/src/main/java/com/qs/serve/modules/basic/entity/GoodsSpu.java new file mode 100644 index 0000000..abbfafb --- /dev/null +++ b/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; + +} + diff --git a/cms-modules/cms-basic/cms-basic-api/src/main/java/com/qs/serve/modules/basic/entity/dto/GoodsTargetInfo.java b/cms-modules/cms-basic/cms-basic-api/src/main/java/com/qs/serve/modules/basic/entity/dto/GoodsTargetInfo.java new file mode 100644 index 0000000..ba6613c --- /dev/null +++ b/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; + +} diff --git a/cms-modules/cms-basic/cms-basic-api/src/main/java/com/qs/serve/modules/basic/entity/dto/TbsCenterDto.java b/cms-modules/cms-basic/cms-basic-api/src/main/java/com/qs/serve/modules/basic/entity/dto/TbsCenterDto.java new file mode 100644 index 0000000..288af93 --- /dev/null +++ b/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"; + } +} diff --git a/cms-modules/cms-basic/cms-basic-bus/src/main/java/com/qs/serve/modules/basic/consts/TbsGoodsType.java b/cms-modules/cms-basic/cms-basic-bus/src/main/java/com/qs/serve/modules/basic/consts/TbsGoodsType.java new file mode 100644 index 0000000..1d7f7b4 --- /dev/null +++ b/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 + +} diff --git a/cms-modules/cms-basic/cms-basic-bus/src/main/java/com/qs/serve/modules/basic/mapper/BmsRegion2Mapper.java b/cms-modules/cms-basic/cms-basic-bus/src/main/java/com/qs/serve/modules/basic/mapper/BmsRegion2Mapper.java new file mode 100644 index 0000000..c00791f --- /dev/null +++ b/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 { + +} + diff --git a/cms-modules/cms-basic/cms-basic-bus/src/main/java/com/qs/serve/modules/basic/mapper/BmsRegionMapper.java b/cms-modules/cms-basic/cms-basic-bus/src/main/java/com/qs/serve/modules/basic/mapper/BmsRegionMapper.java new file mode 100644 index 0000000..45306ec --- /dev/null +++ b/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 { + +} + diff --git a/cms-modules/cms-basic/cms-basic-bus/src/main/java/com/qs/serve/modules/basic/mapper/BmsSubjectMapper.java b/cms-modules/cms-basic/cms-basic-bus/src/main/java/com/qs/serve/modules/basic/mapper/BmsSubjectMapper.java new file mode 100644 index 0000000..4416974 --- /dev/null +++ b/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 { + +} + diff --git a/cms-modules/cms-basic/cms-basic-bus/src/main/java/com/qs/serve/modules/basic/mapper/GoodsCategoryMapper.java b/cms-modules/cms-basic/cms-basic-bus/src/main/java/com/qs/serve/modules/basic/mapper/GoodsCategoryMapper.java new file mode 100644 index 0000000..a859292 --- /dev/null +++ b/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 { + +} + diff --git a/cms-modules/cms-basic/cms-basic-bus/src/main/java/com/qs/serve/modules/basic/mapper/GoodsSkuMapper.java b/cms-modules/cms-basic/cms-basic-bus/src/main/java/com/qs/serve/modules/basic/mapper/GoodsSkuMapper.java new file mode 100644 index 0000000..ea38a4c --- /dev/null +++ b/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 { + + +} + diff --git a/cms-modules/cms-basic/cms-basic-bus/src/main/java/com/qs/serve/modules/basic/mapper/GoodsSpuMapper.java b/cms-modules/cms-basic/cms-basic-bus/src/main/java/com/qs/serve/modules/basic/mapper/GoodsSpuMapper.java new file mode 100644 index 0000000..c060906 --- /dev/null +++ b/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 { + + +} + diff --git a/cms-modules/cms-basic/cms-basic-bus/src/main/java/com/qs/serve/modules/basic/service/GoodsApplicationService.java b/cms-modules/cms-basic/cms-basic-bus/src/main/java/com/qs/serve/modules/basic/service/GoodsApplicationService.java new file mode 100644 index 0000000..ae2c48d --- /dev/null +++ b/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 getGoodsTargetInfo(String goodsType, List goodsIds){ + List 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; + } + + +} diff --git a/cms-modules/cms-basic/cms-basic-bus/src/main/java/com/qs/serve/modules/basic/service/GoodsCategoryService.java b/cms-modules/cms-basic/cms-basic-bus/src/main/java/com/qs/serve/modules/basic/service/GoodsCategoryService.java new file mode 100644 index 0000000..bccc1f9 --- /dev/null +++ b/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 { + + +} + diff --git a/cms-modules/cms-basic/cms-basic-bus/src/main/java/com/qs/serve/modules/basic/service/GoodsSkuService.java b/cms-modules/cms-basic/cms-basic-bus/src/main/java/com/qs/serve/modules/basic/service/GoodsSkuService.java new file mode 100644 index 0000000..e474871 --- /dev/null +++ b/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 getByCode(String code); + + List getByCodes(List codes); + + List getBySpuId(Long spuId); + +} + diff --git a/cms-modules/cms-basic/cms-basic-bus/src/main/java/com/qs/serve/modules/basic/service/GoodsSpuService.java b/cms-modules/cms-basic/cms-basic-bus/src/main/java/com/qs/serve/modules/basic/service/GoodsSpuService.java new file mode 100644 index 0000000..4e1f674 --- /dev/null +++ b/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 getByCode(String code); + + List getByCodes(List codes); + + +} + diff --git a/cms-modules/cms-basic/cms-basic-bus/src/main/java/com/qs/serve/modules/basic/service/impl/GoodsCategoryServiceImpl.java b/cms-modules/cms-basic/cms-basic-bus/src/main/java/com/qs/serve/modules/basic/service/impl/GoodsCategoryServiceImpl.java new file mode 100644 index 0000000..38082f4 --- /dev/null +++ b/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 implements GoodsCategoryService { + +} + diff --git a/cms-modules/cms-basic/cms-basic-bus/src/main/java/com/qs/serve/modules/basic/service/impl/GoodsSkuServiceImpl.java b/cms-modules/cms-basic/cms-basic-bus/src/main/java/com/qs/serve/modules/basic/service/impl/GoodsSkuServiceImpl.java new file mode 100644 index 0000000..d2d9c77 --- /dev/null +++ b/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 implements GoodsSkuService { + + @Override + public GoodsSku getByCode(String code) { + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.eq(GoodsSku::getSkuCode,code); + return getOne(lqw,false); + } + + @Override + public List getByCodes(List codes) { + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.in(GoodsSku::getSkuCode,codes); + return this.list(lqw); + } + + @Override + public List getBySpuId(Long spuId) { + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.eq(GoodsSku::getSpuId,spuId); + return list(lqw); + } + +} + diff --git a/cms-modules/cms-basic/cms-basic-bus/src/main/java/com/qs/serve/modules/basic/service/impl/GoodsSpuServiceImpl.java b/cms-modules/cms-basic/cms-basic-bus/src/main/java/com/qs/serve/modules/basic/service/impl/GoodsSpuServiceImpl.java new file mode 100644 index 0000000..dbf79db --- /dev/null +++ b/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 implements GoodsSpuService { + + @Override + public GoodsSpu getByCode(String code) { + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.eq(GoodsSpu::getSpuCode,code); + return getOne(lqw,false); + } + + + @Override + public List getByCodes(List spuCodes) { + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.in(GoodsSpu::getSpuCode,spuCodes); + return list(lqw); + } + +} + diff --git a/cms-modules/cms-policy/cms-policy-api/src/main/java/com/qs/serve/modules/tzc/entity/TzcRebateSubject.java b/cms-modules/cms-policy/cms-policy-api/src/main/java/com/qs/serve/modules/tzc/entity/TzcRebateSubject.java index dcf3681..1e1ec9d 100644 --- a/cms-modules/cms-policy/cms-policy-api/src/main/java/com/qs/serve/modules/tzc/entity/TzcRebateSubject.java +++ b/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; - } - } diff --git a/cms-modules/cms-policy/cms-policy-api/src/main/java/com/qs/serve/modules/tzc/entity/bo/TzcRebateGoodsParam.java b/cms-modules/cms-policy/cms-policy-api/src/main/java/com/qs/serve/modules/tzc/entity/bo/TzcRebateGoodsParam.java index d3a7064..a809950 100644 --- a/cms-modules/cms-policy/cms-policy-api/src/main/java/com/qs/serve/modules/tzc/entity/bo/TzcRebateGoodsParam.java +++ b/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; 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 index 44a25dd..b8d84da 100644 --- 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 @@ -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 tzcRebateGoodsList = this.buildRebateGoodsList(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(List goodsList) { + List tzcRebateGoodsList = new ArrayList<>(); + Map> goodsListMap = goodsList.stream() + .collect(Collectors.groupingBy(TzcRebateGoodsParam::getGoodsType)); + 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; @@ -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 diff --git a/cms-modules/cms-system/src/main/java/com/qs/serve/modules/seeyon/service/SeeYonBaseService.java b/cms-modules/cms-system/src/main/java/com/qs/serve/modules/seeyon/service/SeeYonBaseService.java index 923f608..08aa0f0 100644 --- a/cms-modules/cms-system/src/main/java/com/qs/serve/modules/seeyon/service/SeeYonBaseService.java +++ b/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(){ diff --git a/cms-modules/cms-system/src/main/java/com/qs/serve/modules/seeyon/service/SeeYonServiceStaticUtil.java b/cms-modules/cms-system/src/main/java/com/qs/serve/modules/seeyon/service/SeeYonServiceStaticUtil.java new file mode 100644 index 0000000..0f46eb2 --- /dev/null +++ b/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; + +} diff --git a/cms-modules/cms-system/src/main/java/com/qs/serve/modules/vtb/controller/VtbVerificationController.java b/cms-modules/cms-system/src/main/java/com/qs/serve/modules/vtb/controller/VtbVerificationController.java index c0e69b0..deda7e9 100644 --- a/cms-modules/cms-system/src/main/java/com/qs/serve/modules/vtb/controller/VtbVerificationController.java +++ b/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 verificationList = vtbVerificationService.list( + new LambdaQueryWrapper() + .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(); + } /** * 创建协议类核销记录