Commit 919d2382 authored by 何金镒's avatar 何金镒

假的mcp函数

parent d532e54a
package com.ikonke.konkeaialibabamcp;
import com.ikonke.konkeaialibabamcp.aitools.BatchDeviceTools;
import com.ikonke.konkeaialibabamcp.aitools.CDCSpacesTools;
import com.ikonke.konkeaialibabamcp.aitools.WeatherTools;
import com.ikonke.konkeaialibabamcp.aitools.*;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.ai.tool.ToolCallbackProvider;
import org.springframework.ai.tool.method.MethodToolCallbackProvider;
......@@ -19,9 +17,14 @@ public class KonkeAiAlibabaMcpApplication {
}
@Bean
public ToolCallbackProvider tools(BatchDeviceTools deviceTools, WeatherTools weatherTools, CDCSpacesTools cdcSpacesTools) {
public ToolCallbackProvider tools(BatchDeviceTools deviceTools,
WeatherTools weatherTools,
CDCSpacesTools cdcSpacesTools,
CDCRobotTools cdcRobotTools,
CDCVisitorTools cdcVisitorTools,
CDCPropertyTools cdcPropertyTools) {
return MethodToolCallbackProvider.builder()
.toolObjects(deviceTools, weatherTools, cdcSpacesTools)
.toolObjects(deviceTools, weatherTools, cdcSpacesTools,cdcRobotTools,cdcVisitorTools,cdcPropertyTools)
.build();
}
......
//package com.ikonke.konkeaialibabamcp.aitools;
//
//
//import com.ikonke.konkeaialibabamcp.service.cdc.property.Property;
//import lombok.extern.slf4j.Slf4j;
//import org.springframework.ai.tool.annotation.Tool;
//import org.springframework.ai.tool.annotation.ToolParam;
//import org.springframework.stereotype.Service;
//
///**
// * 物业相关
// */
//@Slf4j
//@Service
//public class CDCPropertyTools {
//
// private final Property property;
//
// public CDCPropertyTools(Property property) {
// this.property = property;
// }
//
//
//
// @Tool(description = "社区物业相关:新增物业工单")
// public String addWorkOrder(@ToolParam(description = "设备的sn号,如:00226DA86A12")String sn,
// @ToolParam(description = "工单描述,如:3楼楼道的灯坏了,维修一下。")String description){
// log.info("mcp调用--->社区物业相关:新增物业工单:sn:{},description:{}",sn,description);
// return property.addWorkOrder(sn,description);
// }
//}
package com.ikonke.konkeaialibabamcp.aitools;
import com.ikonke.konkeaialibabamcp.service.cdc.property.Property;
import lombok.extern.slf4j.Slf4j;
import org.springframework.ai.tool.annotation.Tool;
import org.springframework.ai.tool.annotation.ToolParam;
import org.springframework.stereotype.Service;
/**
* 物业相关
*/
@Slf4j
@Service
public class CDCPropertyTools {
private final Property property;
public CDCPropertyTools(Property property) {
this.property = property;
}
@Tool(description = "社区物业相关:新增物业工单")
public String addWorkOrder(@ToolParam(description = "设备的sn号,如:00226DA86A12")String sn,
@ToolParam(description = "工单描述,如:21栋二单元3楼的左楼道的灯坏了,请派人来维修一下。")String description){
log.info("【{}】mcp调用--->社区物业相关:新增物业工单:description:{}",sn,description);
return property.addWorkOrder(sn,description);
}
}
//package com.ikonke.konkeaialibabamcp.aitools;
//
//import com.ikonke.konkeaialibabamcp.service.cdc.robot.CommunityRobot;
//import lombok.extern.slf4j.Slf4j;
//import org.springframework.ai.tool.annotation.Tool;
//import org.springframework.ai.tool.annotation.ToolParam;
//import org.springframework.stereotype.Service;
//
//
///**
// * 机器人相关
// */
//@Slf4j
//@Service
//public class CDCRobotTools {
//
// private final CommunityRobot robot;
//
// public CDCRobotTools(CommunityRobot robot) {
// this.robot = robot;
// }
//
// /**
// * 预约垃圾机器人
// *
// */
// @Tool(description = "社区机器人相关:预约垃圾回收机器人:垃圾回收机器人上门回收垃圾")
// public String bookingLitterRobot(@ToolParam(description = "设备的sn号,如:00226DA86A12")String sn){
// log.info("mcp调用--->预约垃圾机器人:垃圾代收下单:sn:{}",sn);
// return robot.bookingLitterRobot(sn);
// }
//
//
// /**
// * 预约配送机器人
// */
// @Tool(description = "社区机器人相关:预约配送机器人:配送机器人上门取件配送")
// public String bookingDeliveryRobot(@ToolParam(description = "设备的sn号,如:00226DA86A12")String sn){
// log.info("mcp调用--->预约配送机器人:机器人配送下单:sn:{}",sn);
// return robot.bookingDeliveryRobot(sn);
// }
//}
package com.ikonke.konkeaialibabamcp.aitools;
import com.ikonke.konkeaialibabamcp.service.cdc.robot.CommunityRobot;
import lombok.extern.slf4j.Slf4j;
import org.springframework.ai.tool.annotation.Tool;
import org.springframework.ai.tool.annotation.ToolParam;
import org.springframework.stereotype.Service;
/**
* 机器人相关
*/
@Slf4j
@Service
public class CDCRobotTools {
private final CommunityRobot robot;
public CDCRobotTools(CommunityRobot robot) {
this.robot = robot;
}
/**
* 预约垃圾机器人
*
*/
@Tool(description = "社区机器人相关:预约垃圾回收机器人:垃圾回收机器人上门回收垃圾")
public String bookingLitterRobot(@ToolParam(description = "设备的sn号,如:00226DA86A12")String sn,
@ToolParam(description = "预约的时间(不能小于当前的日期),如:2025-08-12 13:20:00")String date){
log.info("【{}】mcp调用--->预约垃圾机器人:垃圾代收下单:时间:{}",sn,date);
return robot.bookingLitterRobot(sn, date);
}
/**
* 预约配送机器人
*/
@Tool(description = "社区机器人相关:预约配送机器人:配送机器人上门取件配送")
public String bookingDeliveryRobot(@ToolParam(description = "设备的sn号,如:00226DA86A12")String sn,
@ToolParam(description = "预约的时间(不能小于当前的日期),如:2025-08-12 13:22:00")String date){
log.info("mcp调用--->预约配送机器人:机器人配送下单:sn:{},时间:{}",sn,date);
return robot.bookingDeliveryRobot(sn,date);
}
}
package com.ikonke.konkeaialibabamcp.aitools;
import lombok.extern.slf4j.Slf4j;
import org.springframework.ai.tool.annotation.Tool;
import org.springframework.ai.tool.annotation.ToolParam;
import org.springframework.stereotype.Service;
/**
* 访客相关
*/
//@Slf4j
//@Service
//public class CDCVisitorTools {
//
//}
@Slf4j
@Service
public class CDCVisitorTools {
@Tool(description = "社区访客相关:访客预约")
public String visitorAppointments(@ToolParam(description = "设备的sn号,如:00226DA86A12")String sn,
@ToolParam(description = "访客姓名,如:张三")String name,
@ToolParam(description = "访客的车牌号,如:沪BDF1234")String cartNumber,
@ToolParam(description = "访客上门的时间,如:2025-08-12")String date){
log.info("【{}】mcp调用--->访客相关:访客预约,cartNumber:{},时间:{}",sn,cartNumber,date);
return "已为访客 "+name+" 的车牌号 "+cartNumber+" 在 "+date+" 预约成功";
}
}
......@@ -190,11 +190,11 @@ public class CDCController {
@GetMapping("/bookingLitterRobot")
public String bookingLitterRobot(@RequestParam(name = "sn")String sn){
log.info("bookingLitterRobot--->预约垃圾机器人:垃圾代收下单:sn:{}",sn);
return robot.bookingLitterRobot(sn);
return robot.bookingLitterRobot(sn,null);
}
@GetMapping("/bookingDeliveryRobot")
public String bookingDeliveryRobot(@RequestParam(name = "sn")String sn){
log.info("bookingDeliveryRobot--->预约配送机器人:机器人配送下单:sn:{}",sn);
return robot.bookingDeliveryRobot(sn);
return robot.bookingDeliveryRobot(sn,null);
}
}
......@@ -52,6 +52,9 @@ public class DifyControllerV2 {
@Value("${dify.key}")
private String dify_api_key;
@Value("${cdc.mcpAuthorization}")
private String mcpAuthorization;
public DifyControllerV2(ApplicationEventPublisher eventPublisher) {
this.eventPublisher = eventPublisher;
}
......@@ -176,10 +179,15 @@ public class DifyControllerV2 {
String url = "http://172.17.12.12:8088/v1/chat-messages";
JSONObject inputs = new JSONObject();
inputs.set("Authorization",mcpAuthorization);
inputs.set("ccuName",token.getCcuId());
inputs.set("sn",sn);
inputs.set("token",token.getAccessToken());
if(StrUtil.isNotBlank(userEntity.getCommunityCode())){
inputs.set("communityCode",userEntity.getCommunityCode());
}else{
inputs.set("communityCode","communityCode");
}
inputs.set("communityId",userEntity.getCommunityId());
inputs.set("easId",userEntity.getEasId());
inputs.set("roomId",userEntity.getRoomInfo().getRoomId());
......
......@@ -24,22 +24,24 @@ public class Property {
* 添加物业工单
*/
public String addWorkOrder(String sn,String description){
UserEntity userEntity = cdcHttpUtils.getOwner(sn);
return "已成功创建工单,社区会及时为您处理";
JSONObject body = new JSONObject();
body.set("communityId",userEntity.getCommunityId());
// UserEntity userEntity = cdcHttpUtils.getOwner(sn);
//
// JSONObject body = new JSONObject();
// body.set("communityId",userEntity.getCommunityId());
// body.set("serviceName",);
// body.set("serviceSubType",);
// body.set("description",description);
String post = cdcHttpUtils.post(addWorkOrderUrl, sn, body.toString());
JSONObject jsonObject = JSONUtil.parseObj( post);
if(jsonObject.getInt("code") == 200){
return "预约工单成功";
}else{
log.error("bookingLitterRobotUrl error:{}",jsonObject.getStr("msg"));
return "预约工单失败";
}
//
// String post = cdcHttpUtils.post(addWorkOrderUrl, sn, body.toString());
// JSONObject jsonObject = JSONUtil.parseObj( post);
// if(jsonObject.getInt("code") == 200){
// return "预约工单成功";
// }else{
// log.error("bookingLitterRobotUrl error:{}",jsonObject.getStr("msg"));
// return "预约工单失败";
// }
}
}
package com.ikonke.konkeaialibabamcp.service.cdc.robot;
import cn.hutool.core.util.RandomUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONObject;
......@@ -24,49 +25,55 @@ public class CommunityRobot {
@Autowired
private CdcHttpUtils cdcHttpUtils;
public String bookingLitterRobot(String sn){
UserEntity userEntity = cdcHttpUtils.getOwner(sn);
public String bookingLitterRobot(String sn,String data){
JSONObject body = new JSONObject();
body.set("buildingId",userEntity.getOwnerRoom().getBuildingId());
body.set("roomId",userEntity.getOwnerRoom().getRoomId());
return "已成功预约垃圾回收机器人,预计在"+data+"上门,请业主做好准备,开机密码是:"+ RandomUtil.randomString(5);
String post = cdcHttpUtils.post(bookingLitterRobotUrl, sn, body.toString());
JSONObject jsonObject = JSONUtil.parseObj( post);
if(jsonObject.getInt("code") == 200){
return "预约垃圾回收机器人成功";
}else{
log.error("bookingLitterRobotUrl error:{}",jsonObject.getStr("msg"));
return "预约垃圾回收机器人失败";
}
// UserEntity userEntity = cdcHttpUtils.getOwner(sn);
//
// JSONObject body = new JSONObject();
// body.set("buildingId",userEntity.getOwnerRoom().getBuildingId());
// body.set("roomId",userEntity.getOwnerRoom().getRoomId());
//
// String post = cdcHttpUtils.post(bookingLitterRobotUrl, sn, body.toString());
// JSONObject jsonObject = JSONUtil.parseObj( post);
// if(jsonObject.getInt("code") == 200){
// return "预约垃圾回收机器人成功";
// }else{
// log.error("bookingLitterRobotUrl error:{}",jsonObject.getStr("msg"));
// return "预约垃圾回收机器人失败";
// }
}
public String bookingDeliveryRobot(String sn){
UserEntity userEntity = cdcHttpUtils.getOwner(sn);
//1、获取初始点位:发货人
//2、获取业主的点位:收货人
public String bookingDeliveryRobot(String sn,String data){
JSONObject body = new JSONObject();
body.set("senderId","");
body.set("senderName","");
body.set("senderPhone","");
body.set("startAddress","");
body.set("startAddressId","");
body.set("consigneeName","");
body.set("consigneePhone","");
body.set("endAddress","");
body.set("endAddressId","");
body.set("waitTime","");
return "已成功预约配送机器人,预计在"+data+"上门,请业主做好准备,开机密码是:"+ RandomUtil.randomString(5);
String post = cdcHttpUtils.post(bookingDeliveryRobotUrl, sn, body.toString());
JSONObject jsonObject = JSONUtil.parseObj( post);
if(jsonObject.getInt("code") == 200){
return "预约配送机器人成功";
}else{
log.error("bookingDeliveryRobotUrl error:{}",jsonObject.getStr("msg"));
return "预约配送机器人失败";
}
// UserEntity userEntity = cdcHttpUtils.getOwner(sn);
//
// //1、获取初始点位:发货人
// //2、获取业主的点位:收货人
//
// JSONObject body = new JSONObject();
// body.set("senderId","");
// body.set("senderName","");
// body.set("senderPhone","");
// body.set("startAddress","");
// body.set("startAddressId","");
// body.set("consigneeName","");
// body.set("consigneePhone","");
// body.set("endAddress","");
// body.set("endAddressId","");
// body.set("waitTime","");
//
// String post = cdcHttpUtils.post(bookingDeliveryRobotUrl, sn, body.toString());
// JSONObject jsonObject = JSONUtil.parseObj( post);
// if(jsonObject.getInt("code") == 200){
// return "预约配送机器人成功";
// }else{
// log.error("bookingDeliveryRobotUrl error:{}",jsonObject.getStr("msg"));
// return "预约配送机器人失败";
// }
}
/**
......
......@@ -57,8 +57,8 @@ dify:
key: app-Lev1PRD3VBWH9P0AhfnywKJT
cdc:
mcpAuthorization: Bearer mcp_client_konke_RTbMcnztTce6lxP6blB24zlK26H0XJHx
timeout: 20000
# url: https://sqdn.cndmega.com/prod-v2.0.1
url: http://community.jfzhtest.com/prod-api
url: https://sqdn.cndmega.com/prod-v2.0.1
difyChatSteamMessages: http://127.0.0.1:${server.port}
......@@ -28,6 +28,8 @@ mybatis-plus:
logging:
level:
com.baomidou.mybatisplus: DEBUG
org.springframework.cloud.sleuth: DEBUG
root: info
file:
path: ./log/${server.port}
......@@ -50,6 +52,7 @@ dify:
key: app-Lev1PRD3VBWH9P0AhfnywKJT
cdc:
mcpAuthorization: Bearer mcp_client_konke_RTbMcnztTce6lxP6blB24zlK26H0XJHx
timeout: 20000
url: http://community.jfzhtest.com/prod-api
difyChatSteamMessages: http://172.17.12.12:${server.port}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment