集成oms服务模块
This commit is contained in:
@@ -0,0 +1,80 @@
|
||||
package com.mhd.oms.util;
|
||||
|
||||
import com.mhd.oms.domain.taskOrder.repository.po.PoTaskDetailPO;
|
||||
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.function.Function;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
public class SetGroupUtil{
|
||||
|
||||
public static void main(String[] args) {
|
||||
DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
|
||||
// data list
|
||||
List<PoTaskDetailPO> poTaskDetailPOS = new ArrayList<>();
|
||||
PoTaskDetailPO poTaskDetailPO1 = new PoTaskDetailPO();
|
||||
poTaskDetailPO1.setId(1L);
|
||||
poTaskDetailPO1.setTaskNo("PO202405291113");
|
||||
poTaskDetailPO1.setWarehouseId(1002L);
|
||||
poTaskDetailPO1.setWarehouseName("测试仓库2");
|
||||
poTaskDetailPO1.setShipperId(1001L);
|
||||
poTaskDetailPO1.setShipper("测试货主1");
|
||||
PoTaskDetailPO poTaskDetailPO2 = new PoTaskDetailPO();
|
||||
poTaskDetailPO2.setId(1L);
|
||||
poTaskDetailPO2.setTaskNo("PO202405291113");
|
||||
poTaskDetailPO2.setWarehouseId(1001L);
|
||||
poTaskDetailPO2.setWarehouseName("测试仓库1");
|
||||
poTaskDetailPO2.setShipperId(1001L);
|
||||
poTaskDetailPO2.setShipper("测试货主1");
|
||||
PoTaskDetailPO poTaskDetailPO3 = new PoTaskDetailPO();
|
||||
poTaskDetailPO3.setId(1L);
|
||||
poTaskDetailPO3.setTaskNo("PO202405291113");
|
||||
poTaskDetailPO3.setWarehouseId(1001L);
|
||||
poTaskDetailPO3.setWarehouseName("测试仓库1");
|
||||
poTaskDetailPO3.setShipperId(1001L);
|
||||
poTaskDetailPO3.setShipper("测试货主1");
|
||||
poTaskDetailPOS.add(poTaskDetailPO1);
|
||||
poTaskDetailPOS.add(poTaskDetailPO2);
|
||||
poTaskDetailPOS.add(poTaskDetailPO3);
|
||||
|
||||
|
||||
|
||||
// 进行分组,根据仓库和货主分组
|
||||
Map<String, List<PoTaskDetailPO>> groupMap = groupingBy(poTaskDetailPOS, PoTaskDetailPO::getWarehouseId, PoTaskDetailPO::getShipperId);
|
||||
//打印分组结果
|
||||
groupMap.forEach((k, v) -> {
|
||||
System.out.println(k);
|
||||
System.out.println(v);
|
||||
});
|
||||
}
|
||||
/**
|
||||
* 将数据分组,根据方法引用(bean的get方法)
|
||||
*
|
||||
* @param list 为分组的数据
|
||||
* @param functions get方法数组
|
||||
*/
|
||||
@SafeVarargs
|
||||
public static <T, R> Map<String, List<T>> groupingBy(List<T> list, Function<T, R>... functions) {
|
||||
return list.stream().collect(Collectors.groupingBy(t -> groupingBy(t, functions)));
|
||||
}
|
||||
|
||||
/**
|
||||
* 分组工具根据函数式接口使用分组,将数据根据分组结果进行拆分
|
||||
*/
|
||||
@SafeVarargs
|
||||
public static <T, R> String groupingBy(T t, Function<T, R>... functions) {
|
||||
if (functions == null || functions.length == 0) {
|
||||
throw new NullPointerException("functions数组不可以为空");
|
||||
} else if (functions.length == 1) {
|
||||
return functions[0].apply(t).toString();
|
||||
} else {
|
||||
return Arrays.stream(functions).map(fun -> fun.apply(t).toString()).reduce((str1, str2) -> str1 + "|" + str2).get();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user