秦芳睿
8 天以前 d94264b205b37628748705b894248f97210977f8
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
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);
        }
    }
 
}