feat: 发票添加

main
13009 2024-07-08 16:23:49 +08:00
parent 7b3a20a15a
commit 1437bf936e
9 changed files with 443 additions and 3 deletions

View File

@ -0,0 +1,21 @@
package com.czcb.scfs.api.core;
/**
* @author wangwei
* @since 2.0.0
*/
public interface PageApiRequest extends ApiRequest {
/**
* 0
*/
default Long getCurrentPage() {
return 0L;
}
/**
* 50
*/
default Long getCurrentRows() {
return 50L;
}
}

View File

@ -0,0 +1,35 @@
package com.czcb.scfs.api.core;
/**
* @author wangwei
* @since 2.0.0
*/
public interface PageApiResponse extends ApiResponse {
/**
* 0
*/
default Long getCurrentPage() {
return 0L;
}
/**
*
*/
default Long getTotalRows() {
return 0L;
}
/**
*
*/
default Long getTotalPage() {
return 0L;
}
/**
*
*/
default boolean hasNextPage() {
return (getCurrentPage() + 1) < getTotalPage();
}
}

View File

@ -1,6 +1,15 @@
package com.czcb.scfs.service.equity.invoice;
import com.czcb.scfs.api.core.ApiClient;
import com.czcb.scfs.api.core.http.HttpHeaders;
import com.czcb.scfs.api.core.http.HttpResponse;
import com.czcb.scfs.service.equity.invoice.model.InvoiceAddRequest;
import com.czcb.scfs.service.equity.invoice.model.InvoiceAddResponse;
import com.czcb.scfs.service.equity.invoice.model.InvoiceQueryRequest;
import com.czcb.scfs.service.equity.invoice.model.InvoiceQueryResponse;
import static com.czcb.scfs.api.core.Constants.API_VERSION;
import static com.czcb.scfs.api.core.Constants.V_2;
/**
* @author wangwei
@ -12,4 +21,48 @@ public class InvoiceService {
public InvoiceService(ApiClient apiClient) {
this.apiClient = apiClient;
}
/**
*
*/
public InvoiceAddResponse add(InvoiceAddRequest request) {
String url = "/invoice/add";
HttpHeaders headers = new HttpHeaders();
headers.addHeader(API_VERSION, V_2);
HttpResponse<InvoiceAddResponse> httpResponse = apiClient.post(url, headers, request.toJsonRequest(), InvoiceAddResponse.class);
return httpResponse.getServiceResponse();
}
/**
*
*/
public InvoiceAddResponse delete(InvoiceAddRequest request) {
String url = "/invoice/delete";
HttpHeaders headers = new HttpHeaders();
headers.addHeader(API_VERSION, V_2);
HttpResponse<InvoiceAddResponse> httpResponse = apiClient.post(url, headers, request.toJsonRequest(), InvoiceAddResponse.class);
return httpResponse.getServiceResponse();
}
/**
* -
*/
public InvoiceAddResponse deleteBatch(InvoiceAddRequest request) {
String url = "/invoice/delete/batch";
HttpHeaders headers = new HttpHeaders();
headers.addHeader(API_VERSION, V_2);
HttpResponse<InvoiceAddResponse> httpResponse = apiClient.post(url, headers, request.toJsonRequest(), InvoiceAddResponse.class);
return httpResponse.getServiceResponse();
}
/**
* -
*/
public InvoiceQueryResponse query(InvoiceQueryRequest request) {
String url = "/invoice/query";
HttpHeaders headers = new HttpHeaders();
headers.addHeader(API_VERSION, V_2);
HttpResponse<InvoiceQueryResponse> httpResponse = apiClient.post(url, headers, request.toJsonRequest(), InvoiceQueryResponse.class);
return httpResponse.getServiceResponse();
}
}

View File

