package com.zy.ai.service.impl;
|
|
import com.alibaba.fastjson.JSON;
|
import com.zy.ai.entity.AiDataAnalysisReport;
|
import com.zy.ai.entity.AiDataAnalysisUploadLog;
|
import com.zy.ai.service.AiDataAnalysisUploadLogService;
|
import com.zy.ai.service.DataAnalysisUploadService;
|
import com.zy.common.utils.HttpHandler;
|
import com.zy.system.service.ConfigService;
|
import lombok.RequiredArgsConstructor;
|
import lombok.extern.slf4j.Slf4j;
|
import org.springframework.stereotype.Service;
|
|
import java.util.Date;
|
import java.util.LinkedHashMap;
|
import java.util.Map;
|
|
@Slf4j
|
@Service("dataAnalysisUploadService")
|
@RequiredArgsConstructor
|
public class DataAnalysisUploadServiceImpl implements DataAnalysisUploadService {
|
|
private static final String CONFIG_UPLOAD_ENABLED = "aiDataAnalysisUploadEnabled";
|
private static final String CONFIG_UPLOAD_URL = "aiDataAnalysisUploadUrl";
|
|
private final ConfigService configService;
|
private final AiDataAnalysisUploadLogService aiDataAnalysisUploadLogService;
|
|
@Override
|
public UploadResult upload(AiDataAnalysisReport report) {
|
if (!isUploadEnabled()) {
|
return UploadResult.skipped();
|
}
|
|
String url = configService.getConfigValue(CONFIG_UPLOAD_URL, "");
|
if (url == null || url.trim().isEmpty()) {
|
return UploadResult.skipped();
|
}
|
|
Map<String, Object> payload = new LinkedHashMap<>();
|
payload.put("reportId", report.getId());
|
payload.put("periodType", report.getPeriodType());
|
payload.put("periodStart", report.getPeriodStart());
|
payload.put("periodEnd", report.getPeriodEnd());
|
payload.put("triggerType", report.getTriggerType());
|
payload.put("status", report.getStatus());
|
payload.put("summary", report.getSummary());
|
payload.put("structuredData", report.getStructuredData());
|
payload.put("totalTokens", report.getTotalTokens());
|
payload.put("createTime", report.getCreateTime());
|
|
String jsonBody = JSON.toJSONString(payload);
|
AiDataAnalysisUploadLog uploadLog = new AiDataAnalysisUploadLog();
|
uploadLog.setReportId(report.getId());
|
uploadLog.setUploadUrl(url);
|
uploadLog.setRequestBody(jsonBody);
|
uploadLog.setCreateTime(new Date());
|
|
try {
|
HttpHandler httpHandler = new HttpHandler.Builder()
|
.setUri(url)
|
.setJson(jsonBody)
|
.setTimeout(30, java.util.concurrent.TimeUnit.SECONDS)
|
.build();
|
|
String response = httpHandler.doPost();
|
uploadLog.setHttpStatus(200);
|
uploadLog.setResponseBody(response);
|
uploadLog.setResult("success");
|
aiDataAnalysisUploadLogService.save(uploadLog);
|
log.info("Data analysis report uploaded, reportId={}, url={}", report.getId(), url);
|
return UploadResult.success(200, response);
|
} catch (Exception e) {
|
log.warn("Failed to upload data analysis report, reportId={}, url={}", report.getId(), url, e);
|
uploadLog.setResult("failed");
|
uploadLog.setErrorMessage(e.getMessage());
|
aiDataAnalysisUploadLogService.save(uploadLog);
|
return UploadResult.failed(null, e.getMessage());
|
}
|
}
|
|
private boolean isUploadEnabled() {
|
String value = configService.getConfigValue(CONFIG_UPLOAD_ENABLED, "0");
|
return "1".equals(value.trim());
|
}
|
}
|