Browse Source

feat: 添加下单规则查询拦截

fix:修复birLog错误
checkBack
Yen 1 year ago
parent
commit
5d6d467bd8
  1. 2
      src/main/java/com/qs/serve/modules/bir/consts/BirActivityCenterGoodsUtil.java
  2. 6
      src/main/java/com/qs/serve/modules/bms/entity/BmsSupplier.java
  3. 63
      src/main/java/com/qs/serve/modules/goods/controller/GoodsSpuController.java
  4. 2
      src/main/java/com/qs/serve/modules/goods/controller/api/GoodsSpuApi.java
  5. 8
      src/main/java/com/qs/serve/modules/goods/entity/GoodsSpu.java
  6. 26
      src/main/java/com/qs/serve/modules/goods/entity/dto/GoodsRuleItemDTO.java
  7. 9
      src/main/java/com/qs/serve/modules/goods/service/GoodsRuleService.java
  8. 58
      src/main/java/com/qs/serve/modules/goods/service/impl/GoodsRuleServiceImpl.java
  9. 14
      src/main/java/com/qs/serve/modules/tbs/entity/TbsCostBirLog.java
  10. 5
      src/main/java/com/qs/serve/modules/vtb/service/VtbVerificationApplication.java
  11. 6
      src/main/resources/mapper/goods/GoodsSpuMapper.xml

2
src/main/java/com/qs/serve/modules/bir/consts/BirActivityCenterGoodsUtil.java

@ -32,7 +32,7 @@ public class BirActivityCenterGoodsUtil {
for (Long costId : costIds) {
TbsCostBirLogMapper birLogMapper = SpringUtils.getBean(TbsCostBirLogMapper.class);
TbsCostBirLog birLog = new TbsCostBirLog();
birLog.setId(costId);
birLog.setCostId(costId);
birLogMapper.insert(birLog);
}
}

6
src/main/java/com/qs/serve/modules/bms/entity/BmsSupplier.java

