test: 补充流水标签入口日志
This commit is contained in:
@@ -8,6 +8,7 @@ import com.ruoyi.common.utils.SecurityUtils;
|
|||||||
import io.swagger.v3.oas.annotations.Operation;
|
import io.swagger.v3.oas.annotations.Operation;
|
||||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||||
import jakarta.annotation.Resource;
|
import jakarta.annotation.Resource;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.validation.annotation.Validated;
|
import org.springframework.validation.annotation.Validated;
|
||||||
import org.springframework.web.bind.annotation.PostMapping;
|
import org.springframework.web.bind.annotation.PostMapping;
|
||||||
import org.springframework.web.bind.annotation.RequestBody;
|
import org.springframework.web.bind.annotation.RequestBody;
|
||||||
@@ -18,6 +19,7 @@ import org.springframework.web.bind.annotation.RestController;
|
|||||||
* 项目流水标签控制器
|
* 项目流水标签控制器
|
||||||
*/
|
*/
|
||||||
@Tag(name = "项目流水标签")
|
@Tag(name = "项目流水标签")
|
||||||
|
@Slf4j
|
||||||
@RestController
|
@RestController
|
||||||
@RequestMapping("/ccdi/project/tags")
|
@RequestMapping("/ccdi/project/tags")
|
||||||
public class CcdiBankTagController extends BaseController {
|
public class CcdiBankTagController extends BaseController {
|
||||||
@@ -32,6 +34,8 @@ public class CcdiBankTagController extends BaseController {
|
|||||||
@PostMapping("/rebuild")
|
@PostMapping("/rebuild")
|
||||||
public AjaxResult rebuild(@Validated @RequestBody CcdiBankTagRebuildDTO dto) {
|
public AjaxResult rebuild(@Validated @RequestBody CcdiBankTagRebuildDTO dto) {
|
||||||
String operator = SecurityUtils.getUsername();
|
String operator = SecurityUtils.getUsername();
|
||||||
|
log.info("【流水标签】收到手动重算请求: projectId={}, modelCode={}, operator={}",
|
||||||
|
dto.getProjectId(), dto.getModelCode(), operator);
|
||||||
return success(bankTagService.submitRebuild(dto, operator));
|
return success(bankTagService.submitRebuild(dto, operator));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -679,7 +679,11 @@ public class CcdiFileUploadServiceImpl implements ICcdiFileUploadService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void handleTagRebuildAfterBatchCompletion(Long projectId, TriggerType triggerType, Boolean anySuccess) {
|
private void handleTagRebuildAfterBatchCompletion(Long projectId, TriggerType triggerType, Boolean anySuccess) {
|
||||||
|
log.info("【流水标签】批处理完成,准备触发自动重算: projectId={}, triggerType={}, anySuccess={}",
|
||||||
|
projectId, triggerType, anySuccess);
|
||||||
if (!Boolean.TRUE.equals(anySuccess)) {
|
if (!Boolean.TRUE.equals(anySuccess)) {
|
||||||
|
log.warn("【流水标签】跳过自动重算: projectId={}, triggerType={}, reason=all_records_failed",
|
||||||
|
projectId, triggerType);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
bankTagService.submitAutoRebuild(projectId, triggerType);
|
bankTagService.submitAutoRebuild(projectId, triggerType);
|
||||||
|
|||||||
@@ -1,5 +1,8 @@
|
|||||||
package com.ruoyi.ccdi.project.controller;
|
package com.ruoyi.ccdi.project.controller;
|
||||||
|
|
||||||
|
import ch.qos.logback.classic.Logger;
|
||||||
|
import ch.qos.logback.classic.spi.ILoggingEvent;
|
||||||
|
import ch.qos.logback.core.read.ListAppender;
|
||||||
import com.ruoyi.ccdi.project.domain.dto.CcdiBankTagRebuildDTO;
|
import com.ruoyi.ccdi.project.domain.dto.CcdiBankTagRebuildDTO;
|
||||||
import com.ruoyi.ccdi.project.service.ICcdiBankTagService;
|
import com.ruoyi.ccdi.project.service.ICcdiBankTagService;
|
||||||
import com.ruoyi.common.core.domain.AjaxResult;
|
import com.ruoyi.common.core.domain.AjaxResult;
|
||||||
@@ -10,8 +13,10 @@ import org.mockito.InjectMocks;
|
|||||||
import org.mockito.Mock;
|
import org.mockito.Mock;
|
||||||
import org.mockito.MockedStatic;
|
import org.mockito.MockedStatic;
|
||||||
import org.mockito.junit.jupiter.MockitoExtension;
|
import org.mockito.junit.jupiter.MockitoExtension;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||||
|
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||||
import static org.mockito.Mockito.mockStatic;
|
import static org.mockito.Mockito.mockStatic;
|
||||||
import static org.mockito.Mockito.verify;
|
import static org.mockito.Mockito.verify;
|
||||||
import static org.mockito.Mockito.when;
|
import static org.mockito.Mockito.when;
|
||||||
@@ -42,4 +47,32 @@ class CcdiBankTagControllerTest {
|
|||||||
verify(bankTagService).submitRebuild(dto, "admin");
|
verify(bankTagService).submitRebuild(dto, "admin");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void rebuild_shouldLogManualRebuildRequest() {
|
||||||
|
CcdiBankTagRebuildDTO dto = new CcdiBankTagRebuildDTO();
|
||||||
|
dto.setProjectId(40L);
|
||||||
|
dto.setModelCode("LARGE_TRANSACTION");
|
||||||
|
|
||||||
|
Logger logger = (Logger) LoggerFactory.getLogger(CcdiBankTagController.class);
|
||||||
|
ListAppender<ILoggingEvent> appender = new ListAppender<>();
|
||||||
|
appender.start();
|
||||||
|
logger.addAppender(appender);
|
||||||
|
|
||||||
|
when(bankTagService.submitRebuild(dto, "admin")).thenReturn("标签重算任务已提交");
|
||||||
|
|
||||||
|
try (MockedStatic<SecurityUtils> mocked = mockStatic(SecurityUtils.class)) {
|
||||||
|
mocked.when(SecurityUtils::getUsername).thenReturn("admin");
|
||||||
|
|
||||||
|
controller.rebuild(dto);
|
||||||
|
|
||||||
|
assertTrue(appender.list.stream().map(ILoggingEvent::getFormattedMessage)
|
||||||
|
.anyMatch(message -> message.contains("收到手动重算请求")
|
||||||
|
&& message.contains("projectId=40")
|
||||||
|
&& message.contains("modelCode=LARGE_TRANSACTION")
|
||||||
|
&& message.contains("operator=admin")));
|
||||||
|
} finally {
|
||||||
|
logger.detachAppender(appender);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -54,8 +54,8 @@ import static org.junit.jupiter.api.Assertions.assertTrue;
|
|||||||
import static org.mockito.ArgumentMatchers.any;
|
import static org.mockito.ArgumentMatchers.any;
|
||||||
import static org.mockito.ArgumentMatchers.argThat;
|
import static org.mockito.ArgumentMatchers.argThat;
|
||||||
import static org.mockito.ArgumentMatchers.eq;
|
import static org.mockito.ArgumentMatchers.eq;
|
||||||
import static org.mockito.Mockito.never;
|
|
||||||
import static org.mockito.Mockito.doAnswer;
|
import static org.mockito.Mockito.doAnswer;
|
||||||
|
import static org.mockito.Mockito.never;
|
||||||
import static org.mockito.Mockito.verify;
|
import static org.mockito.Mockito.verify;
|
||||||
import static org.mockito.Mockito.when;
|
import static org.mockito.Mockito.when;
|
||||||
|
|
||||||
@@ -167,6 +167,59 @@ class CcdiFileUploadServiceImplTest {
|
|||||||
assertFalse(Files.exists(batchLogDir));
|
assertFalse(Files.exists(batchLogDir));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void handleTagRebuildAfterBatchCompletion_shouldLogSkipWhenAllRecordsFailed() {
|
||||||
|
Logger logger = (Logger) LoggerFactory.getLogger(CcdiFileUploadServiceImpl.class);
|
||||||
|
ListAppender<ILoggingEvent> logAppender = new ListAppender<>();
|
||||||
|
logAppender.start();
|
||||||
|
logger.addAppender(logAppender);
|
||||||
|
|
||||||
|
try {
|
||||||
|
ReflectionTestUtils.invokeMethod(
|
||||||
|
service,
|
||||||
|
"handleTagRebuildAfterBatchCompletion",
|
||||||
|
PROJECT_ID,
|
||||||
|
TriggerType.AUTO_BATCH_UPLOAD,
|
||||||
|
Boolean.FALSE
|
||||||
|
);
|
||||||
|
|
||||||
|
verify(bankTagService, never()).submitAutoRebuild(any(), any());
|
||||||
|
assertTrue(logAppender.list.stream().map(ILoggingEvent::getFormattedMessage)
|
||||||
|
.anyMatch(message -> message.contains("跳过自动重算")
|
||||||
|
&& message.contains("projectId=100")
|
||||||
|
&& message.contains("AUTO_BATCH_UPLOAD")));
|
||||||
|
} finally {
|
||||||
|
logger.detachAppender(logAppender);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void handleTagRebuildAfterBatchCompletion_shouldLogSubmissionWhenAnyRecordSucceeded() {
|
||||||
|
Logger logger = (Logger) LoggerFactory.getLogger(CcdiFileUploadServiceImpl.class);
|
||||||
|
ListAppender<ILoggingEvent> logAppender = new ListAppender<>();
|
||||||
|
logAppender.start();
|
||||||
|
logger.addAppender(logAppender);
|
||||||
|
|
||||||
|
try {
|
||||||
|
ReflectionTestUtils.invokeMethod(
|
||||||
|
service,
|
||||||
|
"handleTagRebuildAfterBatchCompletion",
|
||||||
|
PROJECT_ID,
|
||||||
|
TriggerType.AUTO_PULL_BANK_INFO,
|
||||||
|
Boolean.TRUE
|
||||||
|
);
|
||||||
|
|
||||||
|
verify(bankTagService).submitAutoRebuild(PROJECT_ID, TriggerType.AUTO_PULL_BANK_INFO);
|
||||||
|
assertTrue(logAppender.list.stream().map(ILoggingEvent::getFormattedMessage)
|
||||||
|
.anyMatch(message -> message.contains("准备触发自动重算")
|
||||||
|
&& message.contains("projectId=100")
|
||||||
|
&& message.contains("AUTO_PULL_BANK_INFO")
|
||||||
|
&& message.contains("anySuccess=true")));
|
||||||
|
} finally {
|
||||||
|
logger.detachAppender(logAppender);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void processFileAsync_shouldKeepParsingUntilBankStatementsSaved() throws IOException {
|
void processFileAsync_shouldKeepParsingUntilBankStatementsSaved() throws IOException {
|
||||||
List<String> events = new ArrayList<>();
|
List<String> events = new ArrayList<>();
|
||||||
|
|||||||
Reference in New Issue
Block a user