提交
This commit is contained in:
@@ -363,17 +363,30 @@ public class FinanceExportProviderService {
|
||||
"receivedAmount", value.receivedAmount(), "outstandingAmount", value.outstandingAmount(), "settled", value.settled(), "status", value.status(),
|
||||
"remark", value.remark(), "createdByName", value.createdByName(), "createdAt", value.createdAt(), "updatedByName", value.updatedByName(), "updatedAt", value.updatedAt());
|
||||
}
|
||||
/** 结算单列表导出使用中文状态,便于财务人员直接阅读。 */
|
||||
private Map<String, Object> settlementRow(SettlementSummary value) {
|
||||
return row("settlementNo", value.settlementNo(), "customerName", value.customerName(), "supplierName", value.supplierName(),
|
||||
"currency", value.currency(), "totalAmount", value.totalAmount(), "paidAmount", value.paidAmount(), "outstandingAmount", value.outstandingAmount(),
|
||||
"businessPeriod", value.businessPeriod(), "generatedDate", value.generatedDate(), "dueDate", value.dueDate(), "status", value.status());
|
||||
"businessPeriod", value.businessPeriod(), "generatedDate", value.generatedDate(), "dueDate", value.dueDate(), "status", settlementStatusLabel(value.status()));
|
||||
}
|
||||
/** 明细导出与列表保持相同的中文结算状态。 */
|
||||
private Map<String, Object> settlementDetailRow(SettlementSummary summary, SettlementLine line) {
|
||||
return row("settlementNo", summary.settlementNo(), "customerName", summary.customerName(), "supplierName", summary.supplierName(),
|
||||
"feeItemName", line == null ? null : line.feeItemName(), "inboundCode", line == null ? null : line.inboundCode(),
|
||||
"containerNo", line == null ? null : line.containerNo(), "businessDate", line == null ? null : line.businessDate(),
|
||||
"lineAmount", line == null ? null : line.amount(), "totalAmount", summary.totalAmount(), "paidAmount", summary.paidAmount(),
|
||||
"outstandingAmount", summary.outstandingAmount(), "status", summary.status());
|
||||
"outstandingAmount", summary.outstandingAmount(), "status", settlementStatusLabel(summary.status()));
|
||||
}
|
||||
/** 转换正式结算状态,未知值保留原值以便排查。 */
|
||||
private String settlementStatusLabel(String status) {
|
||||
if (status == null) return null;
|
||||
return switch (status) {
|
||||
case "ISSUED" -> "已出账";
|
||||
case "PARTIALLY_PAID" -> "部分结清";
|
||||
case "PAID" -> "已结清";
|
||||
case "VOIDED" -> "已作废";
|
||||
default -> status;
|
||||
};
|
||||
}
|
||||
private Map<String, Object> receivableStatisticsRow(YearMonth month, ReceivableStatisticsRow value) {
|
||||
return row("statisticsMonth", month.toString(), "customerName", value.customerName(),
|
||||
|
||||
+20
@@ -45,6 +45,26 @@ class FinanceExportProviderServiceTest {
|
||||
service.initializeSigningKey();
|
||||
}
|
||||
|
||||
@Test
|
||||
/** 应付结算列表和详情导出均使用中文状态,包括无明细的单据。 */
|
||||
void exportsSettlementStatusesInChinese() {
|
||||
for (var entry : Map.of("ISSUED", "已出账", "PARTIALLY_PAID", "部分结清", "PAID", "已结清", "VOIDED", "已作废").entrySet()) {
|
||||
var summary = new com.baiyue.finance.dto.FinanceSettlementDtos.SettlementSummary(
|
||||
701L, "AP-701", "PAYABLE", 10001L, "客户A", 301L, "供应商A", null, null,
|
||||
"2026-11", "操作费", "CNY", BigDecimal.TEN, BigDecimal.ZERO, BigDecimal.TEN,
|
||||
LocalDate.parse("2026-11-03"), null, "UNPAID", entry.getKey(), 7L, "财务员", null, null, null, 1);
|
||||
when(settlementService.listSettlements("PAYABLE", null)).thenReturn(List.of(summary));
|
||||
when(settlementService.getSettlement(701L)).thenReturn(new com.baiyue.finance.dto.FinanceSettlementDtos.SettlementDetail(
|
||||
summary, List.of(), List.of(), List.of()));
|
||||
var list = service.exportBatch(FinanceExportProviderService.PAYABLE_SETTLEMENT_LIST,
|
||||
request(Map.of("status", entry.getKey()), null, null));
|
||||
var detail = service.exportBatch(FinanceExportProviderService.PAYABLE_SETTLEMENT_DETAIL,
|
||||
request(Map.of("settlementId", "701"), null, null));
|
||||
assertThat(list.rows().get(0)).containsEntry("status", entry.getValue());
|
||||
assertThat(detail.rows().get(0)).containsEntry("status", entry.getValue());
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
void exportsStatementRowsUsingBusinessContainerNumberAndStableSnapshot() {
|
||||
Statement summary = new Statement(501L, 10001L, "REC-501", "客户A", LocalDate.parse("2026-08-31"),
|
||||
|
||||
Reference in New Issue
Block a user