diff --git a/src/main/java/com/dsideal/base/Base/Controller/BaseController.java b/src/main/java/com/dsideal/base/Base/Controller/BaseController.java index 7b86d598..83330c57 100644 --- a/src/main/java/com/dsideal/base/Base/Controller/BaseController.java +++ b/src/main/java/com/dsideal/base/Base/Controller/BaseController.java @@ -840,12 +840,40 @@ public class BaseController extends Controller { /** * 获取数据集下的数据表 + * * @param dataset_id 数据集id */ @Before(GET.class) @IsLoginInterface({}) public void getDataSetTable(int dataset_id) { - List list= model.getDataSetTable(dataset_id); + List list = model.getDataSetTableContent(dataset_id); renderJson(CommonUtil.renderJsonForLayUI(list)); } + + /** + * 保存数据集下的数据表 + * + * @param dataset_id 数据集id + * @param data 保存的数据 + */ + @Before(POST.class) + @IsLoginInterface({}) + public void saveDataSetTable(int dataset_id, String data) { + //登录的人员 + //int identity_id = Integer.parseInt(CookieUtil.getValue(getRequest(), "identity_id")); + String person_id = CookieUtil.getValue(getRequest(), "person_id"); + //如果是市/州,名称 + //如果是县区,名称 + String xmqh = model.getPersonInfo(person_id).getStr("person_name").replace("管理员", ""); + JSONArray jsonArray = JSONArray.fromObject(data); + for (Object o : jsonArray) { + net.sf.json.JSONObject jo = (net.sf.json.JSONObject) o; + if (jo.containsKey("行政区划") && !jo.getString("行政区划").equals(xmqh)) { + renderJson(CommonUtil.returnMessageJson(false, "数据集数据与当前登录人员所属行政区划不一致,请重新选择数据集!")); + return; + } + } + model.saveDataSetTable(dataset_id, xmqh, jsonArray); + renderJson(CommonUtil.returnMessageJson(true, "保存成功")); + } } \ No newline at end of file diff --git a/src/main/java/com/dsideal/base/Base/Model/BaseModel.java b/src/main/java/com/dsideal/base/Base/Model/BaseModel.java index 6b7cb7e8..ba02e642 100644 --- a/src/main/java/com/dsideal/base/Base/Model/BaseModel.java +++ b/src/main/java/com/dsideal/base/Base/Model/BaseModel.java @@ -1,5 +1,6 @@ package com.dsideal.base.Base.Model; +import com.dsideal.base.Util.CommonUtil; import com.jfinal.kit.Kv; import com.jfinal.kit.StrKit; import com.jfinal.plugin.activerecord.Db; @@ -1001,11 +1002,46 @@ public class BaseModel { * @param dataset_id 数据集id * @return */ - public List getDataSetTable(int dataset_id) { - String sql = "select * from t_dp_dataset where id=?"; - Record record = Db.findFirst(sql, dataset_id); + public List getDataSetTableContent(int dataset_id) { + Record record = getTableName(dataset_id); if (record == null) return null; - sql = "select * from dataease.`" + record.getStr("table_name") + "`"; + String sql = "select * from dataease.`" + record.getStr("table_name") + "`"; return Db.find(sql); } + + /** + * 根据数据集id获取表名 + * + * @param dataset_id 数据集id + * @return 表对象 + */ + public Record getTableName(int dataset_id) { + String sql = "select * from t_dp_dataset where id=?"; + return Db.findFirst(sql, dataset_id); + } + + /** + * 保存数据集对应的表 + * + * @param dataset_id 数据集id + * @param ja json数组 + */ + public void saveDataSetTable(int dataset_id, String xmqh, JSONArray ja) { + String tableName = getTableName(dataset_id).getStr("table_name"); + String sql = "delete from dataease.`" + tableName + "` where `行政区划`=?"; + Db.update(sql, xmqh); + List list = new ArrayList<>(); + for (int i = 0; i < ja.size(); i++) { + JSONObject jsonObject = ja.getJSONObject(i); + //遍历jo的每一个属性 + // 或者使用keySet和for-each循环遍历 + Record record = new Record(); + for (Object key : jsonObject.keySet()) { + Object value = jsonObject.get(key); + record.set(key.toString(), value); + list.add(record); + } + } + Db.use("dataease").batchSave("`" + tableName + "`", list, 100); + } } diff --git a/src/main/java/com/dsideal/base/BaseApplication.java b/src/main/java/com/dsideal/base/BaseApplication.java index 85476da3..7cfa4fa9 100644 --- a/src/main/java/com/dsideal/base/BaseApplication.java +++ b/src/main/java/com/dsideal/base/BaseApplication.java @@ -114,9 +114,15 @@ public class BaseApplication extends JFinalConfig { HikariCpPlugin plugin = new HikariCpPlugin(PropKit.get("mysql.jdbcUrl"), PropKit.get("mysql.user"), PropKit.get("mysql.password").trim(), PropKit.get("mysql.driverClassName")); me.add(plugin); + HikariCpPlugin dataEasePlugin = new HikariCpPlugin(PropKit.get("mysql.jdbcUrl").replace("ds_db", "dataease"), PropKit.get("mysql.user"), + PropKit.get("mysql.password").trim(), PropKit.get("mysql.driverClassName")); + me.add(dataEasePlugin); // 配置ActiveRecord插件 ActiveRecordPlugin arp = new ActiveRecordPlugin(plugin); arp.setDialect(new MysqlDialect()); + ActiveRecordPlugin dataEaseArp = new ActiveRecordPlugin("dataease", dataEasePlugin); + dataEaseArp.setDialect(new MysqlDialect()); + //遍历sql目录下所有的sql文件 File sqlDir; String basePath = PathKit.getRootClassPath(); @@ -126,10 +132,12 @@ public class BaseApplication extends JFinalConfig { //只加载.sql文件 if (sqlFile.getName().indexOf(".sql") > 0) { arp.addSqlTemplate("/Sql/" + sqlFile.getName()); + dataEaseArp.addSqlTemplate("/Sql/" + sqlFile.getName()); } } //加载 me.add(arp); + me.add(dataEaseArp); // 用于缓存模块的redis服务 RedisPlugin redis = new RedisPlugin("Redis", PropKit.get("redis.ip"), PropKit.getInt("redis.port"), 10 * 1000, PropKit.get("redis.password")); //启动redis组件