From ed0acb3acd120316120307e61eb65608c4270ab2 Mon Sep 17 00:00:00 2001
From: TangCheng <tangchengmail@163.com>
Date: 星期六, 19 四月 2025 21:23:08 +0800
Subject: [PATCH] Merge branch 'websocket' of http://47.103.154.90:83/r/WI/Service.V1.0 into websocket

---
 JAVA/SMTAIServer/src/main/java/com/smtaiserver/smtaiserver/scheduledTasks/checkForTicketStatusChanges.java |  104 ++++++++++++----
 JAVA/SMTAIServer/src/main/java/com/smtaiserver/smtaiserver/javaai/jsonflow/node/SMTJsonFlowNodeScript.java |    2 
 JAVA/SMTServlet/src/main/java/com/smtservlet/core/SMTRequest.java                                          |   33 +++-
 JAVA/SMTAIServer/src/main/java/com/smtaiserver/smtaiserver/control/SMTJavaAIControl.java                   |  196 +++++++++++++++++---------------
 JAVA/SMTAIServer/src/main/java/com/smtaiserver/smtaiserver/control/SMTWorkflowManagerControl.java          |   24 ++-
 5 files changed, 214 insertions(+), 145 deletions(-)

diff --git a/JAVA/SMTAIServer/src/main/java/com/smtaiserver/smtaiserver/control/SMTJavaAIControl.java b/JAVA/SMTAIServer/src/main/java/com/smtaiserver/smtaiserver/control/SMTJavaAIControl.java
index 4f672b7..927fa73 100644
--- a/JAVA/SMTAIServer/src/main/java/com/smtaiserver/smtaiserver/control/SMTJavaAIControl.java
+++ b/JAVA/SMTAIServer/src/main/java/com/smtaiserver/smtaiserver/control/SMTJavaAIControl.java
@@ -297,96 +297,97 @@
 	}
 
   public ModelAndView createOrder(SMTAIServerRequest tranReq) throws Exception {
-    String title = tranReq.convParamToString("title", true);
-    String wstypeid = tranReq.convParamToString("wstypeid", false);
-    String wstypename = tranReq.convParamToString("wstypename", false);
-    String urgencylevel = tranReq.convParamToString("urgencylevel", false);
-    String shape = tranReq.convParamToString("shape", false);
-    String deadline = tranReq.convParamToString("deadline", false);
-    String stepstatus = tranReq.convParamToString("stepstatus", false);
-    String originatetypetext = tranReq.convParamToString("originatetypetext", false);
-    String content = tranReq.convParamToString("content", false);
-    String address = tranReq.convParamToString("address", false);
-    String stepid = tranReq.convParamToString("stepid", false);
-    String org = tranReq.convParamToString("org", false);
-    String deptname = tranReq.convParamToString("deptname", false);
-    String dealtime = tranReq.convParamToString("dealtime", false);
-    String username = tranReq.convParamToString("username", false);
-    String contactname = tranReq.convParamToString("contactname", false);
-    String contactphone = tranReq.convParamToString("contactphone", false);
-    String acceptuserid = tranReq.convParamToString("acceptuserid", false);
-    String acceptusername = tranReq.convParamToString("acceptusername", false);
-    String acceptuseraccount = tranReq.convParamToString("acceptuseraccount", false);
-    String dealuserid = tranReq.convParamToString("dealuserid", false);
-    String dealusername = tranReq.convParamToString("dealusername", false);
-    String dealuseraccount = tranReq.convParamToString("dealuseraccount", false);
-    String flowstatus = tranReq.convParamToString("flowstatus", false);
-    String attachment = tranReq.convParamToString("attachment", false);
-    String creator = tranReq.convParamToString("creator", false);
-    String createtime = tranReq.convParamToString("createtime", false);
-    String isplan = tranReq.convParamToString("isplan", false);
-    String originateid = tranReq.convParamToString("originateid", false);
-    String appointstarttime = tranReq.convParamToString("appointstarttime", false);
-    String appointendtime = tranReq.convParamToString("appointendtime", false);
-    String parentid = tranReq.convParamToString("parentid", false);
-    String relateids = tranReq.convParamToString("relateids", false);
-    String oname = tranReq.convParamToString("oname", false);
-    String otype = tranReq.convParamToString("otype", false);
-
-    SMTDatabase db = SMTAIServerApp.getApp().allocDatabase();
-    try {
-      db.executeSQL(
-          "INSERT INTO work_order_list("
-              + "order_id, title, wstypeid, wstypename, urgencylevel, shape, deadline, stepstatus, "
-              + "originatetypetext, content, address, step_id, org, deptname, dealtime, username, contactname, "
-              + "contactphone, acceptuserid, acceptusername, acceptuseraccount, dealuserid, dealusername, "
-              + "dealuseraccount, flowstatus, attachment, creator, createtime, isplan, originateid, "
-              + "appointstarttime, appointendtime, parentid, relateids,is_notify,oname,otype"
-              + ") VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,?)",
-          new Object[] {
-            SMTStatic.newUUID(),
-            title,
-            wstypeid,
-            wstypename,
-            urgencylevel,
-            shape,
-            deadline,
-            stepstatus,
-            originatetypetext,
-            content,
-            address,
-            stepid,
-            org,
-            deptname,
-            dealtime,
-            username,
-            contactname,
-            contactphone,
-            acceptuserid,
-            acceptusername,
-            acceptuseraccount,
-            dealuserid,
-            dealusername,
-            dealuseraccount,
-            flowstatus,
-            attachment,
-            creator,
-            new Date(),
-            isplan,
-            originateid,
-            appointstarttime,
-            appointendtime,
-            parentid,
-            relateids,
-            "N",
-            oname,
-            otype
-          });
-    } catch (Exception e) {
-      throw new Exception("鏁版嵁搴撻敊璇�", e);
-    }
-
-    return tranReq.returnJsonState(true, null, null);
+//    String title = tranReq.convParamToString("title", true);
+//    String wstypeid = tranReq.convParamToString("wstypeid", false);
+//    String wstypename = tranReq.convParamToString("wstypename", false);
+//    String urgencylevel = tranReq.convParamToString("urgencylevel", false);
+//    String shape = tranReq.convParamToString("shape", false);
+//    String deadline = tranReq.convParamToString("deadline", false);
+//    String stepstatus = tranReq.convParamToString("stepstatus", false);
+//    String originatetypetext = tranReq.convParamToString("originatetypetext", false);
+//    String content = tranReq.convParamToString("content", false);
+//    String address = tranReq.convParamToString("address", false);
+//    String stepid = tranReq.convParamToString("stepid", false);
+//    String org = tranReq.convParamToString("org", false);
+//    String deptname = tranReq.convParamToString("deptname", false);
+//    String dealtime = tranReq.convParamToString("dealtime", false);
+//    String username = tranReq.convParamToString("username", false);
+//    String contactname = tranReq.convParamToString("contactname", false);
+//    String contactphone = tranReq.convParamToString("contactphone", false);
+//    String acceptuserid = tranReq.convParamToString("acceptuserid", false);
+//    String acceptusername = tranReq.convParamToString("acceptusername", false);
+//    String acceptuseraccount = tranReq.convParamToString("acceptuseraccount", false);
+//    String dealuserid = tranReq.convParamToString("dealuserid", false);
+//    String dealusername = tranReq.convParamToString("dealusername", false);
+//    String dealuseraccount = tranReq.convParamToString("dealuseraccount", false);
+//    String flowstatus = tranReq.convParamToString("flowstatus", false);
+//    String attachment = tranReq.convParamToString("attachment", false);
+//    String creator = tranReq.convParamToString("creator", false);
+//    String createtime = tranReq.convParamToString("createtime", false);
+//    String isplan = tranReq.convParamToString("isplan", false);
+//    String originateid = tranReq.convParamToString("originateid", false);
+//    String appointstarttime = tranReq.convParamToString("appointstarttime", false);
+//    String appointendtime = tranReq.convParamToString("appointendtime", false);
+//    String parentid = tranReq.convParamToString("parentid", false);
+//    String relateids = tranReq.convParamToString("relateids", false);
+//    String oname = tranReq.convParamToString("oname", false);
+//    String otype = tranReq.convParamToString("otype", false);
+//
+//    SMTDatabase db = SMTAIServerApp.getApp().allocDatabase();
+//    try {
+//      db.executeSQL(
+//          "INSERT INTO work_order_list("
+//              + "order_id, title, wstypeid, wstypename, urgencylevel, shape, deadline, stepstatus, "
+//              + "originatetypetext, content, address, step_id, org, deptname, dealtime, username, contactname, "
+//              + "contactphone, acceptuserid, acceptusername, acceptuseraccount, dealuserid, dealusername, "
+//              + "dealuseraccount, flowstatus, attachment, creator, createtime, isplan, originateid, "
+//              + "appointstarttime, appointendtime, parentid, relateids,is_notify,oname,otype"
+//              + ") VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,?)",
+//          new Object[] {
+//            SMTStatic.newUUID(),
+//            title,
+//            wstypeid,
+//            wstypename,
+//            urgencylevel,
+//            shape,
+//            deadline,
+//            stepstatus,
+//            originatetypetext,
+//            content,
+//            address,
+//            stepid,
+//            org,
+//            deptname,
+//            dealtime,
+//            username,
+//            contactname,
+//            contactphone,
+//            acceptuserid,
+//            acceptusername,
+//            acceptuseraccount,
+//            dealuserid,
+//            dealusername,
+//            dealuseraccount,
+//            flowstatus,
+//            attachment,
+//            creator,
+//            new Date(),
+//            isplan,
+//            originateid,
+//            appointstarttime,
+//            appointendtime,
+//            parentid,
+//            relateids,
+//            "N",
+//            oname,
+//            otype
+//          });
+//    } catch (Exception e) {
+//      throw new Exception("鏁版嵁搴撻敊璇�", e);
+//    }
+//
+//    return tranReq.returnJsonState(true, null, null);
+	  return tranReq.returnJsonState(true, null, null);
   }
 
   public ModelAndView updateOrderStatus(SMTAIServerRequest tranReq) throws Exception {
@@ -395,9 +396,15 @@
 
     SMTDatabase db = SMTAIServerApp.getApp().allocDatabase();
     try {
-      db.executeSQL(
-          "UPDATE work_order_list SET stepstatus = ? and status_update_time = ?  WHERE id = ?",
+		DBRecords dbRecords = db.querySQL("select * from work_order_list where order_id = ?", new Object[]{id});
+		Integer statusBeforeModification = dbRecords.getRecords().get(0).getInteger("stepstatus");
+		db.executeSQL(
+          "UPDATE work_order_list SET stepstatus = ? , status_update_time = ? , is_notify = 'N' WHERE order_id = ?",
           new Object[] {stepstatus,  new Date(),id});
+		String sql = "INSERT INTO ai_sys.work_order_detail (order_id, status_before_modification, status_after_modification,createTime) VALUES (?, ?, ?, ?)";
+      db.executeSQL(sql, new Object[] {id, statusBeforeModification, stepstatus, new Date()});
+
+
     } catch (Exception e) {
       throw new Exception("鏇存柊宸ュ崟鐘舵�佸け璐�", e);
     }
@@ -406,11 +413,11 @@
   }
 
 	public ModelAndView getOrderList(SMTAIServerRequest tranReq) throws Exception {
+		SMTJsonWriter jsonWr = tranReq.newReturnJsonWriter(true, null, null);
 		SMTDatabase db = SMTAIServerApp.getApp().allocDatabase();
 		try {
 			DBRecords recs = db.querySQL("SELECT * FROM work_order_list", null);
 			if (recs.getRowCount() != 0) {
-				SMTJsonWriter jsonWr = new SMTJsonWriter(false);
 				jsonWr.beginArray("values");  // 寮�濮嬩竴涓暟缁勶紝key涓� "values"
 
 				for (DBRecord rec : recs.getRecords()) {
@@ -423,7 +430,8 @@
 
 				jsonWr.endArray();  // 缁撴潫鏁扮粍
 
-				return tranReq.returnJson(jsonWr);  // 杩斿洖鏁翠釜缁撴瀯
+				return tranReq.returnJson(jsonWr);
+//				return tranReq.returnJsonState(true, "鎴愬姛", jsonWr.getRootJson());
 
 			} else {
 				return tranReq.returnJsonState(false, "鏈壘鍒板伐鍗�", null);
diff --git a/JAVA/SMTAIServer/src/main/java/com/smtaiserver/smtaiserver/control/SMTWorkflowManagerControl.java b/JAVA/SMTAIServer/src/main/java/com/smtaiserver/smtaiserver/control/SMTWorkflowManagerControl.java
index c5ead69..d7e45f1 100644
--- a/JAVA/SMTAIServer/src/main/java/com/smtaiserver/smtaiserver/control/SMTWorkflowManagerControl.java
+++ b/JAVA/SMTAIServer/src/main/java/com/smtaiserver/smtaiserver/control/SMTWorkflowManagerControl.java
@@ -1,15 +1,5 @@
 package com.smtaiserver.smtaiserver.control;
 
-import java.util.*;
-import java.util.regex.Pattern;
-
-import com.smtservlet.util.Json;
-import okhttp3.OkHttpClient;
-import okhttp3.Request;
-import okhttp3.Response;
-import org.dom4j.Document;
-import org.springframework.web.servlet.ModelAndView;
-
 import com.smtaiserver.smtaiserver.core.SMTAIServerApp;
 import com.smtaiserver.smtaiserver.core.SMTAIServerRequest;
 import com.smtaiserver.smtaiserver.core.SMTCheckChatStreamView;
@@ -18,12 +8,23 @@
 import com.smtaiserver.smtaiserver.database.SMTDatabase.DBRecords;
 import com.smtaiserver.smtaiserver.javaai.qwen.agent.SMTQwenAgent;
 import com.smtservlet.core.SMTRequest;
+import com.smtservlet.util.Json;
 import com.smtservlet.util.SMTJsonWriter;
 import com.smtservlet.util.SMTStatic;
+import java.util.*;
+import java.util.regex.Pattern;
+import okhttp3.OkHttpClient;
+import okhttp3.Request;
+import okhttp3.Response;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+import org.dom4j.Document;
+import org.springframework.web.servlet.ModelAndView;
 
 public class SMTWorkflowManagerControl
 {
 
+	private static final Logger _logger = LogManager.getLogger(SMTWorkflowManagerControl.class);
 	private static String[] _flowFuncNames = new String[] {
 		"assessment",		"璇勪及"
 	};
@@ -53,7 +54,8 @@
     		}
     		catch(Exception ex)
     		{
-    			errmsg = "宸ヤ綔娴侀厤缃敊璇�";
+    			errmsg = "宸ヤ綔娴侀厤缃敊璇� 锛� " + SMTStatic.toString(ex);
+		_logger.error("宸ヤ綔娴侀厤缃敊璇� 锛� " + SMTStatic.toString(ex));
     			publish = "N";
     		}
     		
diff --git a/JAVA/SMTAIServer/src/main/java/com/smtaiserver/smtaiserver/javaai/jsonflow/node/SMTJsonFlowNodeScript.java b/JAVA/SMTAIServer/src/main/java/com/smtaiserver/smtaiserver/javaai/jsonflow/node/SMTJsonFlowNodeScript.java
index a25e177..e32aeb9 100644
--- a/JAVA/SMTAIServer/src/main/java/com/smtaiserver/smtaiserver/javaai/jsonflow/node/SMTJsonFlowNodeScript.java
+++ b/JAVA/SMTAIServer/src/main/java/com/smtaiserver/smtaiserver/javaai/jsonflow/node/SMTJsonFlowNodeScript.java
@@ -48,7 +48,7 @@
 		public  void webSocketBroadcast(NativeObject nativeObject) throws Exception {
 			SMTJsonWriter jsonWr = new SMTJsonWriter(false);
 			SMTAIServerApp.convJSToJsonWriter(nativeObject, jsonWr);
-			SMTAIServerApp.getApp().webSocketApp(jsonWr.toString());
+			SMTAIServerApp.getApp().webSocketApp(jsonWr.getFullJson());
 		}
 
 		public Object getArg(String key)
diff --git a/JAVA/SMTAIServer/src/main/java/com/smtaiserver/smtaiserver/scheduledTasks/checkForTicketStatusChanges.java b/JAVA/SMTAIServer/src/main/java/com/smtaiserver/smtaiserver/scheduledTasks/checkForTicketStatusChanges.java
index 7a5479f..438e58b 100644
--- a/JAVA/SMTAIServer/src/main/java/com/smtaiserver/smtaiserver/scheduledTasks/checkForTicketStatusChanges.java
+++ b/JAVA/SMTAIServer/src/main/java/com/smtaiserver/smtaiserver/scheduledTasks/checkForTicketStatusChanges.java
@@ -5,15 +5,12 @@
 import com.smtaiserver.smtaiserver.database.SMTDatabase;
 import com.smtaiserver.smtaiserver.javaai.llm.core.SMTLLMConnect;
 import com.smtaiserver.smtaiserver.javaai.qwen.agent.SMTQwenAgent;
-import com.smtaiserver.smtaiserver.web.SMTWebSocketHandler;
 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.beans.factory.annotation.Autowired;
 import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Component;
 
@@ -29,41 +26,92 @@
 public class checkForTicketStatusChanges {
   private static final Logger _logger = LogManager.getLogger(checkForTicketStatusChanges.class);
 
- 
-  @Scheduled(cron = "0/10 * * * * ?") // 涓�绉掍竴娆�
-  public void execCheckForTicketStatusChanges() throws Exception {
+  /**
+   * 宸ュ崟鐘舵�佽浆鍙樹负 宸叉帴鍗�
+   *
+   * @throws Exception
+   */
+    @Scheduled(cron = "0/10 * * * * ?")
+  public void execCheckForTicketStatusChangesByOrdersTaken() throws Exception {
     _logger.info("start checkForTicketStatusChanges 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 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 db = SMTAIServerApp.getApp().allocDatabase())
-    {
-    	SMTDatabase.DBRecords dbRecords =
-        db.querySQL(
-              "select order_id from work_order_list where is_notify =? and  status_update_time > ?",
+    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 = "create_work_order";
-	    	
-	    	Json jsonArgs = Json.object("question", "", "order_id", "aaaaa");
-	    	
-			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 );
-	
-	    }
+      _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);
diff --git a/JAVA/SMTServlet/src/main/java/com/smtservlet/core/SMTRequest.java b/JAVA/SMTServlet/src/main/java/com/smtservlet/core/SMTRequest.java
index 0ee6fa4..c289133 100644
--- a/JAVA/SMTServlet/src/main/java/com/smtservlet/core/SMTRequest.java
+++ b/JAVA/SMTServlet/src/main/java/com/smtservlet/core/SMTRequest.java
@@ -1,5 +1,13 @@
 package com.smtservlet.core;
 
+import com.smtservlet.core.SMTApp.SMTRequestConfig;
+import com.smtservlet.database.SMTDaoAbstract.SMTDaoSelectPage;
+import com.smtservlet.util.Json;
+import com.smtservlet.util.SMTJsonWriter;
+import com.smtservlet.util.SMTStatic;
+import com.smtservlet.util.SMTStatic.SMTCalcTime;
+import com.smtservlet.util.SMTStatic.SMTConvEmpty;
+import com.smtservlet.util.SMTStatic.SMTConvType;
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.IOException;
@@ -12,7 +20,6 @@
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import javax.servlet.http.HttpSession;
-
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
 import org.springframework.core.MethodParameter;
@@ -21,16 +28,6 @@
 import org.springframework.web.multipart.MultipartFile;
 import org.springframework.web.servlet.ModelAndView;
 import org.springframework.web.servlet.View;
-
-
-import com.smtservlet.core.SMTApp.SMTRequestConfig;
-import com.smtservlet.database.SMTDaoAbstract.SMTDaoSelectPage;
-import com.smtservlet.util.Json;
-import com.smtservlet.util.SMTJsonWriter;
-import com.smtservlet.util.SMTStatic.SMTCalcTime;
-import com.smtservlet.util.SMTStatic.SMTConvEmpty;
-import com.smtservlet.util.SMTStatic.SMTConvType;
-import com.smtservlet.util.SMTStatic;
 
 /**
  * 灏唚ebRequest鍖呰鎴怱MTRequest绫昏繘琛屾搷浣� 
@@ -1333,6 +1330,10 @@
 	{
 		return this.returnJson(newReturnJsonWriter(isOK, msg, url));
 	}
+	public ModelAndView returnJsonState(boolean isOK, String msg, Object url) throws Exception
+	{
+		return this.returnJson(newReturnJsonWriter(isOK, msg, url));
+	}
 
 	/**
 	 * 鍒涘缓缂虹渷鐨凧sonWriter涓鸿繑鍥瀓son鍑嗗
@@ -1351,6 +1352,16 @@
 			jsonWr.addKeyValue("json_url", url);
 		return jsonWr;
 	}
+	public SMTJsonWriter newReturnJsonWriter(boolean isOK, String msg, Object url) throws Exception
+	{
+		SMTJsonWriter jsonWr = new SMTJsonWriter(false);
+		jsonWr.addKeyValue("json_ok", isOK);
+		if(msg != null)
+			jsonWr.addKeyValue("json_msg", msg);
+		if(url != null)
+			jsonWr.addKeyValue("json_url", url);
+		return jsonWr;
+	}
 	
 	public SMTJsonWriter newReturnAsyncEndJsonWriter(boolean returnRequestParam, String[] params) throws Exception
 	{

--
Gitblit v1.9.3