Browse Source

feat: 下单规则辅助页添加人员维度限制

opt:下单规则辅助页修改为翻页查询
checkBack
Yen 1 year ago
parent
commit
c4bac9782e
  1. 4
      src/main/java/com/qs/serve/modules/goods/controller/GoodsAccreditController.java
  2. 37
      src/main/java/com/qs/serve/modules/goods/controller/GoodsSpuController.java
  3. 22
      src/main/java/com/qs/serve/modules/goods/entity/dto/GoodsAccreditExt.java
  4. 2
      src/main/java/com/qs/serve/modules/goods/entity/dto/GoodsAccreditQuery.java
  5. 16
      src/main/java/com/qs/serve/modules/goods/entity/vo/GoodsAccreditResult.java
  6. 2
      src/main/java/com/qs/serve/modules/goods/mapper/GoodsAccreditMapper.java
  7. 2
      src/main/java/com/qs/serve/modules/goods/service/GoodsAccreditService.java
  8. 140
      src/main/java/com/qs/serve/modules/goods/service/impl/GoodsAccreditServiceImpl.java
  9. 111
      src/main/resources/mapper/goods/GoodsAccreditMapper.xml

4
src/main/java/com/qs/serve/modules/goods/controller/GoodsAccreditController.java

@ -44,8 +44,8 @@ public class GoodsAccreditController {
* @return
*/
@GetMapping("/page")
public R<List<GoodsAccreditResult>> getPage(GoodsAccreditQuery query){
List<GoodsAccreditResult> data = goodsAccreditService.queryPage(query);
public R<PageVo<GoodsAccreditResult>> getPage(GoodsAccreditQuery query){
PageVo<GoodsAccreditResult> data = goodsAccreditService.queryPage(query);
return R.ok(data);
}

37
src/main/java/com/qs/serve/modules/goods/controller/GoodsSpuController.java

@ -212,8 +212,35 @@ public class GoodsSpuController {
if(CollUtil.isNotEmpty(ruleItemDTO.getOnlyCategoryIds())){
if (CollUtil.isEmpty(param.getSelectCateIds())){
param.setSelectCateIds(ruleItemDTO.getOnlyCategoryIds());
}else.
}else{
List<String> onlyIds = ruleItemDTO.getOnlyCategoryIds();
List<GoodsCategory> onlyCategoryList = goodsCategoryService.listByIds(onlyIds);
for (GoodsCategory category : onlyCategoryList) {
List<GoodsCategory> childList = goodsCategoryService.list(new LambdaQueryWrapper<GoodsCategory>()
.likeRight(GoodsCategory::getLevelPath,category.getLevelPath()+"_"));
if(CollUtil.isNotEmpty(childList)){
List<String> childIds = childList.stream().map(a->a.getId().toString()).collect(Collectors.toList());
onlyIds.addAll(childIds);
}
}
List<String> selectCateIds = param.getSelectCateIds();
List<GoodsCategory> goodsCategoryList = goodsCategoryService.listByIds(selectCateIds);
for (GoodsCategory category : goodsCategoryList) {
List<GoodsCategory> childList = goodsCategoryService.list(new LambdaQueryWrapper<GoodsCategory>()
.likeRight(GoodsCategory::getLevelPath,category.getLevelPath()+"_"));
if(CollUtil.isNotEmpty(childList)){
List<String> childIds = childList.stream().map(a->a.getId().toString()).collect(Collectors.toList());
selectCateIds.addAll(childIds);
}
}
//交集
Collection<String> ids = cn.hutool.core.collection.CollectionUtil
.intersection(onlyIds, selectCateIds);
List<String> idsList = new ArrayList<>();
idsList.addAll(ids);
idsList.add("#");
param.setSelectCateIds(idsList);
}
}
if(CollUtil.isNotEmpty(ruleItemDTO.getOnlySpuIds())){
@ -369,15 +396,15 @@ public class GoodsSpuController {
list.forEach(a->{
if(StringUtils.hasText(a.getCategoryFirst())){
GoodsCategory first = goodsCategoryService.getById(a.getCategoryFirst());
if (first!=null) a.setCateFirstLabel(first.getName());
if (first!=null) {a.setCateFirstLabel(first.getName());}
}
if(StringUtils.hasText(a.getCategorySecond())){
GoodsCategory second = goodsCategoryService.getById(a.getCategorySecond());
if (second!=null) a.setCateSecondLabel(second.getName());
if (second!=null) {a.setCateSecondLabel(second.getName());}
}
if(StringUtils.hasText(a.getCategoryThird())){
GoodsCategory third = goodsCategoryService.getById(a.getCategoryThird());
if (third!=null) a.setCateThirdLabel(third.getName());
if (third!=null) {a.setCateThirdLabel(third.getName());}
}
});
return R.ok(list);

22
src/main/java/com/qs/serve/modules/goods/entity/dto/GoodsAccreditExt.java

@ -1,11 +1,16 @@
package com.qs.serve.modules.goods.entity.dto;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.qs.serve.modules.goods.entity.GoodsAccredit;
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.time.LocalDateTime;
/**
* @author YenHex
@ -14,6 +19,11 @@ import javax.validation.constraints.NotNull;
@Data
public class GoodsAccreditExt {
/**
* 拼接类型 rule accredit
*/
private String unionType;
private Long id;
private String code;
@ -52,5 +62,17 @@ public class GoodsAccreditExt {
private String bizRegionId;
private String saleRegionId;
private String supplierId;
private String userId;
/** 创建时间 */
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
private LocalDateTime createTime;
/** 创建人 */
private String createUser;
/** 创建人 */
private String createUserCode;
}

2
src/main/java/com/qs/serve/modules/goods/entity/dto/GoodsAccreditQuery.java

@ -25,6 +25,8 @@ public class GoodsAccreditQuery {
/** 维度名称 */
private String targetName = "";
private String userKeywords = "";
private Set<String> codeList;
private Set<String> targetCodeList;

16
src/main/java/com/qs/serve/modules/goods/entity/vo/GoodsAccreditResult.java

@ -1,10 +1,15 @@
package com.qs.serve.modules.goods.entity.vo;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
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.time.LocalDateTime;
/**
* @author YenHex
@ -47,4 +52,15 @@ public class GoodsAccreditResult {
@Length(max = 30,message = "维度id长度不能超过30字")
private String targetId;
/** 创建时间 */
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
private LocalDateTime createTime;
/** 创建人 */
private String createUser;
/** 创建人 */
private String createUserCode;
}

2
src/main/java/com/qs/serve/modules/goods/mapper/GoodsAccreditMapper.java

@ -21,5 +21,7 @@ public interface GoodsAccreditMapper extends BaseMapper<GoodsAccredit> {
List<GoodsAccreditExt> queryPage2(@Param("query") GoodsAccreditQuery query);
List<GoodsAccreditExt> queryUnionPage(@Param("query") GoodsAccreditQuery query);
}

2
src/main/java/com/qs/serve/modules/goods/service/GoodsAccreditService.java

@ -22,7 +22,7 @@ import java.util.Map;
*/
public interface GoodsAccreditService extends IService<GoodsAccredit> {
List<GoodsAccreditResult> queryPage(GoodsAccreditQuery query);
PageVo<GoodsAccreditResult> queryPage(GoodsAccreditQuery query);
void modify(GoodsAccreditBo param);

140
src/main/java/com/qs/serve/modules/goods/service/impl/GoodsAccreditServiceImpl.java

@ -25,6 +25,8 @@ import com.qs.serve.modules.goods.entity.vo.GoodsAccreditResult;
import com.qs.serve.modules.goods.entity.vo.GoodsAccreditVo;
import com.qs.serve.modules.goods.mapper.*;
import com.qs.serve.modules.goods.service.GoodsAccreditItemService;
import com.qs.serve.modules.sys.entity.SysUser;
import com.qs.serve.modules.sys.mapper.SysUserMapper;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
@ -47,6 +49,8 @@ public class GoodsAccreditServiceImpl extends ServiceImpl<GoodsAccreditMapper,Go
private final GoodsSpuMapper goodsSpuMapper;
private final GoodsSkuMapper goodsSkuMapper;
private final SysUserMapper sysUserMapper;
private final BmsRegionMapper regionMapper;
private final BmsRegion2Mapper region2Mapper;
private final BmsSupplierMapper supplierMapper;
@ -54,7 +58,7 @@ public class GoodsAccreditServiceImpl extends ServiceImpl<GoodsAccreditMapper,Go
private final GoodsAccreditItemService goodsAccreditItemService;
@Override
public List<GoodsAccreditResult> queryPage(GoodsAccreditQuery query) {
public PageVo<GoodsAccreditResult> queryPage(GoodsAccreditQuery query) {
String productCode = query.getCode();
String productName = query.getName();
String targetCode = query.getTargetCode();
@ -108,6 +112,18 @@ public class GoodsAccreditServiceImpl extends ServiceImpl<GoodsAccreditMapper,Go
if(StringUtils.hasText(targetCode)||StringUtils.hasText(targetName)){
Set<String> targetCodes = new HashSet<>();
//拓展人员
List<SysUser> sysUserList = sysUserMapper.selectList(new LambdaQueryWrapper<SysUser>()
.eq(SysUser::getCode,targetCode)
.or()
.eq(SysUser::getName,targetName));
if(sysUserList.size()>0){
for (SysUser user : sysUserList) {
targetCodes.add(user.getCode());
}
}
List<BmsSupplier> supplierList = supplierMapper.selectList(new LambdaQueryWrapper<BmsSupplier>()
.eq(BmsSupplier::getCode,targetCode)
.or()
@ -157,63 +173,83 @@ public class GoodsAccreditServiceImpl extends ServiceImpl<GoodsAccreditMapper,Go
}
query.setTargetCodeList(targetCodes);
}
List<GoodsAccreditExt> list = super.baseMapper.queryPage(query);
PageUtil.startPage();
List<GoodsAccreditExt> list = super.baseMapper.queryUnionPage(query);
List<GoodsAccreditResult> results = list.stream().map(ext->{
GoodsAccreditResult result = new GoodsAccreditResult();
result.setId("goods"+ext.getId());
result.setRuleType("goods");
if(ext.getCategoryId()!=null){
result.setGoodType("category");
}else if (ext.getSpuId()!=null){
result.setGoodType("spu");
if (ext.getUnionType().equals("accredit")){
GoodsAccreditResult result = new GoodsAccreditResult();
result.setId("goods"+ext.getId());
result.setRuleType("goods");
if(ext.getCategoryId()!=null){
result.setGoodType("category");
}else if (ext.getSpuId()!=null){
result.setGoodType("spu");
}else {
result.setGoodType("sku");
}
result.setCode(ext.getCode());
result.setName(ext.getName());
result.setAccType(ext.getAccType().equals(0)?"in":"notIn");
if(ext.getTargetType().equals("0")){
result.setTargetType("supplier");
}else if (ext.getTargetType().equals("1")){
result.setTargetType("bizRegion");
}else if (ext.getTargetType().equals("2")){
result.setTargetType("saleRegion");
}else {
result.setTargetType(ext.getTargetType());
}
result.setTargetCode(ext.getTargetCode());
result.setTargetName(ext.getTargetName());
result.setTargetId(ext.getTargetId());
result.setCreateTime(ext.getCreateTime());
result.setCreateUser(ext.getCreateUser());
result.setCreateUserCode(ext.getCreateUserCode());
return result;
}else {
result.setGoodType("sku");
GoodsAccreditResult result = new GoodsAccreditResult();
result.setId("supplier"+ext.getId());
result.setRuleType("supplier");
if(ext.getUserId()!=null) {
result.setTargetType("user");
}else if(ext.getSaleRegionId()!=null){
result.setTargetType("saleRegion");
}else if (ext.getBizRegionId()!=null){
result.setTargetType("bizRegion");
}else {
result.setTargetType("supplier");
}
result.setCode(ext.getCode());
result.setName(ext.getName());
if(ext.getTargetType().equals("1")){
result.setAccType("in");
result.setGoodType("category");
}else if (ext.getTargetType().equals("2")){
result.setAccType("notIn");
result.setGoodType("category");
}else if (ext.getTargetType().equals("3")){
result.setAccType("in");
result.setGoodType("spu");
}else {
result.setAccType("notIn");
result.setGoodType("spu");
}
result.setTargetId(ext.getId()+"");
//result.setTargetType(ext.getTargetType());
result.setTargetCode(ext.getTargetCode());
result.setTargetName(ext.getTargetName());
result.setCreateTime(ext.getCreateTime());
result.setCreateUser(ext.getCreateUser());
result.setCreateUserCode(ext.getCreateUserCode());
return result;
}
result.setCode(ext.getCode());
result.setName(ext.getName());
result.setAccType(ext.getAccType().equals(0)?"in":"notIn");
result.setTargetType(ext.getTargetType());
result.setTargetCode(ext.getTargetCode());
result.setTargetName(ext.getTargetName());
result.setTargetId(ext.getTargetId());
return result;
}).collect(Collectors.toList());
List<GoodsAccreditExt> list2 = super.baseMapper.queryPage2(query);
for (GoodsAccreditExt ext : list2) {
GoodsAccreditResult result = new GoodsAccreditResult();
result.setId("supplier"+ext.getId());
result.setRuleType("supplier");
if(ext.getSaleRegionId()!=null){
result.setTargetType("saleRegion");
}else if (ext.getBizRegionId()!=null){
result.setTargetType("bizRegion");
}else {
result.setTargetType("supplier");
}
result.setCode(ext.getCode());
result.setName(ext.getName());
if(ext.getTargetType().equals("1")){
result.setAccType("in");
result.setGoodType("category");
}else if (ext.getTargetType().equals("2")){
result.setAccType("notIn");
result.setGoodType("category");
}else if (ext.getTargetType().equals("3")){
result.setAccType("in");
result.setGoodType("spu");
}else {
result.setAccType("notIn");
result.setGoodType("spu");
}
result.setTargetType(ext.getTargetType());
result.setTargetCode(ext.getTargetCode());
result.setTargetName(ext.getTargetName());
results.add(result);
}
return results;
return R.byPageHelperList(list,results).getData();
}
@Override

111
src/main/resources/mapper/goods/GoodsAccreditMapper.xml

@ -5,37 +5,46 @@
<mapper namespace="com.qs.serve.modules.goods.mapper.GoodsAccreditMapper">
<sql id="goodsAccreditSql">
<sql id="queryPageSql">
select
'accredit' as unionType,
goods_accredit.`sku_id`,
goods_accredit.`spu_id`,
goods_accredit.`category_id`,
goods_accredit_item.`acc_type`,
goods_accredit_item.`target_id`,
goods_accredit.`code`,
goods_accredit.`name`,
goods_accredit.`empty_flag`,
goods_accredit.`remark`,
goods_accredit.`create_time`,
goods_accredit.`update_time`,
goods_accredit.`tenant_id`,
goods_accredit.`del_flag`,
goods_accredit.`create_by`,
goods_accredit.`update_by` </sql>
<select id="queryPage" resultType="com.qs.serve.modules.goods.entity.dto.GoodsAccreditExt">
select
goods_accredit_item.id,
goods_accredit_item.`acc_type`,
goods_accredit_item.`target_type`,
goods_accredit_item.`target_code`,
goods_accredit_item.`target_name`,
goods_accredit_item.`target_id`,
<include refid="goodsAccreditSql"/>
'0' as biz_region_id,
'0' as sale_region_id,
'0' as supplier_id,
'0' as user_id,
goods_accredit_item.id+'_goods' as id,
goods_accredit_item.`target_type`,
goods_accredit_item.`target_code`,
goods_accredit_item.`target_name`,
goods_accredit_item.create_time,
sys_user.name as `create_user`,
sys_user.code as `create_user_code`
from goods_accredit
left join goods_accredit_item
on goods_accredit.id = goods_accredit_item.acc_id
left join goods_accredit_item
on goods_accredit.id = goods_accredit_item.acc_id
left join sys_user on sys_user.id = goods_accredit_item.create_by
<where>
and `goods_accredit`.`del_flag` = 0
and `goods_accredit_item`.`del_flag` = 0
and `goods_accredit`.`empty_flag` = 0
<if test="query.userKeywords!=null and query.userKeywords!=''">
and ( sys_user.`code` like concat('%',#{query.userKeywords},'%')
or sys_user.`name` like concat('%',#{query.userKeywords},'%') )
</if>
<if test="query.codeList!=null and query.codeList.size > 0">
and goods_accredit.`code` in
<foreach collection="query.codeList" item ="codeitem" index="i" open="(" close=")" separator=",">
@ -49,27 +58,52 @@
</foreach>
</if>
</where>
</sql>
<select id="queryPage" resultType="com.qs.serve.modules.goods.entity.dto.GoodsAccreditExt">
<include refid="queryPageSql"></include>
</select>
<select id="queryPage2" resultType="com.qs.serve.modules.goods.entity.dto.GoodsAccreditExt">
<sql id="queryPage2Sql">
select
goods_rule.biz_region_id,
goods_rule.sale_region_id,
goods_rule.supplier_id,
goods_rule.code as target_code,
goods_rule.name as target_name,
goods_rule_item.target_type,
goods_rule_item.target_code as `code`,
goods_rule_item.target_name as `name`
'rule' as unionType,
'0' as sku_id,
'0' as `spu_id`,
'0' as `category_id`,
'0' as `acc_type`,
'0' as target_id,
goods_rule_item.target_code as `code`,
goods_rule_item.target_name as `name`,
goods_rule.biz_region_id,
goods_rule.sale_region_id,
goods_rule.supplier_id,
goods_rule.user_id,
goods_rule_item.id + '_rul' as id,
goods_rule_item.target_type,
goods_rule.code as target_code,
goods_rule.name as target_name,
goods_rule_item.create_time,
sys_user.name as `create_user`,
sys_user.code as `create_user_code`
from goods_rule
left join goods_rule_item
on goods_rule.id = goods_rule_item.rule_id
left join goods_rule_item
on goods_rule.id = goods_rule_item.rule_id
left join sys_user on sys_user.id = goods_rule_item.create_by
where 1=1
AND`goods_rule`.`del_flag` = 0
AND `goods_rule_item`.`del_flag` = 0
AND goods_rule.empty_flag = 0
AND`goods_rule`.`del_flag` = 0
AND `goods_rule_item`.`del_flag` = 0
AND goods_rule.empty_flag = 0
<if test="query.userKeywords!=null and query.userKeywords!=''">
and ( sys_user.`code` like concat('%',#{query.userKeywords},'%')
or sys_user.`name` like concat('%',#{query.userKeywords},'%') )
</if>
<if test="query.codeList!=null and query.codeList.size > 0">
and goods_rule_item.`target_code` in
<foreach collection="query.codeList" item ="codeitem" index="i" open="(" close=")" separator=",">
@ -82,8 +116,17 @@
#{codeitem}
</foreach>
</if>
</sql>
<select id="queryPage2" resultType="com.qs.serve.modules.goods.entity.dto.GoodsAccreditExt">
<include refid="queryPage2Sql"></include>
</select>
<select id="queryUnionPage" resultType="com.qs.serve.modules.goods.entity.dto.GoodsAccreditExt">
<include refid="queryPage2Sql"></include>
union
<include refid="queryPageSql"></include>
</select>
</mapper>

Loading…
Cancel
Save