Quellcode durchsuchen

新增获取数据库字段信息方法

沈静伟 vor 4 Jahren
Ursprung
Commit
df826aa594

+ 39 - 4
src/dsb/com/cnd3b/common/Controller.java

@@ -2,23 +2,20 @@ package com.cnd3b.common;
 
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
+import com.cnd3b.common.data.Row;
 import com.cnd3b.common.data.Rows;
 import com.cnd3b.common.data.RowsMap;
 import com.cnd3b.common.data.SQLFactory;
 import com.cnd3b.common.data.db.DBConnect;
 import com.cnd3b.common.data.db.DataPool;
 import com.cnd3b.common.parameter.parameter;
-import com.cnd3b.common.data.Row;
 import com.cnd3b.common.websocket.WebClientSocket;
-import org.apache.poi.ss.formula.functions.T;
-import p2.common.parse.J;
 import p2.p2server.P2Server;
 import p2.pao.PaoRemote;
 import p2.pao.PaoSetRemote;
 import p2.security.ConnectionKey;
 import p2.util.P2Exception;
 
-import java.lang.reflect.Array;
 import java.lang.reflect.Constructor;
 import java.lang.reflect.Method;
 import java.sql.Connection;
@@ -671,4 +668,42 @@ public class Controller extends BaseClass {
         factory.addParameter("tenterprise_userid", userid);
         return dbConnect.runSqlUpdate(factory.getSQL());
     }
+
+    public static HashMap<String, Row> tableColumnRowmap = new HashMap<>();
+
+    public String[] getTableColumns(String tablename) {
+        tablename = tablename.toLowerCase();
+        if (!tableColumnRowmap.containsKey(tablename)) {
+            Rows rows = dbConnect.runSqlQuery("select a.name as [column],b.name as type from syscolumns a,systypes b where a.id=object_id('tagents_msgchangeapp') and a.xtype=b.xtype");
+            Row columnRow = new Row();
+            for (Row row : rows) {
+                columnRow.put(row.getString("column"), row.getString("type"));
+            }
+            tableColumnRowmap.put(tablename, columnRow);
+        }
+        if (tableColumnRowmap.containsKey(tablename)) {
+            return tableColumnRowmap.get(tablename).keySet().toArray(new String[0]);
+        } else {
+            return new String[]{};
+        }
+    }
+
+    public String getTableColumnType(String tablename, String fieldname) {
+        tablename = tablename.toLowerCase();
+        fieldname = fieldname.toLowerCase();
+        if (!tableColumnRowmap.containsKey(tablename)) {
+            Rows rows = dbConnect.runSqlQuery("select a.name as [column],b.name as type from syscolumns a,systypes b where a.id=object_id('tagents_msgchangeapp') and a.xtype=b.xtype");
+            Row columnRow = new Row();
+            for (Row row : rows) {
+                columnRow.put(row.getString("column"), row.getString("type"));
+            }
+            tableColumnRowmap.put(tablename, columnRow);
+        }
+        if (tableColumnRowmap.containsKey(tablename) && tableColumnRowmap.get(tablename).containsKey(fieldname)) {
+            return tableColumnRowmap.get(tablename).getString(fieldname);
+        } else {
+            return "";
+        }
+    }
+
 }

+ 8 - 3
src/dsb/com/cnd3b/restcontroller/enterprise/tagents/tagents.java

@@ -9,12 +9,12 @@ import com.cnd3b.common.data.Rows;
 import com.cnd3b.common.data.RowsMap;
 import com.cnd3b.common.data.SQLFactory;
 import com.cnd3b.common.data.db.DataPool;
