Browse Source

feat: 产品规则导入

checkBack
Yen 1 year ago
parent
commit
e1fd2fcbff
  1. 4
      src/main/java/com/qs/serve/common/model/dto/R.java
  2. 1
      src/main/java/com/qs/serve/modules/goods/controller/GoodsAccreditController.java
  3. 19
      src/main/java/com/qs/serve/modules/goods/controller/GoodsRuleController.java
  4. 8
      src/main/java/com/qs/serve/modules/goods/entity/bo/GoodsAccreditImportBo.java
  5. 46
      src/main/java/com/qs/serve/modules/goods/entity/bo/GoodsRuleImportBo.java
  6. 2
      src/main/java/com/qs/serve/modules/goods/service/GoodsRuleService.java
  7. 88
      src/main/java/com/qs/serve/modules/goods/service/impl/GoodsRuleServiceImpl.java

4
src/main/java/com/qs/serve/common/model/dto/R.java

@ -48,6 +48,7 @@ public class R<T> implements Serializable {
private T data; private T data;
public static final int SUCCESS_STATUS = 200; 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 LOGOUT_STATUS = 401;
public static final int FORBIDDEN_STATUS = 403; public static final int FORBIDDEN_STATUS = 403;
public static final int NOT_FOUND_STATUS = 434; public static final int NOT_FOUND_STATUS = 434;
@ -116,6 +117,9 @@ public class R<T> implements Serializable {
return new R<>(FAILED_STATUS,message,null); return new R<>(FAILED_STATUS,message,null);
} }
public static R errorImport(Object data) {
return new R<>(IMPORT_ERROR,"导入异常",data);
}
public static <TYPE> R<TYPE> error(String message,TYPE data) { public static <TYPE> R<TYPE> error(String message,TYPE data) {
return new R<>(FAILED_STATUS,FAILED_TIPS,data); return new R<>(FAILED_STATUS,FAILED_TIPS,data);

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

@ -42,6 +42,7 @@ public class GoodsAccreditController {
* 辅助查询 * 辅助查询
* @param query * @param query
* @return * @return
*
*/ */
@GetMapping("/page") @GetMapping("/page")
public R<PageVo<GoodsAccreditResult>> getPage(GoodsAccreditQuery query){ public R<PageVo<GoodsAccreditResult>> getPage(GoodsAccreditQuery query){

19
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.PageUtil;
import com.qs.serve.common.util.CopierUtil; import com.qs.serve.common.util.CopierUtil;
import com.qs.serve.common.util.StringUtils; 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.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.GoodsRuleBaseDTO;
import com.qs.serve.modules.goods.entity.vo.GoodsRuleVo; import com.qs.serve.modules.goods.entity.vo.GoodsRuleVo;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
@ -62,6 +64,23 @@ public class GoodsRuleController {
return R.ok(param); 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&&param.getCheckOkFlag()){
return R.errorImport(param);
}
goodsRuleService.modify(ruleBo);
return R.ok();
}
/** /**
* 删除 * 删除
* @param ids * @param ids

8
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 {
}

46
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<String> onlyCategoryCodes;
/** 不能选的分类 */
private List<String> notInCategoryCodes;
/** 只能选的SPU */
private List<String> onlySpuCodes;
/** 不能选的SPU */
private List<String> notInSpuCodes;
private Boolean checkOkFlag;
/** 只能选的分类 */
private List<String> errOnlyCategoryCodes;
/** 不能选的分类 */
private List<String> errNotInCategoryCodes;
/** 只能选的SPU */
private List<String> errOnlySpuCodes;
/** 不能选的SPU */
private List<String> errNotInSpuCodes;
}

2
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.GoodsRule;
import com.qs.serve.modules.goods.entity.GoodsRuleItem; 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.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.GoodsRuleBaseDTO;
import com.qs.serve.modules.goods.entity.dto.GoodsRuleItemDTO; import com.qs.serve.modules.goods.entity.dto.GoodsRuleItemDTO;
import com.qs.serve.modules.goods.entity.vo.GoodsRuleVo; import com.qs.serve.modules.goods.entity.vo.GoodsRuleVo;
@ -20,6 +21,7 @@ public interface GoodsRuleService extends IService<GoodsRule> {
void modify(GoodsRuleBo param); void modify(GoodsRuleBo param);
GoodsRuleBo tranGoodsRuleBo(GoodsRuleImportBo ruleImportBo);
GoodsRuleVo getVoById(GoodsRuleBaseDTO baseDTO); GoodsRuleVo getVoById(GoodsRuleBaseDTO baseDTO);

88
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.bms.mapper.BmsSupplierMapper;
import com.qs.serve.modules.goods.entity.*; import com.qs.serve.modules.goods.entity.*;
import com.qs.serve.modules.goods.entity.bo.GoodsRuleBo; 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.GoodsRuleBaseDTO;
import com.qs.serve.modules.goods.entity.dto.GoodsRuleItemDTO; import com.qs.serve.modules.goods.entity.dto.GoodsRuleItemDTO;
import com.qs.serve.modules.goods.entity.vo.GoodsRuleVo; import com.qs.serve.modules.goods.entity.vo.GoodsRuleVo;
@ -57,6 +58,93 @@ public class GoodsRuleServiceImpl extends ServiceImpl<GoodsRuleMapper,GoodsRule>
private GoodsSkuMapper skuMapper; private GoodsSkuMapper skuMapper;
private GoodsCategoryMapper goodsCategoryMapper; private GoodsCategoryMapper goodsCategoryMapper;
@Override
public GoodsRuleBo tranGoodsRuleBo(GoodsRuleImportBo ruleImportBo) {
GoodsRuleBo goodsRuleBo = new GoodsRuleBo();
boolean checkOkFlag = true;
if(CollUtil.isNotEmpty(ruleImportBo.getOnlyCategoryCodes())){
List<GoodsCategory> categoryList = categoryMapper
.selectList(new LambdaQueryWrapper<GoodsCategory>()
.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<String> errCodes = new ArrayList<>();
errCodes.add(code);
if(ruleImportBo.getErrOnlyCategoryCodes()!=null){
errCodes.addAll(ruleImportBo.getErrNotInCategoryCodes());
}
ruleImportBo.setErrOnlyCategoryCodes(errCodes);
}
}
List<String> ids = categoryList.stream().map(a->a.getId().toString()).collect(Collectors.toList());
goodsRuleBo.setOnlyCategoryIds(ids);
}
if(CollUtil.isNotEmpty(ruleImportBo.getNotInCategoryCodes())){
List<GoodsCategory> categoryList = categoryMapper
.selectList(new LambdaQueryWrapper<GoodsCategory>()
.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<String> errCodes = new ArrayList<>();
errCodes.add(code);
if(ruleImportBo.getErrNotInCategoryCodes()!=null){
errCodes.addAll(ruleImportBo.getErrNotInCategoryCodes());
}
ruleImportBo.setErrNotInCategoryCodes(errCodes);
}
}
List<String> ids = categoryList.stream().map(a->a.getId().toString()).collect(Collectors.toList());
goodsRuleBo.setNotInCategoryIds(ids);
}
if(CollUtil.isNotEmpty(ruleImportBo.getOnlySpuCodes())){
List<GoodsSpu> spuList = spuMapper
.selectList(new LambdaQueryWrapper<GoodsSpu>()
.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<String> errCodes = new ArrayList<>();
errCodes.add(code);
if(ruleImportBo.getErrOnlySpuCodes()!=null){
errCodes.addAll(ruleImportBo.getErrOnlySpuCodes());
}
ruleImportBo.setErrOnlySpuCodes(errCodes);
}
}
List<String> ids = spuList.stream().map(a->a.getId().toString()).collect(Collectors.toList());
goodsRuleBo.setOnlySpuIds(ids);
}
if(CollUtil.isNotEmpty(ruleImportBo.getNotInSpuCodes())){
List<GoodsSpu> spuList = spuMapper
.selectList(new LambdaQueryWrapper<GoodsSpu>()
.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<String> errCodes = new ArrayList<>();
errCodes.add(code);
if(ruleImportBo.getErrOnlySpuCodes()!=null){
errCodes.addAll(ruleImportBo.getErrNotInSpuCodes());
}
ruleImportBo.setErrNotInSpuCodes(errCodes);
}
}
List<String> ids = spuList.stream().map(a->a.getId().toString()).collect(Collectors.toList());
goodsRuleBo.setNotInSpuIds(ids);
}
ruleImportBo.setCheckOkFlag(checkOkFlag);
return goodsRuleBo;
}
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void modify(GoodsRuleBo param) { public void modify(GoodsRuleBo param) {

Loading…
Cancel
Save