商品分类逻辑,去除父类

This commit is contained in:
liyj 2025-08-08 17:08:38 +08:00
parent 75e76370a2
commit 98e291dc3e
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){ public Integer getNewActiveCount(DataBaseInfo dataBaseInfo){
String where=dataBaseInfo.getWhere()+" and rule_no in('DD','PS','PM') and range_flag='I'"; 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(), 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.setCategory_name(sxSyncCategory.getItem_clsname());
sxCategoryModel.setBrandName(clsBrandMap.get(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()); SxSyncCategory firstNode=getParentNode(allSxSyncCategories,sxSyncCategory.getCls_parent());
if(null==firstNode){ if(null==firstNode){
sxCategoryModel.setFirst_category_name(""); sxCategoryModel.setFirst_category_name("");
sxCategoryModel.setProduct_type(sxCategoryModel.getCategory_name());
sxCategoryModels.add(sxCategoryModel);
continue;
} }
sxCategoryModel.setParent_name(firstNode.getItem_clsname());//todo 暂时无用 sxCategoryModel.setParent_name(firstNode.getItem_clsname());//todo 暂时无用
//如何存在上级的上级则上级为第二层上上及为第一层 //如何存在上级的上级则上级为第二层上上及为第一层
if(null!=firstNode.getCls_parent()) {//还存在上级 if(StringUtils.isNotEmpty(firstNode.getCls_parent())) {//还存在上级
SxSyncCategory secondNode=getParentNode(allSxSyncCategories,sxSyncCategory.getCls_parent()); SxSyncCategory secondNode=getParentNode(allSxSyncCategories,firstNode.getCls_parent());
if(null!=secondNode && secondNode.getItem_clsno().equals(firstNode.getCls_parent())){ if(null!=secondNode && secondNode.getItem_clsno().equals(firstNode.getCls_parent())){
sxCategoryModel.setFirst_category_name(secondNode.getItem_clsname()); sxCategoryModel.setFirst_category_name(secondNode.getItem_clsname());
sxCategoryModel.setSecond_category_name(firstNode.getItem_clsname()); sxCategoryModel.setSecond_category_name(firstNode.getItem_clsname());
@ -98,9 +101,28 @@ public abstract class SxDataAbstService {
sxCategoryModel.setProduct_type(sxCategoryModel.getCategory_name()); sxCategoryModel.setProduct_type(sxCategoryModel.getCategory_name());
sxCategoryModels.add(sxCategoryModel); sxCategoryModels.add(sxCategoryModel);
} }
sxCategoryModels=filterCategories(sxCategoryModels);
return 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 * @param sxSyncCategories

View File

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