From c4bac9782e875c27eccf3dd1ab0ec489e6eb2e56 Mon Sep 17 00:00:00 2001 From: Yen Date: Sat, 11 May 2024 17:57:30 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E4=B8=8B=E5=8D=95=E8=A7=84=E5=88=99?= =?UTF-8?q?=E8=BE=85=E5=8A=A9=E9=A1=B5=E6=B7=BB=E5=8A=A0=E4=BA=BA=E5=91=98?= =?UTF-8?q?=E7=BB=B4=E5=BA=A6=E9=99=90=E5=88=B6=20opt=EF=BC=9A=E4=B8=8B?= =?UTF-8?q?=E5=8D=95=E8=A7=84=E5=88=99=E8=BE=85=E5=8A=A9=E9=A1=B5=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E4=B8=BA=E7=BF=BB=E9=A1=B5=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/GoodsAccreditController.java | 4 +- .../goods/controller/GoodsSpuController.java | 37 ++++- .../goods/entity/dto/GoodsAccreditExt.java | 22 +++ .../goods/entity/dto/GoodsAccreditQuery.java | 2 + .../goods/entity/vo/GoodsAccreditResult.java | 16 ++ .../goods/mapper/GoodsAccreditMapper.java | 2 + .../goods/service/GoodsAccreditService.java | 2 +- .../impl/GoodsAccreditServiceImpl.java | 140 +++++++++++------- .../mapper/goods/GoodsAccreditMapper.xml | 111 +++++++++----- 9 files changed, 242 insertions(+), 94 deletions(-) diff --git a/src/main/java/com/qs/serve/modules/goods/controller/GoodsAccreditController.java b/src/main/java/com/qs/serve/modules/goods/controller/GoodsAccreditController.java index 8fbcda2f..a76a0a1a 100644 --- a/src/main/java/com/qs/serve/modules/goods/controller/GoodsAccreditController.java +++ b/src/main/java/com/qs/serve/modules/goods/controller/GoodsAccreditController.java @@ -44,8 +44,8 @@ public class GoodsAccreditController { * @return */ @GetMapping("/page") - public R> getPage(GoodsAccreditQuery query){ - List data = goodsAccreditService.queryPage(query); + public R> getPage(GoodsAccreditQuery query){ + PageVo data = goodsAccreditService.queryPage(query); return R.ok(data); } diff --git a/src/main/java/com/qs/serve/modules/goods/controller/GoodsSpuController.java b/src/main/java/com/qs/serve/modules/goods/controller/GoodsSpuController.java index a7c4d968..82ef937c 100644 --- a/src/main/java/com/qs/serve/modules/goods/controller/GoodsSpuController.java +++ b/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 onlyIds = ruleItemDTO.getOnlyCategoryIds(); + List onlyCategoryList = goodsCategoryService.listByIds(onlyIds); + for (GoodsCategory category : onlyCategoryList) { + List childList = goodsCategoryService.list(new LambdaQueryWrapper() + .likeRight(GoodsCategory::getLevelPath,category.getLevelPath()+"_")); + if(CollUtil.isNotEmpty(childList)){ + List childIds = childList.stream().map(a->a.getId().toString()).collect(Collectors.toList()); + onlyIds.addAll(childIds); + } + } + List selectCateIds = param.getSelectCateIds(); + List goodsCategoryList = goodsCategoryService.listByIds(selectCateIds); + for (GoodsCategory category : goodsCategoryList) { + List childList = goodsCategoryService.list(new LambdaQueryWrapper() + .likeRight(GoodsCategory::getLevelPath,category.getLevelPath()+"_")); + if(CollUtil.isNotEmpty(childList)){ + List childIds = childList.stream().map(a->a.getId().toString()).collect(Collectors.toList()); + selectCateIds.addAll(childIds); + } + } + //交集 + Collection ids = cn.hutool.core.collection.CollectionUtil + .intersection(onlyIds, selectCateIds); + List 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); diff --git a/src/main/java/com/qs/serve/modules/goods/entity/dto/GoodsAccreditExt.java b/src/main/java/com/qs/serve/modules/goods/entity/dto/GoodsAccreditExt.java index 182b1134..05732cc7 100644 --- a/src/main/java/com/qs/serve/modules/goods/entity/dto/GoodsAccreditExt.java +++ b/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; } diff --git a/src/main/java/com/qs/serve/modules/goods/entity/dto/GoodsAccreditQuery.java b/src/main/java/com/qs/serve/modules/goods/entity/dto/GoodsAccreditQuery.java index 876177e7..85bf0bad 100644 --- a/src/main/java/com/qs/serve/modules/goods/entity/dto/GoodsAccreditQuery.java +++ b/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 codeList; private Set targetCodeList; diff --git a/src/main/java/com/qs/serve/modules/goods/entity/vo/GoodsAccreditResult.java b/src/main/java/com/qs/serve/modules/goods/entity/vo/GoodsAccreditResult.java index 110b77cf..a23b43f0 100644 --- a/src/main/java/com/qs/serve/modules/goods/entity/vo/GoodsAccreditResult.java +++ b/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; + } diff --git a/src/main/java/com/qs/serve/modules/goods/mapper/GoodsAccreditMapper.java b/src/main/java/com/qs/serve/modules/goods/mapper/GoodsAccreditMapper.java index 1001e16d..ef2df444 100644 --- a/src/main/java/com/qs/serve/modules/goods/mapper/GoodsAccreditMapper.java +++ b/src/main/java/com/qs/serve/modules/goods/mapper/GoodsAccreditMapper.java @@ -21,5 +21,7 @@ public interface GoodsAccreditMapper extends BaseMapper { List queryPage2(@Param("query") GoodsAccreditQuery query); + List queryUnionPage(@Param("query") GoodsAccreditQuery query); + } diff --git a/src/main/java/com/qs/serve/modules/goods/service/GoodsAccreditService.java b/src/main/java/com/qs/serve/modules/goods/service/GoodsAccreditService.java index cb1f99cb..435ee14d 100644 --- a/src/main/java/com/qs/serve/modules/goods/service/GoodsAccreditService.java +++ b/src/main/java/com/qs/serve/modules/goods/service/GoodsAccreditService.java @@ -22,7 +22,7 @@ import java.util.Map; */ public interface GoodsAccreditService extends IService { - List queryPage(GoodsAccreditQuery query); + PageVo queryPage(GoodsAccreditQuery query); void modify(GoodsAccreditBo param); diff --git a/src/main/java/com/qs/serve/modules/goods/service/impl/GoodsAccreditServiceImpl.java b/src/main/java/com/qs/serve/modules/goods/service/impl/GoodsAccreditServiceImpl.java index 5f7d860e..4699fa1c 100644 --- a/src/main/java/com/qs/serve/modules/goods/service/impl/GoodsAccreditServiceImpl.java +++ b/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 queryPage(GoodsAccreditQuery query) { + public PageVo queryPage(GoodsAccreditQuery query) { String productCode = query.getCode(); String productName = query.getName(); String targetCode = query.getTargetCode(); @@ -108,6 +112,18 @@ public class GoodsAccreditServiceImpl extends ServiceImpl targetCodes = new HashSet<>(); + + //拓展人员 + List sysUserList = sysUserMapper.selectList(new LambdaQueryWrapper() + .eq(SysUser::getCode,targetCode) + .or() + .eq(SysUser::getName,targetName)); + if(sysUserList.size()>0){ + for (SysUser user : sysUserList) { + targetCodes.add(user.getCode()); + } + } + List supplierList = supplierMapper.selectList(new LambdaQueryWrapper() .eq(BmsSupplier::getCode,targetCode) .or() @@ -157,63 +173,83 @@ public class GoodsAccreditServiceImpl extends ServiceImpl list = super.baseMapper.queryPage(query); + + PageUtil.startPage(); + + List list = super.baseMapper.queryUnionPage(query); List 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 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 diff --git a/src/main/resources/mapper/goods/GoodsAccreditMapper.xml b/src/main/resources/mapper/goods/GoodsAccreditMapper.xml index 12757587..10a4d7cf 100644 --- a/src/main/resources/mapper/goods/GoodsAccreditMapper.xml +++ b/src/main/resources/mapper/goods/GoodsAccreditMapper.xml @@ -5,37 +5,46 @@ - + + 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` - + - + + + +