TangCheng
2025-03-05 fdbf7bdd34c51269eefe203c1b78c7fcdfdb20e7
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);