ls){
+ for(Area area: areaList){
+ if(area.getId().equals(code)){
+ String pid = area.getPid();
+ ls.add(0,area.getText());
+ getAreaByCode(pid,ls);
+ }
+ }
+ }
+
+ private void initAreaList(){
+ //System.out.println("=====================");
+ if(this.areaList==null || this.areaList.size()==0){
+ this.areaList = new ArrayList();
+ try {
+ String jsonData = oConvertUtils.readStatic("classpath:static/pca.json");
+ JSONObject baseJson = JSONObject.parseObject(jsonData);
+ //第一层 省
+ JSONObject provinceJson = baseJson.getJSONObject("86");
+ for(String provinceKey: provinceJson.keySet()){
+ //System.out.println("===="+provinceKey);
+ Area province = new Area(provinceKey,provinceJson.getString(provinceKey),"86");
+ this.areaList.add(province);
+ //第二层 市
+ JSONObject cityJson = baseJson.getJSONObject(provinceKey);
+ for(String cityKey:cityJson.keySet()){
+ //System.out.println("-----"+cityKey);
+ Area city = new Area(cityKey,cityJson.getString(cityKey),provinceKey);
+ this.areaList.add(city);
+ //第三层 区
+ JSONObject areaJson = baseJson.getJSONObject(cityKey);
+ if(areaJson!=null){
+ for(String areaKey:areaJson.keySet()){
+ //System.out.println("········"+areaKey);
+ Area area = new Area(areaKey,areaJson.getString(areaKey),cityKey);
+ this.areaList.add(area);
+ }
+ }
+ }
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+ }
+
+
+ private String jsonRead(File file){
+ Scanner scanner = null;
+ StringBuilder buffer = new StringBuilder();
+ try {
+ scanner = new Scanner(file, "utf-8");
+ while (scanner.hasNextLine()) {
+ buffer.append(scanner.nextLine());
+ }
+ } catch (Exception e) {
+
+ } finally {
+ if (scanner != null) {
+ scanner.close();
+ }
+ }
+ return buffer.toString();
+ }
+
+ class Area{
+ String id;
+ String text;
+ String pid;
+
+ public Area(String id,String text,String pid){
+ this.id = id;
+ this.text = text;
+ this.pid = pid;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public String getText() {
+ return text;
+ }
+
+ public String getPid() {
+ return pid;
+ }
+ }
+}
diff --git a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/ServiceNameConstants.java b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/ServiceNameConstants.java
new file mode 100644
index 0000000..b54dc34
--- /dev/null
+++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/ServiceNameConstants.java
@@ -0,0 +1,39 @@
+/*
+ *
+ * * Copyright (c) 2019-2020, 冷冷 (wangiegie@gmail.com).
+ * *
+ * * Licensed under the GNU Lesser General Public License 3.0 (the "License");
+ * * you may not use this file except in compliance with the License.
+ * * You may obtain a copy of the License at
+ * *
+ * * https://www.gnu.org/licenses/lgpl.html
+ * *
+ * * Unless required by applicable law or agreed to in writing, software
+ * * distributed under the License is distributed on an "AS IS" BASIS,
+ * * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * * See the License for the specific language governing permissions and
+ * * limitations under the License.
+ *
+ */
+
+package org.jeecg.common.constant;
+
+/**
+ * @author scott
+ * @date 2019年05月18日
+ * 服务名称
+ */
+public interface ServiceNameConstants {
+
+ /**
+ * 系统管理 admin
+ */
+ String SYSTEM_SERVICE = "jeecg-system";
+ String SYSTEM_ONLINE = "jeecg-online";
+
+ /**
+ * gateway通过header传递根路径 basePath
+ */
+ String X_GATEWAY_BASE_PATH = "X_GATEWAY_BASE_PATH";
+
+}
diff --git a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/VXESocketConst.java b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/VXESocketConst.java
new file mode 100644
index 0000000..210562a
--- /dev/null
+++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/VXESocketConst.java
@@ -0,0 +1,30 @@
+package org.jeecg.common.constant;
+
+/**
+ * VXESocket 常量
+ */
+public class VXESocketConst {
+
+ /**
+ * 消息类型
+ */
+ public static final String TYPE = "type";
+ /**
+ * 消息数据
+ */
+ public static final String DATA = "data";
+
+ /**
+ * 消息类型:心跳检测
+ */
+ public static final String TYPE_HB = "heart_beat";
+ /**
+ * 消息类型:通用数据传递
+ */
+ public static final String TYPE_CSD = "common_send_date";
+ /**
+ * 消息类型:更新vxe table数据
+ */
+ public static final String TYPE_UVT = "update_vxe_table";
+
+}
diff --git a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/WebsocketConst.java b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/WebsocketConst.java
new file mode 100644
index 0000000..a165e39
--- /dev/null
+++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/WebsocketConst.java
@@ -0,0 +1,61 @@
+package org.jeecg.common.constant;
+
+/**
+ * @Description: Websocket常量类
+ * @author: taoyan
+ * @date: 2020年03月23日
+ */
+public class WebsocketConst {
+
+
+ /**
+ * 消息json key:cmd
+ */
+ public static final String MSG_CMD = "cmd";
+
+ /**
+ * 消息json key:msgId
+ */
+ public static final String MSG_ID = "msgId";
+
+ /**
+ * 消息json key:msgTxt
+ */
+ public static final String MSG_TXT = "msgTxt";
+
+ /**
+ * 消息json key:userId
+ */
+ public static final String MSG_USER_ID = "userId";
+
+ /**
+ * 消息类型 heartcheck
+ */
+ public static final String CMD_CHECK = "heartcheck";
+
+ /**
+ * 消息类型 user 用户消息
+ */
+ public static final String CMD_USER = "user";
+
+ /**
+ * 消息类型 topic 系统通知
+ */
+ public static final String CMD_TOPIC = "topic";
+
+ /**
+ * 消息类型 email
+ */
+ public static final String CMD_EMAIL = "email";
+
+ /**
+ * 消息类型 meetingsign 会议签到
+ */
+ public static final String CMD_SIGN = "sign";
+
+ /**
+ * 消息类型 新闻发布/取消
+ */
+ public static final String NEWS_PUBLISH = "publish";
+
+}
diff --git a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/enums/CgformEnum.java b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/enums/CgformEnum.java
new file mode 100644
index 0000000..fd25ddd
--- /dev/null
+++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/enums/CgformEnum.java
@@ -0,0 +1,150 @@
+package org.jeecg.common.constant.enums;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * online表单枚举 代码生成器用到
+ */
+public enum CgformEnum {
+
+ /**
+ * 单表
+ */
+ ONE(1, "one", "/jeecg/code-template-online", "default.one", "经典风格"),
+ /**
+ * 多表
+ */
+ MANY(2, "many", "/jeecg/code-template-online", "default.onetomany", "经典风格"),
+ /**
+ * 多表
+ */
+ ERP(2, "erp", "/jeecg/code-template-online", "erp.onetomany", "ERP风格"),
+ /**
+ * 多表(jvxe风格)
+ * */
+ JVXE_TABLE(2, "jvxe", "/jeecg/code-template-online", "jvxe.onetomany", "JVXE风格"),
+ /**
+ * 多表(内嵌子表风格)
+ */
+ INNER_TABLE(2, "innerTable", "/jeecg/code-template-online", "inner-table.onetomany", "内嵌子表风格"),
+ /**
+ * 多表(tab风格)
+ * */
+ TAB(2, "tab", "/jeecg/code-template-online", "tab.onetomany", "Tab风格"),
+ /**
+ * 树形列表
+ */
+ TREE(3, "tree", "/jeecg/code-template-online", "default.tree", "树形列表");
+
+ /**
+ * 类型 1/单表 2/一对多 3/树
+ */
+ int type;
+ /**
+ * 编码标识
+ */
+ String code;
+ /**
+ * 代码生成器模板路径
+ */
+ String templatePath;
+ /**
+ * 代码生成器模板路径
+ */
+ String stylePath;
+ /**
+ * 模板风格名称
+ */
+ String note;
+
+ /**
+ * 构造器
+ *
+ * @param type 类型 1/单表 2/一对多 3/树
+ * @param code 模板编码
+ * @param templatePath 模板路径
+ * @param stylePath 模板子路径
+ * @param note
+ */
+ CgformEnum(int type, String code, String templatePath, String stylePath, String note) {
+ this.type = type;
+ this.code = code;
+ this.templatePath = templatePath;
+ this.stylePath = stylePath;
+ this.note = note;
+ }
+
+ /**
+ * 根据code获取模板路径
+ *
+ * @param code
+ * @return
+ */
+ public static String getTemplatePathByConfig(String code) {
+ return getCgformEnumByConfig(code).templatePath;
+ }
+
+
+ public int getType() {
+ return type;
+ }
+
+ public void setType(int type) {
+ this.type = type;
+ }
+
+ public String getTemplatePath() {
+ return templatePath;
+ }
+
+ public void setTemplatePath(String templatePath) {
+ this.templatePath = templatePath;
+ }
+
+ public String getStylePath() {
+ return stylePath;
+ }
+
+ public void setStylePath(String stylePath) {
+ this.stylePath = stylePath;
+ }
+
+ /**
+ * 根据code找枚举
+ *
+ * @param code
+ * @return
+ */
+ public static CgformEnum getCgformEnumByConfig(String code) {
+ for (CgformEnum e : CgformEnum.values()) {
+ if (e.code.equals(code)) {
+ return e;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * 根据类型找所有
+ *
+ * @param type
+ * @return
+ */
+ public static List