4 changed files with 95 additions and 3 deletions
@ -0,0 +1,76 @@ |
|||||
|
package com.qs.serve.modules.tbs.common.util; |
||||
|
|
||||
|
import com.qs.serve.common.util.Assert; |
||||
|
import com.qs.serve.common.util.CollectionUtil; |
||||
|
import com.qs.serve.modules.tbs.common.dto.CostSortWrapper; |
||||
|
import com.qs.serve.modules.tbs.entity.TbsActivity; |
||||
|
import com.qs.serve.modules.tbs.entity.TbsBudgetCondition; |
||||
|
import com.qs.serve.modules.tbs.entity.TbsScheduleItemBudget; |
||||
|
import lombok.Data; |
||||
|
import lombok.extern.slf4j.Slf4j; |
||||
|
|
||||
|
import java.time.Duration; |
||||
|
import java.util.ArrayList; |
||||
|
import java.util.Collections; |
||||
|
import java.util.List; |
||||
|
|
||||
|
/** |
||||
|
* 用于排序 |
||||
|
* @author YenHex |
||||
|
* @since 2023/5/18 |
||||
|
*/ |
||||
|
@Slf4j |
||||
|
@Data |
||||
|
public class CostSort2WrapperUtil { |
||||
|
|
||||
|
public static List<TbsScheduleItemBudget> sort(List<TbsScheduleItemBudget> list){ |
||||
|
List<TbsScheduleItemBudget> listResult = new ArrayList<>(); |
||||
|
//有无科目
|
||||
|
List<TbsScheduleItemBudget> sortOfSubject = new ArrayList<>(); |
||||
|
List<TbsScheduleItemBudget> sortOfNoSubject = new ArrayList<>(); |
||||
|
for (TbsScheduleItemBudget itemBudget : list) { |
||||
|
if( itemBudget.getBudgetSubjectId() != null && !itemBudget.getBudgetSubjectId().equals(0L)){ |
||||
|
sortOfSubject.add(itemBudget); |
||||
|
}else { |
||||
|
sortOfNoSubject.add(itemBudget); |
||||
|
} |
||||
|
} |
||||
|
List<TbsScheduleItemBudget> list1 = sortOfCondition(sortOfSubject); |
||||
|
List<TbsScheduleItemBudget> list2 = sortOfCondition(sortOfNoSubject); |
||||
|
listResult.addAll(list1); |
||||
|
listResult.addAll(list2); |
||||
|
return listResult; |
||||
|
} |
||||
|
|
||||
|
public static List<TbsScheduleItemBudget> sortOfCondition(List<TbsScheduleItemBudget> list){ |
||||
|
List<TbsScheduleItemBudget> listResult = new ArrayList<>(); |
||||
|
//条件排序
|
||||
|
List<TbsScheduleItemBudget> sortOfCondition = new ArrayList<>(); |
||||
|
List<TbsScheduleItemBudget> sortOfNoCondition = new ArrayList<>(); |
||||
|
for (TbsScheduleItemBudget scheduleItemBudget : list) { |
||||
|
if(scheduleItemBudget.getBudgetConditionFlag().equals(1)){ |
||||
|
sortOfCondition.add(scheduleItemBudget); |
||||
|
}else { |
||||
|
sortOfNoCondition.add(scheduleItemBudget); |
||||
|
} |
||||
|
} |
||||
|
//商品排序
|
||||
|
Collections.sort(list, (o1, o2) -> { |
||||
|
int len1 = o1.getConditionGoodsIds().split("_").length; |
||||
|
int len2 = o2.getConditionGoodsIds().split("_").length; |
||||
|
return len2 - len1; |
||||
|
}); |
||||
|
|
||||
|
//时间区间内,区间长度取最短
|
||||
|
Collections.sort(list, (o1, o2) -> { |
||||
|
Long day1 = Duration.between(o1.getStartDate(), o1.getEndDate()).toDays(); |
||||
|
Long day2 = Duration.between(o2.getStartDate(), o2.getEndDate()).toDays(); |
||||
|
log.debug("时间区间相同,day1:{} , day2:{}",day1,day2); |
||||
|
return (int) (day1-day2); |
||||
|
}); |
||||
|
listResult.addAll(sortOfNoCondition); |
||||
|
listResult.addAll(sortOfCondition); |
||||
|
return listResult; |
||||
|
} |
||||
|
|
||||
|
} |
Loading…
Reference in new issue