|
|
|
|
@@ -1,7 +1,6 @@
|
|
|
|
|
package com.rj.controller.biz;
|
|
|
|
|
|
|
|
|
|
import com.rj.dto.TopSalesScoreRequestDto;
|
|
|
|
|
import com.rj.dto.DifyWorkflowResponseDto;
|
|
|
|
|
import com.rj.service.biz.ITopSalesScoreResultService;
|
|
|
|
|
import io.swagger.v3.oas.annotations.Operation;
|
|
|
|
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
|
|
|
|
@@ -15,6 +14,8 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
|
|
import com.rj.entity.bz.TopSalesScoreResult;
|
|
|
|
|
|
|
|
|
|
import java.math.BigDecimal;
|
|
|
|
|
import java.time.LocalDateTime;
|
|
|
|
|
import java.util.HashMap;
|
|
|
|
|
import java.util.Map;
|
|
|
|
|
|
|
|
|
|
@@ -98,6 +99,85 @@ public class TopSalesController {
|
|
|
|
|
public ResponseEntity<TopSalesScoreResult> getByWorkflowId(@PathVariable String workflowId) {
|
|
|
|
|
return ResponseEntity.ok(topSalesScoreResultService.getByWorkflowId(workflowId));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@PostMapping("/save-mock-data")
|
|
|
|
|
@Operation(summary = "保存TopSales模拟评分数据")
|
|
|
|
|
public ResponseEntity<Map<String, Object>> saveMockData(@RequestBody TopSalesScoreRequestDto requestDto) {
|
|
|
|
|
Map<String, Object> result = new HashMap<>();
|
|
|
|
|
try {
|
|
|
|
|
// 创建模拟的评分结果
|
|
|
|
|
TopSalesScoreResult mockResult = createMockScoreResult(requestDto);
|
|
|
|
|
|
|
|
|
|
// 直接保存到数据库
|
|
|
|
|
boolean saved = topSalesScoreResultService.save(mockResult);
|
|
|
|
|
|
|
|
|
|
if (saved) {
|
|
|
|
|
result.put("success", true);
|
|
|
|
|
result.put("message", "模拟数据保存成功");
|
|
|
|
|
result.put("data", mockResult);
|
|
|
|
|
return ResponseEntity.ok(result);
|
|
|
|
|
} else {
|
|
|
|
|
result.put("success", false);
|
|
|
|
|
result.put("message", "模拟数据保存失败");
|
|
|
|
|
return ResponseEntity.status(500).body(result);
|
|
|
|
|
}
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
result.put("success", false);
|
|
|
|
|
result.put("message", "保存模拟数据失败: " + e.getMessage());
|
|
|
|
|
log.error("保存TopSales模拟数据失败", e);
|
|
|
|
|
return ResponseEntity.status(500).body(result);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 创建模拟的评分结果
|
|
|
|
|
*/
|
|
|
|
|
private TopSalesScoreResult createMockScoreResult(TopSalesScoreRequestDto requestDto) {
|
|
|
|
|
TopSalesScoreResult result = new TopSalesScoreResult();
|
|
|
|
|
|
|
|
|
|
// 基本信息
|
|
|
|
|
result.setWorkflowId("mock_workflow_" + System.currentTimeMillis());
|
|
|
|
|
result.setSalespersonName(requestDto.getSalespersonName());
|
|
|
|
|
result.setSalespersonPhone(requestDto.getSalespersonPhone());
|
|
|
|
|
result.setDealerName(requestDto.getDealerName());
|
|
|
|
|
result.setDealerPhone(requestDto.getDealerPhone());
|
|
|
|
|
result.setSrcContent(requestDto.getSrcContent());
|
|
|
|
|
result.setSrcId(requestDto.getSrcId());
|
|
|
|
|
result.setSrcDesc(requestDto.getSrcDesc());
|
|
|
|
|
result.setStatus("success");
|
|
|
|
|
result.setCreatedAt(LocalDateTime.now());
|
|
|
|
|
result.setUpdatedAt(LocalDateTime.now());
|
|
|
|
|
|
|
|
|
|
// 生成模拟的15个维度评分 (1-10分)
|
|
|
|
|
result.setNaturalnessScore(generateRandomScore());
|
|
|
|
|
result.setCoherenceScore(generateRandomScore());
|
|
|
|
|
result.setFluencyScore(generateRandomScore());
|
|
|
|
|
result.setAdvisorAggressivenessScore(generateRandomScore());
|
|
|
|
|
result.setAdvisorConsistencyScore(generateRandomScore());
|
|
|
|
|
result.setGreetingReceptionScore(generateRandomScore());
|
|
|
|
|
result.setBrandIntroductionScore(generateRandomScore());
|
|
|
|
|
result.setCustomerNeedsUnderstandingScore(generateRandomScore());
|
|
|
|
|
result.setBudgetUnderstandingScore(generateRandomScore());
|
|
|
|
|
result.setRecommendationScore(generateRandomScore());
|
|
|
|
|
result.setSafetyIntroductionScore(generateRandomScore());
|
|
|
|
|
result.setHealthEnvironmentIntroductionScore(generateRandomScore());
|
|
|
|
|
result.setTechnologyIntroductionScore(generateRandomScore());
|
|
|
|
|
result.setTestDriveInvitationScore(generateRandomScore());
|
|
|
|
|
result.setNegotiationDealScore(generateRandomScore());
|
|
|
|
|
|
|
|
|
|
// 模拟其他字段
|
|
|
|
|
result.setTotalTokens(1000 + (int)(Math.random() * 2000));
|
|
|
|
|
result.setElapsedTime(new BigDecimal(String.format("%.2f", 1.0 + Math.random() * 5.0)));
|
|
|
|
|
|
|
|
|
|
return result;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 生成1-10分的随机评分
|
|
|
|
|
*/
|
|
|
|
|
private Integer generateRandomScore() {
|
|
|
|
|
return 1 + (int)(Math.random() * 10);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|