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 java.util.Calendar; import java.util.Date; 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); /** * 工单状态转变为 已接单 * * @throws Exception */ @Scheduled(cron = "0/10 * * * * ?") public void execCheckForTicketStatusChangesByOrdersTaken() throws Exception { _logger.info("start checkForTicketStatusChanges task"); SMTDatabase db = SMTAIServerApp.getApp().allocDatabase(); Date date = new Date(); Calendar cal = Calendar.getInstance(); cal.setTime(date); cal.add(Calendar.MINUTE, -5); Date time = cal.getTime(); try { SMTDatabase.DBRecords dbRecords = db.querySQL( "select order_id from work_order_list where is_notify =? and status_update_time > ? and stepstatus =1", new Object[] {"N", time}); _logger.info("查询到状态为已接单的工单的数量:{}", dbRecords.getRowCount()); for (SMTDatabase.DBRecord rec : dbRecords.getRecords()) { String agentId = (String) SMTAIServerApp.getApp() .getGlobalConfig( "work_order.workflow_agent_re", "status_changes_received_order"); Json jsonArgs = Json.object("question", "", "order_id", rec.getString("order_id")); SMTQwenAgent agent = SMTAIServerApp.getApp().getQwenAgentManager().getAgentById(agentId); if (agent == null) throw new Exception("can't find agent : " + agentId); SMTLLMConnect llm = SMTAIServerApp.getApp().allocLLMConnect(null); SMTAIServerRequest _tranReq = new SMTAIServerRequest(); agent.callAgents("/", jsonArgs, llm, "", _tranReq); } } catch (Exception e) { _logger.error("checkForTicketStatusChanges error", e); } } /** * 工单状态转变为 已完成 * * @throws Exception */ @Scheduled(cron = "0/10 * * * * ?") public void execCheckForTicketStatusChangesByFinish() throws Exception { _logger.info("start checkForTicketStatusChanges task"); SMTDatabase db = SMTAIServerApp.getApp().allocDatabase(); Date date = new Date(); Calendar cal = Calendar.getInstance(); cal.setTime(date); cal.add(Calendar.MINUTE, -5); Date time = cal.getTime(); try { SMTDatabase.DBRecords dbRecords = db.querySQL( "select order_id from work_order_list where is_notify =? and status_update_time > ? and stepstatus =4", new Object[] {"N", time}); _logger.info("查询到状态为已完成的工单的数量:{}", dbRecords.getRowCount()); for (SMTDatabase.DBRecord rec : dbRecords.getRecords()) { String agentId = (String) SMTAIServerApp.getApp() .getGlobalConfig( "work_order.workflow_agent_finish", "status_changes_received_order"); Json jsonArgs = Json.object("question", "", "order_id", rec.getString("order_id")); SMTQwenAgent agent = SMTAIServerApp.getApp().getQwenAgentManager().getAgentById(agentId); if (agent == null) throw new Exception("can't find agent : " + agentId); SMTLLMConnect llm = SMTAIServerApp.getApp().allocLLMConnect(null); SMTAIServerRequest _tranReq = new SMTAIServerRequest(); agent.callAgents("/", jsonArgs, llm, "", _tranReq); } } catch (Exception e) { _logger.error("checkForTicketStatusChanges error", e); } } }