@ -5,6 +5,8 @@ import java.time.LocalDateTime;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
@ -373,7 +375,7 @@ public class BmsSupplier implements Serializable {
list.add(this.getRegion2Second());
list.add(this.getRegion2Third());
list.add(this.getRegion2Fourthly());
return list;
return list.stream().filter(Objects::nonNull).collect(Collectors.toList());
}
public List<String> listSaleRegionIds(){
@ -382,7 +384,7 @@ public class BmsSupplier implements Serializable {
list.add(this.getRegionSecond());
list.add(this.getRegionThird());
list.add(this.getRegionFourthly());
return list;
return list.stream().filter(Objects::nonNull).collect(Collectors.toList());
}
public HisUserSupplier toHisUserSupplier(String userId,Integer type){

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

@ -1,5 +1,6 @@
package com.qs.serve.modules.goods.controller;
import cn.hutool.core.collection.CollUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.qs.serve.common.model.annotation.SysLog;
@ -8,10 +9,14 @@ import com.qs.serve.common.model.dto.R;
import com.qs.serve.common.model.enums.BizType;
import com.qs.serve.common.model.enums.SystemModule;
import com.qs.serve.common.util.*;
import com.qs.serve.modules.bms.entity.BmsSupplier;
import com.qs.serve.modules.bms.service.BmsSubjectService;
import com.qs.serve.modules.bms.service.BmsSupplierService;
import com.qs.serve.modules.erp.mapper.ErpDispatchDataMapper;
import com.qs.serve.modules.goods.common.GoodsConst;
import com.qs.serve.modules.goods.entity.*;
import com.qs.serve.modules.goods.entity.bo.*;
import com.qs.serve.modules.goods.entity.dto.GoodsRuleItemDTO;
import com.qs.serve.modules.goods.entity.dto.InventoryCusPrice;
import com.qs.serve.modules.goods.entity.so.GoodsHisOrderQuery;
import com.qs.serve.modules.goods.entity.so.InventoryCusPriceQuery;
@ -36,10 +41,7 @@ import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Locale;
import java.util.*;
import java.util.stream.Collectors;
/**
@ -54,6 +56,7 @@ import java.util.stream.Collectors;
public class GoodsSpuController {
private GoodsSpuMapper goodsSpuMapper;
private GoodsRuleService goodsRuleService;
private GoodsSkuService goodsSkuService;
private GoodsSpuService goodsSpuService;
private GoodsSpuSpecService goodsSpuSpecService;
@ -61,6 +64,7 @@ public class GoodsSpuController {
private GoodsCategoryRuleService goodsCategoryRuleService;
private TbsActivityGoodsService activityGoodsService;
private TbsBudgetConditionService budgetConditionService;
private BmsSupplierService bmsSupplierService;
private GoodsCategoryService goodsCategoryService;
private SeeYonRequestBaseService seeYonRequestBaseService;
private ErpDispatchDataMapper dispatchDataMapper;
@ -125,6 +129,57 @@ public class GoodsSpuController {
param.setSelectNotIntCateIds(Arrays.asList(categoryRule.getIgnoreBrandIds()));
log.warn("setSelectNotIntCateIds {}",JsonUtil.objectToJson(param));
}
BmsSupplier supplier = bmsSupplierService.getByNameOrCode(param.getSupplierCode());
if(supplier==null){
return R.error("供应商不存在或停用");
}
//规则设置
List<GoodsRuleItem> ruleItems = goodsRuleService.listBySupplierId(supplier.getId());
GoodsRuleItemDTO ruleItemDTO = goodsRuleService.buildGoodsRuleItemDTO(ruleItems);
if(ruleItemDTO!=null){
if(CollUtil.isEmpty(param.getSelectNotIntCateIds())){
param.setSelectNotIntCateIds(ruleItemDTO.getNotInCategoryIds());
}else if (ruleItemDTO.getNotInCategoryIds()!=null){
param.getSelectNotIntCateIds().addAll(ruleItemDTO.getNotInCategoryIds());
}
if (CollUtil.isEmpty(param.getSelectCateIds())){
param.setSelectCateIds(ruleItemDTO.getOnlyCategoryIds());
}else if (CollUtil.isNotEmpty(ruleItemDTO.getOnlyCategoryIds())){
//交集
Collection<String> ids = cn.hutool.core.collection.CollectionUtil
.intersection(ruleItemDTO.getOnlyCategoryIds(), param.getSelectCateIds());
List<String> idsList = new ArrayList<>();
idsList.addAll(ids);
param.setSelectCateIds(idsList);
}
if (CollUtil.isEmpty(param.getSelectIds())){
List<Long> ids = ruleItemDTO.getOnlySpuIds().stream().map(Long::parseLong).collect(Collectors.toList());
param.setSelectIds(ids);
}else if (CollUtil.isNotEmpty(ruleItemDTO.getOnlySpuIds())){
List<Long> ids = ruleItemDTO.getOnlySpuIds().stream().map(Long::parseLong).collect(Collectors.toList());
//交集
Collection<Long> id2s = cn.hutool.core.collection.CollectionUtil
.intersection(ids, param.getSelectIds());
List<Long> idsList = new ArrayList<>();
idsList.addAll(id2s);
param.setSelectIds(idsList);
}
if (CollUtil.isEmpty(param.getSelectNotInIds())){
List<Long> ids = ruleItemDTO.getNotInSpuIds().stream().map(Long::parseLong).collect(Collectors.toList());
param.setSelectNotInIds(ids);
}else if (CollUtil.isNotEmpty(ruleItemDTO.getOnlySpuIds())){
List<Long> ids = ruleItemDTO.getNotInSpuIds().stream().map(Long::parseLong).collect(Collectors.toList());
param.getSelectNotInIds().addAll(ids);
}
}
Long total = goodsSpuService.selectCountSkuJoinSpuList(param);
if(total<1){
return R.byEmptyList();

2
src/main/java/com/qs/serve/modules/goods/controller/api/GoodsSpuApi.java

@ -61,7 +61,7 @@ public class GoodsSpuApi {
.or().eq(GoodsSpu::getCategoryThird,selectCateId);
});
}
List<Long> selectCateIds = param.getSelectCateIds();
List<String> selectCateIds = param.getSelectCateIds();
if(selectCateIds!=null&&selectCateIds.size()>0){
spuWrapper.and(qw->{
qw.in(GoodsSpu::getCategoryFirst,selectCateIds)

8
src/main/java/com/qs/serve/modules/goods/entity/GoodsSpu.java

@ -160,11 +160,17 @@ public class GoodsSpu implements Serializable {
private List<Long> selectIds;
@TableField(exist = false)
private List<Long> selectCateIds;
private List<Long> selectNotInIds;
@TableField(exist = false)
private List<String> selectCateIds;
@TableField(exist = false)
private List<String> selectNotIntCateIds;
@TableField(exist = false)
private List<String> selectNotInSpuIds;
@TableField(exist = false)
private Integer selectSpecialFlag;

26
src/main/java/com/qs/serve/modules/goods/entity/dto/GoodsRuleItemDTO.java

@ -0,0 +1,26 @@
package com.qs.serve.modules.goods.entity.dto;
import lombok.Data;
import java.util.List;
/**
* @author YenHex
* @since 2024/3/28
*/
@Data
public class GoodsRuleItemDTO {
/** 只能选的分类 */
private List<String> onlyCategoryIds;
/** 不能选的分类 */
private List<String> notInCategoryIds;
/** 只能选的SPU */
private List<String> onlySpuIds;
/** 不能选的SPU */
private List<String> notInSpuIds;
}

9
src/main/java/com/qs/serve/modules/goods/service/GoodsRuleService.java

@ -2,10 +2,14 @@ package com.qs.serve.modules.goods.service;
import com.baomidou.mybatisplus.extension.service.IService;
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.dto.GoodsRuleBaseDTO;
import com.qs.serve.modules.goods.entity.dto.GoodsRuleItemDTO;
import com.qs.serve.modules.goods.entity.vo.GoodsRuleVo;
import java.util.List;
/**
* 规则 服务接口
* @author YenHex
@ -18,5 +22,10 @@ public interface GoodsRuleService extends IService<GoodsRule> {
GoodsRuleVo getVoById(GoodsRuleBaseDTO baseDTO);
List<GoodsRuleItem> listBySupplierId(String supplierId);
GoodsRuleItemDTO buildGoodsRuleItemDTO(List<GoodsRuleItem> ruleItems);
}

58
src/main/java/com/qs/serve/modules/goods/service/impl/GoodsRuleServiceImpl.java

@ -16,18 +16,21 @@ import com.qs.serve.modules.goods.entity.GoodsRuleItem;
import com.qs.serve.modules.goods.entity.GoodsSpu;
import com.qs.serve.modules.goods.entity.bo.GoodsRuleBo;
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;
import com.qs.serve.modules.goods.mapper.GoodsCategoryMapper;
import com.qs.serve.modules.goods.mapper.GoodsSpuMapper;
import com.qs.serve.modules.goods.service.GoodsRuleItemService;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.jetbrains.annotations.NotNull;
import org.springframework.stereotype.Service;
import com.qs.serve.modules.goods.entity.GoodsRule;
import com.qs.serve.modules.goods.service.GoodsRuleService;
import com.qs.serve.modules.goods.mapper.GoodsRuleMapper;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
@ -182,6 +185,61 @@ public class GoodsRuleServiceImpl extends ServiceImpl<GoodsRuleMapper,GoodsRule>
return null;
}
@Override
public List<GoodsRuleItem> listBySupplierId(String supplierId) {
BmsSupplier supplier = supplierMapper.selectById(supplierId);
List<GoodsRule> goodsRules = this.list(new LambdaQueryWrapper<GoodsRule>()
.eq(GoodsRule::getSupplierId,supplierId)
);
List<String> bizRegionIds = supplier.listBizRegionIds();
bizRegionIds.add("#");
List<String> saleRegionIds = supplier.listSaleRegionIds();
saleRegionIds.add("#");
List<GoodsRule> bySaleRegion = this.list(new LambdaQueryWrapper<GoodsRule>()
.eq(GoodsRule::getSaleRegionId,saleRegionIds)
);
goodsRules.addAll(bySaleRegion);
List<GoodsRule> byBizRegion = this.list(new LambdaQueryWrapper<GoodsRule>()
.eq(GoodsRule::getBizRegionId,bizRegionIds)
);
goodsRules.addAll(byBizRegion);
List<Long> ruleIds = goodsRules.stream().map(GoodsRule::getId).collect(Collectors.toList());
if(CollUtil.isNotEmpty(ruleIds)){
List<GoodsRuleItem> ruleItems = goodsRuleItemService.list(new LambdaQueryWrapper<GoodsRuleItem>()
.eq(GoodsRuleItem::getRuleId,ruleIds)
);
return ruleItems;
}
return null;
}
@Override
public GoodsRuleItemDTO buildGoodsRuleItemDTO(List<GoodsRuleItem> ruleItems) {
if (CollUtil.isNotEmpty(ruleItems)){
GoodsRuleItemDTO dto = new GoodsRuleItemDTO();
Map<Integer,List<GoodsRuleItem>> map = ruleItems.stream()
.collect(Collectors.groupingBy(GoodsRuleItem::getTargetType));
dto.setOnlyCategoryIds(this.getRuleStrings(map.get(1)));
dto.setNotInCategoryIds(this.getRuleStrings(map.get(2)));
dto.setOnlySpuIds(this.getRuleStrings(map.get(3)));
dto.setNotInSpuIds(this.getRuleStrings(map.get(4)));
return dto;
}
return null;
}
private List<String> getRuleStrings(List<GoodsRuleItem> list) {
if(CollUtil.isEmpty(list)){
return null;
}
return list.stream().map(a->a.getId()+"").collect(Collectors.toList());
}
private GoodsRule getGoodsRule(GoodsRuleBaseDTO param) {
GoodsRule goodsRule = null;
if(param.getSupplierId()!=null){

14
src/main/java/com/qs/serve/modules/tbs/entity/TbsCostBirLog.java

@ -68,19 +68,5 @@ public class TbsCostBirLog implements Serializable {
private String updateBy;
public static TbsCostBirLog toNewObject(TbsCostBirLog source){
TbsCostBirLog costBirLog = new TbsCostBirLog();
costBirLog.setId(source.getId());
costBirLog.setCostId(source.getCostId());
costBirLog.setStatus(source.getStatus());
costBirLog.setCreateTime(source.getCreateTime());
costBirLog.setUpdateTime(source.getUpdateTime());
costBirLog.setTenantId(source.getTenantId());
costBirLog.setDelFlag(source.getDelFlag());
costBirLog.setCreateBy(source.getCreateBy());
costBirLog.setUpdateBy(source.getUpdateBy());
return costBirLog;
}
}

5
src/main/java/com/qs/serve/modules/vtb/service/VtbVerificationApplication.java

@ -74,9 +74,14 @@ public class VtbVerificationApplication {
//临时测试
boolean devFlag = false;
VtbVerification verification = vtbVerificationService.getById(affairCommit.getCostApplyId());
if(!verification.getVerificationState().equals(VtbVerificationState.Commiting.getCode())){
VtbVerificationOperationServiceImpl optSvc = SpringUtils.getBean(VtbVerificationOperationServiceImpl.class);
optSvc.runCompensate(verification.getId()+"");
verification = vtbVerificationService.getById(affairCommit.getCostApplyId());
if(!verification.getVerificationState().equals(VtbVerificationState.Commiting.getCode())){
Assert.throwEx("费用申请处于未非审批状态!");
}
}
List<VtbVerificationSubjectCenter> verificationSubjectCenterList = vtbVerificationSubjectCenterService.listByVerificationId(verification.getId());
List<VtbVerificationSubject> verificationSubjects = vtbVerificationSubjectService.listByVerificationId(verification.getId());
//检测参数的金额

6
src/main/resources/mapper/goods/GoodsSpuMapper.xml

@ -131,6 +131,12 @@
#{selectId}
</foreach>
</if>
<if test="query.selectNotInIds!=null and query.selectNotInIds.size > 0">
and `goods_spu`.`id` not in
<foreach collection="query.selectNotInIds" item ="selectId" index="i" open="(" close=")" separator=",">
#{selectId}
</foreach>
</if>
<if test="query.selectCateIds!=null and query.selectCateIds.size > 0">
and (`goods_spu`.`category_first` in
<foreach collection="query.selectCateIds" item="selectId" index="i" open="(" close=")" separator=",">

Loading…
Cancel
Save