问题描述:实现一个可以动态添加,修改,删除的步骤列表。 最后得到同一produc_id下的步骤列表(按照步骤顺序)
数据库设计: id,parent_id,product_id,step_name,create_time,update_time
// 转化List 根据ParentID 从小到大排序。如果ParentID一样则根据ID按照从大到小拍排序,方便取出第一个步骤
private List<Step> SortList( List<Step> origstep){
List<Integer> re= new ArrayList<>();
//origstep.stream().sorted().thenComparing(Live::getAppId, Comparator.reverseOrder()));
List<Step> ss=new ArrayList<>();
//origstep.sort(Comparator.comparing(Step::getId).thenComparing(Step::getParendid, Comparator.reverseOrder()));
ss=origstep.stream().sorted(Comparator.comparing(Step::getParent_id).thenComparing(Step::getId, Comparator.reverseOrder())).collect(Collectors.toList());
return ss;
}
// 查询步骤列表中PID为指定值的步骤列表,并且根据ID倒序排列
private List<Step> getStepsByPid(Long pid,List<Step> origstep){
List<Step> steps= new ArrayList<>();
for (int i=0;i<origstep.size();i++){
if (origstep.get(i).getParent_id()==pid){
steps.add(origstep.get(i));
}
}
List<Step> resteps=steps.stream().sorted(Comparator.comparing(Step::getId).reversed()).collect(Collectors.toList());
return resteps;
}
//按照步骤顺序排序,值写入到类成员变量 sort_step
private List<Step> StepsBySteps(Long id, List<Step> steps,List<Step> resteps){
List<Step> sort_step =new ArrayList<>();
List<Step> ree=new ArrayList<>();
List<Step> res=SortList(steps);
List<Step> ls=getStepsByPid(id,res);
for(Step s:ls){
if (ls.size()>0){
//a.add( s.getId());
resteps.add(s);
System.out.println("ls>0"+s.getId());
// return s.getId();
StepsBySteps(s.getId(),res,resteps);
//a.add(s.getId());
}
else {
System.out.println("else"+res.get(0).getId());
//a.add(res.get(0).getId());
sort_step.add(s);
return resteps;
}
}
return resteps;
}