All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.shoulder.batch.endpoint.ImportRestfulApi Maven / Gradle / Ivy

package org.shoulder.batch.endpoint;

import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiOperation;
import org.shoulder.batch.dto.param.ExecuteOperationParam;
import org.shoulder.batch.dto.param.QueryImportResultDetailParam;
import org.shoulder.batch.dto.result.BatchProcessResult;
import org.shoulder.batch.dto.result.BatchRecordResult;
import org.shoulder.core.dto.response.BaseResult;
import org.shoulder.core.dto.response.ListResult;
import org.springframework.util.MimeTypeUtils;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

import static org.springframework.web.bind.annotation.RequestMethod.GET;

/**
 * - 导入、导出功能
 * - 导入模板下载
 * - 上传导入文件 / 解析
 * - 查询导入校验进度
 * - 批量操作
 * - 查询数据操作进度
 * - 数据导入记录,分页查询、导出 todo 【开发】数据类型、业务操作类型
 *  /batch-operation/{dataType}/{operationType}
 *  如 /batch-operation/user/add-validate
 *  如 /batch-operation/user/add
 *  如 /batch-operation/user/update-validate
 *  如 /batch-operation/user/update
 *  带默认 api 请求路径,实际中可以通过继承复写来替换
 *
 * @author lym
 * @deprecated 不作为框架默认实现的一部分,将移动至 platform 中
 */
@Api(tags = {"数据批量操作"})
@RequestMapping("/rest/{dataType}/batch/v1/")
public interface ImportRestfulApi {


    /**
     * 上传数据导入文件 / 提交校验
     */
    @ApiOperation(value = "上传数据导入文件", consumes = "text/html", httpMethod = "POST")
    @ApiImplicitParam(value = "文件编码", name = "charsetLanguage", example = "gbk",
            defaultValue = "gbk", required = true, paramType = "body")
    @RequestMapping(value = "template/upload", method = {RequestMethod.POST})
    BaseResult doValidate(MultipartFile file,
                                  @RequestParam(name = "charsetLanguage", required = false) String charsetLanguage)
            throws Exception;

    /**
     * 查询数据导入数据校验进度
     */
    /*@ApiOperation(value = "查询数据导入数据校验进度", produces = MimeTypeUtils.APPLICATION_JSON_VALUE, httpMethod = "GET")
    @ApiImplicitParam(value = "批次ID", name = "taskId", example = "452f5wq6", defaultValue = "452f5wq6",
            required = true, paramType = "path")
    @RequestMapping(value = "progress/{taskId}", method = GET)
    RestResult queryValidateProcess(String taskId);*/

    /**
     * 批量操作
     *
     * @param executeOperationParam 操作参数
     * @return result
     */
    @ApiOperation(value = "批量操作", produces = MimeTypeUtils.APPLICATION_JSON_VALUE, httpMethod = "POST")
    @RequestMapping(value = "execute", method = RequestMethod.POST)
    BaseResult doExecute(ExecuteOperationParam executeOperationParam);

    /**
     * 查询数据操作进度,todo 【开发】考虑 查进度和结果是否为同一个接口?进度不需要每行信息
     *
     * @param taskId 任务标识
     * @return 操作进度 / 结果
     */
    @ApiOperation(value = "查询数据操作进度", produces = MimeTypeUtils.APPLICATION_JSON_VALUE, httpMethod = "GET")
    @ApiImplicitParam(value = "批次ID", name = "taskId", example = "312312312312", defaultValue = "3123412312321",
            required = true, paramType = "path")
    @RequestMapping(value = "progress/{taskId}", method = GET)
    BaseResult queryOperationProcess(@PathVariable("taskId") String taskId);


    // ===================================  导入记录查询  =====================================


    /**
     * 查询处理记录
     * 可用于界面展示,(当前用户)最近一次导入记录
     * todo 【开发】查询条件 暂不支持分页
     *
     * @return 分页-批量处理进度 / 结果
     */
    @ApiOperation(value = "查询处理记录", notes = "暂不支持分页", consumes = MimeTypeUtils.APPLICATION_JSON_VALUE,
            produces = MimeTypeUtils.APPLICATION_JSON_VALUE, httpMethod = "GET")
    @RequestMapping(value = "record/list", method = RequestMethod.GET)
    BaseResult> queryImportRecord();


    /**
     * 查询某次处理记录详情
     * 场景: 数导入后,查看导入校验 / 处理结果
     * 历史导入,查看详情
     *
     * @param condition 过滤条件
     * @return 批量处理进度 / 结果
     */
    @ApiOperation(value = "查询某次处理记录详情", notes = "支持分页", consumes = MimeTypeUtils.APPLICATION_JSON_VALUE
            , produces = MimeTypeUtils.APPLICATION_JSON_VALUE, httpMethod = "POST")
    @RequestMapping(value = "record/detail", method = RequestMethod.POST)
    BaseResult queryImportRecordDetail(QueryImportResultDetailParam condition);

    // ===================================  导出相关  =====================================


    /**
     * 数据导入模板下载
     * 

* todo 【开发】数据类型、业务操作类型 */ @ApiOperation(value = "数据导入模板下载", consumes = "text/csv", httpMethod = "GET") @ApiImplicitParam(value = "文件编码", name = "charsetLanguage", example = "gbk", defaultValue = "gbk", required = true, paramType = "query") //@RequestMapping(value = "template/{businessType}/download", method = RequestMethod.GET) void exportImportTemplate(HttpServletResponse response, @PathVariable(value = "businessType") String businessType) throws IOException; /** * 数据导入记录详情导出 * * @param condition 过滤条件 * @throws IOException 流异常 */ @ApiOperation(value = "数据处理记录详情导出", notes = "搜索结果全部导出" + "注意:文件名对于中文已进行UTF-8编码,前端需进行URL.decode解码操作", produces = "text/csv", consumes = MimeTypeUtils.APPLICATION_JSON_VALUE, httpMethod = "GET") @ApiImplicitParam(value = "文件编码", name = "charsetLanguage", example = "gbk", defaultValue = "gbk", required = true, paramType = "query") @RequestMapping(value = "record/detail/export", method = GET) void exportRecordDetail(HttpServletResponse response, QueryImportResultDetailParam condition) throws IOException; /** * 导出数据 * todo 【开发】查询条件 + Request * * @throws IOException 数据流错误 */ /*@ApiOperation(value = "导出", notes = "搜索结果全部导出" + "注意:文件名对于中文已进行UTF-8编码,前端需进行URL.decode解码操作", produces = "text/csv", consumes = MimeTypeUtils.APPLICATION_JSON_VALUE, httpMethod = "GET") @RequestMapping(value = "export", method = GET) void export(HttpServletResponse response, @PathVariable(value = "businessType") String businessType) throws IOException;*/ }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy