|  |  | 
 |  |  |  | 
 |  |  |  | 
 |  |  | import com.zy.asrs.framework.common.Cools; | 
 |  |  | import com.zy.asrs.wcs.common.constant.Constants; | 
 |  |  |  | 
 |  |  | import javax.servlet.http.HttpServletResponse; | 
 |  |  | import java.util.ArrayList; | 
 |  |  | import java.util.List; | 
 |  |  | import java.util.Optional; | 
 |  |  | import java.util.function.BiConsumer; | 
 |  |  | import java.util.function.Function; | 
 |  |  |  | 
 |  |  | /** | 
 |  |  |  * Created by vincent on 2023/3/14 | 
 |  |  |  */ | 
 |  |  | public class Utils { | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * List转为树形结构 | 
 |  |  |      * | 
 |  |  |      * @param data           List | 
 |  |  |      * @param parentId       顶级的parentId | 
 |  |  |      * @param parentIdMapper 获取parentId的Function | 
 |  |  |      * @param idMapper       获取id的Function | 
 |  |  |      * @param consumer       赋值children的Consumer | 
 |  |  |      * @param <T>            数据的类型 | 
 |  |  |      * @param <R>            parentId的类型 | 
 |  |  |      * @return List<T> | 
 |  |  |      */ | 
 |  |  |     public static <T, R> List<T> toTreeData(List<T> data, | 
 |  |  |                                             R parentId, | 
 |  |  |                                             Function<? super T, ? extends R> parentIdMapper, | 
 |  |  |                                             Function<? super T, ? extends R> idMapper, | 
 |  |  |                                             BiConsumer<T, List<T>> consumer) { | 
 |  |  |         List<T> result = new ArrayList<>(); | 
 |  |  |         for (T d : data) { | 
 |  |  |             R dParentId = parentIdMapper.apply(d); | 
 |  |  |             if (parentId.equals(dParentId)) { | 
 |  |  |                 R dId = idMapper.apply(d); | 
 |  |  |                 List<T> children = toTreeData(data, dId, parentIdMapper, idMapper, consumer); | 
 |  |  |                 consumer.accept(d, children); | 
 |  |  |                 result.add(d); | 
 |  |  |             } | 
 |  |  |         } | 
 |  |  |         return result; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * 数组倒序 | 
 |  |  | 
 |  |  |         } | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     public static void cors(HttpServletResponse response){ | 
 |  |  |         // 跨域设置 | 
 |  |  |         response.setHeader("Access-Control-Max-Age", "3600"); | 
 |  |  |         response.setHeader("Access-Control-Allow-Origin", "*"); | 
 |  |  |         response.setHeader("Access-Control-Allow-Methods", "*"); | 
 |  |  |         response.setHeader("Access-Control-Allow-Headers", "*"); | 
 |  |  |         response.setHeader("Access-Control-Expose-Headers", Constants.TOKEN_HEADER_NAME); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  | } |