ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

2021-10-27-ServiceUtils-kye

2021-10-27 15:00:02  阅读:191  来源: 互联网

标签:10 27 return ResponseData bo param valid static ServiceUtils


package com.kyexpress.erp.tms.bill.provider.utils;

import com.kyexpress.erp.tms.bill.provider.constant.ResponseCode;
import com.kyexpress.framework.exception.ApplicationException;
import com.kyexpress.framework.model.GenericBO;
import com.kyexpress.framework.model.Pagination;
import com.kyexpress.framework.model.ResponseData;
import com.kyexpress.framework.service.GenericService;
import org.apache.poi.ss.formula.functions.T;

import java.util.function.Consumer;
import java.util.function.Function;
import java.util.stream.Stream;

public class ServiceUtils {

    /**
     * 调用方法
     */
    public static <T> ResponseData call(T param, Consumer<T> callProcess) {
        return call(param, callProcess, p -> {});
    }

    /**
     * 调用方法
     */
    public static <T> ResponseData call(T param, Consumer<T> callProcess, Consumer<T> valid) {
        valid.accept(param);
        callProcess.accept(param);
        return CommonUtils.buildResponseData();
    }

    /**
     * 调用方法
     */
    public static <T, R> ResponseData call(T param, Consumer<R> callProcess, Function<T, R> valid) {
        callProcess.accept(valid.apply(param));
        return CommonUtils.buildResponseData();
    }

    /**
     * 调用方法
     */
    public static <T, R> ResponseData<R> callWithReturn(T param, Function<T, R> callProcess) {
        return callWithReturn(param, callProcess, p -> {});
    }

    /**
     * 调用方法
     */
    public static <T, R> ResponseData<R> callWithReturn(T param, Function<T, R> callProcess, Consumer<T> valid) {
        valid.accept(param);
        return CommonUtils.buildResponseData(callProcess.apply(param));
    }

    /**
     * 调用方法
     */
    public static <T, R, RS> ResponseData<RS> callWithReturn(T param, Function<R, RS> callProcess, Function<T, R> valid) {
        return CommonUtils.buildResponseData(callProcess.apply(valid.apply(param)));
    }

    /**
     * 查询
     */
    public static <T> ResponseData<Pagination<T>> search(GenericBO<T> bo, GenericService<T, Long> service) {
        return search(bo, service, BO -> {});
    }

    /**
     * 查询
     */
    public static <T> ResponseData<Pagination<T>> search(GenericBO<T> bo, GenericService<T, Long> service, Consumer<GenericBO<T>> queryBuilder) {
        return search(bo, service::search, queryBuilder);
    }

    /**
     * 查询
     */
    private static <T> ResponseData<Pagination<T>> search(GenericBO<T> bo, Consumer<Pagination<T>> searchProcess, Consumer<GenericBO<T>> queryBuilder) {
        queryBuilder.accept(bo);
        ResponseData<Pagination<T>> resp = new ResponseData<>();
        Pagination<T> pagination = Pagination.getInstance4BO(bo);
        searchProcess.accept(pagination);
        resp.setData(pagination).ok();
        return resp;
    }

    /**
     * 批量操作
     */
    public static <T, R> ResponseData<R> batch(GenericBO<T> bo, Function<Long[], R> deleteProcess, ResponseCode listIsNullError) {
        return CommonUtils.buildResponseData(batchByIdsWithReturn(bo, deleteProcess, listIsNullError));
    }

    /**
     * 删除
     */
    public static ResponseData delete(GenericBO<T> bo, GenericService<T, Long> service) {
        return delete(bo, service, Function.identity());
    }

    /**
     * 删除
     */
    public static ResponseData delete(GenericBO<T> bo, GenericService<T, Long> service, Function<Long[], Long[]> valid) {
        deleteByIds(bo, service::disable, valid);
        return CommonUtils.buildResponseData();
    }

    /**
     * 删除
     */
    private static <T> void deleteByIds(GenericBO<T> bo, Consumer<Long[]> deleteProcess, Function<Long[], Long[]> valid) {
        if (bo.getIds() == null || bo.getIds().length == 0) {
            throw new ApplicationException(ResponseCode.DELETE_LIST_IS_NULL);
        }
        Long[] ids = Stream.of(bo.getIds()).map(Long::parseLong).toArray(Long[]::new);
        ids = valid.apply(ids);
        deleteProcess.accept(ids);
    }

    /**
     * 批量操作
     */
    private static <T, R> R batchByIdsWithReturn(GenericBO<T> bo, Function<Long[], R> deleteProcess, ResponseCode listIsNullError) {
        return batchByIdsWithReturn(bo, deleteProcess, listIsNullError, Function.identity());
    }

    /**
     * 批量操作
     */
    private static <T, R> R batchByIdsWithReturn(GenericBO<T> bo, Function<Long[], R> deleteProcess, ResponseCode listIsNullError, Function<Long[], Long[]> valid) {
        if (bo.getIds() == null || bo.getIds().length == 0) {
            throw new ApplicationException(listIsNullError);
        }
        Long[] ids = Stream.of(bo.getIds()).map(Long::parseLong).toArray(Long[]::new);
        ids = valid.apply(ids);
        return deleteProcess.apply(valid.apply(ids));
    }

}

标签:10,27,return,ResponseData,bo,param,valid,static,ServiceUtils
来源: https://blog.csdn.net/u010945738/article/details/120993029

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有