-import p2.common.parse.J;
 import p2.pao.PaoRemote;
 import p2.pao.PaoSetRemote;
 import p2.util.P2Exception;
 
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Iterator;
 
 public class tagents extends Controller {
@@ -233,8 +233,13 @@ public class tagents extends Controller {
                         saleprodclassPao.setValue("fprodclassname", fprodclassname, 11L);
                     }
                 } else {
-                    String value = changemsgObject.getString(key);
-                    tagents.setValue(key, value, 11L);
+                    if (Arrays.asList(getTableColumns("tagents")).contains(key)) {
+                        if (getTableColumnType("tagents", key).equals("datetime")) {
+                            tagents.setValue(key, changemsgObject.getDate(key), 11L);
+                        } else {
+                            tagents.setValue(key, changemsgObject.getString(key), 11L);
+                        }
+                    }
                 }
             }
             if (ftype.equals("ÉÌ»§ÈÏÖ¤") || ftype.equals("ÐÂÔö")) {

+ 63 - 64
src/p2apps/baseclass/tools/GetFieldsName.java

@@ -10,74 +10,73 @@ import java.util.HashMap;
 import java.util.List;
 
 public class GetFieldsName {
-	String objectname;
-	PaoSetRemote ps_objectcols;
-	public static HashMap<String, String[]> objectcolsmap = new HashMap<String, String[]>(16);
+    String objectname;
+    PaoSetRemote ps_objectcols;
+    public static HashMap<String, String[]> objectcolsmap = new HashMap<String, String[]>(16);
 
-	/**
-	 * 构造函数
-	 * 
-	 * @param objectname
-	 *            数据表名称
-	 */
-	public GetFieldsName(String objectname) throws P2Exception {
-		this.objectname = objectname.toUpperCase();
-		if (!objectcolsmap.containsKey(this.objectname)) {
-			this.ps_objectcols = P2Server.getP2Server().getPaoSet("ps_objectcols",
-					P2Server.getP2Server().getSystemUserInfo());
-			ps_objectcols.setWhere("objectname='" + this.objectname
-					+ "' and fieldname!='rmkenable' and fieldname!='recversion' and PERSISTENT=1");
-			ps_objectcols.reset();
-			int count = ps_objectcols.count();
+
+    /**
+     * 构造函数
+     *
+     * @param objectname 数据表名称
+     */
+    public GetFieldsName(String objectname) throws P2Exception {
+        this.objectname = objectname.toUpperCase();
+        if (!objectcolsmap.containsKey(this.objectname)) {
+            this.ps_objectcols = P2Server.getP2Server().getPaoSet("ps_objectcols",
+                    P2Server.getP2Server().getSystemUserInfo());
+            ps_objectcols.setWhere("objectname='" + this.objectname
+                    + "' and fieldname!='rmkenable' and fieldname!='recversion' and PERSISTENT=1");
+            ps_objectcols.reset();
+            int count = ps_objectcols.count();
             String[] allfields = new String[count];
-			int i = 0;
-			while (ps_objectcols.getPao(i) != null) {
-				allfields[i] = ps_objectcols.getPao(i).getString("fieldname");
-				i++;
-			}
-			objectcolsmap.put(this.objectname, allfields);
-			ps_objectcols.close();
-		}
-	}
+            int i = 0;
+            while (ps_objectcols.getPao(i) != null) {
+                allfields[i] = ps_objectcols.getPao(i).getString("fieldname");
+                i++;
+            }
+            objectcolsmap.put(this.objectname, allfields);
+            ps_objectcols.close();
+        }
+    }
 
-	/**
-	 * 获取所有栏位名称
-	 * 
-	 * @return
-	 * @throws P2Exception
-	 */
-	public String[] getFields() throws P2Exception {
-		return objectcolsmap.get(objectname);
-	}
+    /**
+     * 获取所有栏位名称
+     *
+     * @return
+     * @throws P2Exception
+     */
+    public String[] getFields() throws P2Exception {
+        return objectcolsmap.get(objectname);
+    }
 
-	/**
-	 * 获取除指定栏位外的栏位名称
-	 * 
-	 * @param exceptfields
-	 *            需排除的栏位名称
-	 * @return
-	 * @throws P2Exception
-	 */
-	public String[] getFields(String[] exceptfields) throws P2Exception {
-		StringBuilder a = new StringBuilder(objectname);
-		for (String exceptfield : exceptfields) {
-			a.append(exceptfield);
-		}
-		if (objectcolsmap.containsKey(a.toString())) {
-			return objectcolsmap.get(a.toString());
-		} else {
-			List<String> exceptlist = Arrays.asList(exceptfields);
+    /**
+     * 获取除指定栏位外的栏位名称
+     *
+     * @param exceptfields 需排除的栏位名称
+     * @return
+     * @throws P2Exception
+     */
+    public String[] getFields(String[] exceptfields) throws P2Exception {
+        StringBuilder a = new StringBuilder(objectname);
+        for (String exceptfield : exceptfields) {
+            a.append(exceptfield);
+        }
+        if (objectcolsmap.containsKey(a.toString())) {
+            return objectcolsmap.get(a.toString());
+        } else {
+            List<String> exceptlist = Arrays.asList(exceptfields);
             String[] allfields = objectcolsmap.get(objectname);
-			List<String> list = new ArrayList<String>();
-			for (String field : allfields) {
-				if (!exceptlist.contains(field)) {
-					list.add(field);
-				}
-			}
-			String[] s = list.toArray(new String[0]);
-			objectcolsmap.put(a.toString(), s);
-			return s;
-		}
+            List<String> list = new ArrayList<String>();
+            for (String field : allfields) {
+                if (!exceptlist.contains(field)) {
+                    list.add(field);
+                }
+            }
+            String[] s = list.toArray(new String[0]);
+            objectcolsmap.put(a.toString(), s);
+            return s;
+        }
 
-	}
+    }
 }