Files
ccdi/ccdi-lsfx/src/main/java/com/ruoyi/lsfx/controller/LsfxTestController.java

194 lines
8.4 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
package com.ruoyi.lsfx.controller;
import com.ruoyi.common.annotation.Anonymous;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.lsfx.client.LsfxAnalysisClient;
import com.ruoyi.lsfx.constants.LsfxConstants;
import com.ruoyi.lsfx.domain.request.DeleteFilesRequest;
import com.ruoyi.lsfx.domain.request.FetchInnerFlowRequest;
import com.ruoyi.lsfx.domain.request.GetBankStatementRequest;
import com.ruoyi.lsfx.domain.request.GetFileUploadStatusRequest;
import com.ruoyi.lsfx.domain.request.GetTokenRequest;
import com.ruoyi.lsfx.domain.response.*;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.annotation.Resource;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
/**
* 流水分析平台接口测试控制器
*/
@Tag(name = "流水分析平台接口测试", description = "用于测试流水分析平台的7个接口")
@Anonymous
@RestController
@RequestMapping("/lsfx/test")
public class LsfxTestController {
@Resource
private LsfxAnalysisClient lsfxAnalysisClient;
@Operation(summary = "获取Token", description = "创建项目并获取访问Token")
@PostMapping("/getToken")
public AjaxResult getToken(@RequestBody GetTokenRequest request) {
// 参数校验
if (StringUtils.isBlank(request.getProjectNo())) {
return AjaxResult.error("参数不完整projectNo为必填");
}
if (StringUtils.isBlank(request.getEntityName())) {
return AjaxResult.error("参数不完整entityName为必填");
}
// 必填字段设置默认值
if (StringUtils.isBlank(request.getUserId())) {
request.setUserId(LsfxConstants.DEFAULT_USER_ID);
}
if (StringUtils.isBlank(request.getUserName())) {
request.setUserName(LsfxConstants.DEFAULT_USER_NAME);
}
if (StringUtils.isBlank(request.getOrgCode())) {
request.setOrgCode(LsfxConstants.DEFAULT_ORG_CODE);
}
if (StringUtils.isBlank(request.getDepartmentCode())) {
request.setDepartmentCode(LsfxConstants.DEFAULT_DEPARTMENT_CODE);
}
GetTokenResponse response = lsfxAnalysisClient.getToken(request);
return AjaxResult.success(response);
}
@Operation(summary = "上传流水文件", description = "上传银行流水文件到流水分析平台")
@PostMapping("/uploadFile")
public AjaxResult uploadFile(
@Parameter(description = "项目ID") @RequestParam Integer groupId,
@Parameter(description = "流水文件") @RequestParam("file") MultipartFile file
) {
// 参数校验
if (groupId == null || groupId <= 0) {
return AjaxResult.error("参数不完整groupId为必填且大于0");
}
if (file == null || file.isEmpty()) {
return AjaxResult.error("参数不完整:文件不能为空");
}
if (file.getSize() > 10 * 1024 * 1024) { // 10MB限制
return AjaxResult.error("文件大小超过限制最大10MB");
}
UploadFileResponse response = lsfxAnalysisClient.uploadFile(groupId, file);
return AjaxResult.success(response);
}
@Operation(summary = "拉取行内流水", description = "从数仓拉取行内流水数据")
@PostMapping("/fetchInnerFlow")
public AjaxResult fetchInnerFlow(@RequestBody FetchInnerFlowRequest request) {
// 参数校验
if (request.getGroupId() == null || request.getGroupId() <= 0) {
return AjaxResult.error("参数不完整groupId为必填且大于0");
}
if (StringUtils.isEmpty(request.getCustomerNo())) {
return AjaxResult.error("参数不完整customerNo为必填");
}
if (request.getRequestDateId() == null) {
return AjaxResult.error("参数不完整requestDateId为必填");
}
if (request.getDataStartDateId() == null) {
return AjaxResult.error("参数不完整dataStartDateId为必填");
}
if (request.getDataEndDateId() == null) {
return AjaxResult.error("参数不完整dataEndDateId为必填");
}
if (request.getDataStartDateId() > request.getDataEndDateId()) {
return AjaxResult.error("参数错误:开始日期不能大于结束日期");
}
// 设置dataChannelCode默认值
if (StringUtils.isEmpty(request.getDataChannelCode())) {
request.setDataChannelCode(LsfxConstants.DEFAULT_DATA_CHANNEL_CODE);
}
FetchInnerFlowResponse response = lsfxAnalysisClient.fetchInnerFlow(request);
return AjaxResult.success(response);
}
@Operation(summary = "检查文件解析状态", description = "轮询检查上传文件的解析状态")
@PostMapping("/checkParseStatus")
public AjaxResult checkParseStatus(
@Parameter(description = "项目ID") @RequestParam Integer groupId,
@Parameter(description = "文件ID列表") @RequestParam String inprogressList
) {
// 参数校验
if (groupId == null || groupId <= 0) {
return AjaxResult.error("参数不完整groupId为必填且大于0");
}
if (StringUtils.isEmpty(inprogressList)) {
return AjaxResult.error("参数不完整inprogressList为必填");
}
CheckParseStatusResponse response = lsfxAnalysisClient.checkParseStatus(groupId, inprogressList);
return AjaxResult.success(response);
}
@Operation(summary = "获取银行流水列表(新版)",
description = "分页获取指定文件的银行流水数据需要提供logId参数")
@PostMapping("/getBankStatement")
public AjaxResult getBankStatement(@RequestBody GetBankStatementRequest request) {
// 参数校验
if (request.getGroupId() == null) {
return AjaxResult.error("参数不完整groupId为必填");
}
if (request.getLogId() == null) {
return AjaxResult.error("参数不完整logId为必填(文件ID)");
}
if (request.getPageNow() == null || request.getPageNow() < 1) {
return AjaxResult.error("参数不完整pageNow为必填且大于0");
}
if (request.getPageSize() == null || request.getPageSize() < 1) {
return AjaxResult.error("参数不完整pageSize为必填且大于0");
}
GetBankStatementResponse response = lsfxAnalysisClient.getBankStatement(request);
return AjaxResult.success(response);
}
@Operation(summary = "获取单个文件上传状态",
description = "获取文件解析后的主体名称和账号等信息。status=-5且uploadStatusDesc='data.wait.confirm.newaccount'表示解析成功")
@GetMapping("/getFileUploadStatus")
public AjaxResult getFileUploadStatus(
@Parameter(description = "项目ID") @RequestParam Integer groupId,
@Parameter(description = "文件ID(可选,不传则查询所有)") @RequestParam(required = false) Integer logId
) {
// 参数校验
if (groupId == null || groupId <= 0) {
return AjaxResult.error("参数不完整groupId为必填且大于0");
}
GetFileUploadStatusRequest request = new GetFileUploadStatusRequest();
request.setGroupId(groupId);
request.setLogId(logId);
GetFileUploadStatusResponse response = lsfxAnalysisClient.getFileUploadStatus(request);
return AjaxResult.success(response);
}
@Operation(summary = "删除文件",
description = "删除解析失败或不需要的流水文件")
@PostMapping("/deleteFiles")
public AjaxResult deleteFiles(@RequestBody DeleteFilesRequest request) {
// 参数校验
if (request.getGroupId() == null || request.getGroupId() <= 0) {
return AjaxResult.error("参数不完整groupId为必填且大于0");
}
if (request.getLogIds() == null || request.getLogIds().length == 0) {
return AjaxResult.error("参数不完整logIds为必填且不能为空");
}
if (request.getUserId() == null) {
return AjaxResult.error("参数不完整userId为必填");
}
DeleteFilesResponse response = lsfxAnalysisClient.deleteFiles(request);
return AjaxResult.success(response);
}
}