diff --git a/crm-mcp/src/main/java/net/rzdata/mcp/server/crm/CrmMcpService.java b/crm-mcp/src/main/java/net/rzdata/mcp/server/crm/CrmMcpService.java index b3a5661..20cc463 100644 --- a/crm-mcp/src/main/java/net/rzdata/mcp/server/crm/CrmMcpService.java +++ b/crm-mcp/src/main/java/net/rzdata/mcp/server/crm/CrmMcpService.java @@ -193,6 +193,78 @@ public class CrmMcpService { return executeRequest("ai/query/listOrdersByContractCode", requestBody); } + @Tool(description = "根据订单编码、客户编码或客户名称查询出库单编码列表(支持时间区间)") + public String listStockoutsByCondition( + @ToolParam(description = "订单编码(即订单号),值一般是由字母、数字和'-'组成,特征一般类似于'NJ00027202506090001',或'NJ00027202506090001-G'或'NJ00027202506090001-T-1',或'dev-NJ00027202506090001'", required = false) String orderCode, + @ToolParam(description = "客户编码,一般类似于'XX.XX.XXXX.XXX'格式,例如:01.01.0023.024", required = false) String clientCode, + @ToolParam(description = "客户名称,一般类似于'某某课题组'或'某某公司'或'某某实验室'或'某某经营部'或'某某研究院'或'某某研究所'或'某某测试'等组织,例如:张三课题组,广州小懒科技有限公司,金域测试、金域课题组111、玉尘测试A01、睿展小组3号", required = false) String clientName, + @ToolParam(description = "开始时间,一般类似于'yyyy-MM-dd HH:mm:ss'格式,例如:2024-01-01 00:00:00。非必填", required = false) String startTime, + @ToolParam(description = "结束时间,一般类似于'yyyy-MM-dd HH:mm:ss'格式,例如:2024-01-01 00:00:00。非必填", required = false) String endTime + ) { + JSONObject requestBody = new JSONObject(); + requestBody.put("orderCode", orderCode); + requestBody.put("clientCode", clientCode); + requestBody.put("clientName", clientName); + requestBody.put("startTime", startTime); + requestBody.put("endTime", endTime); + + return executeRequest("ai/query/listStockoutsByCondition", requestBody); + } + + @Tool(description = "根据订单编码、客户编码或客户名称查询退货单编码列表(支持时间区间)") + public String listCancelOrdersByCondition( + @ToolParam(description = "订单编码(即订单号),值一般是由字母、数字和'-'组成,特征一般类似于'NJ00027202506090001',或'NJ00027202506090001-G'或'NJ00027202506090001-T-1',或'dev-NJ00027202506090001'", required = false) String orderCode, + @ToolParam(description = "客户编码,一般类似于'XX.XX.XXXX.XXX'格式,例如:01.01.0023.024", required = false) String clientCode, + @ToolParam(description = "客户名称,一般类似于'某某课题组'或'某某公司'或'某某实验室'或'某某经营部'或'某某研究院'或'某某研究所'或'某某测试'等组织,例如:张三课题组,广州小懒科技有限公司,金域测试、金域课题组111、玉尘测试A01、睿展小组3号", required = false) String clientName, + @ToolParam(description = "开始时间,一般类似于'yyyy-MM-dd HH:mm:ss'格式,例如:2024-01-01 00:00:00。非必填", required = false) String startTime, + @ToolParam(description = "结束时间,一般类似于'yyyy-MM-dd HH:mm:ss'格式,例如:2024-01-01 00:00:00。非必填", required = false) String endTime + ) { + JSONObject requestBody = new JSONObject(); + requestBody.put("orderCode", orderCode); + requestBody.put("clientCode", clientCode); + requestBody.put("clientName", clientName); + requestBody.put("startTime", startTime); + requestBody.put("endTime", endTime); + + return executeRequest("ai/query/listCancelOrdersByCondition", requestBody); + } + + @Tool(description = "根据出库单编码查询出库单详情。stockoutCode是必填项,如果提取不到则输出:请告知需要查询的出库单编码") + public String getStockoutDetail( + @ToolParam(description = "出库单编码,值一般是由字母、数字和'-'组成的出库单标识符") String stockoutCode + ) { + Assert.isTrue(StrUtil.isNotEmpty(stockoutCode), "出库单编码不能为空"); + + JSONObject requestBody = new JSONObject(); + requestBody.put("outCode", stockoutCode); + + return executeRequest("ai/query/getStockoutDetail", requestBody); + } + + @Tool(description = "根据退货单编码查询退货单详情。cancelOrderCode是必填项,如果提取不到则输出:请告知需要查询的退货单编码") + public String getCancelOrderDetail( + @ToolParam(description = "退货单编码,值一般是由字母、数字和'-'组成的退货单标识符") String cancelOrderCode + ) { + Assert.isTrue(StrUtil.isNotEmpty(cancelOrderCode), "退货单编码不能为空"); + + JSONObject requestBody = new JSONObject(); + requestBody.put("cancelCode", cancelOrderCode); + + return executeRequest("ai/query/getCancelOrderDetail", requestBody); + } + + @Tool(description = "根据合同编码查询合同详情。contractCode是必填项,如果提取不到则输出:请告知需要查询的合同编码") + public String getContractDetail( + @ToolParam(description = "合同编码,值一般是由字母、数字和'-'组成的合同标识符") String contractCode + ) { + Assert.isTrue(StrUtil.isNotEmpty(contractCode), "合同编码不能为空"); + + JSONObject requestBody = new JSONObject(); + requestBody.put("conCode", contractCode); + + return executeRequest("ai/query/getContractDetail", requestBody); + } + @Tool(description = "调用此函数以获取当前准确时间(包括日期和时区),用于代替模型默认推理") public String getCurrentTime() { return DateUtil.format(new Date(), "yyyy-MM-dd HH:mm:ss");