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

假的mcp函数

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