添加订单查询
This commit is contained in:
parent
707d59014d
commit
de6f2bdba5
|
|
@ -0,0 +1,108 @@
|
|||
package cn.qihangerp.erp.service;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
/**
|
||||
* 订单服务类,用于查询订单信息
|
||||
*/
|
||||
public class OrderService {
|
||||
|
||||
// 模拟订单数据
|
||||
private static final Map<String, Order> orderMap = new ConcurrentHashMap<>();
|
||||
|
||||
static {
|
||||
// 初始化一些模拟订单数据
|
||||
orderMap.put("ORDER001", new Order("ORDER001", "2026-03-01", "张三", 1299.99, "待发货"));
|
||||
orderMap.put("ORDER002", new Order("ORDER002", "2026-03-02", "李四", 899.99, "已发货"));
|
||||
orderMap.put("ORDER003", new Order("ORDER003", "2026-03-03", "王五", 599.99, "已完成"));
|
||||
orderMap.put("ORDER004", new Order("ORDER004", "2026-03-04", "赵六", 1999.99, "待发货"));
|
||||
orderMap.put("ORDER005", new Order("ORDER005", "2026-03-05", "钱七", 399.99, "已发货"));
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据订单号查询订单
|
||||
* @param orderId 订单号
|
||||
* @return 订单信息
|
||||
*/
|
||||
public Order getOrderById(String orderId) {
|
||||
return orderMap.get(orderId);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取所有订单
|
||||
* @return 订单列表
|
||||
*/
|
||||
public List<Order> getAllOrders() {
|
||||
return new ArrayList<>(orderMap.values());
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据状态查询订单
|
||||
* @param status 订单状态
|
||||
* @return 订单列表
|
||||
*/
|
||||
public List<Order> getOrdersByStatus(String status) {
|
||||
List<Order> orders = new ArrayList<>();
|
||||
for (Order order : orderMap.values()) {
|
||||
if (order.getStatus().equals(status)) {
|
||||
orders.add(order);
|
||||
}
|
||||
}
|
||||
return orders;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取待发货订单
|
||||
* @return 待发货订单列表
|
||||
*/
|
||||
public List<Order> getPendingOrders() {
|
||||
return getOrdersByStatus("待发货");
|
||||
}
|
||||
|
||||
/**
|
||||
* 订单实体类
|
||||
*/
|
||||
public static class Order {
|
||||
private String orderId;
|
||||
private String orderDate;
|
||||
private String customerName;
|
||||
private double totalAmount;
|
||||
private String status;
|
||||
|
||||
public Order(String orderId, String orderDate, String customerName, double totalAmount, String status) {
|
||||
this.orderId = orderId;
|
||||
this.orderDate = orderDate;
|
||||
this.customerName = customerName;
|
||||
this.totalAmount = totalAmount;
|
||||
this.status = status;
|
||||
}
|
||||
|
||||
public String getOrderId() {
|
||||
return orderId;
|
||||
}
|
||||
|
||||
public String getOrderDate() {
|
||||
return orderDate;
|
||||
}
|
||||
|
||||
public String getCustomerName() {
|
||||
return customerName;
|
||||
}
|
||||
|
||||
public double getTotalAmount() {
|
||||
return totalAmount;
|
||||
}
|
||||
|
||||
public String getStatus() {
|
||||
return status;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "订单号: " + orderId + ", 日期: " + orderDate + ", 客户: " + customerName + ", 金额: " + totalAmount + ", 状态: " + status;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,85 @@
|
|||
package cn.qihangerp.erp.service;
|
||||
|
||||
import dev.langchain4j.agent.tool.Tool;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 订单工具服务,用于AI查询订单信息
|
||||
*/
|
||||
public class OrderToolService {
|
||||
|
||||
private final OrderService orderService;
|
||||
|
||||
public OrderToolService() {
|
||||
this.orderService = new OrderService();
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询指定订单号的订单信息
|
||||
* @param orderId 订单号
|
||||
* @return 订单信息
|
||||
*/
|
||||
@Tool("根据订单号查询订单信息")
|
||||
public String getOrderById(String orderId) {
|
||||
OrderService.Order order = orderService.getOrderById(orderId);
|
||||
if (order == null) {
|
||||
return "未找到订单号为" + orderId + "的订单";
|
||||
}
|
||||
return order.toString().replace("\n", "<br>");
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询所有订单
|
||||
* @return 所有订单信息
|
||||
*/
|
||||
@Tool("获取所有订单信息")
|
||||
public String getAllOrders() {
|
||||
List<OrderService.Order> orders = orderService.getAllOrders();
|
||||
if (orders.isEmpty()) {
|
||||
return "暂无订单数据";
|
||||
}
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.append("所有订单信息:<br>");
|
||||
for (OrderService.Order order : orders) {
|
||||
sb.append(order.toString()).append("<br>");
|
||||
}
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询指定状态的订单
|
||||
* @param status 订单状态
|
||||
* @return 订单信息
|
||||
*/
|
||||
@Tool("根据状态查询订单信息")
|
||||
public String getOrdersByStatus(String status) {
|
||||
List<OrderService.Order> orders = orderService.getOrdersByStatus(status);
|
||||
if (orders.isEmpty()) {
|
||||
return "暂无状态为" + status + "的订单";
|
||||
}
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.append("状态为").append(status).append("的订单:<br>");
|
||||
for (OrderService.Order order : orders) {
|
||||
sb.append(order.toString()).append("<br>");
|
||||
}
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询待发货订单
|
||||
* @return 待发货订单信息
|
||||
*/
|
||||
@Tool("获取待发货订单信息")
|
||||
public String getPendingOrders() {
|
||||
List<OrderService.Order> orders = orderService.getPendingOrders();
|
||||
if (orders.isEmpty()) {
|
||||
return "暂无待发货订单";
|
||||
}
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.append("待发货订单:<br>");
|
||||
for (OrderService.Order order : orders) {
|
||||
sb.append(order.toString()).append("<br>");
|
||||
}
|
||||
return sb.toString();
|
||||
}
|
||||
}
|
||||
|
|
@ -3,6 +3,7 @@ package cn.qihangerp.erp.serviceImpl;
|
|||
import dev.langchain4j.model.ollama.OllamaChatModel;
|
||||
import org.springframework.stereotype.Service;
|
||||
import java.time.Duration;
|
||||
import cn.qihangerp.erp.service.OrderToolService;
|
||||
|
||||
/**
|
||||
* AI服务类,使用LangChain4J调用Ollama模型处理聊天内容
|
||||
|
|
@ -18,6 +19,29 @@ public class AiService {
|
|||
*/
|
||||
public String processMessage(String message, String model) {
|
||||
try {
|
||||
// 检查是否是订单相关查询
|
||||
if (message.contains("订单")) {
|
||||
// 使用订单服务直接处理
|
||||
OrderToolService orderToolService = new OrderToolService();
|
||||
|
||||
// 简单的意图识别
|
||||
if (message.contains("待发货") || message.contains("未发货")) {
|
||||
return orderToolService.getPendingOrders();
|
||||
} else if (message.contains("所有")) {
|
||||
return orderToolService.getAllOrders();
|
||||
} else if (message.contains("状态")) {
|
||||
// 提取状态
|
||||
String status = message.replaceAll(".*状态为([^,。]+).*", "$1");
|
||||
return orderToolService.getOrdersByStatus(status);
|
||||
} else if (message.contains("订单号") || message.contains("订单ID")) {
|
||||
// 提取订单号
|
||||
String orderId = message.replaceAll(".*[订单号|订单ID][::]([^,。]+).*", "$1");
|
||||
return orderToolService.getOrderById(orderId);
|
||||
} else {
|
||||
// 默认返回所有订单
|
||||
return orderToolService.getAllOrders();
|
||||
}
|
||||
} else {
|
||||
// 根据模型名称创建对应的ChatModel
|
||||
OllamaChatModel modelInstance = OllamaChatModel.builder()
|
||||
.baseUrl("http://localhost:11434") // Ollama默认端口
|
||||
|
|
@ -28,6 +52,7 @@ public class AiService {
|
|||
|
||||
// 调用Ollama模型获取回复
|
||||
return modelInstance.chat(message);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
return "错误: " + e.getMessage();
|
||||
|
|
|
|||
|
|
@ -31,7 +31,7 @@
|
|||
</el-avatar>
|
||||
</div>
|
||||
<div class="message-content">
|
||||
<div class="message-text">{{ message.content }}</div>
|
||||
<div class="message-text" v-html="message.content"></div>
|
||||
<div class="message-time">{{ message.time }}</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -446,6 +446,7 @@ export default {
|
|||
font-size: 14px;
|
||||
line-height: 1.5;
|
||||
margin-bottom: 4px;
|
||||
white-space: pre-line;
|
||||
}
|
||||
|
||||
.message-time {
|
||||
|
|
|
|||
Loading…
Reference in New Issue