test: 补充流水标签执行日志
This commit is contained in:
@@ -24,10 +24,12 @@ import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
import java.util.concurrent.Executor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
/**
|
||||
* 流水标签服务实现
|
||||
*/
|
||||
@Slf4j
|
||||
@Service
|
||||
public class CcdiBankTagServiceImpl implements ICcdiBankTagService {
|
||||
|
||||
@@ -85,16 +87,23 @@ public class CcdiBankTagServiceImpl implements ICcdiBankTagService {
|
||||
* @param triggerType 触发方式
|
||||
*/
|
||||
public Long rebuildProject(Long projectId, String modelCode, String operator, TriggerType triggerType) {
|
||||
long taskStartTime = System.currentTimeMillis();
|
||||
CcdiBankTagTask task = buildRunningTask(projectId, modelCode, operator, triggerType);
|
||||
taskMapper.insertTask(task);
|
||||
log.info("【流水标签】任务创建成功: taskId={}, projectId={}, modelCode={}, triggerType={}, operator={}",
|
||||
task.getId(), projectId, modelCode, triggerType, operator);
|
||||
|
||||
try {
|
||||
List<CcdiBankTagRule> rules = ruleMapper.selectEnabledRules(modelCode);
|
||||
log.info("【流水标签】加载启用规则完成: taskId={}, projectId={}, modelCode={}, ruleCount={}",
|
||||
task.getId(), projectId, modelCode, rules.size());
|
||||
log.info("【流水标签】开始清理历史结果: taskId={}, projectId={}, modelCode={}",
|
||||
task.getId(), projectId, modelCode);
|
||||
resultMapper.deleteByProjectAndModel(projectId, modelCode);
|
||||
|
||||
List<CompletableFuture<List<CcdiBankTagResult>>> futures = rules.stream()
|
||||
.map(rule -> CompletableFuture.supplyAsync(
|
||||
() -> executeRule(projectId, rule, operator),
|
||||
() -> executeRule(task.getId(), projectId, rule, operator),
|
||||
tagRuleExecutor
|
||||
))
|
||||
.toList();
|
||||
@@ -105,6 +114,8 @@ public class CcdiBankTagServiceImpl implements ICcdiBankTagService {
|
||||
.toList();
|
||||
|
||||
if (!allResults.isEmpty()) {
|
||||
log.info("【流水标签】批量写入标签结果: taskId={}, projectId={}, resultCount={}",
|
||||
task.getId(), projectId, allResults.size());
|
||||
resultMapper.insertBatch(allResults);
|
||||
}
|
||||
|
||||
@@ -117,6 +128,9 @@ public class CcdiBankTagServiceImpl implements ICcdiBankTagService {
|
||||
task.setUpdateBy(operator);
|
||||
task.setUpdateTime(new Date());
|
||||
taskMapper.updateTask(task);
|
||||
log.info("【流水标签】任务执行成功: taskId={}, projectId={}, modelCode={}, triggerType={}, ruleCount={}, hitCount={}, costMs={}",
|
||||
task.getId(), projectId, modelCode, triggerType, rules.size(), allResults.size(),
|
||||
System.currentTimeMillis() - taskStartTime);
|
||||
return task.getId();
|
||||
} catch (Exception ex) {
|
||||
task.setStatus(STATUS_FAILED);
|
||||
@@ -126,6 +140,8 @@ public class CcdiBankTagServiceImpl implements ICcdiBankTagService {
|
||||
task.setUpdateBy(operator);
|
||||
task.setUpdateTime(new Date());
|
||||
taskMapper.updateTask(task);
|
||||
log.error("【流水标签】任务执行失败: taskId={}, projectId={}, modelCode={}, triggerType={}, error={}",
|
||||
task.getId(), projectId, modelCode, triggerType, ex.getMessage(), ex);
|
||||
throw ex;
|
||||
}
|
||||
}
|
||||
@@ -149,15 +165,35 @@ public class CcdiBankTagServiceImpl implements ICcdiBankTagService {
|
||||
return task;
|
||||
}
|
||||
|
||||
private List<CcdiBankTagResult> executeRule(Long projectId, CcdiBankTagRule rule, String operator) {
|
||||
private List<CcdiBankTagResult> executeRule(Long taskId, Long projectId, CcdiBankTagRule rule, String operator) {
|
||||
long startTime = System.currentTimeMillis();
|
||||
log.info("【流水标签】规则开始执行: taskId={}, projectId={}, ruleCode={}, resultType={}",
|
||||
taskId, projectId, rule.getRuleCode(), rule.getResultType());
|
||||
BankTagRuleExecutionConfig config = configResolver.resolve(projectId, rule);
|
||||
log.debug("【流水标签】规则执行参数: taskId={}, ruleCode={}, thresholds={}",
|
||||
taskId, rule.getRuleCode(), config.getThresholdValues());
|
||||
if (RESULT_TYPE_STATEMENT.equals(rule.getResultType())) {
|
||||
List<BankTagStatementHitVO> hits = executeStatementRule(projectId, rule, config);
|
||||
return buildStatementResults(projectId, rule, hits, operator);
|
||||
List<CcdiBankTagResult> results = buildStatementResults(projectId, rule, hits, operator);
|
||||
logRuleCompletion(taskId, projectId, rule.getRuleCode(), results.size(), startTime);
|
||||
return results;
|
||||
}
|
||||
|
||||
List<BankTagObjectHitVO> hits = executeObjectRule(projectId, rule, config);
|
||||
return buildObjectResults(projectId, rule, hits, operator);
|
||||
List<CcdiBankTagResult> results = buildObjectResults(projectId, rule, hits, operator);
|
||||
logRuleCompletion(taskId, projectId, rule.getRuleCode(), results.size(), startTime);
|
||||
return results;
|
||||
}
|
||||
|
||||
private void logRuleCompletion(Long taskId, Long projectId, String ruleCode, int hitCount, long startTime) {
|
||||
long costMs = System.currentTimeMillis() - startTime;
|
||||
if (hitCount == 0) {
|
||||
log.warn("【流水标签】规则无命中: taskId={}, projectId={}, ruleCode={}, costMs={}",
|
||||
taskId, projectId, ruleCode, costMs);
|
||||
return;
|
||||
}
|
||||
log.info("【流水标签】规则执行完成: taskId={}, projectId={}, ruleCode={}, hitCount={}, costMs={}",
|
||||
taskId, projectId, ruleCode, hitCount, costMs);
|
||||
}
|
||||
|
||||
private List<BankTagStatementHitVO> executeStatementRule(Long projectId,
|
||||
|
||||
Reference in New Issue
Block a user