package com.zy.ai.utils;
|
|
import com.alibaba.fastjson.JSON;
|
import com.baomidou.mybatisplus.mapper.EntityWrapper;
|
import com.zy.ai.entity.DeviceRealTimeData;
|
import com.zy.ai.entity.WcsDiagnosisRequest;
|
import com.zy.ai.entity.enums.RedisKeyType;
|
import com.zy.ai.log.AiLogAppender;
|
import com.zy.asrs.entity.ApiLog;
|
import com.zy.asrs.entity.BasCrnp;
|
import com.zy.asrs.entity.BasDevp;
|
import com.zy.asrs.entity.BasRgv;
|
import com.zy.asrs.service.ApiLogService;
|
import com.zy.asrs.service.BasCrnpService;
|
import com.zy.asrs.service.BasDevpService;
|
import com.zy.asrs.service.BasRgvService;
|
import com.zy.common.utils.RedisUtil;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Component;
|
|
import java.util.ArrayList;
|
import java.util.List;
|
|
@Component
|
public class AiUtils {
|
|
@Autowired
|
private BasCrnpService basCrnpService;
|
@Autowired
|
private RedisUtil redisUtil;
|
@Autowired
|
private ApiLogService apiLogService;
|
@Autowired
|
private BasDevpService basDevpService;
|
@Autowired
|
private BasRgvService basRgvService;
|
|
public WcsDiagnosisRequest makeAiRequest(int logLimit, String alarmMessage) {
|
WcsDiagnosisRequest request = new WcsDiagnosisRequest();
|
|
request.setAlarmMessage(alarmMessage);
|
List<String> logs = AiLogAppender.getRecentLogs(logLimit);
|
request.setLogs(logs);
|
|
List<ApiLog> latestData = apiLogService.getLatestData(200);
|
request.setApiLogs(latestData);
|
|
List<DeviceRealTimeData> deviceRealTimeDataList = new ArrayList<>();
|
request.setDeviceRealtimeData(deviceRealTimeDataList);
|
|
List<BasCrnp> basCrnps = basCrnpService.selectList(new EntityWrapper<>());
|
for (BasCrnp basCrnp : basCrnps) {
|
DeviceRealTimeData deviceRealTimeData = new DeviceRealTimeData();
|
deviceRealTimeData.setDeviceNo(basCrnp.getCrnNo());
|
deviceRealTimeData.setDeviceType("堆垛机");
|
deviceRealTimeData.setDeviceData(JSON.toJSONString(basCrnp));
|
deviceRealTimeDataList.add(deviceRealTimeData);
|
}
|
|
List<BasDevp> basDevps = basDevpService.selectList(new EntityWrapper<>());
|
for (BasDevp basDevp : basDevps) {
|
DeviceRealTimeData deviceRealTimeData = new DeviceRealTimeData();
|
deviceRealTimeData.setDeviceNo(basDevp.getDevNo());
|
deviceRealTimeData.setDeviceType("输送站点");
|
deviceRealTimeData.setDeviceData(JSON.toJSONString(basDevp));
|
deviceRealTimeDataList.add(deviceRealTimeData);
|
}
|
|
List<BasRgv> basRgvs = basRgvService.selectList(new EntityWrapper<>());
|
for (BasRgv basRgv : basRgvs) {
|
DeviceRealTimeData deviceRealTimeData = new DeviceRealTimeData();
|
deviceRealTimeData.setDeviceNo(basRgv.getRgvNo());
|
deviceRealTimeData.setDeviceType("RGV小车");
|
deviceRealTimeData.setDeviceData(JSON.toJSONString(basRgv));
|
deviceRealTimeDataList.add(deviceRealTimeData);
|
}
|
return request;
|
}
|
|
public String buildDiagnosisUserContent(WcsDiagnosisRequest request) {
|
StringBuilder sb = new StringBuilder();
|
|
if (request.getAlarmMessage() != null && !request.getAlarmMessage().isEmpty()) {
|
sb.append("【问题描述】\n");
|
sb.append(request.getAlarmMessage()).append("\n\n");
|
}
|
|
Object pseudo = redisUtil.get(RedisKeyType.MAIN_PROCESS_PSEUDOCODE.key);
|
if (pseudo != null) {
|
sb.append("【主流程伪代码 mainProcessPseudo】\n");
|
sb.append(String.valueOf(pseudo)).append("\n\n");
|
}
|
|
if (request.getExtraContext() != null && !request.getExtraContext().isEmpty()) {
|
sb.append("【额外上下文 extraContext】\n");
|
sb.append(JSON.toJSONString(request.getExtraContext(), true)).append("\n\n");
|
}
|
|
if (request.getTasks() != null && !request.getTasks().isEmpty()) {
|
sb.append("【任务信息 tasks】\n");
|
sb.append("下面是当前相关任务列表的 JSON 数据:\n");
|
sb.append(JSON.toJSONString(request.getTasks(), true)).append("\n\n");
|
} else {
|
sb.append("【任务信息 tasks】\n");
|
sb.append("当前未提供任务信息。\n\n");
|
}
|
|
if (request.getDeviceRealtimeData() != null && !request.getDeviceRealtimeData().isEmpty()) {
|
sb.append("【设备实时数据 deviceRealtimeData】\n");
|
sb.append("下面是各设备当前实时状态的 JSON 数据:\n");
|
sb.append(JSON.toJSONString(request.getDeviceRealtimeData(), true)).append("\n\n");
|
} else {
|
sb.append("【设备实时数据 deviceRealtimeData】\n");
|
sb.append("当前未提供设备实时数据。\n\n");
|
}
|
|
if (request.getDeviceConfigs() != null && !request.getDeviceConfigs().isEmpty()) {
|
sb.append("【设备配置信息 deviceConfigs】\n");
|
sb.append("下面是各设备配置的 JSON 数据:\n");
|
sb.append(JSON.toJSONString(request.getDeviceConfigs(), true)).append("\n\n");
|
} else {
|
sb.append("【设备配置信息 deviceConfigs】\n");
|
sb.append("当前未提供设备配置信息。\n\n");
|
}
|
|
if (request.getLogs() != null && !request.getLogs().isEmpty()) {
|
sb.append("【系统日志 logs(按时间顺序)】\n");
|
for (String logLine : request.getLogs()) {
|
sb.append(logLine).append("\n");
|
}
|
} else {
|
sb.append("【系统日志 logs(按时间顺序)】\n");
|
sb.append("当前未提供日志信息。\n");
|
}
|
|
if (request.getSystemConfigs() != null && !request.getSystemConfigs().isEmpty()) {
|
sb.append("【系统配置 sys_config】\n");
|
sb.append("下面是各系统配置的 JSON 数据:\n");
|
sb.append(JSON.toJSONString(request.getSystemConfigs(), true)).append("\n\n");
|
}
|
|
if (request.getApiLogs() != null && !request.getApiLogs().isEmpty()) {
|
sb.append("【三方接口日志 man_api_log】\n");
|
sb.append("下面是三方接口日志的 JSON 数据:\n");
|
sb.append(JSON.toJSONString(request.getApiLogs(), true)).append("\n\n");
|
}
|
|
sb.append("\n请根据以上所有信息,结合你的经验进行分析诊断。");
|
|
return sb.toString();
|
}
|
|
public String buildAskUserContent(WcsDiagnosisRequest request) {
|
StringBuilder sb = new StringBuilder();
|
|
if (request.getExtraContext() != null && !request.getExtraContext().isEmpty()) {
|
sb.append("【额外上下文 extraContext】\n");
|
sb.append(JSON.toJSONString(request.getExtraContext(), true)).append("\n\n");
|
}
|
|
if (request.getTasks() != null && !request.getTasks().isEmpty()) {
|
sb.append("【任务信息 tasks】\n");
|
sb.append("下面是当前相关任务列表的 JSON 数据:\n");
|
sb.append(JSON.toJSONString(request.getTasks(), true)).append("\n\n");
|
}
|
|
if (request.getDeviceRealtimeData() != null && !request.getDeviceRealtimeData().isEmpty()) {
|
sb.append("【设备实时数据 deviceRealtimeData】\n");
|
sb.append("下面是各设备当前实时状态的 JSON 数据:\n");
|
sb.append(JSON.toJSONString(request.getDeviceRealtimeData(), true)).append("\n\n");
|
}
|
|
if (request.getDeviceConfigs() != null && !request.getDeviceConfigs().isEmpty()) {
|
sb.append("【设备配置信息 deviceConfigs】\n");
|
sb.append("下面是各设备配置的 JSON 数据:\n");
|
sb.append(JSON.toJSONString(request.getDeviceConfigs(), true)).append("\n\n");
|
}
|
|
if (request.getLogs() != null && !request.getLogs().isEmpty()) {
|
sb.append("【系统日志 logs(按时间顺序)】\n");
|
for (String logLine : request.getLogs()) {
|
sb.append(logLine).append("\n");
|
}
|
}
|
|
if (request.getSystemConfigs() != null && !request.getSystemConfigs().isEmpty()) {
|
sb.append("【系统配置 sys_config】\n");
|
sb.append("下面是各系统配置的 JSON 数据:\n");
|
sb.append(JSON.toJSONString(request.getSystemConfigs(), true)).append("\n\n");
|
}
|
|
if (request.getApiLogs() != null && !request.getApiLogs().isEmpty()) {
|
sb.append("【三方接口日志 man_api_log】\n");
|
sb.append("下面是三方接口日志的 JSON 数据:\n");
|
sb.append(JSON.toJSONString(request.getApiLogs(), true)).append("\n\n");
|
}
|
|
return sb.toString();
|
}
|
|
}
|