@ -0,0 +1,108 @@
package com.czcb.scfs.service.equity.invoice.model;
import com.czcb.scfs.api.core.ApiRequest;
import com.google.gson.annotations.SerializedName;
import lombok.Data;
import lombok.experimental.Accessors;
import java.math.BigDecimal;
import java.util.Date;
/**
* @author wangwei
* @since 2024/7/8
*/
@Data
@Accessors(chain = true)
public class InvoiceAddRequest implements ApiRequest {
/**
*
*/
@SerializedName("channel_no")
private String channelNo;
/**
*
*/
@SerializedName("app_no")
private String appNo;
/**
*
*/
@SerializedName("serial_no")
private String serialNo;
/**
*
*/
@SerializedName("trans_date")
private String transDate;
/**
*
*/
@SerializedName("trans_tradetime")
private String transTradeTime;
/**
*
*/
@SerializedName("invoice_no")
private String invoiceNo;
/**
* 1 2
*/
@SerializedName("invoice_type")
private String invoiceType;
/**
*
*/
@SerializedName("invoice_register_date")
private Date invoiceRegisterDate;
/**
*
*/
@SerializedName("account_no")
private String accountNo;
/**
*
*/
@SerializedName("account_name")
private String accountName;
/**
*
*/
@SerializedName("opp_account_no")
private String oppAccountNo;
/**
*
*/
@SerializedName("opp_account_name")
private String oppAccountName;
/**
* /A2
*/
@SerializedName("settle_account_no")
private String settleAccountNo;
/**
* /A2
*/
@SerializedName("settle_account_name")
private String settleAccountName;
/**
*
*/
@SerializedName("invoice_belong_start_date")
private Date invoiceBelongStartDate;
/**
*
*/
@SerializedName("invoice_belong_end_date")
private Date invoiceBelongEndDate;
/**
*
*/
@SerializedName("invoice_amount")
private BigDecimal invoiceAmount;
}

View File

@ -0,0 +1,43 @@
package com.czcb.scfs.service.equity.invoice.model;
import com.czcb.scfs.api.core.ApiRequest;
import com.google.gson.annotations.SerializedName;
import lombok.Data;
import lombok.experimental.Accessors;
/**
* @author wangwei
* @since 2024/7/8
*/
@Data
@Accessors(chain = true)
public class InvoiceAddResponse implements ApiRequest {
/**
* 000000
*/
@SerializedName("recode")
private String recode;
/**
*
*/
@SerializedName("recode_info")
private String recodeInfo;
/**
*
*/
@SerializedName("sys_serial_no")
private String sysSerialNo;
/**
* YYYY-MM-DD
*/
@SerializedName("sys_date")
private String sysDate;
/**
* YYYY-MM-DD hh:mm:ss
*/
@SerializedName("sys_time")
private String sysTime;
}

View File

@ -0,0 +1,108 @@
package com.czcb.scfs.service.equity.invoice.model;
import com.czcb.scfs.api.core.PageApiRequest;
import com.google.gson.annotations.SerializedName;
import lombok.Data;
import lombok.experimental.Accessors;
import java.math.BigDecimal;
import java.util.Date;
/**
* @author wangwei
* @since 2024/7/8
*/
@Data
@Accessors(chain = true)
public class InvoiceQueryRequest implements PageApiRequest {
/**
*
*/
@SerializedName("channel_no")
private String channelNo;
/**
*
*/
@SerializedName("app_no")
private String appNo;
/**
*
*/
@SerializedName("serial_no")
private String serialNo;
/**
*
*/
@SerializedName("trans_date")
private String transDate;
/**
*
*/
@SerializedName("trans_tradetime")
private String transTradeTime;
/**
*
*/
@SerializedName("invoice_no")
private String invoiceNo;
/**
* 1 2
*/
@SerializedName("invoice_type")
private String invoiceType;
/**
*
*/
@SerializedName("invoice_register_date")
private Date invoiceRegisterDate;
/**
*
*/
@SerializedName("account_no")
private String accountNo;
/**
*
*/
@SerializedName("account_name")
private String accountName;
/**
*
*/
@SerializedName("opp_account_no")
private String oppAccountNo;
/**
*
*/
@SerializedName("opp_account_name")
private String oppAccountName;
/**
* /A2
*/
@SerializedName("settle_account_no")
private String settleAccountNo;
/**
* /A2
*/
@SerializedName("settle_account_name")
private String settleAccountName;
/**
*
*/
@SerializedName("invoice_belong_start_date")
private Date invoiceBelongStartDate;
/**
*
*/
@SerializedName("invoice_belong_end_date")
private Date invoiceBelongEndDate;
/**
*
*/
@SerializedName("invoice_amount")
private BigDecimal invoiceAmount;
}

