package com.smtaiserver.smtaiserver.scheduledTasks;
|
|
import com.smtaiserver.smtaiserver.core.SMTAIServerApp;
|
import com.smtaiserver.smtaiserver.core.SMTAIServerRequest;
|
import com.smtaiserver.smtaiserver.database.SMTDatabase;
|
import com.smtaiserver.smtaiserver.javaai.llm.core.SMTLLMConnect;
|
import com.smtaiserver.smtaiserver.javaai.qwen.agent.SMTQwenAgent;
|
import com.smtservlet.util.Json;
|
import com.smtservlet.util.SMTJsonWriter;
|
|
import java.util.Calendar;
|
import java.util.Date;
|
import java.util.Objects;
|
|
import lombok.extern.log4j.Log4j2;
|
import org.apache.logging.log4j.LogManager;
|
import org.apache.logging.log4j.Logger;
|
import org.springframework.scheduling.annotation.Scheduled;
|
import org.springframework.stereotype.Component;
|
|
/**
|
* 这个类是:
|
*
|
* @author: adeng
|
* @date: 2025/4/17 17:03
|
* @version: 1.0
|
*/
|
@Log4j2
|
@Component
|
public class checkForTicketStatusChanges {
|
private static final Logger _logger = LogManager.getLogger(checkForTicketStatusChanges.class);
|
|
@Scheduled(cron = "0/10 * * * * ?")
|
public void execCheckForTicketStatusChanges() throws Exception {
|
String result = (String) SMTAIServerApp.getApp().getGlobalConfig("work_order.inner_order", null);
|
if (Objects.equals(result, "N")) {
|
return;
|
}
|
_logger.info("start execCheckForTicketStatusChanges task");
|
try {
|
Date date = new Date();
|
Calendar cal = Calendar.getInstance();
|
cal.setTime(date);
|
cal.add(Calendar.MINUTE, -5);
|
Date time = cal.getTime();
|
|
try (SMTDatabase db = SMTAIServerApp.getApp().allocDatabase()) {
|
SMTDatabase.DBRecords dbRecords =
|
db.querySQL(
|
"select order_id, stepstatus from work_order_list where is_notify = ? and status_update_time > ? and stepstatus in (1, 4)",
|
new Object[]{"N", time});
|
|
_logger.info("查询到状态为【已接单 或 已完成】的工单数量:{}", dbRecords.getRowCount());
|
|
for (SMTDatabase.DBRecord rec : dbRecords.getRecords()) {
|
String orderId = rec.getString("order_id");
|
int stepstatus = rec.getInteger("stepstatus");
|
|
String configKey;
|
switch (stepstatus) {
|
case 1:
|
configKey = "work_order.workflow_agent_re";
|
break;
|
case 4:
|
configKey = "work_order.workflow_agent_finish";
|
break;
|
default:
|
_logger.warn("不支持的stepstatus: {}", stepstatus);
|
continue;
|
}
|
|
String agentId = (String) SMTAIServerApp.getApp().getGlobalConfig(configKey, "status_changes_received_order");
|
|
SMTQwenAgent agent = SMTAIServerApp.getApp().getQwenAgentManager().getAgentById(agentId);
|
if (agent == null) {
|
_logger.error("找不到Agent: {}", agentId);
|
continue;
|
}
|
|
Json jsonArgs = Json.object("question", "", "order_id", orderId);
|
SMTLLMConnect llm = SMTAIServerApp.getApp().allocLLMConnect(null);
|
SMTAIServerRequest _tranReq = new SMTAIServerRequest();
|
agent.callAgents("/", jsonArgs, llm, "", _tranReq);
|
}
|
}
|
} catch (Exception e) {
|
_logger.error("execCheckForTicketStatusChanges error", e);
|
}
|
}
|
|
}
|