TangCheng
2025-03-05 fdbf7bdd34c51269eefe203c1b78c7fcdfdb20e7
修复问题
已修改1个文件
77 ■■■■ 文件已修改
JAVA/SMTAIServer/src/main/java/com/smtaiserver/smtaiserver/control/SMTAIWeixinControl.java 77 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
JAVA/SMTAIServer/src/main/java/com/smtaiserver/smtaiserver/control/SMTAIWeixinControl.java
@@ -203,42 +203,47 @@
    SMTLLMConnect llm = SMTAIServerApp.getApp().allocLLMConnect(null);
    String answer = llm.callWithMessage(new String[] {prompt}, question, tranReq);
    tranReq.traceLLMDebug(answer);
    List<Json> jsonASTList = SMTStatic.convLLMAnswerToJson(answer, true).asJsonList();
    if (jsonASTList.size() > 0) {
      Json jsonAST = jsonASTList.get(0);
      if ("query_water_fee".equals(jsonAST.safeGetStr("call", null))) {
        jsonAST = jsonAST.getJson("args");
        try (ASTDBMap dbMap = new ASTDBMap()) {
          SMTDatabase db = dbMap.getDatabase("DS_74_CHENGTOU");
          DBRecords recs =
              db.querySQL(
                  " SELECT ROUND(SUM("
                      + jsonAST.getJson("value_name").asString()
                      + ")::NUMERIC(10, 2), 2) AS TOTAL"
                      + " FROM chengtou_data.bill_data WHERE billing_date BETWEEN ? AND ?",
                  new Object[] {
                    SMTStatic.toDate(jsonAST.getJson("start_time").asString()),
                    SMTStatic.toDate(jsonAST.getJson("end_time").asString())
                  });
          if (recs.getRowCount() == 0)
            return "从"
                + jsonAST.getJson("start_time").asString()
                + "到"
                + jsonAST.getJson("end_time").asString()
                + "的"
                + jsonAST.getJson("value_title").asString()
                + "未查到任何数据";
          return "从"
              + jsonAST.getJson("start_time").asString()
              + "到"
              + jsonAST.getJson("end_time").asString()
              + "的"
              + jsonAST.getJson("value_title").asString()
              + "总计"
              + recs.getRecord(0).getString(0);
        }
    Json ojsonASTList = SMTStatic.convLLMAnswerToJson(answer, true);
    if(ojsonASTList != null && ojsonASTList.isArray())
    {
        List<Json> jsonASTList = ojsonASTList.asJsonList();
        if (jsonASTList.size() > 0)
        {
          Json jsonAST = jsonASTList.get(0);
          if ("query_water_fee".equals(jsonAST.safeGetStr("call", null))) {
            jsonAST = jsonAST.getJson("args");
            try (ASTDBMap dbMap = new ASTDBMap()) {
              SMTDatabase db = dbMap.getDatabase("DS_74_CHENGTOU");
              DBRecords recs =
                  db.querySQL(
                      " SELECT ROUND(SUM("
                          + jsonAST.getJson("value_name").asString()
                          + ")::NUMERIC(10, 2), 2) AS TOTAL"
                          + " FROM chengtou_data.bill_data WHERE billing_date BETWEEN ? AND ?",
                      new Object[] {
                        SMTStatic.toDate(jsonAST.getJson("start_time").asString()),
                        SMTStatic.toDate(jsonAST.getJson("end_time").asString())
                      });
              if (recs.getRecord(0).getString(0) == null)
                return "从"
                    + jsonAST.getJson("start_time").asString()
                    + "到"
                    + jsonAST.getJson("end_time").asString()
                    + "的"
                    + jsonAST.getJson("value_title").asString()
                    + "未查到任何数据";
              return "从"
                  + jsonAST.getJson("start_time").asString()
                  + "到"
                  + jsonAST.getJson("end_time").asString()
                  + "的"
                  + jsonAST.getJson("value_title").asString()
                  + "总计"
                  + recs.getRecord(0).getString(0);
            }
          }
      }
    }
    answer = llm.callWithMessage(null, question, tranReq);