View File

@ -0,0 +1,43 @@
package com.czcb.scfs.service.equity.invoice.model;
import com.czcb.scfs.api.core.PageApiResponse;
import com.google.gson.annotations.SerializedName;
import lombok.Data;
import lombok.experimental.Accessors;
/**
* @author wangwei
* @since 2024/7/8
*/
@Data
@Accessors(chain = true)
public class InvoiceQueryResponse implements PageApiResponse {
/**
* 000000
*/
@SerializedName("recode")
private String recode;
/**
*
*/
@SerializedName("recode_info")
private String recodeInfo;
/**
*
*/
@SerializedName("sys_serial_no")
private String sysSerialNo;
/**
* YYYY-MM-DD
*/
@SerializedName("sys_date")
private String sysDate;
/**
* YYYY-MM-DD hh:mm:ss
*/
@SerializedName("sys_time")
private String sysTime;
}

View File

@ -25,7 +25,6 @@ public class EchoService {
}
public void echo() {
String url = "/echo";
EchoRequest request = new EchoRequest();
request.setDatetime(DateTimes.ofNow());
request.setChannelNo(apiClient.getProfile().getChannel().getChannelNo());
@ -33,7 +32,12 @@ public class EchoService {
request.setSerialNo(Nonce.ofNonce());
request.setTransDate(DateTimes.ofNowDate());
request.setTransTradeTime(DateTimes.ofNow());
echo(request);
}
public void echo(EchoRequest request) {
String url = "/echo";
HttpHeaders headers = new HttpHeaders();
HttpResponse<EchoResponse> response = apiClient.post(url, headers, request.toJsonRequest(), EchoResponse.class);
if (Objects.isNull(response.getServiceResponse()) || !response.getServiceResponse().ok()) {

View File

@ -3,7 +3,9 @@ package com.czcb.scfs.api.service.echo;
import com.czcb.scfs.api.core.ApiClient;
import com.czcb.scfs.api.core.exception.ValidationException;
import com.czcb.scfs.api.core.http.HttpMethod;
import com.czcb.scfs.api.core.util.DateTimes;
import com.czcb.scfs.api.core.util.Json;
import com.czcb.scfs.api.core.util.Nonce;
import com.czcb.scfs.api.service.MockResponse;
import com.czcb.scfs.api.service.echo.model.EchoRequest;
import com.czcb.scfs.api.service.echo.model.EchoResponse;
@ -40,7 +42,30 @@ class EchoServiceTest {
ApiClient apiClient = MockResponse.getApiClient();
EchoService service = new EchoService(apiClient);
Assertions.assertDoesNotThrow(service::echo);
Assertions.assertDoesNotThrow(() -> service.echo());
}
@Test
void pingParams() {
EchoResponse echoResponse = new EchoResponse();
echoResponse.setMessage("ok");
client.reset().when(request()
.withMethod(HttpMethod.POST.getUpperName())
.withPath("/echo")
).respond(MockResponse.mock(echoResponse.toJsonResponse().getBody()));
ApiClient apiClient = MockResponse.getApiClient();
EchoService service = new EchoService(apiClient);
EchoRequest request = new EchoRequest();
request.setDatetime(DateTimes.ofNow());
request.setChannelNo(apiClient.getProfile().getChannel().getChannelNo());
request.setAppNo(apiClient.getProfile().getChannel().getAppNo());
request.setSerialNo(Nonce.ofNonce());
request.setTransDate(DateTimes.ofNowDate());
request.setTransTradeTime(DateTimes.ofNow());
Assertions.assertDoesNotThrow(() -> service.echo(request));
}
@Test