商品分类逻辑,去除父类

This commit is contained in:
liyj 2025-08-08 17:08:38 +08:00
parent ce8a386026
commit 04a34e6ed9
3 changed files with 27 additions and 5 deletions

View File

@ -612,7 +612,7 @@ public class SxDataDao extends BaseDao{
public Integer getNewActiveCount(DataBaseInfo dataBaseInfo){
String where=dataBaseInfo.getWhere()+" and rule_no in('DD','PS','PM') and range_flag='I'";
return getBaseTotal(dataBaseInfo.getIp(),dataBaseInfo.getUserName(),dataBaseInfo.getPassword(),dataBaseInfo.getDbPort(),dataBaseInfo.getDataBaseName(),
T_PUB_PLAN_MASTER,where);
T_PUB_PLAN_MASTER+" b",where);
}
/**

View File

@ -74,15 +74,18 @@ public abstract class SxDataAbstService {
sxCategoryModel.setCategory_name(sxSyncCategory.getItem_clsname());
sxCategoryModel.setBrandName(clsBrandMap.get(sxSyncCategory.getItem_clsname()));
//寻找父级
if(null!=sxSyncCategory.getCls_parent()){
if(StringUtils.isNotEmpty(sxSyncCategory.getCls_parent())){
SxSyncCategory firstNode=getParentNode(allSxSyncCategories,sxSyncCategory.getCls_parent());
if(null==firstNode){
sxCategoryModel.setFirst_category_name("");
sxCategoryModel.setProduct_type(sxCategoryModel.getCategory_name());
sxCategoryModels.add(sxCategoryModel);
continue;
}
sxCategoryModel.setParent_name(firstNode.getItem_clsname());//todo 暂时无用
//如何存在上级的上级则上级为第二层上上及为第一层
if(null!=firstNode.getCls_parent()) {//还存在上级
SxSyncCategory secondNode=getParentNode(allSxSyncCategories,sxSyncCategory.getCls_parent());
if(StringUtils.isNotEmpty(firstNode.getCls_parent())) {//还存在上级
SxSyncCategory secondNode=getParentNode(allSxSyncCategories,firstNode.getCls_parent());
if(null!=secondNode && secondNode.getItem_clsno().equals(firstNode.getCls_parent())){
sxCategoryModel.setFirst_category_name(secondNode.getItem_clsname());
sxCategoryModel.setSecond_category_name(firstNode.getItem_clsname());
@ -98,9 +101,28 @@ public abstract class SxDataAbstService {
sxCategoryModel.setProduct_type(sxCategoryModel.getCategory_name());
sxCategoryModels.add(sxCategoryModel);
}
sxCategoryModels=filterCategories(sxCategoryModels);
return sxCategoryModels;
}
public static List<SxCategoryModel> filterCategories(List<SxCategoryModel> categories) {
// 步骤1: 收集所有作为父类出现的名称
Set<String> parentNames = categories.stream()
.map(SxCategoryModel::getFirst_category_name)
.filter(Objects::nonNull)
.collect(Collectors.toSet());
Set<String> rootParents = categories.stream()
.map(SxCategoryModel::getSecond_category_name)
.filter(Objects::nonNull)
.collect(Collectors.toSet());
// 步骤2: 保留叶子节点没有作为父类出现的节点
return categories.stream()
.filter(category -> !parentNames.contains(category.getCategory_name()))
.filter(category -> !rootParents.contains(category.getCategory_name()))
.collect(Collectors.toList());
}
/**
* 通过流查找父节点
* @param sxSyncCategories

View File

@ -728,7 +728,7 @@ public class SxDataServiceImp extends SxDataAbstService implements SxDataService
String where="where 1=1";
Integer total =0;
if(StringUtils.isNotEmpty(commentModel.getSyncTime())){
where+=" and b.start_date>'"+commentModel.getSyncTime()+"' ";
where+=" and b.oper_date>'"+commentModel.getSyncTime()+"' ";
// where+=" or b.oper_date>'"+commentModel.getSyncTime()+"') ";
}
dataBaseInfo.setWhere(where);