From e1fd2fcbff71021a97cb8790dfa6d52278bbba35 Mon Sep 17 00:00:00 2001 From: Yen Date: Mon, 22 Jul 2024 16:18:25 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E4=BA=A7=E5=93=81=E8=A7=84=E5=88=99?= =?UTF-8?q?=E5=AF=BC=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/qs/serve/common/model/dto/R.java | 4 + .../controller/GoodsAccreditController.java | 1 + .../goods/controller/GoodsRuleController.java | 19 ++++ .../entity/bo/GoodsAccreditImportBo.java | 8 ++ .../goods/entity/bo/GoodsRuleImportBo.java | 46 ++++++++++ .../goods/service/GoodsRuleService.java | 2 + .../service/impl/GoodsRuleServiceImpl.java | 88 +++++++++++++++++++ 7 files changed, 168 insertions(+) create mode 100644 src/main/java/com/qs/serve/modules/goods/entity/bo/GoodsAccreditImportBo.java create mode 100644 src/main/java/com/qs/serve/modules/goods/entity/bo/GoodsRuleImportBo.java diff --git a/src/main/java/com/qs/serve/common/model/dto/R.java b/src/main/java/com/qs/serve/common/model/dto/R.java index 565cff0f..bf6f27b1 100644 --- a/src/main/java/com/qs/serve/common/model/dto/R.java +++ b/src/main/java/com/qs/serve/common/model/dto/R.java @@ -48,6 +48,7 @@ public class R implements Serializable { private T data; public static final int SUCCESS_STATUS = 200; + public static final int IMPORT_ERROR = 201; public static final int LOGOUT_STATUS = 401; public static final int FORBIDDEN_STATUS = 403; public static final int NOT_FOUND_STATUS = 434; @@ -116,6 +117,9 @@ public class R implements Serializable { return new R<>(FAILED_STATUS,message,null); } + public static R errorImport(Object data) { + return new R<>(IMPORT_ERROR,"导入异常",data); + } public static R error(String message,TYPE data) { return new R<>(FAILED_STATUS,FAILED_TIPS,data); 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 46c7e1d6..245eed08 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 @@ -42,6 +42,7 @@ public class GoodsAccreditController { * 辅助查询 * @param query * @return + * */ @GetMapping("/page") public R> getPage(GoodsAccreditQuery query){ diff --git a/src/main/java/com/qs/serve/modules/goods/controller/GoodsRuleController.java b/src/main/java/com/qs/serve/modules/goods/controller/GoodsRuleController.java index 7b7fface..69037119 100644 --- a/src/main/java/com/qs/serve/modules/goods/controller/GoodsRuleController.java +++ b/src/main/java/com/qs/serve/modules/goods/controller/GoodsRuleController.java @@ -9,7 +9,9 @@ import com.qs.serve.common.model.enums.SystemModule; import com.qs.serve.common.util.PageUtil; import com.qs.serve.common.util.CopierUtil; import com.qs.serve.common.util.StringUtils; +import com.qs.serve.modules.goods.entity.GoodsCategory; import com.qs.serve.modules.goods.entity.bo.GoodsRuleBo; +import com.qs.serve.modules.goods.entity.bo.GoodsRuleImportBo; import com.qs.serve.modules.goods.entity.dto.GoodsRuleBaseDTO; import com.qs.serve.modules.goods.entity.vo.GoodsRuleVo; import lombok.AllArgsConstructor; @@ -62,6 +64,23 @@ public class GoodsRuleController { return R.ok(param); } + /** + * + * @param param + * @return + */ + @PostMapping("/import") + @SysLog(module = SystemModule.GOODS, title = "规则", biz = BizType.INSERT) + public R importData(@RequestBody @Valid GoodsRuleImportBo param){ + // 转换成GoodsRuleBo + GoodsRuleBo ruleBo = goodsRuleService.tranGoodsRuleBo(param); + if(param.getCheckOkFlag()!=null&¶m.getCheckOkFlag()){ + return R.errorImport(param); + } + goodsRuleService.modify(ruleBo); + return R.ok(); + } + /** * 删除 * @param ids diff --git a/src/main/java/com/qs/serve/modules/goods/entity/bo/GoodsAccreditImportBo.java b/src/main/java/com/qs/serve/modules/goods/entity/bo/GoodsAccreditImportBo.java new file mode 100644 index 00000000..b021ecb6 --- /dev/null +++ b/src/main/java/com/qs/serve/modules/goods/entity/bo/GoodsAccreditImportBo.java @@ -0,0 +1,8 @@ +package com.qs.serve.modules.goods.entity.bo; + +/** + * @author YenHex + * @since 2024/7/22 + */ +public class GoodsAccreditImportBo { +} diff --git a/src/main/java/com/qs/serve/modules/goods/entity/bo/GoodsRuleImportBo.java b/src/main/java/com/qs/serve/modules/goods/entity/bo/GoodsRuleImportBo.java new file mode 100644 index 00000000..33360019 --- /dev/null +++ b/src/main/java/com/qs/serve/modules/goods/entity/bo/GoodsRuleImportBo.java @@ -0,0 +1,46 @@ +package com.qs.serve.modules.goods.entity.bo; + +import com.qs.serve.modules.goods.entity.dto.GoodsRuleBaseDTO; +import lombok.Data; + +import java.util.List; + +/** + * @author YenHex + * @since 2024/3/22 + */ +@Data +public class GoodsRuleImportBo extends GoodsRuleBaseDTO { + + /** 规则ID(更新必传) */ + private Long ruleId; + + /** 备注 */ + private String remark; + + /** 只能选的分类 */ + private List onlyCategoryCodes; + + /** 不能选的分类 */ + private List notInCategoryCodes; + + /** 只能选的SPU */ + private List onlySpuCodes; + + /** 不能选的SPU */ + private List notInSpuCodes; + + private Boolean checkOkFlag; + + /** 只能选的分类 */ + private List errOnlyCategoryCodes; + + /** 不能选的分类 */ + private List errNotInCategoryCodes; + + /** 只能选的SPU */ + private List errOnlySpuCodes; + + /** 不能选的SPU */ + private List errNotInSpuCodes; +} diff --git a/src/main/java/com/qs/serve/modules/goods/service/GoodsRuleService.java b/src/main/java/com/qs/serve/modules/goods/service/GoodsRuleService.java index 1ac79f97..40cf1d38 100644 --- a/src/main/java/com/qs/serve/modules/goods/service/GoodsRuleService.java +++ b/src/main/java/com/qs/serve/modules/goods/service/GoodsRuleService.java @@ -5,6 +5,7 @@ import com.qs.serve.common.model.dto.SimpleKeyValue; import com.qs.serve.modules.goods.entity.GoodsRule; import com.qs.serve.modules.goods.entity.GoodsRuleItem; import com.qs.serve.modules.goods.entity.bo.GoodsRuleBo; +import com.qs.serve.modules.goods.entity.bo.GoodsRuleImportBo; import com.qs.serve.modules.goods.entity.dto.GoodsRuleBaseDTO; import com.qs.serve.modules.goods.entity.dto.GoodsRuleItemDTO; import com.qs.serve.modules.goods.entity.vo.GoodsRuleVo; @@ -20,6 +21,7 @@ public interface GoodsRuleService extends IService { void modify(GoodsRuleBo param); + GoodsRuleBo tranGoodsRuleBo(GoodsRuleImportBo ruleImportBo); GoodsRuleVo getVoById(GoodsRuleBaseDTO baseDTO); diff --git a/src/main/java/com/qs/serve/modules/goods/service/impl/GoodsRuleServiceImpl.java b/src/main/java/com/qs/serve/modules/goods/service/impl/GoodsRuleServiceImpl.java index b8cb48c4..388ea09e 100644 --- a/src/main/java/com/qs/serve/modules/goods/service/impl/GoodsRuleServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/goods/service/impl/GoodsRuleServiceImpl.java @@ -15,6 +15,7 @@ import com.qs.serve.modules.bms.mapper.BmsRegionMapper; import com.qs.serve.modules.bms.mapper.BmsSupplierMapper; import com.qs.serve.modules.goods.entity.*; import com.qs.serve.modules.goods.entity.bo.GoodsRuleBo; +import com.qs.serve.modules.goods.entity.bo.GoodsRuleImportBo; import com.qs.serve.modules.goods.entity.dto.GoodsRuleBaseDTO; import com.qs.serve.modules.goods.entity.dto.GoodsRuleItemDTO; import com.qs.serve.modules.goods.entity.vo.GoodsRuleVo; @@ -57,6 +58,93 @@ public class GoodsRuleServiceImpl extends ServiceImpl private GoodsSkuMapper skuMapper; private GoodsCategoryMapper goodsCategoryMapper; + @Override + public GoodsRuleBo tranGoodsRuleBo(GoodsRuleImportBo ruleImportBo) { + GoodsRuleBo goodsRuleBo = new GoodsRuleBo(); + boolean checkOkFlag = true; + if(CollUtil.isNotEmpty(ruleImportBo.getOnlyCategoryCodes())){ + List categoryList = categoryMapper + .selectList(new LambdaQueryWrapper() + .in(GoodsCategory::getCode,ruleImportBo.getOnlyCategoryCodes())); + for (String code : ruleImportBo.getOnlyCategoryCodes()) { + boolean mch = categoryList.stream().anyMatch(a->a.getCode().equals(code)); + if(!mch){ + checkOkFlag = false; + List errCodes = new ArrayList<>(); + errCodes.add(code); + if(ruleImportBo.getErrOnlyCategoryCodes()!=null){ + errCodes.addAll(ruleImportBo.getErrNotInCategoryCodes()); + } + ruleImportBo.setErrOnlyCategoryCodes(errCodes); + } + } + List ids = categoryList.stream().map(a->a.getId().toString()).collect(Collectors.toList()); + goodsRuleBo.setOnlyCategoryIds(ids); + } + + if(CollUtil.isNotEmpty(ruleImportBo.getNotInCategoryCodes())){ + List categoryList = categoryMapper + .selectList(new LambdaQueryWrapper() + .in(GoodsCategory::getCode,ruleImportBo.getNotInCategoryCodes())); + for (String code : ruleImportBo.getNotInCategoryCodes()) { + boolean mch = categoryList.stream().anyMatch(a->a.getCode().equals(code)); + if(!mch){ + checkOkFlag = false; + List errCodes = new ArrayList<>(); + errCodes.add(code); + if(ruleImportBo.getErrNotInCategoryCodes()!=null){ + errCodes.addAll(ruleImportBo.getErrNotInCategoryCodes()); + } + ruleImportBo.setErrNotInCategoryCodes(errCodes); + } + } + List ids = categoryList.stream().map(a->a.getId().toString()).collect(Collectors.toList()); + goodsRuleBo.setNotInCategoryIds(ids); + } + + if(CollUtil.isNotEmpty(ruleImportBo.getOnlySpuCodes())){ + List spuList = spuMapper + .selectList(new LambdaQueryWrapper() + .in(GoodsSpu::getSpuCode,ruleImportBo.getOnlySpuCodes())); + for (String code : ruleImportBo.getOnlySpuCodes()) { + boolean mch = spuList.stream().anyMatch(a->a.getSpuCode().equals(code)); + if(!mch){ + checkOkFlag = false; + List errCodes = new ArrayList<>(); + errCodes.add(code); + if(ruleImportBo.getErrOnlySpuCodes()!=null){ + errCodes.addAll(ruleImportBo.getErrOnlySpuCodes()); + } + ruleImportBo.setErrOnlySpuCodes(errCodes); + } + } + List ids = spuList.stream().map(a->a.getId().toString()).collect(Collectors.toList()); + goodsRuleBo.setOnlySpuIds(ids); + } + + if(CollUtil.isNotEmpty(ruleImportBo.getNotInSpuCodes())){ + List spuList = spuMapper + .selectList(new LambdaQueryWrapper() + .in(GoodsSpu::getSpuCode,ruleImportBo.getNotInSpuCodes())); + for (String code : ruleImportBo.getNotInSpuCodes()) { + boolean mch = spuList.stream().anyMatch(a->a.getSpuCode().equals(code)); + if(!mch){ + checkOkFlag = false; + List errCodes = new ArrayList<>(); + errCodes.add(code); + if(ruleImportBo.getErrOnlySpuCodes()!=null){ + errCodes.addAll(ruleImportBo.getErrNotInSpuCodes()); + } + ruleImportBo.setErrNotInSpuCodes(errCodes); + } + } + List ids = spuList.stream().map(a->a.getId().toString()).collect(Collectors.toList()); + goodsRuleBo.setNotInSpuIds(ids); + } + ruleImportBo.setCheckOkFlag(checkOkFlag); + return goodsRuleBo; + } + @Override @Transactional(rollbackFor = Exception.class) public void modify(GoodsRuleBo param) {