diff --git a/module-dictionary/pom.xml b/module-dictionary/pom.xml index 36ada010..6238c977 100644 --- a/module-dictionary/pom.xml +++ b/module-dictionary/pom.xml @@ -28,6 +28,18 @@ common 1.0-SNAPSHOT + + junit + junit + 4.13.2 + test + + + mysql + mysql-connector-java + 8.0.22 + test + \ No newline at end of file diff --git a/module-dictionary/src/main/java/ink/wgink/module/dictionary/controller/api/AreaController.java b/module-dictionary/src/main/java/ink/wgink/module/dictionary/controller/api/AreaController.java index 5e9781c8..73ced241 100644 --- a/module-dictionary/src/main/java/ink/wgink/module/dictionary/controller/api/AreaController.java +++ b/module-dictionary/src/main/java/ink/wgink/module/dictionary/controller/api/AreaController.java @@ -148,4 +148,5 @@ public class AreaController extends DefaultBaseController { return areaService.listByCode(areaCode); } + } diff --git a/module-dictionary/src/main/java/ink/wgink/module/dictionary/dao/IAreaDao.java b/module-dictionary/src/main/java/ink/wgink/module/dictionary/dao/IAreaDao.java index e82d7c65..a221bfa4 100644 --- a/module-dictionary/src/main/java/ink/wgink/module/dictionary/dao/IAreaDao.java +++ b/module-dictionary/src/main/java/ink/wgink/module/dictionary/dao/IAreaDao.java @@ -9,6 +9,7 @@ import ink.wgink.module.dictionary.pojo.dtos.AreaDTO; import ink.wgink.pojo.dtos.ZTreeDTO; import org.springframework.stereotype.Repository; +import java.rmi.RemoteException; import java.util.List; import java.util.Map; @@ -38,6 +39,14 @@ public interface IAreaDao extends IInitBaseTable { */ void remove(Map params) throws RemoveException; + /** + * 删除地区字典 + * + * @param params + * @throws RemoveException + */ + void delete(Map params) throws RemoveException; + /** * 修改地区字典 * diff --git a/module-dictionary/src/main/java/ink/wgink/module/dictionary/service/IAreaService.java b/module-dictionary/src/main/java/ink/wgink/module/dictionary/service/IAreaService.java index 2987c3e9..7580cc8a 100644 --- a/module-dictionary/src/main/java/ink/wgink/module/dictionary/service/IAreaService.java +++ b/module-dictionary/src/main/java/ink/wgink/module/dictionary/service/IAreaService.java @@ -72,6 +72,13 @@ public interface IAreaService { */ AreaDTO getByCode(String areaCode); + /** + * 地区列表 + * + * @return + */ + List list(); + /** * 通过上级ID获取地区字典列表 * @@ -119,4 +126,5 @@ public interface IAreaService { * @return */ List listSubByCode(String areaCode); + } diff --git a/module-dictionary/src/main/java/ink/wgink/module/dictionary/service/IDataService.java b/module-dictionary/src/main/java/ink/wgink/module/dictionary/service/IDataService.java index bfa809af..1b6d9092 100644 --- a/module-dictionary/src/main/java/ink/wgink/module/dictionary/service/IDataService.java +++ b/module-dictionary/src/main/java/ink/wgink/module/dictionary/service/IDataService.java @@ -62,6 +62,13 @@ public interface IDataService extends IDictionaryCheckService { */ DataDTO get(String dataId); + /** + * 字典列表 + * + * @return + */ + List list(); + /** * 通过上级ID获取字典列表 * @@ -101,4 +108,5 @@ public interface IDataService extends IDictionaryCheckService { * @return */ List listByCode(String dataCode); + } diff --git a/module-dictionary/src/main/java/ink/wgink/module/dictionary/service/impl/AreaServiceImpl.java b/module-dictionary/src/main/java/ink/wgink/module/dictionary/service/impl/AreaServiceImpl.java index e386ac54..3e61d8ba 100644 --- a/module-dictionary/src/main/java/ink/wgink/module/dictionary/service/impl/AreaServiceImpl.java +++ b/module-dictionary/src/main/java/ink/wgink/module/dictionary/service/impl/AreaServiceImpl.java @@ -77,6 +77,12 @@ public class AreaServiceImpl extends DefaultBaseService implements IAreaService return areaDao.get(params); } + @Override + public List list() { + Map params = getHashMap(0); + return areaDao.list(params); + } + @Override public List listByParentId(String areaParentId) { Map params = getHashMap(1); diff --git a/module-dictionary/src/main/java/ink/wgink/module/dictionary/service/impl/DataServiceImpl.java b/module-dictionary/src/main/java/ink/wgink/module/dictionary/service/impl/DataServiceImpl.java index 489a0778..5bd850db 100644 --- a/module-dictionary/src/main/java/ink/wgink/module/dictionary/service/impl/DataServiceImpl.java +++ b/module-dictionary/src/main/java/ink/wgink/module/dictionary/service/impl/DataServiceImpl.java @@ -82,6 +82,12 @@ public class DataServiceImpl extends DefaultBaseService implements IDataService return dataDao.get(params); } + @Override + public List list() { + Map params = getHashMap(0); + return dataDao.list(params); + } + @Override public List listByParentId(String dataParentId) { Map params = getHashMap(1); diff --git a/module-dictionary/src/main/resources/templates/area/list-tree.html b/module-dictionary/src/main/resources/templates/area/list-tree.html index 9565635d..161815e5 100644 --- a/module-dictionary/src/main/resources/templates/area/list-tree.html +++ b/module-dictionary/src/main/resources/templates/area/list-tree.html @@ -66,7 +66,7 @@ var setting = { async: { enable: true, - autoLoad: true, + autoLoad: false, type: 'get', url: top.restAjax.path('api/area/listztree', []), autoParam: ['id'], @@ -88,6 +88,14 @@ }, }; var zTree = $.fn.zTree.init($("#leftTree"), setting); + zTree.addNodes(null, { + id: '0', + pId: '-1', + name: top.dataMessage.tree.rootName, + url: 'javascript:;', + isParent: 'true' + }); + common.refreshTree('leftTree'); } initSize(); initIFrame(); diff --git a/module-dictionary/src/test/java/AreaTest.java b/module-dictionary/src/test/java/AreaTest.java new file mode 100644 index 00000000..d1e73933 --- /dev/null +++ b/module-dictionary/src/test/java/AreaTest.java @@ -0,0 +1,54 @@ +import org.junit.Test; + +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.PreparedStatement; +import java.sql.SQLException; + +/** + * @ClassName: AreaTest + * @Description: 地区测试 + * @Author: wanggeng + * @Date: 2021/11/24 3:25 下午 + * @Version: 1.0 + */ +public class AreaTest { + + private String jdbcUrl = "jdbc:mysql://127.0.0.1:3306/db_smart_city_usercenter?useUnicode=true&characterEncoding=utf8&characterSetResults=utf8&autoReconnect=true&failOverReadOnly=false&useSSL=false&serverTimezone=UTC&nullCatalogMeansCurrent=true"; + + static { + try { + Class.forName("com.mysql.cj.jdbc.Driver"); + } catch (ClassNotFoundException e) { + e.printStackTrace(); + } + } + + @Test + public void removeUnnecessaryAreas() throws SQLException { + Connection connection = DriverManager.getConnection(jdbcUrl, "root", "root"); + String SQL = "DELETE FROM data_area WHERE area_code NOT LIKE ?"; + try (PreparedStatement preparedStatement = connection.prepareStatement(SQL)) { + // 保留的根节点编码 + preparedStatement.setString(1, "1509%"); + System.out.println(preparedStatement); + int removeCount = preparedStatement.executeUpdate(); + System.out.println("删除总数:" + removeCount); + } + } + + @Test + public void updateAreaRootParentId() throws SQLException { + Connection connection = DriverManager.getConnection(jdbcUrl, "root", "root"); + String SQL = "UPDATE data_area SET area_parent_id = 0 WHERE area_code = ?"; + try (PreparedStatement preparedStatement = connection.prepareStatement(SQL)) { + // 设置更新的地区编码 + preparedStatement.setString(1, "150900000000"); + System.out.println(preparedStatement); + int updateCount = preparedStatement.executeUpdate(); + System.out.println("更新成功:" + updateCount); + } + } + + +} diff --git a/module-dictionary/src/test/java/DataTest.java b/module-dictionary/src/test/java/DataTest.java new file mode 100644 index 00000000..ddf2316d --- /dev/null +++ b/module-dictionary/src/test/java/DataTest.java @@ -0,0 +1,92 @@ +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import ink.wgink.util.date.DateUtil; +import org.junit.Test; + +import java.io.BufferedReader; +import java.io.FileInputStream; +import java.io.InputStreamReader; +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.PreparedStatement; +import java.sql.SQLException; + +/** + * @ClassName: DataTest + * @Description: + * @Author: wanggeng + * @Date: 2021/11/24 4:09 下午 + * @Version: 1.0 + */ +public class DataTest { + + private String jdbcUrl = "jdbc:mysql://127.0.0.1:3306/db_smart_city_usercenter?useUnicode=true&characterEncoding=utf8&characterSetResults=utf8&autoReconnect=true&failOverReadOnly=false&useSSL=false&serverTimezone=UTC&nullCatalogMeansCurrent=true"; + + static { + try { + Class.forName("com.mysql.cj.jdbc.Driver"); + } catch (ClassNotFoundException e) { + e.printStackTrace(); + } + } + + @Test + public void insertJson() throws Exception { + Connection connection = DriverManager.getConnection(jdbcUrl, "root", "root"); + String jsonArrayFilePath = "/Users/wanggeng/Desktop/9+x-房屋-任务系统字典.txt"; + BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(new FileInputStream(jsonArrayFilePath))); + StringBuilder jsonArraySB = new StringBuilder(); + for (String line; (line = bufferedReader.readLine()) != null; ) { + jsonArraySB.append(line); + } + if (jsonArraySB.length() == 0) { + return; + } + String gmtDate = DateUtil.getTime(); + String SQL = "INSERT INTO `data_data` (" + + "`data_id`, " + + "`data_parent_id`, " + + "`data_name`, " + + "`data_summary`, " + + "`data_code`, " + + "`data_sort`, " + + "`creator`, " + + "`gmt_create`, " + + "`modifier`, " + + "`gmt_modified`, " + + "`is_delete`) " + + "VALUES (?, ? ,? ,? ,? ,? ,'1' ,'" + gmtDate + "', '1', '" + gmtDate + "', '0');"; + try (PreparedStatement preparedStatement = connection.prepareStatement(SQL)) { + JSONArray jsonArray = JSONArray.parseArray(jsonArraySB.toString()); + insertDatas(jsonArray, 53, "", preparedStatement); + } + } + + /** + * 插入数据 + * + * @param jsonArray + * @param parentCode + * @param preparedStatement + * @throws SQLException + */ + public void insertDatas(JSONArray jsonArray, int lastIndex, String parentCode, PreparedStatement preparedStatement) throws SQLException { + for (int i = 0; i < jsonArray.size(); i++) { + JSONObject jsonObject = jsonArray.getJSONObject(i); + int dataSort = lastIndex + (i + 1); + String dataCode = String.format("%s%04d", parentCode, dataSort); + preparedStatement.setString(1, jsonObject.getString("dataId")); + preparedStatement.setString(2, jsonObject.getString("dataParentId")); + preparedStatement.setString(3, jsonObject.getString("dataName")); + preparedStatement.setString(4, jsonObject.getString("dataSummary")); + preparedStatement.setString(5, dataCode); + preparedStatement.setInt(6, dataSort); + preparedStatement.executeUpdate(); + JSONArray subDatas = jsonObject.getJSONArray("subData"); + if (!subDatas.isEmpty()) { + insertDatas(subDatas, 0, dataCode, preparedStatement); + } + } + } + +}