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