From 753abfcaf090f79a4226693c2829a2d47b422058 Mon Sep 17 00:00:00 2001
From: czt <czt18638530771@163.com>
Date: 星期四, 29 五月 2025 19:01:01 +0800
Subject: [PATCH] 增加后台管理功能,及基础信息页面

---
 igds-dzhwk-web/src/main/resources/static/img/dzhwk/welcome/title-online.png                  |    0 
 igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/constant/AreationModel.java                |   30 
 igds-dzhwk-core/src/main/java/com/fzzy/igds/sys/GranaryService.java                          |   53 
 igds-dzhwk-web/src/main/resources/static/img/dzhwk/welcome/title-n2.png                      |    0 
 igds-dzhwk-core/src/main/java/com/fzzy/igds/sys/repository/CompanyRepository.java            |   36 
 igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/constant/N2ModelTag.java                   |   46 
 igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/constant/OrderRespEnum.java                |   51 
 igds-dzhwk-web/src/main/resources/static/img/dzhwk/welcome/se-fk.png                         |    0 
 igds-dzhwk-web/src/main/resources/static/img/dzhwk/welcome/title-security.png                |    0 
 igds-dzhwk-web/src/main/resources/templates/home-topnav.html                                 |  447 ++
 igds-dzhwk-web/src/main/resources/static/img/dzhwk/sys/a1-1.png                              |    0 
 igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/constant/DepotType.java                    |   49 
 igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/data/GrainIotData.java                     |   57 
 igds-dzhwk-core/src/main/java/com/fzzy/igds/sys/repository/DeptRepository.java               |   36 
 igds-dzhwk-web/src/main/resources/static/img/dzhwk/welcome/wel-bg3.png                       |    0 
 igds-dzhwk-web/src/main/resources/static/img/dzhwk/welcome/zhgl-zc.png                       |    0 
 igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/constant/TransType.java                    |   35 
 igds-dzhwk-web/src/main/resources/static/img/dzhwk/welcome/se-mj.png                         |    0 
 igds-dzhwk-web/src/main/resources/static/img/dzhwk/welcome/sys-user.png                      |    0 
 igds-dzhwk-view/src/main/java/com/fzzy/igds/sys/pr/DepotPR.java                              |  115 
 igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/constant/FoodLevel.java                    |   43 
 igds-dzhwk-core/src/main/java/com/fzzy/igds/sys/CoreDeptService.java                         |   91 
 igds-dzhwk-view/src/main/java/com/fzzy/igds/sys/pr/BuildingPR.java                           |   76 
 igds-dzhwk-web/src/main/resources/static/img/dzhwk/sys/a1.png                                |    0 
 igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/constant/AreationConst.java                |   32 
 igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/constant/ControlModel.java                 |   26 
 igds-dzhwk-view/src/main/java/com/fzzy/igds/sys/Company.view.xml                             |  607 ++
 igds-dzhwk-web/src/main/resources/static/img/dzhwk/welcome/temp-control.png                  |    0 
 igds-dzhwk-web/src/main/resources/static/img/dzhwk/welcome/temp-log.png                      |    0 
 igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/constant/AuditStatus.java                  |   51 
 igds-dzhwk-view/src/main/java/com/fzzy/igds/sys/pr/DicAreaPR.java                            |  106 
 igds-dzhwk-web/src/main/resources/static/dzhwk/sys.css                                       |    6 
 igds-dzhwk-core/src/main/java/com/fzzy/igds/sys/DicAreaService.java                          |  124 
 igds-dzhwk-web/src/main/resources/static/img/dzhwk/welcome/wel-bg1.png                       |    0 
 igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/constant/FoodType.java                     |   15 
 igds-dzhwk-web/src/main/resources/static/img/dzhwk/welcome/wel-body_03.png                   |    0 
 igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/constant/AiSerType.java                    |   36 
 igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/domain/DepotStatusConfirm.java             |  111 
 igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/domain/Dept.java                           |  107 
 igds-dzhwk-core/src/main/resources/mapper/DicAreaMapper.xml                                  |   23 
 igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/constant/Constant.java                     |  219 +
 igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/constant/ModbusConstant.java               |   36 
 igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/constant/RedisConst.java                   |  228 +
 igds-dzhwk-view/src/main/java/com/fzzy/igds/sys/Dept.view.xml                                |  440 ++
 igds-dzhwk-web/src/main/resources/static/img/dzhwk/welcome/wel-bg5.png                       |    0 
 igds-dzhwk-core/src/main/java/com/fzzy/igds/sys/DicService.java                              |  471 ++
 igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/data/GrainLay.java                         |   56 
 igds-dzhwk-web/src/main/resources/templates/home.html                                        |  304 +
 igds-dzhwk-view/src/main/java/com/fzzy/igds/sys/pr/DicPR.java                                |  338 +
 igds-dzhwk-core/src/main/java/com/fzzy/igds/sys/repository/DepotStoreRepository.java         |   30 
 igds-dzhwk-web/src/main/java/com/fzzy/sys/controller/SysIndexController.java                 |   41 
 igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/data/BaseParam.java                        |   42 
 igds-dzhwk-web/src/main/resources/static/img/dzhwk/welcome/sys-depot.png                     |    0 
 igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/constant/WarnLevel.java                    |   38 
 igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/data/GrainRow.java                         |   36 
 igds-dzhwk-core/src/main/java/com/fzzy/igds/sys/BuildingService.java                         |  137 
 igds-dzhwk-core/src/main/java/com/fzzy/igds/sys/DepotStoreService.java                       |  129 
 igds-dzhwk-core/src/main/java/com/fzzy/igds/sys/SysUserService.java                          |   47 
 igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/constant/GrainAnalysisModel.java           |   25 
 igds-dzhwk-view/src/main/java/com/fzzy/igds/sys/pr/SysUserPR.java                            |   31 
 igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/constant/WarnStatus.java                   |   48 
 igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/constant/GrainFrequence.java               |   29 
 igds-dzhwk-core/src/main/java/com/fzzy/igds/sys/repository/BuildingRepository.java           |   37 
 igds-dzhwk-web/src/main/resources/static/img/dzhwk/welcome/sys-grain.png                     |    0 
 igds-dzhwk-web/src/main/resources/static/img/dzhwk/welcome/title-zhgl.png                    |    0 
 igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/domain/Grain.java                          |  114 
 igds-dzhwk-core/src/main/java/com/fzzy/igds/sys/SysDeptService.java                          |  140 
 igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/domain/DicArea.java                        |   53 
 igds-dzhwk-web/src/main/resources/static/img/dzhwk/welcome/zhgl-kh.png                       |    0 
 igds-dzhwk-web/src/main/resources/static/img/dzhwk/welcome/title-sys.png                     |    0 
 igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/constant/FoodVariety.java                  |   41 
 igds-dzhwk-view/src/main/java/com/fzzy/igds/sys/pr/DepotStatusConfirmPR.java                 |  123 
 igds-dzhwk-web/src/main/resources/static/img/dzhwk/welcome/wel-bg2.png                       |    0 
 igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/domain/Granary.java                        |   80 
 igds-dzhwk-core/src/main/java/com/fzzy/igds/sys/repository/DepotStatusConfirmRepository.java |   28 
 igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/data/GrainPoint.java                       |   41 
 igds-dzhwk-web/src/main/resources/static/img/dzhwk/welcome/zhgl-xz.png                       |    0 
 igds-dzhwk-core/src/main/java/com/fzzy/igds/util/ContextUtil.java                            |  380 +
 igds-dzhwk-web/src/main/resources/templates/dzhwk/sys.html                                   |   15 
 igds-dzhwk-core/src/main/java/com/fzzy/igds/sys/CoreCompanyService.java                      |   92 
 igds-dzhwk-view/src/main/java/com/fzzy/igds/sys/Building.view.xml                            |  503 ++
 igds-dzhwk-web/src/main/resources/templates/home-static.html                                 |  416 +
 igds-dzhwk-web/src/main/resources/static/img/dzhwk/welcome/temp-mode.png                     |    0 
 igds-dzhwk-web/src/main/resources/static/img/dzhwk/welcome/se-jk.png                         |    0 
 igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/data/Page.java                             |   97 
 igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/constant/DepotStatus.java                  |   62 
 igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/data/GrainData.java                        |  121 
 igds-dzhwk-core/src/main/java/com/fzzy/igds/sys/repository/DepotRepository.java              |   68 
 igds-dzhwk-web/src/main/resources/static/img/dzhwk/welcome/se-rq.png                         |    0 
 igds-dzhwk-core/src/main/java/com/fzzy/igds/sys/mapper/DicAreaMapper.java                    |   25 
 igds-dzhwk-core/src/main/java/com/fzzy/igds/sys/repository/GranaryRepository.java            |   29 
 igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/constant/DeviceSerType.java                |   37 
 igds-dzhwk-web/src/main/resources/templates/dzhwk/welcome.html                               |   92 
 igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/constant/CameraSnapType.java               |   38 
 igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/constant/CameraPlayType.java               |   49 
 igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/constant/DeviceStatus.java                 |  137 
 igds-dzhwk-web/src/main/resources/static/img/dzhwk/welcome/sys-url.png                       |    0 
 igds-dzhwk-web/src/main/resources/static/img/dzhwk/welcome/sys-warn.png                      |    0 
 igds-dzhwk-web/src/main/resources/static/img/dzhwk/welcome/sys-device.png                    |    0 
 igds-dzhwk-core/src/main/java/com/fzzy/igds/sys/DepotStatusConfirmService.java               |  106 
 igds-dzhwk-view/src/main/java/com/fzzy/igds/sys/Depot.view.xml                               |  804 +++
 igds-dzhwk-view/src/main/java/com/fzzy/igds/sys/pr/DepotStorePR.java                         |  163 
 igds-dzhwk-core/src/main/java/com/fzzy/igds/util/WeatherUtil.java                            |   52 
 igds-dzhwk-view/src/main/java/models/igds.model.xml                                          |  416 +
 igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/constant/InoutConstant.java                |  265 +
 igds-dzhwk-view/src/main/java/com/fzzy/igds/sys/Granary.view.xml                             |  318 +
 igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/constant/DeviceType.java                   |   60 
 igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/domain/Building.java                       |  112 
 igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/constant/ProtocolEnum.java                 |   60 
 igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/constant/DeviceLocation.java               |   39 
 igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/constant/BizType.java                      |   66 
 igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/constant/RespCodeEnum.java                 |   37 
 igds-dzhwk-web/src/main/resources/static/img/dzhwk/welcome/wel-tit.png                       |    0 
 igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/constant/NoticeType.java                   |   35 
 igds-dzhwk-view/src/main/java/com/fzzy/igds/sys/pr/DeptPR.java                               |   89 
 igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/domain/GrainKey.java                       |   20 
 igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/domain/CheckItemKey.java                   |   18 
 igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/domain/Depot.java                          |  219 +
 igds-dzhwk-web/src/main/resources/static/ruoyi/home.js                                       |  671 +++
 igds-dzhwk-web/src/main/resources/static/img/dzhwk/welcome/wel-bg4.png                       |    0 
 igds-dzhwk-view/src/main/java/com/fzzy/igds/sys/DicArea.view.xml                             |  285 +
 igds-dzhwk-web/src/main/resources/static/img/dzhwk/welcome/zhgl-jh.png                       |    0 
 igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/constant/DeviceIotType.java                |   34 
 igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/domain/CheckItem.java                      |  119 
 igds-dzhwk-view/src/main/java/com/fzzy/igds/sys/pr/CompanyPR.java                            |   82 
 igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/constant/WarnType.java                     |   38 
 igds-dzhwk-core/src/main/java/com/fzzy/igds/sys/DepotService.java                            |  300 +
 igds-dzhwk-web/src/main/resources/static/img/dzhwk/welcome/se-conf.png                       |    0 
 igds-dzhwk-core/src/main/java/com/fzzy/igds/sys/repository/DicAreaRepository.java            |   47 
 igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/domain/Company.java                        |  155 
 igds-dzhwk-view/src/main/java/com/fzzy/igds/sys/pr/GranaryPR.java                            |   59 
 igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/domain/MQuality.java                       |  173 
 igds-dzhwk-web/src/main/resources/static/dzhwk/welcome/welcome.css                           |  134 
 igds-dzhwk-web/src/main/resources/static/img/dzhwk/welcome/n2-zn.png                         |    0 
 igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/domain/DepotStore.java                     |  170 
 igds-dzhwk-web/src/main/resources/static/img/dzhwk/welcome/zhgl-ht.png                       |    0 
 136 files changed, 13,085 insertions(+), 13 deletions(-)

diff --git a/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/constant/AiSerType.java b/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/constant/AiSerType.java
new file mode 100644
index 0000000..270fc36
--- /dev/null
+++ b/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/constant/AiSerType.java
@@ -0,0 +1,36 @@
+package com.fzzy.igds.dzhwk.constant;
+
+/**
+ *
+ */
+public enum AiSerType {
+    TYPE_01("01", "01-AI鏈嶅姟鍣�"),
+    TYPE_02("02", "02-AI鎽勫儚澶�"),
+    TYPE_99("99", "99-鐙珛缁堢");
+
+    private String code;
+    private String msg;
+
+    AiSerType(String code, String msg) {
+        this.code = code;
+        this.msg = msg;
+    }
+
+    public String getCode() {
+        return code;
+    }
+
+    public String getMsg() {
+        return msg;
+    }
+
+    public static String getMsg(String code) {
+        if (null == code) return null;
+
+        if (DeviceSerType.TYPE_01.getCode().equals(code)) return DeviceSerType.TYPE_01.getMsg();
+        if (DeviceSerType.TYPE_02.getCode().equals(code)) return DeviceSerType.TYPE_02.getMsg();
+
+        return DeviceSerType.TYPE_99.getMsg();
+    }
+
+}
diff --git a/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/constant/AreationConst.java b/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/constant/AreationConst.java
new file mode 100644
index 0000000..f4294d0
--- /dev/null
+++ b/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/constant/AreationConst.java
@@ -0,0 +1,32 @@
+package com.fzzy.igds.dzhwk.constant;
+
+/**
+ * @Description
+ * @Author CZT
+ * @Date 2024/12/24 10:05
+ */
+public class AreationConst {
+
+    /** 鎵嬪姩妯″紡鎵ц妯″紡 01 = 绯荤粺鎵ц **/
+    public static String EXE_MODE_01 = "01";
+
+    /** 鎵嬪姩妯″紡鎵ц妯″紡 02 = 缁堢鎵ц **/
+    public static String EXE_MODE_02 = "02";
+
+
+
+    /**
+     * 鏅鸿兘浠诲姟鐘舵��-杩愯涓�
+     */
+    public static String ARESTION_TASK_RUN = "01";
+
+    /**
+     * 鏅鸿兘浠诲姟鐘舵��-鍋滄
+     */
+    public static String ARESTION_TASK_STOP = "02";
+
+    /**
+     * 鏅鸿兘浠诲姟鐘舵��-瓒呮椂鏃犳晥
+     */
+    public static String ARESTION_TASK_NOUSE = "03";
+}
diff --git a/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/constant/AreationModel.java b/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/constant/AreationModel.java
new file mode 100644
index 0000000..41b5f71
--- /dev/null
+++ b/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/constant/AreationModel.java
@@ -0,0 +1,30 @@
+package com.fzzy.igds.dzhwk.constant;
+
+/**
+ * 閫氶妯″紡鏋氫妇
+ */
+public enum AreationModel {
+
+    MODEL_01("01", "闄嶆俯閫氶"),
+    MODEL_02("02", "鑷劧閫氶"),
+    MODEL_03("03", "淇濇按闄嶆俯閫氶"),
+    MODEL_04("04", "闄ゆ箍閫氶"),
+    MODEL_05("05", "鎺掔Н鐑�氶"),
+    MODEL_99("99", "鑷畾涔夋ā寮�");
+    
+    private String code;
+    private String msg;
+
+    AreationModel(String code, String msg) {
+        this.code = code;
+        this.msg = msg;
+    }
+
+    public String getCode() {
+        return code;
+    }
+
+    public String getMsg() {
+        return msg;
+    }
+}
diff --git a/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/constant/AuditStatus.java b/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/constant/AuditStatus.java
new file mode 100644
index 0000000..05c6052
--- /dev/null
+++ b/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/constant/AuditStatus.java
@@ -0,0 +1,51 @@
+package com.fzzy.igds.dzhwk.constant;
+
+/**
+ * 宸ュ崟鐘舵��
+ * @author chen
+ *
+ */
+public enum AuditStatus {
+	Status_10("10", "寰呭鏍�"),
+	Status_11("11", "寰呬粨鍌ㄥ鏍�"),
+	Status_12("12", "寰呰川妫�瀹℃牳"),
+	Status_13("13", "寰呯粺璁″鏍�"),
+	Status_14("14", "寰呬細璁″鏍�"),
+	Status_15("15", "寰呴瀵煎鏍�"),
+    Status_20("20", "閫氳繃"),
+    Status_30("30", "鎷掔粷"),
+    Status_40("40", "閫�鍥�");
+
+    private String code;
+    private String msg;
+
+    AuditStatus(String code, String msg) {
+        this.code = code;
+        this.msg = msg;
+    }
+
+    public String getCode() {
+        return code;
+    }
+
+    public String getMsg() {
+        return msg;
+    }
+
+	public static String getMsg(String code) {
+		if(null == code) return null;
+		
+		if(AuditStatus.Status_10.getCode().equals(code)) return AuditStatus.Status_10.getMsg();
+		if(AuditStatus.Status_11.getCode().equals(code)) return AuditStatus.Status_11.getMsg();
+		if(AuditStatus.Status_12.getCode().equals(code)) return AuditStatus.Status_12.getMsg();
+		if(AuditStatus.Status_13.getCode().equals(code)) return AuditStatus.Status_13.getMsg();
+		if(AuditStatus.Status_14.getCode().equals(code)) return AuditStatus.Status_14.getMsg();
+		if(AuditStatus.Status_15.getCode().equals(code)) return AuditStatus.Status_15.getMsg();
+		if(AuditStatus.Status_20.getCode().equals(code)) return AuditStatus.Status_20.getMsg();
+		if(AuditStatus.Status_30.getCode().equals(code)) return AuditStatus.Status_30.getMsg();
+		if(AuditStatus.Status_40.getCode().equals(code)) return AuditStatus.Status_40.getMsg();
+		
+		return "";
+	}
+
+}
diff --git a/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/constant/BizType.java b/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/constant/BizType.java
new file mode 100644
index 0000000..ff43a4f
--- /dev/null
+++ b/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/constant/BizType.java
@@ -0,0 +1,66 @@
+package com.fzzy.igds.dzhwk.constant;
+
+/**
+ * 鏁翠釜绯荤粺鐨勪笟鍔″垎绫�
+ * 
+ * //    PRESSURE("pressure", "姘斿帇妫�娴�"),
+ */
+public enum BizType {
+
+    GRAIN("grain", "绮儏妯″潡"),
+    PEST("pest", "铏妯″潡"),
+    GAS("gas", "姘斾綋妯″潡"),
+    AREATION("areation", "閫氶妯″潡"),
+    DEVICE_CONTROL("deviceControl", "璁惧鎿嶄綔"),
+    N2("n2", "姘旇皟妯″潡"),
+    INOUT_IN("intou_in", "鍏ュ簱"),
+    INOUT_OUT("intou_out", "鍑哄簱"),
+    TEMPCONTROL("temp", "鐜祦鎺ф俯"),
+    WEATHER("weather", "姘旇薄绔欐ā鍧�"),
+    ES("es", "鑳借�楁ā鍧�"),
+    SECURITY("security", "瀹夐槻妯″潡"),
+    SYS("sys", "绯荤粺鏈嶅姟"),
+    QUANTITY("quantity", "鏁伴噺鐩戠"),
+    WARN("warn", "棰勮鍒嗘瀽"),
+    SCREEN("screen", "澶у睆妯″潡"),
+    SCREEN_INOUT("screen_inout", "鍑哄叆搴撳ぇ灞忔ā鍧�"),
+    SCREEN_CHECK("screen_check", "鍖栭獙澶у睆妯″潡");
+    private String code;
+    private String msg;
+
+    private BizType(String code, String msg) {
+        this.code = code;
+        this.msg = msg;
+    }
+
+    public String getCode() {
+        return code;
+    }
+
+    public String getMsg() {
+        return msg;
+    }
+
+    public static String getMsg(String code) {
+        if(null == code) return null;
+
+        if(BizType.GRAIN.getCode().equals(code)) return BizType.GRAIN.getMsg();
+        if(BizType.PEST.getCode().equals(code)) return BizType.PEST.getMsg();
+        if(BizType.GAS.getCode().equals(code)) return BizType.GAS.getMsg();
+        if(BizType.AREATION.getCode().equals(code)) return BizType.AREATION.getMsg();
+        if(BizType.N2.getCode().equals(code)) return BizType.N2.getMsg();
+        if(BizType.INOUT_IN.getCode().equals(code)) return BizType.INOUT_IN.getMsg();
+        if(BizType.INOUT_OUT.getCode().equals(code)) return BizType.INOUT_OUT.getMsg();
+        if(BizType.TEMPCONTROL.getCode().equals(code)) return BizType.TEMPCONTROL.getMsg();
+        if(BizType.WEATHER.getCode().equals(code)) return BizType.WEATHER.getMsg();
+        if(BizType.ES.getCode().equals(code)) return BizType.ES.getMsg();
+        if(BizType.SECURITY.getCode().equals(code)) return BizType.SECURITY.getMsg();
+        if(BizType.SYS.getCode().equals(code)) return BizType.SYS.getMsg();
+        if(BizType.QUANTITY.getCode().equals(code)) return BizType.QUANTITY.getMsg();
+        if(BizType.WARN.getCode().equals(code)) return BizType.WARN.getMsg();
+        if(BizType.SCREEN.getCode().equals(code)) return BizType.SCREEN.getMsg();
+        if(BizType.SCREEN_INOUT.getCode().equals(code)) return BizType.SCREEN_INOUT.getMsg();
+        if(BizType.SCREEN_CHECK.getCode().equals(code)) return BizType.SCREEN_CHECK.getMsg();
+        return code;
+    }
+}
diff --git a/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/constant/CameraPlayType.java b/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/constant/CameraPlayType.java
new file mode 100644
index 0000000..de27cf6
--- /dev/null
+++ b/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/constant/CameraPlayType.java
@@ -0,0 +1,49 @@
+package com.fzzy.igds.dzhwk.constant;
+
+/**
+ * @Description 鎶撴媿鏂瑰紡
+ * @Author CZT
+ * @Date 2024/12/10 16:48
+ */
+public enum CameraPlayType {
+
+    PLAY_TYPE_DEFAULT("DEFAULT", "绯荤粺榛樿"),
+    PLAY_TYPE_WEB_RTC_DH("WEB_RTC_DH", "WEB-RTC-澶у崕"),
+    PLAY_TYPE_WEB_RTC_HIK("WEB_RTC_HIK", "WEB-RTC-娴峰悍"),
+    PLAY_TYPE_HIK_WEB_WS("HIK_WEB_WS", "娴峰悍web鏃犳彃浠�"),
+    PLAY_TYPE_DH_WEB_WS("DH_WEB_WS", "澶у崕web鏃犳彃浠�"),
+    PLAY_TYPE_VLC("VLC", "VLC鎻掍欢"),
+    PLAY_TYPE_HIK_WEB4("HIK_WEB4", "娴峰悍web鎻掍欢"),
+    PLAY_TYPE_HIK_MEDIA("MEDIA_HIK", "娴峰悍缁煎悎瀹夐槻骞冲彴");
+
+    private String code;
+    private String name;
+
+    private CameraPlayType(String code, String name) {
+        this.code = code;
+        this.name = name;
+    }
+
+    public String getCode() {
+        return code;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public static String getName(String code){
+        if(null == code) {
+            return null;
+        }
+        if(CameraPlayType.PLAY_TYPE_DEFAULT.getCode().equals(code)) return CameraPlayType.PLAY_TYPE_DEFAULT.getName();
+        if(CameraPlayType.PLAY_TYPE_WEB_RTC_DH.getCode().equals(code)) return CameraPlayType.PLAY_TYPE_WEB_RTC_DH.getName();
+        if(CameraPlayType.PLAY_TYPE_WEB_RTC_HIK.getCode().equals(code)) return CameraPlayType.PLAY_TYPE_WEB_RTC_HIK.getName();
+        if(CameraPlayType.PLAY_TYPE_HIK_WEB_WS.getCode().equals(code)) return CameraPlayType.PLAY_TYPE_HIK_WEB_WS.getName();
+        if(CameraPlayType.PLAY_TYPE_DH_WEB_WS.getCode().equals(code)) return CameraPlayType.PLAY_TYPE_DH_WEB_WS.getName();
+        if(CameraPlayType.PLAY_TYPE_VLC.getCode().equals(code)) return CameraPlayType.PLAY_TYPE_VLC.getName();
+        if(CameraPlayType.PLAY_TYPE_HIK_WEB4.getCode().equals(code)) return CameraPlayType.PLAY_TYPE_HIK_WEB4.getName();
+        if(CameraPlayType.PLAY_TYPE_HIK_MEDIA.getCode().equals(code)) return CameraPlayType.PLAY_TYPE_HIK_MEDIA.getName();
+        return code;
+    }
+}
diff --git a/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/constant/CameraSnapType.java b/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/constant/CameraSnapType.java
new file mode 100644
index 0000000..65e640a
--- /dev/null
+++ b/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/constant/CameraSnapType.java
@@ -0,0 +1,38 @@
+package com.fzzy.igds.dzhwk.constant;
+
+/**
+ * @Description 鎶撴媿鏂瑰紡
+ * @Author CZT
+ * @Date 2024/12/10 16:38
+ */
+public enum CameraSnapType {
+
+    SNAP_TYPE_FZZY_PLUGIN("FZZY-PLUGIN", "椋庢鑷磋繙鎻掍欢鎶撴媿"),
+    SNAP_TYPE_MEDIA("MEDIA", "娴佸獟浣�"),
+    SNAP_TYPE_OPEN_API("OPEN_API", "椋庢鑷磋繙API鎶撴媿");
+
+    private String code;
+    private String msg;
+
+    private CameraSnapType(String code, String msg) {
+        this.code = code;
+        this.msg = msg;
+    }
+
+    public String getCode() {
+        return code;
+    }
+
+    public String getMsg() {
+        return msg;
+    }
+
+    public static String getMsg(String code) {
+        if (null == code) return null;
+        if (CameraSnapType.SNAP_TYPE_FZZY_PLUGIN.getCode().equals(code))
+            return CameraSnapType.SNAP_TYPE_FZZY_PLUGIN.getMsg();
+        if (CameraSnapType.SNAP_TYPE_MEDIA.getCode().equals(code)) return CameraSnapType.SNAP_TYPE_MEDIA.getMsg();
+        if (CameraSnapType.SNAP_TYPE_OPEN_API.getCode().equals(code)) return CameraSnapType.SNAP_TYPE_OPEN_API.getMsg();
+        return code;
+    }
+}
diff --git a/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/constant/Constant.java b/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/constant/Constant.java
index 5c07d45..739914f 100644
--- a/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/constant/Constant.java
+++ b/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/constant/Constant.java
@@ -1,6 +1,225 @@
 package com.fzzy.igds.dzhwk.constant;
 
+import java.util.HashMap;
+import java.util.Map;
+
 public class Constant {
 
+    /**
+     * 鐢ㄤ簬瀛樻斁绮鍝佺code -name
+     */
+    public static Map<String, String> mapFoodVariety = new HashMap<>();
+
+    /**
+     * 鐢ㄤ簬瀛樻斁绮被鍨媍ode -name
+     */
+    public static Map<String, String> mapFoodType = new HashMap<>();
+
+    /**
+     * 鍒濆鍖栧瓨鏀炬祦绋嬪悇涓幆鑺傜殑鍚嶇О锛屽悕绉伴�氳繃鏇存柊瀛楀吀琛ㄧ殑鏃跺�欏悓姝�
+     */
+    public static Map<String,String> mapProgressName = new HashMap<>();
+
     public static final String MODEL_DZHWK = "dzhwk";// 绯荤粺妯″潡鏍囪-鐢靛瓙璐т綅鍗�
+
+    /**
+     * 閮ㄩ棬绫诲瀷
+     */
+    public static String DEPT_TYPE_10 = "10";  //鍏徃
+    public static String DEPT_TYPE_20 = "20";  //搴撳尯
+    public static String DEPT_TYPE_30 = "30";  //閮ㄩ棬
+
+    //-绮俯澶囩敤鐐�
+    public static final double ERROR_TEMP = -100;
+    //-绮俯鏁呴殰鐐�
+    public static final double FAULT_TEMP = -101;
+    //-绮俯琛ュ伩鐐�-閽堝閿ュ舰浠撹ˉ鐐逛娇鐢�
+    public static final double ADD_TEMP = -102;
+
+    public static final String EMPTY = "NULL";
+
+    // 鐢ㄤ簬鎶ユ枃涓殑TAG鏍囩璇嗗埆锛岃〃绀哄垎搴撳悕绉�
+    public static final String TAG_SUB_NAME = "SUB_NAME";
+
+    /**
+     * 杩愮畻绗�
+     */
+    public static final String OPERA_LE = "<=";
+    /**
+     * 杩愮畻绗�
+     */
+    public static final String OPERA_GE = ">=";
+
+    /**
+     * 绯荤粺鍚嶇О
+     */
+    public static final String APP_NAME = "igds";
+
+    public static final String MODEL_GRAIN = "grain";// 绯荤粺妯″潡鏍囪-绮儏绠$悊
+    public static final String MODEL_VERB = "verb";// 绯荤粺妯″潡鏍囪-閫氶绠$悊
+    public static final String MODEL_N2 = "n2";// 绯荤粺妯″潡鏍囪-姘旇皟绠$悊
+    public static final String MODEL_TEMP = "temp";// 绯荤粺妯″潡鏍囪-鍐呯幆娴佹俯鎺�
+    public static final String MODEL_HLXZ = "hlxz";// 鐜祦鐔忚捀
+    public static final String MODEL_QUANTITY = "quantity";// 绯荤粺妯″潡鏍囪-鏁伴噺妫�娴�
+    public static final String MODEL_INOUT = "inout";// 绯荤粺妯″潡鏍囪-鍑哄叆搴撶鐞�
+    public static final String MODEL_MANAGER = "manager";// 绯荤粺妯″潡鏍囪-缁煎悎涓氬姟
+    public static final String MODEL_SECURITY = "security";// 绯荤粺妯″潡鏍囪-瀹夐槻绠$悊
+    public static final String MODEL_ES = "es";// 绯荤粺妯″潡鏍囪-鑳借�楃鐞�
+    public static final String MODEL_SYS = "sys";// 绯荤粺妯″潡鏍囪-绯荤粺绠$悊
+    public static final String MODEL_WARN = "warn";// 绯荤粺妯″潡鏍囪-閫氱敤妯″潡
+    public static final String MODEL_COMMON = "common";// 绯荤粺妯″潡鏍囪-閫氱敤妯″潡
+    public static final String MODEL_GROUP = "group";// 绯荤粺妯″潡鏍囪-鐩戠
+
+    /**
+     * 榛樿椤剁骇鑺傜偣缂栫爜
+     */
+    public static final String DEFAULT_PARENT_CODE = "0";
+
+    public static final String DEFAULT_DEPT_ID = "0000";
+
+    public static final String SYS_USER = "SYS";
+
+    public static final String YN_Y = "Y";
+    public static final String YN_N = "N";
+    public static final String YN_E = "E";//浠h〃閿欒;
+
+    public static final int TR_TRUE = 1;
+    public static final int TR_FALSE = 0;
+
+    public static final String NETWORK_01 = "01";// 鏈夌嚎妯″紡
+    public static final String NETWORK_02 = "02";// 鏃犵嚎妯″紡
+
+    public static final String MODEL_KEY_LOGIN_USER = "loginUser";
+    public static final String MODEL_KEY_DEFAULT_COMPANY = "company";
+
+    public static final String MODEL_KEY_DEPT_ID = "deptId";// 鎵�灞炲垎搴�
+    // 浠撳簱鍒楄〃
+    public static final String MODEL_KEY_DEPOT_LIST = "listDepot";
+
+    public static final String MODEL_KEY_BIZ_TYPE = "bizType";
+    // 绮儏鍒楄〃
+    public static final String MODEL_KEY_GRAIN_MAP = "mapGrain";
+    // 姘斾綋鍒楄〃
+    public static final String MODEL_KEY_GAS_MAP = "mapGas";
+
+    /**
+     * 瀹氭椂绫诲瀷-姣忓ぉ鎵ц
+     */
+    public static final String TIM_TYPE_DAY = "day";
+    /**
+     * 瀹氭椂绫诲瀷-姣忓懆
+     */
+    public static final String TIM_TYPE_WEEK = "week";
+    /**
+     * 瀹氭椂绫诲瀷-鎸囧畾鍏蜂綋灏忔椂鏃堕棿
+     */
+    public static final String TIM_TYPE_HOUR = "hour";
+    /**
+     * 姣忓ぉ H鐐� M鍒� 鎵ц琛ㄨ揪寮�
+     */
+    public static final String CRON_DAY = "0 M H ? * *";
+    /**
+     * 姣忓懆W H鐐� M鍒� 鎵ц琛ㄨ揪寮�
+     */
+    public static final String CRON_WEEK = "0 M H ? * W";
+    /**
+     * 鍏蜂綋鏌愪釜鏃堕棿鐐�-姣忓勾
+     */
+    public static final String CRON_HOUR = "S M H D & ?";
+
+    /**
+     * 涓嬫媺妗嗙壒娈婄埗缂栫爜 -閫氶鐩殑
+     */
+    public static final String TRIGGER_PARENT_AREATION_TARGIT = "AREATION_TARGIT";
+
+    // 瀛楀吀-绮绛夌骇
+    public static final String TRIGGER_PARENT_FOOD_LEVEL = "FOOD_LEVEL_";
+    // 瀛楀吀-绮鍝佺
+    public static final String TRIGGER_PARENT_FOOD_VARIETY = "FOOD_VARIETY_";
+
+    // 瀛楀吀-绮绫诲瀷
+    public static final String TRIGGER_PARENT_FOOD_TYPE = "FOOD_TYPE_";
+
+    /**
+     * 椋庢鑷磋繙鐨勮棰戝崗璁畾涔�
+     */
+    public static final String PROTOCOL_VIDEO_FZZY = "PROTOCOL_VIDEO_FZZY";
+
+    // 瀛楀吀-鍑哄叆搴撴祦绋�
+    public static final String TRIGGER_PARENT_PROCESS_STATUS = "PROCESS_STATUS_";
+
+    /**
+     * 绮儏妫�娴嬪畾鏃跺櫒
+     */
+    public static final String JOB_BEAN_GRAIN = "JobGrainService";
+    /**
+     * 绮儏妫�娴嬪畾鏃跺櫒
+     */
+    public static final String JOB_BEAN_GAS = "JobGasService";
+    /**
+     * 绮儏妫�娴嬪畾鏃跺櫒
+     */
+    public static final String JOB_BEAN_PEST = "JobPestService";
+    /**
+     * 鐓ф槑鎺у埗瀹氭椂鍣�
+     */
+    public static final String JOB_BEAN_LAMP = "JobLampService";
+    /**
+     * 绌鸿皟鎺у埗瀹氭椂鍣�
+     */
+    public static final String JOB_BEAN_TEMP = "JobTempService";
+
+    /**
+     * 鍒嗘満鍦ㄤ娇鐢ㄤ腑鐨勭姸鎬侊紝渚嬪锛氶�氶涓�佹皵浣撻噰闆嗕腑銆佽櫕瀹抽噰闆嗕腑绛�
+     */
+    public static String STATUS_SER_RUN = "RUN";
+
+
+
+
+
+    /**
+     * 鎹熸孩绫诲瀷-鎹熻��
+     */
+    public static final String LOSS_OVER_LOSS = "LOSS";
+    /**
+     * 鎹熸孩绫诲瀷-婧㈠嚭
+     */
+    public static final String LOSS_OVER_OVER = "OVER";
+
+
+    /**
+     * 绮儏鐢电紗璧峰鏂逛綅(榛樿鍙宠竟)
+     */
+    public static final String GRAIN_START_ORIENTATION_RIGHT = "right"; //鍙宠竟
+    public static final String GRAIN_START_ORIENTATION_RIGHT_UP = "right-up"; //鍙充笂
+    public static final String GRAIN_START_ORIENTATION_LEFT = "left";  //宸﹁竟
+    public static final String GRAIN_START_ORIENTATION_LEFT_UP = "left-up";  //宸︿笂
+
+    /**
+     * 绮儏鐢电紗甯冪嚎鏂瑰悜(榛樿绾靛悜)
+     */
+    public static final String GRAIN_START_DIRECTION_PORTRAIT = "portrait";  //绾靛悜
+    public static final String GRAIN_START_DIRECTION_TRANSVERSE = "transverse";  //妯悜
+
+    /**
+     * 绮儏鐢电紗璧峰鐐逛綅(榛樿椤堕儴)
+     */
+    public static final String GRAIN_START_POINT_TOP = "top";    //椤堕儴
+    public static final String GRAIN_START_POINT_BELOW = "below";  //搴曢儴
+
+    /**
+     * 琛屽眰杞崲(榛樿涓嶈浆鎹�)
+     */
+    public static final String GRAIN_CONVERT_DEFAULT = "default";    //榛樿
+    public static final String GRAIN_CONVERT_CLOCKWISE = "clockwise";    //椤烘椂閽�
+    public static final String GRAIN_CONVERT_ANTICLOCKWISE = "anticlockwise";  //閫嗘椂閽�
+
+
+    //绛掍粨閿ュ舰-鏃犻獙璇�
+    public static final String CABLE_CONE_0 = "0";
+    //绛掍粨閿ュ舰-涓婇敟褰�
+    public static final String CABLE_CONE_1 = "1";
+    //绛掍粨閿ュ舰-涓嬮敟褰�
+    public static final String CABLE_CONE_2 = "2";
 }
diff --git a/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/constant/ControlModel.java b/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/constant/ControlModel.java
new file mode 100644
index 0000000..1cfd30f
--- /dev/null
+++ b/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/constant/ControlModel.java
@@ -0,0 +1,26 @@
+package com.fzzy.igds.dzhwk.constant;
+
+/**
+ * 鎺у埗鏌滄搷浣滄ā寮�
+ */
+public enum ControlModel {
+
+	MODEL_01("01", "鏈湴妯″紡"), MODEL_02("02", "杩滅▼妯″紡");
+
+	private String code;
+	private String msg;
+
+	ControlModel(String code, String msg) {
+		this.code = code;
+		this.msg = msg;
+	}
+
+	public String getCode() {
+		return code;
+	}
+
+	public String getMsg() {
+		return msg;
+	}
+
+}
diff --git a/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/constant/DepotStatus.java b/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/constant/DepotStatus.java
new file mode 100644
index 0000000..e22f318
--- /dev/null
+++ b/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/constant/DepotStatus.java
@@ -0,0 +1,62 @@
+package com.fzzy.igds.dzhwk.constant;
+
+/**
+ * 浠撳簱鐘舵�佹灇涓�
+ */
+public enum DepotStatus {
+
+    STATUS_1("1", "绌轰粨"),
+    STATUS_2("2", "鍏ュ簱涓�"),
+    STATUS_3("3", "灏佷粨"),
+    STATUS_31("31", "灏佷粨-姘旇皟涓�"),
+    STATUS_32("32", "灏佷粨-鐔忚捀涓�"),
+    STATUS_33("33", "灏佷粨-閫氶涓�"),
+    STATUS_34("34", "灏佷粨-娓╂帶涓�"),
+    STATUS_4("4", "鍑哄簱涓�"),
+    STATUS_9("9", "鍏朵粬");
+
+    private String code;
+    private String msg;
+
+    DepotStatus(String code, String msg) {
+        this.code = code;
+        this.msg = msg;
+    }
+
+    public String getCode() {
+        return code;
+    }
+
+    public String getMsg() {
+        return msg;
+    }
+
+    public static String getMsg(String code) {
+        if (null == code) return null;
+
+        if (DepotStatus.STATUS_1.getCode().equals(code)) return DepotStatus.STATUS_1.getMsg();
+        if (DepotStatus.STATUS_2.getCode().equals(code)) return DepotStatus.STATUS_2.getMsg();
+        if (DepotStatus.STATUS_3.getCode().equals(code)) return DepotStatus.STATUS_3.getMsg();
+        if (DepotStatus.STATUS_4.getCode().equals(code)) return DepotStatus.STATUS_4.getMsg();
+        if (DepotStatus.STATUS_31.getCode().equals(code)) return DepotStatus.STATUS_31.getMsg();
+        if (DepotStatus.STATUS_32.getCode().equals(code)) return DepotStatus.STATUS_32.getMsg();
+        if (DepotStatus.STATUS_33.getCode().equals(code)) return DepotStatus.STATUS_33.getMsg();
+        if (DepotStatus.STATUS_34.getCode().equals(code)) return DepotStatus.STATUS_34.getMsg();
+
+        return DepotStatus.STATUS_9.getMsg();
+    }
+
+
+    public static String getGBCode(String code) {
+        if (null == code) DepotStatus.STATUS_9.getCode();
+
+        if (DepotStatus.STATUS_31.equals(code)) return DepotStatus.STATUS_3.getCode();
+        if (DepotStatus.STATUS_32.equals(code)) return DepotStatus.STATUS_3.getCode();
+        if (DepotStatus.STATUS_33.equals(code)) return DepotStatus.STATUS_3.getCode();
+        if (DepotStatus.STATUS_34.equals(code)) return DepotStatus.STATUS_3.getCode();
+
+        return code;
+    }
+
+
+}
diff --git a/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/constant/DepotType.java b/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/constant/DepotType.java
new file mode 100644
index 0000000..014f314
--- /dev/null
+++ b/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/constant/DepotType.java
@@ -0,0 +1,49 @@
+package com.fzzy.igds.dzhwk.constant;
+
+/**
+ * 浠撳簱绫诲瀷锛岄拡瀵瑰綋鍓嶇郴缁熸墍鏀寔鐨勪粨鎴跨被鍨嬶紝闈炲浗鏍囩被鍨�
+ *
+ * @author jiazx
+ */
+public enum DepotType {
+
+    TYPE_01("01", "骞虫埧浠�"),
+    TYPE_02("02", "娴呭渾浠�"),
+    TYPE_03("03", "鍌ㄦ补缃�"),
+    TYPE_04("04", "绔嬬瓛浠�"),
+    TYPE_05("05", "妤兼埧浠�"),
+    TYPE_99("99", "鍏朵粬");
+
+    private String code;
+    private String msg;
+
+    DepotType(String code, String msg) {
+        this.code = code;
+        this.msg = msg;
+    }
+
+    public String getCode() {
+        return code;
+    }
+
+    public String getMsg() {
+        return msg;
+    }
+
+    public static String getMsg(String code) {
+        if (null == code) return null;
+
+        if (DepotType.TYPE_01.getCode().equals(code)) return DepotType.TYPE_01.getMsg();
+
+        if (DepotType.TYPE_02.getCode().equals(code)) return DepotType.TYPE_02.getMsg();
+
+        if (DepotType.TYPE_03.getCode().equals(code)) return DepotType.TYPE_03.getMsg();
+
+        if (DepotType.TYPE_04.getCode().equals(code)) return DepotType.TYPE_04.getMsg();
+
+        if (DepotType.TYPE_05.getCode().equals(code)) return DepotType.TYPE_05.getMsg();
+
+        return TYPE_99.getMsg();
+    }
+
+}
diff --git a/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/constant/DeviceIotType.java b/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/constant/DeviceIotType.java
new file mode 100644
index 0000000..013fc51
--- /dev/null
+++ b/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/constant/DeviceIotType.java
@@ -0,0 +1,34 @@
+package com.fzzy.igds.dzhwk.constant;
+
+/**
+ * 鐗╄仈缃戞嫇灞曡澶囩被鍨嬫灇涓剧被
+ */
+public enum DeviceIotType {
+
+    TYPE_01("01", "01-娓╂箍搴�"),
+
+    TYPE_02("02", "02-娑蹭綅璁�");
+
+    private String code;
+    private String msg;
+
+    DeviceIotType(String code, String msg) {
+        this.code = code;
+        this.msg = msg;
+    }
+
+    public String getCode() {
+        return code;
+    }
+
+    public String getMsg() {
+        return msg;
+    }
+
+	public static String getMsg(String code) {
+		if(null == code) return null;
+		if(DeviceIotType.TYPE_01.getCode().equals(code)) return DeviceIotType.TYPE_01.getMsg();
+		if(DeviceIotType.TYPE_02.getCode().equals(code)) return DeviceIotType.TYPE_02.getMsg();
+		return "鍏朵粬";
+	}
+}
diff --git a/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/constant/DeviceLocation.java b/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/constant/DeviceLocation.java
new file mode 100644
index 0000000..fde1ee5
--- /dev/null
+++ b/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/constant/DeviceLocation.java
@@ -0,0 +1,39 @@
+package com.fzzy.igds.dzhwk.constant;
+
+/**
+ * 璁惧浣嶇疆
+ */
+public enum DeviceLocation {
+
+    L_01("01", "01-姝i潰"),
+    L_02("02", "02-鑳岄潰"),
+    L_03("03", "03-宸︿晶"),
+    L_04("04", "04-鍙充晶"),
+    L_05("05", "05-浠撳唴");
+
+    private String code;
+    private String msg;
+
+    DeviceLocation(String code, String msg) {
+        this.code = code;
+        this.msg = msg;
+    }
+
+    public String getCode() {
+        return code;
+    }
+
+    public String getMsg() {
+        return msg;
+    }
+
+    public static String getMsg(String code) {
+        if (null == code) return null;
+        if (DeviceLocation.L_01.getCode().equals(code)) return DeviceLocation.L_01.getMsg();
+        if (DeviceLocation.L_02.getCode().equals(code)) return DeviceLocation.L_02.getMsg();
+        if (DeviceLocation.L_03.getCode().equals(code)) return DeviceLocation.L_03.getMsg();
+        if (DeviceLocation.L_04.getCode().equals(code)) return DeviceLocation.L_04.getMsg();
+        if (DeviceLocation.L_05.getCode().equals(code)) return DeviceLocation.L_05.getMsg();
+        return "鏈厤缃�";
+    }
+}
diff --git a/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/constant/DeviceSerType.java b/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/constant/DeviceSerType.java
new file mode 100644
index 0000000..e2e0521
--- /dev/null
+++ b/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/constant/DeviceSerType.java
@@ -0,0 +1,37 @@
+package com.fzzy.igds.dzhwk.constant;
+
+/**
+ * 鍒嗘満绫诲瀷锛氬叾涓嫭绔嬬粓绔寘鎷細鐙珛缁堢锛堝湴纾呫�佹墻鏍锋満銆佽溅鐗岃瘑鍒�佸寲楠岃澶囥�佸簱鍖烘皵璞$珯銆佹櫤鑳界粓绔�佸埗姘満绛夛級
+ */
+public enum DeviceSerType {
+
+    TYPE_01("01", "01-缁煎悎鎺у埗鏌�"),
+    TYPE_02("02", "02-鐙珛绮儏鍒嗘満"),
+    TYPE_03("03", "02-鐙珛閫氶鍒嗘満"),
+    TYPE_99("99", "99-鐙珛缁堢");
+
+    private String code;
+    private String msg;
+
+    DeviceSerType(String code, String msg) {
+        this.code = code;
+        this.msg = msg;
+    }
+
+    public String getCode() {
+        return code;
+    }
+
+    public String getMsg() {
+        return msg;
+    }
+
+    public static String getMsg(String code) {
+        if (null == code) return null;
+
+        if (DeviceSerType.TYPE_01.getCode().equals(code)) return DeviceSerType.TYPE_01.getMsg();
+        if (DeviceSerType.TYPE_02.getCode().equals(code)) return DeviceSerType.TYPE_02.getMsg();
+
+        return DeviceSerType.TYPE_99.getMsg();
+    }
+}
diff --git a/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/constant/DeviceStatus.java b/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/constant/DeviceStatus.java
new file mode 100644
index 0000000..a3bf7f2
--- /dev/null
+++ b/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/constant/DeviceStatus.java
@@ -0,0 +1,137 @@
+package com.fzzy.igds.dzhwk.constant;
+
+/**
+ * 璁惧鐘舵�佹灇涓�
+ */
+public enum DeviceStatus {
+
+	// 榛樿绫�
+	CLOSE("CLOSE", "鍏抽棴"), OPEN("OPEN", "鎵撳紑"),
+
+	// 椋庢満绫昏澶囩姸鎬�
+	W_CLOSE("W_CLOSE", "椋庡彛鍏�"), W_OPEN("W_OPEN", "椋庡彛寮�"), F_OPEN("F_OPEN", "椋庢満姝h浆"), F_OPEN_F(
+			"F_OPEN_F", "椋庢満鍙嶈浆"), F_CLOSE("F_CLOSE", "椋庢満鍏�"), ERROR("ERROR", "鏁呴殰"), ZERO(
+			"ZERO", "鏃犳搷浣�");
+
+	private String code;
+	private String msg;
+
+	DeviceStatus(String code, String msg) {
+		this.code = code;
+		this.msg = msg;
+	}
+
+	public String getCode() {
+		return code;
+	}
+
+	public String getMsg() {
+		return msg;
+	}
+
+	public static String getDeviceStatus(String code) {
+		if (null == code)
+			return "";
+
+		if (DeviceStatus.CLOSE.getCode().equals(code)) {
+			return DeviceStatus.CLOSE.getMsg();
+		}
+		if (DeviceStatus.F_CLOSE.getCode().equals(code)) {
+			return DeviceStatus.F_CLOSE.getMsg();
+		}
+
+		if (DeviceStatus.F_OPEN.getCode().equals(code)) {
+			return DeviceStatus.F_OPEN.getMsg();
+		}
+		if (DeviceStatus.OPEN.getCode().equals(code)) {
+			return DeviceStatus.OPEN.getMsg();
+		}
+
+		if (DeviceStatus.W_CLOSE.getCode().equals(code)) {
+			return DeviceStatus.W_CLOSE.getMsg();
+		}
+
+		if (DeviceStatus.W_OPEN.getCode().equals(code)) {
+			return DeviceStatus.W_OPEN.getMsg();
+		}
+
+		return "";
+	}
+
+	/**
+	 * 鏍规嵁褰撳墠閫氶亾鐘舵�佸拰鍏宠仈鐘舵�佽幏鍙栧疄闄呯殑璁惧鐘舵��
+	 * 
+	 * @param status
+	 * @param linkStatus
+	 * @param deviceType
+	 * @return
+	 */
+	public static String getStatus(String status, String linkStatus,
+			String deviceType) {
+		if (null == status || Constant.EMPTY.equalsIgnoreCase(status))
+			status = ERROR.code;
+		
+		if(null == linkStatus) linkStatus = Constant.EMPTY;
+
+		// if (null == linkStatus ||
+		// Constant.EMPTY.equalsIgnoreCase(linkStatus)){
+		// linkStatus = ERROR.code;
+		// }
+		
+		//鍙湁杞存祦椋庢満鍜屾贩娴侀鏈烘墠鑰冭檻鍏宠仈璁惧锛屽叾浠栧拷鐣ュ叧鑱�
+		if(!DeviceType.TYPE_0C.getCode().equals(deviceType) && !DeviceType.TYPE_02.getCode().equals(deviceType)){
+			linkStatus = null;
+		}
+
+		if (ERROR.code.equals(status) && OPEN.getCode().equals(linkStatus)) {
+			return W_OPEN.getCode();
+		}
+		if (ERROR.code.equals(status) && CLOSE.getCode().equals(linkStatus)) {
+			return W_CLOSE.getCode();
+		}
+		// 椋庢満绫荤殑璁惧澶勭悊
+		// 椋庢満鍏� 绐楀彛 寮�
+		if (F_CLOSE.getCode().equals(status)
+				&& OPEN.getCode().equals(linkStatus)) {
+			return W_OPEN.getCode();
+		}
+
+		// 椋庢満鍏� 绐楀彛鍏�
+		if (F_CLOSE.getCode().equals(status)
+				&& CLOSE.getCode().equals(linkStatus)) {
+			return W_CLOSE.getCode();
+		}
+
+		// 椋庢満寮� 绐楀彛寮�
+		if (F_OPEN.getCode().equals(status)
+				&& OPEN.getCode().equals(linkStatus)) {
+			return F_OPEN.getCode();
+		}
+		// 椋庢満寮� 绐楀彛鍏�
+//		if (F_OPEN.getCode().equals(status)
+//				&& CLOSE.getCode().equals(linkStatus)) {
+//			return ERROR.getCode();
+//		}
+		if (F_OPEN.getCode().equals(status)) {
+			return F_OPEN.getCode();
+		}
+
+		// 椋庢満鍙嶅紑 绐楀彛寮�
+		if (F_OPEN_F.getCode().equals(status)
+				&& OPEN.getCode().equals(linkStatus)) {
+			return F_OPEN_F.getCode();
+		}
+
+		// 椋庢満鍙嶅紑 绐楀彛鍏�
+//		if (F_OPEN_F.getCode().equals(status)
+//				&& CLOSE.getCode().equals(linkStatus)) {
+//			return ERROR.getCode();
+//		}
+		if (F_OPEN_F.getCode().equals(status)) {
+			return F_OPEN_F.getCode();
+		}
+
+		return status;
+	}
+
+}
diff --git a/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/constant/DeviceType.java b/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/constant/DeviceType.java
new file mode 100644
index 0000000..0ac2cdc
--- /dev/null
+++ b/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/constant/DeviceType.java
@@ -0,0 +1,60 @@
+package com.fzzy.igds.dzhwk.constant;
+
+/**
+ * 璁惧绫诲瀷鏋氫妇绫�
+ */
+public enum DeviceType {
+
+    TYPE_01("01", "01-椋庣獥"),
+    TYPE_02("02", "02-杞存祦椋庣獥"),
+    TYPE_03("03", "03-绂诲績椋庢満"),
+    TYPE_04("04", "04-鐜祦椋庢満"),
+    TYPE_05("05", "05-绌鸿皟"),
+    TYPE_06("06", "06-鐓ф槑"),
+    TYPE_07("07", "07-闃�闂�"),
+    TYPE_071("071", "071-绌鸿皟闃�闂�"),  //鎷撳睍璁惧绫诲瀷
+    TYPE_08("08", "08-姘旀车"),
+    TYPE_09("09", "09-涓婚榾闂�"),
+//    TYPE_0A("0A", "0A-杞存祦椋庣獥"),
+    TYPE_0B("0B", "0B-閫氶鍙�"),
+    TYPE_0C("0C", "0C-娣锋祦椋庡彛"),
+    TYPE_0D("0D", "0D-鍔犲帇椋庢満"),
+    TYPE_0E("0E", "0E-闂ㄧ璁惧");
+
+    private String code;
+    private String msg;
+
+    DeviceType(String code, String msg) {
+        this.code = code;
+        this.msg = msg;
+    }
+
+    public String getCode() {
+        return code;
+    }
+
+    public String getMsg() {
+        return msg;
+    }
+
+	public static String getMsg(String code) {
+		if(null == code) return null;
+		
+		if(DeviceType.TYPE_01.getCode().equals(code)) return DeviceType.TYPE_01.getMsg();
+		if(DeviceType.TYPE_02.getCode().equals(code)) return DeviceType.TYPE_02.getMsg();
+		if(DeviceType.TYPE_03.getCode().equals(code)) return DeviceType.TYPE_03.getMsg();
+		if(DeviceType.TYPE_04.getCode().equals(code)) return DeviceType.TYPE_04.getMsg();
+		if(DeviceType.TYPE_05.getCode().equals(code)) return DeviceType.TYPE_05.getMsg();
+        if(DeviceType.TYPE_071.getCode().equals(code)) return DeviceType.TYPE_071.getMsg();
+		if(DeviceType.TYPE_06.getCode().equals(code)) return DeviceType.TYPE_06.getMsg();
+		if(DeviceType.TYPE_07.getCode().equals(code)) return DeviceType.TYPE_07.getMsg();
+		if(DeviceType.TYPE_08.getCode().equals(code)) return DeviceType.TYPE_08.getMsg();
+		if(DeviceType.TYPE_09.getCode().equals(code)) return DeviceType.TYPE_09.getMsg();
+		if(DeviceType.TYPE_0B.getCode().equals(code)) return DeviceType.TYPE_0B.getMsg();
+		if(DeviceType.TYPE_0C.getCode().equals(code)) return DeviceType.TYPE_0C.getMsg();
+		if(DeviceType.TYPE_0D.getCode().equals(code)) return DeviceType.TYPE_0D.getMsg();
+        if(DeviceType.TYPE_0E.getCode().equals(code)) return DeviceType.TYPE_0E.getMsg();
+		
+		return "鍏朵粬";
+	}
+}
diff --git a/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/constant/FoodLevel.java b/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/constant/FoodLevel.java
new file mode 100644
index 0000000..bd214b5
--- /dev/null
+++ b/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/constant/FoodLevel.java
@@ -0,0 +1,43 @@
+package com.fzzy.igds.dzhwk.constant;
+
+/**
+ *绮绛夌骇
+ *
+ * 鏇存柊璁板綍锛�
+ * 1锛屽垹闄ょ壒绛夛紝浠�1绛夊紑濮�
+ */
+public enum FoodLevel {
+	
+    LEVEL_01("01", "涓�绛�"),
+    LEVEL_02("02", "浜岀瓑"),
+    LEVEL_03("03", "涓夌瓑"),
+    LEVEL_04("04", "鍥涚瓑"),
+    LEVEL_05("05", "浜旂瓑"),
+    LEVEL_06("06", "绛夊");
+
+    private String code;
+    private String msg;
+
+    private FoodLevel(String code, String msg) {
+        this.code = code;
+        this.msg = msg;
+    }
+
+    public String getCode() {
+        return code;
+    }
+
+    public String getMsg() {
+        return msg;
+    }
+
+    public static String getMsg(String code){
+        if(null == code) return null;
+        if(FoodLevel.LEVEL_01.getCode().equals(code)) return FoodLevel.LEVEL_01.getMsg();
+        if(FoodLevel.LEVEL_02.getCode().equals(code)) return FoodLevel.LEVEL_02.getMsg();
+        if(FoodLevel.LEVEL_03.getCode().equals(code)) return FoodLevel.LEVEL_03.getMsg();
+        if(FoodLevel.LEVEL_04.getCode().equals(code)) return FoodLevel.LEVEL_04.getMsg();
+        if(FoodLevel.LEVEL_05.getCode().equals(code)) return FoodLevel.LEVEL_05.getMsg();
+        return FoodLevel.LEVEL_06.getMsg();
+    }
+}
diff --git a/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/constant/FoodType.java b/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/constant/FoodType.java
new file mode 100644
index 0000000..b304efb
--- /dev/null
+++ b/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/constant/FoodType.java
@@ -0,0 +1,15 @@
+package com.fzzy.igds.dzhwk.constant;
+
+/**
+ * 浠撳偍鎬ц川鏋氫妇
+ * 鍦↙S/T 1702绮灞炴�у垎绫讳笌浠g爜缁�
+ */
+public class FoodType {
+
+    public static String getMsg(String code) {
+        if (null == code) {
+            return "";
+        }
+        return Constant.mapFoodType.get(code);
+    }
+}
diff --git a/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/constant/FoodVariety.java b/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/constant/FoodVariety.java
new file mode 100644
index 0000000..36dd390
--- /dev/null
+++ b/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/constant/FoodVariety.java
@@ -0,0 +1,41 @@
+package com.fzzy.igds.dzhwk.constant;
+
+import java.util.Set;
+
+/**
+ * 绮鍝佺锛�
+ * <p>
+ * 鏇存柊璁板綍锛�
+ * 鍙傝�冿細LST1703-2017 鏍囧噯閲嶆柊瀹氫箟
+ */
+public class FoodVariety {
+
+    /**
+     * 鏍规嵁鍚嶇О鎵剧紪鐮�
+     *
+     * @param msg
+     * @return
+     */
+    public static String getCode(String msg) {
+        Set<String> keys = Constant.mapFoodVariety.keySet();
+        if (null == keys || keys.isEmpty()) return msg;
+
+        for (String key : keys) {
+            if (Constant.mapFoodVariety.get(key).equals(msg)) {
+                return key;
+            }
+        }
+        return msg;
+    }
+
+    /**
+     * 鏍规嵁缂栫爜鎵惧悕绉�
+     * @param code
+     * @return
+     */
+    public static String getMsg(String code) {
+        if (null == code) return "鏈厤缃�";
+
+        return Constant.mapFoodVariety.get(code);
+    }
+}
diff --git a/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/constant/GrainAnalysisModel.java b/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/constant/GrainAnalysisModel.java
new file mode 100644
index 0000000..6fc64a5
--- /dev/null
+++ b/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/constant/GrainAnalysisModel.java
@@ -0,0 +1,25 @@
+package com.fzzy.igds.dzhwk.constant;
+
+/**
+ * 閫氶妯″紡鏋氫妇
+ */
+public enum GrainAnalysisModel {
+
+    MODEL_01("01", "绮俯寮傚父鐐逛綅鍒嗘瀽");
+
+    private String code;
+    private String msg;
+
+    GrainAnalysisModel(String code, String msg) {
+        this.code = code;
+        this.msg = msg;
+    }
+
+    public String getCode() {
+        return code;
+    }
+
+    public String getMsg() {
+        return msg;
+    }
+}
diff --git a/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/constant/GrainFrequence.java b/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/constant/GrainFrequence.java
new file mode 100644
index 0000000..369d089
--- /dev/null
+++ b/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/constant/GrainFrequence.java
@@ -0,0 +1,29 @@
+package com.fzzy.igds.dzhwk.constant;
+
+/**
+ * 绮儏淇濆瓨棰戞
+ * 
+ * @author jiazx
+ *
+ */
+public enum GrainFrequence {
+
+	FREQ_01("01", "涓�鏃ュ娆�"), FREQ_02("02", "涓�鏃ヤ竴娆�"), FREQ_03("03", "涓�鏃ヤ袱娆�");
+
+	private String code;
+	private String msg;
+
+	GrainFrequence(String code, String msg) {
+		this.code = code;
+		this.msg = msg;
+	}
+
+	public String getCode() {
+		return code;
+	}
+
+	public String getMsg() {
+		return msg;
+	}
+
+}
diff --git a/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/constant/InoutConstant.java b/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/constant/InoutConstant.java
new file mode 100644
index 0000000..5a21358
--- /dev/null
+++ b/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/constant/InoutConstant.java
@@ -0,0 +1,265 @@
+package com.fzzy.igds.dzhwk.constant;
+
+/**
+ * 鍑哄叆搴撳父閲忓畾涔�
+ *
+ * @author: andy.jia
+ * @description:
+ * @version:
+ * @data:2020骞�2鏈�19鏃�
+ */
+public class InoutConstant {
+
+    /**
+     * 榛樿韬唤璇�
+     */
+    public static final String DEFAULT_ID_CARD = "100000000000000000";
+
+    /**
+     * 缂撳瓨-鍏ュ簱ID
+     */
+    public static final String CACHE_RECORD_ID = "RECORD_ID";
+
+    /**
+     * 缂撳瓨KEY-鍑哄叆搴撻厤缃俊鎭紦瀛�
+     */
+    public static final String CACHE_INOUT_CONF_LIST = "INOUT_CONF";
+
+    /**
+     * 缂撳瓨KEY-鍑哄叆搴撴祦绋嬮厤缃俊鎭�
+     */
+    public static final String CACHE_INOUT_SYS_CONF = "INOUT_SYS_CONF";
+
+    /**
+     * 涓存椂缂撳瓨锛屽瓨鏀惧綋鍓嶇殑鍑哄叆搴撲俊鎭�
+     */
+    public static final String KEY_INOUT_LIST = "INOUT_LIST";
+
+    /**
+     * 涓存椂缂撳瓨锛屽瓨鏀惧綋鍓嶇殑鍑哄叆搴撲俊鎭椂闂达紝鍑哄叆搴撶紦瀛樺彲鑳藉瓨鍦ㄤ袱澶╁畬鎴愮殑鎯呭喌锛屾椂闂磋皟鏁翠负48灏忔椂
+     */
+    public static final Integer KEY_INOUT_LIST_TIME = 72 * 60 * 60;
+
+
+    /**
+     * 涓存椂缂撳瓨锛屽瓨鏀惧綋鏃ュ凡缁忓畬鎴愮殑鍑哄叆搴撲俊鎭�
+     */
+    public static final String KEY_INOUT_COMPLETE_LIST = "INOUT_COMPLETE";
+
+    /**
+     * 褰撴棩瀹屾垚鐨勫嚭鍏ュ簱淇℃伅浠诲姟鍒楄〃
+     */
+    public static final long KEY_INOUT_COMPLETE_LIST_TIME = 8 * 60 * 60;
+
+
+    // 鎵︽牱-鍖栭獙鐘舵��
+    public static final String STATUS_NONE = "NONE";
+    // 鎵︽牱-鍖栭獙鐘舵��
+    public static final String STATUS_PASS = "PASS";
+    // 鎵︽牱-鍖栭獙鐘舵��
+    public static final String STATUS_UNPASS = "UNPASS";
+
+    /**
+     * 鍖栭獙涓嶅悎鏍艰繘琛屾柟寮�
+     */
+    public static final String CHECK_NOPASS_NORMAL = "0";  //姝e父娴佽浆
+    public static final String CHECK_NOPASS_BACK = "1";   //鍑哄簱鏀跺崱
+    public static final String CHECK_NOPASS_RECORD = "2";   //娴佺▼缁撴潫
+
+    // 瀹屾垚鐘舵��-鏈畬鎴�
+    public static final String COMPLETE_STATUS_NONE = "NONE";
+    // 瀹屾垚鐘舵��-宸插畬鎴�
+    public static final String COMPLETE_STATUS_COMPLETE = "COMPLETE";
+
+    /**
+     * 璁惧鐘舵��-鏈煡鐘舵��
+     */
+    public static final String MAC_STATUS_NONE = "NONE";
+    /**
+     * 璁惧鐘舵��-姝e父鐘舵��
+     */
+    public static final String MAC_STATUS_NORMAL = "NORMAL";
+    /**
+     * 璁惧鐘舵��-鏈繛鎺ャ�佹棤淇″彿
+     */
+    public static final String MAC_STATUS_NO_SIGNAL = "NO_SIGNAL";
+
+    /**
+     * 鍑哄叆搴撻厤缃殑绫诲瀷 10 = 杞︾墝璇嗗埆
+     */
+    public static final String CONF_TYPE_10 = "10";
+
+    /**
+     * 鍑哄叆搴撻厤缃殑绫诲瀷 20 = 鎵︽牱鏈哄櫒
+     */
+    public static final String CONF_TYPE_20 = "20";
+
+    /**
+     * 鍑哄叆搴撻厤缃殑绫诲瀷 21 = 鍖栭獙鏈�
+     */
+    public static final String CONF_TYPE_21 = "21";
+
+    /**
+     * 鍑哄叆搴撻厤缃殑绫诲瀷 30 = 鍦扮
+     */
+    public static final String CONF_TYPE_30 = "30";
+
+    /**
+     * 鍑哄叆搴撻厤缃殑绫诲瀷40 = LED鏄剧ず灞忓箷
+     */
+    public static final String CONF_TYPE_40 = "40";
+
+    /**
+     * 鍖栭獙澶у睆瑙嗛
+     */
+    public static final String CONF_TYPE_50 = "50";
+
+    /**
+     * 鍑哄叆搴撴姄鎷嶆憚鍍忓ご
+     */
+    public static final String CONF_TYPE_60 = "60";
+
+    /**
+     * 绉伴噸涓绘帶鍒跺櫒
+     */
+    public static final String CONF_TYPE_70 = "70";
+
+    /**
+     * 鏅烘収鍗�
+     */
+    public static final String CONF_TYPE_80 = "80";
+
+    // 鍑哄叆搴撶被鍨�-鍏ュ簱
+    public static final String TYPE_IN = "IN";
+
+    // 鍑哄叆搴撶被鍨�-鍑哄簱
+    public static final String TYPE_OUT = "OUT";
+
+    public static final String TYPE_NONE = "NONE";
+
+    // 鏁版嵁鐘舵��-姝e父
+    public static final String RECORD_STATUS_NORMAL = "NORMAL";
+
+    // 鏁版嵁鐘舵��-琛ュ綍
+    public static final String RECORD_STATUS_ADD = "ADD";
+    // 鏁版嵁鐘舵��-宸插垹闄�
+    public static final String RECORD_STATUS_DEL = "DEL";
+
+    // 娴佺▼-鐧昏
+    public static final String PROGRESS_REGISTER = "REGISTER";
+    // 娴佺▼-鍏ュ簱璐ㄦ
+    public static final String PROGRESS_CHECK = "CHECK";
+    // 娴佺▼-鍊间粨
+    public static final String PROGRESS_HANDLE = "HANDLE";
+    // 娴佺▼-绉伴噸锛屽寘鎷弧杞︾О閲嶆垨鑰呯┖杞︾О閲嶏紝褰撳墠鐘舵�佹瘮杈冪壒娈婏紝涓嶄綔涓烘祦绋嬭妭鐐癸紝鍙綔涓烘爣绛�
+    public static final String PROGRESS_WEIGHT_TAG = "WEIGHT_TAG";
+    // 娴佺▼-婊¤溅绉伴噸
+    public static final String PROGRESS_WEIGHT_FULL = "WEIGHT_FULL";
+    // 娴佺▼-绌鸿溅绉伴噸
+    public static final String PROGRESS_WEIGHT_EMPTY = "WEIGHT_EMPTY";
+    // 娴佺▼-缁撶畻
+    public static final String PROGRESS_PAY = "PAY";
+    // 娴佺▼-鍗$墖鍥炴敹
+    public static final String PROGRESS_CARD_BACK = "CARD_BACK";
+
+    // 娴佺▼-澶囨锛堣〃绀烘祦绋嬫暣浣撳畬鎴愬悗澶囨锛�
+    public static final String PROGRESS_RECORD = "RECORD";
+
+
+    /**
+     * 璁″垝绫诲瀷 -杞崲璁″垝
+     **/
+    public static final String PLAN_TYPE_01 = "01";
+    /**
+     * 璁″垝绫诲瀷 -閲囪喘璁″垝
+     **/
+    public static final String PLAN_TYPE_02 = "02";
+    /**
+     * 璁″垝绫诲瀷 -閿�鍞鍒�
+     **/
+    public static final String PLAN_TYPE_03 = "03";
+    /**
+     * 璁″垝绫诲瀷 -鐢熶骇鍔犲伐璁″垝
+     **/
+    public static final String PLAN_TYPE_04 = "04";
+
+    /**
+     * 璁″垝鏄庣粏绫诲瀷 -杞嚭璁″垝
+     **/
+    public static final String PLAN_DETAIL_TYPE_1 = "1";
+
+    /**
+     * 璁″垝鏄庣粏绫诲瀷 -杞叆璁″垝
+     **/
+    public static final String PLAN_DETAIL_TYPE_2 = "2";
+    /**
+     * 妫�娴嬬粨鏋� -鍚堟牸
+     */
+    public static final String RESULT_1 = "1";
+    /**
+     * 妫�娴嬬粨鏋� -涓嶅悎鏍�
+     */
+    public static final String RESULT_0 = "0";
+
+    public static final String SAMPLE_TYPE_MANUAL = "0";
+    public static final String SAMPLE_TYPE_AUTOMATIC = "1";
+    public static final String SAMPLE_TYPE_RANDOM = "2";
+
+    /**
+     * 鍑哄叆搴撴椂瑙嗛绫诲瀷
+     */
+    public static String IMG_NAME_TYPE_DJ = "DJ";    //鐧昏鐓х墖
+    public static String IMG_NAME_TYPE_RK = "RK";    //杞﹁締鍏ュ簱鐓х墖
+    public static String IMG_NAME_TYPE_CK = "CK";    //杞﹁締鍑哄簱鐓х墖
+    public static String IMG_NAME_TYPE_GL = "GL";    //绉版瘺閲嶅墠鐓х墖
+    public static String IMG_NAME_TYPE_GR = "GR";    //绉版瘺閲嶅悗鐓х墖
+    public static String IMG_NAME_TYPE_GT = "GT";    //绉版瘺閲嶉《鐓х墖
+    public static String IMG_NAME_TYPE_TL = "TL";    //绉扮毊閲嶅墠鐓х墖
+    public static String IMG_NAME_TYPE_TR = "TR";    //绉扮毊閲嶅悗鐓х墖
+    public static String IMG_NAME_TYPE_TT = "TT";    //绉扮毊閲嶉《鐓х墖
+    public static String IMG_NAME_TYPE_SL = "SL";    //缁撶畻鏃跺敭绮汉鐓х墖
+    public static String IMG_NAME_TYPE_SF = "SF";    //鍞伯浜鸿韩浠借瘉鐓х墖
+    public static String IMG_NAME_TYPE_IVG = "IVG";  //鍏ュ簱绉版瘺閲嶈棰�
+    public static String IMG_NAME_TYPE_IVT = "IVT";  //鍏ュ簱绉扮毊閲嶈棰�
+    public static String IMG_NAME_TYPE_OVG = "OVG";  //鍑哄簱绉版瘺閲嶈棰�
+    public static String IMG_NAME_TYPE_OVT = "OVT";  //鍑哄簱绉扮毊閲嶈棰�
+    public static String IMG_NAME_TYPE_DJV = "DJV";  //鐧昏鏃惰棰�
+    public static String IMG_NAME_TYPE_RKV = "RKV";  //杞﹁締鍏ュ簱鏃惰棰�
+    public static String IMG_NAME_TYPE_CKV = "CKV";  //杞﹁締鍑哄簱鏃惰棰�
+
+    /**
+     * 鏍规嵁涓氬姟绫诲瀷鍜� 褰撳墠鐘舵�佽繑鍥炲綋鍓嶇姸鎬佺殑娴佺▼鍚嶇О
+     *
+     * @param type
+     * @param progress
+     * @return
+     */
+    public static String getProcessName(String type, String progress) {
+
+        if (PROGRESS_REGISTER.equals(progress))
+            return "鐧昏";
+
+        if (PROGRESS_CHECK.equals(progress))
+            return "鍏ュ簱鎵︽牱娴佺▼";
+
+        if (PROGRESS_HANDLE.equals(progress))
+            return "鍊间粨娴佺▼";
+
+        if (PROGRESS_WEIGHT_FULL.equals(progress))
+            return "婊¤溅绉伴噸娴佺▼";
+
+        if (PROGRESS_WEIGHT_EMPTY.equals(progress))
+            return "绌鸿溅绉伴噸娴佺▼";
+
+        if (PROGRESS_PAY.equals(progress))
+            return "缁撶畻娴佺▼";
+
+        if (PROGRESS_CARD_BACK.equals(progress))
+            return "鍗$墖鍥炴敹";
+
+        if (PROGRESS_RECORD.equals(progress))
+            return "娴佺▼瀹屾垚";
+
+        return "";
+    }
+}
diff --git a/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/constant/ModbusConstant.java b/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/constant/ModbusConstant.java
new file mode 100644
index 0000000..c758e12
--- /dev/null
+++ b/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/constant/ModbusConstant.java
@@ -0,0 +1,36 @@
+package com.fzzy.igds.dzhwk.constant;
+
+/**
+ * MOdBUS-鍩虹甯搁噺淇℃伅
+ */
+public class ModbusConstant {
+
+
+    //01-璇荤嚎鍦�
+    public static final String FUN_01 = "01";
+    //02-璇荤鏁i噺杈撳叆
+    public static final String FUN_02 = "02";
+    //03-璇讳繚鎸佸瘎瀛樺櫒
+    public static final String FUN_03 = "03";
+    //04-璇昏緭鍏ュ瘎瀛樺櫒
+    public static final String FUN_04 = "04";
+    //05-鍐欏崟涓嚎鍦�
+    public static final String FUN_05 = "05";
+    //06-鍐欏崟涓瘎瀛樺櫒
+    public static final String FUN_06 = "06";
+    //15-鍐欏涓嚎鍦�
+    public static final String FUN_15 = "15";
+    //16-鍐欏涓瘎瀛樺櫒
+    public static final String FUN_16 = "16";
+    //99-涓嶆搷浣�
+    public static final String FUN_99 = "99";
+
+
+
+    public static final String MODBUS_DEVICE_CACHE = "MODBUS_DEVICE";
+
+    public static final String MODBUS_GAS_CACHE_LIST = "MODBUS_GAS_LIST";
+
+
+
+}
diff --git a/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/constant/N2ModelTag.java b/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/constant/N2ModelTag.java
new file mode 100644
index 0000000..4aa7906
--- /dev/null
+++ b/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/constant/N2ModelTag.java
@@ -0,0 +1,46 @@
+package com.fzzy.igds.dzhwk.constant;
+
+/**
+ * 姘旇皟涓爱姘旈泦涓ā寮忥紝鍖呮嫭鍔ㄤ綔鍜岄儴鍒嗘祦绋嬫ā寮忥紝娴佺▼涓昏鍖呮嫭锛氭皵瀵嗘�ф娴嬪拰鏅鸿兘姘旇皟
+ */
+public enum N2ModelTag {
+
+    //鍔ㄤ綔绫�
+    MODEL_01("01", "鎶借礋鍘�"),
+    MODEL_02("02", "鎺掓皵"),
+    MODEL_03("03", "鍏呮爱"),
+    MODEL_04("04", "鍧囨爱"),
+
+    //鍔ㄤ綔绫�-姘皵鍥炴敹
+    MODEL_20("20", "姘皵鍥炴敹-鎺掓皵"),
+    MODEL_21("21", "姘皵鍥炴敹-鍏呮爱"),
+
+    //娴佺▼绫�
+    MODEL_30("30", "姘斿瘑鎬ф娴�"),
+    MODEL_31("31", "鏅鸿兘姘旇皟"),
+
+    //闅愯棌鎵ц绫�-妫�娴嬬被
+    MODEL_40("40", "妫�娴嬬被-绮儏妫�娴�"),
+    MODEL_41("41", "妫�娴嬬被-姘斾綋妫�娴�"),
+    MODEL_42("42", "妫�娴嬬被-鍘嬪姏妫�娴�"),
+    MODEL_43("43", "妫�娴嬬被-鍗婅“鏈熸娴�"),
+
+
+    MODEL_99("99", "鑷畾涔夋ā寮�");
+
+    private String code;
+    private String msg;
+
+    N2ModelTag(String code, String msg) {
+        this.code = code;
+        this.msg = msg;
+    }
+
+    public String getCode() {
+        return code;
+    }
+
+    public String getMsg() {
+        return msg;
+    }
+}
diff --git a/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/constant/NoticeType.java b/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/constant/NoticeType.java
new file mode 100644
index 0000000..bad751e
--- /dev/null
+++ b/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/constant/NoticeType.java
@@ -0,0 +1,35 @@
+package com.fzzy.igds.dzhwk.constant;
+
+/**
+ * 璀﹀憡閫氱煡绫诲瀷
+ * 鐭俊锛岃闊�
+ *
+ * @author Andy
+ */
+public enum NoticeType {
+
+
+    /**
+     *
+     */
+    NONE("NONE", "涓嶉�氱煡"),
+    SMS("SMS", "鐭俊閫氱煡"),
+    EMAIL("EMAIL", "閭閫氱煡"),
+    VOICE("VOICE", "璇煶閫氱煡"),
+    WECHAT("WECHAT", "寰俊閫氱煡");
+
+    private String code;
+    private String name;
+
+    NoticeType(String code, String name) {
+        this.code = code;
+        this.name = name;
+    }
+
+    public String getCode() {
+        return code;
+    }
+
+    public String getName() {
+        return name;
+    }}
diff --git a/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/constant/OrderRespEnum.java b/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/constant/OrderRespEnum.java
new file mode 100644
index 0000000..2ed8516
--- /dev/null
+++ b/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/constant/OrderRespEnum.java
@@ -0,0 +1,51 @@
+package com.fzzy.igds.dzhwk.constant;
+
+/**
+ * 鎿嶄綔鍝嶅簲鐮�
+ * 
+ * @author Andy
+ *
+ */
+public enum OrderRespEnum {
+
+	ORDER_SUCCESS("ORDER_SUCCESS", "鍛戒护鍙戦�佹垚鍔�"),
+	ORDER_ERROR("ORDER_ERROR", "鍛戒护鍙戦�佸嚭鐜板紓甯�"),
+	ORDER_INORDER("ORDER_INORDER","鍛戒护鎵ц鎺掗槦涓�"),
+	
+	ORDER_INPROGRESS("ORDER_INPROGRESS","鍛戒护缁х画鎵ц涓�"),
+
+	NO_PROTOCOL("NO_PROTOCOL", "褰撳墠鍗忚鏈疄鐜�"),
+	NO_SIGN("NO_SIGN", "杩炴帴寮傚父锛屾病鏈夎幏鍙栧埌杩炴帴"),
+	NO_FUNCTION("NO_FUNCTION", "缁堢鏆備笉鏀寔璇ュ姛鑳�"),
+
+	MSG_SUCCESS("MSG_SUCCESS", "淇℃伅瑙f瀽鎴愬姛"),
+	MSG_ERROR("MSG_ERROR", "淇℃伅瑙f瀽寮傚父"),
+	MSG_TIMEOUT("MSG_TIMEOUT", "瑙f瀽瓒呮椂"),
+	LOGOUT("LOGOUT", "绂荤嚎")
+	;
+
+	private String code;
+	private String msg;
+
+	OrderRespEnum(String code, String msg) {
+		this.code = code;
+		this.msg = msg;
+	}
+
+	public String getCode() {
+		return code;
+	}
+
+	public void setCode(String code) {
+		this.code = code;
+	}
+
+	public String getMsg() {
+		return msg;
+	}
+
+	public void setMsg(String msg) {
+		this.msg = msg;
+	}
+	
+}
diff --git a/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/constant/ProtocolEnum.java b/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/constant/ProtocolEnum.java
new file mode 100644
index 0000000..4e9e4c7
--- /dev/null
+++ b/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/constant/ProtocolEnum.java
@@ -0,0 +1,60 @@
+package com.fzzy.igds.dzhwk.constant;
+
+/**
+ * 绯荤粺涓殑鍗忚閰嶇疆锛屾病鏂板鏂扮殑鍗忚鍧囬渶瑕佸湪褰撳墠鏋氫妇涓坊鍔�
+ *
+ * @author Andy
+ */
+public enum ProtocolEnum {
+
+    TCP_DEFAULT("TCP_DEFAULT", "绯荤粺榛樿鍗忚"),
+    DG_TCP_01("TCP_DG", "澶у叕-TCP鍗忚绗竴鐗堣"),
+    DG_TCP_03("DG_TCP_03", "澶у叕-TCP鍗忚绗笁鐗�"),
+    DG_TCP_LZ("TCP_WSM_LZ", "澶у叕-TCP-鏋楄姖"),
+    DG_TCP_MS("TCP_DG_MS", "澶у叕-TCP-鐪夊北"),
+    TY_N2("TY_N2", "姘皵-鍚屾偊鍗忚"),
+    TCP_CD_WEATHER("TCP_CD_WEATHER", "鎴愰兘姘旇薄绔欏崗璁�"),
+    TCP_LZ_WEATHER("TCP_LZ_WEATHER", "鏋楄姖姘旇薄绔欏崗璁�"),
+    TCP_MS_STORAGE("TCP_MS_STORAGE", "鐪夊北鏁伴噺妫�娴嬪崗璁�"),
+    TCP_XSX_V1("TCP_XSX_V1", "閼儨閼富鍗忚1.0"),
+    TCP_ZLDZ_GRAIN_V1("TCP_ZLDZ_GRAIN_V1", "姝f潵鐢靛瓙绮儏鍗忚1.0"),
+    TCP_FZZY_V3("TCP_FZZY_V3", "椋庢鑷磋繙V3.0鍗忚"),
+    TCP_DGCC_HNZK("TCP_DGCC_HNZK", "澶у叕浠撳偍锛屾渤鍗楀懆鍙g伯搴�"),
+    TCP_FZZY_IOT_V3("TCP_FZZY_IOT_V3", "椋庢鑷磋繙鐗╄仈缃慥3.0鍗忚"),
+    TCP_SHUHAN_V1("TCP_SHUHAN_V1", "铚�姹夋暟閲忔娴媀1"),
+    TCP_FZZY_WEIGHT("TCP_FZZY_WEIGHT", "FZZY-鍦扮涓绘帶鍗忚"),
+    RK_WEATHER_V30("RK_WEATHER_V30", "寤哄ぇ浠佺姘旇薄绔欎簯V30"),
+    TCP_FZZY_N2_V3("TCP_FZZY_N2_V3", "FZZY-鍒舵爱鏈哄崗璁�"),
+    TCP_ZCL_N2("TCP_ZCL_N2", "涓偍绮埗姘満鍗忚"),
+    TCP_LT_SAMPLE_V3("TCP_LT_SAMPLE_V3", "鎵︽牱鏈哄崗璁�"),
+    TCP_FZZY_QUANTITY_V35("TCP_FZZY_QUANTITY_V35", "鏁伴噺妫�娴媀35"),
+    TCP_BHZH_GRAIN_FM_V1("TCP_BHZH_GRAIN_FM_V1", "閭︽捣鏅鸿兘鏃犵嚎涓绘満鐗圴1"),
+    TCP_BHZH_GRAIN_V2("TCP_BHZH_GRAIN_V2", "閭︽捣鏅鸿兘鏈夌嚎鐗圴2"),
+    TCP_BHZH_VERB_V2("TCP_BHZH_VERB_V2", "閭︽捣鎺у埗鏌滄櫤鑳芥湁绾跨増V2"),
+    TCP_BHZH_INOUT_V1("TCP_BHZH_INOUT_V1", "閭︽捣鏅鸿兘鍑哄叆搴撴帶鍒跺櫒鍗忚"),
+    TCP_BEIBO_GRAIN_V1("TCP_BEIBO_GRAIN_V1", "璐濆崥绮儏鍒嗘満鏈嶅姟绔崗璁�"),
+    TCP_ES_DLT645_V1("TCP_ES_DLT645_V1", "DL/T 645澶氬姛鑳界數琛ㄥ崗璁�"),
+    FZZY_OPENAPI_HTTP("FZZY_OPENAPI_HTTP", "椋庢鑷磋繙API-HTTP鍗忚"),
+    SDK_HK_ALL("SDK_HK", "SDK-娴峰悍鍗忚"),
+    TCP_MODBUS("TCP_MODBUS", "Modbus-TCP鍗忚"),
+    TCP_SHYB_LED_BX06("TCP_SHYB_LED_BX06", "LED-涓婃捣浠伴偊V6"),
+    TCP_ZH_LED_E3L("TCP_ZH_LED_E3L", "LED-涓埅E3L"),
+    FRID_REMOTE_SN("FRID_REMOTE_SN", "LED-杩滅▼鍗忚-灞卞崡绮簱");
+
+    private String code;
+    private String msg;
+
+    ProtocolEnum(String code, String msg) {
+        this.code = code;
+        this.msg = msg;
+    }
+
+    public String getCode() {
+        return code;
+    }
+
+    public String getMsg() {
+        return msg;
+    }
+
+}
diff --git a/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/constant/RedisConst.java b/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/constant/RedisConst.java
new file mode 100644
index 0000000..0027d6a
--- /dev/null
+++ b/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/constant/RedisConst.java
@@ -0,0 +1,228 @@
+package com.fzzy.igds.dzhwk.constant;
+
+/**
+ * Redis缂撳瓨浣跨敤鐨勭郴缁熷父閲忛厤缃� 涓昏鐢ㄤ簬閰嶇疆绯荤粺缂撳瓨鐨凨EY閰嶇疆
+ */
+public class RedisConst {
+
+    /**
+     * 鏍规嵁缁勭粐缂栫爜鏋勫缓瀹為檯浣跨敤鐨凨EY
+     *
+     * @param key1 缁勭粐缂栫爜
+     * @param key2 缂撳瓨KEY
+     * @return
+     */
+    public static String buildKey(String key1, String key2) {
+        return Constant.APP_NAME + ":" + key1 + ":" + key2;
+    }
+
+    /**
+     * 涓夊眰缁撴瀯鐨凨EY
+     *
+     * @param key1
+     * @param key2
+     * @param tag
+     * @return
+     */
+    public static String buildKey(String key1, String key2, String tag) {
+        return Constant.APP_NAME + ":" + key1 + ":" + key2 + ":" + tag;
+    }
+
+    /**
+     * 鍥涘眰缁撴瀯鐨凨EY
+     *
+     * @param companyId
+     * @param key
+     * @param tag1
+     * @param tag2
+     * @return
+     */
+    public static String buildKey(String companyId, String key, String tag1, String tag2) {
+        return Constant.APP_NAME + ":" + companyId + ":" + key + ":" + tag1 + ":" + tag2;
+    }
+
+    /**
+     * 鍒涘缓璁惧鍒楄〃鐨凨EY锛屼互鍒嗘満涓哄垎缁勫垱寤�
+     *
+     * @param companyId
+     * @param key
+     * @param tag1
+     * @return
+     */
+    public static String buildDeviceKey(String companyId, String key, String tag1) {
+        return Constant.APP_NAME + ":" + companyId + ":" + key + ":" + tag1;
+    }
+
+    /**
+     * 鏍规嵁缂撳瓨KEY鐨勫墠缂�鐢熸垚缂撳瓨KEy
+     *
+     * @param prefix
+     * @param bizId
+     */
+    public static String buildKeyByPrefix(String prefix, String bizId) {
+        if (null == bizId) return Constant.APP_NAME + ":" + prefix;
+        return Constant.APP_NAME + ":" + prefix + ":" + bizId;
+    }
+
+    /**
+     * 瀛楀吀琛ㄧ紦瀛橀厤缃�
+     */
+    public static final String KEY_DIC_TRIGGER = "KEY_DIC_TRIGGER";
+
+    /**
+     * 浠撳簱鍒楄〃KEY
+     */
+    public static final String KEY_DEPOT = "DEPOT_DATA";
+
+    /**
+     * 浠撳簱鍙傛暟鍒楄〃KEY
+     */
+    public static final String KEY_DEPOT_CONF = "DEPOT_CONF";
+
+    /**
+     * 鍒嗘満鍒楄〃KEY
+     */
+    public static final String KEY_DEVICE_SER_LIST = "SER_LIST";
+
+    /**
+     * 璁惧鍒楄〃
+     */
+    public static final String KEY_DEVICE_LIST = "DEVICE_LIST";
+
+    /**
+     * 鍗曚釜鑹插彿鍚�
+     */
+    public static final String KEY_DEVICE = "DEVICE";
+
+    /**
+     * 璁惧鍒楄〃
+     */
+    public static final String KEY_DEVICE_IOT_LIST = "DEVICE_IOT_LIST";
+    /**
+     * 浠撳簱鍜屽垎鏈虹殑澶氬澶氬叧绯婚泦鍚�
+     */
+    public static final String KEY_DEPOT_SER_LIST = "DEPOT_SER_LIST";
+
+    /**
+     * 寤虹瓚鐗╀俊鎭�
+     */
+    public static final String KEY_BUILDING_LIST = "BUILDING_LIST";
+
+    /**
+     * 鎵ц鍛戒护KEY鍓嶇紑
+     */
+    public static final String KEY_ORDER_PRE = "ORDER";
+
+    /**
+     * 鏈�鏂扮伯鎯呬俊鎭紦瀛樺垪琛紝鐢ㄤ簬瀛樻斁褰撳墠鏈�鏂扮殑绮儏淇℃伅
+     */
+    public static final String KEY_GRAIN = "GRAIN_DATA";
+
+    /**
+     * 鏈�鏂版皵浣撲俊鎭紦瀛樺垪琛�
+     */
+    public static final String KEY_GAS_DATA = "GAS_DATA";
+
+    /**
+     * 绯荤粺閰嶇疆KEY
+     */
+    public static final String KEY_SYS_CONF = "SYS_CONF";
+
+    /**
+     * 绮簱鐨勬俯婀垮害淇℃伅缂撳瓨
+     */
+    public static final String KEY_DEPOT_TH_PREFIX = "DEPOT_TH_PREFIX";
+
+    /**
+     * 浠ュ垎鏈烘垨鑰呬粨搴撲负鍗曚綅瀛樺偍鐨勪粨娓╀粨婀跨紦瀛樻爣鏍囩
+     */
+    public static final String KEY_T_TH = "T_TH";
+
+    /**
+     * 瀛樻斁姘旇薄淇℃伅鐨凨EY
+     */
+    public static final String KEY_WEATHER_INFO = "WEATHER_INFO";
+
+    /**
+     * 鏍规嵁浠撳簱缂栫爜瀛樻斁鏈�鏂扮殑鑳借�楁暟鎹俊鎭�
+     */
+    public static final String KEY_ES_DATA_MAP = "ES_DATA_MAP";
+
+    /**
+     * 绯荤粺涓粍缁囧垪琛�
+     */
+    public static final String KEY_DEPT_LIST = "DEPT_LIST";
+
+    /**
+     * 鍒舵爱鏈洪厤缃垪琛�
+     */
+    public static final String KEY_N2_CONF_LIST = "N2_CONF_LIST";
+
+    /**
+     * 鏈�鏂版皵鍘嬩俊鎭紦瀛樺垪琛�
+     */
+    public static final String KEY_PRESSURE_DATA = "PRESSURE_DATA";
+
+    /**
+     * 绯荤粺閰嶇疆鐨勬憚鍍忔満淇℃伅缂撳瓨
+     */
+    public static final String KEY_CAMERA_LIST = "CAMERA_LIST";
+
+
+    /**
+     * 涓夌淮閰嶇疆鍏宠仈淇℃伅key
+     */
+    public static final String KEY_THREE_CONF = "THREE_CONF";
+
+    /**
+     * 涓存椂缂撳瓨KEY鍓嶇紑
+     */
+    public static final String KEY_TEMP_PREFIX = "TEMP_";
+
+    /**
+     * 鏁伴噺鐩戞祴鍙傛暟鍒楄〃KEY--鍗曚釜璁惧
+     */
+    public static final String KEY_QUANTITY_CONF = "QUANTITY_CONF";
+
+
+    /**
+     * 浠撳簱璐ㄩ噺宸℃鏁版嵁缂撳瓨
+     */
+    public static final String KEY_DEPOT_QUALITY = "DEPOT_QUALITY";
+
+    /**
+     * 浠撳簱娑蹭綅鏁版嵁缂撳瓨
+     */
+    public static final String KEY_DEPOT_HEIGHT = "DEPOT_HEIGHT";
+
+    /**
+     * 浠撳簱鐗╄仈缃戝叧iot璁惧娓╂箍搴︾紦瀛榢ey
+     */
+    public static final String KEY_IOT_DEPOT_TEMP_HUM = "IOT_DEPOT_TEMP_HUM";
+    /**
+     * 鍗曚釜鏁伴噺妫�娴嬫湇鍔�
+     */
+    public static final String PREFIX_QUANTITY_SER = "QUANTITY_SER";
+
+    /**
+     * 璀﹀憡閰嶇疆鍒楄〃KEY
+     */
+    public static final String KEY_WARN_CONF = "WARN_CONF";
+
+    /**
+     * 闂ㄧ璁惧閰嶇疆鍒楄〃
+     */
+    public static final String KEY_DOOR_SENSOR_LIST = "DOOR_SENSOR_LIST";
+
+    /**
+     * 鎶撴媿鍒嗘満缂撳瓨鍓嶇紑
+     */
+    public static final String CACHE_KEY_PRE = "SNAP_SER";
+
+
+    /**
+     * AI璁惧缂撳瓨key
+     */
+    public static final String KEY_AI_SER = "AI_SER";
+
+}
diff --git a/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/constant/RespCodeEnum.java b/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/constant/RespCodeEnum.java
new file mode 100644
index 0000000..8a9ed8a
--- /dev/null
+++ b/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/constant/RespCodeEnum.java
@@ -0,0 +1,37 @@
+package com.fzzy.igds.dzhwk.constant;
+
+import lombok.Getter;
+
+/**
+ * 鍝嶅簲鐮佸畾涔�
+ * 
+ * @author Andy
+ *
+ */
+@Getter
+public enum RespCodeEnum {
+
+	/**
+	 *
+	 */
+	CODE_0000("0000", "鎴愬姛"),
+	CODE_1111("1111", "鍚庣鏈嶅姟寮傚父"),
+	CODE_1001("1001","鏁版嵁鏍煎紡鏍¢獙澶辫触"),
+	CODE_1002("1002","璇ュ簲鐢ㄦ棤婵�娲绘巿鏉�"),
+	CODE_1003("1003","璇ュ簲鐢ㄥ凡缁忔巿鏉冩垚鍔�"),
+	CODE_1004("1004","璁惧閫氳澶辫触"),
+	CODE_1005("1005","璇ヨ澶囦笉瀛樺湪"),
+	CODE_1006("1006","褰撳墠鐧诲綍浜哄凡鎺夌嚎"),
+	CODE_1007("1007","璇锋眰鍙傛暟寮傚父"),
+	CODE_1008("1008","娴佺▼涓嶆纭�"),
+	CODE_2000("2000","鍝嶅簲鏁版嵁涓虹┖")
+	;
+
+	private String code;
+	private String msg;
+
+	RespCodeEnum(String code, String msg) {
+		this.code = code;
+		this.msg = msg;
+	}
+}
diff --git a/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/constant/TransType.java b/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/constant/TransType.java
new file mode 100644
index 0000000..d62087f
--- /dev/null
+++ b/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/constant/TransType.java
@@ -0,0 +1,35 @@
+package com.fzzy.igds.dzhwk.constant;
+
+/**
+ * 杩愯緭鏂瑰紡
+ */
+public enum TransType {
+    TYPE_1("1", "姹借溅"),
+    TYPE_2("2", "鐏溅"),
+    TYPE_3("3", "杞埞"),
+    TYPE_9("9", "鍏朵粬");
+
+    private String code;
+    private String name;
+
+    TransType(String code, String name) {
+        this.code = code;
+        this.name = name;
+    }
+
+    public String getCode() {
+        return code;
+    }
+    
+    public String getName() {
+        return name;
+    }
+
+    public static String getName(String code) {
+    	if(null == code) return "";
+    	if(TransType.TYPE_1.getCode().equals(code)) return TransType.TYPE_1.getName();
+    	if(TransType.TYPE_2.getCode().equals(code)) return TransType.TYPE_2.getName();
+    	if(TransType.TYPE_3.getCode().equals(code)) return TransType.TYPE_3.getName();
+        return TransType.TYPE_9.getName();
+    }
+}
diff --git a/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/constant/WarnLevel.java b/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/constant/WarnLevel.java
new file mode 100644
index 0000000..c14d1f5
--- /dev/null
+++ b/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/constant/WarnLevel.java
@@ -0,0 +1,38 @@
+package com.fzzy.igds.dzhwk.constant;
+
+/**
+ * 璀﹀憡绛夌骇1
+ * @author
+ */
+public enum WarnLevel {
+
+    LEVEL_01("01", "涓�绾ц鍛�"),
+    LEVEL_02("02", "浜岀骇璀﹀憡"),
+    LEVEL_03("03", "涓夌骇璀﹀憡");
+    private String code;
+    private String msg;
+
+    WarnLevel(String code, String msg) {
+        this.code = code;
+        this.msg = msg;
+    }
+
+    public String getCode() {
+        return code;
+    }
+    
+    public String getMsg() {
+        return msg;
+    }
+
+    public static String getMsg(String code) {
+    	if(null == code) return "";
+
+    	if(WarnLevel.LEVEL_01.getCode().equals(code)) return WarnLevel.LEVEL_01.getMsg();
+    	if(WarnLevel.LEVEL_02.getCode().equals(code)) return WarnLevel.LEVEL_02.getMsg();
+    	if(WarnLevel.LEVEL_03.getCode().equals(code)) return WarnLevel.LEVEL_03.getMsg();
+
+        return "";
+    	
+    }
+}
diff --git a/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/constant/WarnStatus.java b/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/constant/WarnStatus.java
new file mode 100644
index 0000000..64fca7e
--- /dev/null
+++ b/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/constant/WarnStatus.java
@@ -0,0 +1,48 @@
+package com.fzzy.igds.dzhwk.constant;
+
+import lombok.Getter;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 鎶ヨ鐘舵��
+ * @author
+ */
+@Getter
+public enum WarnStatus {
+
+    STATUS_10("10", "鏈鐞�"),
+    STATUS_20("20", "寤惰繜澶勭悊"),
+    STATUS_30("30", "宸插鐞�"),
+    STATUS_40("40", "蹇界暐");
+
+    private String code;
+    private String name;
+
+    WarnStatus(String code, String name) {
+        this.code = code;
+        this.name = name;
+    }
+    public static List<String> getListDesc(){
+        List<String> result = new ArrayList<>(5);
+        result.add(WarnStatus.STATUS_30.getName());
+        result.add(WarnStatus.STATUS_10.getName());
+        result.add(WarnStatus.STATUS_40.getName());
+        result.add(WarnStatus.STATUS_20.getName());
+        return result;
+    }
+    /**
+     * 鏍规嵁code鑾峰彇瀵瑰簲鐨刵ame
+     * @param code
+     * @return
+     */
+    public static String getNameByCode(String code){
+        for(WarnStatus warnStatus:WarnStatus.values()){
+            if(warnStatus.getCode().equals(code)){
+                return warnStatus.getName();
+            }
+        }
+        return null;
+    }
+}
diff --git a/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/constant/WarnType.java b/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/constant/WarnType.java
new file mode 100644
index 0000000..e929710
--- /dev/null
+++ b/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/constant/WarnType.java
@@ -0,0 +1,38 @@
+package com.fzzy.igds.dzhwk.constant;
+
+/**
+ * 璀﹀憡绫诲瀷
+ * @author
+ */
+public enum WarnType {
+
+    TYPE_01("01", "璀﹀憡"),
+    TYPE_02("02", "棰勮"),
+    TYPE_03("03", "閫氱煡");
+    private String code;
+    private String msg;
+
+    WarnType(String code, String msg) {
+        this.code = code;
+        this.msg = msg;
+    }
+
+    public String getCode() {
+        return code;
+    }
+    
+    public String getMsg() {
+        return msg;
+    }
+
+    public static String getMsg(String code) {
+    	if(null == code) return "";
+
+    	if(WarnType.TYPE_01.getCode().equals(code)) return WarnType.TYPE_01.getMsg();
+    	if(WarnType.TYPE_02.getCode().equals(code)) return WarnType.TYPE_02.getMsg();
+    	if(WarnType.TYPE_03.getCode().equals(code)) return WarnType.TYPE_03.getMsg();
+
+        return "";
+    	
+    }
+}
diff --git a/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/data/BaseParam.java b/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/data/BaseParam.java
new file mode 100644
index 0000000..897749b
--- /dev/null
+++ b/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/data/BaseParam.java
@@ -0,0 +1,42 @@
+package com.fzzy.igds.dzhwk.data;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * @author: andy.jia
+ * @description:
+ * @date:2019.03.21
+ **/
+@Data
+public class BaseParam {
+
+	private int limit = 10;// LAYUI 涓撶敤锛屾瘡椤垫樉绀虹殑鏉℃暟銆俵aypage灏嗕細鍊熷姪 count 鍜� limit 璁$畻鍑哄垎椤垫暟
+
+	private int curr = 1;// LAYUI 涓撶敤 璧峰椤点�備竴鑸敤浜庡埛鏂扮被鍨嬬殑璺抽〉浠ュ強HASH璺抽〉
+	
+	private int page = 1;// 鐩爣椤甸潰
+
+	public int getPage() {
+		return page;
+	}
+
+	public void setPage(int page) {
+		this.page = page;
+	}
+
+	private String companyId;// 缁勭粐缂栫爜
+
+	@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd", timezone = "GMT+8")
+	private Date start;
+	@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd", timezone = "GMT+8")
+	private Date end;
+
+	private String depotId;// 浠撳簱缂栫爜
+
+	private String deptId;// 搴撳尯缂栫爜
+
+	private String key;//鍏抽敭瀛�
+}
diff --git a/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/data/GrainData.java b/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/data/GrainData.java
new file mode 100644
index 0000000..564841f
--- /dev/null
+++ b/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/data/GrainData.java
@@ -0,0 +1,121 @@
+package com.fzzy.igds.dzhwk.data;
+
+import com.bstek.dorado.annotation.PropertyDef;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fzzy.igds.dzhwk.domain.Depot;
+import com.fzzy.igds.dzhwk.domain.MQuality;
+import com.ruoyi.common.annotation.Excel;
+import lombok.Data;
+
+import javax.persistence.Transient;
+import java.io.Serializable;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 鐢ㄤ簬灏佽鐨勭伯鎯呬俊鎭紝姣忔鑾峰彇绮儏鏁版嵁锛屽皝瑁呬负褰撳墠瀵硅薄
+ *
+ * @author jiazx
+ */
+@Data
+public class GrainData implements Serializable {
+
+    /**
+     *
+     */
+    private static final long serialVersionUID = 1L;
+
+
+    @Excel(name = "鎵规缂栧彿", sort = 2)
+    @PropertyDef(label = "鎵规缂栧彿")
+    private String batchId;
+
+    @PropertyDef(label = "缁勭粐缂栫爜", description = "")
+    private String companyId;
+
+    @Excel(name = "鎵�灞炰粨搴�", sort = 1)
+    @PropertyDef(label = "鎵�灞炰粨搴�", description = "浠撳簱缂栧彿")
+    private String depotId;
+
+    @Excel(name = "鏈�浣庢俯绮俯", sort = 7)
+    @PropertyDef(label = "鏈�浣庢俯绮俯", description = "鍗曚綅鈩冿紝绮儏鏈�浣庢俯")
+    private Double tempMin = 0.0;
+
+    @Excel(name = "鏈�楂樼伯娓�", sort = 8)
+    @PropertyDef(label = "鏈�楂樼伯娓�", description = "鍗曚綅鈩冿紝绮儏鏈�楂樻俯")
+    private Double tempMax = 0.0;
+
+    @Excel(name = "骞冲潎绮俯", sort = 9)
+    @PropertyDef(label = "骞冲潎绮俯", description = "鍗曚綅鈩冿紝绮儏骞冲潎娓╁害")
+    private Double tempAve = 0.0;
+
+    @Excel(name = "浠撳唴婀�", sort = 4)
+    @PropertyDef(label = "浠撳唴婀垮害")
+    private Double humidityIn;
+
+    @Excel(name = "浠撳娓�", sort = 3)
+    @PropertyDef(label = "浠撳唴娓╁害")
+    private Double tempIn;
+
+    @Excel(name = "浠撳婀�", sort = 5)
+    @PropertyDef(label = "浠撳婀垮害")
+    private Double humidityOut;
+
+    @Excel(name = "浠撳娓�", sort = 6)
+    @PropertyDef(label = "浠撳娓╁害")
+    private Double tempOut;
+
+    @PropertyDef(label = "灞傝鍒�", description = "鐢�-闅斿紑鐨勯厤缃俊鎭�")
+    private String cable;
+
+    @PropertyDef(label = "绛掍粨灞傞厤缃�", description = "鐢�-闅斿紑鐨勯厤缃俊鎭�")
+    private String cableCir;
+
+    @PropertyDef(label = "娌归潰楂樺害", description = "鐢�-闅斿紑鐨勪袱涓�硷紝娌归潰楂樺害-寤虹瓚楂樺害")
+    private String oilHeight;
+
+    @PropertyDef(label = "澶╂皵", description = "鐩存帴濉啓涓枃淇℃伅锛屾櫞锛岄槾闆ㄥぉ")
+    private String weather = "#";
+
+    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8")
+    @PropertyDef(label = "鎺ユ敹鏃堕棿")
+    private Date receiveDate;
+
+    @PropertyDef(label = "妫�娴嬩汉")
+    private String checkUser;
+
+    @PropertyDef(label = "澶囨敞")
+    private String remark;
+
+    @PropertyDef(label = "閲囬泦鐐逛俊鎭�", description = "鐢ㄩ�楀彿闅斿紑鐨勬俯搴︿俊鎭俊鎭�")
+    private String points;
+
+    @PropertyDef(label = "鍚勪釜閲囬泦鐐圭殑淇℃伅", description = "鍏崇郴瀛楁")
+    private List<GrainPoint> listPoints;
+
+    @PropertyDef(label = "鍚勫眰绮俯", description = "鍏崇郴瀛楁")
+    private List<GrainLay> listLays;
+
+    @PropertyDef(label = "鍚勮娓╁害", description = "鍏崇郴瀛楁")
+    private List<GrainRow> listRows;
+
+    @PropertyDef(label = "浠撴埧淇℃伅", description = "鍏崇郴瀛楁")
+    private Depot depotData;
+
+    @PropertyDef(label = "鍖栭獙淇℃伅", description = "鍏崇郴瀛楁")
+    private MQuality mquality;
+
+    @PropertyDef(label = "绯荤粺鏃堕棿", description = "鍏崇郴瀛楁")
+    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8")
+    private Date sysDate = new Date();
+
+    @PropertyDef(label = "寤虹瓚楂樺害")
+    private String depotHeight;
+
+    @PropertyDef(label = "妫�娴嬪偍閲�", description = "鍗曚綅KG")
+    private Double storage;
+
+    @Transient
+    @PropertyDef(label = "褰撳墠浠搃ot璁惧鐨勬俯婀垮害鏁版嵁")
+    private List<GrainIotData> grainIotData;
+}
diff --git a/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/data/GrainIotData.java b/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/data/GrainIotData.java
new file mode 100644
index 0000000..ae60a60
--- /dev/null
+++ b/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/data/GrainIotData.java
@@ -0,0 +1,57 @@
+package com.fzzy.igds.dzhwk.data;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * 鐢ㄤ簬灏佽鎴愬搧绮俯婀垮害淇℃伅
+ *
+ * @author chen
+ */
+@Data
+public class GrainIotData implements Serializable {
+
+    /**
+     *
+     */
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 缁勭粐缂栫爜
+     */
+    private String companyId;
+    /**
+     * 浠撳簱缂栫爜
+     */
+    private String depotId;
+    /**
+     * 璁惧缂栫爜
+     */
+    private String deviceId;
+    /**
+     * 璁惧鍚嶇О
+     */
+    private String name;
+    /**
+     * 鏃堕棿
+     */
+    private String time;
+    /**
+     * 娓╁害
+     */
+    private Double temp = 0.0;
+    /**
+     * 婀垮害
+     */
+    private Double hum = 0.0;
+
+    /**
+     * 澶栨俯
+     */
+    private Double outTemp = 0.0;
+    /**
+     * 澶栨箍
+     */
+    private Double outHum = 0.0;
+}
diff --git a/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/data/GrainLay.java b/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/data/GrainLay.java
new file mode 100644
index 0000000..27d967d
--- /dev/null
+++ b/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/data/GrainLay.java
@@ -0,0 +1,56 @@
+package com.fzzy.igds.dzhwk.data;
+
+import com.bstek.dorado.annotation.PropertyDef;
+import lombok.Data;
+
+/**
+ * 绮儏鏁版嵁瑙f瀽瀵硅薄-灞備俊鎭�
+ */
+@Data
+public class GrainLay {
+
+    @PropertyDef(label = "鎵�鍦ㄥ眰")
+    private int fz;
+
+    @PropertyDef(label = "鎵�鍦ㄥ眰")
+    private int z;
+
+    @PropertyDef(label = "灞傛渶浣庢俯")
+    private Double tempMin;
+
+    @PropertyDef(label = "灞傛渶楂樻俯")
+    private Double tempMax;
+
+    @PropertyDef(label = "灞傚钩鍧囨俯")
+    private Double tempAve = 0.0;
+    
+    @PropertyDef(label = "鍐呭湀骞冲潎娓╁害", description = "鍗曚綅鈩冿紝绮儏骞冲潎娓╁害")
+    private Double tempAveIn = 0.0;
+
+    @PropertyDef(label = "澶栧湀骞冲潎娓╁害", description = "鍗曚綅鈩冿紝绮儏骞冲潎娓╁害")
+    private Double tempAveOut = 0.0;
+    
+    
+    private int sumNum;//褰撳墠灞傛�绘暟
+    
+    private int sumInNum;//鍐呭湀涓暟
+    
+    private int sumOutNum;//澶栧湀涓暟
+    
+    private double sumTemp;//灞傛�绘俯搴�
+    
+    private double sumInTemp;
+    
+    private double sumOutTemp;
+    
+
+	public GrainLay() {
+		super();
+	}
+
+	public GrainLay(int fz, int z) {
+		super();
+		this.fz = fz;
+		this.z = z;
+	}
+}
diff --git a/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/data/GrainPoint.java b/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/data/GrainPoint.java
new file mode 100644
index 0000000..f9b5e41
--- /dev/null
+++ b/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/data/GrainPoint.java
@@ -0,0 +1,41 @@
+package com.fzzy.igds.dzhwk.data;
+
+import com.bstek.dorado.annotation.PropertyDef;
+import lombok.Data;
+
+/**
+ * 绮儏鏁版嵁瑙f瀽瀵硅薄-閲囬泦鐐瑰璞′俊鎭紝XYZ琛ㄧず鐨勫垪琛屽眰锛屾暟鍊间粠1寮�濮嬨��
+ * 
+ */
+@Data
+public class GrainPoint {
+
+    @PropertyDef(label = "鎵�鍦ㄥ眰")
+    private int z;
+    
+    @PropertyDef(label = "鎵�鍦ㄥ眰")
+    private int fz;
+
+    @PropertyDef(label = "鎵�鍦ㄥ垪锛岀瓛浠撴墍鍦ㄥ湀鏁�")
+    private int x;
+
+    @PropertyDef(label = "鎵�鍦ㄨ锛岀瓛浠撴牴鍙凤紝鎬绘牴鍙�")
+    private int y;
+
+    @PropertyDef(label = "閲囬泦鐐规俯搴�")
+    private Double temp = 0.0;
+
+	public GrainPoint() {
+		super();
+	}
+
+	public GrainPoint(Double temp, int x, int y, int z, int fz) {
+		super();
+		this.z = z;
+		this.x = x;
+		this.y = y;
+		this.fz = fz;
+		this.temp = temp;
+	}
+
+}
diff --git a/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/data/GrainRow.java b/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/data/GrainRow.java
new file mode 100644
index 0000000..c4cdd1b
--- /dev/null
+++ b/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/data/GrainRow.java
@@ -0,0 +1,36 @@
+package com.fzzy.igds.dzhwk.data;
+
+import com.bstek.dorado.annotation.PropertyDef;
+import lombok.Data;
+
+/**
+ * 绮儏鏁版嵁瑙f瀽瀵硅薄-鍒椾俊鎭�
+ */
+@Data
+public class GrainRow {
+
+	@PropertyDef(label = "鎵�鍦ㄨ", description = "鏁版嵁浠�0寮�濮嬶紝濡傛灉鏄瓛浠撶殑璇濓紝鐢ㄤ簬璁板綍绛掍粨鐨勬牴鏁�")
+	private int y;
+
+	@PropertyDef(label = "灞傛渶浣庢俯")
+	private Double tempMin;
+
+	@PropertyDef(label = "灞傛渶楂樻俯")
+	private Double tempMax;
+
+	@PropertyDef(label = "灞傚钩鍧囨俯")
+	private Double tempAve = 0.0;
+
+	private int sumNum;// 褰撳墠灞傛�绘暟
+
+	private double sumTemp;// 灞傛�绘俯搴�
+
+	public GrainRow() {
+		super();
+	}
+
+	public GrainRow(int y) {
+		super();
+		this.y = y;
+	}
+}
diff --git a/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/data/Page.java b/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/data/Page.java
new file mode 100644
index 0000000..915c520
--- /dev/null
+++ b/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/data/Page.java
@@ -0,0 +1,97 @@
+package com.fzzy.igds.dzhwk.data;
+
+import java.util.Collections;
+import java.util.List;
+
+/**
+ * 鏍规嵁闇�瑕侀噸鍐欏皝瑁呯郴缁熶娇鐢ㄧ殑Page瀵硅薄锛屼富瑕佹槸涓轰簡婊¤冻LayUI鍓嶇鐨勪娇鐢�
+ *
+ * @author Andy
+ */
+public class Page<T> extends com.baomidou.mybatisplus.extension.plugins.pagination.Page<T> {
+
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = 1L;
+
+	private List<T> data = Collections.emptyList();// LAYUI涓娇鐢ㄧ殑鏁版嵁淇℃伅
+
+	private String code = "0";// LAYUI 涓殑瀹氫箟
+
+	private String msg;// LAYUI浣跨敤鐨勬彁绀轰俊鎭�
+
+	private int count;// LAYUI浣跨敤鐨勬�绘暟
+
+	private int limit;// 姣忛〉鏄剧ず鐨勬潯鏁般�俵aypage灏嗕細鍊熷姪 count 鍜� limit 璁$畻鍑哄垎椤垫暟
+
+	private int curr;// 璧峰椤点�備竴鑸敤浜庡埛鏂扮被鍨嬬殑璺抽〉浠ュ強HASH璺抽〉
+
+	public int getLimit() {
+		Long size1 = super.getSize();
+		limit = size1.intValue();
+		return limit;
+	}
+
+	public void setLimit(int limit) {
+		this.limit = limit;
+		this.setSize(limit);
+	}
+
+	public int getCurr() {
+		Long size1 = super.getCurrent();
+		curr = size1.intValue();
+		return curr;
+	}
+
+	public void setCurr(int curr) {
+		this.curr = curr;
+		super.setCurrent(curr);
+	}
+
+	public List<T> getData() {
+		data = super.getRecords();
+		return data;
+	}
+
+	public void setData(List<T> data) {
+		this.data = data;
+		super.setRecords(data);
+	}
+
+	public String getCode() {
+		return code;
+	}
+
+	public void setCode(String code) {
+		this.code = code;
+	}
+
+	public String getMsg() {
+		return msg;
+	}
+
+	public void setMsg(String msg) {
+		this.msg = msg;
+	}
+
+	public int getCount() {
+		Long size1 = super.getTotal();
+		count = size1.intValue();
+		return count;
+	}
+
+	public void setCount(int count) {
+		this.count = count;
+		super.setTotal(count);
+	}
+	
+	
+	public Page() {
+    }
+
+    public Page(int current, int size) {
+        super(current, size);
+    }
+
+}
diff --git a/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/domain/Building.java b/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/domain/Building.java
new file mode 100644
index 0000000..fc4f000
--- /dev/null
+++ b/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/domain/Building.java
@@ -0,0 +1,112 @@
+package com.fzzy.igds.dzhwk.domain;
+
+import com.bstek.dorado.annotation.PropertyDef;
+import lombok.Data;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.Table;
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * @Description 浠撴埧瀹炰綋
+ * @Author CZT
+ * @Date 2025/05/28 18:55
+ */
+@Data
+@Entity
+@Table(name = "D_BUILDING")
+public class Building implements Serializable {
+
+    /**
+     *
+     */
+    private static final long serialVersionUID = 1L;
+
+    @Id
+    @Column(name = "ID_", length = 50)
+    @PropertyDef(label = "浠撴埧缂栫爜")
+    private String id;
+
+    @Column(name = "COMPANY_ID_", length = 10)
+    @PropertyDef(label = "缁勭粐缂栫爜")
+    private String companyId;
+
+    @Column(name = "DEPT_ID_", length = 40)
+    @PropertyDef(label = "鎵�灞炲簱鐐�")
+    private String deptId;
+
+    @Column(name = "NAME_", length = 50)
+    @PropertyDef(label = "浠撴埧鍚嶇О")
+    private String name;
+
+    @Column(name = "STORAGE_")
+    @PropertyDef(label = "璁捐鍌ㄩ噺", description = "鍗曚綅锛氬惃")
+    private Double storage;
+
+    @Column(name = "USER_DATE_")
+    @PropertyDef(label = "浣跨敤鏃ユ湡")
+    private Date userDate;
+
+    @Column(name = "HEIGHT_", precision = 16, scale = 2)
+    @PropertyDef(label = "浠撴埧楂樺害", description = "鍗曚綅锛氱背")
+    private Double height;
+
+    @Column(name = "LENGTH_", precision = 16, scale = 2)
+    @PropertyDef(label = "浠撴埧闀垮害", description = "鍗曚綅锛氱背")
+    private Double length;
+
+    @Column(name = "WIDTH_", precision = 16, scale = 2)
+    @PropertyDef(label = "浠撴埧瀹藉害", description = "鍗曚綅锛氱背")
+    private Double width;
+
+    @Column(name = "DIAMETER_", precision = 16, scale = 2)
+    @PropertyDef(label = "绛掍粨鐩村緞", description = "鍗曚綅锛氱背")
+    private Double diameter;
+
+    @Column(name = "VOLUME_", precision = 16, scale = 2)
+    @PropertyDef(label = "绛掍粨浣撶Н", description = "鍗曚綅锛氱珛鏂圭背")
+    private Double volume;
+
+    @Column(name = "DE_VOLUME_", precision = 16, scale = 2)
+    @PropertyDef(label = "鎵i櫎浣撶Н", description = "鍗曚綅锛氱珛鏂圭背")
+    private Double deVolume;
+
+    @Column(name = "DOOR_NUM_")
+    @PropertyDef(label = "浠撻棬鏁�")
+    private Integer doorNum;
+
+    @Column(name = "GROUND_", length = 20)
+    @PropertyDef(label = "鍦伴潰缁撴瀯")
+    private String ground;
+
+    @Column(name = "WALL_", length = 20)
+    @PropertyDef(label = "澧欎綋缁撴瀯")
+    private String wall;
+
+    @Column(name = "ROOF_", length = 20)
+    @PropertyDef(label = "灞嬮《缁撴瀯")
+    private String roof;
+
+    @Column(name = "ROOF_TRUSS_", length = 20)
+    @PropertyDef(label = "灞嬫灦缁撴瀯")
+    private String roofTruss;
+
+    @Column(name = "CREATE_DATE_")
+    @PropertyDef(label = "寤洪�犳棩鏈�")
+    private Date createDate;
+
+    @Column(name = "LON_", precision = 16, scale = 4)
+    @PropertyDef(label = "缁忓害")
+    private Double lon;
+
+    @Column(name = "LAT_", precision = 16, scale = 4)
+    @PropertyDef(label = "绾害")
+    private Double lat;
+
+    @Column(name = "UPDATE_TIME_")
+    @PropertyDef(label = "鏇存柊鏃堕棿")
+    private Date updateTime;
+}
diff --git a/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/domain/CheckItem.java b/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/domain/CheckItem.java
new file mode 100644
index 0000000..202d423
--- /dev/null
+++ b/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/domain/CheckItem.java
@@ -0,0 +1,119 @@
+package com.fzzy.igds.dzhwk.domain;
+
+import com.bstek.dorado.annotation.PropertyDef;
+import lombok.Data;
+
+import javax.persistence.*;
+import java.io.Serializable;
+
+/**
+ * @Description 鍖栭獙椤�
+ * @Author CZT
+ * @Date 2025/05/28 19:06
+ */
+@Data
+@Entity
+@IdClass(CheckItemKey.class)
+@Table(name = "D_CHECK_ITEM")
+public class CheckItem implements Serializable {
+
+    /**
+     *
+     */
+    private static final long serialVersionUID = 1L;
+
+    @Id
+    @Column(name = "CHECK_ID_", length = 40)
+    @PropertyDef(label = "妫�娴嬬紪鐮�")
+    private String checkId;
+
+    @Id
+    @Column(name = "COMPANY_ID_", length = 10)
+    @PropertyDef(label = "缁勭粐缂栫爜")
+    private String companyId;
+
+    @Id
+    @Column(name = "STANDARD_ID_", length = 10)
+    @PropertyDef(label = "妫�娴嬮」缂栫爜")
+    private String standardId;
+
+    @Column(name = "STANDARD_NAME_", length = 50)
+    @PropertyDef(label = "鍖栭獙椤�")
+    private String standardName;
+
+    @Column(name = "UNIT_", length = 20)
+    @PropertyDef(label = "鍗曚綅")
+    private String unit;
+
+    @Column(name = "UPPER_LIMIT_")
+    @PropertyDef(label = "鏍囧噯浼愬��")
+    private Double upperLimit;
+
+    @Column(name = "OPERA_SYMBOL_", length = 4)
+    @PropertyDef(label = "杩愮畻绗﹀彿")
+    private String operaSymbol;
+
+    @Column(name = "RULE_NUM_")
+    @PropertyDef(label = "鎵i噸绯绘暟")
+    private Double ruleNum;
+
+    @Column(name = "RULE_ADD_")
+    @PropertyDef(label = "澧為噸%")
+    private Double ruleAdd;
+
+    @Column(name = "RULE_ADD_END_")
+    @PropertyDef(label = "澧為噸涓婇檺%")
+    private Double ruleAddEnd;
+
+    @Column(name = "RULE_REDUCE_")
+    @PropertyDef(label = "鎵i噸鍊�%")
+    private Double ruleReduce;
+
+    @Column(name = "VALUE_", length = 40)
+    @PropertyDef(label = "妫�娴嬪��")
+    private String value;
+
+    @Column(name = "RULE_PRICE_")
+    @PropertyDef(label = "鎵h垂绯绘暟")
+    private Double rulePrice;
+
+    @Column(name = "RULE_REDUCE_PRICE_")
+    @PropertyDef(label = "鎵h垂")
+    private Double ruleReducePrice;
+
+    @Column(name = "ADD_NUM_")
+    @PropertyDef(label = "澧為噸", description = "鍗曚綅锛歬G")
+    private Double addNum;
+
+    @Column(name = "DE_NUM_")
+    @PropertyDef(label = "鎵i噸", description = "鍗曚綅锛歬G")
+    private Double deNum;
+
+    @Column(name = "ADD_PRICE_")
+    @PropertyDef(label = "澧炰环", description = "鍗曚綅锛氬厓")
+    private Double addPrice;
+
+    @Column(name = "DE_PRICE_")
+    @PropertyDef(label = "鎵d环", description = "鍗曚綅锛氬厓")
+    private Double dePrice;
+
+    @Column(name = "RESULT_", length = 2)
+    @PropertyDef(label = "妫�楠岀粨鏋�", description = "0=涓嶅悎鏍� 1=鍚堟牸")
+    private String result;
+
+    @Column(name = "REMARKS_", length = 50)
+    @PropertyDef(label = "澶囨敞")
+    private String remarks;
+
+    @Transient
+    @PropertyDef(label = "杩愮畻绗﹀彿鍊硷紝鍙仛椤甸潰鏄剧ず鐢�")
+    private String operaSymbolValue;
+
+    @Transient
+    @PropertyDef(label = "婀垮害")
+    private double perWet;
+
+    @Transient
+    @PropertyDef(label = "鏉傝川")
+    private double perImpurity;
+}
diff --git a/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/domain/CheckItemKey.java b/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/domain/CheckItemKey.java
new file mode 100644
index 0000000..72a3358
--- /dev/null
+++ b/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/domain/CheckItemKey.java
@@ -0,0 +1,18 @@
+package com.fzzy.igds.dzhwk.domain;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+
+import java.io.Serializable;
+
+@Data
+@AllArgsConstructor
+public class CheckItemKey implements Serializable {
+        private String checkId;
+        private String companyId;
+        private String standardId;
+
+    public CheckItemKey(){
+            super();
+        }
+    }
\ No newline at end of file
diff --git a/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/domain/Company.java b/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/domain/Company.java
new file mode 100644
index 0000000..8a7056a
--- /dev/null
+++ b/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/domain/Company.java
@@ -0,0 +1,155 @@
+package com.fzzy.igds.dzhwk.domain;
+
+import com.bstek.dorado.annotation.PropertyDef;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.Table;
+import java.io.Serializable;
+import java.util.Date;
+
+
+/**
+ * @Description 浠撳偍鍗曚綅瀹炰綋
+ * @Author CZT
+ * @Date 2025/05/28 18:58
+ */
+@Data
+@Entity
+@Table(name = "D_COMPANY")
+public class Company implements Serializable {
+
+
+    @Id
+    @Column(name = "ID_", length = 40)
+    @PropertyDef(label = "閮ㄩ棬id",description = "绯荤粺鍐呬娇鐢�,缁戝畾閮ㄩ棬琛�")
+    private String id;
+
+    @Column(name = "COMPANY_ID_", length = 10)
+    @PropertyDef(label = "缁勭粐缂栫爜")
+    private String companyId;
+
+    /*----------鍥芥爣瀛楁----------*/
+    @PropertyDef(label = "鍗曚綅浠g爜")
+    @Column(name = "dwdm", length = 18)
+    private String dwdm;
+
+    @PropertyDef(label = "缁熶竴鍗曚綅缂栫爜")
+    @Column(name = "tydwbm", length = 20)
+    private String tydwbm;
+
+    @PropertyDef(label = "鍗曚綅鍚嶇О")
+    @Column(name = "dwmc", length = 256)
+    private String dwmc;
+
+    @PropertyDef(label = "鍗曚綅绫诲瀷")
+    @Column(name = "dwlx", length = 2)
+    private String dwlx;
+
+    @PropertyDef(label = "娉ㄥ唽鏃ユ湡")
+    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    @Column(name = "zcrq")
+    private Date zcrq;
+
+    @PropertyDef(label = "娉ㄥ唽璧勬湰")
+    @Column(name = "zczb", precision = 20, scale = 6)
+    private Double zczb;
+
+    @PropertyDef(label = "璧勪骇鎬婚")
+    @Column(name = "zcze", precision = 20, scale = 6)
+    private Double zcze;
+
+    @PropertyDef(label = "娉曞畾浠h〃浜�")
+    @Column(name = "fddbr", length = 100)
+    private String fddbr;
+
+    @PropertyDef(label = "娉曚汉韬唤璇佸彿")
+    @Column(name = "frsfzh", length = 18)
+    private String frsfzh;
+
+    @PropertyDef(label = "娉曚汉鑱旂郴鏂瑰紡")
+    @Column(name = "frlxfs", length = 50)
+    private String frlxfs;
+
+    @PropertyDef(label = "浼佷笟鑱旂郴浜�")
+    @Column(name = "qylxr", length = 100)
+    private String qylxr;
+
+    @PropertyDef(label = "鍔炲叕鐢佃瘽")
+    @Column(name = "bgdh", length = 50)
+    private String bgdh;
+
+    @PropertyDef(label = "娉ㄥ唽鍦板潃")
+    @Column(name = "zcdz", length = 512)
+    private String zcdz;
+
+    @PropertyDef(label = "鐢靛瓙閭")
+    @Column(name = "dzyx", length = 50)
+    private String dzyx;
+
+    @PropertyDef(label = "浼佷笟瀹樻柟缃戠珯鍦板潃")
+    @Column(name = "qygfwzdz", length = 128)
+    private String qygfwzdz;
+
+    @PropertyDef(label = "浼犵湡鍙风爜")
+    @Column(name = "czhm", length = 32)
+    private String czhm;
+
+    @PropertyDef(label = "閭斂缂栫爜")
+    @Column(name = "yzbm", length = 6)
+    private String yzbm;
+
+    @PropertyDef(label = "琛屾斂鍖哄垝浠g爜")
+    @Column(name = "xzqhdm", length = 6)
+    private String xzqhdm;
+
+    @PropertyDef(label = "琛屾斂鍖哄垝鍚嶇О")
+    @Column(name = "xzqhmc", length = 6)
+    private String xzqhmc;
+
+
+    @PropertyDef(label = "涓婄骇鍗曚綅鍚嶇О")
+    @Column(name = "sjdwmc", length = 256)
+    private String sjdwmc;
+
+    @PropertyDef(label = "涓婄骇鍗曚綅浠g爜")
+    @Column(name = "sjdwdm", length = 18)
+    private String sjdwdm;
+
+    @PropertyDef(label = "涓婄骇鍗曚綅缁熶竴缂栫爜")
+    @Column(name = "sjdwtybm", length = 20)
+    private String sjdwtybm;
+
+    @PropertyDef(label = "搴撳尯鏁�")
+    @Column(name = "kqs")
+    private Integer kqs;
+
+    @PropertyDef(label = "浠撴埧鏁�")
+    @Column(name = "cfs")
+    private Integer cfs;
+
+    @PropertyDef(label = "娌圭綈鏁�")
+    @Column(name = "ygs")
+    private Integer ygs;
+
+    @PropertyDef(label = "缁忓害")
+    @Column(name = "jd", precision = 20, scale = 6)
+    private Double jd;
+
+    @PropertyDef(label = "绾害")
+    @Column(name = "wd", precision = 20, scale = 6)
+    private Double wd;
+
+    @PropertyDef(label = "鍗曚綅鐘舵��")
+    @Column(name = "dwzt",length = 1)
+    private String dwzt;
+
+    @PropertyDef(label = "鏇存柊鏃堕棿")
+    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @Column(name = "zhgxsj")
+    private Date zhgxsj;
+
+}
\ No newline at end of file
diff --git a/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/domain/Depot.java b/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/domain/Depot.java
new file mode 100644
index 0000000..01d7ce0
--- /dev/null
+++ b/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/domain/Depot.java
@@ -0,0 +1,219 @@
+package com.fzzy.igds.dzhwk.domain;
+
+import com.bstek.dorado.annotation.PropertyDef;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fzzy.igds.dzhwk.constant.*;
+import com.ruoyi.common.annotation.Excel;
+import lombok.Data;
+import javax.persistence.*;
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * @Description 璐т綅瀹炰綋
+ * @Author CZT
+ * @Date 2025/05/28 18:45
+ */
+@Data
+@Entity
+@Table(name = "D_DEPOT")
+public class Depot implements Serializable {
+
+    @Id
+    @Column(name = "ID_", length = 50)
+    @PropertyDef(label = "璐т綅缂栧彿")
+    private String id;
+
+    @Column(name = "COMPANY_ID_", length = 10)
+    @PropertyDef(label = "缁勭粐缂栫爜")
+    private String companyId;
+
+    @Column(name = "DEPT_ID_", length = 40)
+    @PropertyDef(label = "鎵�灞炲垎搴�")
+    private String deptId;
+
+    @Excel(name = "璐т綅鍚嶇О", sort = 1)
+    @Column(name = "NAME_", length = 50)
+    @PropertyDef(label = "璐т綅鍚嶇О")
+    private String name;
+
+    @Column(name = "BUILDING_ID_", length = 40)
+    @PropertyDef(label = "鎵�灞炰粨鎴�")
+    private String buildingId;
+
+    @Column(name = "GRANARY_ID_", length = 40)
+    @PropertyDef(label = "鎵�灞炲粧闂�")
+    private String granaryId;
+
+    @Excel(name = "浠撳簱绫诲瀷", sort = 11, readConverterExp = "01=骞虫埧浠�,02=绔嬬瓛浠�,03=娴呭渾浠�,04=鍌ㄦ补缃�,05=妤兼埧浠�,99=鍏朵粬")
+    @Column(name = "DEPOT_TYPE_", length = 10)
+    @PropertyDef(label = "浠撳簱绫诲瀷", description = "鏍规嵁鍥芥爣閰嶇疆绫诲瀷锛屽钩鎴夸粨銆佺珛绛掍粨銆佹祬鍦嗕粨銆佸偍娌圭綈")
+    private String depotType;
+
+    @Excel(name = "璐т綅鐘舵��", sort = 2, readConverterExp = "1=绌轰粨,2=鍏ュ簱涓�,3=灏佷粨,31=灏佷粨-姘旇皟涓�,32=灏佷粨-鐔忚捀涓�,33=灏佷粨-閫氶涓�")
+    @Column(name = "DEPOT_STATUS_", length = 10)
+    @PropertyDef(label = "浠撳簱鐘舵��", description = "涓庡簱瀛樿〃鍏宠仈锛岄�氳繃搴撳瓨鍙樻洿")
+    private String depotStatus;
+
+    @Column(name = "STORE_TYPE_", length = 6)
+    @PropertyDef(label = "鍌ㄧ伯鏂瑰紡", description = "涓庡簱瀛樿〃鍏宠仈")
+    private String storeType;
+
+    @Column(name = "STORAGE_MAX_")
+    @PropertyDef(label = "璁捐鍌ㄩ噺", description = "鍗曚綅锛欿G")
+    private Double storageMax;
+
+    @Excel(name = "瀹為檯鍌ㄩ噺(KG)", sort = 6)
+    @Column(name = "STORAGE_REAL_")
+    @PropertyDef(label = "瀹為檯鍌ㄩ噺", description = "鍗曚綅锛欿G锛岄�氳繃搴撳瓨鍙樻洿")
+    private Double storageReal;
+
+    @Excel(name = "绮鎬ц川", sort = 4, dictType = "FOOD_TYPE_")
+    @Column(name = "FOOD_TYPE_", length = 10)
+    @PropertyDef(label = "绮鎬ц川", description = "涓庡簱瀛樿〃鍏宠仈锛岄�氳繃搴撳瓨鍙樻洿")
+    private String foodType;
+
+    @Excel(name = "绮鍝佺", sort = 3, dictType = "FOOD_VARIETY_")
+    @Column(name = "FOOD_VARIETY_", length = 10)
+    @PropertyDef(label = "绮鍝佺", description = "涓庡簱瀛樿〃鍏宠仈锛岄�氳繃搴撳瓨鍙樻洿")
+    private String foodVariety;
+
+    @Excel(name = "绮绛夌骇", sort = 5, dictType = "FOOD_LEVEL_")
+    @Column(name = "FOOD_LEVEL_", length = 10)
+    @PropertyDef(label = "绮绛夌骇", description = "涓庡簱瀛樿〃鍏宠仈锛岄�氳繃搴撳瓨鍙樻洿")
+    private String foodLevel;
+
+    @Column(name = "FOOD_LOCATION_ID_", length = 50)
+    @PropertyDef(label = "绮浜у湴")
+    private String foodLocationId;
+
+    @Excel(name = "绮浜у湴", sort = 8)
+    @Column(name = "FOOD_LOCATION_", length = 50)
+    @PropertyDef(label = "绮浜у湴", description = "涓庡簱瀛樿〃鍏宠仈锛岄�氳繃搴撳瓨鍙樻洿")
+    private String foodLocation;
+
+    @Excel(name = "绮骞翠唤", sort = 7)
+    @Column(name = "FOOD_YEAR_", length = 10)
+    @PropertyDef(label = "绮骞翠唤", description = "涓庡簱瀛樿〃鍏宠仈锛岄�氳繃搴撳瓨鍙樻洿")
+    private String foodYear;
+
+    @Column(name = "PER_WET_")
+    @PropertyDef(label = "姘村垎", description = "鐧惧垎姣旓紝榛樿涓虹┖锛屾潵婧愯川妫�淇℃伅")
+    private Double perWet;
+
+    @Column(name = "PER_IMPURITY_")
+    @PropertyDef(label = "鏉傝川", description = "鐧惧垎姣旓紝榛樿涓虹┖锛屾潵婧愯川妫�淇℃伅")
+    private Double perImpurity;
+
+    @Column(name = "BULK_WEIGHT_")
+    @PropertyDef(label = "瀹归噸 g/L", description = "瀹归噸 g/L")
+    private Double bulkWeight;
+
+    @Column(name = "STORE_KEEPER_", length = 30)
+    @PropertyDef(label = "淇濈鍛樿处鍙�")
+    private String storeKeeper;
+
+    @Excel(name = "淇濈鍛�", sort = 10)
+    @Column(name = "STORE_KEEPER_NAME_", length = 50)
+    @PropertyDef(label = "淇濈鍛�", description = "涓枃鍚嶇О")
+    private String storeKeeperName;
+
+    @Excel(name = "鍏ュ簱鏃ユ湡", sort = 9, dateFormat = "yyyy-MM-dd")
+    @Column(name = "STORE_DATE_")
+    @PropertyDef(label = "鍏ュ簱鏃堕棿", description = "榛樿绌猴紝閫氳繃搴撳瓨鍙樻洿")
+    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    private Date storeDate;
+
+    @Column(name = "CHECK_DATE_")
+    @PropertyDef(label = "鏈�鍚庤川妫�鏃堕棿", description = "榛樿绌猴紝鏉ユ簮璐ㄦ淇℃伅")
+    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    private Date checkDate;
+
+    @Column(name = "REMARK_", length = 200)
+    @PropertyDef(label = "澶囨敞", description = "澶囨敞淇℃伅")
+    private String remark;
+
+    @Column(name = "UPDATE_TIME_")
+    @PropertyDef(label = "鏁版嵁鏇存柊鏃堕棿")
+    private Date updateTime;
+
+    @Column(name = "BH_ID_", length = 50)
+    @PropertyDef(label = "閭︽捣绮儏鍒嗘満浠撳簱缂栫爜")
+    private String bhId;
+
+    @Column(name = "ORDER_NUM_")
+    @PropertyDef(label = "鏄剧ず椤哄簭")
+    private Integer orderNum = 1;
+
+    // ------------鍏朵粬灞炴�т俊鎭�------------//
+    @Transient
+    @PropertyDef(label = "绮鍝佺")
+    private String foodVarietyName;
+
+    @Transient
+    @PropertyDef(label = "绮鎬ц川")
+    private String foodTypeName;
+
+    @Transient
+    @PropertyDef(label = "浠撳簱绫诲瀷")
+    private String depotTypeName;
+
+    @Transient
+    @PropertyDef(label = "浠撳簱绫诲瀷")
+    private String depotStatusName;
+
+    @Transient
+    @PropertyDef(label = "绮绛夌骇")
+    private String foodLevelName;
+
+    @Transient
+    @PropertyDef(label = "X鍧愭爣", description = "涓夌淮妯″瀷涓潗鏍囷紝椤甸潰鏃犻渶缁存姢")
+    private Double posX;
+
+    @Transient
+    @PropertyDef(label = "Y鍧愭爣", description = "涓夌淮妯″瀷涓潗鏍囷紝椤甸潰鏃犻渶缁存姢")
+    private Double posY;
+
+    @Transient
+    @PropertyDef(label = "淇濈鍛樼瓑绾�")
+    private String storeKeeperLevel = "楂樼骇淇濈鍛�";
+
+    @Transient
+    @PropertyDef(label = "淇濈鍛樼瓑绾�")
+    private String storeKeeperPhone = "####";
+
+    public String getFoodLevelName() {
+        if (null != this.foodLevel) {
+            return FoodLevel.getMsg(this.foodLevel);
+        }
+        return null;
+    }
+
+    public String getFoodVarietyName() {
+        if (null != this.foodVariety) {
+            return FoodVariety.getMsg(this.foodVariety);
+        }
+        return null;
+    }
+
+    public String getFoodTypeName() {
+        if (null != this.foodType) {
+            return FoodType.getMsg(this.foodType);
+        }
+        return null;
+    }
+
+    public String getDepotTypeName() {
+        if (null != this.depotType) {
+            return DepotType.getMsg(this.depotType);
+        }
+        return null;
+    }
+
+    public String getDepotStatusName() {
+        if (null != this.depotStatus) {
+            return DepotStatus.getMsg(this.depotStatus);
+        }
+        return null;
+    }
+}
diff --git a/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/domain/DepotStatusConfirm.java b/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/domain/DepotStatusConfirm.java
new file mode 100644
index 0000000..ee8ee58
--- /dev/null
+++ b/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/domain/DepotStatusConfirm.java
@@ -0,0 +1,111 @@
+package com.fzzy.igds.dzhwk.domain;
+
+import com.bstek.dorado.annotation.PropertyDef;
+import lombok.Data;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.Table;
+import java.util.Date;
+
+/**
+ * @Desc: 浠撴埧鐘舵�佺‘璁よ〃
+ * @author:
+ * @update-time:
+ */
+@Data
+@Entity
+@Table(name = "D_DEPOT_STATUS_CONFIRM")
+public class DepotStatusConfirm {
+
+    public static String SORT_PROP = "fcqrdh";
+
+    /**
+     * 21yyyyMMdd+鍥涗綅椤哄簭鍙�
+     * 21202405041234
+     */
+    @Id
+    @Column(name = "fcqrdh", length = 14)
+    @PropertyDef(label = "灏佷粨纭鍗曞彿", description = "鏍规嵁涓�瀹氱殑瑙勫垯鐢熸垚")
+    private String fcqrdh;
+
+    @Column(name = "COMPANY_ID_", length = 10)
+    @PropertyDef(label = "缁勭粐缂栫爜")
+    private String companyId;
+
+    @Column(name = "DEPT_ID_", length = 50)
+    @PropertyDef(label = "搴撳尯缂栫爜")
+    private String deptId;
+
+    @Column(name = "DEPOT_ID_", length = 28)
+    @PropertyDef(label = "璐т綅缂栫爜")
+    private String depotId;
+
+    /*** ------------------------纭鍐呭-------------------------------------**/
+    @Column(name = "fcrq")
+    @PropertyDef(label = "灏佷粨鏃ユ湡", description = "yyyy-MM-dd")
+    private Date fcrq;
+
+    @Column(name = "FOOD_VARIETY_", length = 20)
+    @PropertyDef(label = "绮鍝佺")
+    private String foodVariety;
+
+    @Column(name = "FOOD_TYPE_", length = 20)
+    @PropertyDef(label = "绮鎬ц川")
+    private String foodType;
+
+    @Column(name = "FOOD_LEVEL_", length = 10)
+    @PropertyDef(label = "绮绛夌骇")
+    private String foodLevel;
+
+    @Column(name = "FOOD_LOCATION_ID_", length = 20)
+    @PropertyDef(label = "浜у湴鍚嶇О浠g爜")
+    private String foodLocationId;
+
+    @Column(name = "FOOD_LOCATION_", length = 40)
+    @PropertyDef(label = "浜у湴鍚嶇О")
+    private String foodLocation;
+
+    @Column(name = "FOOD_YEAR_", length = 10)
+    @PropertyDef(label = "鏀惰揣骞村害")
+    private String foodYear;
+
+    @Column(name = "COUNTRY_", length = 10)
+    @PropertyDef(label = "鍥藉埆")
+    private String country;
+
+    @Column(name = "STORE_KEEPER_NAME_", length = 64)
+    @PropertyDef(label = "淇濈鍛�", description = "涓枃鍚嶇О")
+    private String storeKeeperName;
+
+    @Column(name = "fcsl")
+    @PropertyDef(label = "灏佷粨鏁伴噺", description = "鎵�鏈夊叆搴撲俊鎭腑鐨勫噣閲嶄箣鍜岋紝鍗曚綅KG")
+    private Double fcsl = 0.0;
+
+
+    /*** ------------------------鍏叡瀛楁-------------------------------------**/
+
+    @Column(name = "APPLY_USER_", length = 50)
+    @PropertyDef(label = "鐢宠浜�")
+    private String applyUser;
+
+    @Column(name = "DEPT_AUDIT_USER_", length = 50)
+    @PropertyDef(label = "閮ㄩ棬瀹℃牳浜�")
+    private String deptAuditUser;
+
+    @Column(name = "LEADER_AUDIT_USER_", length = 50)
+    @PropertyDef(label = "棰嗗瀹℃牳浜�")
+    private String leaderAuditUser;
+
+    // 澶囨敞
+    @Column(name = "REMARKS_", length = 200)
+    @PropertyDef(label = "澶囨敞淇℃伅")
+    private String remarks;
+
+
+    @Column(name = "UPDATE_TIME_")
+    @PropertyDef(label = "鏇存柊鏃堕棿")
+    private Date updateTime;
+
+}
diff --git a/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/domain/DepotStore.java b/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/domain/DepotStore.java
new file mode 100644
index 0000000..9223c3d
--- /dev/null
+++ b/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/domain/DepotStore.java
@@ -0,0 +1,170 @@
+package com.fzzy.igds.dzhwk.domain;
+
+import com.bstek.dorado.annotation.PropertyDef;
+import lombok.Data;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.Table;
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * @Desc: 绮搴撳瓨绠$悊锛屾牴鎹浗鏍囨爣缁撴灉瑕佹眰鍒涘缓
+ * @author: Andy
+ * @update-time: 2022/11/17
+ */
+@Data
+@Entity
+@Table(name = "D_DEPOT_STORE")
+public class DepotStore implements Serializable {
+
+    public static String SORT_PROP = "id";
+
+    @Id
+    @Column(name = "ID_", length = 40)
+    private String id;
+
+    @Column(name = "COMPANY_ID_", length = 10)
+    @PropertyDef(label = "缁勭粐缂栫爜")
+    private String companyId;
+
+    @Column(name = "DEPT_ID_", length = 40)
+    @PropertyDef(label = "鎵�灞炲簱鍖�")
+    private String deptId;
+
+    @Column(name = "DEPOT_ID_", length = 50)
+    @PropertyDef(label = "鎵�灞炰粨搴�")
+    private String depotId;
+
+    @Column(name = "COUNTRY_", length = 10)
+    @PropertyDef(label = "鍥藉埆")
+    private String country;
+
+    @Column(name = "STORE_TYPE_", length = 6)
+    @PropertyDef(label = "鍌ㄧ伯鏂瑰紡", description = "1:鏁h鍌ㄧ伯 2:鍖呰鍌ㄧ伯 3:鍥村寘鏁e瓨 9:鍏朵粬")
+    private String storeType;
+
+    @Column(name = "MANAGE_TYPE_", length = 6)
+    @PropertyDef(label = "绠$悊鏂瑰紡", description = "01 鐩村偍02 浠e偍03 绉熶粨04 濮旀墭")
+    private String manageType;
+
+    @Column(name = "FOOD_TYPE_", length = 10)
+    @PropertyDef(label = "绮鎬ц川")
+    private String foodType;
+
+    @Column(name = "FOOD_VARIETY_", length = 10)
+    @PropertyDef(label = "绮鍝佺")
+    private String foodVariety;
+
+    @Column(name = "FOOD_LEVEL_", length = 10)
+    @PropertyDef(label = "绮绛夌骇")
+    private String foodLevel;
+
+    @Column(name = "FOOD_LOCATION_ID_", length = 50)
+    @PropertyDef(label = "绮浜у湴")
+    private String foodLocationId;
+
+    @Column(name = "FOOD_LOCATION_", length = 50)
+    @PropertyDef(label = "绮浜у湴")
+    private String foodLocation;
+
+    @Column(name = "FOOD_YEAR_", length = 10)
+    @PropertyDef(label = "鏀惰揣骞村害")
+    private String foodYear;
+
+    @Column(name = "DEPOT_STATUS_", length = 10)
+    @PropertyDef(label = "浠撳簱鐘舵��", description = "1=绌轰粨銆�2=鍏ュ簱涓��3=婊′粨銆�4=鍑哄簱涓��9=鍏朵粬")
+    private String depotStatus;
+
+    @Column(name = "STORE_DATE_")
+    @PropertyDef(label = "鍏ュ簱鏃堕棿", description = "鍏ュ簱鏃堕棿锛岀涓�杞︾伯椋熷叆浠撴椂闂�,鏍煎紡锛歽yyy-MM-dd HH:mm:ss")
+    private Date storeDate;
+
+    @Column(name = "FULL_DATE_")
+    @PropertyDef(label = "灏佷粨鏃ユ湡", description = "褰撹揣浣嶏紙娌圭綈锛夌姸鎬佷负灏佷粨鏃讹紝姝ら」涓哄繀濉」")
+    private Date fullDate;
+
+    @Column(name = "OUT_DATE_")
+    @PropertyDef(label = "鍑轰粨鏃堕棿", description = "鍑哄簱鏃堕棿锛屾渶鍚庝竴杞︾伯椋熷嚭浠撳畬鎴愭椂闂�,鏍煎紡锛歽yyy-MM-dd HH:mm:ss")
+    private Date outDate;
+
+    @Column(name = "STORAGE_REAL_")
+    @PropertyDef(label = "瀹為檯鍌ㄩ噺", description = "鍗曚綅锛欿G")
+    private Double storageReal;
+
+    @Column(name = "STORE_SETTLE__")
+    @PropertyDef(label = "璁′环鏁伴噺", description = "鍗曚綅锛欿G")
+    private Double storageSettle;
+
+    @Column(name = "GRAIN_HEIGHT_")
+    @PropertyDef(label = "瑁呯伯绾块珮", description = "鍗曚綅锛氱背")
+    private Double grainHeight;
+
+    @Column(name = "GRAIN_VOLUME_")
+    @PropertyDef(label = "瑁呯伯浣撶Н", description = "鍗曚綅锛氱珛鏂圭背")
+    private Double grainVolume;
+
+    @Column(name = "REMARK_", length = 250)
+    @PropertyDef(label = "澶囨敞", description = "澶囨敞淇℃伅")
+    private String remark;
+
+    @Column(name = "UPDATE_USER_", length = 50)
+    @PropertyDef(label = "淇敼浜�")
+    private String updateUser;
+
+    @PropertyDef(label = "绮潈褰掑睘鍗曚綅浠g爜")
+    @Column(name = "lqgsdwdm", length = 18)
+    private String lqgsdwdm;
+
+
+    @Column(name = "UPDATE_DATE_")
+    @PropertyDef(label = "淇敼鏃堕棿")
+    private Date updateDate;
+
+    @Column(name = "CREATE_DATE_")
+    private Date createDate;
+
+    public DepotStore() {
+    }
+
+    public DepotStore(String id, String companyId, String deptId, String depotId, String storeType, String foodType, String foodVariety, String foodLevel, String foodLocation, String depotStatus, String foodYear, Date storeDate, Double storageReal, Date fullDate, Date outDate, Double grainHeight, Double grainVolume, String remark, String updateUser, Date updateDate, Date createDate) {
+        this.id = id;
+        this.companyId = companyId;
+        this.deptId = deptId;
+        this.depotId = depotId;
+        this.storeType = storeType;
+        this.foodType = foodType;
+        this.foodVariety = foodVariety;
+        this.foodLevel = foodLevel;
+        this.foodLocation = foodLocation;
+        this.depotStatus = depotStatus;
+        this.foodYear = foodYear;
+        this.storeDate = storeDate;
+        this.storageReal = storageReal;
+        this.fullDate = fullDate;
+        this.outDate = outDate;
+        this.grainHeight = grainHeight;
+        this.grainVolume = grainVolume;
+        this.remark = remark;
+        this.updateUser = updateUser;
+        this.updateDate = updateDate;
+    }
+
+    public DepotStore(Depot depot, String depotStatus) {
+        this.companyId = depot.getCompanyId();
+        this.deptId = depot.getDeptId();
+        this.depotId = depot.getId();
+        this.storeType = depot.getStoreType();
+        this.foodType = depot.getFoodType();
+        this.foodVariety = depot.getFoodVariety();
+        this.foodLevel = depot.getFoodLevel();
+        this.foodLocation = depot.getFoodLocation();
+        this.depotStatus = depotStatus;
+        this.foodYear = depot.getFoodYear();
+        this.storageReal = depot.getStorageReal();
+        this.storeDate = new Date();
+        this.updateDate = new Date();
+    }
+}
diff --git a/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/domain/Dept.java b/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/domain/Dept.java
new file mode 100644
index 0000000..c3686cd
--- /dev/null
+++ b/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/domain/Dept.java
@@ -0,0 +1,107 @@
+package com.fzzy.igds.dzhwk.domain;
+
+import com.bstek.dorado.annotation.PropertyDef;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.Table;
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * @Description 搴撳尯瀹炰綋
+ * @Author CZT
+ * @Date 2025/05/28 19:02
+ */
+@Data
+@Entity
+@Table(name = "D_DEPT")
+public class Dept implements Serializable {
+
+    @Id
+    @Column(name = "ID_", length = 40)
+    @PropertyDef(label = "閮ㄩ棬id",description = "绯荤粺鍐呬娇鐢�,缁戝畾閮ㄩ棬琛�")
+    private String id;
+
+    @Column(name = "COMPANY_ID_", length = 10)
+    @PropertyDef(label = "缁勭粐缂栫爜")
+    private String companyId;
+
+    /*----------鍥芥爣瀛楁----------*/
+    @PropertyDef(label = "搴撳尯浠g爜")
+    @Column(name = "kqdm", length = 21)
+    private String kqdm;
+
+    @PropertyDef(label = "缁熶竴搴撳尯缂栫爜")
+    @Column(name = "tykqbm", length = 22)
+    private String tykqbm;
+
+    @PropertyDef(label = "鍗曚綅浠g爜")
+    @Column(name = "dwdm", length = 18)
+    private String dwdm;
+
+    @PropertyDef(label = "缁熶竴鍗曚綅缂栫爜")
+    @Column(name = "tydwbm", length = 20)
+    private String tydwbm;
+
+    @PropertyDef(label = "搴撳尯鍚嶇О")
+    @Column(name = "kqmc", length = 256)
+    private String kqmc;
+
+    @PropertyDef(label = "搴撳尯鍦板潃")
+    @Column(name = "kqdz", length = 512)
+    private String kqdz;
+
+    @PropertyDef(label = "琛屾斂鍖哄垝浠g爜")
+    @Column(name = "xzqhdm", length = 6)
+    private String xzqhdm;
+
+    @PropertyDef(label = "琛屾斂鍖哄垝鍚嶇О")
+    @Column(name = "xzqhmc", length = 6)
+    private String xzqhmc;
+
+    @PropertyDef(label = "搴撳尯浜ф潈", description = "1锛� 鑷湁 2锛氱璧� 3锛氬叡鏈� 4锛氭贩鍚� 9锛氬叾浠�")
+    @Column(name = "kqcq", length = 1)
+    private String kqcq;
+
+    @PropertyDef(label = "鏈夋晥浠撳")
+    @Column(name = "yxcr", precision = 20, scale = 6)
+    private Double yxcr;
+
+    @PropertyDef(label = "鏈夋晥缃愬")
+    @Column(name = "yxgr", precision = 20, scale = 6)
+    private Double yxgr;
+
+    @PropertyDef(label = "鍗犲湴闈㈢Н")
+    @Column(name = "zdmj", precision = 20, scale = 6)
+    private Double zdmj;
+
+    @PropertyDef(label = "浠撴埧鏁�")
+    @Column(name = "cfs")
+    private Integer cfs;
+
+    @PropertyDef(label = "娌圭綈鏁�")
+    @Column(name = "ygs")
+    private Integer ygs;
+
+    @PropertyDef(label = "搴撳尯缁忓害")
+    @Column(name = "jd", precision = 20, scale = 6)
+    private Double jd;
+
+    @PropertyDef(label = "搴撳尯绾害")
+    @Column(name = "wd", precision = 20, scale = 6)
+    private Double wd;
+
+    @PropertyDef(label = "搴撳尯鐘舵��", description = "1:姝e父锛堥粯璁わ級 2:閫�鍑哄偍澶囩伯鎵垮偍")
+    @Column(name = "kqzt", length = 1)
+    private String kqzt;
+
+    @PropertyDef(label = "鏈�鍚庢洿鏂版椂闂�")
+    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @Column(name = "zhgxsj")
+    private Date zhgxsj;
+
+}
\ No newline at end of file
diff --git a/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/domain/DicArea.java b/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/domain/DicArea.java
new file mode 100644
index 0000000..0c800d7
--- /dev/null
+++ b/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/domain/DicArea.java
@@ -0,0 +1,53 @@
+package com.fzzy.igds.dzhwk.domain;
+
+import com.bstek.dorado.annotation.PropertyDef;
+import com.fzzy.igds.dzhwk.constant.Constant;
+import lombok.Data;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.Table;
+import java.io.Serializable;
+
+/**
+ * 鍦板尯鍖哄煙鐮�
+ *
+ * @author
+ */
+@Data
+@Entity
+@Table(name = "D_DIC_AREA")
+public class DicArea implements Serializable {
+
+    public static String SORT_PROP = "code";
+
+    @Id
+    @Column(name = "CODE_", length = 20)
+    @PropertyDef(label = "缂栧彿")
+    private String code;
+
+    @Column(name = "NAME_", length = 50)
+    @PropertyDef(label = "鍚嶇О")
+    private String name;
+
+    @Column(name = "PARENT_CODE_", length = 20)
+    @PropertyDef(label = "鐖剁紪鍙�", description = "鐪佺骇榛樿涓�0")
+    private String parentCode;
+
+    @Column(name = "TYPE_", length = 50)
+    @PropertyDef(label = "绫诲瀷", description = "1-鐪侊紱2-甯傦紱3-鍖哄幙")
+    private String type;
+
+    @PropertyDef(label = "绠�鎷�")
+    @Column(name = "SIMPLE_", length = 20)
+    private String simple;
+
+    @PropertyDef(label = "鏄惁绂佺敤")
+    @Column(name = "DISABLED_TAG_", length = 1)
+    private String disabledTag = Constant.YN_N;
+
+    @Column(name = "REMARK_", length = 200)
+    @PropertyDef(label = "澶囨敞淇℃伅")
+    private String remark;
+}
diff --git a/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/domain/Grain.java b/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/domain/Grain.java
new file mode 100644
index 0000000..c5906be
--- /dev/null
+++ b/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/domain/Grain.java
@@ -0,0 +1,114 @@
+package com.fzzy.igds.dzhwk.domain;
+
+import com.bstek.dorado.annotation.PropertyDef;
+import lombok.Data;
+
+import javax.persistence.*;
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 绮儏鏁版嵁-涓昏〃
+ * <p>
+ * 鏇存柊璁板綍锛�
+ * 1锛屽垹闄よ鏁版嵁鐨勮〃璁板綍锛岃皟鏁翠负鏁版嵁鐩存帴鏂囨湰淇濆瓨涓昏〃涓�
+ * 2锛屼繚鐣欑偣浣嶅潗鏍囦俊鎭紝渚夸簬浠ュ悗鐐逛綅璧板娍鍥炬煡鐪�
+ *
+ * @author Andy
+ */
+@Entity
+@Table(name = "D_GRAIN")
+@Data
+@IdClass(GrainKey.class)
+public class Grain implements Serializable {
+
+    public static String SORT_PROP = "batchId";
+
+    @Id
+    @Column(name = "BATCH_ID_", length = 30)
+    @PropertyDef(label = "鎵规缂栧彿")
+    private String batchId;
+
+    @Id
+    @Column(name = "COMPANY_ID_", length = 10)
+    @PropertyDef(label = "缁勭粐缂栫爜", description = "")
+    private String companyId;
+
+    @Id
+    @Column(name = "DEPOT_ID_", length = 50)
+    @PropertyDef(label = "鎵�灞炰粨搴�", description = "浠撳簱缂栧彿")
+    private String depotId;
+
+
+    @Column(name = "TEMP_MIN_")
+    @PropertyDef(label = "鏈�浣庢俯绮俯", description = "鍗曚綅鈩冿紝绮儏鏈�浣庢俯")
+    private Double tempMin = 0.0;
+
+    @Column(name = "TEMP_MAX_")
+    @PropertyDef(label = "鏈�楂樼伯娓�", description = "鍗曚綅鈩冿紝绮儏鏈�楂樻俯")
+    private Double tempMax = 0.0;
+
+    @Column(name = "TEMP_AVE_")
+    @PropertyDef(label = "骞冲潎绮俯", description = "鍗曚綅鈩冿紝绮儏骞冲潎娓╁害")
+    private Double tempAve = 0.0;
+
+    @Column(name = "HUMIDITY_IN_")
+    @PropertyDef(label = "浠撳唴婀垮害")
+    private Double humidityIn;
+
+    @Column(name = "TEMP_IN_")
+    @PropertyDef(label = "浠撳唴娓╁害")
+    private Double tempIn;
+
+    @Column(name = "HUMIDITY_OUT_")
+    @PropertyDef(label = "浠撳婀垮害")
+    private Double humidityOut;
+
+    @Column(name = "TEMP_OUT_")
+    @PropertyDef(label = "浠撳娓╁害")
+    private Double tempOut;
+
+    @Column(name = "CABLE_", length = 20)
+    @PropertyDef(label = "灞傝鍒�", description = "鐢ㄩ�楀彿闅斿紑鐨勯厤缃俊鎭�,灞�-琛�-鍒�")
+    private String cable;
+
+    @PropertyDef(label = "绛掍粨灞傞厤缃�", description = "鐢�-闅斿紑鐨勯厤缃俊鎭�")
+    @Column(name = "CABLE_CIR_", length = 20)
+    private String cableCir;
+
+    @PropertyDef(label = "娌归潰楂樺害", description = "鐢�-闅斿紑鐨勪袱涓�硷紝娌归潰楂樺害-寤虹瓚楂樺害")
+    @Column(name = "OIL_HEIGHT_", length = 20)
+    private String oilHeight;
+
+    @Column(name = "WEATHER_", length = 20)
+    @PropertyDef(label = "澶╂皵", description = "鐩存帴濉啓涓枃淇℃伅锛屾櫞锛岄槾闆ㄥぉ")
+    private String weather = "";
+
+    @Column(name = "RECEIVE_DATE_")
+    @PropertyDef(label = "鎺ユ敹鏃堕棿")
+    private Date receiveDate;
+
+    @Column(name = "CHECK_USER_", length = 30)
+    @PropertyDef(label = "妫�娴嬩汉")
+    private String checkUser;
+
+    @Column(name = "REMARK_", length = 500)
+    @PropertyDef(label = "澶囨敞", description = "澶囨敞")
+    private String remark;
+
+    @Column(name = "POINTS_", length = 2000)
+    @PropertyDef(label = "閲囬泦鐐逛俊鎭�", description = "鐢ㄩ�楀彿闅斿紑鐨勬俯搴︿俊鎭俊鎭�")
+    private String points;
+
+    @Column(name = "PUSH_TAG_", length = 2)
+    @PropertyDef(label = "鎺ㄩ�佹爣璁�", description = "鎺ㄩ�佸钩鍙版爣璁�")
+    private String pushTag = "N";
+
+    @Column(name = "BATCH_TAG_", length = 2)
+    @PropertyDef(label = "鐢熸垚鏂瑰紡", description = "01-璁惧閲囬泦锛�02-鎵嬪姩琛ュ綍")
+    private String batchTag = "01";
+
+    @Transient
+    @PropertyDef(label = "鎵�灞炲垎搴�", description = "鍒嗗簱缂栫爜锛岄潪鏁版嵁搴撳瓧娈�")
+    private String deptId;
+}
diff --git a/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/domain/GrainKey.java b/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/domain/GrainKey.java
new file mode 100644
index 0000000..31b5764
--- /dev/null
+++ b/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/domain/GrainKey.java
@@ -0,0 +1,20 @@
+package com.fzzy.igds.dzhwk.domain;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+
+import java.io.Serializable;
+
+@Data
+@AllArgsConstructor
+public class GrainKey implements Serializable {
+    private String batchId;
+
+    private String companyId;
+
+    private String depotId;
+
+    public GrainKey() {
+        super();
+    }
+}
\ No newline at end of file
diff --git a/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/domain/Granary.java b/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/domain/Granary.java
new file mode 100644
index 0000000..65e3e16
--- /dev/null
+++ b/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/domain/Granary.java
@@ -0,0 +1,80 @@
+package com.fzzy.igds.dzhwk.domain;
+
+import com.alibaba.fastjson.annotation.JSONField;
+import com.bstek.dorado.annotation.PropertyDef;
+import lombok.Data;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.Table;
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * @Description 寤掗棿瀹炰綋
+ * @Author CZT
+ * @Date 2025/05/28 18:48
+ */
+@Data
+@Entity
+@Table(name = "D_GRANARY")
+public class Granary implements Serializable {
+
+    public static String SORT_PROP = "ajdh";
+
+    @Id
+    @PropertyDef(label = "寤掗棿浠g爜")
+    @Column(name = "ajdh", length = 28)
+    private String ajdh;
+
+    @Column(name = "COMPANY_ID_", length = 10)
+    @PropertyDef(label = "缁勭粐缂栫爜")
+    private String companyId;
+
+    @Column(name = "DEPT_ID_", length = 40)
+    @PropertyDef(label = "鎵�灞炲垎搴�")
+    private String deptId;
+
+    @PropertyDef(label = "寤掗棿鍚嶇О")
+    @Column(name = "ajmc", length = 100)
+    private String ajmc;
+
+    @PropertyDef(label = "浠撴埧(鎴栨补缃�)缂栫爜")
+    @Column(name = "cfbh", length = 25)
+    private String cfbh;
+
+    @PropertyDef(label = "寤掗棿闀垮害")
+    @Column(name = "ajcd", precision = 8, scale = 4)
+    private double ajcd;
+
+    @PropertyDef(label = "寤掗棿瀹藉害")
+    @Column(name = "ajkd", precision = 8, scale = 4)
+    private double ajkd;
+
+    @PropertyDef(label = "寤掗棿楂樺害")
+    @Column(name = "ajgd", precision = 8, scale = 4)
+    private double ajgd;
+
+    @PropertyDef(label = "寤掗棿璁捐浠撳")
+    @Column(name = "ajsjcr", precision = 20, scale = 3)
+    private double ajsjcr;
+
+    @PropertyDef(label = "寤掗棿鑱旂郴鐢佃瘽")
+    @Column(name = "ajlxdh", length = 20)
+    private String ajlxdh;
+
+    @JSONField(format = "yyyy-MM-dd")
+    @PropertyDef(label = "寤掗棿鍚敤鏃ユ湡")
+    @Column(name = "ajqyrq")
+    private Date ajqyrq;
+
+    @PropertyDef(label = "寤掗棿鐘舵��")
+    @Column(name = "ajzt", length = 1)
+    private String ajzt;
+
+    @Column(name = "UPDATE_TIME_")
+    @PropertyDef(label = "鏁版嵁鏇存柊鏃堕棿")
+    private Date updateTime;
+
+}
diff --git a/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/domain/MQuality.java b/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/domain/MQuality.java
new file mode 100644
index 0000000..2ce7dc2
--- /dev/null
+++ b/igds-dzhwk-core/src/main/java/com/fzzy/igds/dzhwk/domain/MQuality.java
@@ -0,0 +1,173 @@
+package com.fzzy.igds.dzhwk.domain;
+
+import com.alibaba.fastjson.annotation.JSONField;
+import com.bstek.dorado.annotation.PropertyDef;
+import lombok.Data;
+
+import javax.persistence.*;
+import java.io.Serializable;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @Description 璐ㄦ瀹炰綋
+ * @Author CZT
+ * @Date 2025/05/28 19:06
+ */
+@Data
+@Entity
+@Table(name = "D_M_QUALITY")
+public class MQuality implements Serializable {
+
+    public static String SORT_PROP = "id";
+
+    @Id
+    @Column(name = "ID_", length = 40)
+    @PropertyDef(label = "涓婚敭ID", description = "yyyyMMdd + 4浣嶉『搴忓彿")
+    private String id;
+
+    @Column(name = "COMPANY_ID_", length = 10)
+    @PropertyDef(label = "缁勭粐缂栫爜")
+    private String companyId;
+
+    @Column(name = "DEPT_ID_", length = 40)
+    @PropertyDef(label = "搴撳尯缂栫爜")
+    private String deptId;
+
+    @Column(name = "DEPOT_ID_", length = 50)
+    @PropertyDef(label = "浠撳簱缂栫爜")
+    private String depotId;
+
+    @Column(name = "FOOD_VARIETY_", length = 10)
+    @PropertyDef(label = "绮鍝佺")
+    private String foodVariety;
+
+    @Column(name = "FOOD_LEVEL_", length = 10)
+    @PropertyDef(label = "绮绛夌骇")
+    private String foodLevel;
+
+    @PropertyDef(label = "鍏ュ簱鏃ユ湡")
+    @Column(name = "STORE_DATE_")
+    private Date storeDate;
+
+    @Column(name = "TYPE_", length = 10)
+    @PropertyDef(label = "妫�楠岀被鍒�", description = "01锛氬叆浠撻獙鏀� 02锛氬嚭浠撴楠� 03锛�3 鏈堟湯鏅04锛�9 鏈堟湯鏅 05锛氬叆浠撳垵妫� 06锛氭湀搴︽鏌� 07锛�3 鏈堟湯搴撳唴鏅煡 08锛�9 鏈堟湯搴撳唴鏅煡")
+    private String type;
+
+    @Column(name = "TIME_")
+    @PropertyDef(label = "妫�楠屾椂闂�")
+    private Date time;
+
+    @Column(name = "UNIT_", length = 50)
+    @PropertyDef(label = "妫�楠屽崟浣�")
+    private String unit;
+
+    @Column(name = "USER_", length = 50)
+    @PropertyDef(label = "妫�楠屼汉", description = "妫�楠屼汉鍛樺鍚嶏紝鑻ユ湁澶氫釜淇濈鍛�")
+    private String user;
+
+    @Column(name = "STANDARD_", length = 4)
+    @PropertyDef(label = "妫�楠屼緷鎹�", description = "1-鍥芥爣锛�0-鍏朵粬")
+    private String standard;
+
+
+    @PropertyDef(label = "鎸囨爣绫诲埆", description = "1: 璐ㄩ噺鎸囨爣妫�楠�2锛氬偍瀛樺搧璐ㄦ楠�3锛氶鍝佸畨鍏ㄦ楠� 濡傛灉鍚屾椂妫�楠屼簡澶氫釜锛岀敤#闅斿紑锛屼緥濡傦細1#2#3")
+    @Column(name = "zblb", length = 8)
+    private String zblb;
+
+    @Column(name = "RESULT_", length = 40)
+    @PropertyDef(label = "妫�楠岀粨璁�", description = "1銆佽川閲忔寚鏍囧~鍐�/杈炬爣/涓嶈揪鏍� 2銆佸偍瀛樺搧璐ㄦ寚鏍囧~鍐欌�滃疁瀛樷�濄�佽交搴︿笉瀹滃瓨鈥濄�佲�滈噸搴︿笉瀹滃瓨鈥�3銆侀鍝佸畨鍏ㄦ寚鏍囧~鍐欌�滃悎鏍尖�濄�佷笉鍚堟牸鈥� 澶氶」鎸囨爣鏃朵互#鍒嗛殧锛屼緥濡傦細杈炬爣|缁煎悎鍒ゅ畾#瀹滃瓨#鍚堟牸 ")
+    private String result;
+
+    @Column(name = "spaqzbsfhg", length = 40)
+    @PropertyDef(label = "椋熷搧瀹夊叏鎸囨爣鏄惁鍚堟牸", description = "0-涓嶅悎鏍硷紝1-鍚堟牸")
+    private String spaqzbsfhg;
+
+    @JSONField(format = "yyyy-MM-dd")
+    @PropertyDef(label = "绛惧彂鏃ユ湡")
+    @Column(name = "qfrq")
+    private Date qfrq;
+
+    @JSONField(format = "yyyy-MM-dd HH:mm:ss")
+    @PropertyDef(label = "鎶ュ憡鍑哄叿鏃堕棿")
+    @Column(name = "bgcjsj")
+    private Date bgcjsj;
+
+    @PropertyDef(label = "瀹℃牳浜哄鍚�")
+    @Column(name = "shrxm", length = 64)
+    private String shrxm;
+
+    @PropertyDef(label = "鎵︽牱鍗曠紪鍙�")
+    @Column(name = "qydbh", length = 64)
+    private String qydbh;
+
+    @Column(name = "CHECK_TIME_")
+    @PropertyDef(label = "鎵︽牱鏃堕棿", required = true)
+    private Date checkTime;
+
+    @Column(name = "CHECK_AREA_", length = 50)
+    @PropertyDef(label = "鎵︽牱鍖哄煙")
+    private String checkArea;
+
+    @Column(name = "CHECK_USER_", length = 50)
+    @PropertyDef(label = "鎵︽牱浜�", required = true)
+    private String checkUser;
+
+    @PropertyDef(label = "鐩戠潱浜哄鍚�")
+    @Column(name = "jdrxm", length = 64)
+    private String jdrxm;
+
+    @PropertyDef(label = "鏍峰搧缂栧彿")
+    @Column(name = "ypbh", length = 64)
+    private String ypbh;
+
+    @PropertyDef(label = "鏍峰搧鏁伴噺", required = true)
+    @Column(name = "ypsl", precision = 20, scale = 6)
+    private Double ypsl;
+
+    @PropertyDef(label = "浠h〃鏁伴噺")
+    @Column(name = "dbsl", precision = 20, scale = 6)
+    private Double dbsl;
+
+    @PropertyDef(label = "鏍峰搧绛夌骇")
+    @Column(name = "ypdj", length = 2)
+    private String ypdj;
+
+    @Column(name = "NORMAL_YEAR_", length = 10)
+    @PropertyDef(label = "鏄惁姝e父瀛樺偍骞撮檺")
+    private String normalYear;
+
+    @Column(name = "REMARK_", length = 200)
+    @PropertyDef(label = "澶囨敞", description = "澶囨敞淇℃伅")
+    private String remark;
+
+    @Column(name = "UPDATE_TIME_")
+    @PropertyDef(label = "鏁版嵁鏇存柊鏃堕棿")
+    private Date updateTime;
+
+    @Column(name = "REPORT_TYPE_", length = 10)
+    @PropertyDef(label = "鎶ュ憡绫诲瀷", description = "1-鍗曚綅妫�楠岋紝2-鏁翠綋妫�楠�(鍔犳潈骞冲潎)锛�3-鍏朵粬")
+    private String reportType;
+
+    /**
+     * 鍖栭獙椤圭洰鏄庣粏
+     */
+    @Transient
+    private List<CheckItem> checkItems;
+
+    /**
+     * --------闄勪欢--------
+     **/
+    @Column(name = "FILE_ID_", length = 30)
+    @PropertyDef(label = "闄勪欢id")
+    private String fileId;
+
+    @Column(name = "FILE_NAME_", length = 50)
+    @PropertyDef(label = "闄勪欢鍚嶇О")
+    private String fileName;
+
+    @Column(name = "FILE_TIME_")
+    @PropertyDef(label = "闄勪欢涓婁紶鏃堕棿")
+    private Date fileTime;
+
+}
diff --git a/igds-dzhwk-core/src/main/java/com/fzzy/igds/sys/BuildingService.java b/igds-dzhwk-core/src/main/java/com/fzzy/igds/sys/BuildingService.java
new file mode 100644
index 0000000..7ec2b76
--- /dev/null
+++ b/igds-dzhwk-core/src/main/java/com/fzzy/igds/sys/BuildingService.java
@@ -0,0 +1,137 @@
+package com.fzzy.igds.sys;
+
+import com.fzzy.igds.dzhwk.constant.RedisConst;
+import com.fzzy.igds.dzhwk.domain.Building;
+import com.fzzy.igds.sys.repository.BuildingRepository;
+import com.fzzy.igds.util.ContextUtil;
+import com.ruoyi.common.core.redis.RedisCache;
+import com.ruoyi.common.utils.StringUtils;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.Date;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * @Description 浠撴埧service灞�
+ * @Author CZT
+ * @Date 2024/11/20 19:03
+ */
+@Slf4j
+@Service("sys.buildingService")
+public class BuildingService {
+
+    @Resource
+    private BuildingRepository buildingRepository;
+    @Resource
+    private RedisCache redisCache;
+
+    /**
+     * jpa鏌ヨ浠撴埧淇℃伅
+     * @param companyId
+     * @param deptId
+     * @return
+     */
+    public List<Building> getBuilding(String companyId, String deptId) {
+
+        if (StringUtils.isEmpty(companyId)) {
+            companyId = ContextUtil.getCompanyId();
+        }
+        if (StringUtils.isEmpty(deptId)) {
+            deptId = ContextUtil.subDeptId(null);
+        }
+        return buildingRepository.getBuilding(companyId, deptId);
+    }
+
+    /**
+     * 淇濆瓨浠撴埧淇℃伅
+     * @param data
+     */
+    public void saveOrUpdate(Building data) {
+        if (StringUtils.isEmpty(data.getCompanyId())) {
+            data.setCompanyId(ContextUtil.getCompanyId());
+        }
+        if (StringUtils.isEmpty(data.getDeptId())) {
+            data.setDeptId(ContextUtil.subDeptId(null));
+        }
+        data.setUpdateTime(new Date());
+        buildingRepository.save(data);
+
+        refreshCacheBuilding(data.getCompanyId());
+    }
+
+    /**
+     * 鍒犻櫎浠撴埧淇℃伅
+     * @param data
+     * @return
+     */
+    public String delData(Building data) {
+        buildingRepository.delete(data);
+        return null;
+    }
+
+    /**
+     * 鑾峰彇缂撳瓨涓粨鎴夸俊鎭�
+     * @param companyId
+     * @param deptId
+     * @return
+     */
+    public List<Building> getCacheBuilding(String companyId, String deptId) {
+        if (StringUtils.isEmpty(companyId)) {
+            companyId = ContextUtil.getCompanyId();
+        }
+        if (StringUtils.isEmpty(deptId)) {
+            deptId = ContextUtil.subDeptId(null);
+        }
+        String key = RedisConst.buildKey(companyId, RedisConst.KEY_BUILDING_LIST);
+        List<Building> result = redisCache.getCacheObject(key);
+
+        if (null == result) {
+            refreshCacheBuilding(companyId);
+            return null;
+        }
+
+        String finalDeptId = deptId;
+        return result.stream().filter(item -> item.getDeptId().equals(finalDeptId))
+                .collect(Collectors.toList());
+    }
+
+    /**
+     * 鑾峰彇缂撳瓨涓粨鎴夸俊鎭�
+     * @param companyId
+     * @param deptId
+     * @param buildingId
+     * @return
+     */
+    public Building getCacheBuilding(String companyId, String deptId, String buildingId) {
+        if (StringUtils.isEmpty(companyId)) {
+            companyId = ContextUtil.getCompanyId();
+        }
+        if (StringUtils.isEmpty(deptId)) {
+            deptId = ContextUtil.subDeptId(null);
+        }
+        List<Building> result = getCacheBuilding(companyId, deptId);
+
+        if (null == result) {
+            refreshCacheBuilding(companyId);
+            return null;
+        }
+        for (Building building : result) {
+            if (buildingId.equals(building.getId())) {
+                return building;
+            }
+        }
+        return null;
+    }
+
+    public void refreshCacheBuilding(String companyId) {
+        if (StringUtils.isEmpty(companyId)) {
+            companyId = ContextUtil.getCompanyId();
+        }
+        List<Building> list = buildingRepository.getBuilding(companyId);
+
+        redisCache.setCacheObject(RedisConst.buildKey(companyId, RedisConst.KEY_BUILDING_LIST), list);
+    }
+}
\ No newline at end of file
diff --git a/igds-dzhwk-core/src/main/java/com/fzzy/igds/sys/CoreCompanyService.java b/igds-dzhwk-core/src/main/java/com/fzzy/igds/sys/CoreCompanyService.java
new file mode 100644
index 0000000..2e014e2
--- /dev/null
+++ b/igds-dzhwk-core/src/main/java/com/fzzy/igds/sys/CoreCompanyService.java
@@ -0,0 +1,92 @@
+package com.fzzy.igds.sys;
+
+import com.fzzy.igds.dzhwk.domain.Company;
+import com.fzzy.igds.sys.repository.CompanyRepository;
+import com.fzzy.igds.util.ContextUtil;
+import com.ruoyi.common.core.domain.entity.SysDept;
+import com.ruoyi.common.utils.StringUtils;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @Description service灞�
+ * @Author CZT
+ * @Date 2024/11/28 15:03
+ */
+@Slf4j
+@Service("sys.coreCompanyService")
+public class CoreCompanyService {
+
+    @Resource
+    private CompanyRepository companyRepository;
+
+    /**
+     * jpa鏌ヨ鍏徃淇℃伅
+     * @param id
+     * @return
+     */
+    public Company getDataById(String id) {
+
+        if (StringUtils.isEmpty(id)) {
+            return null;
+        }
+        return companyRepository.getDataById(id);
+    }
+
+    /**
+     * jpa鏌ヨ鍏徃淇℃伅
+     * @param companyId
+     * @return
+     */
+    public List<Company> getAllData(String companyId) {
+
+        if (StringUtils.isEmpty(companyId)) {
+
+            companyId = ContextUtil.getCompanyId();
+        }
+        return companyRepository.getAllData(companyId);
+    }
+
+    /**
+     * jpa鏌ヨ鍏徃淇℃伅
+     * @param sysDept
+     * @return
+     */
+    public Company initCompanyData(SysDept sysDept) {
+
+        if (null == sysDept) {
+            return null;
+        }
+        Company company = new Company();
+        company.setId(sysDept.getDeptId() + "");
+        company.setDwmc(sysDept.getDeptName());
+        company.setCompanyId(sysDept.getCompanyId());
+        this.saveOrUpdate(company);
+        return company;
+    }
+
+    /**
+     * 淇濆瓨浠撴埧淇℃伅
+     * @param data
+     */
+    public void saveOrUpdate(Company data) {
+        if (StringUtils.isEmpty(data.getCompanyId())) {
+            data.setCompanyId(ContextUtil.getCompanyId());
+        }
+        data.setZhgxsj(new Date());
+        companyRepository.save(data);
+    }
+
+    /**
+     * 鍒犻櫎浠撴埧淇℃伅
+     * @param data
+     * @return
+     */
+    public void delData(Company data) {
+        companyRepository.delete(data);
+    }
+}
\ No newline at end of file
diff --git a/igds-dzhwk-core/src/main/java/com/fzzy/igds/sys/CoreDeptService.java b/igds-dzhwk-core/src/main/java/com/fzzy/igds/sys/CoreDeptService.java
new file mode 100644
index 0000000..23c66e9
--- /dev/null
+++ b/igds-dzhwk-core/src/main/java/com/fzzy/igds/sys/CoreDeptService.java
@@ -0,0 +1,91 @@
+package com.fzzy.igds.sys;
+
+import com.fzzy.igds.dzhwk.domain.Dept;
+import com.fzzy.igds.sys.repository.DeptRepository;
+import com.fzzy.igds.util.ContextUtil;
+import com.ruoyi.common.core.domain.entity.SysDept;
+import com.ruoyi.common.utils.StringUtils;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @Description service灞�
+ * @Author CZT
+ * @Date 2024/11/28 19:03
+ */
+@Slf4j
+@Service("sys.coreDeptService")
+public class CoreDeptService {
+
+    @Resource
+    private DeptRepository deptRepository;
+
+    /**
+     * jpa鏌ヨ鍏徃淇℃伅
+     * @param id
+     * @return
+     */
+    public Dept getDataById(String id) {
+
+        if (StringUtils.isEmpty(id)) {
+            return null;
+        }
+        return deptRepository.getDataById(id);
+    }
+
+    /**
+     * jpa鏌ヨ淇℃伅
+     * @param companyId
+     * @return
+     */
+    public List<Dept> getAllData(String companyId) {
+
+        if (StringUtils.isEmpty(companyId)) {
+            companyId = ContextUtil.getCompanyId();
+        }
+        return deptRepository.getAllData(companyId);
+    }
+
+    /**
+     * jpa鏌ヨ鍏徃淇℃伅
+     * @param sysDept
+     * @return
+     */
+    public Dept initDeptData(SysDept sysDept) {
+
+        if (null == sysDept) {
+            return null;
+        }
+        Dept dept = new Dept();
+        dept.setId(sysDept.getDeptId() + "");
+        dept.setKqmc(sysDept.getDeptName());
+        dept.setCompanyId(sysDept.getCompanyId());
+        this.saveOrUpdate(dept);
+        return dept;
+    }
+
+    /**
+     * 淇濆瓨淇℃伅
+     * @param data
+     */
+    public void saveOrUpdate(Dept data) {
+        if (StringUtils.isEmpty(data.getCompanyId())) {
+            data.setCompanyId(ContextUtil.getCompanyId());
+        }
+        data.setZhgxsj(new Date());
+        deptRepository.save(data);
+    }
+
+    /**
+     * 鍒犻櫎浠撴埧淇℃伅
+     * @param data
+     * @return
+     */
+    public void delData(Dept data) {
+        deptRepository.delete(data);
+    }
+}
\ No newline at end of file
diff --git a/igds-dzhwk-core/src/main/java/com/fzzy/igds/sys/DepotService.java b/igds-dzhwk-core/src/main/java/com/fzzy/igds/sys/DepotService.java
new file mode 100644
index 0000000..032dc06
--- /dev/null
+++ b/igds-dzhwk-core/src/main/java/com/fzzy/igds/sys/DepotService.java
@@ -0,0 +1,300 @@
+package com.fzzy.igds.sys;
+
+import com.fzzy.igds.dzhwk.constant.*;
+import com.fzzy.igds.dzhwk.constant.RedisConst;
+import com.fzzy.igds.dzhwk.domain.Depot;
+import com.fzzy.igds.dzhwk.domain.DepotStore;
+import com.fzzy.igds.sys.repository.DepotRepository;
+import com.fzzy.igds.util.ContextUtil;
+import com.ruoyi.common.core.redis.RedisCache;
+import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.system.mapper.SysDeptMapper;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+import javax.annotation.Resource;
+import java.util.*;
+
+/**
+ * @Description
+ * @Author CZT
+ * @Date 2024/11/22 16:56
+ */
+@Slf4j
+@Service("sys.depotService")
+public class DepotService {
+
+    @Resource
+    private DepotRepository depotRepository;
+    @Resource
+    private RedisCache redisCache;
+    @Resource
+    private SysDeptMapper deptMapper;
+    @Resource
+    private DepotStoreService depotStoreService;
+
+
+    /**
+     * jpa鏌ヨ浠撳簱鍒楄〃
+     * @param companyId
+     * @param deptId
+     * @return
+     */
+    public List<Depot> getData(String companyId, String deptId) {
+
+        if (StringUtils.isEmpty(companyId)) {
+            companyId = ContextUtil.getCompanyId();
+        }
+        if (StringUtils.isEmpty(deptId)) {
+            deptId = ContextUtil.subDeptId(null);
+        }
+        return depotRepository.getDepot(companyId, deptId);
+    }
+
+    /**
+     * jpa鏌ヨ浠撳簱鍒楄〃
+     * @param ids
+     * @return
+     */
+    public List<Depot> getDepotByIds(List<String> ids) {
+        if (null == ids ||ids.isEmpty()) {
+            return null;
+        }
+        return depotRepository.getDepotByIds(ids);
+    }
+
+    /**
+     * jpa淇濆瓨鏇存柊浠撳簱淇℃伅
+     * @param depot
+     */
+    public void saveDepot(Depot depot) {
+        if (StringUtils.isEmpty(depot.getCompanyId())) {
+            depot.setCompanyId(ContextUtil.getCompanyId());
+        }
+        if (StringUtils.isEmpty(depot.getDeptId())) {
+            depot.setDeptId(ContextUtil.subDeptId(null));
+        }
+        if(null == depot.getOrderNum()){
+            depot.setOrderNum(1);
+        }
+        depotRepository.save(depot);
+        flushCache(depot.getCompanyId());
+    }
+
+    /**
+     * jpa鏇存柊浠撳簱鐘舵��
+     * @param depotId
+     * @param status
+     */
+    public void updateDepotStatus(String depotId, String status) {
+        if (StringUtils.isEmpty(depotId)) {
+            return;
+        }
+        depotRepository.updateDepotStatus(status, depotId);
+    }
+
+    /**
+     * jpa鍒犻櫎浠撳簱璐т綅淇℃伅
+     * @param depot
+     */
+    public void deleteDepot(Depot depot) {
+        depotRepository.delete(depot);
+
+        //鍒犻櫎閰嶇疆缂撳瓨
+        this.delCacheDepot(depot, depot.getCompanyId());
+    }
+
+    /**
+     * 鍒锋柊浠撳簱璐т綅缂撳瓨
+     * @param companyId
+     */
+    public void flushCache(String companyId) {
+        if (StringUtils.isEmpty(companyId)) {
+            companyId = ContextUtil.getCompanyId();
+        }
+
+        List<Depot> list = depotRepository.getDepotByCompanyId(companyId);
+
+        this.setCacheDepotList(list, companyId);
+    }
+
+    /**
+     * 璁剧疆缂撳瓨
+     * @param list
+     * @param companyId
+     */
+    public void setCacheDepotList(List<Depot> list, String companyId) {
+        if (null == list) return;
+        String key;
+        for (Depot depot : list) {
+            key = RedisConst.buildKey(companyId, RedisConst.KEY_DEPOT, depot.getId());
+            redisCache.setCacheObject(key, depot);
+        }
+    }
+
+    /**
+     * 鍒犻櫎缂撳瓨淇℃伅
+     * @param depot
+     * @param companyId
+     */
+    public void delCacheDepot(Depot depot, String companyId) {
+        if (null == depot) {
+            return;
+        }
+        if(StringUtils.isEmpty(companyId)){
+            companyId = ContextUtil.getCompanyId();
+        }
+        String key = RedisConst.buildKey(companyId, RedisConst.KEY_DEPOT, depot.getId());
+        redisCache.deleteObject(key);
+    }
+
+    /**
+     * 鑾峰彇缂撳瓨-鏍规嵁缁勭粐缂栫爜鑾峰彇浠撳簱闆嗗悎
+     * @param companyId
+     * @return
+     */
+    public List<Depot> getCacheDepotList(String companyId) {
+        if(StringUtils.isEmpty(companyId)){
+            companyId = ContextUtil.getCompanyId();
+        }
+        String patten = RedisConst.buildKey(companyId, RedisConst.KEY_DEPOT) + "*";
+
+        Collection<String> keys = redisCache.keys(patten);
+        if (null == keys) {
+            return null;
+        }
+
+        List<Depot> list = new ArrayList<>();
+        for (String key : keys) {
+            list.add((Depot) redisCache.getCacheObject(key));
+        }
+        //缂撳瓨鑾峰彇涓虹┖锛屽垯鏌ヨ鏁版嵁搴�
+        if(list.size() < 1){
+            list = depotRepository.getDepotByCompanyId(companyId);
+            setCacheDepotList(list, companyId);
+        }
+
+        //閲嶆柊鎺掑簭
+        Collections.sort(list, (p1, p2) -> p1.getOrderNum() - p2.getOrderNum());
+        return list;
+    }
+
+    /**
+     * 鑾峰彇缂撳瓨-鏍规嵁缁勭粐缂栫爜鍜屽簱鍖虹紪鐮佽幏鍙栦粨搴撻泦鍚�
+     * @param companyId
+     * @param deptId
+     * @return
+     */
+    public List<Depot> getCacheDepotList(String companyId, String deptId) {
+        if (StringUtils.isEmpty(deptId)) {
+            return null;
+        }
+        List<Depot> list = getCacheDepotList(companyId);
+        if(null == list || list.isEmpty()){
+            return null;
+        }
+        List<Depot> result = new ArrayList<>();
+        for (Depot depot : list) {
+            if (deptId.equals(depot.getDeptId())) {
+                result.add(depot);
+            }
+        }
+        //閲嶆柊鎺掑簭
+        Collections.sort(result, (p1, p2) -> p1.getOrderNum() - p2.getOrderNum());
+        return result;
+    }
+
+    /**
+     * 鑾峰彇浠撳簱淇℃伅-鏍规嵁浠撳簱缂栫爜鑾峰彇缂撳瓨淇℃伅
+     * @param companyId
+     * @param depotId
+     * @return
+     */
+    public Depot getCacheDepot(String companyId, String depotId) {
+        if (StringUtils.isEmpty(depotId)) {
+            return null;
+        }
+        if(StringUtils.isEmpty(companyId)){
+            companyId = ContextUtil.getCompanyId();
+        }
+        String key = RedisConst.buildKey(companyId, RedisConst.KEY_DEPOT, depotId);
+        Depot depot = redisCache.getCacheObject(key);
+        if(null == depot){
+            depot = depotRepository.getDepotById(companyId, depotId);
+            redisCache.setCacheObject(key, depot);
+        }
+        return depot;
+    }
+
+    /**
+     * 鏍规嵁褰撳墠浠撳簱缂栧彿淇℃伅鑾峰彇涓庡綋鍓嶄粨搴撶浉鍚屽缓绛戠墿鐨勬墍鏈変粨搴撻泦鍚�
+     * @param companyId
+     * @param depotId
+     * @return
+     */
+    public List<Depot> getCacheCommonBuildingDepot(String companyId, String depotId) {
+        //鑻ヤ粨搴撴湭閰嶇疆浠撴埧缂栫爜锛屽垯鐩存帴杩斿洖瀵瑰簲浠撳簱
+        Depot depot = getCacheDepot(companyId, depotId);
+
+        if (StringUtils.isEmpty(depot.getBuildingId())) {
+            List<Depot> list = new ArrayList<>();
+            list.add(depot);
+            return list;
+        }
+
+        List<Depot> list = getCacheDepotList(companyId);
+        if (null == list) {
+            return null;
+        }
+        String buildingId = null;
+        Map<String, List<Depot>> mapList = new HashMap<>();// 瀹氫箟涓�涓互寤虹瓚鐗㊣D涓篕EY鐨凪AP闆嗗悎瀵硅薄
+
+        for (Depot item : list) {
+            if (item.getId().equals(depotId)) {
+                buildingId = item.getBuildingId();
+            }
+            if (null == mapList.get(item.getBuildingId())) {
+                mapList.put(item.getBuildingId(), new ArrayList<>());
+            }
+            mapList.get(item.getBuildingId()).add(item);
+        }
+        return mapList.get(buildingId);
+    }
+
+    /**
+     * 鏍规嵁搴撳瓨淇℃伅鏇存柊浠撳簱淇℃伅
+     * @param data
+     */
+    public void updateByStore(DepotStore data) {
+
+        Depot depot = this.getCacheDepot(data.getCompanyId(), data.getDepotId());
+        if (null == depot) {
+            return;
+        }
+
+        depot.setStorageReal(data.getStorageReal());
+        depot.setDepotStatus(data.getDepotStatus());
+        depot.setFoodLevel(data.getFoodLevel());
+        depot.setFoodLocation(data.getFoodLocation());
+        depot.setFoodVariety(data.getFoodVariety());
+        depot.setFoodType(data.getFoodType());
+        depot.setFoodYear(data.getFoodYear());
+        if (null != data.getStoreDate()) {
+            depot.setStoreDate(data.getStoreDate());
+        }
+
+        this.saveDepot(depot);
+    }
+
+    /**
+     * 鍒濆鍖栨帶鍒舵煖浠撳簱鐨勮櫄鎷熺敤鎴�
+     * @param companyId
+     */
+    public void initUserDeptMap(String companyId) {
+        List<Depot> list = this.getCacheDepotList(companyId);
+        if (null == list || list.isEmpty()) return;
+        for (Depot depot : list) {
+            ContextUtil.updateSubDept(depot.getId(), depot.getDeptId());
+        }
+    }
+
+}
diff --git a/igds-dzhwk-core/src/main/java/com/fzzy/igds/sys/DepotStatusConfirmService.java b/igds-dzhwk-core/src/main/java/com/fzzy/igds/sys/DepotStatusConfirmService.java
new file mode 100644
index 0000000..167b829
--- /dev/null
+++ b/igds-dzhwk-core/src/main/java/com/fzzy/igds/sys/DepotStatusConfirmService.java
@@ -0,0 +1,106 @@
+package com.fzzy.igds.sys;
+
+import com.fzzy.igds.dzhwk.constant.RedisConst;
+import com.fzzy.igds.dzhwk.domain.DepotStatusConfirm;
+import com.fzzy.igds.sys.repository.DepotStatusConfirmRepository;
+import com.fzzy.igds.util.ContextUtil;
+import com.ruoyi.common.core.redis.RedisCache;
+import com.ruoyi.common.utils.StringUtils;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.time.DateFormatUtils;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Pageable;
+import org.springframework.data.jpa.domain.Specification;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @Description
+ * @Author CZT
+ * @Date 2024/11/23 10:48
+ */
+@Slf4j
+@Service("sys.depotStatusConfirmService")
+public class DepotStatusConfirmService {
+
+    public static final String CACHE_DEPOT_STATUS_CONFIRM_ID = "DEPOT_STATUS_CONFIRM_ID";
+
+    @Resource
+    private DepotStatusConfirmRepository DepotStatusConfirmRepository;
+    @Resource
+    private RedisCache redisCache;
+
+    /**
+     * JPA鍒嗛〉鏌ヨ鏁版嵁
+     *
+     * @param specification
+     * @param pageable
+     * @return
+     */
+    public Page<DepotStatusConfirm> findAll(Specification<DepotStatusConfirm> specification, Pageable pageable) {
+        return DepotStatusConfirmRepository.findAll(specification, pageable);
+    }
+
+    /**
+     * JPA鏇存柊淇濆瓨
+     * @param data
+     */
+    public void saveOrUpdate(DepotStatusConfirm data) {
+        if (StringUtils.isEmpty(data.getCompanyId())) {
+            data.setCompanyId(ContextUtil.getCompanyId());
+        }
+        if (StringUtils.isEmpty(data.getDeptId())) {
+            data.setDeptId(ContextUtil.subDeptId(null));
+        }
+        data.setUpdateTime(new Date());
+        if (StringUtils.isEmpty(data.getFcqrdh())) {
+            data.setFcqrdh(buildId(data.getFcrq()));
+        }
+        DepotStatusConfirmRepository.save(data);
+    }
+
+
+    /**
+     * JPA鍒犻櫎
+     * @param data
+     */
+    public void delData(DepotStatusConfirm data) {
+        DepotStatusConfirmRepository.delete(data);
+    }
+
+    /**
+     * 鑾峰彇灏佷粨鍗曞彿
+     * @param time
+     * @return
+     */
+    public String buildId(Date time) {
+
+        String timeKey = "21" + DateFormatUtils.format(time, "yyyyMMdd");
+        // 浠庣紦瀛樹腑鑾峰彇宸叉湁鐨勭粍缁囩紪鐮�
+        String cacheKey = RedisConst.buildKey(ContextUtil.getCompanyId(), CACHE_DEPOT_STATUS_CONFIRM_ID);
+
+        String cacheId = (String) redisCache.getCacheObject(cacheKey);
+        if (null != cacheId && cacheId.indexOf(timeKey) >= 0) {
+            String temp = cacheId.substring(cacheId.length() - 4);
+            Integer i = Integer.valueOf(temp);
+            cacheId = timeKey + String.format("%04d", ++i);
+        } else {
+            List<DepotStatusConfirm> list = DepotStatusConfirmRepository.getDataByFcqrdh(timeKey + "%");
+            if (null == list || list.isEmpty()) {
+                cacheId = timeKey + "0001";
+            } else {
+                String temp = list.get(0).getFcqrdh();
+                String tempNum = temp.substring(temp.length() - 4);
+                Integer i = Integer.valueOf(tempNum);
+                cacheId = timeKey + String.format("%04d", ++i);
+            }
+        }
+        // 鏇存柊缂撳瓨
+        redisCache.setCacheObject(cacheKey, cacheId);
+        return cacheId;
+    }
+
+}
diff --git a/igds-dzhwk-core/src/main/java/com/fzzy/igds/sys/DepotStoreService.java b/igds-dzhwk-core/src/main/java/com/fzzy/igds/sys/DepotStoreService.java
new file mode 100644
index 0000000..937a4c7
--- /dev/null
+++ b/igds-dzhwk-core/src/main/java/com/fzzy/igds/sys/DepotStoreService.java
@@ -0,0 +1,129 @@
+package com.fzzy.igds.sys;
+
+import com.fzzy.igds.dzhwk.domain.DepotStatusConfirm;
+import com.fzzy.igds.dzhwk.domain.DepotStore;
+import com.fzzy.igds.sys.repository.DepotStoreRepository;
+import com.fzzy.igds.util.ContextUtil;
+import com.ruoyi.common.utils.StringUtils;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.time.DateFormatUtils;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Pageable;
+import org.springframework.data.jpa.domain.Specification;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @Description
+ * @Author CZT
+ * @Date 2024/11/23 11:29
+ */
+@Slf4j
+@Service("sys.depotStoreService")
+public class DepotStoreService {
+
+    @Resource
+    private DepotStoreRepository depotStoreRepository;
+
+    /**
+     * JPA鍒嗛〉鏌ヨ鏁版嵁
+     *
+     * @param specification
+     * @param pageable
+     * @return
+     */
+    public Page<DepotStore> findAll(Specification<DepotStore> specification, Pageable pageable) {
+        return depotStoreRepository.findAll(specification, pageable);
+    }
+
+    /**
+     * JPA鏇存柊淇濆瓨鏁版嵁
+     * @param data
+     */
+    public void saveDepotStore(DepotStore data) {
+        if (StringUtils.isEmpty(data.getCompanyId())) {
+            data.setCompanyId(ContextUtil.getCompanyId());
+        }
+        if (StringUtils.isEmpty(data.getDeptId())) {
+            data.setDeptId(ContextUtil.subDeptId(null));
+        }
+        data.setUpdateUser(ContextUtil.getLoginUserCName());
+        data.setUpdateDate(new Date());
+
+        data.setId(data.getDepotId() + "_" + DateFormatUtils.format(data.getStoreDate(), "yyyyMMddHHmmss") + "_" + DateFormatUtils.format(data.getUpdateDate(), "yyyyMMddHHmmss"));
+        data.setCreateDate(new Date());
+        data.setRemark("绯荤粺鐢熸垚");
+
+        depotStoreRepository.save(data);
+    }
+
+    /**
+     * JPA鍒犻櫎鏁版嵁
+     * @param data
+     * @return
+     */
+    public String delDepotStore(DepotStore data) {
+        depotStoreRepository.delete(data);
+        return null;
+    }
+
+    /**
+     * JPA鑾峰彇浠撳簱鏈�鍚庝竴鏉″簱瀛樻暟鎹�
+     * @param depotId
+     * @param time
+     * @return
+     */
+    public DepotStore getLastData(String depotId, Date time) {
+        List<DepotStore> list = depotStoreRepository.getDataByDepotId(depotId, time);
+        if(null == list || list.isEmpty()){
+            return null;
+        }
+        return list.get(0);
+    }
+
+    /**
+     * 鏍规嵁灏佷粨纭鍗曚俊鎭鍔犲簱瀛�
+     * @param data
+     */
+    public void depotStoreStatus(DepotStatusConfirm data) {
+        // 鏍规嵁鏈�鍚庝竴杞﹁繘琛屾眹鎬荤粺璁★紝寮�濮嬫椂闂存槸浠撳簱搴撳瓨鏈�鍚庝竴涓椂闂存埅姝㈠埌褰撳墠
+        DepotStore lastStore = this.getLastData(data.getDepotId(), new Date());
+
+        lastStore.setRemark("灏佷粨纭");
+        lastStore.setFullDate(data.getFcrq());
+        lastStore.setDepotStatus("3");
+        lastStore.setUpdateUser("绯荤粺绠$悊鍛�");
+        lastStore.setStorageReal(data.getFcsl());
+        lastStore.setUpdateDate(new Date());
+        lastStore.setCreateDate(new Date());
+        lastStore.setId(null);
+        this.saveDepotStore(lastStore);
+    }
+
+    public void addDepotStore(DepotStore store, boolean updateDepot) {
+//        if (null == store.getUpdateDate()) store.setUpdateDate(new Date());
+//        if (null == store.getId()) store.setId(ContextUtil.getUUID());
+//        if (null == store.getManageType() || "".equals(store.getManageType())) {
+//            store.setManageType("01");
+//        }
+//
+//        commonMapper.addDepotStore(store);
+//
+//
+//        if (updateDepot) {
+//            DepotParam param = new DepotParam();
+//            param.setCompanyId(store.getCompanyId());
+//            param.setDepotId(store.getDepotId());
+//            param.setWeight(store.getStorageReal());
+//            param.setDepotStatus(store.getDepotStatus());
+//
+//            commonMapper.updateDepotStorage(param);
+//        }
+    }
+
+
+
+}
diff --git a/igds-dzhwk-core/src/main/java/com/fzzy/igds/sys/DicAreaService.java b/igds-dzhwk-core/src/main/java/com/fzzy/igds/sys/DicAreaService.java
new file mode 100644
index 0000000..bae865d
--- /dev/null
+++ b/igds-dzhwk-core/src/main/java/com/fzzy/igds/sys/DicAreaService.java
@@ -0,0 +1,124 @@
+package com.fzzy.igds.sys;
+
+import com.fzzy.igds.dzhwk.data.BaseParam;
+import com.fzzy.igds.dzhwk.domain.DicArea;
+import com.fzzy.igds.sys.mapper.DicAreaMapper;
+import com.fzzy.igds.sys.repository.DicAreaRepository;
+import com.ruoyi.common.utils.StringUtils;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Pageable;
+import org.springframework.data.jpa.domain.Specification;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+/**
+ * @Description
+ * @Author CZT
+ * @Date 2024/11/23 09:56
+ */
+@Slf4j
+@Service("sys.dicAreaService")
+public class DicAreaService {
+
+    @Resource
+    private DicAreaRepository dicAreaRepository;
+    @Resource
+    private DicAreaMapper dicAreaMapper;
+
+    /**
+     * JPA鍒嗛〉鏌ヨ鏁版嵁
+     *
+     * @param pageable
+     */
+    public Page<DicArea> findAll(Pageable pageable) {
+        return dicAreaRepository.findAll(pageable);
+    }
+
+    /**
+     * JPA鍒嗛〉鏌ヨ鏁版嵁
+     *
+     * @param specification
+     * @param pageable
+     * @return
+     */
+    public Page<DicArea> findAll(Specification<DicArea> specification, Pageable pageable) {
+        return dicAreaRepository.findAll(specification, pageable);
+    }
+
+    /**
+     * JPA鏍规嵁鐖剁紪鐮佹煡璇㈠尯鍩熶俊鎭�
+     *
+     * @param parentCode
+     * @return
+     */
+    public List<DicArea> getDicAreaByParentCode(String parentCode) {
+        if(StringUtils.isEmpty(parentCode)){
+            return dicAreaRepository.findAll();
+        }
+        return dicAreaRepository.getDicAreaByParentCode(parentCode);
+    }
+
+    /**
+     * JPA淇濆瓨鏁版嵁
+     *
+     * @param data
+     * @return
+     */
+    public String saveDicArea(DicArea data) {
+        dicAreaRepository.save(data);
+        return null;
+    }
+
+
+    /**
+     * JPA鍒犻櫎鏁版嵁
+     *
+     * @param data
+     * @return
+     */
+    public String delDicArea(DicArea data) {
+        dicAreaRepository.delete(data);
+        return null;
+    }
+
+    /**
+     * 鏍规嵁鍚嶇О鑾峰彇鍖哄煙缂栫爜
+     *
+     * @param name
+     * @return
+     */
+    public DicArea listDicAreaByName(String name) {
+        return dicAreaRepository.listDicAreaByName(name);
+    }
+
+    /**
+     * 鏍规嵁鍖哄煙缂栫爜鑾峰彇鍚嶇О
+     *
+     * @param code
+     * @return
+     */
+    public DicArea listDicAreaByCode(String code) {
+        return dicAreaRepository.listDicAreaByCode(code);
+    }
+
+
+    /**
+     * Mybatis 鍒嗛〉鏌ヨ鏁版嵁
+     *
+     * @param specification
+     * @param pageable
+     * @return
+     */
+    /**
+     *
+     * @param page
+     * @param param
+     * @return
+     */
+    public List<DicArea> listDicArea(com.fzzy.igds.dzhwk.data.Page<DicArea> page, BaseParam param) {
+        return dicAreaMapper.listDicArea(page,param);
+    }
+}
diff --git a/igds-dzhwk-core/src/main/java/com/fzzy/igds/sys/DicService.java b/igds-dzhwk-core/src/main/java/com/fzzy/igds/sys/DicService.java
new file mode 100644
index 0000000..ff4b2cd
--- /dev/null
+++ b/igds-dzhwk-core/src/main/java/com/fzzy/igds/sys/DicService.java
@@ -0,0 +1,471 @@
+package com.fzzy.igds.sys;
+
+import com.fzzy.igds.dzhwk.constant.*;
+import com.fzzy.igds.util.ContextUtil;
+import com.fzzy.igds.util.WeatherUtil;
+import com.ruoyi.common.core.domain.entity.SysDictData;
+import com.ruoyi.common.utils.DictUtils;
+import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.system.mapper.SysDictDataMapper;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @Description
+ * @Author CZT
+ * @Date 2024/11/22 16:30
+ */
+@Slf4j
+@Service("sys.dicService")
+public class DicService {
+
+    @Autowired
+    private SysDictDataMapper dictDataMapper;
+
+    /**
+     * 鍒濆鍖栧父鐢ㄥ瓧鍏稿埌鍐呭瓨
+     *
+     * @param companyId
+     */
+    public void initDicMap(String companyId) {
+        if (StringUtils.isEmpty(companyId)) {
+            companyId = ContextUtil.getDefaultCompanyId();
+        }
+        //鍒濆鍖栫伯椋熷搧绉嶅瓧鍏�
+        List<SysDictData> dicList = DictUtils.getDictCache(Constant.TRIGGER_PARENT_FOOD_VARIETY, companyId);
+        if (null != dicList) {
+            for (SysDictData sysDictData : dicList) {
+                Constant.mapFoodVariety.put(sysDictData.getDictValue(), sysDictData.getDictLabel());
+            }
+        }
+        //鍒濆鍖栫伯椋熸�ц川瀛楀吀
+        dicList = DictUtils.getDictCache(Constant.TRIGGER_PARENT_FOOD_TYPE, companyId);
+        if (null != dicList) {
+            for (SysDictData sysDictData : dicList) {
+                Constant.mapFoodType.put(sysDictData.getDictValue(), sysDictData.getDictLabel());
+            }
+        }
+        //鍒濆鍖栧嚭鍏ュ簱娴佺▼瀛楀吀
+        dicList = DictUtils.getDictCache(Constant.TRIGGER_PARENT_PROCESS_STATUS, companyId);
+        if (null != dicList) {
+            for (SysDictData sysDictData : dicList) {
+                Constant.mapProgressName.put(sysDictData.getDictValue(), sysDictData.getDictLabel());
+            }
+        }
+    }
+
+    /**
+     * 鏍规嵁type鍜岀粍缁囩紪鐮佽幏鍙栧瓧鍏�,鍏堜粠缂撳瓨鑾峰彇锛岀紦瀛樻病鏈夊垯鏌ヨ鏁版嵁搴�
+     *
+     * @param dictType
+     * @param companyId
+     * @return
+     */
+    public List<SysDictData> getDictDataByType(String dictType, String companyId) {
+
+        if (StringUtils.isEmpty(dictType)) {
+            return null;
+        }
+        if (StringUtils.isEmpty(companyId)) {
+            companyId = ContextUtil.getCompanyId();
+        }
+        List<SysDictData> list = DictUtils.getDictCache(dictType, companyId);
+        if (null == list || list.isEmpty()) {
+            list = dictDataMapper.selectDictDataByType(dictType, companyId);
+            DictUtils.setDictCache(dictType, list, companyId);
+        }
+        return list;
+    }
+
+    /**
+     * 浠撴埧绫诲瀷-闈炲浗鏍囧畾涔�
+     *
+     * @return
+     */
+    public List<SysDictData> triggerDepotType() {
+        List<SysDictData> list = new ArrayList<SysDictData>();
+        list.add(new SysDictData(DepotType.TYPE_01.getMsg(), DepotType.TYPE_01.getCode()));
+        list.add(new SysDictData(DepotType.TYPE_02.getMsg(), DepotType.TYPE_02.getCode()));
+        list.add(new SysDictData(DepotType.TYPE_03.getMsg(), DepotType.TYPE_03.getCode()));
+        list.add(new SysDictData(DepotType.TYPE_04.getMsg(), DepotType.TYPE_04.getCode()));
+        list.add(new SysDictData(DepotType.TYPE_05.getMsg(), DepotType.TYPE_05.getCode()));
+        list.add(new SysDictData(DepotType.TYPE_99.getMsg(), DepotType.TYPE_99.getCode()));
+        return list;
+    }
+
+    /**
+     * 浠撴埧鐘舵��
+     *
+     * @return
+     */
+    public List<SysDictData> triggerDepotStatus() {
+        List<SysDictData> list = new ArrayList<SysDictData>();
+        list.add(new SysDictData(DepotStatus.STATUS_1.getMsg(), DepotStatus.STATUS_1.getCode()));
+        list.add(new SysDictData(DepotStatus.STATUS_2.getMsg(), DepotStatus.STATUS_2.getCode()));
+        list.add(new SysDictData(DepotStatus.STATUS_3.getMsg(), DepotStatus.STATUS_3.getCode()));
+        list.add(new SysDictData(DepotStatus.STATUS_4.getMsg(), DepotStatus.STATUS_4.getCode()));
+        list.add(new SysDictData(DepotStatus.STATUS_31.getMsg(), DepotStatus.STATUS_31.getCode()));
+        list.add(new SysDictData(DepotStatus.STATUS_32.getMsg(), DepotStatus.STATUS_32.getCode()));
+        list.add(new SysDictData(DepotStatus.STATUS_33.getMsg(), DepotStatus.STATUS_33.getCode()));
+        list.add(new SysDictData(DepotStatus.STATUS_34.getMsg(), DepotStatus.STATUS_34.getCode()));
+        list.add(new SysDictData(DepotStatus.STATUS_9.getMsg(), DepotStatus.STATUS_9.getCode()));
+        return list;
+    }
+
+    /**
+     * 绮绛夌骇
+     *
+     * @return
+     */
+    public List<SysDictData> triggerFoodLevel() {
+        List<SysDictData> list = new ArrayList<SysDictData>();
+        list.add(new SysDictData(FoodLevel.LEVEL_01.getMsg(), FoodLevel.LEVEL_01.getCode()));
+        list.add(new SysDictData(FoodLevel.LEVEL_02.getMsg(), FoodLevel.LEVEL_02.getCode()));
+        list.add(new SysDictData(FoodLevel.LEVEL_03.getMsg(), FoodLevel.LEVEL_03.getCode()));
+        list.add(new SysDictData(FoodLevel.LEVEL_04.getMsg(), FoodLevel.LEVEL_04.getCode()));
+        list.add(new SysDictData(FoodLevel.LEVEL_05.getMsg(), FoodLevel.LEVEL_05.getCode()));
+        list.add(new SysDictData(FoodLevel.LEVEL_06.getMsg(), FoodLevel.LEVEL_06.getCode()));
+        return list;
+    }
+
+    /**
+     * 鍌ㄧ伯鏂瑰紡
+     *
+     * @return
+     */
+    public List<SysDictData> triggerStoreType() {
+        List<SysDictData> list = new ArrayList<SysDictData>();
+        list.add(new SysDictData("鏁h鍌ㄧ伯", "1"));
+        list.add(new SysDictData("鍖呰鍌ㄧ伯", "2"));
+        list.add(new SysDictData("鍥村寘瀛�", "3"));
+        list.add(new SysDictData("鍏朵粬", "9"));
+        return list;
+    }
+
+    /**
+     * 绠$悊鏂瑰紡
+     *
+     * @return
+     */
+    public List<SysDictData> triggerManagerType() {
+        List<SysDictData> list = new ArrayList<SysDictData>();
+        list.add(new SysDictData("鐩村偍", "01"));
+        list.add(new SysDictData("浠e偍", "02"));
+        list.add(new SysDictData("绉熶粨", "03"));
+        list.add(new SysDictData("濮旀墭", "04"));
+        return list;
+    }
+
+    /**
+     * 鐢电紗璧峰鏂逛綅
+     *
+     * @return
+     */
+    public List<SysDictData> triggerStartOrientation() {
+        List<SysDictData> list = new ArrayList<SysDictData>();
+        list.add(new SysDictData("鍙宠竟", Constant.GRAIN_START_ORIENTATION_RIGHT));
+        list.add(new SysDictData("鍙充笂", Constant.GRAIN_START_ORIENTATION_RIGHT_UP));
+        list.add(new SysDictData("宸﹁竟", Constant.GRAIN_START_ORIENTATION_LEFT));
+        list.add(new SysDictData("宸︿笂", Constant.GRAIN_START_ORIENTATION_LEFT_UP));
+        return list;
+    }
+
+    /**
+     * 鐢电紗甯冪嚎鏂瑰悜
+     *
+     * @return
+     */
+    public List<SysDictData> triggerStartDirection() {
+        List<SysDictData> list = new ArrayList<SysDictData>();
+        list.add(new SysDictData("绾靛悜", Constant.GRAIN_START_DIRECTION_PORTRAIT));
+        list.add(new SysDictData("妯悜", Constant.GRAIN_START_DIRECTION_TRANSVERSE));
+        return list;
+    }
+
+    /**
+     * 鐢电紗璧峰鐐逛綅
+     *
+     * @return
+     */
+    public List<SysDictData> triggerStartPoint() {
+        List<SysDictData> list = new ArrayList<SysDictData>();
+        list.add(new SysDictData("椤堕儴", Constant.GRAIN_START_POINT_TOP));
+        list.add(new SysDictData("搴曢儴", Constant.GRAIN_START_POINT_BELOW));
+
+        return list;
+    }
+
+    /**
+     * 灞傝杞崲
+     *
+     * @return
+     */
+    public List<SysDictData> triggerStartConvert() {
+        List<SysDictData> list = new ArrayList<SysDictData>();
+        list.add(new SysDictData("榛樿", Constant.GRAIN_CONVERT_DEFAULT));
+        list.add(new SysDictData("椤烘椂閽�", Constant.GRAIN_CONVERT_CLOCKWISE));
+        list.add(new SysDictData("閫嗘椂閽�", Constant.GRAIN_CONVERT_ANTICLOCKWISE));
+        return list;
+    }
+
+    /**
+     * 绛掍粨閿ュ舰
+     *
+     * @return
+     */
+    public List<SysDictData> triggerCableCone() {
+        List<SysDictData> list = new ArrayList<SysDictData>();
+        list.add(new SysDictData("鏃犻敟褰�", Constant.CABLE_CONE_0));
+        list.add(new SysDictData("涓婇敟褰�", Constant.CABLE_CONE_1));
+        list.add(new SysDictData("涓嬮敟褰�", Constant.CABLE_CONE_2));
+        return list;
+    }
+
+    /**
+     * 鏄惁
+     *
+     * @return
+     */
+    public List<SysDictData> triggerYN() {
+        List<SysDictData> list = new ArrayList<SysDictData>();
+        list.add(new SysDictData("鏄�", Constant.YN_Y));
+        list.add(new SysDictData("鍚�", Constant.YN_N));
+        return list;
+    }
+
+    /**
+     * 閫氳鐘舵��
+     *
+     * @return
+     * @throws Exception
+     */
+    public List<SysDictData> conStatus() {
+        List<SysDictData> list = new ArrayList<>();
+        list.add(new SysDictData("姝e父", Constant.YN_Y));
+        list.add(new SysDictData("鏂紑", Constant.YN_N));
+        return list;
+    }
+
+    /**
+     * 鏈湴杩滅▼妯″紡
+     *
+     * @return
+     */
+    public List<SysDictData> controlModel() {
+        List<SysDictData> list = new ArrayList<SysDictData>();
+
+        list.add(new SysDictData(ControlModel.MODEL_01.getMsg(), ControlModel.MODEL_01.getCode()));
+        list.add(new SysDictData(ControlModel.MODEL_02.getMsg(), ControlModel.MODEL_02.getCode()));
+        return list;
+    }
+
+    /**
+     * 鍔熻兘妯″潡
+     *
+     * @return
+     */
+    public List<SysDictData> triggerBizType() {
+        List<SysDictData> list = new ArrayList<SysDictData>();
+        list.add(new SysDictData(BizType.GRAIN.getMsg(), BizType.GRAIN.getCode()));
+        list.add(new SysDictData(BizType.PEST.getMsg(), BizType.PEST.getCode()));
+        list.add(new SysDictData(BizType.GAS.getMsg(), BizType.GAS.getCode()));
+        list.add(new SysDictData(BizType.AREATION.getMsg(), BizType.AREATION.getCode()));
+        list.add(new SysDictData(BizType.N2.getMsg(), BizType.N2.getCode()));
+        list.add(new SysDictData(BizType.INOUT_IN.getMsg(), BizType.INOUT_IN.getCode()));
+        list.add(new SysDictData(BizType.INOUT_OUT.getMsg(), BizType.INOUT_OUT.getCode()));
+        list.add(new SysDictData(BizType.TEMPCONTROL.getMsg(), BizType.TEMPCONTROL.getCode()));
+        list.add(new SysDictData(BizType.WEATHER.getMsg(), BizType.WEATHER.getCode()));
+        list.add(new SysDictData(BizType.ES.getMsg(), BizType.ES.getCode()));
+        list.add(new SysDictData(BizType.SECURITY.getMsg(), BizType.SECURITY.getCode()));
+        list.add(new SysDictData(BizType.SYS.getMsg(), BizType.SYS.getCode()));
+        list.add(new SysDictData(BizType.SCREEN.getMsg(), BizType.SCREEN.getCode()));
+        return list;
+    }
+
+
+
+
+    /**
+     * 姘旇薄鏉ユ簮
+     *
+     * @return
+     */
+    public List<SysDictData> triggerSource() {
+        List<SysDictData> list = new ArrayList<SysDictData>();
+        list.add(new SysDictData(WeatherUtil.SOURCE_01, "搴撳尯姘旇薄绔�"));
+        list.add(new SysDictData(WeatherUtil.SOURCE_01, "澶栫綉姘旇薄绔�"));
+        return list;
+    }
+
+    /**
+     * 妫�楠岀被鍒�
+     *
+     * @return
+     */
+    public List<SysDictData> triggerType() {
+        List<SysDictData> list = new ArrayList<SysDictData>();
+        list.add(new SysDictData("鍏ヤ粨楠屾敹", "01"));
+        list.add(new SysDictData("鍑轰粨妫�楠�", "02"));
+        list.add(new SysDictData("3鏈堟湯鏅", "03"));
+        list.add(new SysDictData("9鏈堟湯鏅", "04"));
+        list.add(new SysDictData("鍏ュ簱鍒濇", "05"));
+        list.add(new SysDictData("鏈堝害妫�鏌�", "06"));
+        list.add(new SysDictData("3鏈堟湯搴撳唴鏅煡", "07"));
+        list.add(new SysDictData("9鏈堟湯搴撳唴鏅煡", "08"));
+        return list;
+    }
+
+    /**
+     * 鎸囨爣绫诲埆
+     *
+     * @return
+     */
+    public List<SysDictData> triggerStandard() {
+        List<SysDictData> list = new ArrayList<SysDictData>();
+
+        list.add(new SysDictData("鍥芥爣", "1"));
+        list.add(new SysDictData("鍏朵粬", "0"));
+
+        return list;
+    }
+
+    /**
+     * 妫�楠屼緷鎹�
+     *
+     * @return
+     */
+    public List<SysDictData> triggerMetrics() {
+        List<SysDictData> list = new ArrayList<SysDictData>();
+
+        list.add(new SysDictData("璐ㄩ噺鎸囨爣妫�楠�", "1"));
+        list.add(new SysDictData("鍌ㄥ瓨鍝佽川妫�楠�", "2"));
+        list.add(new SysDictData("椋熷搧瀹夊叏妫�楠�", "3"));
+
+        return list;
+    }
+
+    /**
+     * 瀹℃牳鐘舵��
+     *
+     * @return
+     */
+    public List<SysDictData> triggerStatusType() {
+        List<SysDictData> list = new ArrayList<SysDictData>();
+        for (AuditStatus w : AuditStatus.values()) {
+            list.add(new SysDictData(w.getMsg(), w.getCode()));
+        }
+
+        return list;
+    }
+
+    /**
+     * 璀﹀憡绫诲瀷
+     *
+     * @return
+     */
+    public List<SysDictData> triggerWarnType() {
+        List<SysDictData> list = new ArrayList<SysDictData>();
+        for (WarnType w : WarnType.values()) {
+            list.add(new SysDictData(w.getMsg(), w.getCode()));
+        }
+        return list;
+    }
+
+    /**
+     * 璀﹀憡绛夌骇
+     *
+     * @return
+     */
+    public List<SysDictData> triggerWarnLevel() {
+        List<SysDictData> list = new ArrayList<SysDictData>();
+        for (WarnLevel w : WarnLevel.values()) {
+            list.add(new SysDictData(w.getMsg(), w.getCode()));
+        }
+
+        return list;
+    }
+
+    /**
+     * 璀﹀憡鐘舵��
+     *
+     * @return
+     */
+    public List<SysDictData> triggerWarnStatus() {
+        List<SysDictData> list = new ArrayList<SysDictData>();
+        for (WarnStatus w : WarnStatus.values()) {
+            list.add(new SysDictData(w.getName(), w.getCode()));
+        }
+
+        return list;
+    }
+
+    /**
+     * 璀﹀憡閫氱煡鏂瑰紡
+     *
+     * @return
+     */
+    public List<SysDictData> triggerNoticeType() {
+        List<SysDictData> list = new ArrayList<SysDictData>();
+        for (NoticeType w : NoticeType.values()) {
+            list.add(new SysDictData(w.getName(), w.getCode()));
+        }
+
+        return list;
+    }
+
+    /**
+     * AI璁惧绫诲瀷
+     * @return
+     */
+    public List<SysDictData> triggerAiSerType() {
+        List<SysDictData> list = new ArrayList<SysDictData>();
+        for (AiSerType w : AiSerType.values()) {
+            list.add(new SysDictData(w.getMsg(), w.getCode()));
+        }
+
+        return list;
+    }
+
+    /**
+     * 閫氶浠诲姟鐘舵��
+     * @return
+     */
+    public List<SysDictData> triggerVerbStatus() {
+        List<SysDictData> list = new ArrayList<SysDictData>();
+        list.add(new SysDictData("杩愯涓�", AreationConst.ARESTION_TASK_RUN));
+        list.add(new SysDictData("鍋滄", AreationConst.ARESTION_TASK_STOP));
+        list.add(new SysDictData("瓒呮椂鏃犳晥", AreationConst.ARESTION_TASK_NOUSE));
+
+        return list;
+    }
+
+    /**
+     * 閫氶妯″紡
+     * @return
+     */
+    public List<SysDictData> triggerAreationModel() {
+        List<SysDictData> list = new ArrayList<SysDictData>();
+        for (AreationModel w : AreationModel.values()) {
+            list.add(new SysDictData(w.getMsg(), w.getCode()));
+        }
+        return list;
+    }
+
+
+    /**
+     * 姘旇皟妯″紡
+     * @return
+     */
+    public List<SysDictData> triggerN2ModelTag() {
+        List<SysDictData> list = new ArrayList<SysDictData>();
+        for (N2ModelTag w : N2ModelTag.values()) {
+            list.add(new SysDictData(w.getMsg(), w.getCode()));
+        }
+        return list;
+    }
+
+}
diff --git a/igds-dzhwk-core/src/main/java/com/fzzy/igds/sys/GranaryService.java b/igds-dzhwk-core/src/main/java/com/fzzy/igds/sys/GranaryService.java
new file mode 100644
index 0000000..102c8b3
--- /dev/null
+++ b/igds-dzhwk-core/src/main/java/com/fzzy/igds/sys/GranaryService.java
@@ -0,0 +1,53 @@
+package com.fzzy.igds.sys;
+
+import com.fzzy.igds.dzhwk.domain.Granary;
+import com.fzzy.igds.sys.repository.GranaryRepository;
+import com.fzzy.igds.util.ContextUtil;
+import com.ruoyi.common.utils.StringUtils;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @Description
+ * @Author CZT
+ * @Date 2024/11/22 14:48
+ */
+@Slf4j
+@Service("sys.granaryService")
+public class GranaryService {
+
+    @Resource
+    private GranaryRepository granaryRepository;
+
+    public List<Granary> getGranary(String companyId, String deptId) {
+
+        if (StringUtils.isEmpty(companyId)) {
+            companyId = ContextUtil.getCompanyId();
+        }
+        if (StringUtils.isEmpty(deptId)) {
+            deptId = ContextUtil.subDeptId(null);
+        }
+        return granaryRepository.getGranary(companyId, deptId);
+    }
+
+    public void saveOrUpdate(Granary data) {
+        if (StringUtils.isEmpty(data.getCompanyId())) {
+            data.setCompanyId(ContextUtil.getCompanyId());
+        }
+        if (StringUtils.isEmpty(data.getDeptId())) {
+            data.setDeptId(ContextUtil.subDeptId(null));
+        }
+        data.setUpdateTime(new Date());
+        granaryRepository.save(data);
+    }
+
+    public String delData(Granary data) {
+        granaryRepository.delete(data);
+        return null;
+    }
+
+}
diff --git a/igds-dzhwk-core/src/main/java/com/fzzy/igds/sys/SysDeptService.java b/igds-dzhwk-core/src/main/java/com/fzzy/igds/sys/SysDeptService.java
new file mode 100644
index 0000000..e8e48be
--- /dev/null
+++ b/igds-dzhwk-core/src/main/java/com/fzzy/igds/sys/SysDeptService.java
@@ -0,0 +1,140 @@
+package com.fzzy.igds.sys;
+
+import com.fzzy.igds.dzhwk.constant.Constant;
+import com.fzzy.igds.dzhwk.constant.RedisConst;
+import com.fzzy.igds.util.ContextUtil;
+import com.ruoyi.common.core.domain.entity.SysDept;
+import com.ruoyi.common.core.domain.entity.SysUser;
+import com.ruoyi.common.core.redis.RedisCache;
+import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.system.mapper.SysUserMapper;
+import com.ruoyi.system.service.ISysDeptService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * @Description
+ * @Author CZT
+ * @Date 2024/11/22 18:03
+ */
+@Slf4j
+@Service("sys.sysDeptService")
+public class SysDeptService {
+
+    @Resource
+    private SysUserMapper userMapper;
+    @Resource
+    private ISysDeptService iSysDeptService;
+    @Resource
+    private RedisCache redisCache;
+
+    public void initUserDeptMap(String companyId) {
+        if(StringUtils.isEmpty(companyId)){
+            companyId = ContextUtil.getCompanyId();
+        }
+
+        SysUser sysUser = new SysUser();
+        sysUser.setCompanyId(companyId);
+        List<SysUser> list = userMapper.selectUserList(sysUser);
+        if (null == list || list.isEmpty()){
+            return;
+        }
+        for (SysUser userDept : list) {
+            ContextUtil.updateSubDept(userDept.getLoginName(), userDept.getDeptId().toString());
+        }
+    }
+
+    /**
+     * 鍒锋柊閮ㄩ棬鏋舵瀯淇℃伅鍒扮紦瀛�
+     * @param companyId
+     */
+    public List<SysDept> flushDeptCache(String companyId) {
+        if (StringUtils.isEmpty(companyId)) {
+            companyId = ContextUtil.getCompanyId();
+        }
+        SysDept sysDept = new SysDept();
+        sysDept.setCompanyId(companyId);
+        List<SysDept> listSysDept = iSysDeptService.selectDeptList(sysDept);
+
+        String key = RedisConst.buildKey(companyId, RedisConst.KEY_DEPT_LIST);
+
+        redisCache.setCacheObject(key, listSysDept);
+        return listSysDept;
+    }
+
+    /**
+     * 鏍规嵁缁勭粐缂栫爜鑾峰彇鎵�鏈夐儴闂ㄤ俊鎭�
+     * @param companyId
+     * @return
+     */
+    public List<SysDept> getCacheDept(String companyId) {
+        if (StringUtils.isEmpty(companyId)) {
+            companyId = ContextUtil.getCompanyId();
+        }
+        String key = RedisConst.buildKey(companyId, RedisConst.KEY_DEPT_LIST);
+
+        List<SysDept> listSysDept = redisCache.getCacheObject(key);
+        if(null == listSysDept){
+            listSysDept = flushDeptCache(companyId);
+        }
+        return listSysDept;
+    }
+
+    /**
+     * 缂撳瓨鑾峰彇缁勭粐涓嬫墍鏈夊簱鍖哄垪琛�
+     * @param companyId
+     */
+    public List<SysDept> getAllDeptByCompanyId(String companyId) {
+        List<SysDept> list = getCacheDept(companyId);
+        return list.stream()
+                .filter(item -> item.getType().equals(Constant.DEPT_TYPE_20))
+                .collect(Collectors.toList());
+    }
+
+    /**
+     * 鏍规嵁id鑾峰彇閮ㄩ棬淇℃伅
+     * @param companyId
+     * @param deptId
+     * @return
+     */
+    public SysDept getCacheDept(String companyId, String deptId) {
+        if (StringUtils.isEmpty(deptId)) {
+            return null;
+        }
+        List<SysDept> list = getCacheDept(companyId);
+
+        if (null == list || list.isEmpty()){
+            return null;
+        }
+
+        for (SysDept dept : list) {
+            if (deptId.equals(dept.getDeptId() + ""))
+                return dept;
+        }
+        return null;
+    }
+
+    /**
+     * 鏍规嵁绫诲瀷鑾峰彇閮ㄩ棬淇℃伅
+     * type: 10-鍏徃锛�20-搴撳尯锛�30-閮ㄩ棬
+     * @param type
+     * @return
+     */
+    public List<SysDept> getDeptByType(String type) {
+        if (StringUtils.isEmpty(type)) {
+            return null;
+        }
+        List<SysDept> list = getCacheDept(null);
+        if (null == list || list.isEmpty()) {
+            return null;
+        }
+        //鏍规嵁绫诲瀷鏌ヨ
+        return list.stream()
+                .filter(item -> type.equals(item.getType()))
+                .collect(Collectors.toList());
+    }
+}
diff --git a/igds-dzhwk-core/src/main/java/com/fzzy/igds/sys/SysUserService.java b/igds-dzhwk-core/src/main/java/com/fzzy/igds/sys/SysUserService.java
new file mode 100644
index 0000000..b95393b
--- /dev/null
+++ b/igds-dzhwk-core/src/main/java/com/fzzy/igds/sys/SysUserService.java
@@ -0,0 +1,47 @@
+package com.fzzy.igds.sys;
+
+import com.fzzy.igds.util.ContextUtil;
+import com.ruoyi.common.core.domain.entity.SysUser;
+import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.system.mapper.SysUserMapper;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+/**
+ * @Description
+ * @Author CZT
+ * @Date 2024/11/22 18:03
+ */
+@Slf4j
+@Service("sys.sysUserService")
+public class SysUserService {
+
+    @Resource
+    private SysUserMapper userMapper;
+
+    /**
+     * 鏍规嵁缁勭粐缂栫爜锛岃幏鍙栫敤鎴峰垪琛�
+     * @param companyId
+     * @return
+     */
+    public List<SysUser> getUser(String companyId) {
+        if(StringUtils.isEmpty(companyId)){
+            companyId = ContextUtil.getCompanyId();
+        }
+        SysUser sysUser = new SysUser();
+        sysUser.setCompanyId(companyId);
+        return userMapper.selectUserList(sysUser);
+    }
+
+    /**
+     * 鏍规嵁鐧诲綍鍚嶇О锛岃幏鍙栫敤鎴蜂俊鎭�
+     * @param loginName
+     * @return
+     */
+    public SysUser getUserByLoginName(String loginName) {
+        return userMapper.selectUserByLoginName(loginName);
+    }
+}
diff --git a/igds-dzhwk-core/src/main/java/com/fzzy/igds/sys/mapper/DicAreaMapper.java b/igds-dzhwk-core/src/main/java/com/fzzy/igds/sys/mapper/DicAreaMapper.java
new file mode 100644
index 0000000..017b5d6
--- /dev/null
+++ b/igds-dzhwk-core/src/main/java/com/fzzy/igds/sys/mapper/DicAreaMapper.java
@@ -0,0 +1,25 @@
+package com.fzzy.igds.sys.mapper;
+
+import com.fzzy.igds.dzhwk.data.BaseParam;
+import com.fzzy.igds.dzhwk.data.Page;
+import com.fzzy.igds.dzhwk.domain.DicArea;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+
+/**
+ * 瀛楀吀鐩稿叧鐨勬牳蹇冨鐞�
+ *
+ * @author jiazx
+ */
+public interface DicAreaMapper {
+
+    /**
+     * 鑾峰彇琛屾斂鍖哄煙
+     *
+     * @param param
+     * @return
+     */
+    List<DicArea> listDicArea(@Param("page") Page<DicArea> page, @Param("param") BaseParam param);
+}
diff --git a/igds-dzhwk-core/src/main/java/com/fzzy/igds/sys/repository/BuildingRepository.java b/igds-dzhwk-core/src/main/java/com/fzzy/igds/sys/repository/BuildingRepository.java
new file mode 100644
index 0000000..667c805
--- /dev/null
+++ b/igds-dzhwk-core/src/main/java/com/fzzy/igds/sys/repository/BuildingRepository.java
@@ -0,0 +1,37 @@
+package com.fzzy.igds.sys.repository;
+
+import com.fzzy.igds.dzhwk.domain.Building;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.data.repository.query.Param;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * @Description
+ * @Author CZT
+ * @Date 2024/11/20 18:33
+ */
+@Service
+public interface BuildingRepository extends JpaRepository<Building, String> {
+
+    /**
+     * 鏍规嵁缁勭粐缂栫爜鍜屽簱鍖虹紪鐮佽幏鍙栫郴缁熼厤缃俊鎭�
+     *
+     * @param companyId
+     * @param deptId
+     * @return
+     */
+    @Query("from Building where companyId =:companyId and deptId =:deptId order by id")
+    List<Building> getBuilding(@Param("companyId") String companyId, @Param("deptId") String deptId);
+
+    /**
+     * 鏍规嵁缁勭粐缂栫爜鑾峰彇绯荤粺閰嶇疆淇℃伅
+     *
+     * @param companyId
+     * @return
+     */
+    @Query("from Building where companyId =:companyId order by id")
+    List<Building> getBuilding(@Param("companyId") String companyId);
+}
diff --git a/igds-dzhwk-core/src/main/java/com/fzzy/igds/sys/repository/CompanyRepository.java b/igds-dzhwk-core/src/main/java/com/fzzy/igds/sys/repository/CompanyRepository.java
new file mode 100644
index 0000000..5c2b7ed
--- /dev/null
+++ b/igds-dzhwk-core/src/main/java/com/fzzy/igds/sys/repository/CompanyRepository.java
@@ -0,0 +1,36 @@
+package com.fzzy.igds.sys.repository;
+
+import com.fzzy.igds.dzhwk.domain.Company;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.data.repository.query.Param;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * @Description
+ * @Author CZT
+ * @Date 2024/11/28 14:59
+ */
+@Service
+public interface CompanyRepository extends JpaRepository<Company, String> {
+
+    /**
+     * 鏍规嵁id鑾峰彇淇℃伅
+     *
+     * @param id
+     * @return
+     */
+    @Query("from Company where id =:id order by id")
+    Company getDataById(@Param("id") String id);
+
+    /**
+     * 鏍规嵁companyId鑾峰彇淇℃伅
+     *
+     * @param companyId
+     * @return
+     */
+    @Query("from Company where companyId =:companyId order by id")
+    List<Company> getAllData(@Param("companyId") String companyId);
+}
diff --git a/igds-dzhwk-core/src/main/java/com/fzzy/igds/sys/repository/DepotRepository.java b/igds-dzhwk-core/src/main/java/com/fzzy/igds/sys/repository/DepotRepository.java
new file mode 100644
index 0000000..66279e9
--- /dev/null
+++ b/igds-dzhwk-core/src/main/java/com/fzzy/igds/sys/repository/DepotRepository.java
@@ -0,0 +1,68 @@
+package com.fzzy.igds.sys.repository;
+
+import com.fzzy.igds.dzhwk.domain.Depot;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.Modifying;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.data.repository.query.Param;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+
+/**
+ * @Description
+ * @Author CZT
+ * @Date 2024/11/22 16:59
+ */
+@Service("sys.depotRepository")
+public interface DepotRepository  extends JpaRepository<Depot, String> {
+
+    /**
+     * 鏍规嵁缁勭粐缂栫爜鑾峰彇浠撳簱璐т綅淇℃伅
+     *
+     * @param companyId
+     * @return
+     */
+    @Query("from Depot where companyId =:companyId order by orderNum")
+    List<Depot> getDepotByCompanyId(@Param("companyId") String companyId);
+
+    /**
+     * 鏍规嵁缁勭粐缂栫爜鍜屽簱鍖虹紪鐮佽幏鍙栦粨搴撹揣浣嶄俊鎭�
+     *
+     * @param companyId
+     * @param deptId
+     * @return
+     */
+    @Query("from Depot where companyId =:companyId and deptId =:deptId order by orderNum")
+    List<Depot> getDepot(@Param("companyId") String companyId, @Param("deptId") String deptId);
+
+    /**
+     * 鏍规嵁缁勭粐缂栫爜鍜屼粨搴撶紪鐮佽幏鍙栦粨搴撹揣浣嶄俊鎭�
+     * @param companyId
+     * @param id
+     * @return
+     */
+    @Query("from Depot where companyId =:companyId and id =:id")
+    Depot getDepotById(@Param("companyId") String companyId, @Param("id") String id);
+
+
+    /**
+     * 鏇存柊浠撳簱鐘舵��
+     * @param status
+     * @param depotId
+     */
+    @Transactional
+    @Modifying
+    @Query("update Depot set depotStatus =:status where id =:depotId")
+    void updateDepotStatus(@Param("status") String status, @Param("depotId") String depotId);
+
+    /**
+     * 鏍规嵁ids鑾峰彇浠撳簱
+     *
+     * @param list
+     * @return
+     */
+    @Query("from Depot where id IN :list order by orderNum")
+    List<Depot> getDepotByIds(@Param("list") List<String> list);
+}
diff --git a/igds-dzhwk-core/src/main/java/com/fzzy/igds/sys/repository/DepotStatusConfirmRepository.java b/igds-dzhwk-core/src/main/java/com/fzzy/igds/sys/repository/DepotStatusConfirmRepository.java
new file mode 100644
index 0000000..5424313
--- /dev/null
+++ b/igds-dzhwk-core/src/main/java/com/fzzy/igds/sys/repository/DepotStatusConfirmRepository.java
@@ -0,0 +1,28 @@
+package com.fzzy.igds.sys.repository;
+
+import com.fzzy.igds.dzhwk.domain.DepotStatusConfirm;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.data.repository.query.Param;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * @Description
+ * @Author CZT
+ * @Date 2024/11/23 10:59
+ */
+@Service
+public interface DepotStatusConfirmRepository extends JpaRepository<DepotStatusConfirm, String>, JpaSpecificationExecutor<DepotStatusConfirm> {
+
+    /**
+     * 鏍规嵁灏佷粨缂栧彿鑾峰彇淇℃伅
+     * @param fcqrdh
+     * @return
+     */
+    @Query("from DepotStatusConfirm where fcqrdh like:fcqrdh order by fcqrdh desc")
+    List<DepotStatusConfirm> getDataByFcqrdh(@Param("fcqrdh") String fcqrdh);
+
+}
diff --git a/igds-dzhwk-core/src/main/java/com/fzzy/igds/sys/repository/DepotStoreRepository.java b/igds-dzhwk-core/src/main/java/com/fzzy/igds/sys/repository/DepotStoreRepository.java
new file mode 100644
index 0000000..c14888a
--- /dev/null
+++ b/igds-dzhwk-core/src/main/java/com/fzzy/igds/sys/repository/DepotStoreRepository.java
@@ -0,0 +1,30 @@
+package com.fzzy.igds.sys.repository;
+
+import com.fzzy.igds.dzhwk.domain.DepotStore;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.data.repository.query.Param;
+import org.springframework.stereotype.Service;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @Description
+ * @Author CZT
+ * @Date 2024/11/23 10:59
+ */
+@Service
+public interface DepotStoreRepository extends JpaRepository<DepotStore, String>, JpaSpecificationExecutor<DepotStore> {
+
+    /**
+     * 鏍规嵁浠撳簱缂栫爜鑾峰彇鏈�鍚庝竴鏉℃暟鎹�
+     * @param depotId
+     * @param end
+     * @return
+     */
+    @Query("from DepotStore where depotId =:depotId and createDate <:end order by createDate desc")
+    List<DepotStore> getDataByDepotId(@Param("depotId") String depotId,@Param("end") Date end);
+
+}
diff --git a/igds-dzhwk-core/src/main/java/com/fzzy/igds/sys/repository/DeptRepository.java b/igds-dzhwk-core/src/main/java/com/fzzy/igds/sys/repository/DeptRepository.java
new file mode 100644
index 0000000..e08d0f5
--- /dev/null
+++ b/igds-dzhwk-core/src/main/java/com/fzzy/igds/sys/repository/DeptRepository.java
@@ -0,0 +1,36 @@
+package com.fzzy.igds.sys.repository;
+
+import com.fzzy.igds.dzhwk.domain.Dept;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.data.repository.query.Param;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * @Description
+ * @Author CZT
+ * @Date 2024/11/28 17:59
+ */
+@Service
+public interface DeptRepository extends JpaRepository<Dept, String> {
+
+    /**
+     * 鏍规嵁id鑾峰彇淇℃伅
+     *
+     * @param id
+     * @return
+     */
+    @Query("from Dept where id =:id order by id")
+    Dept getDataById(@Param("id") String id);
+
+    /**
+     * 鏍规嵁companyId鑾峰彇淇℃伅
+     *
+     * @param companyId
+     * @return
+     */
+    @Query("from Dept where companyId =:companyId order by id")
+    List<Dept> getAllData(@Param("companyId") String companyId);
+}
diff --git a/igds-dzhwk-core/src/main/java/com/fzzy/igds/sys/repository/DicAreaRepository.java b/igds-dzhwk-core/src/main/java/com/fzzy/igds/sys/repository/DicAreaRepository.java
new file mode 100644
index 0000000..b937b80
--- /dev/null
+++ b/igds-dzhwk-core/src/main/java/com/fzzy/igds/sys/repository/DicAreaRepository.java
@@ -0,0 +1,47 @@
+package com.fzzy.igds.sys.repository;
+
+import com.fzzy.igds.dzhwk.domain.DicArea;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.data.repository.query.Param;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * @Description
+ * @Author CZT
+ * @Date 2024/11/23 09:56
+ */
+@Service
+public interface DicAreaRepository extends JpaRepository<DicArea, String>, JpaSpecificationExecutor<DicArea> {
+
+    /**
+     * 鏍规嵁鐖剁紪鐮佹煡璇㈠尯鍩熶俊鎭�
+     *
+     * @param parentCode
+     * @return
+     */
+    @Query("from DicArea where parentCode =:parentCode order by code")
+    List<DicArea> getDicAreaByParentCode(@Param("parentCode") String parentCode);
+
+    /**
+     * 鏍规嵁鍚嶇О鑾峰彇鍖哄煙淇℃伅
+     *
+     * @param name
+     * @return
+     */
+    @Query("from DicArea where name =:name order by code")
+    DicArea listDicAreaByName(@Param("name") String name);
+
+    /**
+     * 鏍规嵁code鑾峰彇鍖哄煙淇℃伅
+     *
+     * @param code
+     * @return
+     */
+    @Query("from DicArea where code =:code order by code")
+    DicArea listDicAreaByCode(@Param("code") String code);
+
+}
diff --git a/igds-dzhwk-core/src/main/java/com/fzzy/igds/sys/repository/GranaryRepository.java b/igds-dzhwk-core/src/main/java/com/fzzy/igds/sys/repository/GranaryRepository.java
new file mode 100644
index 0000000..d96f3a3
--- /dev/null
+++ b/igds-dzhwk-core/src/main/java/com/fzzy/igds/sys/repository/GranaryRepository.java
@@ -0,0 +1,29 @@
+package com.fzzy.igds.sys.repository;
+
+import com.fzzy.igds.dzhwk.domain.Granary;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.data.repository.query.Param;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * @Description
+ * @Author CZT
+ * @Date 2024/11/22 14:33
+ */
+@Service
+public interface GranaryRepository extends JpaRepository<Granary, String> {
+
+    /**
+     * 鏍规嵁缁勭粐缂栫爜鍜屽簱鍖虹紪鐮佽幏鍙栧粧闂翠俊鎭�
+     *
+     * @param companyId
+     * @param deptId
+     * @return
+     */
+    @Query("from Granary where companyId =:companyId and deptId =:deptId order by ajdh")
+    List<Granary> getGranary(@Param("companyId") String companyId, @Param("deptId") String deptId);
+
+}
diff --git a/igds-dzhwk-core/src/main/java/com/fzzy/igds/util/ContextUtil.java b/igds-dzhwk-core/src/main/java/com/fzzy/igds/util/ContextUtil.java
new file mode 100644
index 0000000..81999fa
--- /dev/null
+++ b/igds-dzhwk-core/src/main/java/com/fzzy/igds/util/ContextUtil.java
@@ -0,0 +1,380 @@
+package com.fzzy.igds.util;
+
+import com.fzzy.igds.dzhwk.constant.Constant;
+import com.fzzy.igds.dzhwk.constant.GrainFrequence;
+import com.ruoyi.common.config.FrameworkConfig;
+import com.ruoyi.common.core.domain.entity.SysUser;
+import com.ruoyi.common.utils.ShiroUtils;
+import com.ruoyi.common.utils.StringUtils;
+import org.apache.commons.lang3.RandomUtils;
+import org.apache.commons.lang3.time.DateFormatUtils;
+
+import java.util.*;
+
+/**
+ * 绯荤粺鍏敤鏂规硶
+ *
+ * @author Andy
+ */
+public class ContextUtil {
+
+    public static Map<String ,Boolean> l = new HashMap<>();
+    //鍏ㄥ眬鐢ㄦ埛瀹炴椂鍧愬湪閮ㄩ棬
+    public static Map<String, String> contextUserDept = new HashMap<>();
+
+    /**
+     * 鍏ㄥ眬鐢ㄤ簬瀛樻斁SN涓庣粍缁囩紪鐮佺殑鍏崇郴锛屼緥濡傚垎鏈篠N鍜岀粍缁囩紪鐮佸叧绯�
+     */
+    public static Map<String, String> contextSnCompanyIdMap = new HashMap<>();
+
+
+    /**
+     * 鍏ㄥ眬鍛戒护ID
+     */
+    public static Map<String, Integer> contextOrderId = new HashMap<>();
+
+    /**
+     * UUID鐢熸垚瑙勫垯
+     *
+     * @return
+     */
+    public static String getUUID() {
+        return UUID.randomUUID().toString().replaceAll("-", "");
+    }
+
+    public static String getCurTimeMillis() {
+        return System.currentTimeMillis() + "";
+    }
+
+    public static String getTimeId() {
+        return DateFormatUtils.format(new Date(), "yyyyMMddHHmmss");
+    }
+
+    public static String getTimeId(int start, int end) {
+        return DateFormatUtils.format(new Date(), "yyyyMMddHHmmss") + RandomUtils.nextInt(start, end);
+    }
+
+    /**
+     * 鏍规嵁鍙傛暟鐢熸垚 鎵ц鍛戒护鐨勭紦瀛楰EY
+     *
+     * @param companyId
+     * @param serId
+     * @param bizType
+     * @return
+     */
+    public static final String buildExeOrderId(String companyId, String serId, String bizType) {
+        Integer start = contextOrderId.get("ORDER_ID") == null ? 5000 : contextOrderId.get("ORDER_ID");
+
+        contextOrderId.put("ORDER_ID", start + 1);
+
+        return start + "";
+    }
+
+    /**
+     * 璁惧ID鐢熸垚瑙勫垯
+     *
+     * @param companyId
+     * @param depotId
+     * @param passCode
+     * @return
+     */
+    public static final String buildDeviceId(String companyId, String depotId, int passCode) {
+        return companyId + "_" + depotId + "_" + passCode;
+    }
+
+    /**
+     * 璁惧ID鐢熸垚瑙勫垯
+     *
+     * @param companyId
+     * @param depotId
+     * @param passCode
+     * @return
+     */
+    public static final String buildDeviceId(String companyId, String depotId, String serId, int passCode) {
+        return companyId + depotId + serId + "_" + passCode;
+    }
+
+    /**
+     * 鏍规嵁淇℃伅鑾峰彇INFO琛ㄧ殑涓婚敭ID 鍦ㄧ伯鎯咃紝姘斾綋鍜岃櫕瀹充腑鍧囬渶瑕佸綋鍓嶆柟娉�
+     *
+     * @param companyId
+     * @param depotId
+     * @param batchId
+     * @return
+     */
+    public static String buildInfoId(String companyId, String depotId,
+                                     String batchId) {
+        return companyId + "_" + depotId + "_" + batchId;
+    }
+
+    public static String getDefaultBatchId() {
+        return DateFormatUtils.format(new Date(), "yyyyMMddHHmm");
+    }
+
+    /**
+     * 鏍规嵁绯荤粺閰嶇疆鐨勬壒娆¢鐜囪幏鍙栨壒娆$紪鍙�
+     *
+     * @param freq
+     * @return
+     */
+    public static String getBatchIdByFireq(String freq) {
+        // 涓�澶╀竴娆�
+        if (GrainFrequence.FREQ_02.getCode().equals(freq)) {
+            return DateFormatUtils.format(new Date(), "yyyyMMdd") + "1801";
+        }
+
+        // 涓�澶╀袱娆�
+        if (GrainFrequence.FREQ_03.getCode().equals(freq)) {
+            String hour = DateFormatUtils.format(new Date(), "HH");
+            if (Integer.valueOf(hour) >= 0 && Integer.valueOf(hour) <= 12) {
+                return DateFormatUtils.format(new Date(), "yyyyMMdd") + "1301";
+            } else {
+                return DateFormatUtils.format(new Date(), "yyyyMMdd") + "1802";
+            }
+        }
+        return getDefaultBatchId();
+    }
+
+    /**
+     * 鏍规嵁褰撳墠鐧婚檰浜鸿幏鍙栫粍缁囩紪鍙凤紝濡傛灉娌℃湁鐧婚檰浜鸿幏鍙栫郴缁熼粯璁ょ殑缁勭粐缂栧彿
+     *
+     * @return
+     */
+    public static String getCompanyId() {
+        SysUser user = ShiroUtils.getSysUser();
+        if (null != user) {
+            return user.getCompanyId();
+        } else {
+            return "Please login first!";
+        }
+    }
+
+    /**
+     * 鑾峰彇绯荤粺榛樿鐨�=companyId
+     *
+     * @return
+     */
+    public static String getDefaultCompanyId() {
+        SysUser user = ShiroUtils.getSysUser();
+        if (null != user) {
+            return user.getCompanyId();
+        } else {
+            return FrameworkConfig.getCompanyId();
+        }
+    }
+
+    /**
+     * 鑾峰彇鐧婚檰浜哄笎鍙�
+     *
+     * @return
+     */
+    public static String getLoginUserName() {
+        SysUser user = ShiroUtils.getSysUser();
+        return null == user ? "SYS" : user.getLoginName();
+    }
+
+    /**
+     * 鑾峰彇鐧婚檰浜轰腑鏂囧悕绉�
+     *
+     * @return
+     */
+    public static String getLoginUserCName() {
+        SysUser user = ShiroUtils.getSysUser();
+        return null == user ? "绯荤粺" : user.getUserName();
+    }
+
+    public static SysUser getLoginUser() {
+        return ShiroUtils.getSysUser();
+    }
+
+    /**
+     * 鏈�楂樼殑缂栫爜涓猴細缁勭粐缂栫爜锛岀劧鍚庨�愮骇寰�涓嬶紝濡傦細5013,5013_001,5013_002,5013_001_001
+     *
+     * @param companyId 蹇呴』
+     * @param parentId  鍙┖
+     * @param endId     鍙┖
+     * @param format    蹇呴』 涓変綅浼�1000锛屽洓浣嶄紶10000
+     * @return
+     */
+    public static String getNextId(String companyId, String parentId,
+                                   String endId, int format) {
+        if (parentId == null || Constant.DEFAULT_PARENT_CODE.equals(parentId)) {
+            return companyId;
+        }
+        try {
+            int endNum = 0;
+            if (StringUtils.isNotEmpty(endId)) {
+                endNum = Integer.valueOf(endId.substring(endId.length() - 3));
+            }
+            String endStr = ("" + (endNum + format + 1)).substring(1);
+
+            if (parentId.equals(companyId)) {
+                return companyId + "_" + endStr;
+            }
+            parentId = parentId.substring(parentId.lastIndexOf("_") + 1);
+            return companyId + "_" + parentId + "_" + endStr;
+
+        } catch (Exception e) {
+            e.printStackTrace();
+            return null;
+        }
+    }
+
+    /**
+     * 鑾峰彇浠撳簱缂栫爜  鏍煎紡锛�
+     *
+     * @param deptId 5102_001_001  5102_001_002
+     *               蹇呴』 鍒嗗簱缂栫爜
+     * @param endId  蹇呴』 鏈�鍚庣殑浠撳簱缂栫爜
+     * @param format 蹇呴』 涓変綅浼�1000锛屽洓浣嶄紶10000锛岄粯璁ら兘浼�1000
+     * @return
+     */
+    public static String getNextDepotId(String deptId, String endId, int format) {
+        try {
+            int endNum = 0;
+            if (StringUtils.isNotEmpty(endId)) {
+                endNum = Integer.valueOf(endId.substring(endId.length() - 3));
+            }
+            String endStr = ("" + (endNum + format + 1)).substring(1);
+
+            endStr = deptId.substring(deptId.indexOf("_") + 1) + "_" + endStr;
+
+            return endStr.replaceAll("_", "");
+        } catch (Exception e) {
+            e.printStackTrace();
+            return null;
+        }
+    }
+
+    /**
+     * 鐢熸垚TCP杩炴帴鐨凨EY
+     *
+     * @param ip
+     * @param port
+     * @return
+     */
+    public static String getServerKey(String ip, Integer port) {
+        return ip + ":" + port;
+    }
+
+    /**
+     * 鏍规嵁褰撳墠鐧诲綍浜鸿幏鍙栵紝鑾峰彇浜岀骇閮ㄩ棬ID锛屽綋鍓嶄汉鎵�鍦ㄩ儴闂ㄧ殑浜岀骇灏辨槸 鍒嗗簱ID
+     *
+     * @param user
+     * @return
+     */
+    public static String subDeptId(SysUser user) {
+        if (null == user) {
+            user = getLoginUser();
+        }
+
+        if (null == user) {
+            return getDefaultCompanyId() + "001";
+        }
+
+        //浠庡叏灞�鑾峰彇锛屽鏋滄湁鍒欏彇鍏ㄥ眬鐨勯粯璁わ紝濡傛灉娌℃湁鍒欏彇鑷繁鎵�灞�
+        if (null != contextUserDept.get(user.getLoginName())) {
+            return contextUserDept.get(user.getLoginName());
+        }
+
+        if (null == user.getDeptId()) {
+            return user.getCompanyId();
+        }
+        return user.getDeptId().toString();
+    }
+
+    public static void updateSubDept(String userId, String deptId) {
+        if (null == deptId) return;
+        contextUserDept.put(userId, deptId);
+    }
+
+    /**
+     * 楠岃瘉 褰撳墠浜烘槸鍚﹀湪涓婚儴闂紝鍗冲綋鍓嶄汉鎵�灞為儴闂ㄩ粯璁ゅ湪鏈�楂橀儴闂�
+     *
+     * @param user
+     * @return
+     */
+    public static boolean isMainDept(SysUser user) {
+        if (null == user) {
+            user = getLoginUser();
+        }
+        if (null == user){
+            return false;
+        }
+        if (user.getDeptId().equals(user.getCompanyId())) {
+            return true;
+        }
+        if (user.getDeptId()>1000000) {
+            return true;
+        }
+
+        return false;
+    }
+
+
+    /**
+     * 瀛樻斁SN涓庢墍灞炵粍缁囩殑鍏崇郴
+     *
+     * @param sn
+     * @param companyId
+     */
+    public static void addSerCompany(String sn, String companyId) {
+        contextSnCompanyIdMap.put(sn, companyId);
+    }
+
+    /**
+     * 閫氳繃SN鑾峰彇褰撳墠SN鎵�灞炵殑缁勭粐
+     *
+     * @param sn
+     * @return
+     */
+    public static String getCompanyIdBySn(String sn) {
+        return contextSnCompanyIdMap.get(sn);
+    }
+
+
+    public static String buildDeviceStatusKey(String companyId, String serId, String passCode) {
+        if (null == passCode) passCode = "NULL";
+        return companyId + "_" + serId + "_STATUS_" + passCode;
+    }
+
+    public static String buildDeviceStatusKey(String companyId, String serId, int passCode) {
+        return companyId + "_" + serId + "_STATUS_" + passCode;
+    }
+
+    public static <K extends Comparable<? super K>, V> Map<K, V> sortByKey(Map<K, V> map) {
+        Map<K, V> result = new LinkedHashMap<>();
+
+        map.entrySet().stream()
+                .sorted(Map.Entry.<K, V>comparingByKey()).forEachOrdered(e -> result.put(e.getKey(), e.getValue()));
+        return result;
+
+    }
+
+    /**
+     * 鑾峰彇椤哄簭鍙�
+     * @param oldOrderId 鍘熸湁椤哄簭鍙�
+     * @param num 浣嶆暟
+     * @return
+     */
+    public static String getOrderId(String oldOrderId, Integer num) {
+        Integer index3 = 1001;
+        Integer index4 = 10001;
+        Integer index5 = 100001;
+        Integer index = 0;
+        String orderId = "001";
+        if(StringUtils.isNotEmpty(oldOrderId)){
+            index = Integer.valueOf(oldOrderId);
+        }
+        if(3 == num){
+            orderId = ((index3 + index) + "").substring(1);
+        }
+        if(4 == num){
+            orderId = ((index4 + index) + "").substring(1);
+        }
+        if(5 == num){
+            orderId = ((index5 + index) + "").substring(1);
+        }
+        return orderId;
+    }
+}
diff --git a/igds-dzhwk-core/src/main/java/com/fzzy/igds/util/WeatherUtil.java b/igds-dzhwk-core/src/main/java/com/fzzy/igds/util/WeatherUtil.java
new file mode 100644
index 0000000..88c36ac
--- /dev/null
+++ b/igds-dzhwk-core/src/main/java/com/fzzy/igds/util/WeatherUtil.java
@@ -0,0 +1,52 @@
+package com.fzzy.igds.util;
+
+import org.apache.commons.lang3.time.DateFormatUtils;
+
+import java.util.Date;
+
+/**
+ * 甯搁噺瀹氫箟
+ *
+ * @author: andy.jia
+ * @description:
+ * @version:
+ * @data:2020骞�2鏈�19鏃�
+ */
+public class WeatherUtil {
+
+    public static final String SOURCE_01 = "01";
+    public static final String SOURCE_02 = "02";
+
+    /**
+     * 鍒涘缓姘旇薄淇℃伅鐨勪富閿�
+     * <p>
+     * 缁勭粐缂栫爜+ yyyyMMddHHmm
+     *
+     * @return
+     */
+    public static String buildWeatherId(String deptId, Date updateTime) {
+        if (null == updateTime)
+            updateTime = new Date();
+        return deptId + "-" + DateFormatUtils.format(updateTime, "yyyyMMddHHmm");
+    }
+
+    /**
+     * 鍒ゆ柇褰撳墠姘旇薄淇℃伅鏄惁闇�瑕佹寔涔呭寲锛岄粯璁ょ郴缁熷彧淇濆瓨鍦ㄤ笂鍗�8鐐� 鍜屼笅鍗�3鐐圭殑姘旇薄淇°��
+     *
+     * @param updateTime
+     * @return
+     */
+    public static boolean isSave(Date updateTime) {
+
+        String tag = DateFormatUtils.format(updateTime, "HHmm");
+        String tag1 = "0800";
+        String tag2 = "1500";
+
+        if (tag.equals(tag1) || tag.equals(tag2)) {
+            return true;
+        }
+
+        return false;
+    }
+
+}
diff --git a/igds-dzhwk-core/src/main/resources/mapper/DicAreaMapper.xml b/igds-dzhwk-core/src/main/resources/mapper/DicAreaMapper.xml
new file mode 100644
index 0000000..65a2a5f
--- /dev/null
+++ b/igds-dzhwk-core/src/main/resources/mapper/DicAreaMapper.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+
+<mapper namespace="com.fzzy.igds.sys.mapper.DicAreaMapper">
+
+	<!-- 鑾峰彇鍖哄煙鍒楄〃 -->
+	<select id="listDicArea" resultType="com.fzzy.igds.dzhwk.domain.DicArea"
+			parameterType="com.fzzy.igds.dzhwk.data.BaseParam">
+		select
+		CODE_ as code,
+		NAME_ as name,
+		TYPE_ as type,
+		SIMPLE_ as simple
+		from D_DIC_AREA
+		<where>
+			<if test="param.key != null">AND (NAME_ like "%"#{param.key}"%" OR SIMPLE_ like "%"#{param.key}"%" )</if>
+		</where>
+		order by CODE_
+	</select>
+
+</mapper>
\ No newline at end of file
diff --git a/igds-dzhwk-view/src/main/java/com/fzzy/igds/sys/Building.view.xml b/igds-dzhwk-view/src/main/java/com/fzzy/igds/sys/Building.view.xml
new file mode 100644
index 0000000..54c09f2
--- /dev/null
+++ b/igds-dzhwk-view/src/main/java/com/fzzy/igds/sys/Building.view.xml
@@ -0,0 +1,503 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ViewConfig>
+  <Arguments/>
+  <Context/>
+  <Model>
+    <DataType name="dtMain">
+      <Property name="creationType">com.fzzy.igds.dzhwk.domain.Building</Property>
+      <PropertyDef name="id">
+        <Property></Property>
+        <Property name="label">浠撴埧缂栫爜</Property>
+      </PropertyDef>
+      <PropertyDef name="companyId">
+        <Property></Property>
+        <Property name="label">缁勭粐缂栫爜</Property>
+      </PropertyDef>
+      <PropertyDef name="deptId">
+        <Property></Property>
+        <Property name="label">鎵�灞炲簱鐐�</Property>
+        <Property name="mapping">
+          <Property name="mapValues">${dorado.getDataProvider(&quot;deptPR#loadParents&quot;).getResult()}</Property>
+          <Property name="keyProperty">deptId</Property>
+          <Property name="valueProperty">deptName</Property>
+        </Property>
+        <Property name="required">true</Property>
+      </PropertyDef>
+      <PropertyDef name="name">
+        <Property></Property>
+        <Property name="label">浠撴埧鍚嶇О</Property>
+      </PropertyDef>
+      <PropertyDef name="storage">
+        <Property name="dataType">Double</Property>
+        <Property name="label">璁捐鍌ㄩ噺</Property>
+        <Property name="displayFormat">#0.000 鍚�</Property>
+      </PropertyDef>
+      <PropertyDef name="userDate">
+        <Property name="dataType">Date</Property>
+        <Property name="label">浣跨敤鏃ユ湡</Property>
+      </PropertyDef>
+      <PropertyDef name="height">
+        <Property name="dataType">Double</Property>
+        <Property name="label">浠撴埧楂樺害</Property>
+        <Property name="displayFormat">#0.00 绫�</Property>
+      </PropertyDef>
+      <PropertyDef name="length">
+        <Property name="dataType">Double</Property>
+        <Property name="label">浠撴埧闀垮害</Property>
+        <Property name="displayFormat">#0.00 绫�</Property>
+      </PropertyDef>
+      <PropertyDef name="width">
+        <Property name="dataType">Double</Property>
+        <Property name="label">浠撴埧瀹藉害</Property>
+        <Property name="displayFormat">#0.00 绫�</Property>
+      </PropertyDef>
+      <PropertyDef name="diameter">
+        <Property name="dataType">Double</Property>
+        <Property name="label">绛掍粨鐩村緞</Property>
+        <Property name="displayFormat">#0.00 绫�</Property>
+      </PropertyDef>
+      <PropertyDef name="volume">
+        <Property name="dataType">Double</Property>
+        <Property name="label">绛掍粨浣撶Н</Property>
+        <Property name="displayFormat">#0.00 绔嬫柟绫�</Property>
+      </PropertyDef>
+      <PropertyDef name="deVolume">
+        <Property name="dataType">Double</Property>
+        <Property name="label">鎵i櫎浣撶Н</Property>
+        <Property name="displayFormat">#0.00 绔嬫柟绫�</Property>
+      </PropertyDef>
+      <PropertyDef name="doorNum">
+        <Property name="dataType">Integer</Property>
+        <Property name="label">浠撻棬鏁�</Property>
+        <Property name="displayFormat">#0 涓�</Property>
+      </PropertyDef>
+      <PropertyDef name="ground">
+        <Property></Property>
+        <Property name="label">鍦伴潰缁撴瀯</Property>
+        <Property name="mapping">
+          <Property name="keyProperty">key</Property>
+          <Property name="valueProperty">value</Property>
+          <Property name="mapValues">
+            <Collection>
+              <Entity>
+                <Property name="key">01</Property>
+                <Property name="value">01-娣峰嚌鍦熷湴闈�</Property>
+              </Entity>
+              <Entity>
+                <Property name="key">02</Property>
+                <Property name="value">02-閾虹爾鍦伴潰</Property>
+              </Entity>
+              <Entity>
+                <Property name="key">03</Property>
+                <Property name="value">03-姘存偿鐮傛祮鍦伴潰</Property>
+              </Entity>
+              <Entity>
+                <Property name="key">04</Property>
+                <Property name="value">04-閽㈢瓔娣峰嚌鍦熸ゼ鏉垮紡鍦伴潰</Property>
+              </Entity>
+              <Entity>
+                <Property name="key">05</Property>
+                <Property name="value">05-涓存椂鍦板潽</Property>
+              </Entity>
+              <Entity>
+                <Property name="key">06</Property>
+                <Property name="value">06-鍏跺畠</Property>
+              </Entity>
+              <Entity>
+                <Property name="key">07</Property>
+                <Property name="value">07-閽㈢瓔娣峰嚌鍦熷湴闈�</Property>
+              </Entity>
+            </Collection>
+          </Property>
+        </Property>
+      </PropertyDef>
+      <PropertyDef name="wall">
+        <Property></Property>
+        <Property name="label">澧欎綋缁撴瀯</Property>
+        <Property name="mapping">
+          <Property name="keyProperty">key</Property>
+          <Property name="valueProperty">value</Property>
+          <Property name="mapValues">
+            <Collection>
+              <Entity>
+                <Property name="key">01</Property>
+                <Property name="value">01-閽㈢瓔鐮�</Property>
+              </Entity>
+              <Entity>
+                <Property name="key">02</Property>
+                <Property name="value">02-鐮栨贩</Property>
+              </Entity>
+              <Entity>
+                <Property name="key">03</Property>
+                <Property name="value">03-閽㈢粨鏋�</Property>
+              </Entity>
+              <Entity>
+                <Property name="key">04</Property>
+                <Property name="value">04-鐮�</Property>
+              </Entity>
+              <Entity>
+                <Property name="key">99</Property>
+                <Property name="value">99-鍏朵粬</Property>
+              </Entity>
+            </Collection>
+          </Property>
+        </Property>
+      </PropertyDef>
+      <PropertyDef name="roof">
+        <Property></Property>
+        <Property name="label">灞嬮《缁撴瀯</Property>
+        <Property name="mapping">
+          <Property name="keyProperty">key</Property>
+          <Property name="valueProperty">value</Property>
+          <Property name="mapValues">
+            <Collection>
+              <Entity>
+                <Property name="key">01</Property>
+                <Property name="value">01-澶у瀷灞嬮潰鏉�</Property>
+              </Entity>
+              <Entity>
+                <Property name="key">02</Property>
+                <Property name="value">02-鐜版祰閽㈢瓔鐮兼澘</Property>
+              </Entity>
+              <Entity>
+                <Property name="key">03</Property>
+                <Property name="value">03-澶嶅悎淇濇俯閽㈡澘锛堝す鑺澘锛�</Property>
+              </Entity>
+              <Entity>
+                <Property name="key">04</Property>
+                <Property name="value">04-棰勫簲鍔涚牸鍙孴鏉�</Property>
+              </Entity>
+              <Entity>
+                <Property name="key">05</Property>
+                <Property name="value">05-褰╅挗鏉�</Property>
+              </Entity>
+              <Entity>
+                <Property name="key">06</Property>
+                <Property name="value">06-鍏跺畠</Property>
+              </Entity>
+              <Entity>
+                <Property name="key">07</Property>
+                <Property name="value">07-閽㈡鏋惰交鍨嬪鍚堟澘</Property>
+              </Entity>
+            </Collection>
+          </Property>
+        </Property>
+      </PropertyDef>
+      <PropertyDef name="roofTruss">
+        <Property></Property>
+        <Property name="label">灞嬫灦缁撴瀯</Property>
+        <Property name="mapping">
+          <Property name="keyProperty">key</Property>
+          <Property name="valueProperty">value</Property>
+          <Property name="mapValues">
+            <Collection>
+              <Entity>
+                <Property name="key">01</Property>
+                <Property name="value">01-棰勫簲鍔涚牸鎶樼嚎褰㈠眿鏋�</Property>
+              </Entity>
+              <Entity>
+                <Property name="key">02</Property>
+                <Property name="value">02-閽㈢瓔鐮兼嫳鏉�</Property>
+              </Entity>
+              <Entity>
+                <Property name="key">03</Property>
+                <Property name="value">03-閽㈡灦</Property>
+              </Entity>
+              <Entity>
+                <Property name="key">04</Property>
+                <Property name="value">04-鏈ㄥ眿鏋�</Property>
+              </Entity>
+              <Entity>
+                <Property name="key">05</Property>
+                <Property name="value">05-閽㈢粨鏋勯棬寮忓垰鏋�</Property>
+              </Entity>
+              <Entity>
+                <Property name="key">06</Property>
+                <Property name="value">06-棰勫簲鍔涚牸鍙孴鏉�</Property>
+              </Entity>
+              <Entity>
+                <Property name="key">07</Property>
+                <Property name="value">07-閽㈢瓔鐮奸棬寮忓垰鏋�</Property>
+              </Entity>
+              <Entity>
+                <Property name="key">08</Property>
+                <Property name="value">08-鍏朵粬</Property>
+              </Entity>
+            </Collection>
+          </Property>
+        </Property>
+      </PropertyDef>
+      <PropertyDef name="createDate">
+        <Property name="dataType">Date</Property>
+        <Property name="label">寤洪�犳棩鏈�</Property>
+      </PropertyDef>
+      <PropertyDef name="lon">
+        <Property name="dataType">Double</Property>
+        <Property name="label">缁忓害</Property>
+      </PropertyDef>
+      <PropertyDef name="lat">
+        <Property name="dataType">Double</Property>
+        <Property name="label">绾害</Property>
+      </PropertyDef>
+      <PropertyDef name="updateTime">
+        <Property name="dataType">Date</Property>
+        <Property name="label">鏇存柊鏃堕棿</Property>
+      </PropertyDef>
+    </DataType>
+  </Model>
+  <View layout="regionPadding:10">
+    <Property name="packages">font-awesome,css-common</Property>
+    <DataSet id="dsMain">
+      <Property name="dataProvider">buildingPR#loadData</Property>
+      <Property name="dataType">[dtMain]</Property>
+    </DataSet>
+    <Container layout="regionPadding:10" layoutConstraint="top">
+      <Property name="exClassName">bg-color</Property>
+      <Property name="height">55</Property>
+      <Property name="contentOverflow">hidden</Property>
+      <Label layoutConstraint="left">
+        <Property name="text">鑿滃崟鏍忥細</Property>
+      </Label>
+      <Button layoutConstraint="left">
+        <ClientEvent name="onClick">view.get(&quot;#dsMain&quot;).insert();&#xD;
+          view.get(&quot;#dialogMain&quot;).show();</ClientEvent>
+        <Property name="caption">鏂板</Property>
+        <Property name="exClassName">btn1</Property>
+        <Property name="iconClass">fa fa-plus</Property>
+      </Button>
+      <Button layoutConstraint="left">
+        <ClientEvent name="onClick">&#xD;
+var select = view.get(&quot;#dgMain&quot;).get(&quot;selection&quot;);&#xD;
+if(select){&#xD;
+    view.get(&quot;#dialogMain&quot;).show();;&#xD;
+}else{&#xD;
+    $notify(&quot;璇烽�夋嫨闇�瑕佷慨鏀圭殑鏁版嵁鈥︹��&quot;);&#xD;
+}	</ClientEvent>
+        <Property name="caption">缂栬緫</Property>
+        <Property name="exClassName">btn2</Property>
+        <Property name="iconClass">fa fa-pencil</Property>
+      </Button>
+      <Button layoutConstraint="left">
+        <ClientEvent name="onClick">  &#xD;
+var select = view.get(&quot;#dgMain&quot;).get(&quot;selection&quot;);&#xD;
+if(select){&#xD;
+    view.get(&quot;#ajaxDel&quot;).set(&quot;parameter&quot;,select).execute(function(){&#xD;
+		select.remove();&#xD;
+	});&#xD;
+}else{&#xD;
+    $notify(&quot;璇烽�夋嫨闇�瑕佸垹闄ょ殑鏁版嵁鈥︹��&quot;);&#xD;
+}&#xD;
+</ClientEvent>
+        <Property name="caption">鍒犻櫎</Property>
+        <Property name="exClassName">btn3</Property>
+        <Property name="iconClass">fa fa-trash-o</Property>
+      </Button>
+    </Container>
+    <Container layout="regionPadding:10" layoutConstraint="center">
+      <Property name="exClassName">bg-color</Property>
+      <DataGrid id="dgMain">
+        <ClientEvent name="onDataRowDoubleClick">var dialog= view.get(&quot;#dialogMain&quot;);&#xD;
+          dialog.show();</ClientEvent>
+        <Property name="dataSet">dsMain</Property>
+        <Property name="readOnly">true</Property>
+        <Property name="selectionMode">singleRow</Property>
+        <RowSelectorColumn/>
+        <RowNumColumn/>
+        <DataColumn name="name">
+          <Property name="property">name</Property>
+          <Property name="align">center</Property>
+        </DataColumn>
+        <DataColumn name="deptId">
+          <Property name="property">deptId</Property>
+          <Property name="align">center</Property>
+        </DataColumn>
+        <DataColumn name="storage">
+          <Property name="property">storage</Property>
+          <Property name="align">center</Property>
+        </DataColumn>
+        <DataColumn name="length">
+          <Property name="property">length</Property>
+          <Property name="align">center</Property>
+        </DataColumn>
+        <DataColumn name="width">
+          <Property name="property">width</Property>
+          <Property name="align">center</Property>
+        </DataColumn>
+        <DataColumn name="height">
+          <Property name="property">height</Property>
+          <Property name="align">center</Property>
+        </DataColumn>
+        <DataColumn name="diameter">
+          <Property name="property">diameter</Property>
+          <Property name="align">center</Property>
+        </DataColumn>
+        <DataColumn name="createDate">
+          <Property name="property">createDate</Property>
+          <Property name="align">center</Property>
+        </DataColumn>
+        <DataColumn name="userDate">
+          <Property name="property">userDate</Property>
+          <Property name="align">center</Property>
+        </DataColumn>
+        <DataColumn name="updateTime">
+          <Property name="property">updateTime</Property>
+          <Property name="align">center</Property>
+        </DataColumn>
+      </DataGrid>
+    </Container>
+    <Dialog id="dialogMain">
+      <Property name="closeable">false</Property>
+      <Property name="caption">浠撴埧淇℃伅</Property>
+      <Property name="width">60%</Property>
+      <Property name="iconClass">fa fa-tasks</Property>
+      <Buttons>
+        <Button id="btnOk">
+          <ClientEvent name="onClick">view.get(&quot;#uaSave&quot;).execute(function(result){&#xD;
+            if(result){&#xD;
+            $alert(result);&#xD;
+            }else{&#xD;
+            $notify(&quot;淇濆瓨鎴愬姛锛侊紒&quot;);&#xD;
+            view.get(&quot;#dialogMain&quot;).hide();&#xD;
+            }&#xD;
+            });</ClientEvent>
+          <Property name="caption">纭畾</Property>
+          <Property name="exClassName">btn1</Property>
+          <Property name="iconClass">fa fa-check</Property>
+        </Button>
+        <Button>
+          <ClientEvent name="onClick">view.get(&quot;#dsMain.data:#&quot;).cancel();&#xD;
+            self.get(&quot;parent&quot;).hide();</ClientEvent>
+          <Property name="caption">鍙栨秷</Property>
+          <Property name="exClassName">btn3</Property>
+          <Property name="iconClass">fa fa-times</Property>
+        </Button>
+      </Buttons>
+      <Children>
+        <AutoForm>
+          <Property name="dataSet">dsMain</Property>
+          <Property name="cols">*,*</Property>
+          <Property name="labelAlign">right</Property>
+          <Property name="labelSeparator">锛�</Property>
+          <Property name="labelWidth">150</Property>
+          <AutoFormElement>
+            <Property name="name">id</Property>
+            <Property name="property">id</Property>
+            <Editor/>
+          </AutoFormElement>
+          <AutoFormElement>
+            <Property name="name">deptId</Property>
+            <Property name="property">deptId</Property>
+            <Editor/>
+          </AutoFormElement>
+          <AutoFormElement>
+            <Property name="name">name</Property>
+            <Property name="property">name</Property>
+            <Editor/>
+          </AutoFormElement>
+          <AutoFormElement>
+            <Property name="name">storage</Property>
+            <Property name="property">storage</Property>
+            <Editor/>
+          </AutoFormElement>
+          <AutoFormElement>
+            <Property name="name">length</Property>
+            <Property name="property">length</Property>
+            <Editor/>
+          </AutoFormElement>
+          <AutoFormElement>
+            <Property name="name">width</Property>
+            <Property name="property">width</Property>
+            <Editor/>
+          </AutoFormElement>
+          <AutoFormElement>
+            <Property name="name">height</Property>
+            <Property name="property">height</Property>
+            <Editor/>
+          </AutoFormElement>
+          <AutoFormElement>
+            <Property name="name">diameter</Property>
+            <Property name="property">diameter</Property>
+            <Editor/>
+          </AutoFormElement>
+          <AutoFormElement>
+            <Property name="name">volume</Property>
+            <Property name="property">volume</Property>
+            <Editor/>
+          </AutoFormElement>
+          <AutoFormElement>
+            <Property name="name">doorNum</Property>
+            <Property name="property">doorNum</Property>
+            <Editor/>
+          </AutoFormElement>
+          <AutoFormElement>
+            <Property name="name">ground</Property>
+            <Property name="property">ground</Property>
+            <Editor/>
+          </AutoFormElement>
+          <AutoFormElement>
+            <Property name="name">wall</Property>
+            <Property name="property">wall</Property>
+            <Editor/>
+          </AutoFormElement>
+          <AutoFormElement>
+            <Property name="name">roof</Property>
+            <Property name="property">roof</Property>
+            <Editor/>
+          </AutoFormElement>
+          <AutoFormElement>
+            <Property name="name">roofTruss</Property>
+            <Property name="property">roofTruss</Property>
+            <Editor/>
+          </AutoFormElement>
+          <AutoFormElement>
+            <Property name="name">createDate</Property>
+            <Property name="property">createDate</Property>
+            <Editor/>
+          </AutoFormElement>
+          <AutoFormElement>
+            <Property name="name">userDate</Property>
+            <Property name="property">userDate</Property>
+            <Editor/>
+          </AutoFormElement>
+          <AutoFormElement>
+            <Property name="name">lon</Property>
+            <Property name="property">lon</Property>
+            <Editor/>
+          </AutoFormElement>
+          <AutoFormElement>
+            <Property name="name">lat</Property>
+            <Property name="property">lat</Property>
+            <Editor/>
+          </AutoFormElement>
+          <AutoFormElement>
+            <Property name="name">deVolume</Property>
+            <Property name="property">deVolume</Property>
+            <Editor/>
+          </AutoFormElement>
+          <Link>
+            <Property name="href">http://api.map.baidu.com/lbsapi/getpoint/</Property>
+            <Property name="target">_blank</Property>
+            <Property name="style">
+              <Property name="padding-left">150px</Property>
+            </Property>
+            <Property name="text">甯姪锛氱偣鍑诲潗鏍囦綅缃嬀鍙�</Property>
+          </Link>
+        </AutoForm>
+      </Children>
+      <Tools/>
+    </Dialog>
+    <UpdateAction id="uaSave">
+      <Property name="dataResolver">buildingPR#saveData</Property>
+      <Property name="successMessage">鏁版嵁淇濆瓨瀹屾垚锛�</Property>
+      <UpdateItem>
+        <Property name="dataSet">dsMain</Property>
+        <Property name="dataPath">[#current]</Property>
+        <Property name="validateData">false</Property>
+      </UpdateItem>
+    </UpdateAction>
+    <AjaxAction id="ajaxDel">
+      <Property name="service">buildingPR#delData</Property>
+      <Property name="confirmMessage">纭畾瑕佹墽琛屽垹闄や箞锛�</Property>
+    </AjaxAction>
+  </View>
+</ViewConfig>
diff --git a/igds-dzhwk-view/src/main/java/com/fzzy/igds/sys/Company.view.xml b/igds-dzhwk-view/src/main/java/com/fzzy/igds/sys/Company.view.xml
new file mode 100644
index 0000000..4de6ea9
--- /dev/null
+++ b/igds-dzhwk-view/src/main/java/com/fzzy/igds/sys/Company.view.xml
@@ -0,0 +1,607 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ViewConfig>
+  <Arguments/>
+  <Context/>
+  <Model>
+    <DataType name="dtMain">
+      <Property name="creationType">com.fzzy.igds.dzhwk.domain.Company</Property>
+      <PropertyDef name="id">
+        <Property></Property>
+        <Property name="label">ID</Property>
+      </PropertyDef>
+      <PropertyDef name="companyId">
+        <Property></Property>
+        <Property name="label">绯荤粺缁勭粐缂栫爜</Property>
+      </PropertyDef>
+      <PropertyDef name="dwdm">
+        <Property></Property>
+        <Property name="label">鍗曚綅淇$敤鐮�</Property>
+        <Property name="required">true</Property>
+      </PropertyDef>
+      <PropertyDef name="tydwbm">
+        <Property></Property>
+        <Property name="label">缁熶竴鍗曚綅缂栫爜</Property>
+      </PropertyDef>
+      <PropertyDef name="dwmc">
+        <Property></Property>
+        <Property name="label">鍗曚綅鍚嶇О</Property>
+        <Property name="required">true</Property>
+      </PropertyDef>
+      <PropertyDef name="dwlx">
+        <Property></Property>
+        <Property name="label">鍗曚綅绫诲瀷</Property>
+        <Property name="mapping">
+          <Property name="keyProperty">key</Property>
+          <Property name="valueProperty">value</Property>
+          <Property name="mapValues">
+            <Collection>
+              <Entity>
+                <Property name="key">1</Property>
+                <Property name="value">1-绮浠撳偍浼佷笟</Property>
+              </Entity>
+              <Entity>
+                <Property name="key">11</Property>
+                <Property name="value">11-涓ぎ鐩村睘鍌ㄥ绮簱</Property>
+              </Entity>
+              <Entity>
+                <Property name="key">12</Property>
+                <Property name="value">12-涓胺绮补闆嗗洟</Property>
+              </Entity>
+              <Entity>
+                <Property name="key">13</Property>
+                <Property name="value">13-鐪佺骇鍌ㄥ绮簱</Property>
+              </Entity>
+              <Entity>
+                <Property name="key">14</Property>
+                <Property name="value">14-鍦板競绾у偍澶囩伯搴�</Property>
+              </Entity>
+              <Entity>
+                <Property name="key">15</Property>
+                <Property name="value">15-鍘跨骇鍌ㄥ绮簱</Property>
+              </Entity>
+              <Entity>
+                <Property name="key">19</Property>
+                <Property name="value">19-鍏朵粬浠撳偍浼佷笟</Property>
+              </Entity>
+              <Entity>
+                <Property name="key">2</Property>
+                <Property name="value">2-绮璐攢浼佷笟</Property>
+              </Entity>
+              <Entity>
+                <Property name="key">3</Property>
+                <Property name="value">3-绮鍔犲伐浼佷笟</Property>
+              </Entity>
+              <Entity>
+                <Property name="key">4</Property>
+                <Property name="value">4-绮璁惧鍒堕�犱紒涓�</Property>
+              </Entity>
+              <Entity>
+                <Property name="key">9</Property>
+                <Property name="value">9-鍏朵粬绮浼佷笟</Property>
+              </Entity>
+            </Collection>
+          </Property>
+        </Property>
+        <Property name="required">true</Property>
+      </PropertyDef>
+      <PropertyDef name="zcrq">
+        <Property name="dataType">Date</Property>
+        <Property name="label">娉ㄥ唽鏃ユ湡</Property>
+      </PropertyDef>
+      <PropertyDef name="zczb">
+        <Property name="dataType">Double</Property>
+        <Property name="label">娉ㄥ唽璧勬湰</Property>
+        <Property name="displayFormat">#0.000 涓囧厓</Property>
+      </PropertyDef>
+      <PropertyDef name="zcze">
+        <Property name="dataType">Double</Property>
+        <Property name="label">璧勪骇鎬婚</Property>
+        <Property name="displayFormat">#0.000 涓囧厓</Property>
+      </PropertyDef>
+      <PropertyDef name="fddbr">
+        <Property></Property>
+        <Property name="label">娉曞畾浠h〃浜�</Property>
+        <Property name="required">true</Property>
+      </PropertyDef>
+      <PropertyDef name="frsfzh">
+        <Property></Property>
+        <Property name="label">娉曚汉韬唤璇�</Property>
+      </PropertyDef>
+      <PropertyDef name="frlxfs">
+        <Property></Property>
+        <Property name="label">娉曚汉鐢佃瘽</Property>
+      </PropertyDef>
+      <PropertyDef name="qylxr">
+        <Property></Property>
+        <Property name="label">浼佷笟鑱旂郴浜�</Property>
+      </PropertyDef>
+      <PropertyDef name="bgdh">
+        <Property></Property>
+        <Property name="label">鍔炲叕鐢佃瘽</Property>
+      </PropertyDef>
+      <PropertyDef name="zcdz">
+        <Property></Property>
+        <Property name="label">娉ㄥ唽鍦板潃</Property>
+      </PropertyDef>
+      <PropertyDef name="dzyx">
+        <Property></Property>
+        <Property name="label">鐢靛瓙閭</Property>
+      </PropertyDef>
+      <PropertyDef name="qygfwzdz">
+        <Property></Property>
+        <Property name="label">瀹樻柟缃戝潃</Property>
+      </PropertyDef>
+      <PropertyDef name="czhm">
+        <Property></Property>
+        <Property name="label">浼犵湡鍙风爜</Property>
+      </PropertyDef>
+      <PropertyDef name="yzbm">
+        <Property></Property>
+        <Property name="label">閭斂缂栫爜</Property>
+      </PropertyDef>
+      <PropertyDef name="xzqhdm">
+        <Property></Property>
+        <Property name="label">鍖哄垝浠g爜</Property>
+      </PropertyDef>
+      <PropertyDef name="xzqhmc">
+        <Property></Property>
+        <Property name="label">鍖哄垝鍚嶇О</Property>
+      </PropertyDef>
+      <PropertyDef name="sjdwmc">
+        <Property></Property>
+        <Property name="label">鍗曚綅鍚嶇О</Property>
+      </PropertyDef>
+      <PropertyDef name="sjdwdm">
+        <Property></Property>
+        <Property name="label">鍗曚綅浠g爜</Property>
+      </PropertyDef>
+      <PropertyDef name="sjdwtybm">
+        <Property></Property>
+        <Property name="label">缁熶竴缂栫爜</Property>
+      </PropertyDef>
+      <PropertyDef name="kqs">
+        <Property name="dataType">Integer</Property>
+        <Property name="label">搴撳尯鏁�</Property>
+        <Property name="displayFormat">#0 涓�</Property>
+      </PropertyDef>
+      <PropertyDef name="cfs">
+        <Property name="dataType">Integer</Property>
+        <Property name="label">浠撴埧鏁�</Property>
+        <Property name="displayFormat">#0 鏍�</Property>
+      </PropertyDef>
+      <PropertyDef name="ygs">
+        <Property name="dataType">Integer</Property>
+        <Property name="label">娌圭綈鏁�</Property>
+        <Property name="displayFormat">#0 涓�</Property>
+      </PropertyDef>
+      <PropertyDef name="jd">
+        <Property name="dataType">Double</Property>
+        <Property name="label">缁忓害</Property>
+      </PropertyDef>
+      <PropertyDef name="wd">
+        <Property name="dataType">Double</Property>
+        <Property name="label">绾害</Property>
+      </PropertyDef>
+      <PropertyDef name="dwzt">
+        <Property></Property>
+        <Property name="label">鍗曚綅鐘舵��</Property>
+        <Property name="mapping">
+          <Property name="keyProperty">key</Property>
+          <Property name="valueProperty">value</Property>
+          <Property name="mapValues">
+            <Collection>
+              <Entity>
+                <Property name="key">1</Property>
+                <Property name="value">1-姝e父</Property>
+              </Entity>
+              <Entity>
+                <Property name="key">2</Property>
+                <Property name="value">2-閫�鍑哄偍澶囩伯鎵垮偍</Property>
+              </Entity>
+            </Collection>
+          </Property>
+        </Property>
+      </PropertyDef>
+      <PropertyDef name="zhgxsj">
+        <Property name="dataType">DateTime</Property>
+        <Property name="label">鏇存柊鏃堕棿</Property>
+      </PropertyDef>
+    </DataType>
+  </Model>
+  <View layout="regionPadding:10">
+    <Property name="packages">font-awesome,css-common</Property>
+    <DataSet id="dsMain">
+      <Property name="dataProvider">companyPR#getData</Property>
+      <Property name="dataType">[dtMain]</Property>
+    </DataSet>
+    <Container layout="regionPadding:10" layoutConstraint="top">
+      <Property name="exClassName">bg-color</Property>
+      <Property name="height">55</Property>
+      <Property name="contentOverflow">hidden</Property>
+      <Label layoutConstraint="left">
+        <Property name="text">鑿滃崟鏍忥細</Property>
+      </Label>
+      <Button layoutConstraint="left">
+        <ClientEvent name="onClick">&#xD;
+var select = view.get(&quot;#dgMain&quot;).get(&quot;selection&quot;);&#xD;
+if(select){&#xD;
+    view.get(&quot;#dialogMain&quot;).show();;&#xD;
+}else{&#xD;
+    $notify(&quot;璇烽�夋嫨闇�瑕佷慨鏀圭殑鏁版嵁鈥︹��&quot;);&#xD;
+}		  </ClientEvent>
+        <Property name="caption">璇︽儏缂栬緫</Property>
+        <Property name="exClassName">btn2</Property>
+        <Property name="iconClass">fa fa-pencil</Property>
+      </Button>
+      <Button layoutConstraint="left">
+        <ClientEvent name="onClick">  &#xD;
+var select = view.get(&quot;#dgMain&quot;).get(&quot;selection&quot;);&#xD;
+if(select){&#xD;
+    view.get(&quot;#ajaxDel&quot;).set(&quot;parameter&quot;,select).execute(function(){&#xD;
+		select.remove();&#xD;
+	});&#xD;
+}else{&#xD;
+    $notify(&quot;璇烽�夋嫨闇�瑕佸垹闄ょ殑鏁版嵁鈥︹��&quot;);&#xD;
+}&#xD;
+</ClientEvent>
+        <Property name="caption">鍒犻櫎</Property>
+        <Property name="exClassName">btn3</Property>
+        <Property name="iconClass">fa fa-trash-o</Property>
+      </Button>
+    </Container>
+    <Container layout="regionPadding:10" layoutConstraint="center">
+      <Property name="exClassName">bg-color</Property>
+      <DataGrid id="dgMain">
+        <ClientEvent name="onDataRowDoubleClick">var dialog= view.get(&quot;#dialogMain&quot;);&#xD;
+          dialog.show();</ClientEvent>
+        <Property name="dataSet">dsMain</Property>
+        <Property name="readOnly">true</Property>
+        <Property name="selectionMode">singleRow</Property>
+        <RowSelectorColumn/>
+        <RowNumColumn/>
+        <DataColumn name="dwmc">
+          <Property name="property">dwmc</Property>
+          <Property name="align">center</Property>
+        </DataColumn>
+        <DataColumn name="dwdm">
+          <Property name="property">dwdm</Property>
+          <Property name="align">center</Property>
+        </DataColumn>
+        <DataColumn name="dwlx">
+          <Property name="property">dwlx</Property>
+          <Property name="align">center</Property>
+        </DataColumn>
+        <DataColumn name="zcze">
+          <Property name="property">zcze</Property>
+          <Property name="align">center</Property>
+        </DataColumn>
+        <DataColumn name="fddbr">
+          <Property name="property">fddbr</Property>
+          <Property name="align">center</Property>
+        </DataColumn>
+        <DataColumn name="kqs">
+          <Property name="property">kqs</Property>
+          <Property name="align">center</Property>
+        </DataColumn>
+        <DataColumn name="cfs">
+          <Property name="property">cfs</Property>
+          <Property name="align">center</Property>
+        </DataColumn>
+        <DataColumn name="ygs">
+          <Property name="property">ygs</Property>
+          <Property name="align">center</Property>
+        </DataColumn>
+        <DataColumn name="dwzt">
+          <Property name="property">dwzt</Property>
+          <Property name="align">center</Property>
+        </DataColumn>
+        <DataColumn name="zhgxsj">
+          <Property name="property">zhgxsj</Property>
+          <Property name="align">center</Property>
+        </DataColumn>
+      </DataGrid>
+    </Container>
+    <Dialog id="dialogMain">
+      <Property name="caption">浠撳偍鍗曚綅淇℃伅</Property>
+      <Property name="width">1200</Property>
+      <Property name="closeable">false</Property>
+      <Buttons>
+        <Button id="btnOk">
+          <ClientEvent name="onClick">view.get(&quot;#uaSave&quot;).execute(function(result){&#xD;
+            if(result){&#xD;
+            $alert(result);&#xD;
+            }else{&#xD;
+            $notify(&quot;淇濆瓨鎴愬姛锛侊紒&quot;);&#xD;
+            view.get(&quot;#dialogMain&quot;).hide();&#xD;
+            }&#xD;
+            });</ClientEvent>
+          <Property name="caption">纭畾</Property>
+          <Property name="exClassName">btn1</Property>
+          <Property name="iconClass">fa fa-check</Property>
+        </Button>
+        <Button>
+          <ClientEvent name="onClick">view.get(&quot;#dsMain.data:#&quot;).cancel();&#xD;
+            self.get(&quot;parent&quot;).hide();</ClientEvent>
+          <Property name="caption">鍙栨秷</Property>
+          <Property name="exClassName">btn3</Property>
+          <Property name="iconClass">fa fa-times</Property>
+        </Button>
+      </Buttons>
+      <Children>
+        <FieldSet layout="padding:15">
+          <Property name="caption">鍩烘湰淇℃伅</Property>
+          <Buttons/>
+          <Children>
+            <AutoForm>
+              <Property name="dataSet">dsMain</Property>
+              <Property name="cols">*,*,*</Property>
+              <Property name="labelAlign">right</Property>
+              <Property name="labelSeparator"> : </Property>
+              <Property name="labelWidth">120</Property>
+              <AutoFormElement>
+                <Property name="name">dwmc</Property>
+                <Property name="property">dwmc</Property>
+                <Editor/>
+              </AutoFormElement>
+              <AutoFormElement>
+                <Property name="name">dwdm</Property>
+                <Property name="property">dwdm</Property>
+                <Editor/>
+              </AutoFormElement>
+              <AutoFormElement>
+                <Property name="name">tydwbm</Property>
+                <Property name="property">tydwbm</Property>
+                <Editor/>
+              </AutoFormElement>
+              <AutoFormElement>
+                <Property name="name">dwlx</Property>
+                <Property name="property">dwlx</Property>
+                <Editor/>
+              </AutoFormElement>
+              <AutoFormElement>
+                <Property name="name">dwzt</Property>
+                <Property name="property">dwzt</Property>
+                <Editor/>
+              </AutoFormElement>
+              <AutoFormElement>
+                <Property name="name">zcrq</Property>
+                <Property name="property">zcrq</Property>
+                <Editor/>
+              </AutoFormElement>
+              <AutoFormElement>
+                <Property name="name">zczb</Property>
+                <Property name="property">zczb</Property>
+                <Editor/>
+              </AutoFormElement>
+              <AutoFormElement>
+                <Property name="name">zcze</Property>
+                <Property name="property">zcze</Property>
+                <Editor/>
+              </AutoFormElement>
+              <AutoFormElement>
+                <Property name="name">fddbr</Property>
+                <Property name="property">fddbr</Property>
+                <Editor/>
+              </AutoFormElement>
+              <AutoFormElement>
+                <Property name="name">frsfzh</Property>
+                <Property name="property">frsfzh</Property>
+                <Editor/>
+              </AutoFormElement>
+              <AutoFormElement>
+                <Property name="name">frlxfs</Property>
+                <Property name="property">frlxfs</Property>
+                <Editor/>
+              </AutoFormElement>
+              <AutoFormElement>
+                <Property name="name">qylxr</Property>
+                <Property name="property">qylxr</Property>
+                <Editor/>
+              </AutoFormElement>
+              <AutoFormElement>
+                <Property name="name">bgdh</Property>
+                <Property name="property">bgdh</Property>
+                <Editor/>
+              </AutoFormElement>
+              <AutoFormElement>
+                <Property name="name">zcdz</Property>
+                <Property name="property">zcdz</Property>
+                <Editor/>
+              </AutoFormElement>
+              <AutoFormElement>
+                <Property name="name">dzyx</Property>
+                <Property name="property">dzyx</Property>
+                <Editor/>
+              </AutoFormElement>
+              <AutoFormElement>
+                <Property name="name">qygfwzdz</Property>
+                <Property name="property">qygfwzdz</Property>
+                <Editor/>
+              </AutoFormElement>
+              <AutoFormElement>
+                <Property name="name">czhm</Property>
+                <Property name="property">czhm</Property>
+                <Editor/>
+              </AutoFormElement>
+              <AutoFormElement>
+                <Property name="name">yzbm</Property>
+                <Property name="property">yzbm</Property>
+                <Editor/>
+              </AutoFormElement>
+              <AutoFormElement>
+                <Property name="name">xzqhmc</Property>
+                <Property name="property">xzqhmc</Property>
+                <Property name="trigger">ddFoodOrigin</Property>
+                <Editor/>
+              </AutoFormElement>
+              <AutoFormElement>
+                <Property name="name">xzqhdm</Property>
+                <Property name="property">xzqhdm</Property>
+                <Editor/>
+              </AutoFormElement>
+              <AutoFormElement>
+                <Property name="name">zhgxsj</Property>
+                <Property name="property">zhgxsj</Property>
+                <Editor/>
+              </AutoFormElement>
+              <AutoFormElement>
+                <Property name="name">jd</Property>
+                <Property name="property">jd</Property>
+                <Editor/>
+              </AutoFormElement>
+              <AutoFormElement>
+                <Property name="name">wd</Property>
+                <Property name="property">wd</Property>
+                <Editor/>
+              </AutoFormElement>
+              <Link>
+                <Property name="href">http://api.map.baidu.com/lbsapi/getpoint/</Property>
+                <Property name="target">_blank</Property>
+                <Property name="style">
+                  <Property name="padding-left">150px</Property>
+                </Property>
+                <Property name="text">甯姪锛氱偣鍑诲潗鏍囦綅缃嬀鍙�</Property>
+              </Link>
+            </AutoForm>
+          </Children>
+        </FieldSet>
+        <Control>
+          <Property name="height">10</Property>
+        </Control>
+        <FieldSet layout="padding:15">
+          <Property name="caption">涓婄骇鍗曚綅淇℃伅</Property>
+          <Buttons/>
+          <Children>
+            <AutoForm>
+              <Property name="dataSet">dsMain</Property>
+              <Property name="cols">*,*,*</Property>
+              <Property name="labelAlign">right</Property>
+              <Property name="labelSeparator"> : </Property>
+              <Property name="labelWidth">120</Property>
+              <AutoFormElement>
+                <Property name="name">sjdwmc</Property>
+                <Property name="property">sjdwmc</Property>
+                <Editor/>
+              </AutoFormElement>
+              <AutoFormElement>
+                <Property name="name">sjdwdm</Property>
+                <Property name="property">sjdwdm</Property>
+                <Editor/>
+              </AutoFormElement>
+              <AutoFormElement>
+                <Property name="name">sjdwtybm</Property>
+                <Property name="property">sjdwtybm</Property>
+                <Editor/>
+              </AutoFormElement>
+            </AutoForm>
+          </Children>
+        </FieldSet>
+        <FieldSet layout="padding:15">
+          <Property name="caption">缁熻淇℃伅</Property>
+          <Buttons/>
+          <Children>
+            <AutoForm>
+              <Property name="dataSet">dsMain</Property>
+              <Property name="cols">*,*,*</Property>
+              <Property name="labelAlign">right</Property>
+              <Property name="labelSeparator"> : </Property>
+              <Property name="labelWidth">120</Property>
+              <AutoFormElement>
+                <Property name="name">kqs</Property>
+                <Property name="property">kqs</Property>
+                <Editor/>
+              </AutoFormElement>
+              <AutoFormElement>
+                <Property name="name">cfs</Property>
+                <Property name="property">cfs</Property>
+                <Editor/>
+              </AutoFormElement>
+              <AutoFormElement>
+                <Property name="name">ygs</Property>
+                <Property name="property">ygs</Property>
+                <Editor/>
+              </AutoFormElement>
+            </AutoForm>
+          </Children>
+        </FieldSet>
+      </Children>
+      <Tools/>
+    </Dialog>
+    <UpdateAction id="uaSave">
+      <Property name="dataResolver">companyPR#saveData</Property>
+      <Property name="successMessage">鏁版嵁淇濆瓨瀹屾垚锛�</Property>
+      <UpdateItem>
+        <Property name="dataSet">dsMain</Property>
+        <Property name="dataPath">[#current]</Property>
+        <Property name="validateData">false</Property>
+      </UpdateItem>
+    </UpdateAction>
+    <AjaxAction id="ajaxDel">
+      <Property name="service">companyPR#delData</Property>
+      <Property name="confirmMessage">纭畾瑕佹墽琛屽垹闄や箞锛�</Property>
+    </AjaxAction>
+    <CustomDropDown id="ddFoodOrigin">
+      <Property name="minHeight">500</Property>
+      <Property name="assignmentMap">xzqhmc=name,xzqhdm=code</Property>
+      <Property name="minWidth">500</Property>
+      <Container layout="regionPadding:5">
+        <DataSet id="dsFoodOrigin">
+          <Property name="dataProvider">dicAreaPR#pageList</Property>
+          <Property name="dataType">[dtArea]</Property>
+          <Property name="parameter"></Property>
+          <Property name="pageSize">10</Property>
+        </DataSet>
+        <Container layout="hbox regionPadding:5">
+          <TextEditor id="key2">
+            <Property name="blankText"> -- 鍚嶇О --</Property>
+            <Property name="width">200</Property>
+          </TextEditor>
+          <Button>
+            <ClientEvent name="onClick">var key = view.get(&quot;#key2.value&quot;);&#xD;
+view.get(&quot;#dsFoodOrigin&quot;).set(&quot;parameter&quot;,{key:key}).flushAsync();</ClientEvent>
+            <Property name="caption">鏌ヨ</Property>
+            <Property name="exClassName">btn4</Property>
+            <Property name="iconClass">fa fa-search</Property>
+          </Button>
+          <Button>
+            <ClientEvent name="onClick">var data = view.get(&quot;#dsFoodOrigin.data:#&quot;);&#xD;
+              if(data){&#xD;
+              view.get(&quot;#ddFoodOrigin&quot;).close(data.toJSON());&#xD;
+              }</ClientEvent>
+            <Property name="iconClass">fa fa-check</Property>
+            <Property name="exClassName">btn1</Property>
+            <Property name="caption">纭畾</Property>
+          </Button>
+        </Container>
+        <DataGrid>
+          <ClientEvent name="onDataRowDoubleClick">var data = view.get(&quot;#dsFoodOrigin.data:#&quot;);&#xD;
+            if(data){&#xD;
+            view.get(&quot;#ddFoodOrigin&quot;).close(data.toJSON());&#xD;
+            }</ClientEvent>
+          <Property name="dataSet">dsFoodOrigin</Property>
+          <Property name="readOnly">true</Property>
+          <DataColumn name="code">
+            <Property name="property">code</Property>
+            <Property name="readOnly">true</Property>
+            <Property name="align">center</Property>
+          </DataColumn>
+          <DataColumn name="name">
+            <ClientEvent name="onRenderCell">arg.dom.style.fontWeight = &quot;bold&quot;;&#xD;
+              arg.processDefault = true;</ClientEvent>
+            <Property name="property">name</Property>
+            <Property name="readOnly">true</Property>
+            <Property name="align">center</Property>
+          </DataColumn>
+          <DataColumn name="simple">
+            <Property name="property">simple</Property>
+            <Property name="readOnly">true</Property>
+            <Property name="align">center</Property>
+          </DataColumn>
+        </DataGrid>
+        <DataPilot layoutConstraint="bottom">
+          <Property name="dataSet">dsFoodOrigin</Property>
+        </DataPilot>
+      </Container>
+    </CustomDropDown>
+  </View>
+</ViewConfig>
diff --git a/igds-dzhwk-view/src/main/java/com/fzzy/igds/sys/Depot.view.xml b/igds-dzhwk-view/src/main/java/com/fzzy/igds/sys/Depot.view.xml
new file mode 100644
index 0000000..2d944c8
--- /dev/null
+++ b/igds-dzhwk-view/src/main/java/com/fzzy/igds/sys/Depot.view.xml
@@ -0,0 +1,804 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ViewConfig>
+  <Arguments/>
+  <Context/>
+  <Model>
+    <DataType name="dataTypeUser">
+      <Property name="creationType">com.ruoyi.common.core.domain.entity.SysUser</Property>
+      <PropertyDef name="loginName">
+        <Property name="dataType">String</Property>
+        <Property name="label">鐢ㄦ埛鍚�</Property>
+      </PropertyDef>
+      <PropertyDef name="userName">
+        <Property name="dataType">String</Property>
+        <Property name="label">涓枃鍚�</Property>
+      </PropertyDef>
+    </DataType>
+    <DataType name="dtDepot" parent="global:dtDepot"/>
+    <DataType name="dtConfirm">
+      <Property name="creationType">com.fzzy.igds.dzhwk.domain.DepotStatusConfirm</Property>
+      <PropertyDef name="fcqrdh">
+        <Property></Property>
+        <Property name="label">纭鍗曞彿</Property>
+        <Property name="readOnly">true</Property>
+      </PropertyDef>
+      <PropertyDef name="companyId">
+        <Property></Property>
+        <Property name="label">缁勭粐缂栫爜</Property>
+      </PropertyDef>
+      <PropertyDef name="deptId">
+        <Property></Property>
+        <Property name="label">搴撳尯缂栫爜</Property>
+        <Property name="mapping">
+          <Property name="mapValues">${dorado.getDataProvider(&quot;deptPR#loadParents&quot;).getResult()}</Property>
+          <Property name="keyProperty">deptId</Property>
+          <Property name="valueProperty">deptName</Property>
+        </Property>
+      </PropertyDef>
+      <PropertyDef name="depotId">
+        <Property></Property>
+        <Property name="label">璐т綅缂栫爜</Property>
+        <Property name="mapping">
+          <Property name="mapValues">${dorado.getDataProvider(&quot;depotPR#getAllCache&quot;).getResult()}</Property>
+          <Property name="keyProperty">id</Property>
+          <Property name="valueProperty">name</Property>
+        </Property>
+      </PropertyDef>
+      <PropertyDef name="fcrq">
+        <Property name="dataType">Date</Property>
+        <Property name="label">灏佷粨鏃ユ湡</Property>
+      </PropertyDef>
+      <PropertyDef name="foodVariety">
+        <Property></Property>
+        <Property name="label">绮鍝佺</Property>
+        <Property name="mapping">
+          <Property name="mapValues">${dorado.getDataProvider(&quot;dicPR#sysDictData&quot;).getResult(&quot;FOOD_VARIETY_&quot;)}</Property>
+          <Property name="keyProperty">dictValue</Property>
+          <Property name="valueProperty">dictLabel</Property>
+        </Property>
+      </PropertyDef>
+      <PropertyDef name="foodType">
+        <Property></Property>
+        <Property name="label">绮鎬ц川</Property>
+        <Property name="mapping">
+          <Property name="mapValues">${dorado.getDataProvider(&quot;dicPR#sysDictData&quot;).getResult(&quot;FOOD_TYPE_&quot;)}</Property>
+          <Property name="keyProperty">dictValue</Property>
+          <Property name="valueProperty">dictLabel</Property>
+        </Property>
+      </PropertyDef>
+      <PropertyDef name="foodLevel">
+        <Property></Property>
+        <Property name="label">绮绛夌骇</Property>
+        <Property name="mapping">
+          <Property name="mapValues">${dorado.getDataProvider(&quot;dicPR#triggerFoodLevel&quot;).getResult()}</Property>
+          <Property name="keyProperty">dictValue</Property>
+          <Property name="valueProperty">dictLabel</Property>
+        </Property>
+      </PropertyDef>
+      <PropertyDef name="foodLocation">
+        <Property></Property>
+        <Property name="label">浜у湴鍚嶇О</Property>
+      </PropertyDef>
+      <PropertyDef name="foodYear">
+        <Property></Property>
+        <Property name="label">鏀惰揣骞村害</Property>
+      </PropertyDef>
+      <PropertyDef name="country">
+        <Property></Property>
+        <Property name="label">鍥藉埆</Property>
+        <Property name="mapping">
+          <Property name="mapValues">${dorado.getDataProvider(&quot;dicPR#sysDictData&quot;).getResult(&quot;GB_&quot;)}</Property>
+          <Property name="keyProperty">dictValue</Property>
+          <Property name="valueProperty">dictLabel</Property>
+        </Property>
+      </PropertyDef>
+      <PropertyDef name="storeKeeperName">
+        <Property></Property>
+        <Property name="label">淇濈鍛�</Property>
+      </PropertyDef>
+      <PropertyDef name="fcsl">
+        <Property name="dataType">Double</Property>
+        <Property name="label">灏佷粨鏁伴噺</Property>
+        <Property name="displayFormat">#,##0 KG</Property>
+      </PropertyDef>
+      <PropertyDef name="applyUser">
+        <Property></Property>
+        <Property name="label">灏佷粨鐢宠浜�</Property>
+        <Property name="required">true</Property>
+      </PropertyDef>
+      <PropertyDef name="deptAuditUser">
+        <Property></Property>
+        <Property name="label">閮ㄩ棬瀹℃牳浜�</Property>
+      </PropertyDef>
+      <PropertyDef name="leaderAuditUser">
+        <Property></Property>
+        <Property name="label">棰嗗瀹℃牳浜�</Property>
+      </PropertyDef>
+      <PropertyDef name="remarks">
+        <Property></Property>
+        <Property name="label">澶囨敞淇℃伅</Property>
+      </PropertyDef>
+      <PropertyDef name="updateTime">
+        <Property name="dataType">DateTime</Property>
+        <Property name="label">鏇存柊鏃堕棿</Property>
+      </PropertyDef>
+    </DataType>
+  </Model>
+  <View>
+    <ClientEvent name="onReady">&#xD;
+/**&#xD;
+ * 鏌ヨ&#xD;
+ */&#xD;
+query = function(){&#xD;
+    view.get(&quot;#dataSetdepot&quot;).flushAsync();&#xD;
+}&#xD;
+//鎵撳嵃璐т綅鍗�&#xD;
+printBill = function (htmlStr) {&#xD;
+    var LODOP = CLODOP;&#xD;
+    LODOP.PRINT_INIT(&quot;璐т綅鍗�&quot;);&#xD;
+    LODOP.SET_PRINT_PAGESIZE(1, 0, 0, &quot;A4&quot;);&#xD;
+    //LODOP.SET_PRINT_PAGESIZE(1, 0, '90mm', &quot;A4&quot;);&#xD;
+    LODOP.ADD_PRINT_HTM(0, 0, &quot;96%&quot;, &quot;100%&quot;, htmlStr);&#xD;
+    LODOP.PREVIEW();&#xD;
+};</ClientEvent>
+    <Property name="packages">font-awesome,css-common</Property>
+    <Property name="javaScriptFile">./static/js/plugins/lodop/LodopFuncs.js</Property>
+    <DataSet id="dataSetdepot">
+      <Property name="dataProvider">depotPR#getData</Property>
+      <Property name="dataType">[dtDepot]</Property>
+    </DataSet>
+    <DataSet id="dataSetUser">
+      <Property name="dataType">[dataTypeUser]</Property>
+      <Property name="dataProvider">sysUserPR#loadUser</Property>
+    </DataSet>
+    <DataSet id="dataSetConfirm">
+      <Property name="readOnly">false</Property>
+      <Property name="dataType">[dtConfirm]</Property>
+      <Property name="loadMode">manual</Property>
+    </DataSet>
+    <Container>
+      <Property name="exClassName">c-data</Property>
+      <ToolBar>
+        <ToolBarLabel>
+          <Property name="text">鑿滃崟鏍忥細</Property>
+          <Property name="exClassName">menu-bar-caption</Property>
+        </ToolBarLabel>
+        <ToolBarButton>
+          <ClientEvent name="onClick">view.get(&quot;#dataSetdepot&quot;).insert();&#xD;
+view.get(&quot;#depotdialog&quot;).show();&#xD;
+view.get(&quot;#oneId&quot;).set(&quot;readOnly&quot;,false);&#xD;
+view.get(&quot;#twoId&quot;).set(&quot;readOnly&quot;,false);</ClientEvent>
+          <Property name="caption">鏂板</Property>
+          <Property name="exClassName">btn1</Property>
+          <Property name="iconClass">fa fa-plus-circle</Property>
+          <Property name="width">80</Property>
+        </ToolBarButton>
+        <ToolBarButton>
+          <ClientEvent name="onClick">var select = view.get(&quot;#dataGridDepot&quot;).get(&quot;selection&quot;);&#xD;
+if(select){&#xD;
+    view.get(&quot;#depotdialog&quot;).show();&#xD;
+    view.get(&quot;#oneId&quot;).set(&quot;readOnly&quot;,true);&#xD;
+    view.get(&quot;#twoId&quot;).set(&quot;readOnly&quot;,true);
+}else{&#xD;
+    $notify(&quot;璇烽�夋嫨闇�瑕佷慨鏀圭殑浠撳簱鈥︹��&quot;);&#xD;
+}</ClientEvent>
+          <Property name="caption">淇敼</Property>
+          <Property name="exClassName">btn2</Property>
+          <Property name="iconClass">fa fa-pencil</Property>
+          <Property name="width">80</Property>
+        </ToolBarButton>
+        <ToolBarButton>
+          <ClientEvent name="onClick">var select = view.get(&quot;#dataGridDepot&quot;).get(&quot;selection&quot;);&#xD;
+if(select){&#xD;
+    view.get(&quot;#deleteAjaxAction&quot;).set(&quot;parameter&quot;,select).execute();&#xD;
+    query();&#xD;
+}else{&#xD;
+    $notify(&quot;璇烽�夋嫨闇�瑕佸垹闄ょ殑浠撳簱鈥︹��&quot;);&#xD;
+}</ClientEvent>
+          <Property name="caption">鍒犻櫎</Property>
+          <Property name="exClassName">btn3</Property>
+          <Property name="iconClass">fa fa-minus-circle</Property>
+          <Property name="width">80</Property>
+        </ToolBarButton>
+        <ToolBarButton>
+          <Property name="caption">鍒锋柊缂撳瓨</Property>
+          <Property name="exClassName">btn4</Property>
+          <Property name="iconClass">fa fa-refresh</Property>
+          <Property name="action">ajaxRefreshCache</Property>
+        </ToolBarButton>
+        <ToolBarButton>
+          <ClientEvent name="onClick">var url = &quot;com.fzzy.igds.sys.DepotStore.d&quot;;&#xD;
+var panelId = window.frameElement.getAttribute('data-id');
+window.parent.$.modal.openTab(&quot;搴撳瓨绠$悊&quot;, url, false, panelId);</ClientEvent>
+          <Property name="caption">搴撳瓨绠$悊</Property>
+          <Property name="exClassName">btn2</Property>
+          <Property name="iconClass">fa fa-book</Property>
+          <Property name="width">100</Property>
+        </ToolBarButton>
+        <ToolBarButton>
+          <ClientEvent name="onClick">var depot = view.get(&quot;#dataGridDepot&quot;).get(&quot;selection&quot;);&#xD;
+if(depot){&#xD;
+    var depotId = depot.get(&quot;id&quot;);&#xD;
+    var deptId = depot.get(&quot;deptId&quot;);&#xD;
+    var fcsl = depot.get(&quot;storageReal&quot;);&#xD;
+    var foodType = depot.get(&quot;foodType&quot;);&#xD;
+    var foodVariety = depot.get(&quot;foodVariety&quot;);&#xD;
+    var foodLevel = depot.get(&quot;foodLevel&quot;);&#xD;
+    var foodLocation = depot.get(&quot;foodLocation&quot;);&#xD;
+    var foodYear = depot.get(&quot;foodYear&quot;);&#xD;
+    var storeKeeperName = depot.get(&quot;storeKeeperName&quot;);&#xD;
+    var fcrq = new Date();&#xD;
+    var updateTime = new Date();&#xD;
+    view.get(&quot;#dataSetConfirm&quot;).insert({&#xD;
+        deptId:deptId,&#xD;
+        depotId:depotId,&#xD;
+        fcrq:fcrq,&#xD;
+        foodVariety:foodVariety,&#xD;
+        foodType:foodType,&#xD;
+        foodLevel:foodLevel,&#xD;
+        foodLocation:foodLocation,&#xD;
+        foodYear:foodYear,&#xD;
+        storeKeeperName:storeKeeperName,&#xD;
+        fcsl:fcsl,&#xD;
+        updateTime:updateTime&#xD;
+    });&#xD;
+    view.get(&quot;#statusConfirmlog&quot;).show();&#xD;
+}else{&#xD;
+    $notify(&quot;璇烽�夋嫨闇�瑕佸皝浠撶殑浠撳簱鈥︹��&quot;);&#xD;
+}</ClientEvent>
+          <Property name="caption">灏佷粨纭</Property>
+          <Property name="exClassName">btn1</Property>
+          <Property name="iconClass">fa fa-pencil-square-o</Property>
+          <Property name="width">100</Property>
+        </ToolBarButton>
+        <ToolBarButton>
+          <ClientEvent name="onClick">var url = &quot;com.fzzy.igds.sys.DepotStatusConfirm.d&quot;;&#xD;
+var panelId = window.frameElement.getAttribute('data-id');
+window.parent.$.modal.openTab(&quot;灏佷粨璁板綍&quot;, url, false, panelId);</ClientEvent>
+          <Property name="caption">灏佷粨璁板綍</Property>
+          <Property name="exClassName">btn2</Property>
+          <Property name="iconClass">fa fa-file-pdf-o</Property>
+          <Property name="width">100</Property>
+        </ToolBarButton>
+        <ToolBarButton layoutConstraint="right">
+          <ClientEvent name="onClick">window.parent.$.table.exportExcelDorado(&quot;./export/depot-excel&quot;, &quot;璐т綅鏁版嵁&quot;, null);</ClientEvent>
+          <Property name="caption">瀵煎嚭Excel</Property>
+          <Property name="exClassName">btn1</Property>
+          <Property name="iconClass">fa fa-file-excel-o</Property>
+          <Property name="width">100</Property>
+        </ToolBarButton>
+      </ToolBar>
+      <DataGrid id="dataGridDepot" layoutConstraint="padding:15px 0px 0px 0px">
+        <ClientEvent name="onDataRowClick">view.get(&quot;#dataGridDepot&quot;).set(&quot;selection&quot;,arg.data);</ClientEvent>
+        <Property name="dataSet">dataSetdepot</Property>
+        <Property name="selectionMode">singleRow</Property>
+        <Property name="readOnly">true</Property>
+        <RowSelectorColumn/>
+        <RowNumColumn/>
+        <DataColumn name="name">
+          <Property name="property">name</Property>
+          <Property name="align">center</Property>
+        </DataColumn>
+        <DataColumn name="depotStatus">
+          <Property name="property">depotStatus</Property>
+          <Property name="align">center</Property>
+        </DataColumn>
+        <DataColumn name="foodVariety">
+          <Property name="property">foodVariety</Property>
+          <Property name="align">center</Property>
+        </DataColumn>
+        <DataColumn name="foodType">
+          <Property name="property">foodType</Property>
+          <Property name="align">center</Property>
+        </DataColumn>
+        <DataColumn name="foodLevel">
+          <Property name="property">foodLevel</Property>
+          <Property name="align">center</Property>
+        </DataColumn>
+        <DataColumn name="storageReal">
+          <Property name="property">storageReal</Property>
+          <Property name="align">center</Property>
+        </DataColumn>
+        <DataColumn name="foodYear">
+          <Property name="property">foodYear</Property>
+          <Property name="align">center</Property>
+        </DataColumn>
+        <DataColumn name="foodLocation">
+          <Property name="property">foodLocation</Property>
+          <Property name="align">center</Property>
+        </DataColumn>
+        <DataColumn name="storeDate">
+          <Property name="property">storeDate</Property>
+          <Property name="align">center</Property>
+        </DataColumn>
+        <DataColumn name="storeKeeperName">
+          <Property name="property">storeKeeperName</Property>
+          <Property name="align">center</Property>
+        </DataColumn>
+        <DataColumn name="depotType">
+          <Property name="property">depotType</Property>
+          <Property name="align">center</Property>
+        </DataColumn>
+      </DataGrid>
+    </Container>
+    <Dialog id="depotdialog" layout="regionPadding:10">
+      <Property name="iconClass">fa fa-pencil-square-o</Property>
+      <Property name="caption">璐т綅淇℃伅</Property>
+      <Property name="width">1200</Property>
+      <Property name="closeable">false</Property>
+      <Buttons>
+        <Button id="btnOK">
+          <ClientEvent name="onClick">//鍚屾椂鎻愪氦鍘嗗彶涔�&#xD;
+var data = view.get(&quot;#dataSetdepot.data:#&quot;);&#xD;
+view.get(&quot;#updateactionSave&quot;).execute(function(result){&#xD;
+	if(result){&#xD;
+		$notify(result);&#xD;
+	}else{&#xD;
+		self.get(&quot;parent&quot;).hide();&#xD;
+        query();&#xD;
+	}&#xD;
+});</ClientEvent>
+          <Property name="caption">纭畾</Property>
+          <Property name="iconClass">fa fa-check-circle</Property>
+          <Property name="exClassName">btn1</Property>
+        </Button>
+        <Button>
+          <ClientEvent name="onClick">var cur = view.get(&quot;#dataSetdepot.data:#&quot;);&#xD;
+if(cur) cur.cancel();&#xD;
+self.get(&quot;parent&quot;).hide();</ClientEvent>
+          <Property name="caption">鍙栨秷</Property>
+          <Property name="iconClass">fa fa-times-circle</Property>
+          <Property name="exClassName">btn3</Property>
+        </Button>
+      </Buttons>
+      <Children>
+        <FieldSet layout="padding:5">
+          <Property name="caption">鍩烘湰淇℃伅</Property>
+          <Buttons/>
+          <Children>
+            <AutoForm>
+              <Property name="dataSet">dataSetdepot</Property>
+              <Property name="readOnly">false</Property>
+              <Property name="labelSeparator"> : </Property>
+              <Property name="labelAlign">right</Property>
+              <Property name="cols">*,*,*,*,*,*</Property>
+              <Property name="labelWidth">80</Property>
+              <AutoFormElement id="oneId" layoutConstraint="colSpan:2">
+                <Property name="name">id</Property>
+                <Property name="property">id</Property>
+                <Editor>
+                  <TextEditor>
+                    <Property name="blankText">-- 瑙勫垯锛氭暟瀛楁垨瀛楁瘝 --</Property>
+                  </TextEditor>
+                </Editor>
+              </AutoFormElement>
+              <AutoFormElement layoutConstraint="colSpan:2">
+                <Property name="name">name</Property>
+                <Property name="property">name</Property>
+                <Editor/>
+              </AutoFormElement>
+              <AutoFormElement layoutConstraint="colSpan:2">
+                <Property name="name">deptId</Property>
+                <Property name="property">deptId</Property>
+                <Editor/>
+              </AutoFormElement>
+              <AutoFormElement layoutConstraint="colSpan:2">
+                <Property name="name">storeType</Property>
+                <Property name="property">storeType</Property>
+                <Editor/>
+              </AutoFormElement>
+              <AutoFormElement layoutConstraint="colSpan:2">
+                <Property name="name">storageMax</Property>
+                <Property name="property">storageMax</Property>
+                <Editor/>
+              </AutoFormElement>
+              <AutoFormElement layoutConstraint="colSpan:2">
+                <Property name="name">depotType</Property>
+                <Property name="property">depotType</Property>
+                <Editor/>
+              </AutoFormElement>
+              <AutoFormElement layoutConstraint="colSpan:2">
+                <Property name="name">depotStatus</Property>
+                <Property name="property">depotStatus</Property>
+                <Property name="trigger">autoMappingDropDown2</Property>
+                <Editor/>
+              </AutoFormElement>
+              <AutoFormElement layoutConstraint="colSpan:2">
+                <Property name="name">granaryId</Property>
+                <Property name="property">granaryId</Property>
+                <Editor/>
+              </AutoFormElement>
+              <AutoFormElement layoutConstraint="colSpan:2">
+                <Property name="name">buildingId</Property>
+                <Property name="property">buildingId</Property>
+                <Editor/>
+              </AutoFormElement>
+              <AutoFormElement layoutConstraint="colSpan:2">
+                <Property name="name">storeKeeperName</Property>
+                <Property name="property">storeKeeperName</Property>
+                <Property name="trigger">triggerUserList</Property>
+                <Editor/>
+              </AutoFormElement>
+              <AutoFormElement layoutConstraint="colSpan:2">
+                <Property name="name">orderNum</Property>
+                <Property name="property">orderNum</Property>
+                <Editor/>
+              </AutoFormElement>
+              <AutoFormElement layoutConstraint="colSpan:2">
+                <Property name="name">bhId</Property>
+                <Property name="property">bhId</Property>
+                <Editor/>
+              </AutoFormElement>
+              <AutoFormElement layoutConstraint="colSpan:3">
+                <Property name="name">remark</Property>
+                <Property name="property">remark</Property>
+                <Editor/>
+              </AutoFormElement>
+              <Label layoutConstraint="colSpan:3">
+                <Property name="text">璇存槑锛�1銆佷粨搴撶姸鎬侊細绌轰粨銆佹弧浠撱�佸嚭鍏ュ簱涓姸鎬佸彉鏇磋浣跨敤鈥滃簱瀛樼鐞嗏�濆姛鑳�</Property>
+                <Property name="style">
+                  <Property name="color">blue</Property>
+                  <Property name="padding-left">50px</Property>
+                </Property>
+              </Label>
+            </AutoForm>
+          </Children>
+        </FieldSet>
+        <FieldSet layout="padding:5">
+          <Property name="caption">鍌ㄧ伯淇℃伅</Property>
+          <Buttons/>
+          <Children>
+            <AutoForm>
+              <Property name="dataSet">dataSetdepot</Property>
+              <Property name="readOnly">false</Property>
+              <Property name="labelSeparator"> : </Property>
+              <Property name="labelAlign">right</Property>
+              <Property name="cols">*,*,*,*,*,*</Property>
+              <Property name="labelWidth">80</Property>
+              <AutoFormElement id="twoId" layoutConstraint="colSpan:2">
+                <Property name="name">storageReal</Property>
+                <Property name="property">storageReal</Property>
+                <Editor/>
+              </AutoFormElement>
+              <AutoFormElement layoutConstraint="colSpan:2">
+                <Property name="name">foodVariety</Property>
+                <Property name="property">foodVariety</Property>
+                <Editor/>
+              </AutoFormElement>
+              <AutoFormElement layoutConstraint="colSpan:2">
+                <Property name="name">foodType</Property>
+                <Property name="property">foodType</Property>
+                <Editor/>
+              </AutoFormElement>
+              <AutoFormElement layoutConstraint="colSpan:2">
+                <Property name="name">foodLevel</Property>
+                <Property name="property">foodLevel</Property>
+                <Editor/>
+              </AutoFormElement>
+              <AutoFormElement layoutConstraint="colSpan:2">
+                <Property name="name">foodYear</Property>
+                <Property name="property">foodYear</Property>
+                <Editor/>
+              </AutoFormElement>
+              <AutoFormElement layoutConstraint="colSpan:2">
+                <Property name="name">foodLocation</Property>
+                <Property name="property">foodLocation</Property>
+                <Property name="trigger">ddFoodOrigin</Property>
+                <Editor/>
+              </AutoFormElement>
+              <AutoFormElement layoutConstraint="colSpan:2">
+                <Property name="name">storeDate</Property>
+                <Property name="property">storeDate</Property>
+                <Editor/>
+              </AutoFormElement>
+              <Label>
+                <Property name="text"></Property>
+                <Property name="style">
+                  <Property name="color">blue</Property>
+                  <Property name="padding-left">50px</Property>
+                </Property>
+              </Label>
+              <Label layoutConstraint="colSpan:3">
+                <Property name="text">璇存槑锛�1銆佸疄闄呭偍閲忚皟鏁磋浣跨敤鈥滃簱瀛樼鐞嗏�濆姛鑳斤紱</Property>
+                <Property name="style">
+                  <Property name="color">blue</Property>
+                  <Property name="padding-left">50px</Property>
+                </Property>
+              </Label>
+            </AutoForm>
+          </Children>
+        </FieldSet>
+        <FieldSet layout="padding:5">
+          <Property name="caption">璐ㄦ淇℃伅</Property>
+          <Buttons/>
+          <Children>
+            <AutoForm>
+              <Property name="dataSet">dataSetdepot</Property>
+              <Property name="readOnly">false</Property>
+              <Property name="labelSeparator"> : </Property>
+              <Property name="labelAlign">right</Property>
+              <Property name="cols">*,*,*,*,*,*</Property>
+              <Property name="labelWidth">80</Property>
+              <AutoFormElement layoutConstraint="colSpan:2">
+                <Property name="name">perWet</Property>
+                <Property name="property">perWet</Property>
+                <Editor/>
+              </AutoFormElement>
+              <AutoFormElement layoutConstraint="colSpan:2">
+                <Property name="name">perImpurity</Property>
+                <Property name="property">perImpurity</Property>
+                <Editor/>
+              </AutoFormElement>
+              <AutoFormElement layoutConstraint="colSpan:2">
+                <Property name="name">bulkWeight</Property>
+                <Property name="property">bulkWeight</Property>
+                <Editor/>
+              </AutoFormElement>
+              <AutoFormElement layoutConstraint="colSpan:2">
+                <Property name="name">checkDate</Property>
+                <Property name="property">checkDate</Property>
+                <Editor/>
+              </AutoFormElement>
+              <Label>
+                <Property name="text"></Property>
+                <Property name="style">
+                  <Property name="color">blue</Property>
+                  <Property name="padding-left">50px</Property>
+                </Property>
+              </Label>
+              <Label layoutConstraint="colSpan:3">
+                <Property name="text">璇存槑锛氬偍澶囩伯璐ㄦ淇℃伅浼氭牴鎹川閲忕鐞� 鑷姩鍚屾鏇存柊</Property>
+                <Property name="style">
+                  <Property name="color">blue</Property>
+                  <Property name="padding-left">50px</Property>
+                </Property>
+              </Label>
+            </AutoForm>
+          </Children>
+        </FieldSet>
+      </Children>
+      <Tools/>
+    </Dialog>
+    <Dialog id="statusConfirmlog" layout="regionPadding:10">
+      <Property name="iconClass">fa fa-pencil-square-o</Property>
+      <Property name="caption">灏佷粨淇℃伅</Property>
+      <Property name="width">1200</Property>
+      <Property name="closeable">false</Property>
+      <Buttons>
+        <Button>
+          <ClientEvent name="onClick">var data = view.get(&quot;#dataSetConfirm.data:#&quot;);&#xD;
+view.get(&quot;#statusConfirmSave&quot;).execute(function(result){&#xD;
+	if(result){&#xD;
+		$notify(result);&#xD;
+	}else{&#xD;
+		self.get(&quot;parent&quot;).hide();&#xD;
+	}&#xD;
+});</ClientEvent>
+          <Property name="caption">纭畾</Property>
+          <Property name="iconClass">fa fa-check-circle</Property>
+          <Property name="exClassName">btn1</Property>
+        </Button>
+        <Button>
+          <ClientEvent name="onClick">var cur = view.get(&quot;#dataSetConfirm.data:#&quot;);&#xD;
+if(cur) cur.cancel();&#xD;
+self.get(&quot;parent&quot;).hide();</ClientEvent>
+          <Property name="caption">鍙栨秷</Property>
+          <Property name="iconClass">fa fa-times-circle</Property>
+          <Property name="exClassName">btn3</Property>
+        </Button>
+      </Buttons>
+      <Children>
+        <FieldSet layout="padding:15">
+          <Property name="caption">灏佷粨纭</Property>
+          <Buttons/>
+          <Children>
+            <AutoForm>
+              <Property name="dataSet">dataSetConfirm</Property>
+              <Property name="readOnly">false</Property>
+              <Property name="labelSeparator"> : </Property>
+              <Property name="labelAlign">right</Property>
+              <Property name="cols">*,*,*</Property>
+              <Property name="labelWidth">100</Property>
+              <AutoFormElement>
+                <Property name="name">fcqrdh</Property>
+                <Property name="property">fcqrdh</Property>
+                <Editor>
+                  <TextEditor>
+                    <Property name="blankText">-- 鍚庡彴鑷姩鐢熸垚 --</Property>
+                  </TextEditor>
+                </Editor>
+              </AutoFormElement>
+              <AutoFormElement>
+                <Property name="name">deptId</Property>
+                <Property name="property">deptId</Property>
+                <Editor/>
+              </AutoFormElement>
+              <AutoFormElement>
+                <Property name="name">depotId</Property>
+                <Property name="property">depotId</Property>
+                <Editor/>
+              </AutoFormElement>
+              <AutoFormElement>
+                <Property name="name">fcrq</Property>
+                <Property name="property">fcrq</Property>
+                <Editor/>
+              </AutoFormElement>
+              <AutoFormElement>
+                <Property name="name">foodVariety</Property>
+                <Property name="property">foodVariety</Property>
+                <Editor/>
+              </AutoFormElement>
+              <AutoFormElement>
+                <Property name="name">foodType</Property>
+                <Property name="property">foodType</Property>
+                <Editor/>
+              </AutoFormElement>
+              <AutoFormElement>
+                <Property name="name">foodLevel</Property>
+                <Property name="property">foodLevel</Property>
+                <Editor/>
+              </AutoFormElement>
+              <AutoFormElement>
+                <Property name="name">foodLocation</Property>
+                <Property name="property">foodLocation</Property>
+                <Property name="trigger">ddFoodOrigin</Property>
+                <Editor/>
+              </AutoFormElement>
+              <AutoFormElement>
+                <Property name="name">foodYear</Property>
+                <Property name="property">foodYear</Property>
+                <Property name="trigger">yearDropDown1</Property>
+                <Editor/>
+              </AutoFormElement>
+              <AutoFormElement>
+                <Property name="name">country</Property>
+                <Property name="property">country</Property>
+                <Editor/>
+              </AutoFormElement>
+              <AutoFormElement>
+                <Property name="name">storeKeeperName</Property>
+                <Property name="property">storeKeeperName</Property>
+                <Editor/>
+              </AutoFormElement>
+              <AutoFormElement>
+                <Property name="name">fcsl</Property>
+                <Property name="property">fcsl</Property>
+                <Editor/>
+              </AutoFormElement>
+              <AutoFormElement>
+                <Property name="name">applyUser</Property>
+                <Property name="property">applyUser</Property>
+                <Editor/>
+              </AutoFormElement>
+              <AutoFormElement>
+                <Property name="name">deptAuditUser</Property>
+                <Property name="property">deptAuditUser</Property>
+                <Editor/>
+              </AutoFormElement>
+              <AutoFormElement>
+                <Property name="name">leaderAuditUser</Property>
+                <Property name="property">leaderAuditUser</Property>
+                <Editor/>
+              </AutoFormElement>
+              <AutoFormElement>
+                <Property name="name">updateTime</Property>
+                <Property name="property">updateTime</Property>
+                <Editor/>
+              </AutoFormElement>
+              <AutoFormElement layoutConstraint="colSpan:2">
+                <Property name="name">remarks</Property>
+                <Property name="property">remarks</Property>
+                <Editor/>
+              </AutoFormElement>
+            </AutoForm>
+          </Children>
+        </FieldSet>
+      </Children>
+      <Tools/>
+    </Dialog>
+    <UpdateAction id="updateactionSave">
+      <Property name="executingMessage">姝e湪鎵ц涓�..</Property>
+      <Property name="dataResolver">depotPR#saveOrUpdate</Property>
+      <UpdateItem>
+        <Property name="dataSet">dataSetdepot</Property>
+        <Property name="dataPath">[#current]</Property>
+        <Property name="alias">data</Property>
+      </UpdateItem>
+    </UpdateAction>
+    <UpdateAction id="statusConfirmSave">
+      <Property name="executingMessage">姝e湪鎵ц涓�..</Property>
+      <Property name="dataResolver">depotStatusConfirmPR#saveData</Property>
+      <UpdateItem>
+        <Property name="dataSet">dataSetConfirm</Property>
+        <Property name="dataPath">[#current]</Property>
+        <Property name="alias">data</Property>
+      </UpdateItem>
+    </UpdateAction>
+    <AjaxAction id="deleteAjaxAction">
+      <Property name="successMessage">鍒犻櫎鎴愬姛</Property>
+      <Property name="service">depotPR#deletedepot</Property>
+      <Property name="executingMessage">姝e湪鍒犻櫎</Property>
+    </AjaxAction>
+    <AjaxAction id="ajaxRefreshCache">
+      <Property name="service">depotPR#flushCache</Property>
+      <Property name="successMessage">鍒锋柊鎴愬姛锛�</Property>
+      <Property name="confirmMessage">纭畾瑕佸埛鏂扮紦瀛樹箞锛�</Property>
+    </AjaxAction>
+    <AjaxAction id="ajaxExcel">
+      <Property name="async">false</Property>
+      <Property name="executingMessage">姝e湪鎵ц瀵煎嚭鈥︹��</Property>
+      <Property name="service">depotPR#excelDepot</Property>
+      <Property name="confirmMessage">纭畾瀵煎嚭褰撳墠鏁版嵁鍚楋紵</Property>
+    </AjaxAction>
+    <YearDropDown id="yearDropDown1"/>
+    <DataSetDropDown id="triggerUserList">
+      <Property name="dataSet">dataSetUser</Property>
+      <Property name="property">userName</Property>
+      <Property name="assignmentMap">storeKeeperName=userName,storeKeeper=loginName</Property>
+    </DataSetDropDown>
+    <CustomDropDown id="ddFoodOrigin">
+      <Property name="minHeight">500</Property>
+      <Property name="assignmentMap">foodLocation=name</Property>
+      <Property name="minWidth">500</Property>
+      <Container layout="regionPadding:5">
+        <DataSet id="dsFoodOrigin">
+          <Property name="dataProvider">dicAreaPR#pageList</Property>
+          <Property name="parameter"></Property>
+          <Property name="pageSize">30</Property>
+          <Property name="dataType">[dtArea]</Property>
+        </DataSet>
+        <Container layout="hbox regionPadding:5">
+          <TextEditor id="key2">
+            <Property name="blankText"> -- 鍚嶇О --</Property>
+            <Property name="width">200</Property>
+          </TextEditor>
+          <Button>
+            <ClientEvent name="onClick">var key = view.get(&quot;#key2.value&quot;);&#xD;
+                  view.get(&quot;#dsFoodOrigin&quot;).set(&quot;parameter&quot;,{key:key}).flushAsync();</ClientEvent>
+            <Property name="caption">鏌ヨ</Property>
+            <Property name="iconClass">fa fa-search</Property>
+          </Button>
+          <Button>
+            <ClientEvent name="onClick">var data = view.get(&quot;#dsFoodOrigin.data:#&quot;);&#xD;
+                  if(data){&#xD;
+                  view.get(&quot;#ddFoodOrigin&quot;).close(data.toJSON());&#xD;
+                  }</ClientEvent>
+            <Property name="iconClass">fa fa-check</Property>
+            <Property name="caption">纭畾</Property>
+          </Button>
+        </Container>
+        <DataGrid>
+          <ClientEvent name="onDataRowDoubleClick">var data = view.get(&quot;#dsFoodOrigin.data:#&quot;);&#xD;
+                if(data){&#xD;
+                view.get(&quot;#ddFoodOrigin&quot;).close(data.toJSON());&#xD;
+                }</ClientEvent>
+          <Property name="dataSet">dsFoodOrigin</Property>
+          <Property name="readOnly">true</Property>
+          <DataColumn name="code">
+            <Property name="property">code</Property>
+            <Property name="readOnly">true</Property>
+            <Property name="align">center</Property>
+          </DataColumn>
+          <DataColumn name="name">
+            <ClientEvent name="onRenderCell">arg.dom.style.fontWeight = &quot;bold&quot;;&#xD;
+arg.processDefault = true;</ClientEvent>
+            <Property name="property">name</Property>
+            <Property name="readOnly">true</Property>
+            <Property name="align">center</Property>
+          </DataColumn>
+          <DataColumn name="simple">
+            <Property name="property">simple</Property>
+            <Property name="readOnly">true</Property>
+            <Property name="align">center</Property>
+          </DataColumn>
+        </DataGrid>
+        <DataPilot layoutConstraint="bottom">
+          <Property name="dataSet">dsFoodOrigin</Property>
+        </DataPilot>
+      </Container>
+    </CustomDropDown>
+    <ListDropDown id="listOri">
+      <Property name="items">涓�,鍗�,瑗�,鍖�,涓滃寳,涓滃崡,瑗垮崡,瑗垮寳</Property>
+    </ListDropDown>
+  </View>
+</ViewConfig>
diff --git a/igds-dzhwk-view/src/main/java/com/fzzy/igds/sys/Dept.view.xml b/igds-dzhwk-view/src/main/java/com/fzzy/igds/sys/Dept.view.xml
new file mode 100644
index 0000000..12d68e0
--- /dev/null
+++ b/igds-dzhwk-view/src/main/java/com/fzzy/igds/sys/Dept.view.xml
@@ -0,0 +1,440 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ViewConfig>
+  <Arguments/>
+  <Context/>
+  <Model>
+    <DataType name="dtMain">
+      <Property name="creationType">com.fzzy.igds.dzhwk.domain.Dept</Property>
+      <PropertyDef name="id">
+        <Property></Property>
+        <Property name="label">ID</Property>
+      </PropertyDef>
+      <PropertyDef name="companyId">
+        <Property></Property>
+        <Property name="label">绯荤粺缁勭粐缂栫爜</Property>
+      </PropertyDef>
+      <PropertyDef name="kqdm">
+        <Property></Property>
+        <Property name="label">搴撳尯浠g爜</Property>
+        <Property name="required">true</Property>
+      </PropertyDef>
+      <PropertyDef name="tykqbm">
+        <Property></Property>
+        <Property name="label">缁熶竴搴撳尯缂栫爜</Property>
+      </PropertyDef>
+      <PropertyDef name="dwdm">
+        <Property></Property>
+        <Property name="label">鍗曚綅浠g爜</Property>
+      </PropertyDef>
+      <PropertyDef name="tydwbm">
+        <Property></Property>
+        <Property name="label">缁熶竴鍗曚綅缂栫爜</Property>
+        <Property name="required">true</Property>
+      </PropertyDef>
+      <PropertyDef name="kqmc">
+        <Property></Property>
+        <Property name="label">搴撳尯鍚嶇О</Property>
+      </PropertyDef>
+      <PropertyDef name="kqdz">
+        <Property></Property>
+        <Property name="label">搴撳尯鍦板潃</Property>
+      </PropertyDef>
+      <PropertyDef name="xzqhdm">
+        <Property></Property>
+        <Property name="label">鍖哄垝浠g爜</Property>
+      </PropertyDef>
+      <PropertyDef name="xzqhmc">
+        <Property></Property>
+        <Property name="label">鍖哄垝鍚嶇О</Property>
+      </PropertyDef>
+      <PropertyDef name="kqcq">
+        <Property></Property>
+        <Property name="label">搴撳尯浜ф潈</Property>
+        <Property name="mapping">
+          <Property name="keyProperty">key</Property>
+          <Property name="valueProperty">value</Property>
+          <Property name="mapValues">
+            <Collection>
+              <Entity>
+                <Property name="key">1</Property>
+                <Property name="value">1-鑷湁</Property>
+              </Entity>
+              <Entity>
+                <Property name="key">2</Property>
+                <Property name="value">2-绉熻祦</Property>
+              </Entity>
+              <Entity>
+                <Property name="key">3</Property>
+                <Property name="value">3-鍏辨湁</Property>
+              </Entity>
+              <Entity>
+                <Property name="key">4</Property>
+                <Property name="value">4-娣峰悎</Property>
+              </Entity>
+              <Entity>
+                <Property name="key">9</Property>
+                <Property name="value">9-鍏朵粬</Property>
+              </Entity>
+            </Collection>
+          </Property>
+        </Property>
+      </PropertyDef>
+      <PropertyDef name="yxcr">
+        <Property name="dataType">Double</Property>
+        <Property name="label">鏈夋晥浠撳</Property>
+      </PropertyDef>
+      <PropertyDef name="yxgr">
+        <Property name="dataType">Double</Property>
+        <Property name="label">鏈夋晥缃愬</Property>
+      </PropertyDef>
+      <PropertyDef name="zdmj">
+        <Property name="dataType">Double</Property>
+        <Property name="label">鍗犲湴闈㈢Н</Property>
+      </PropertyDef>
+      <PropertyDef name="cfs">
+        <Property name="dataType">Integer</Property>
+        <Property name="label">浠撴埧鏁�</Property>
+        <Property name="displayFormat">#0 鏍�</Property>
+      </PropertyDef>
+      <PropertyDef name="ygs">
+        <Property name="dataType">Integer</Property>
+        <Property name="label">娌圭綈鏁�</Property>
+        <Property name="displayFormat">#0 涓�</Property>
+      </PropertyDef>
+      <PropertyDef name="jd">
+        <Property name="dataType">Double</Property>
+        <Property name="label">缁忓害</Property>
+      </PropertyDef>
+      <PropertyDef name="wd">
+        <Property name="dataType">Double</Property>
+        <Property name="label">绾害</Property>
+      </PropertyDef>
+      <PropertyDef name="kqzt">
+        <Property></Property>
+        <Property name="label">搴撳尯鐘舵��</Property>
+        <Property name="mapping">
+          <Property name="keyProperty">key</Property>
+          <Property name="valueProperty">value</Property>
+          <Property name="mapValues">
+            <Collection>
+              <Entity>
+                <Property name="key">1</Property>
+                <Property name="value">1-姝e父</Property>
+              </Entity>
+              <Entity>
+                <Property name="key">2</Property>
+                <Property name="value">2-閫�鍑哄偍澶囩伯鎵垮偍</Property>
+              </Entity>
+            </Collection>
+          </Property>
+        </Property>
+      </PropertyDef>
+      <PropertyDef name="zhgxsj">
+        <Property name="dataType">DateTime</Property>
+        <Property name="label">鏇存柊鏃堕棿</Property>
+      </PropertyDef>
+    </DataType>
+  </Model>
+  <View layout="regionPadding:10">
+    <Property name="packages">font-awesome,css-common</Property>
+    <DataSet id="dsMain">
+      <Property name="dataProvider">deptPR#getData</Property>
+      <Property name="dataType">[dtMain]</Property>
+    </DataSet>
+    <Container layout="regionPadding:10" layoutConstraint="top">
+      <Property name="exClassName">bg-color</Property>
+      <Property name="height">55</Property>
+      <Property name="contentOverflow">hidden</Property>
+      <Label layoutConstraint="left">
+        <Property name="text">鑿滃崟鏍忥細</Property>
+      </Label>
+      <Button layoutConstraint="left">
+        <ClientEvent name="onClick">&#xD;
+var select = view.get(&quot;#dgMain&quot;).get(&quot;selection&quot;);&#xD;
+if(select){&#xD;
+    view.get(&quot;#dialogMain&quot;).show();;&#xD;
+}else{&#xD;
+    $notify(&quot;璇烽�夋嫨闇�瑕佷慨鏀圭殑鏁版嵁鈥︹��&quot;);&#xD;
+}		  </ClientEvent>
+        <Property name="caption">璇︽儏缂栬緫</Property>
+        <Property name="exClassName">btn2</Property>
+        <Property name="iconClass">fa fa-pencil</Property>
+      </Button>
+      <Button layoutConstraint="left">
+        <ClientEvent name="onClick">  &#xD;
+var select = view.get(&quot;#dgMain&quot;).get(&quot;selection&quot;);&#xD;
+if(select){&#xD;
+    view.get(&quot;#ajaxDel&quot;).set(&quot;parameter&quot;,select).execute(function(){&#xD;
+		select.remove();&#xD;
+	});&#xD;
+}else{&#xD;
+    $notify(&quot;璇烽�夋嫨闇�瑕佸垹闄ょ殑鏁版嵁鈥︹��&quot;);&#xD;
+}</ClientEvent>
+        <Property name="caption">鍒犻櫎</Property>
+        <Property name="exClassName">btn3</Property>
+        <Property name="iconClass">fa fa-trash-o</Property>
+      </Button>
+    </Container>
+    <Container layout="regionPadding:10" layoutConstraint="center">
+      <Property name="exClassName">bg-color</Property>
+      <DataGrid id="dgMain">
+        <ClientEvent name="onDataRowDoubleClick">var dialog= view.get(&quot;#dialogMain&quot;);&#xD;
+          dialog.show();</ClientEvent>
+        <Property name="dataSet">dsMain</Property>
+        <Property name="readOnly">true</Property>
+        <Property name="selectionMode">singleRow</Property>
+        <RowSelectorColumn/>
+        <RowNumColumn/>
+        <DataColumn name="kqmc">
+          <Property name="property">kqmc</Property>
+          <Property name="align">center</Property>
+        </DataColumn>
+        <DataColumn name="kqdm">
+          <Property name="property">kqdm</Property>
+          <Property name="align">center</Property>
+        </DataColumn>
+        <DataColumn name="kqcq">
+          <Property name="property">kqcq</Property>
+          <Property name="align">center</Property>
+        </DataColumn>
+        <DataColumn name="yxcr">
+          <Property name="property">yxcr</Property>
+          <Property name="align">center</Property>
+        </DataColumn>
+        <DataColumn name="yxgr">
+          <Property name="property">yxgr</Property>
+          <Property name="align">center</Property>
+        </DataColumn>
+        <DataColumn name="cfs">
+          <Property name="property">cfs</Property>
+          <Property name="align">center</Property>
+        </DataColumn>
+        <DataColumn name="ygs">
+          <Property name="property">ygs</Property>
+          <Property name="align">center</Property>
+        </DataColumn>
+        <DataColumn name="kqzt">
+          <Property name="property">kqzt</Property>
+          <Property name="align">center</Property>
+        </DataColumn>
+        <DataColumn name="zhgxsj">
+          <Property name="property">zhgxsj</Property>
+          <Property name="align">center</Property>
+        </DataColumn>
+      </DataGrid>
+    </Container>
+    <Dialog id="dialogMain">
+      <Property name="caption">搴撳尯淇℃伅</Property>
+      <Property name="width">1200</Property>
+      <Property name="closeable">false</Property>
+      <Buttons>
+        <Button id="btnOk">
+          <ClientEvent name="onClick">view.get(&quot;#uaSave&quot;).execute(function(result){&#xD;
+            if(result){&#xD;
+            $alert(result);&#xD;
+            }else{&#xD;
+            $notify(&quot;淇濆瓨鎴愬姛锛侊紒&quot;);&#xD;
+            view.get(&quot;#dialogMain&quot;).hide();&#xD;
+            }&#xD;
+            });</ClientEvent>
+          <Property name="caption">纭畾</Property>
+          <Property name="exClassName">btn1</Property>
+          <Property name="iconClass">fa fa-check</Property>
+        </Button>
+        <Button>
+          <ClientEvent name="onClick">view.get(&quot;#dsMain.data:#&quot;).cancel();&#xD;
+            self.get(&quot;parent&quot;).hide();</ClientEvent>
+          <Property name="caption">鍙栨秷</Property>
+          <Property name="exClassName">btn3</Property>
+          <Property name="iconClass">fa fa-times</Property>
+        </Button>
+      </Buttons>
+      <Children>
+        <FieldSet layout="padding:15">
+          <Property name="caption">鍩烘湰淇℃伅</Property>
+          <Buttons/>
+          <Children>
+            <AutoForm>
+              <Property name="dataSet">dsMain</Property>
+              <Property name="cols">*,*,*</Property>
+              <Property name="labelAlign">right</Property>
+              <Property name="labelSeparator"> : </Property>
+              <Property name="labelWidth">120</Property>
+              <AutoFormElement>
+                <Property name="name">kqmc</Property>
+                <Property name="property">kqmc</Property>
+                <Editor/>
+              </AutoFormElement>
+              <AutoFormElement>
+                <Property name="name">kqdm</Property>
+                <Property name="property">kqdm</Property>
+                <Editor/>
+              </AutoFormElement>
+              <AutoFormElement>
+                <Property name="name">tykqbm</Property>
+                <Property name="property">tykqbm</Property>
+                <Editor/>
+              </AutoFormElement>
+              <AutoFormElement>
+                <Property name="name">dwdm</Property>
+                <Property name="property">dwdm</Property>
+                <Editor/>
+              </AutoFormElement>
+              <AutoFormElement>
+                <Property name="name">tydwbm</Property>
+                <Property name="property">tydwbm</Property>
+                <Editor/>
+              </AutoFormElement>
+              <AutoFormElement>
+                <Property name="name">kqdz</Property>
+                <Property name="property">kqdz</Property>
+                <Editor/>
+              </AutoFormElement>
+              <AutoFormElement>
+                <Property name="name">xzqhmc</Property>
+                <Property name="property">xzqhmc</Property>
+                <Property name="trigger">ddFoodOrigin</Property>
+                <Editor/>
+              </AutoFormElement>
+              <AutoFormElement>
+                <Property name="name">xzqhdm</Property>
+                <Property name="property">xzqhdm</Property>
+                <Editor/>
+              </AutoFormElement>
+              <AutoFormElement>
+                <Property name="name">kqcq</Property>
+                <Property name="property">kqcq</Property>
+                <Editor/>
+              </AutoFormElement>
+              <AutoFormElement>
+                <Property name="name">yxcr</Property>
+                <Property name="property">yxcr</Property>
+                <Editor/>
+              </AutoFormElement>
+              <AutoFormElement>
+                <Property name="name">yxgr</Property>
+                <Property name="property">yxgr</Property>
+                <Editor/>
+              </AutoFormElement>
+              <AutoFormElement>
+                <Property name="name">zdmj</Property>
+                <Property name="property">zdmj</Property>
+                <Editor/>
+              </AutoFormElement>
+              <AutoFormElement>
+                <Property name="name">cfs</Property>
+                <Property name="property">cfs</Property>
+                <Editor/>
+              </AutoFormElement>
+              <AutoFormElement>
+                <Property name="name">ygs</Property>
+                <Property name="property">ygs</Property>
+                <Editor/>
+              </AutoFormElement>
+              <AutoFormElement>
+                <Property name="name">kqzt</Property>
+                <Property name="property">kqzt</Property>
+                <Editor/>
+              </AutoFormElement>
+              <AutoFormElement>
+                <Property name="name">jd</Property>
+                <Property name="property">jd</Property>
+                <Editor/>
+              </AutoFormElement>
+              <AutoFormElement>
+                <Property name="name">wd</Property>
+                <Property name="property">wd</Property>
+                <Editor/>
+              </AutoFormElement>
+              <Link>
+                <Property name="href">http://api.map.baidu.com/lbsapi/getpoint/</Property>
+                <Property name="target">_blank</Property>
+                <Property name="style">
+                  <Property name="padding-left">150px</Property>
+                </Property>
+                <Property name="text">甯姪锛氱偣鍑诲潗鏍囦綅缃嬀鍙�</Property>
+              </Link>
+            </AutoForm>
+          </Children>
+        </FieldSet>
+      </Children>
+      <Tools/>
+    </Dialog>
+    <UpdateAction id="uaSave">
+      <Property name="dataResolver">deptPR#saveData</Property>
+      <Property name="successMessage">鏁版嵁淇濆瓨瀹屾垚锛�</Property>
+      <UpdateItem>
+        <Property name="dataSet">dsMain</Property>
+        <Property name="dataPath">[#current]</Property>
+        <Property name="validateData">false</Property>
+      </UpdateItem>
+    </UpdateAction>
+    <AjaxAction id="ajaxDel">
+      <Property name="service">deptPR#delData</Property>
+      <Property name="confirmMessage">纭畾瑕佹墽琛屽垹闄や箞锛�</Property>
+    </AjaxAction>
+    <CustomDropDown id="ddFoodOrigin">
+      <Property name="minHeight">500</Property>
+      <Property name="assignmentMap">xzqhmc=name,xzqhdm=code</Property>
+      <Property name="minWidth">500</Property>
+      <Container layout="regionPadding:5">
+        <DataSet id="dsFoodOrigin">
+          <Property name="dataProvider">dicAreaPR#pageList</Property>
+          <Property name="dataType">[dtArea]</Property>
+          <Property name="parameter"></Property>
+          <Property name="pageSize">10</Property>
+        </DataSet>
+        <Container layout="hbox regionPadding:5">
+          <TextEditor id="key2">
+            <Property name="blankText"> -- 鍚嶇О --</Property>
+            <Property name="width">200</Property>
+          </TextEditor>
+          <Button>
+            <ClientEvent name="onClick">var key = view.get(&quot;#key2.value&quot;);&#xD;
+              view.get(&quot;#dsFoodOrigin&quot;).set(&quot;parameter&quot;,{key:key}).flushAsync();</ClientEvent>
+            <Property name="caption">鏌ヨ</Property>
+            <Property name="exClassName">btn4</Property>
+            <Property name="iconClass">fa fa-search</Property>
+          </Button>
+          <Button>
+            <ClientEvent name="onClick">var data = view.get(&quot;#dsFoodOrigin.data:#&quot;);&#xD;
+              if(data){&#xD;
+              view.get(&quot;#ddFoodOrigin&quot;).close(data.toJSON());&#xD;
+              }</ClientEvent>
+            <Property name="iconClass">fa fa-check</Property>
+            <Property name="exClassName">btn1</Property>
+            <Property name="caption">纭畾</Property>
+          </Button>
+        </Container>
+        <DataGrid>
+          <ClientEvent name="onDataRowDoubleClick">var data = view.get(&quot;#dsFoodOrigin.data:#&quot;);&#xD;
+            if(data){&#xD;
+            view.get(&quot;#ddFoodOrigin&quot;).close(data.toJSON());&#xD;
+            }</ClientEvent>
+          <Property name="dataSet">dsFoodOrigin</Property>
+          <Property name="readOnly">true</Property>
+          <DataColumn name="code">
+            <Property name="property">code</Property>
+            <Property name="readOnly">true</Property>
+            <Property name="align">center</Property>
+          </DataColumn>
+          <DataColumn name="name">
+            <ClientEvent name="onRenderCell">arg.dom.style.fontWeight = &quot;bold&quot;;&#xD;
+              arg.processDefault = true;</ClientEvent>
+            <Property name="property">name</Property>
+            <Property name="readOnly">true</Property>
+            <Property name="align">center</Property>
+          </DataColumn>
+          <DataColumn name="simple">
+            <Property name="property">simple</Property>
+            <Property name="readOnly">true</Property>
+            <Property name="align">center</Property>
+          </DataColumn>
+        </DataGrid>
+        <DataPilot layoutConstraint="bottom">
+          <Property name="dataSet">dsFoodOrigin</Property>
+        </DataPilot>
+      </Container>
+    </CustomDropDown>
+  </View>
+</ViewConfig>
diff --git a/igds-dzhwk-view/src/main/java/com/fzzy/igds/sys/DicArea.view.xml b/igds-dzhwk-view/src/main/java/com/fzzy/igds/sys/DicArea.view.xml
new file mode 100644
index 0000000..109817c
--- /dev/null
+++ b/igds-dzhwk-view/src/main/java/com/fzzy/igds/sys/DicArea.view.xml
@@ -0,0 +1,285 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ViewConfig>
+  <Arguments/>
+  <Context/>
+  <Model>
+    <DataType name="dtMain">
+      <Property name="creationType">com.fzzy.igds.dzhwk.domain.DicArea</Property>
+      <PropertyDef name="code">
+        <Property></Property>
+        <Property name="label">鍖哄煙缂栫爜</Property>
+        <Property name="required">true</Property>
+      </PropertyDef>
+      <PropertyDef name="name">
+        <Property></Property>
+        <Property name="label">鍚嶇О</Property>
+        <Property name="required">true</Property>
+      </PropertyDef>
+      <PropertyDef name="parentCode">
+        <Property></Property>
+        <Property name="label">鎵�灞炲尯鍩�</Property>
+        <Property name="mapping">
+          <Property name="mapValues">${dorado.getDataProvider(&quot;dicAreaPR#getDicAreaByParentCode&quot;).getResult()}</Property>
+          <Property name="keyProperty">code</Property>
+          <Property name="valueProperty">name</Property>
+        </Property>
+      </PropertyDef>
+      <PropertyDef name="parentName">
+        <Property></Property>
+        <Property name="label">涓婄骇鍖哄煙</Property>
+        <Property name="required">false</Property>
+      </PropertyDef>
+      <PropertyDef name="type">
+        <Property></Property>
+        <Property name="label">绫诲瀷</Property>
+        <Property name="required">true</Property>
+        <Property name="mapping">
+          <Property name="keyProperty">value</Property>
+          <Property name="valueProperty">name</Property>
+          <Property name="mapValues">
+            <Collection>
+              <Entity>
+                <Property name="name">鐪�</Property>
+                <Property name="value">1</Property>
+              </Entity>
+              <Entity>
+                <Property name="name">甯�</Property>
+                <Property name="value">2</Property>
+              </Entity>
+              <Entity>
+                <Property name="name">鍖哄幙</Property>
+                <Property name="value">3</Property>
+              </Entity>
+            </Collection>
+          </Property>
+        </Property>
+      </PropertyDef>
+      <PropertyDef name="simple">
+        <Property></Property>
+        <Property name="label">绠�鎷�</Property>
+        <Property name="required">false</Property>
+      </PropertyDef>
+      <PropertyDef name="disabledTag">
+        <Property></Property>
+        <Property name="label">鏄惁绂佺敤</Property>
+        <Property name="required">false</Property>
+        <Property name="mapping">
+          <Property name="mapValues">
+            <Collection>
+              <Entity>
+                <Property name="name">绂佺敤</Property>
+                <Property name="value">Y</Property>
+              </Entity>
+              <Entity>
+                <Property name="name">鍚敤</Property>
+                <Property name="value">N</Property>
+              </Entity>
+            </Collection>
+          </Property>
+          <Property name="keyProperty">value</Property>
+          <Property name="valueProperty">name</Property>
+        </Property>
+      </PropertyDef>
+      <PropertyDef name="remark">
+        <Property></Property>
+        <Property name="label">澶囨敞</Property>
+        <Property name="required">false</Property>
+      </PropertyDef>
+    </DataType>
+  </Model>
+  <View layout="padding:5;regionPadding:5">
+    <ClientEvent name="onReady">//鏌ヨ&#xD;
+query = function(){&#xD;
+    view.get(&quot;#dsMain&quot;).flushAsync();&#xD;
+};&#xD;
+      &#xD;
+query();</ClientEvent>
+    <Property name="packages">font-awesome,css-common</Property>
+    <DataSet id="dsMain">
+      <Property name="dataType">[dtMain]</Property>
+      <Property name="dataProvider">dicAreaPR#pageList</Property>
+      <Property name="loadMode">manual</Property>
+      <Property name="pageSize">20</Property>
+    </DataSet>
+    <Container layout="regionPadding:10" layoutConstraint="top">
+      <Property name="exClassName">bg-color</Property>
+      <Property name="contentOverflow">hidden</Property>
+      <Property name="height">55</Property>
+      <Label layoutConstraint="left">
+        <Property name="text">鑿滃崟鏍忥細</Property>
+      </Label>
+      <Button layoutConstraint="left">
+        <ClientEvent name="onClick">view.get(&quot;#dsMain&quot;).insert();&#xD;
+          view.get(&quot;#dialogMain&quot;).show();&#xD;
+        </ClientEvent>
+        <Property name="caption">鏂板</Property>
+        <Property name="exClassName">btn1</Property>
+        <Property name="iconClass">fa fa-plus</Property>
+      </Button>
+      <Button layoutConstraint="left">
+        <ClientEvent name="onClick">&#xD;
+		  &#xD;
+var select = view.get(&quot;#dataGridMain&quot;).get(&quot;selection&quot;);&#xD;
+if(select){&#xD;
+    view.get(&quot;#dialogMain&quot;).show();;&#xD;
+}else{&#xD;
+    $notify(&quot;璇烽�夋嫨闇�瑕佷慨鏀圭殑鏁版嵁鈥︹��&quot;);&#xD;
+}	</ClientEvent>
+        <Property name="caption">缂栬緫</Property>
+        <Property name="exClassName">btn2</Property>
+        <Property name="iconClass">fa fa-pencil</Property>
+      </Button>
+      <Button layoutConstraint="left">
+        <ClientEvent name="onClick">   &#xD;
+var select = view.get(&quot;#dataGridMain&quot;).get(&quot;selection&quot;);&#xD;
+if(select){&#xD;
+    view.get(&quot;#ajaxDel&quot;).set(&quot;parameter&quot;,select).execute(function(){&#xD;
+		select.remove();&#xD;
+	});&#xD;
+}else{&#xD;
+    $notify(&quot;璇烽�夋嫨闇�瑕佸垹闄ょ殑鏁版嵁鈥︹��&quot;);&#xD;
+}</ClientEvent>
+        <Property name="caption">鍒犻櫎</Property>
+        <Property name="exClassName">btn3</Property>
+        <Property name="iconClass">fa fa-minus</Property>
+      </Button>
+    </Container>
+    <Container layoutConstraint="center">
+      <Property name="exClassName">bg-color</Property>
+      <DataGrid id="dataGridMain" layoutConstraint="center">
+        <ClientEvent name="onDataRowDoubleClick">var data = view.get(&quot;#dsMain.data:#&quot;);&#xD;
+          if(data){&#xD;
+          view.get(&quot;#dialogMain&quot;).show();&#xD;
+          }</ClientEvent>
+        <Property name="dataSet">dsMain</Property>
+        <Property name="readOnly">true</Property>
+        <Property name="selectionMode">singleRow</Property>
+        <RowSelectorColumn/>
+        <RowNumColumn/>
+        <DataColumn>
+          <Property name="property">code</Property>
+          <Property name="align">center</Property>
+          <Property name="name">code</Property>
+        </DataColumn>
+        <DataColumn>
+          <Property name="property">name</Property>
+          <Property name="align">center</Property>
+          <Property name="name">name</Property>
+        </DataColumn>
+        <DataColumn>
+          <Property name="property">simple</Property>
+          <Property name="align">center</Property>
+          <Property name="name">simple</Property>
+        </DataColumn>
+        <DataColumn>
+          <Property name="property">parentCode</Property>
+          <Property name="align">center</Property>
+          <Property name="name">parentCode</Property>
+        </DataColumn>
+        <DataColumn>
+          <Property name="property">type</Property>
+          <Property name="align">center</Property>
+          <Property name="name">type</Property>
+        </DataColumn>
+        <DataColumn>
+          <Property name="property">disabledTag</Property>
+          <Property name="align">center</Property>
+          <Property name="name">disabledTag</Property>
+        </DataColumn>
+        <DataColumn>
+          <Property name="property">remark</Property>
+          <Property name="align">center</Property>
+          <Property name="name">remark</Property>
+        </DataColumn>
+      </DataGrid>
+    </Container>
+    <Container layoutConstraint="bottom">
+      <Property name="exClassName">bg-color</Property>
+      <DataPilot layoutConstraint="right">
+        <Property name="dataSet">dsMain</Property>
+        <Property name="itemCodes">pageSize,pages</Property>
+      </DataPilot>
+    </Container>
+    <Dialog id="dialogMain">
+      <Property name="closeable">false</Property>
+      <Property name="caption">閰嶇疆淇℃伅</Property>
+      <Property name="width">60%</Property>
+      <Property name="iconClass">fa fa-tasks</Property>
+      <Buttons>
+        <Button id="btnOk">
+          <ClientEvent name="onClick">var data = view.get(&quot;#dsMain.data:#&quot;);&#xD;
+            &#xD;
+            if(data.validate() != 'ok'){&#xD;
+            $notify(&quot;鏁版嵁鏍¢獙澶辫触锛侊紒&quot;);&#xD;
+            return;&#xD;
+            }&#xD;
+            &#xD;
+            view.get(&quot;#uaAction&quot;).set(&quot;parameter&quot;,data).execute(function(){&#xD;
+            &#xD;
+            $notify(&quot;鏁版嵁鎵ц瀹屾垚锛侊紒&quot;);&#xD;
+            self.get(&quot;parent&quot;).hide();&#xD;
+            });</ClientEvent>
+          <Property name="caption">纭畾</Property>
+          <Property name="iconClass">fa fa-check</Property>
+        </Button>
+        <Button>
+          <ClientEvent name="onClick">view.get(&quot;#dsMain.data:#&quot;).cancel();&#xD;
+            self.get(&quot;parent&quot;).hide();</ClientEvent>
+          <Property name="caption">鍙栨秷</Property>
+          <Property name="iconClass">fa fa-times</Property>
+        </Button>
+      </Buttons>
+      <Children>
+        <AutoForm>
+          <Property name="dataSet">dsMain</Property>
+          <Property name="cols">*,*</Property>
+          <Property name="labelAlign">right</Property>
+          <Property name="labelSeparator">锛�</Property>
+          <Property name="labelWidth">120</Property>
+          <AutoFormElement>
+            <Property name="name">code</Property>
+            <Property name="property">code</Property>
+            <Editor/>
+          </AutoFormElement>
+          <AutoFormElement>
+            <Property name="name">name</Property>
+            <Property name="property">name</Property>
+            <Editor/>
+          </AutoFormElement>
+          <AutoFormElement>
+            <Property name="name">simple</Property>
+            <Property name="property">simple</Property>
+            <Editor/>
+          </AutoFormElement>
+          <AutoFormElement>
+            <Property name="name">type</Property>
+            <Property name="property">type</Property>
+            <Editor/>
+          </AutoFormElement>
+          <AutoFormElement>
+            <Property name="name">disabledTag</Property>
+            <Property name="property">disabledTag</Property>
+            <Editor/>
+          </AutoFormElement>
+          <AutoFormElement layoutConstraint="colSpan:2">
+            <Property name="name">remark</Property>
+            <Property name="property">remark</Property>
+            <Editor/>
+          </AutoFormElement>
+        </AutoForm>
+      </Children>
+      <Tools/>
+    </Dialog>
+    <UpdateAction id="uaAction">
+      <Property name="dataResolver">dicAreaPR#saveDicArea</Property>
+      <UpdateItem>
+        <Property name="dataSet">dsMain</Property>
+        <Property name="dataPath">[#current]</Property>
+      </UpdateItem>
+    </UpdateAction>
+    <AjaxAction id="ajaxDel">
+      <Property name="service">dicAreaPR#delDicArea</Property>
+      <Property name="confirmMessage">纭畾瑕佹墽琛屽垹闄や箞锛�</Property>
+    </AjaxAction>
+  </View>
+</ViewConfig>
diff --git a/igds-dzhwk-view/src/main/java/com/fzzy/igds/sys/Granary.view.xml b/igds-dzhwk-view/src/main/java/com/fzzy/igds/sys/Granary.view.xml
new file mode 100644
index 0000000..7f72b5c
--- /dev/null
+++ b/igds-dzhwk-view/src/main/java/com/fzzy/igds/sys/Granary.view.xml
@@ -0,0 +1,318 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ViewConfig>
+  <Arguments/>
+  <Context/>
+  <Model>
+    <DataType name="dtMain">
+      <Property name="creationType">com.fzzy.igds.dzhwk.domain.Granary</Property>
+      <PropertyDef name="ajdh">
+        <Property></Property>
+        <Property name="label">寤掗棿浠g爜</Property>
+      </PropertyDef>
+      <PropertyDef name="companyId">
+        <Property></Property>
+        <Property name="label">缁勭粐缂栫爜</Property>
+      </PropertyDef>
+      <PropertyDef name="deptId">
+        <Property></Property>
+        <Property name="label">鎵�灞炲垎搴�</Property>
+        <Property name="mapping">
+          <Property name="mapValues">${dorado.getDataProvider(&quot;deptPR#loadParents&quot;).getResult()}</Property>
+          <Property name="keyProperty">deptId</Property>
+          <Property name="valueProperty">deptName</Property>
+        </Property>
+        <Property name="required">true</Property>
+      </PropertyDef>
+      <PropertyDef name="ajmc">
+        <Property></Property>
+        <Property name="label">寤掗棿鍚嶇О</Property>
+      </PropertyDef>
+      <PropertyDef name="cfbh">
+        <Property></Property>
+        <Property name="label">浠撴埧(鎴栨补缃�)缂栫爜</Property>
+        <Property name="mapping">
+          <Property name="mapValues">${dorado.getDataProvider(&quot;buildingPR#getCacheBuilding&quot;).getResult()}</Property>
+          <Property name="keyProperty">id</Property>
+          <Property name="valueProperty">name</Property>
+        </Property>
+      </PropertyDef>
+      <PropertyDef name="ajcd">
+        <Property name="dataType">double</Property>
+        <Property name="label">寤掗棿闀垮害</Property>
+        <Property name="displayFormat">#0.00绫�</Property>
+      </PropertyDef>
+      <PropertyDef name="ajkd">
+        <Property name="dataType">double</Property>
+        <Property name="label">寤掗棿瀹藉害</Property>
+        <Property name="displayFormat">#0.00绫�</Property>
+      </PropertyDef>
+      <PropertyDef name="ajgd">
+        <Property name="dataType">double</Property>
+        <Property name="label">寤掗棿楂樺害</Property>
+        <Property name="displayFormat">#0.00绫�</Property>
+      </PropertyDef>
+      <PropertyDef name="ajsjcr">
+        <Property name="dataType">double</Property>
+        <Property name="label">寤掗棿璁捐浠撳</Property>
+        <Property name="displayFormat">#0.000鍚�</Property>
+      </PropertyDef>
+      <PropertyDef name="ajlxdh">
+        <Property></Property>
+        <Property name="label">寤掗棿鑱旂郴鐢佃瘽</Property>
+      </PropertyDef>
+      <PropertyDef name="ajqyrq">
+        <Property name="dataType">Date</Property>
+        <Property name="label">寤掗棿鍚敤鏃ユ湡</Property>
+      </PropertyDef>
+      <PropertyDef name="ajzt">
+        <Property></Property>
+        <Property name="label">寤掗棿鐘舵��</Property>
+        <Property name="mapping">
+          <Property name="keyProperty">key</Property>
+          <Property name="valueProperty">value</Property>
+          <Property name="mapValues">
+            <Collection>
+              <Entity>
+                <Property name="key">1</Property>
+                <Property name="value">1-瀹屽ソ</Property>
+              </Entity>
+              <Entity>
+                <Property name="key">2</Property>
+                <Property name="value">2-闇�灏忎慨</Property>
+              </Entity>
+              <Entity>
+                <Property name="key">3</Property>
+                <Property name="value">3-闇�澶т慨</Property>
+              </Entity>
+              <Entity>
+                <Property name="key">4</Property>
+                <Property name="value">4-寰呮姤搴�</Property>
+              </Entity>
+              <Entity>
+                <Property name="key">5</Property>
+                <Property name="value">5-甯︽媶闄�</Property>
+              </Entity>
+              <Entity>
+                <Property name="key">6</Property>
+                <Property name="value">6-姝昏浠�</Property>
+              </Entity>
+              <Entity>
+                <Property name="key">9</Property>
+                <Property name="value">9-鍏朵粬</Property>
+              </Entity>
+            </Collection>
+          </Property>
+        </Property>
+      </PropertyDef>
+      <PropertyDef name="updateTime">
+        <Property name="dataType">Date</Property>
+        <Property name="label">鏇存柊鏃堕棿</Property>
+      </PropertyDef>
+    </DataType>
+  </Model>
+  <View layout="regionPadding:10">
+    <Property name="packages">font-awesome,css-common</Property>
+    <DataSet id="dsMain">
+      <Property name="dataProvider">granaryPR#getGranary</Property>
+      <Property name="dataType">[dtMain]</Property>
+    </DataSet>
+    <Container layout="regionPadding:10" layoutConstraint="top">
+      <Property name="exClassName">bg-color</Property>
+      <Property name="height">55</Property>
+      <Property name="contentOverflow">hidden</Property>
+      <Label layoutConstraint="left">
+        <Property name="text">鑿滃崟鏍忥細</Property>
+      </Label>
+      <Button layoutConstraint="left">
+        <ClientEvent name="onClick">view.get(&quot;#dsMain&quot;).insert();&#xD;
+view.get(&quot;#dialogMain&quot;).show();</ClientEvent>
+        <Property name="caption">鏂板</Property>
+        <Property name="exClassName">btn1</Property>
+        <Property name="iconClass">fa fa-plus</Property>
+      </Button>
+      <Button layoutConstraint="left">
+        <ClientEvent name="onClick">var dialog= view.get(&quot;#dialogMain&quot;);&#xD;
+dialog.show();</ClientEvent>
+        <Property name="caption">缂栬緫</Property>
+        <Property name="exClassName">btn2</Property>
+        <Property name="iconClass">fa fa-pencil</Property>
+      </Button>
+      <Button layoutConstraint="left">
+        <ClientEvent name="onClick">var cur = view.get(&quot;#dsMain.data:#&quot;);&#xD;
+if(!cur) return;&#xD;
+view.get(&quot;#ajaxDel&quot;).set(&quot;parameter&quot;,cur).execute(function(result){&#xD;
+	if(result){&#xD;
+		$alert(result);&#xD;
+		return;&#xD;
+	}else{&#xD;
+		cur.remove();&#xD;
+	}&#xD;
+});</ClientEvent>
+        <Property name="caption">鍒犻櫎</Property>
+        <Property name="exClassName">btn3</Property>
+        <Property name="iconClass">fa fa-trash-o</Property>
+      </Button>
+    </Container>
+    <Container layout="regionPadding:10" layoutConstraint="center">
+      <Property name="exClassName">bg-color</Property>
+      <DataGrid id="dgMain">
+        <ClientEvent name="onDataRowDoubleClick">var dialog= view.get(&quot;#dialogMain&quot;);&#xD;
+dialog.show();</ClientEvent>
+        <Property name="dataSet">dsMain</Property>
+        <Property name="readOnly">true</Property>
+        <RowNumColumn/>
+        <DataColumn name="ajdh">
+          <Property name="property">ajdh</Property>
+          <Property name="align">center</Property>
+        </DataColumn>
+        <DataColumn name="ajmc">
+          <Property name="property">ajmc</Property>
+          <Property name="align">center</Property>
+        </DataColumn>
+        <DataColumn name="cfbh">
+          <Property name="property">cfbh</Property>
+          <Property name="align">center</Property>
+        </DataColumn>
+        <DataColumn name="ajcd">
+          <Property name="property">ajcd</Property>
+          <Property name="align">center</Property>
+        </DataColumn>
+        <DataColumn name="ajkd">
+          <Property name="property">ajkd</Property>
+          <Property name="align">center</Property>
+        </DataColumn>
+        <DataColumn name="ajgd">
+          <Property name="property">ajgd</Property>
+          <Property name="align">center</Property>
+        </DataColumn>
+        <DataColumn name="ajsjcr">
+          <Property name="property">ajsjcr</Property>
+          <Property name="align">center</Property>
+        </DataColumn>
+        <DataColumn name="ajqyrq">
+          <Property name="property">ajqyrq</Property>
+          <Property name="align">center</Property>
+        </DataColumn>
+        <DataColumn name="ajzt">
+          <Property name="property">ajzt</Property>
+          <Property name="align">center</Property>
+        </DataColumn>
+        <DataColumn name="updateTime">
+          <Property name="property">updateTime</Property>
+          <Property name="align">center</Property>
+        </DataColumn>
+      </DataGrid>
+    </Container>
+    <Dialog id="dialogMain">
+      <Property name="closeable">false</Property>
+      <Property name="caption">寤掗棿淇℃伅</Property>
+      <Property name="width">60%</Property>
+      <Property name="iconClass">fa fa-tasks</Property>
+      <Buttons>
+        <Button id="btnOk">
+          <ClientEvent name="onClick">view.get(&quot;#uaSave&quot;).execute(function(result){&#xD;
+	if(result){&#xD;
+		$alert(result);&#xD;
+	}else{&#xD;
+		$notify(&quot;淇濆瓨鎴愬姛锛侊紒&quot;);&#xD;
+		view.get(&quot;#dialogMain&quot;).hide();&#xD;
+	}&#xD;
+});</ClientEvent>
+          <Property name="caption">纭畾</Property>
+          <Property name="exClassName">btn1</Property>
+          <Property name="iconClass">fa fa-check</Property>
+        </Button>
+        <Button>
+          <ClientEvent name="onClick">view.get(&quot;#dsMain.data:#&quot;).cancel();&#xD;
+self.get(&quot;parent&quot;).hide();</ClientEvent>
+          <Property name="caption">鍙栨秷</Property>
+          <Property name="exClassName">btn3</Property>
+          <Property name="iconClass">fa fa-times</Property>
+        </Button>
+      </Buttons>
+      <Children>
+        <AutoForm>
+          <Property name="dataSet">dsMain</Property>
+          <Property name="cols">*,*</Property>
+          <Property name="labelAlign">right</Property>
+          <Property name="labelSeparator">锛�</Property>
+          <Property name="labelWidth">150</Property>
+          <AutoFormElement>
+            <Property name="name">ajdh</Property>
+            <Property name="property">ajdh</Property>
+            <Editor/>
+          </AutoFormElement>
+          <AutoFormElement>
+            <Property name="name">deptId</Property>
+            <Property name="property">deptId</Property>
+            <Editor/>
+          </AutoFormElement>
+          <AutoFormElement>
+            <Property name="name">ajmc</Property>
+            <Property name="property">ajmc</Property>
+            <Editor/>
+          </AutoFormElement>
+          <AutoFormElement>
+            <Property name="name">cfbh</Property>
+            <Property name="property">cfbh</Property>
+            <Editor/>
+          </AutoFormElement>
+          <AutoFormElement>
+            <Property name="name">ajcd</Property>
+            <Property name="property">ajcd</Property>
+            <Editor/>
+          </AutoFormElement>
+          <AutoFormElement>
+            <Property name="name">ajkd</Property>
+            <Property name="property">ajkd</Property>
+            <Editor/>
+          </AutoFormElement>
+          <AutoFormElement>
+            <Property name="name">ajgd</Property>
+            <Property name="property">ajgd</Property>
+            <Editor/>
+          </AutoFormElement>
+          <AutoFormElement>
+            <Property name="name">ajsjcr</Property>
+            <Property name="property">ajsjcr</Property>
+            <Editor/>
+          </AutoFormElement>
+          <AutoFormElement>
+            <Property name="name">ajlxdh</Property>
+            <Property name="property">ajlxdh</Property>
+            <Editor/>
+          </AutoFormElement>
+          <AutoFormElement>
+            <Property name="name">ajqyrq</Property>
+            <Property name="property">ajqyrq</Property>
+            <Editor/>
+          </AutoFormElement>
+          <AutoFormElement>
+            <Property name="name">ajzt</Property>
+            <Property name="property">ajzt</Property>
+            <Editor/>
+          </AutoFormElement>
+          <AutoFormElement>
+            <Property name="name">updateTime</Property>
+            <Property name="property">updateTime</Property>
+            <Editor/>
+          </AutoFormElement>
+        </AutoForm>
+      </Children>
+      <Tools/>
+    </Dialog>
+    <UpdateAction id="uaSave">
+      <Property name="dataResolver">granaryPR#saveGranary</Property>
+      <Property name="successMessage">鏁版嵁淇濆瓨瀹屾垚锛�</Property>
+      <UpdateItem>
+        <Property name="dataSet">dsMain</Property>
+        <Property name="dataPath">[#current]</Property>
+        <Property name="validateData">false</Property>
+      </UpdateItem>
+    </UpdateAction>
+    <AjaxAction id="ajaxDel">
+      <Property name="service">granaryPR#delGranary</Property>
+      <Property name="confirmMessage">纭畾瑕佹墽琛屽垹闄や箞锛�</Property>
+    </AjaxAction>
+  </View>
+</ViewConfig>
diff --git a/igds-dzhwk-view/src/main/java/com/fzzy/igds/sys/pr/BuildingPR.java b/igds-dzhwk-view/src/main/java/com/fzzy/igds/sys/pr/BuildingPR.java
new file mode 100644
index 0000000..ca8389a
--- /dev/null
+++ b/igds-dzhwk-view/src/main/java/com/fzzy/igds/sys/pr/BuildingPR.java
@@ -0,0 +1,76 @@
+package com.fzzy.igds.sys.pr;
+
+import com.bstek.dorado.annotation.DataProvider;
+import com.bstek.dorado.annotation.DataResolver;
+import com.bstek.dorado.annotation.Expose;
+import com.fzzy.igds.dzhwk.domain.Building;
+import com.fzzy.igds.sys.BuildingService;
+import org.springframework.beans.BeanUtils;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+/**
+ * @Description 浠撴埧PR灞�
+ * @Author CZT
+ * @Date 2024/11/20 19:01
+ */
+@Component
+public class BuildingPR {
+
+	@Resource
+	private BuildingService buildingService;
+
+	/**
+	 * 鏌ヨ璁惧,灏嗘搷浣滀俊鎭皟鏁翠负绌猴紝榛樿鍖呮嫭鍒嗗簱鍙傛暟
+	 *
+	 * buildingPR#loadData
+	 *
+	 * @return
+	 */
+	@DataProvider
+	public List<Building> loadData() {
+		return buildingService.getBuilding(null, null);
+	}
+
+	/**
+	 * 涓嬫媺妗嗕娇鐢�
+	 * ${dorado.getDataProvider("buildingPR#getCacheBuilding").getResult()}
+	 * @return
+	 */
+	@DataProvider
+	public List<Building> getCacheBuilding(){
+		return buildingService.getCacheBuilding(null,null);
+	}
+
+	/**
+	 * buildingPR#saveData
+	 */
+	@DataResolver
+	public void saveData(Building data) {
+
+		Building building = new Building();
+		BeanUtils.copyProperties(data, building);
+		buildingService.saveOrUpdate(building);
+	}
+
+	/**
+	 * buildingPR#delData
+	 */
+	@Expose
+	public String delData(Building data) {
+		Building building = new Building();
+		BeanUtils.copyProperties(data, building);
+		return buildingService.delData(building);
+	}
+
+	/**
+	 * buildingPR#refreshCache
+	 * 鍒锋柊缂撳瓨
+	 */
+	@Expose
+	public void refreshCache(){
+		buildingService.refreshCacheBuilding(null);
+	}
+}
diff --git a/igds-dzhwk-view/src/main/java/com/fzzy/igds/sys/pr/CompanyPR.java b/igds-dzhwk-view/src/main/java/com/fzzy/igds/sys/pr/CompanyPR.java
new file mode 100644
index 0000000..47106cb
--- /dev/null
+++ b/igds-dzhwk-view/src/main/java/com/fzzy/igds/sys/pr/CompanyPR.java
@@ -0,0 +1,82 @@
+package com.fzzy.igds.sys.pr;
+
+import com.bstek.dorado.annotation.DataProvider;
+import com.bstek.dorado.annotation.DataResolver;
+import com.bstek.dorado.annotation.Expose;
+import com.fzzy.igds.dzhwk.constant.Constant;
+import com.fzzy.igds.dzhwk.domain.Company;
+import com.fzzy.igds.sys.CoreCompanyService;
+import com.fzzy.igds.sys.SysDeptService;
+import com.ruoyi.common.core.domain.entity.SysDept;
+import org.springframework.beans.BeanUtils;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+/**
+ * @Description 浠撳偍鍏徃PR灞�
+ * @Author CZT
+ * @Date 2024/11/28 15:01
+ */
+@Component
+public class CompanyPR {
+
+	@Resource
+	private CoreCompanyService coreCompanyService;
+	@Resource
+	private SysDeptService sysDeptService;
+
+	/**
+	 * 鏌ヨ璁惧,灏嗘搷浣滀俊鎭皟鏁翠负绌猴紝榛樿鍖呮嫭鍒嗗簱鍙傛暟
+	 *
+	 * companyPR#getData
+	 *
+	 * @return
+	 */
+	@DataProvider
+	public List<Company> getData() {
+
+		List<Company> companyList = coreCompanyService.getAllData(null);
+		if(null == companyList){
+			List<SysDept> list = sysDeptService.getDeptByType(Constant.DEPT_TYPE_10);
+			if(null == list){
+				return null;
+			}
+			Company company;
+			for (SysDept sysDept : list) {
+				company = coreCompanyService.getDataById(sysDept.getDeptId() +"");
+				if(null == company){
+					company = coreCompanyService.initCompanyData(sysDept);
+				}
+				companyList.add(company);
+			}
+		}
+
+		return companyList;
+	}
+
+
+	/**
+	 * companyPR#saveData
+	 */
+	@DataResolver
+	public void saveData(Company data) {
+
+		Company company = new Company();
+		BeanUtils.copyProperties(data, company);
+		coreCompanyService.saveOrUpdate(company);
+	}
+
+	/**
+	 * companyPR#delData
+	 */
+	@Expose
+	public String delData(Company data) {
+		Company company = new Company();
+		BeanUtils.copyProperties(data, company);
+		coreCompanyService.delData(company);
+		return null;
+	}
+
+}
diff --git a/igds-dzhwk-view/src/main/java/com/fzzy/igds/sys/pr/DepotPR.java b/igds-dzhwk-view/src/main/java/com/fzzy/igds/sys/pr/DepotPR.java
new file mode 100644
index 0000000..80ae521
--- /dev/null
+++ b/igds-dzhwk-view/src/main/java/com/fzzy/igds/sys/pr/DepotPR.java
@@ -0,0 +1,115 @@
+package com.fzzy.igds.sys.pr;
+
+import com.bstek.dorado.annotation.DataProvider;
+import com.bstek.dorado.annotation.DataResolver;
+import com.bstek.dorado.annotation.Expose;
+import com.fzzy.igds.dzhwk.domain.Depot;
+import com.fzzy.igds.sys.DepotService;
+import com.fzzy.igds.util.ContextUtil;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.BeanUtils;
+import org.springframework.stereotype.Component;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.Resource;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author jiazx
+ */
+@Slf4j
+@Component
+public class DepotPR {
+
+    @Resource
+    private DepotService depotService;
+
+    /**
+     * depotPR#getData
+     * @return
+     */
+    @DataProvider
+    public List<Depot> getData(){
+        return depotService.getData(null, null);
+    }
+
+    /**
+     * depotPR#saveOrUpdate
+     * @param data
+     * @return
+     */
+    @DataResolver
+    @Transactional
+    public String saveOrUpdate(Depot data) {
+
+        Depot depot = new Depot();
+        BeanUtils.copyProperties(data, depot);
+        depotService.saveDepot(depot);
+        depotService.flushCache(null);
+        return null;
+    }
+
+    /**
+     * depotPR#deleteDepot
+     * @param data
+     */
+    @Expose
+    @Transactional
+    public void deleteDepot(Depot data)  {
+        Depot depot = new Depot();
+        BeanUtils.copyProperties(data, depot);
+        depotService.deleteDepot(depot);
+    }
+
+
+    /**
+     * depotPR#flushCache
+     */
+    @Expose
+    public void flushCache() {
+        depotService.flushCache(null);
+    }
+
+    /**
+     * ${dorado.getDataProvider("depotPR#getAllCache").getResult()}
+     * @return
+     */
+    @DataProvider
+    public List<Depot> getAllCache() {
+        return depotService.getCacheDepotList(null, ContextUtil.subDeptId(null));
+    }
+
+    /**
+     * depotPR#ajaxGetAllCache
+     * @return
+     */
+    @Expose
+    public List<Depot> ajaxGetAllCache() {
+        return depotService.getCacheDepotList(null, ContextUtil.subDeptId(null));
+    }
+
+    /**
+     * depotPR#getDepot 鑾峰彇浠撳簱淇℃伅
+     *
+     * @param depotId
+     * @return
+     */
+    @Expose
+    public Depot getDepot(String depotId) {
+        return depotService.getCacheDepot(null, depotId);
+    }
+
+    /**
+     * depotPR#excelDepot
+     */
+    @Expose
+    @Transactional
+    public AjaxResult excelDepot(Map<String, Object> param)  {
+        List<Depot> list = depotService.getData(null, null);
+        ExcelUtil<Depot> util = new ExcelUtil<Depot>(Depot.class);
+        return util.exportExcel(list, "璐т綅鏁版嵁", "鍌ㄥ涓績搴撹揣浣嶆暟鎹�");
+    }
+}
diff --git a/igds-dzhwk-view/src/main/java/com/fzzy/igds/sys/pr/DepotStatusConfirmPR.java b/igds-dzhwk-view/src/main/java/com/fzzy/igds/sys/pr/DepotStatusConfirmPR.java
new file mode 100644
index 0000000..eed471a
--- /dev/null
+++ b/igds-dzhwk-view/src/main/java/com/fzzy/igds/sys/pr/DepotStatusConfirmPR.java
@@ -0,0 +1,123 @@
+package com.fzzy.igds.sys.pr;
+
+import com.bstek.dorado.annotation.DataProvider;
+import com.bstek.dorado.annotation.DataResolver;
+import com.bstek.dorado.annotation.Expose;
+import com.bstek.dorado.data.provider.Page;
+import com.fzzy.igds.dzhwk.domain.DepotStatusConfirm;
+import com.fzzy.igds.sys.DepotStatusConfirmService;
+import com.fzzy.igds.sys.DepotStoreService;
+import com.fzzy.igds.util.ContextUtil;
+import com.ruoyi.common.utils.StringUtils;
+import org.springframework.beans.BeanUtils;
+import org.springframework.data.domain.PageRequest;
+import org.springframework.data.domain.Pageable;
+import org.springframework.data.domain.Sort;
+import org.springframework.data.jpa.domain.Specification;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+import javax.persistence.criteria.CriteriaBuilder;
+import javax.persistence.criteria.CriteriaQuery;
+import javax.persistence.criteria.Predicate;
+import javax.persistence.criteria.Root;
+import java.util.*;
+
+
+/**
+ * 灏佷粨纭鍗�
+ */
+@Component
+public class DepotStatusConfirmPR {
+
+    @Resource
+    private DepotStatusConfirmService statusConfirmService;
+    @Resource
+    private DepotStoreService depotStoreService;
+
+    /**
+     * depotStatusConfirmPR#pageDepotStatusConfirm
+     *
+     * @param page
+     * @param param
+     * @throws Exception
+     */
+    @DataProvider
+    public void pageDepotStatusConfirm(Page<DepotStatusConfirm> page, Map<String, Object> param) {
+        if (null == param) {
+            param = new HashMap<>();
+        }
+        Map<String, Object> finalParam = param;
+
+        //澶氬弬鏁板垎椤垫煡璇�
+        Pageable pageable = PageRequest.of(page.getPageNo() - 1, page.getPageSize(), Sort.Direction.ASC, DepotStatusConfirm.SORT_PROP);
+        Specification<DepotStatusConfirm> specification = new Specification<DepotStatusConfirm>() {
+            private static final long serialVersionUID = 1L;
+
+            public Predicate toPredicate(Root<DepotStatusConfirm> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
+                List<Predicate> predicates = new ArrayList<Predicate>(); //鎵�鏈夌殑鏂█
+
+                Predicate predicate1 = cb.equal(root.get("companyId"), ContextUtil.getCompanyId());
+                predicates.add(predicate1);
+
+                Predicate predicate2 = cb.equal(root.get("deptId"), ContextUtil.subDeptId(null));
+                predicates.add(predicate2);
+
+                String key = (String) finalParam.get("depotId");
+                if (StringUtils.isNotEmpty(key)) {
+                    Predicate predicate3 = cb.equal(root.get("depotId"), key);
+                    predicates.add(predicate3);
+                }
+                key = (String) finalParam.get("depotStatus");
+                if (StringUtils.isNotEmpty(key)) {
+                    Predicate predicate4 = cb.equal(root.get("depotStatus"), key);
+                    predicates.add(predicate4);
+                }
+                Date start = (Date) finalParam.get("start");
+                if (null != start) {
+                    Predicate predicate5 = cb.greaterThan(root.get("updateDate"), start);
+                    predicates.add(predicate5);
+                }
+
+                Date end = (Date) finalParam.get("end");
+                if (null != end) {
+                    Predicate predicate6 = cb.lessThan(root.get("updateDate"), end);
+                    predicates.add(predicate6);
+                }
+                return cb.and(predicates.toArray(new Predicate[0]));
+            }
+        };
+        org.springframework.data.domain.Page<DepotStatusConfirm> japPage = statusConfirmService.findAll(specification, pageable);
+        page.setEntityCount((int) japPage.getTotalElements());
+        page.setEntities(japPage.getContent());
+    }
+
+    /**
+     * depotStatusConfirmPR#saveData 鏂板鎴栬�呬慨鏀�
+     *
+     * @param data
+     */
+    @DataResolver
+    public void saveData(DepotStatusConfirm data) {
+        DepotStatusConfirm depotStatusConfirm = new DepotStatusConfirm();
+        BeanUtils.copyProperties(data, depotStatusConfirm);
+        statusConfirmService.saveOrUpdate(depotStatusConfirm);
+
+        //澧炲姞鏈�鏂板簱瀛�
+        depotStoreService.depotStoreStatus(depotStatusConfirm);
+    }
+
+    /**
+     * depotStatusConfirmPR#delData
+     *
+     * @param data
+     * @return
+     */
+    @Expose
+    public void delData(DepotStatusConfirm data) {
+        DepotStatusConfirm depotStatusConfirm = new DepotStatusConfirm();
+        BeanUtils.copyProperties(data, depotStatusConfirm);
+        statusConfirmService.delData(depotStatusConfirm);
+    }
+
+}
diff --git a/igds-dzhwk-view/src/main/java/com/fzzy/igds/sys/pr/DepotStorePR.java b/igds-dzhwk-view/src/main/java/com/fzzy/igds/sys/pr/DepotStorePR.java
new file mode 100644
index 0000000..472e33c
--- /dev/null
+++ b/igds-dzhwk-view/src/main/java/com/fzzy/igds/sys/pr/DepotStorePR.java
@@ -0,0 +1,163 @@
+package com.fzzy.igds.sys.pr;
+
+import com.bstek.dorado.annotation.DataProvider;
+import com.bstek.dorado.annotation.DataResolver;
+import com.bstek.dorado.annotation.Expose;
+import com.bstek.dorado.data.provider.Page;
+import com.fzzy.igds.dzhwk.constant.DepotStatus;
+import com.fzzy.igds.dzhwk.domain.DepotStore;
+import com.fzzy.igds.sys.DepotService;
+import com.fzzy.igds.sys.DepotStoreService;
+import com.fzzy.igds.util.ContextUtil;
+import com.ruoyi.common.utils.StringUtils;
+import org.springframework.beans.BeanUtils;
+import org.springframework.data.domain.PageRequest;
+import org.springframework.data.domain.Pageable;
+import org.springframework.data.domain.Sort;
+import org.springframework.data.jpa.domain.Specification;
+import org.springframework.stereotype.Component;
+import javax.annotation.Resource;
+import javax.persistence.criteria.CriteriaBuilder;
+import javax.persistence.criteria.CriteriaQuery;
+import javax.persistence.criteria.Predicate;
+import javax.persistence.criteria.Root;
+import java.util.*;
+
+
+/**
+ * @Description
+ * @Author CZT
+ * @Date 2024/11/23 15:29
+ */
+@Component
+public class DepotStorePR {
+
+    @Resource
+    private DepotStoreService depotStoreService;
+    @Resource
+    private DepotService depotService;
+
+    /**
+     * JPA鍒嗛〉鏌ヨ鏁版嵁
+     * depotStorePR#pageList
+     * @param page
+     * @param param
+     */
+    @DataProvider
+    public void pageList(Page<DepotStore> page, Map<String, Object> param) {
+        if (null == param) {
+            param = new HashMap<>();
+        }
+        Map<String, Object> finalParam = param;
+
+        //澶氬弬鏁板垎椤垫煡璇�
+        Pageable pageable = PageRequest.of(page.getPageNo() - 1, page.getPageSize(), Sort.Direction.ASC, DepotStore.SORT_PROP);
+        Specification<DepotStore> specification = new Specification<DepotStore>() {
+            private static final long serialVersionUID = 1L;
+
+            public Predicate toPredicate(Root<DepotStore> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
+                List<Predicate> predicates = new ArrayList<Predicate>(); //鎵�鏈夌殑鏂█
+
+                Predicate predicate1 = cb.equal(root.get("companyId"), ContextUtil.getCompanyId());
+                predicates.add(predicate1);
+
+                Predicate predicate2 = cb.equal(root.get("deptId"), ContextUtil.subDeptId(null));
+                predicates.add(predicate2);
+
+                String depotId = (String) finalParam.get("depotId");
+                if (StringUtils.isNotEmpty(depotId)) {
+                    Predicate predicate3 = cb.equal(root.get("depotId"), depotId);
+                    predicates.add(predicate3);
+                }
+
+                Date start = (Date) finalParam.get("start");
+                if (null != start) {
+                    Predicate predicate4 = cb.greaterThan(root.get("fcrq"), start);
+                    predicates.add(predicate4);
+                }
+
+                Date end = (Date) finalParam.get("end");
+                if (null != end) {
+                    Predicate predicate5 = cb.lessThan(root.get("fcrq"), end);
+                    predicates.add(predicate5);
+                }
+                return cb.and(predicates.toArray(new Predicate[0]));
+            }
+        };
+        org.springframework.data.domain.Page<DepotStore> japPage = depotStoreService.findAll(specification, pageable);
+        page.setEntityCount((int) japPage.getTotalElements());
+        page.setEntities(japPage.getContent());
+    }
+
+    /**
+     * depotStorePR#saveDepotStore
+     *
+     * @param data
+     */
+    @DataResolver
+    public String saveDepotStore(DepotStore data) throws Exception {
+
+        //濡傛灉浠撳簱鐘舵��=灏佷粨/鍏ュ簱涓�/鍑哄簱涓�
+        if (DepotStatus.STATUS_2.getCode().equals(data.getDepotStatus()) ||
+                DepotStatus.STATUS_3.getCode().equals(data.getDepotStatus()) ||
+                DepotStatus.STATUS_4.getCode().equals(data.getDepotStatus()) ||
+                DepotStatus.STATUS_31.getCode().equals(data.getDepotStatus()) ||
+                DepotStatus.STATUS_32.getCode().equals(data.getDepotStatus()) ||
+                DepotStatus.STATUS_33.getCode().equals(data.getDepotStatus()) ||
+                DepotStatus.STATUS_34.getCode().equals(data.getDepotStatus())) {
+
+            if (null == data.getFoodYear()) return "璐т綅鐘舵��=灏佷粨/鍏ュ簱涓�/鍑哄簱涓紝鏀惰揣骞村害涓嶈兘涓虹┖";
+
+            if (null == data.getCountry()) return "璐т綅鐘舵��=灏佷粨/鍏ュ簱涓�/鍑哄簱涓紝鍥藉埆涓嶈兘涓虹┖";
+
+            if (null == data.getFoodLocation()) return "璐т綅鐘舵��=灏佷粨/鍏ュ簱涓�/鍑哄簱涓紝绮浜у湴涓嶈兘涓虹┖";
+
+            if (null == data.getFoodLocation()) return "璐т綅鐘舵��=灏佷粨/鍏ュ簱涓�/鍑哄簱涓紝绮浜у湴涓嶈兘涓虹┖";
+
+            if (null == data.getStoreDate()) return "璐т綅鐘舵��=灏佷粨/鍏ュ簱涓�/鍑哄簱涓紝鍏ュ簱鏃堕棿涓嶅彲涓虹┖";
+        }
+
+        //璐т綅鐘舵��=灏佷粨/鍑哄簱涓紝蹇呭~
+        if (DepotStatus.STATUS_3.getCode().equals(data.getDepotStatus()) ||
+                DepotStatus.STATUS_4.getCode().equals(data.getDepotStatus()) ||
+                DepotStatus.STATUS_31.getCode().equals(data.getDepotStatus()) ||
+                DepotStatus.STATUS_32.getCode().equals(data.getDepotStatus()) ||
+                DepotStatus.STATUS_33.getCode().equals(data.getDepotStatus()) ||
+                DepotStatus.STATUS_34.getCode().equals(data.getDepotStatus())) {
+            if (null == data.getFullDate()) {
+                return "璐т綅鐘舵��=灏佷粨/鍑哄簱涓紝灏佷粨鏃堕棿涓嶅彲涓虹┖";
+            }
+        }
+
+        //璐т綅鐘舵��=绌轰粨锛屽繀濉�傛渶鍚庝竴杞︾伯椋熷嚭浠撴椂闂�
+        if (DepotStatus.STATUS_1.getCode().equals(data.getDepotStatus())) {
+            if (null == data.getOutDate()) {
+                return "璐т綅鐘舵��=绌轰粨锛屽嚭浠撳畬鎴愭椂闂翠笉鍙负绌�";
+            }
+        }
+        DepotStore depotStore = new DepotStore();
+        BeanUtils.copyProperties(data, depotStore);
+        depotStoreService.saveDepotStore(depotStore);
+
+        //鏍规嵁搴撳瓨淇℃伅鏇存柊鍒颁粨搴撲俊鎭紝浠撳簱鍌ㄧ伯淇℃伅浠ュ綋鍓嶄负鍑�
+        depotService.updateByStore(depotStore);
+
+        //杩滅▼鍚屾鐘舵��
+
+        return null;
+    }
+
+    /**
+     * depotStorePR#delDepotStore
+     *
+     * @param data
+     * @return
+     */
+    @Expose
+    public String delDepotStore(DepotStore data) {
+        DepotStore depotStore = new DepotStore();
+        BeanUtils.copyProperties(data, depotStore);
+        return depotStoreService.delDepotStore(depotStore);
+    }
+
+}
diff --git a/igds-dzhwk-view/src/main/java/com/fzzy/igds/sys/pr/DeptPR.java b/igds-dzhwk-view/src/main/java/com/fzzy/igds/sys/pr/DeptPR.java
new file mode 100644
index 0000000..f0e9747
--- /dev/null
+++ b/igds-dzhwk-view/src/main/java/com/fzzy/igds/sys/pr/DeptPR.java
@@ -0,0 +1,89 @@
+package com.fzzy.igds.sys.pr;
+
+import com.bstek.dorado.annotation.DataProvider;
+import com.bstek.dorado.annotation.DataResolver;
+import com.bstek.dorado.annotation.Expose;
+import com.fzzy.igds.dzhwk.constant.Constant;
+import com.fzzy.igds.dzhwk.domain.Dept;
+import com.fzzy.igds.sys.CoreDeptService;
+import com.fzzy.igds.sys.SysDeptService;
+import com.ruoyi.common.core.domain.entity.SysDept;
+import org.springframework.beans.BeanUtils;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+/**
+ * @Description 搴撳尯淇℃伅
+ * @Author CZT
+ * @Date 2024/11/21 18:01
+ */
+@Component("deptPR")
+public class DeptPR {
+
+	@Resource
+	private CoreDeptService coreDeptService;
+	@Resource
+	private SysDeptService sysDeptService;
+
+	/**
+	 * 鑾峰彇缁勭粐涓嬫墍鏈夊簱鍖�
+	 * ${dorado.getDataProvider("deptPR#loadParents").getResult()}
+	 *
+	 * @return
+	 */
+	@DataProvider
+	public List<SysDept> loadParents() {
+		return sysDeptService.getAllDeptByCompanyId(null);
+    }
+
+	/**
+	 * 鏌ヨ璁惧,灏嗘搷浣滀俊鎭皟鏁翠负绌猴紝榛樿鍖呮嫭鍒嗗簱鍙傛暟
+	 *
+	 * deptPR#getData
+	 *
+	 * @return
+	 */
+	@DataProvider
+	public List<Dept> getData() {
+		List<Dept> deptList = coreDeptService.getAllData(null);
+		if(null == deptList){
+			List<SysDept> list = sysDeptService.getDeptByType(Constant.DEPT_TYPE_20);
+			if(null == list){
+				return null;
+			}
+			Dept dept;
+			for (SysDept sysDept : list) {
+				dept = coreDeptService.getDataById(sysDept.getDeptId() +"");
+				if(null == dept){
+					dept = coreDeptService.initDeptData(sysDept);
+				}
+				deptList.add(dept);
+			}
+		}
+		return deptList;
+	}
+
+
+	/**
+	 * deptPR#saveData
+	 */
+	@DataResolver
+	public void saveData(Dept data) {
+		Dept dept = new Dept();
+		BeanUtils.copyProperties(data, dept);
+		coreDeptService.saveOrUpdate(dept);
+	}
+
+	/**
+	 * deptPR#delData
+	 */
+	@Expose
+	public String delData(Dept data) {
+		Dept dept = new Dept();
+		BeanUtils.copyProperties(data, dept);
+		coreDeptService.delData(dept);
+		return null;
+	}
+}
\ No newline at end of file
diff --git a/igds-dzhwk-view/src/main/java/com/fzzy/igds/sys/pr/DicAreaPR.java b/igds-dzhwk-view/src/main/java/com/fzzy/igds/sys/pr/DicAreaPR.java
new file mode 100644
index 0000000..92afa3a
--- /dev/null
+++ b/igds-dzhwk-view/src/main/java/com/fzzy/igds/sys/pr/DicAreaPR.java
@@ -0,0 +1,106 @@
+package com.fzzy.igds.sys.pr;
+
+import com.bstek.dorado.annotation.DataProvider;
+import com.bstek.dorado.annotation.DataResolver;
+import com.bstek.dorado.annotation.Expose;
+import com.bstek.dorado.data.provider.Page;
+import com.fzzy.igds.dzhwk.domain.DicArea;
+import com.fzzy.igds.sys.DicAreaService;
+import com.ruoyi.common.utils.StringUtils;
+import org.springframework.beans.BeanUtils;
+import org.springframework.data.domain.PageRequest;
+import org.springframework.data.domain.Pageable;
+import org.springframework.data.domain.Sort;
+import org.springframework.data.jpa.domain.Specification;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+import javax.persistence.criteria.CriteriaBuilder;
+import javax.persistence.criteria.CriteriaQuery;
+import javax.persistence.criteria.Predicate;
+import javax.persistence.criteria.Root;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @Description
+ * @Author CZT
+ * @Date 2024/11/23 09:36
+ */
+@Component
+public class DicAreaPR {
+
+    @Resource
+    private DicAreaService dicAreaService;
+
+    /**
+     * dicAreaPR#pageList
+     *
+     * @param page
+     */
+    @DataProvider
+    public void pageList(Page<DicArea> page, String key) {
+        //澶氬弬鏁板垎椤垫煡璇�
+        Pageable pageable = PageRequest.of(page.getPageNo() - 1, page.getPageSize(), Sort.Direction.ASC, DicArea.SORT_PROP);
+
+        if (StringUtils.isEmpty(key)) {
+            org.springframework.data.domain.Page<DicArea> japPage = dicAreaService.findAll(pageable);
+            page.setEntityCount((int) japPage.getTotalElements());
+            page.setEntities(japPage.getContent());
+
+            return;
+        }
+        Specification<DicArea> specification = new Specification<DicArea>() {
+            private static final long serialVersionUID = 1L;
+
+            public Predicate toPredicate(Root<DicArea> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
+                List<Predicate> predicates = new ArrayList<Predicate>(); //鎵�鏈夌殑鏂█
+
+                Predicate predicate1 = cb.like(root.get("name"), "%" + key + "%");
+                predicates.add(predicate1);
+
+                return cb.and(predicates.toArray(new Predicate[0]));
+            }
+        };
+        org.springframework.data.domain.Page<DicArea> japPage = dicAreaService.findAll(specification, pageable);
+        page.setEntityCount((int) japPage.getTotalElements());
+        page.setEntities(japPage.getContent());
+    }
+
+    /**
+     * dicAreaPR#getDicAreaByParentCode
+     */
+    @DataProvider
+    public List<DicArea> getDicAreaByParentCode(String parentCode) {
+        return dicAreaService.getDicAreaByParentCode(parentCode);
+    }
+
+    /**
+     * dicAreaPR#saveDicArea
+     *
+     * @param data
+     * @return
+     */
+    @DataResolver
+    public String saveDicArea(DicArea data) {
+
+        DicArea dicArea = new DicArea();
+        BeanUtils.copyProperties(data, dicArea);
+        return dicAreaService.saveDicArea(dicArea);
+    }
+
+    /**
+     * dicAreaPR#delDicArea
+     *
+     * @param data
+     * @return
+     */
+    @Expose
+    public String delDicArea(DicArea data) {
+
+        DicArea dicArea = new DicArea();
+        BeanUtils.copyProperties(data, dicArea);
+        return dicAreaService.delDicArea(dicArea);
+    }
+
+}
\ No newline at end of file
diff --git a/igds-dzhwk-view/src/main/java/com/fzzy/igds/sys/pr/DicPR.java b/igds-dzhwk-view/src/main/java/com/fzzy/igds/sys/pr/DicPR.java
new file mode 100644
index 0000000..0601f26
--- /dev/null
+++ b/igds-dzhwk-view/src/main/java/com/fzzy/igds/sys/pr/DicPR.java
@@ -0,0 +1,338 @@
+package com.fzzy.igds.sys.pr;
+
+import com.bstek.dorado.annotation.DataProvider;
+import com.fzzy.igds.sys.DicService;
+import com.ruoyi.common.core.domain.entity.SysDictData;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+/**
+ * @Description 瀛楀吀鏁版嵁PR灞�
+ * @Author CZT
+ * @Date 2024/11/22 16:37
+ */
+@Component
+public class DicPR {
+
+    @Resource
+    private DicService dicService;
+
+    /**
+     * 涓嬫媺妗嗕娇鐢�
+     * ${dorado.getDataProvider("dicPR#sysDictData").getResult("CATEGORY_ARCHIVES")}
+     *
+     * @param dictType
+     * @return
+     */
+    @DataProvider
+    public List<SysDictData> sysDictData(String dictType) {
+        return dicService.getDictDataByType(dictType, null);
+    }
+
+
+    /**
+     * 浠撴埧绫诲瀷-闈炲浗鏍囧畾涔�
+     * ${dorado.getDataProvider("dicPR#triggerDepotType").getResult()}
+     *
+     * @return
+     */
+    @DataProvider
+    public List<SysDictData> triggerDepotType() {
+        return dicService.triggerDepotType();
+    }
+
+    /**
+     * 浠撴埧鐘舵��
+     * ${dorado.getDataProvider("dicPR#triggerDepotStatus").getResult()}
+     *
+     * @return
+     */
+    @DataProvider
+    public List<SysDictData> triggerDepotStatus() {
+        return dicService.triggerDepotStatus();
+    }
+
+    /**
+     * 绮绛夌骇
+     * ${dorado.getDataProvider("dicPR#triggerFoodLevel").getResult()}
+     *
+     * @return
+     */
+    @DataProvider
+    public List<SysDictData> triggerFoodLevel() {
+        return dicService.triggerFoodLevel();
+    }
+
+    /**
+     * 鍌ㄧ伯鏂瑰紡
+     * ${dorado.getDataProvider("dicPR#triggerStoreType").getResult()}
+     *
+     * @return
+     */
+    @DataProvider
+    public List<SysDictData> triggerStoreType() {
+        return dicService.triggerStoreType();
+    }
+
+    /**
+     * 绠$悊鏂瑰紡
+     * ${dorado.getDataProvider("dicPR#triggerManagerType").getResult()}
+     *
+     * @return
+     */
+    @DataProvider
+    public List<SysDictData> triggerManagerType() {
+        return dicService.triggerManagerType();
+    }
+
+    /**
+     * 鐢电紗璧峰鏂逛綅
+     * ${dorado.getDataProvider("dicPR#triggerStartOrientation").getResult()}
+     *
+     * @return
+     */
+    @DataProvider
+    public List<SysDictData> triggerStartOrientation() {
+        return dicService.triggerStartOrientation();
+    }
+
+    /**
+     * 鐢电紗甯冪嚎鏂瑰悜
+     * ${dorado.getDataProvider("dicPR#triggerStartDirection").getResult()}
+     *
+     * @return
+     */
+    @DataProvider
+    public List<SysDictData> triggerStartDirection() {
+        return dicService.triggerStartDirection();
+    }
+
+    /**
+     * 鐢电紗璧峰鐐逛綅
+     * ${dorado.getDataProvider("dicPR#triggerStartPoint").getResult()}
+     *
+     * @return
+     */
+    @DataProvider
+    public List<SysDictData> triggerStartPoint() {
+        return dicService.triggerStartPoint();
+    }
+
+    /**
+     * 灞傝杞崲
+     * ${dorado.getDataProvider("dicPR#triggerStartConvert").getResult()}
+     *
+     * @return
+     */
+    @DataProvider
+    public List<SysDictData> triggerStartConvert() {
+        return dicService.triggerStartConvert();
+    }
+
+    /**
+     * 绛掍粨閿ュ舰
+     * ${dorado.getDataProvider("dicPR#triggerCableCone").getResult()}
+     *
+     * @return
+     */
+    @DataProvider
+    public List<SysDictData> triggerCableCone() {
+        return dicService.triggerCableCone();
+    }
+
+    /**
+     * ${dorado.getDataProvider("dicTriggerPR#triggerYN").getResult()}
+     *
+     * @return
+     */
+    @DataProvider
+    public List<SysDictData> triggerYN() {
+        return dicService.triggerYN();
+    }
+
+
+    /**
+     * 閫氳鐘舵��
+     * ${dorado.getDataProvider("dicPR#conStatus").getResult()}
+     *
+     * @return
+     * @throws Exception
+     */
+    @DataProvider
+    public List<SysDictData> conStatus() {
+        return dicService.conStatus();
+    }
+
+    /**
+     * ${dorado.getDataProvider("dicPR#controlModel").getResult()}
+     *
+     * @return
+     */
+    @DataProvider
+    public List<SysDictData> controlModel() {
+        return dicService.controlModel();
+    }
+
+    /**
+     * ${dorado.getDataProvider("dicPR#triggerBizType").getResult()}
+     *
+     * @return
+     */
+    @DataProvider
+    public List<SysDictData> triggerBizType() {
+        return dicService.triggerBizType();
+    }
+
+    /**
+     * 姘旇薄鏉ユ簮
+     * ${dorado.getDataProvider("dicPR#triggerSource").getResult()}
+     *
+     * @return
+     */
+    @DataProvider
+    public List<SysDictData> triggerSource() {
+        return dicService.triggerSource();
+    }
+
+    /**
+     * 妫�楠岀被鍒�
+     * <p>
+     * ${dorado.getDataProvider("dicPR#triggerType").getResult()}
+     *
+     * @return
+     */
+    @DataProvider
+    public List<SysDictData> triggerType() {
+        return dicService.triggerType();
+    }
+
+    /**
+     * 鎸囨爣绫诲埆
+     * <p>
+     * ${dorado.getDataProvider("dicPR#triggerStandard").getResult()}
+     *
+     * @return
+     */
+    @DataProvider
+    public List<SysDictData> triggerStandard() {
+        return dicService.triggerStandard();
+    }
+
+    /**
+     * 妫�楠屼緷鎹�
+     * <p>
+     * ${dorado.getDataProvider("dicPR#triggerMetrics").getResult()}
+     *
+     * @return
+     */
+    @DataProvider
+    public List<SysDictData> triggerMetrics() {
+        return dicService.triggerMetrics();
+    }
+
+    /**
+     * 瀹℃牳鐘舵��
+     * ${dorado.getDataProvider("dicPR#triggerStatusType").getResult()}
+     *
+     * @return
+     */
+    @DataProvider
+    public List<SysDictData> triggerStatusType() {
+        return dicService.triggerStatusType();
+    }
+
+    /**
+     * 璀﹀憡绫诲瀷
+     * ${dorado.getDataProvider("dicPR#triggerWarnType").getResult()}
+     *
+     * @return
+     */
+    @DataProvider
+    public List<SysDictData> triggerWarnType() {
+        return dicService.triggerWarnType();
+    }
+
+    /**
+     * 璀﹀憡绛夌骇
+     * ${dorado.getDataProvider("dicPR#triggerWarnLevel").getResult()}
+     *
+     * @return
+     */
+    @DataProvider
+    public List<SysDictData> triggerWarnLevel() {
+        return dicService.triggerWarnLevel();
+    }
+
+    /**
+     * 璀﹀憡鐘舵��
+     * ${dorado.getDataProvider("dicPR#triggerWarnStatus").getResult()}
+     *
+     * @return
+     */
+    @DataProvider
+    public List<SysDictData> triggerWarnStatus() {
+        return dicService.triggerWarnStatus();
+    }
+
+    /**
+     * 璀﹀憡閫氱煡鏂瑰紡
+     * ${dorado.getDataProvider("dicPR#triggerNoticeType").getResult()}
+     *
+     * @return
+     */
+    @DataProvider
+    public List<SysDictData> triggerNoticeType() {
+        return dicService.triggerNoticeType();
+    }
+
+    /**
+     * AI璁惧绫诲瀷
+     *
+     * ${dorado.getDataProvider("dicPR#triggerAiSerType").getResult()}
+     *
+     * @return
+     */
+    @DataProvider
+    public List<SysDictData> triggerAiSerType() {
+        return dicService.triggerAiSerType();
+    }
+
+    /**
+     * 閫氶浠诲姟鐘舵��
+     *
+     * ${dorado.getDataProvider("dicPR#triggerVerbStatus").getResult()}
+     *
+     * @return
+     */
+    @DataProvider
+    public List<SysDictData> triggerVerbStatus() {
+        return dicService.triggerVerbStatus();
+    }
+
+    /**
+     * 閫氶妯″紡
+     *
+     * ${dorado.getDataProvider("dicPR#triggerAreationModel").getResult()}
+     *
+     * @return
+     */
+    @DataProvider
+    public List<SysDictData> triggerAreationModel() {
+        return dicService.triggerAreationModel();
+    }
+
+    /**
+     * 姘旇皟妯″紡
+     *
+     * ${dorado.getDataProvider("dicPR#triggerN2ModelTag").getResult()}
+     *
+     * @return
+     */
+    @DataProvider
+    public List<SysDictData> triggerN2ModelTag() {
+        return dicService.triggerN2ModelTag();
+    }
+
+}
diff --git a/igds-dzhwk-view/src/main/java/com/fzzy/igds/sys/pr/GranaryPR.java b/igds-dzhwk-view/src/main/java/com/fzzy/igds/sys/pr/GranaryPR.java
new file mode 100644
index 0000000..fbafca4
--- /dev/null
+++ b/igds-dzhwk-view/src/main/java/com/fzzy/igds/sys/pr/GranaryPR.java
@@ -0,0 +1,59 @@
+package com.fzzy.igds.sys.pr;
+
+import com.bstek.dorado.annotation.DataProvider;
+import com.bstek.dorado.annotation.DataResolver;
+import com.bstek.dorado.annotation.Expose;
+import com.fzzy.igds.dzhwk.domain.Granary;
+import com.fzzy.igds.sys.GranaryService;
+import org.springframework.beans.BeanUtils;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+/**
+ * @Description
+ * @Author CZT
+ * @Date 2024/11/22 14:48
+ */
+@Component
+public class GranaryPR {
+
+    @Resource
+    private GranaryService granaryService;
+
+    /**
+     * ${dorado.getDataProvider("granaryPR#getGranary").getResult()}
+     * granaryPR#getGranary
+     * @return
+     */
+    @DataProvider
+    public List<Granary> getGranary() {
+        return granaryService.getGranary(null, null);
+    }
+
+    /**
+     * granaryPR#saveGranary 鏂板鎴栬�呬慨鏀�
+     *
+     * @param data
+     */
+    @DataResolver
+    public void saveGranary(Granary data) {
+        Granary granary = new Granary();
+        BeanUtils.copyProperties(data, granary);
+        granaryService.saveOrUpdate(granary);
+    }
+
+    /**
+     * granaryPR#delGranary
+     *
+     * @param data
+     */
+    @Expose
+    public String delGranary(Granary data){
+        Granary granary = new Granary();
+        BeanUtils.copyProperties(data, granary);
+        return granaryService.delData(granary);
+    }
+
+}
diff --git a/igds-dzhwk-view/src/main/java/com/fzzy/igds/sys/pr/SysUserPR.java b/igds-dzhwk-view/src/main/java/com/fzzy/igds/sys/pr/SysUserPR.java
new file mode 100644
index 0000000..f867b67
--- /dev/null
+++ b/igds-dzhwk-view/src/main/java/com/fzzy/igds/sys/pr/SysUserPR.java
@@ -0,0 +1,31 @@
+package com.fzzy.igds.sys.pr;
+
+import com.bstek.dorado.annotation.DataProvider;
+import com.fzzy.igds.sys.SysUserService;
+import com.ruoyi.common.core.domain.entity.SysUser;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+/**
+ * @Description 搴撳尯淇℃伅
+ * @Author CZT
+ * @Date 2024/11/21 18:01
+ */
+@Component
+public class SysUserPR {
+
+	@Resource
+	private SysUserService sysUserService;
+
+	/**
+	 * sysUserPR#loadUser
+	 * @return
+	 */
+	@DataProvider
+	public List<SysUser> loadUser() {
+		return sysUserService.getUser(null);
+    }
+
+}
\ No newline at end of file
diff --git a/igds-dzhwk-view/src/main/java/models/igds.model.xml b/igds-dzhwk-view/src/main/java/models/igds.model.xml
new file mode 100644
index 0000000..d51bada
--- /dev/null
+++ b/igds-dzhwk-view/src/main/java/models/igds.model.xml
@@ -0,0 +1,416 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Model>
+  <DataType name="dtDepot">
+    <Property name="creationType">com.fzzy.igds.dzhwk.domain.Depot</Property>
+    <PropertyDef name="id">
+      <Property></Property>
+      <Property name="label">浠撳簱缂栧彿</Property>
+      <Property name="required">false</Property>
+      <Property name="readOnly">false</Property>
+      <Validator name="validator1" type="regExp">
+        <Property name="resultMessage">浠撳簱缂栫爜鏍煎紡鏈夎</Property>
+        <Property name="whiteRegExp">^[0-9A-Za-z]*[1-9A-Za-z_-][0-9A-Za-z_-]*$</Property>
+      </Validator>
+    </PropertyDef>
+    <PropertyDef name="companyId">
+      <Property></Property>
+      <Property name="label">缁勭粐缂栫爜</Property>
+    </PropertyDef>
+    <PropertyDef name="deptId">
+      <Property></Property>
+      <Property name="label">鎵�灞炲垎搴�</Property>
+      <Property name="mapping">
+        <Property name="mapValues">${dorado.getDataProvider(&quot;deptPR#loadParents&quot;).getResult()}</Property>
+        <Property name="keyProperty">deptId</Property>
+        <Property name="valueProperty">deptName</Property>
+      </Property>
+      <Property name="required">true</Property>
+    </PropertyDef>
+    <PropertyDef name="name">
+      <Property></Property>
+      <Property name="label">浠撳簱鍚嶇О</Property>
+      <Property name="required">true</Property>
+    </PropertyDef>
+    <PropertyDef name="buildingId">
+      <Property></Property>
+      <Property name="label">鎵�灞炰粨鎴�</Property>
+      <Property name="mapping">
+        <Property name="mapValues">${dorado.getDataProvider(&quot;buildingPR#getCacheBuilding&quot;).getResult()}</Property>
+        <Property name="keyProperty">id</Property>
+        <Property name="valueProperty">name</Property>
+      </Property>
+      <Property name="required">false</Property>
+    </PropertyDef>
+    <PropertyDef name="granaryId">
+      <Property></Property>
+      <Property name="label">鎵�灞炲粧闂�</Property>
+      <Property name="mapping">
+        <Property name="mapValues">${dorado.getDataProvider(&quot;granaryPR#getGranary&quot;).getResult()}</Property>
+        <Property name="keyProperty">ajdh</Property>
+        <Property name="valueProperty">ajmc</Property>
+      </Property>
+      <Property name="required">false</Property>
+    </PropertyDef>
+    <PropertyDef name="depotType">
+      <Property></Property>
+      <Property name="label">浠撴埧绫诲瀷</Property>
+      <Property name="mapping">
+        <Property name="mapValues">${dorado.getDataProvider(&quot;dicPR#triggerDepotType&quot;).getResult()}</Property>
+        <Property name="keyProperty">dictValue</Property>
+        <Property name="valueProperty">dictLabel</Property>
+      </Property>
+      <Property name="required">true</Property>
+    </PropertyDef>
+    <PropertyDef name="depotStatus">
+      <Property></Property>
+      <Property name="label">浠撳簱鐘舵��</Property>
+      <Property name="mapping">
+        <Property name="mapValues">${dorado.getDataProvider(&quot;dicPR#triggerDepotStatus&quot;).getResult()}</Property>
+        <Property name="keyProperty">dictValue</Property>
+        <Property name="valueProperty">dictLabel</Property>
+      </Property>
+      <Property name="required">true</Property>
+    </PropertyDef>
+    <PropertyDef name="storageMax">
+      <Property name="dataType">Double</Property>
+      <Property name="label">璁捐鍌ㄩ噺</Property>
+      <Property name="displayFormat">#,##0 KG</Property>
+      <Property name="required">true</Property>
+    </PropertyDef>
+    <PropertyDef name="storageReal">
+      <Property name="dataType">Double</Property>
+      <Property name="label">瀹為檯鍌ㄩ噺</Property>
+      <Property name="displayFormat">#,##0 KG</Property>
+      <Property name="required">false</Property>
+    </PropertyDef>
+    <PropertyDef name="storeType">
+      <Property></Property>
+      <Property name="label">鍌ㄧ伯鏂瑰紡</Property>
+      <Property name="mapping">
+        <Property name="mapValues">${dorado.getDataProvider(&quot;dicPR#triggerStoreType&quot;).getResult()}</Property>
+        <Property name="keyProperty">dictValue</Property>
+        <Property name="valueProperty">dictLabel</Property>
+      </Property>
+      <Property name="required">true</Property>
+    </PropertyDef>
+    <PropertyDef name="foodType">
+      <Property></Property>
+      <Property name="label">绮鎬ц川</Property>
+      <Property name="mapping">
+        <Property name="mapValues">${dorado.getDataProvider(&quot;dicPR#sysDictData&quot;).getResult(&quot;FOOD_TYPE_&quot;)}</Property>
+        <Property name="keyProperty">dictValue</Property>
+        <Property name="valueProperty">dictLabel</Property>
+      </Property>
+    </PropertyDef>
+    <PropertyDef name="foodVariety">
+      <Property></Property>
+      <Property name="label">绮鍝佺</Property>
+      <Property name="mapping">
+        <Property name="mapValues">${dorado.getDataProvider(&quot;dicPR#sysDictData&quot;).getResult(&quot;FOOD_VARIETY_&quot;)}</Property>
+        <Property name="keyProperty">dictValue</Property>
+        <Property name="valueProperty">dictLabel</Property>
+      </Property>
+    </PropertyDef>
+    <PropertyDef name="foodLevel">
+      <Property></Property>
+      <Property name="label">绮绛夌骇</Property>
+      <Property name="mapping">
+        <Property name="mapValues">${dorado.getDataProvider(&quot;dicPR#triggerFoodLevel&quot;).getResult()}</Property>
+        <Property name="keyProperty">dictValue</Property>
+        <Property name="valueProperty">dictLabel</Property>
+      </Property>
+    </PropertyDef>
+    <PropertyDef name="foodLocation">
+      <Property></Property>
+      <Property name="label">绮浜у湴</Property>
+    </PropertyDef>
+    <PropertyDef name="foodLocationId">
+      <Property></Property>
+      <Property name="label">绮浜у湴</Property>
+    </PropertyDef>
+    <PropertyDef name="perWet">
+      <Property name="dataType">Double</Property>
+      <Property name="label">姘村垎</Property>
+      <Property name="displayFormat">0.0 %</Property>
+    </PropertyDef>
+    <PropertyDef name="perImpurity">
+      <Property name="dataType">Double</Property>
+      <Property name="label">鏉傝川</Property>
+      <Property name="displayFormat">0.0 %</Property>
+    </PropertyDef>
+    <PropertyDef name="bulkWeight">
+      <Property name="dataType">Double</Property>
+      <Property name="label">瀹归噸 g/L</Property>
+      <Property name="displayFormat">0.0 g/L</Property>
+    </PropertyDef>
+    <PropertyDef name="storeKeeper">
+      <Property></Property>
+      <Property name="label">淇濈鍛�</Property>
+    </PropertyDef>
+    <PropertyDef name="storeKeeperName">
+      <Property></Property>
+      <Property name="label">淇濈鍛�</Property>
+    </PropertyDef>
+    <PropertyDef name="checkDate">
+      <Property name="dataType">Date</Property>
+      <Property name="label">璐ㄦ鏃ユ湡</Property>
+    </PropertyDef>
+    <PropertyDef name="storeDate">
+      <Property name="dataType">Date</Property>
+      <Property name="label">鍏ュ簱鏃ユ湡</Property>
+    </PropertyDef>
+    <PropertyDef name="foodYear">
+      <Property></Property>
+      <Property name="label">绮骞翠唤</Property>
+    </PropertyDef>
+    <PropertyDef name="remark">
+      <Property></Property>
+      <Property name="label">澶囨敞淇℃伅</Property>
+    </PropertyDef>
+    <PropertyDef name="bhId">
+      <Property></Property>
+      <Property name="label">鍒嗘満缂栫爜</Property>
+    </PropertyDef>
+    <PropertyDef name="orderNum">
+      <Property name="dataType">Integer</Property>
+      <Property name="label">椤哄簭鍙�</Property>
+    </PropertyDef>
+  </DataType>
+  <DataType name="dtDepotStore">
+    <Property name="creationType">com.fzzy.igds.dzhwk.domain.DepotStore</Property>
+    <PropertyDef name="id">
+      <Property></Property>
+    </PropertyDef>
+    <PropertyDef name="companyId">
+      <Property></Property>
+      <Property name="label">缁勭粐缂栫爜</Property>
+    </PropertyDef>
+    <PropertyDef name="deptId">
+      <Property></Property>
+      <Property name="label">鎵�灞炲垎搴�</Property>
+    </PropertyDef>
+    <PropertyDef name="depotId">
+      <Property></Property>
+      <Property name="label">鎵�灞炰粨搴�</Property>
+      <Property name="mapping">
+        <Property name="mapValues">${dorado.getDataProvider(&quot;depotPR#getAllCache&quot;).getResult()}</Property>
+        <Property name="keyProperty">id</Property>
+        <Property name="valueProperty">name</Property>
+      </Property>
+      <Property name="required">true</Property>
+    </PropertyDef>
+    <PropertyDef name="country">
+      <Property></Property>
+      <Property name="label">鍥藉埆</Property>
+      <Property name="mapping">
+        <Property name="mapValues">${dorado.getDataProvider(&quot;dicPR#sysDictData&quot;).getResult(&quot;GB_&quot;)}</Property>
+        <Property name="keyProperty">dictValue</Property>
+        <Property name="valueProperty">dictLabel</Property>
+      </Property>
+    </PropertyDef>
+    <PropertyDef name="manageType">
+      <Property></Property>
+      <Property name="label">绠$悊鏂瑰紡</Property>
+      <Property name="mapping">
+        <Property name="mapValues">${dorado.getDataProvider(&quot;dicPR#triggerManagerType&quot;).getResult()}</Property>
+        <Property name="keyProperty">dictValue</Property>
+        <Property name="valueProperty">dictLabel</Property>
+      </Property>
+    </PropertyDef>
+    <PropertyDef name="storeType">
+      <Property></Property>
+      <Property name="label">鍌ㄧ伯鏂瑰紡</Property>
+      <Property name="mapping">
+        <Property name="mapValues">${dorado.getDataProvider(&quot;dicPR#triggerStoreType&quot;).getResult()}</Property>
+        <Property name="keyProperty">dictValue</Property>
+        <Property name="valueProperty">dictLabel</Property>
+      </Property>
+      <Property name="required">true</Property>
+    </PropertyDef>
+    <PropertyDef name="depotStatus">
+      <Property></Property>
+      <Property name="label">浠撳簱鐘舵��</Property>
+      <Property name="mapping">
+        <Property name="mapValues">${dorado.getDataProvider(&quot;dicPR#triggerDepotStatus&quot;).getResult()}</Property>
+        <Property name="keyProperty">dictValue</Property>
+        <Property name="valueProperty">dictLabel</Property>
+      </Property>
+      <Property name="required">true</Property>
+    </PropertyDef>
+    <PropertyDef name="foodType">
+      <Property></Property>
+      <Property name="label">绮鎬ц川</Property>
+      <Property name="mapping">
+        <Property name="mapValues">${dorado.getDataProvider(&quot;dicPR#sysDictData&quot;).getResult(&quot;FOOD_TYPE_&quot;)}</Property>
+        <Property name="keyProperty">dictValue</Property>
+        <Property name="valueProperty">dictLabel</Property>
+      </Property>
+    </PropertyDef>
+    <PropertyDef name="foodVariety">
+      <Property></Property>
+      <Property name="label">绮鍝佺</Property>
+      <Property name="mapping">
+        <Property name="mapValues">${dorado.getDataProvider(&quot;dicPR#sysDictData&quot;).getResult(&quot;FOOD_VARIETY_&quot;)}</Property>
+        <Property name="keyProperty">dictValue</Property>
+        <Property name="valueProperty">dictLabel</Property>
+      </Property>
+    </PropertyDef>
+    <PropertyDef name="foodLevel">
+      <Property></Property>
+      <Property name="label">绮绛夌骇</Property>
+      <Property name="mapping">
+        <Property name="mapValues">${dorado.getDataProvider(&quot;dicPR#triggerFoodLevel&quot;).getResult()}</Property>
+        <Property name="keyProperty">dictValue</Property>
+        <Property name="valueProperty">dictLabel</Property>
+      </Property>
+    </PropertyDef>
+    <PropertyDef name="foodLocationId">
+      <Property></Property>
+      <Property name="label">绮浜у湴</Property>
+    </PropertyDef>
+    <PropertyDef name="foodLocation">
+      <Property></Property>
+      <Property name="label">绮浜у湴</Property>
+    </PropertyDef>
+    <PropertyDef name="foodYear">
+      <Property></Property>
+      <Property name="label">鏀惰揣骞村害</Property>
+    </PropertyDef>
+    <PropertyDef name="storeDate">
+      <Property name="dataType">DateTime</Property>
+      <Property name="label">鍏ヤ粨鏃堕棿</Property>
+    </PropertyDef>
+    <PropertyDef name="storageReal">
+      <Property name="dataType">Double</Property>
+      <Property name="label">瀹為檯鍌ㄩ噺</Property>
+      <Property name="displayFormat">#,##0 KG</Property>
+      <Property name="required">true</Property>
+    </PropertyDef>
+    <PropertyDef name="storageSettle">
+      <Property name="dataType">Double</Property>
+      <Property name="label">璁′环鏁伴噺</Property>
+      <Property name="displayFormat">#,##0 KG</Property>
+      <Property name="required">true</Property>
+    </PropertyDef>
+    <PropertyDef name="fullDate">
+      <Property name="dataType">Date</Property>
+      <Property name="label">灏佷粨鏃ユ湡</Property>
+    </PropertyDef>
+    <PropertyDef name="outDate">
+      <Property name="label">鍑轰粨瀹屾垚鏃堕棿</Property>
+      <Property name="dataType">DateTime</Property>
+    </PropertyDef>
+    <PropertyDef name="grainHeight">
+      <Property name="dataType">Double</Property>
+      <Property name="label">瑁呯伯绾块珮</Property>
+      <Property name="displayFormat">0.00 绫�</Property>
+    </PropertyDef>
+    <PropertyDef name="grainVolume">
+      <Property name="dataType">Double</Property>
+      <Property name="label">瑁呯伯浣撶Н</Property>
+      <Property name="displayFormat">0.00 绔嬫柟绫�</Property>
+    </PropertyDef>
+    <PropertyDef name="remark">
+      <Property></Property>
+      <Property name="label">澶囨敞</Property>
+    </PropertyDef>
+    <PropertyDef name="updateUser">
+      <Property></Property>
+      <Property name="label">淇敼浜�</Property>
+    </PropertyDef>
+    <PropertyDef name="updateDate">
+      <Property name="dataType">Date</Property>
+      <Property name="label">淇敼鏃堕棿</Property>
+    </PropertyDef>
+    <PropertyDef name="createDate">
+      <Property name="dataType">Date</Property>
+    </PropertyDef>
+    <PropertyDef name="lqgsdwdm">
+      <Property/>
+      <Property name="label">绮潈鍗曚綅浠g爜</Property>
+    </PropertyDef>
+  </DataType>
+  <DataType name="dtArea">
+    <Property name="creationType">com.fzzy.igds.dzhwk.domain.DicArea</Property>
+    <PropertyDef name="code">
+      <Property></Property>
+      <Property name="label">鍖哄煙缂栫爜</Property>
+      <Property name="required">true</Property>
+    </PropertyDef>
+    <PropertyDef name="name">
+      <Property></Property>
+      <Property name="label">鍚嶇О</Property>
+      <Property name="required">true</Property>
+    </PropertyDef>
+    <PropertyDef name="parentCode">
+      <Property></Property>
+      <Property name="label">鎵�灞炲尯鍩�</Property>
+      <Property name="mapping">
+        <Property name="mapValues">${dorado.getDataProvider(&quot;dicAreaPR#getDicAreaByParentCode&quot;).getResult()}</Property>
+        <Property name="keyProperty">code</Property>
+        <Property name="valueProperty">name</Property>
+      </Property>
+    </PropertyDef>
+    <PropertyDef name="parentName">
+      <Property></Property>
+      <Property name="label">涓婄骇鍖哄煙</Property>
+      <Property name="required">false</Property>
+    </PropertyDef>
+    <PropertyDef name="type">
+      <Property></Property>
+      <Property name="label">绫诲瀷</Property>
+      <Property name="required">true</Property>
+      <Property name="mapping">
+        <Property name="keyProperty">value</Property>
+        <Property name="valueProperty">name</Property>
+        <Property name="mapValues">
+          <Collection>
+            <Entity>
+              <Property name="name">鐪�</Property>
+              <Property name="value">1</Property>
+            </Entity>
+            <Entity>
+              <Property name="name">甯�</Property>
+              <Property name="value">2</Property>
+            </Entity>
+            <Entity>
+              <Property name="name">鍖哄幙</Property>
+              <Property name="value">3</Property>
+            </Entity>
+          </Collection>
+        </Property>
+      </Property>
+    </PropertyDef>
+    <PropertyDef name="simple">
+      <Property></Property>
+      <Property name="label">绠�鎷�</Property>
+      <Property name="required">false</Property>
+    </PropertyDef>
+    <PropertyDef name="disabledTag">
+      <Property></Property>
+      <Property name="label">鏄惁绂佺敤</Property>
+      <Property name="required">false</Property>
+      <Property name="mapping">
+        <Property name="mapValues">
+          <Collection>
+            <Entity>
+              <Property name="name">绂佺敤</Property>
+              <Property name="value">Y</Property>
+            </Entity>
+            <Entity>
+              <Property name="name">鍚敤</Property>
+              <Property name="value">N</Property>
+            </Entity>
+          </Collection>
+        </Property>
+        <Property name="keyProperty">value</Property>
+        <Property name="valueProperty">name</Property>
+      </Property>
+    </PropertyDef>
+    <PropertyDef name="remark">
+      <Property></Property>
+      <Property name="label">澶囨敞</Property>
+      <Property name="required">false</Property>
+    </PropertyDef>
+  </DataType>
+</Model>
diff --git a/igds-dzhwk-web/src/main/java/com/fzzy/sys/controller/SysIndexController.java b/igds-dzhwk-web/src/main/java/com/fzzy/sys/controller/SysIndexController.java
index 0ecfb8a..f2ca4e9 100644
--- a/igds-dzhwk-web/src/main/java/com/fzzy/sys/controller/SysIndexController.java
+++ b/igds-dzhwk-web/src/main/java/com/fzzy/sys/controller/SysIndexController.java
@@ -42,21 +42,24 @@
     @Autowired
     private SysPasswordService passwordService;
 
-    // 绯荤粺棣栭〉
-    @GetMapping("/index")
-    public String index(@RequestParam(value = "bizType", required = false) String bizType,
-                        ModelMap mmap) {
+    /**
+     * 鍚庡彴绠$悊涓婚〉
+     * @param mmap
+     * @return
+     */
+    @GetMapping("/home")
+    public String home(@RequestParam(value = "bizType", required = false) String bizType,
+                       ModelMap mmap) {
         // 鍙栬韩浠戒俊鎭�
         SysUser user = getSysUser();
-
+        mmap.put("user", user);
 
         //鏍规嵁bizType鑾峰彇鑿滃崟
-        if(StringUtils.isEmpty(bizType)){
-            bizType = Constant.MODEL_DZHWK;
-        }
         List<SysMenu> menus = this.getMenusByBizType(user, bizType);
         mmap.put("menus", menus);
-        mmap.put("user", user);
+
+        String welcomeUrl = "/welcome?t=" + bizType;
+        mmap.put("welcomeUrl", welcomeUrl);
         mmap.put("sideTheme", configService.selectConfigByKey("sys.index.sideTheme", user.getCompanyId()));
         mmap.put("skinName", configService.selectConfigByKey("sys.index.skinName", user.getCompanyId()));
         Boolean footer = Convert.toBool(configService.selectConfigByKey("sys.index.footer", user.getCompanyId()), true);
@@ -75,7 +78,7 @@
         // 鑿滃崟瀵艰埅鏄剧ず椋庢牸
         String menuStyle = configService.selectConfigByKey("sys.index.menuStyle", user.getCompanyId());
         // 绉诲姩绔紝榛樿浣垮乏渚у鑸彍鍗曪紝鍚﹀垯鍙栭粯璁ら厤缃�
-        String indexStyle = ServletUtils.checkAgentIsMobile(ServletUtils.getRequest().getHeader("User-Agent")) ? "index" : menuStyle;
+        String indexStyle = ServletUtils.checkAgentIsMobile(ServletUtils.getRequest().getHeader("User-Agent")) ? "home" : menuStyle;
 
         // 浼樺厛Cookie閰嶇疆瀵艰埅鑿滃崟
         Cookie[] cookies = ServletUtils.getRequest().getCookies();
@@ -85,10 +88,26 @@
                 break;
             }
         }
-        String webIndex = "topnav".equalsIgnoreCase(indexStyle) ? "index-topnav" : "index";
+        String webIndex = "topnav".equalsIgnoreCase(indexStyle) ? "home-topnav" : "home";
         return webIndex;
     }
 
+    @GetMapping("/welcome")
+    public String welcome(@RequestParam(value = "t", required = true) String model,
+                          ModelMap mmap) {
+        mmap.put("version", FrameworkConfig.getVersion());
+        // 鐢ㄦ埛淇℃伅
+        SysUser user = getSysUser();
+        mmap.put(Constant.MODEL_KEY_LOGIN_USER, user);
+        //榛樿绮儏娆㈣繋椤甸潰
+        String view = "dzhwk/welcome";
+        if (Constant.MODEL_SYS.equals(model)) {
+            //绯荤粺绠$悊妯″潡娆㈣繋椤甸潰
+            view = "dzhwk/welcome";
+        }
+        return view;
+    }
+
     /**
      * 鏍规嵁bizType鑾峰彇鑿滃崟
      *
diff --git a/igds-dzhwk-web/src/main/resources/static/dzhwk/sys.css b/igds-dzhwk-web/src/main/resources/static/dzhwk/sys.css
index 6886157..5b069a9 100644
--- a/igds-dzhwk-web/src/main/resources/static/dzhwk/sys.css
+++ b/igds-dzhwk-web/src/main/resources/static/dzhwk/sys.css
@@ -29,7 +29,11 @@
 .row-opt {
     padding: 62px 65px 0
 }
-
+.m-tabopt{margin-bottom:20px;margin-left: 115px;}
+.ul-listopt{display:block;overflow:hidden}
+.ul-listopt li{margin-right:30px;float:left}
+.ul-listopt .con{display:flex;align-items:center;justify-content:center;width:136px;height:50px;background-image:url(../img/dzhwk/sys/a1.png);background-position:center;background-size:cover;background-repeat:no-repeat;font-size:16px;font-weight:700;color:#0cf;transition:.4s;-webkit-transition:.4s;-moz-transition:.4s;-ms-transition:.4s;-o-transition:.4s}
+.ul-listopt .con:hover,.ul-listopt .on .con{background-image:url(../img/dzhwk/sys/a1-1.png);color:#fff}
 .m-contopt {
     width: 1304px;
     height: 736px;
diff --git a/igds-dzhwk-web/src/main/resources/static/dzhwk/welcome/welcome.css b/igds-dzhwk-web/src/main/resources/static/dzhwk/welcome/welcome.css
new file mode 100644
index 0000000..58c637d
--- /dev/null
+++ b/igds-dzhwk-web/src/main/resources/static/dzhwk/welcome/welcome.css
@@ -0,0 +1,134 @@
+@charset "utf-8";
+
+/*-----------------
+  Author:xq
+  update:2019
+ -------------------*/
+body {
+	font-family: "寰蒋闆呴粦", Arial, sans-serif;
+	font-size: 14px;
+	background: #f3f5f8;
+	position: relative;
+	overflow: hidden;
+}
+
+i,em{
+	font-style: normal;
+}
+
+.i-bodyBg{
+	width: 100%;
+	height: 100%;
+	position: relative;
+	z-index: -1;
+}
+.i-bodyBg img{
+	width: 100%;
+	height: 100%;
+}
+
+.i-container{
+	width: 100%;
+	max-width: 1720px;
+	min-width: 1340px;
+	margin-left: auto;
+	margin-right: auto;
+	overflow: hidden;
+	position: relative;
+}
+
+.wel-main{
+	position: absolute;
+	width: 100%;
+	height: 100%;
+	top: 0;
+	left: 0;
+	right: 0;
+	bottom: 0;
+	z-index: 2;
+	
+}
+
+.wel-tit{
+	height: 100px;
+	text-align: center;
+	margin: 6% 0 4%;
+}
+.wel-tit img{
+	height: 100%;
+	max-width: 90%;
+}
+
+.wel-item{
+	width: 13.2%;
+	position: absolute;
+}
+
+
+.wel-item-img,
+.wel-item>a,
+.wel-item-img img{
+	display: block;
+	width: 100%;
+	
+}
+
+.wel-item-img img{
+	height: 100%;
+	opacity: 0.7;
+    filter: alpha(opacity=70);
+}
+
+.wel-item:hover .wel-item-img img{
+	opacity: 1;
+    filter: alpha(opacity=100);
+}
+
+.wel-item1{
+	left: 18%;
+	top: 37.5%;
+}
+
+
+.wel-item2{
+	left: 30.6%;
+	top: 51%;
+}
+
+.wel-item3{
+	left: 43.4%;
+	top: 37.5%;
+}
+
+.wel-item4{
+	left: 56%;
+	top: 51%;
+}
+
+.wel-item5{
+	left: 69%;
+	top: 37.5%;
+}
+
+.wel-item>a{
+	position: absolute;
+	left: 0;
+	top: 0;
+	right: 0;
+	bottom: 0;
+	z-index: 3;
+	overflow: hidden;
+	height: 100%;
+	text-align: center;
+}
+
+.wel-item>a p{
+	color: #fff;
+	margin-top: 65%;
+	line-height: 1;
+	font-size: 20px;
+}
+
+
+
+
diff --git a/igds-dzhwk-web/src/main/resources/static/img/dzhwk/sys/a1-1.png b/igds-dzhwk-web/src/main/resources/static/img/dzhwk/sys/a1-1.png
new file mode 100644
index 0000000..bc189a6
--- /dev/null
+++ b/igds-dzhwk-web/src/main/resources/static/img/dzhwk/sys/a1-1.png
Binary files differ
diff --git a/igds-dzhwk-web/src/main/resources/static/img/dzhwk/sys/a1.png b/igds-dzhwk-web/src/main/resources/static/img/dzhwk/sys/a1.png
new file mode 100644
index 0000000..36cbc54
--- /dev/null
+++ b/igds-dzhwk-web/src/main/resources/static/img/dzhwk/sys/a1.png
Binary files differ
diff --git a/igds-dzhwk-web/src/main/resources/static/img/dzhwk/welcome/n2-zn.png b/igds-dzhwk-web/src/main/resources/static/img/dzhwk/welcome/n2-zn.png
new file mode 100644
index 0000000..ecbe492
--- /dev/null
+++ b/igds-dzhwk-web/src/main/resources/static/img/dzhwk/welcome/n2-zn.png
Binary files differ
diff --git a/igds-dzhwk-web/src/main/resources/static/img/dzhwk/welcome/se-conf.png b/igds-dzhwk-web/src/main/resources/static/img/dzhwk/welcome/se-conf.png
new file mode 100644
index 0000000..1520003
--- /dev/null
+++ b/igds-dzhwk-web/src/main/resources/static/img/dzhwk/welcome/se-conf.png
Binary files differ
diff --git a/igds-dzhwk-web/src/main/resources/static/img/dzhwk/welcome/se-fk.png b/igds-dzhwk-web/src/main/resources/static/img/dzhwk/welcome/se-fk.png
new file mode 100644
index 0000000..51b0c53
--- /dev/null
+++ b/igds-dzhwk-web/src/main/resources/static/img/dzhwk/welcome/se-fk.png
Binary files differ
diff --git a/igds-dzhwk-web/src/main/resources/static/img/dzhwk/welcome/se-jk.png b/igds-dzhwk-web/src/main/resources/static/img/dzhwk/welcome/se-jk.png
new file mode 100644
index 0000000..a71cfb7
--- /dev/null
+++ b/igds-dzhwk-web/src/main/resources/static/img/dzhwk/welcome/se-jk.png
Binary files differ
diff --git a/igds-dzhwk-web/src/main/resources/static/img/dzhwk/welcome/se-mj.png b/igds-dzhwk-web/src/main/resources/static/img/dzhwk/welcome/se-mj.png
new file mode 100644
index 0000000..10cdc82
--- /dev/null
+++ b/igds-dzhwk-web/src/main/resources/static/img/dzhwk/welcome/se-mj.png
Binary files differ
diff --git a/igds-dzhwk-web/src/main/resources/static/img/dzhwk/welcome/se-rq.png b/igds-dzhwk-web/src/main/resources/static/img/dzhwk/welcome/se-rq.png
new file mode 100644
index 0000000..6b5b9af
--- /dev/null
+++ b/igds-dzhwk-web/src/main/resources/static/img/dzhwk/welcome/se-rq.png
Binary files differ
diff --git a/igds-dzhwk-web/src/main/resources/static/img/dzhwk/welcome/sys-depot.png b/igds-dzhwk-web/src/main/resources/static/img/dzhwk/welcome/sys-depot.png
new file mode 100644
index 0000000..70ada70
--- /dev/null
+++ b/igds-dzhwk-web/src/main/resources/static/img/dzhwk/welcome/sys-depot.png
Binary files differ
diff --git a/igds-dzhwk-web/src/main/resources/static/img/dzhwk/welcome/sys-device.png b/igds-dzhwk-web/src/main/resources/static/img/dzhwk/welcome/sys-device.png
new file mode 100644
index 0000000..ace7c10
--- /dev/null
+++ b/igds-dzhwk-web/src/main/resources/static/img/dzhwk/welcome/sys-device.png
Binary files differ
diff --git a/igds-dzhwk-web/src/main/resources/static/img/dzhwk/welcome/sys-grain.png b/igds-dzhwk-web/src/main/resources/static/img/dzhwk/welcome/sys-grain.png
new file mode 100644
index 0000000..58f8e5e
--- /dev/null
+++ b/igds-dzhwk-web/src/main/resources/static/img/dzhwk/welcome/sys-grain.png
Binary files differ
diff --git a/igds-dzhwk-web/src/main/resources/static/img/dzhwk/welcome/sys-url.png b/igds-dzhwk-web/src/main/resources/static/img/dzhwk/welcome/sys-url.png
new file mode 100644
index 0000000..b2f5d10
--- /dev/null
+++ b/igds-dzhwk-web/src/main/resources/static/img/dzhwk/welcome/sys-url.png
Binary files differ
diff --git a/igds-dzhwk-web/src/main/resources/static/img/dzhwk/welcome/sys-user.png b/igds-dzhwk-web/src/main/resources/static/img/dzhwk/welcome/sys-user.png
new file mode 100644
index 0000000..dc9c060
--- /dev/null
+++ b/igds-dzhwk-web/src/main/resources/static/img/dzhwk/welcome/sys-user.png
Binary files differ
diff --git a/igds-dzhwk-web/src/main/resources/static/img/dzhwk/welcome/sys-warn.png b/igds-dzhwk-web/src/main/resources/static/img/dzhwk/welcome/sys-warn.png
new file mode 100644
index 0000000..c13e70f
--- /dev/null
+++ b/igds-dzhwk-web/src/main/resources/static/img/dzhwk/welcome/sys-warn.png
Binary files differ
diff --git a/igds-dzhwk-web/src/main/resources/static/img/dzhwk/welcome/temp-control.png b/igds-dzhwk-web/src/main/resources/static/img/dzhwk/welcome/temp-control.png
new file mode 100644
index 0000000..c9bdce3
--- /dev/null
+++ b/igds-dzhwk-web/src/main/resources/static/img/dzhwk/welcome/temp-control.png
Binary files differ
diff --git a/igds-dzhwk-web/src/main/resources/static/img/dzhwk/welcome/temp-log.png b/igds-dzhwk-web/src/main/resources/static/img/dzhwk/welcome/temp-log.png
new file mode 100644
index 0000000..5baea23
--- /dev/null
+++ b/igds-dzhwk-web/src/main/resources/static/img/dzhwk/welcome/temp-log.png
Binary files differ
diff --git a/igds-dzhwk-web/src/main/resources/static/img/dzhwk/welcome/temp-mode.png b/igds-dzhwk-web/src/main/resources/static/img/dzhwk/welcome/temp-mode.png
new file mode 100644
index 0000000..fbc78ac
--- /dev/null
+++ b/igds-dzhwk-web/src/main/resources/static/img/dzhwk/welcome/temp-mode.png
Binary files differ
diff --git a/igds-dzhwk-web/src/main/resources/static/img/dzhwk/welcome/title-n2.png b/igds-dzhwk-web/src/main/resources/static/img/dzhwk/welcome/title-n2.png
new file mode 100644
index 0000000..9a1a268
--- /dev/null
+++ b/igds-dzhwk-web/src/main/resources/static/img/dzhwk/welcome/title-n2.png
Binary files differ
diff --git a/igds-dzhwk-web/src/main/resources/static/img/dzhwk/welcome/title-online.png b/igds-dzhwk-web/src/main/resources/static/img/dzhwk/welcome/title-online.png
new file mode 100644
index 0000000..ebb8d14
--- /dev/null
+++ b/igds-dzhwk-web/src/main/resources/static/img/dzhwk/welcome/title-online.png
Binary files differ
diff --git a/igds-dzhwk-web/src/main/resources/static/img/dzhwk/welcome/title-security.png b/igds-dzhwk-web/src/main/resources/static/img/dzhwk/welcome/title-security.png
new file mode 100644
index 0000000..82c0966
--- /dev/null
+++ b/igds-dzhwk-web/src/main/resources/static/img/dzhwk/welcome/title-security.png
Binary files differ
diff --git a/igds-dzhwk-web/src/main/resources/static/img/dzhwk/welcome/title-sys.png b/igds-dzhwk-web/src/main/resources/static/img/dzhwk/welcome/title-sys.png
new file mode 100644
index 0000000..61f7817
--- /dev/null
+++ b/igds-dzhwk-web/src/main/resources/static/img/dzhwk/welcome/title-sys.png
Binary files differ
diff --git a/igds-dzhwk-web/src/main/resources/static/img/dzhwk/welcome/title-zhgl.png b/igds-dzhwk-web/src/main/resources/static/img/dzhwk/welcome/title-zhgl.png
new file mode 100644
index 0000000..c335cc5
--- /dev/null
+++ b/igds-dzhwk-web/src/main/resources/static/img/dzhwk/welcome/title-zhgl.png
Binary files differ
diff --git a/igds-dzhwk-web/src/main/resources/static/img/dzhwk/welcome/wel-bg1.png b/igds-dzhwk-web/src/main/resources/static/img/dzhwk/welcome/wel-bg1.png
new file mode 100644
index 0000000..58f8e5e
--- /dev/null
+++ b/igds-dzhwk-web/src/main/resources/static/img/dzhwk/welcome/wel-bg1.png
Binary files differ
diff --git a/igds-dzhwk-web/src/main/resources/static/img/dzhwk/welcome/wel-bg2.png b/igds-dzhwk-web/src/main/resources/static/img/dzhwk/welcome/wel-bg2.png
new file mode 100644
index 0000000..5df7312
--- /dev/null
+++ b/igds-dzhwk-web/src/main/resources/static/img/dzhwk/welcome/wel-bg2.png
Binary files differ
diff --git a/igds-dzhwk-web/src/main/resources/static/img/dzhwk/welcome/wel-bg3.png b/igds-dzhwk-web/src/main/resources/static/img/dzhwk/welcome/wel-bg3.png
new file mode 100644
index 0000000..c896d97
--- /dev/null
+++ b/igds-dzhwk-web/src/main/resources/static/img/dzhwk/welcome/wel-bg3.png
Binary files differ
diff --git a/igds-dzhwk-web/src/main/resources/static/img/dzhwk/welcome/wel-bg4.png b/igds-dzhwk-web/src/main/resources/static/img/dzhwk/welcome/wel-bg4.png
new file mode 100644
index 0000000..b9a6627
--- /dev/null
+++ b/igds-dzhwk-web/src/main/resources/static/img/dzhwk/welcome/wel-bg4.png
Binary files differ
diff --git a/igds-dzhwk-web/src/main/resources/static/img/dzhwk/welcome/wel-bg5.png b/igds-dzhwk-web/src/main/resources/static/img/dzhwk/welcome/wel-bg5.png
new file mode 100644
index 0000000..f4547c8
--- /dev/null
+++ b/igds-dzhwk-web/src/main/resources/static/img/dzhwk/welcome/wel-bg5.png
Binary files differ
diff --git a/igds-dzhwk-web/src/main/resources/static/img/dzhwk/welcome/wel-body_03.png b/igds-dzhwk-web/src/main/resources/static/img/dzhwk/welcome/wel-body_03.png
new file mode 100644
index 0000000..71e2478
--- /dev/null
+++ b/igds-dzhwk-web/src/main/resources/static/img/dzhwk/welcome/wel-body_03.png
Binary files differ
diff --git a/igds-dzhwk-web/src/main/resources/static/img/dzhwk/welcome/wel-tit.png b/igds-dzhwk-web/src/main/resources/static/img/dzhwk/welcome/wel-tit.png
new file mode 100644
index 0000000..04feabc
--- /dev/null
+++ b/igds-dzhwk-web/src/main/resources/static/img/dzhwk/welcome/wel-tit.png
Binary files differ
diff --git a/igds-dzhwk-web/src/main/resources/static/img/dzhwk/welcome/zhgl-ht.png b/igds-dzhwk-web/src/main/resources/static/img/dzhwk/welcome/zhgl-ht.png
new file mode 100644
index 0000000..39f3c92
--- /dev/null
+++ b/igds-dzhwk-web/src/main/resources/static/img/dzhwk/welcome/zhgl-ht.png
Binary files differ
diff --git a/igds-dzhwk-web/src/main/resources/static/img/dzhwk/welcome/zhgl-jh.png b/igds-dzhwk-web/src/main/resources/static/img/dzhwk/welcome/zhgl-jh.png
new file mode 100644
index 0000000..d6f16b1
--- /dev/null
+++ b/igds-dzhwk-web/src/main/resources/static/img/dzhwk/welcome/zhgl-jh.png
Binary files differ
diff --git a/igds-dzhwk-web/src/main/resources/static/img/dzhwk/welcome/zhgl-kh.png b/igds-dzhwk-web/src/main/resources/static/img/dzhwk/welcome/zhgl-kh.png
new file mode 100644
index 0000000..cdb68e6
--- /dev/null
+++ b/igds-dzhwk-web/src/main/resources/static/img/dzhwk/welcome/zhgl-kh.png
Binary files differ
diff --git a/igds-dzhwk-web/src/main/resources/static/img/dzhwk/welcome/zhgl-xz.png b/igds-dzhwk-web/src/main/resources/static/img/dzhwk/welcome/zhgl-xz.png
new file mode 100644
index 0000000..8c1c483
--- /dev/null
+++ b/igds-dzhwk-web/src/main/resources/static/img/dzhwk/welcome/zhgl-xz.png
Binary files differ
diff --git a/igds-dzhwk-web/src/main/resources/static/img/dzhwk/welcome/zhgl-zc.png b/igds-dzhwk-web/src/main/resources/static/img/dzhwk/welcome/zhgl-zc.png
new file mode 100644
index 0000000..b380f77
--- /dev/null
+++ b/igds-dzhwk-web/src/main/resources/static/img/dzhwk/welcome/zhgl-zc.png
Binary files differ
diff --git a/igds-dzhwk-web/src/main/resources/static/ruoyi/home.js b/igds-dzhwk-web/src/main/resources/static/ruoyi/home.js
new file mode 100644
index 0000000..96e17e7
--- /dev/null
+++ b/igds-dzhwk-web/src/main/resources/static/ruoyi/home.js
@@ -0,0 +1,671 @@
+/**
+ * 棣栭〉鏂规硶灏佽澶勭悊
+ * Copyright (c) 2019 ruoyi
+ */
+layer.config({
+    extend: 'moon/style.css',
+    skin: 'layer-ext-moon'
+});
+
+var isMobile = false;
+var sidebarHeight = isMobile ? '100%' : '96%';
+
+$(function() {
+    // MetsiMenu
+    $('#side-menu').metisMenu();
+
+    // 鍥哄畾鑿滃崟鏍�
+    $('.sidebar-collapse').slimScroll({
+        height: sidebarHeight,
+        railOpacity: 0.9,
+        alwaysVisible: false
+    });
+
+    // 鑿滃崟鍒囨崲
+    $('.navbar-minimalize').click(function() {
+    	if (isMobile) {
+    	    $("body").toggleClass("canvas-menu");
+    	} else {
+    	    $("body").toggleClass("mini-navbar");
+    	}
+        SmoothlyMenu();
+    });
+
+    $('#side-menu>li').click(function() {
+    	if ($('body').hasClass('canvas-menu mini-navbar')) {
+            NavToggle();
+        }
+
+    });
+    $('#side-menu>li li a:not(:has(span))').click(function() {
+        if ($(window).width() < 769) {
+            NavToggle();
+        }
+    });
+
+    $('.nav-close').click(NavToggle);
+
+    //ios娴忚鍣ㄥ吋瀹规�у鐞�
+    if (/(iPhone|iPad|iPod|iOS)/i.test(navigator.userAgent)) {
+        $('#content-main').css('overflow-y', 'auto');
+    }
+
+});
+
+$(window).bind("load resize", function() {
+    isMobile = $.common.isMobile() || $(window).width() < 769;
+    if (isMobile) {
+        $('body').addClass('canvas-menu');
+        $("body").removeClass("mini-navbar");
+        $("nav .logo").addClass("hide");
+        $(".slimScrollDiv").css({ "overflow": "hidden" });
+        $('.navbar-static-side').fadeOut();
+    } else {
+    	if ($('body').hasClass('canvas-menu')) {
+    	    $('body').addClass('fixed-sidebar');
+    	    $('body').removeClass('canvas-menu');
+    	    $("body").removeClass("mini-navbar");
+    	    $("nav .logo").removeClass("hide");
+    	    $(".slimScrollDiv").css({ "overflow": "visible" });
+    	    $('.navbar-static-side').fadeIn();
+    	}
+    }
+});
+
+function openToCurrentTab(obj) {
+    if (isScrollToTop) {
+        $(obj).show().siblings('.RuoYi_iframe').hide();
+    } else {
+        $(obj).css({"visibility": "visible", "position": "static"}).siblings('.RuoYi_iframe').css({"visibility": "hidden", "position": "absolute"});
+    }
+}
+
+function syncMenuTab(dataId) {
+    if (isLinkage) {
+        var $dataObj = $('a[href$="' + decodeURI(dataId) + '"]');
+        if ($dataObj.attr("class") != null && !$dataObj.hasClass("noactive")) {
+            $('.tab-pane li').removeClass("active");
+            $('.nav ul').removeClass("in");
+            $dataObj.parents("ul").addClass("in")
+            $dataObj.parents("li").addClass("active").siblings().removeClass("active").find('li').removeClass("active");
+            $dataObj.parents("ul").css('height', 'auto').height();
+            $(".nav ul li, .nav li").removeClass("selected");
+            $dataObj.parent("li").addClass("selected");
+            setIframeUrl(dataId);
+            
+            // 椤堕儴鑿滃崟鍚屾澶勭悊
+            var tabStr = $dataObj.parents(".tab-pane").attr("id");
+            if ($.common.isNotEmpty(tabStr)) {
+                var sepIndex = tabStr.lastIndexOf('_');
+                var menuId = tabStr.substring(sepIndex + 1, tabStr.length);
+                $("#tab_" + menuId + " a").click();
+            }
+        }
+    }
+}
+
+function NavToggle() {
+    $('.navbar-minimalize').trigger('click');
+}
+
+function fixedSidebar() {
+    $('#side-menu').hide();
+    $("nav .logo").addClass("hide");
+    setTimeout(function() {
+        $('#side-menu').fadeIn(500);
+    }, 100);
+}
+
+// 璁剧疆閿氱偣
+function setIframeUrl(href) {
+	if ($.common.equals("history", mode)) {
+	    storage.set('publicPath', href);
+	} else {
+	    var nowUrl = window.location.href;
+	    var newUrl = nowUrl.substring(0, nowUrl.indexOf("#"));
+	    window.location.href = newUrl + "#" + href;
+	}
+}
+
+function SmoothlyMenu() {
+    if (isMobile && !$('body').hasClass('canvas-menu')) {
+    	$('.navbar-static-side').fadeIn();
+    	fixedSidebar();
+    } else if (!isMobile &&!$('body').hasClass('mini-navbar')) {
+    	fixedSidebar();
+    	$("nav .logo").removeClass("hide");
+    } else if (isMobile && $('body').hasClass('fixed-sidebar')) {
+    	$('.navbar-static-side').fadeOut();
+    	fixedSidebar();
+    } else if (!isMobile && $('body').hasClass('fixed-sidebar')) {
+    	fixedSidebar();
+    } else {
+        $('#side-menu').removeAttr('style');
+    }
+}
+
+/**
+ * iframe澶勭悊
+ */
+$(function() {
+    //璁$畻鍏冪礌闆嗗悎鐨勬�诲搴�
+    function calSumWidth(elements) {
+        var width = 0;
+        $(elements).each(function() {
+            width += $(this).outerWidth(true);
+        });
+        return width;
+    }
+
+    // 婵�娲绘寚瀹氶�夐」鍗�
+    function setActiveTab(element) {
+        if (!$(element).hasClass('active')) {
+            var currentId = $(element).data('id');
+            syncMenuTab(currentId);
+            // 鏄剧ずtab瀵瑰簲鐨勫唴瀹瑰尯
+            $('.RuoYi_iframe').each(function() {
+                if ($(this).data('id') == currentId) {
+                    openToCurrentTab(this);
+                }
+            });
+            $(element).addClass('active').siblings('.menuTab').removeClass('active');
+            scrollToTab(element);
+        }
+    }
+
+    //婊氬姩鍒版寚瀹氶�夐」鍗�
+    function scrollToTab(element) {
+        var marginLeftVal = calSumWidth($(element).prevAll()),
+        marginRightVal = calSumWidth($(element).nextAll());
+        // 鍙鍖哄煙闈瀟ab瀹藉害
+        var tabOuterWidth = calSumWidth($(".content-tabs").children().not(".menuTabs"));
+        //鍙鍖哄煙tab瀹藉害
+        var visibleWidth = $(".content-tabs").outerWidth(true) - tabOuterWidth;
+        //瀹為檯婊氬姩瀹藉害
+        var scrollVal = 0;
+        if ($(".page-tabs-content").outerWidth() < visibleWidth) {
+            scrollVal = 0;
+        } else if (marginRightVal <= (visibleWidth - $(element).outerWidth(true) - $(element).next().outerWidth(true))) {
+            if ((visibleWidth - $(element).next().outerWidth(true)) > marginRightVal) {
+                scrollVal = marginLeftVal;
+                var tabElement = element;
+                while ((scrollVal - $(tabElement).outerWidth()) > ($(".page-tabs-content").outerWidth() - visibleWidth)) {
+                    scrollVal -= $(tabElement).prev().outerWidth();
+                    tabElement = $(tabElement).prev();
+                }
+            }
+        } else if (marginLeftVal > (visibleWidth - $(element).outerWidth(true) - $(element).prev().outerWidth(true))) {
+            scrollVal = marginLeftVal - $(element).prev().outerWidth(true);
+        }
+        $('.page-tabs-content').animate({ marginLeft: 0 - scrollVal + 'px' }, "fast");
+    }
+
+    //鏌ョ湅宸︿晶闅愯棌鐨勯�夐」鍗�
+    function scrollTabLeft() {
+        var marginLeftVal = Math.abs(parseInt($('.page-tabs-content').css('margin-left')));
+        // 鍙鍖哄煙闈瀟ab瀹藉害
+        var tabOuterWidth = calSumWidth($(".content-tabs").children().not(".menuTabs"));
+        //鍙鍖哄煙tab瀹藉害
+        var visibleWidth = $(".content-tabs").outerWidth(true) - tabOuterWidth;
+        //瀹為檯婊氬姩瀹藉害
+        var scrollVal = 0;
+        if (($(".page-tabs-content").width()) < visibleWidth) {
+            return false;
+        } else {
+            var tabElement = $(".menuTab:first");
+            var offsetVal = 0;
+            while ((offsetVal + $(tabElement).outerWidth(true)) <= marginLeftVal) { //鎵惧埌绂诲綋鍓峵ab鏈�杩戠殑鍏冪礌
+                offsetVal += $(tabElement).outerWidth(true);
+                tabElement = $(tabElement).next();
+            }
+            offsetVal = 0;
+            if (calSumWidth($(tabElement).prevAll()) > visibleWidth) {
+                while ((offsetVal + $(tabElement).outerWidth(true)) < (visibleWidth) && tabElement.length > 0) {
+                    offsetVal += $(tabElement).outerWidth(true);
+                    tabElement = $(tabElement).prev();
+                }
+                scrollVal = calSumWidth($(tabElement).prevAll());
+            }
+        }
+        $('.page-tabs-content').animate({ marginLeft: 0 - scrollVal + 'px' }, "fast");
+    }
+
+    //鏌ョ湅鍙充晶闅愯棌鐨勯�夐」鍗�
+    function scrollTabRight() {
+        var marginLeftVal = Math.abs(parseInt($('.page-tabs-content').css('margin-left')));
+        // 鍙鍖哄煙闈瀟ab瀹藉害
+        var tabOuterWidth = calSumWidth($(".content-tabs").children().not(".menuTabs"));
+        //鍙鍖哄煙tab瀹藉害
+        var visibleWidth = $(".content-tabs").outerWidth(true) - tabOuterWidth;
+        //瀹為檯婊氬姩瀹藉害
+        var scrollVal = 0;
+        if ($(".page-tabs-content").width() < visibleWidth) {
+            return false;
+        } else {
+            var tabElement = $(".menuTab:first");
+            var offsetVal = 0;
+            while ((offsetVal + $(tabElement).outerWidth(true)) <= marginLeftVal) { //鎵惧埌绂诲綋鍓峵ab鏈�杩戠殑鍏冪礌
+                offsetVal += $(tabElement).outerWidth(true);
+                tabElement = $(tabElement).next();
+            }
+            offsetVal = 0;
+            while ((offsetVal + $(tabElement).outerWidth(true)) < (visibleWidth) && tabElement.length > 0) {
+                offsetVal += $(tabElement).outerWidth(true);
+                tabElement = $(tabElement).next();
+            }
+            scrollVal = calSumWidth($(tabElement).prevAll());
+            if (scrollVal > 0) {
+                $('.page-tabs-content').animate({ marginLeft: 0 - scrollVal + 'px' }, "fast");
+            }
+        }
+    }
+
+    //閫氳繃閬嶅巻缁欒彍鍗曢」鍔犱笂data-index灞炴��
+    $(".menuItem").each(function(index) {
+        if (!$(this).attr('data-index')) {
+            $(this).attr('data-index', index);
+        }
+    });
+
+    function menuItem() {
+        // 鑾峰彇鏍囪瘑鏁版嵁
+        var dataUrl = $(this).attr('href'),
+        dataIndex = $(this).data('index'),
+        menuName = $(this).data('title') || $.trim($(this).text()),
+        isRefresh = $(this).data("refresh"),
+        flag = true;
+
+        var $dataObj = $('a[href$="' + decodeURI(dataUrl) + '"]');
+        if (!$dataObj.hasClass("noactive")) {
+            $('.tab-pane li').removeClass("active");
+            $('.nav ul').removeClass("in");
+            $dataObj.parents("ul").addClass("in")
+            $dataObj.parents("li").addClass("active").siblings().removeClass("active").find('li').removeClass("active");
+            $dataObj.parents("ul").css('height', 'auto').height();
+            $(".nav ul li, .nav li").removeClass("selected");
+            $(this).parent("li").addClass("selected");
+        }
+        setIframeUrl(dataUrl);
+        if (dataUrl == undefined || $.trim(dataUrl).length == 0) return false;
+
+        // 閫夐」鍗¤彍鍗曞凡瀛樺湪
+        $('.menuTab').each(function() {
+            if ($(this).data('id') == dataUrl) {
+                if (!$(this).hasClass('active')) {
+                    $(this).addClass('active').siblings('.menuTab').removeClass('active');
+                    scrollToTab(this);
+                    // 鏄剧ずtab瀵瑰簲鐨勫唴瀹瑰尯
+                    $('.mainContent .RuoYi_iframe').each(function() {
+                        if ($(this).data('id') == dataUrl) {
+                            openToCurrentTab(this);
+                            return false;
+                        }
+                    });
+                }
+                if (isRefresh) {
+                    refreshTab();
+                }
+                flag = false;
+                return false;
+            }
+        });
+        // 閫夐」鍗¤彍鍗曚笉瀛樺湪
+        if (flag) {
+            var str = '<a href="javascript:;" class="active menuTab" data-id="' + dataUrl + '">' + menuName + ' <i class="fa fa-times-circle"></i></a>';
+            $('.menuTab').removeClass('active');
+
+            // 娣诲姞閫夐」鍗″搴旂殑iframe
+            var str1 = '<iframe class="RuoYi_iframe" name="iframe' + dataIndex + '" width="100%" height="100%" src="' + dataUrl + '" frameborder="0" data-id="' + dataUrl + '" data-refresh="' + isRefresh + '" seamless></iframe>';
+            if (isScrollToTop) {
+                $('.mainContent').find('iframe.RuoYi_iframe').hide().parents('.mainContent').append(str1);
+            } else {
+                $('.mainContent').find('iframe.RuoYi_iframe').css({"visibility": "hidden", "position": "absolute"}).parents('.mainContent').append(str1);
+            }
+            
+            $.modal.loading("鏁版嵁鍔犺浇涓紝璇风◢鍊�...");
+
+            $('.mainContent iframe:visible').on('load', function() {
+            	$.modal.closeLoading();
+            });
+
+            // 娣诲姞閫夐」鍗�
+            $('.menuTabs .page-tabs-content').append(str);
+            scrollToTab($('.menuTab.active'));
+        }
+        return false;
+    }
+
+    function menuBlank() {
+    	// 鏂扮獥鍙f墦寮�澶栫綉浠ttp://寮�澶达紝濡俬ttp://ruoyi.vip
+    	var dataUrl = $(this).attr('href');
+    	window.open(dataUrl);
+    	return false;
+    }
+
+    $('.menuItem').on('click', menuItem);
+
+    $('.menuBlank').on('click', menuBlank);
+
+    // 鍏抽棴閫夐」鍗¤彍鍗�
+    function closeTab() {
+        var closeTabId = $(this).parents('.menuTab').data('id');
+        var currentWidth = $(this).parents('.menuTab').width();
+        var panelUrl = $(this).parents('.menuTab').data('panel');
+        // 褰撳墠鍏冪礌澶勪簬娲诲姩鐘舵��
+        if ($(this).parents('.menuTab').hasClass('active')) {
+
+            // 褰撳墠鍏冪礌鍚庨潰鏈夊悓杈堝厓绱狅紝浣垮悗闈㈢殑涓�涓厓绱犲浜庢椿鍔ㄧ姸鎬�
+            if ($(this).parents('.menuTab').next('.menuTab').length) {
+
+                var activeId = $(this).parents('.menuTab').next('.menuTab:eq(0)').data('id');
+                $(this).parents('.menuTab').next('.menuTab:eq(0)').addClass('active');
+
+                $('.mainContent .RuoYi_iframe').each(function() {
+                    if ($(this).data('id') == activeId) {
+                        openToCurrentTab(this);
+                        return false;
+                    }
+                });
+
+                var marginLeftVal = parseInt($('.page-tabs-content').css('margin-left'));
+                if (marginLeftVal < 0) {
+                    $('.page-tabs-content').animate({ marginLeft: (marginLeftVal + currentWidth) + 'px' }, "fast");
+                }
+
+                //  绉婚櫎褰撳墠閫夐」鍗�
+                $(this).parents('.menuTab').remove();
+
+                // 绉婚櫎tab瀵瑰簲鐨勫唴瀹瑰尯
+                $('.mainContent .RuoYi_iframe').each(function() {
+                    if ($(this).data('id') == closeTabId) {
+                        $(this).remove();
+                        return false;
+                    }
+                });
+            }
+
+            // 褰撳墠鍏冪礌鍚庨潰娌℃湁鍚岃緢鍏冪礌锛屼娇褰撳墠鍏冪礌鐨勪笂涓�涓厓绱犲浜庢椿鍔ㄧ姸鎬�
+            if ($(this).parents('.menuTab').prev('.menuTab').length) {
+                var activeId = $(this).parents('.menuTab').prev('.menuTab:last').data('id');
+                $(this).parents('.menuTab').prev('.menuTab:last').addClass('active');
+                $('.mainContent .RuoYi_iframe').each(function() {
+                    if ($(this).data('id') == activeId) {
+                        openToCurrentTab(this);
+                        return false;
+                    }
+                });
+
+                //  绉婚櫎褰撳墠閫夐」鍗�
+                $(this).parents('.menuTab').remove();
+
+                // 绉婚櫎tab瀵瑰簲鐨勫唴瀹瑰尯
+                $('.mainContent .RuoYi_iframe').each(function() {
+                    if ($(this).data('id') == closeTabId) {
+                        $(this).remove();
+                        return false;
+                    }
+                });
+
+                if ($.common.isNotEmpty(panelUrl)) {
+            		$('.menuTab[data-id="' + panelUrl + '"]').addClass('active').siblings('.menuTab').removeClass('active');
+            		$('.mainContent .RuoYi_iframe').each(function() {
+                        if ($(this).data('id') == panelUrl) {
+                            openToCurrentTab(this);
+                            return false;
+                        }
+                    });
+            	}
+            }
+        }
+        // 褰撳墠鍏冪礌涓嶅浜庢椿鍔ㄧ姸鎬�
+        else {
+            //  绉婚櫎褰撳墠閫夐」鍗�
+            $(this).parents('.menuTab').remove();
+
+            // 绉婚櫎鐩稿簲tab瀵瑰簲鐨勫唴瀹瑰尯
+            $('.mainContent .RuoYi_iframe').each(function() {
+                if ($(this).data('id') == closeTabId) {
+                    $(this).remove();
+                    return false;
+                }
+            });
+        }
+        scrollToTab($('.menuTab.active'));
+        syncMenuTab($.common.isNotEmpty(panelUrl) ? panelUrl : $('.page-tabs-content').find('.active').attr('data-id'));
+        return false;
+    }
+
+    $('.menuTabs').on('click', '.menuTab i', closeTab);
+
+    //婊氬姩鍒板凡婵�娲荤殑閫夐」鍗�
+    function showActiveTab() {
+        scrollToTab($('.menuTab.active'));
+    }
+    $('.tabShowActive').on('click', showActiveTab);
+
+    // 鐐瑰嚮閫夐」鍗¤彍鍗�
+    function activeTab() {
+        if (!$(this).hasClass('active')) {
+            var currentId = $(this).data('id');
+            var isRefresh = false;
+            syncMenuTab(currentId);
+            // 鏄剧ずtab瀵瑰簲鐨勫唴瀹瑰尯
+            $('.mainContent .RuoYi_iframe').each(function() {
+                if ($(this).data('id') == currentId) {
+                    openToCurrentTab(this);
+                    isRefresh = $.common.nullToDefault($(this).data('refresh'), false);
+                    return false;
+                }
+            });
+            $(this).addClass('active').siblings('.menuTab').removeClass('active');
+            if (isRefresh) {
+                refreshTab();
+            }
+            scrollToTab(this);
+        }
+    }
+
+    // 鐐瑰嚮閫夐」鍗¤彍鍗�
+    $('.menuTabs').on('click', '.menuTab', activeTab);
+
+    // 鍒锋柊iframe
+    function refreshTab() {
+    	var currentId = $('.page-tabs-content').find('.active').attr('data-id');
+    	var target = $('.RuoYi_iframe[data-id="' + currentId + '"]');
+        var url = target.attr('src');
+    	target.attr('src', url).ready();
+    }
+
+    // 椤电鍏ㄥ睆
+    function fullScreenTab() {
+    	var currentId = $('.page-tabs-content').find('.active').attr('data-id');
+    	var target = $('.RuoYi_iframe[data-id="' + currentId + '"]');
+    	target.fullScreen(true);
+    }
+
+    // 鍏抽棴褰撳墠閫夐」鍗�
+    function tabCloseCurrent() {
+    	$('.page-tabs-content').find('.active i').trigger("click");
+    }
+
+    //鍏抽棴鍏朵粬閫夐」鍗�
+    function tabCloseOther() {
+        $('.page-tabs-content').children("[data-id]").not(":first").not(".active").each(function() {
+            $('.RuoYi_iframe[data-id="' + $(this).data('id') + '"]').remove();
+            $(this).remove();
+        });
+        $('.page-tabs-content').animate({ marginLeft: '0px' }, "fast");
+    }
+
+    // 鍏抽棴鍏ㄩ儴閫夐」鍗�
+    function tabCloseAll() {
+    	$('.page-tabs-content').children("[data-id]").not(":first").each(function() {
+            $('.RuoYi_iframe[data-id="' + $(this).data('id') + '"]').remove();
+            $(this).remove();
+        });
+        $('.page-tabs-content').children("[data-id]:first").each(function() {
+            if (isScrollToTop) {
+                $('.RuoYi_iframe[data-id="' + $(this).data('id') + '"]').show();
+            } else {
+                $('.RuoYi_iframe[data-id="' + $(this).data('id') + '"]').css({"visibility": "visible", "position": "static"});
+            }
+            $(this).addClass("active");
+        });
+        $('.page-tabs-content').css("margin-left", "0");
+        syncMenuTab($('.page-tabs-content').find('.active').attr('data-id'));
+    }
+
+
+    // 鍏ㄥ睆鏄剧ず
+    $('#fullScreen').on('click', function () {
+    	$(document).toggleFullScreen();
+    });
+    
+    // 閿佸畾灞忓箷
+    $('#lockScreen').on('click', function () {
+    	storage.set('lockPath', $('.page-tabs-content').find('.active').attr('data-id'));
+    	location.href  = ctx + "lockscreen";
+    });
+
+    // 椤电鍒锋柊鎸夐挳
+    $('.tabReload').on('click', refreshTab);
+
+    // 椤电鍏ㄥ睆鎸夐挳
+    $('.tabFullScreen').on('click', fullScreenTab);
+
+    // 鍙屽嚮閫夐」鍗″叏灞忔樉绀�
+    $('.menuTabs').on('dblclick', '.menuTab', activeTabMax);
+
+    // 宸︾Щ鎸夋壄
+    $('.tabLeft').on('click', scrollTabLeft);
+
+    // 鍙崇Щ鎸夋壄
+    $('.tabRight').on('click', scrollTabRight);
+
+    // 鍏抽棴褰撳墠
+    $('.tabCloseCurrent').on('click', tabCloseCurrent);
+
+    // 鍏抽棴鍏朵粬
+    $('.tabCloseOther').on('click', tabCloseOther);
+
+    // 鍏抽棴鍏ㄩ儴
+    $('.tabCloseAll').on('click', tabCloseAll);
+
+    // tab鍏ㄥ睆鏄剧ず
+    $('.tabMaxCurrent').on('click', function () {
+        $('.page-tabs-content').find('.active').trigger("dblclick");
+    });
+
+    // 鍏抽棴鍏ㄥ睆
+    $('#ax_close_max').click(function(){
+    	$('#content-main').toggleClass('max');
+    	$('#ax_close_max').hide();
+    })
+
+    // 鍙屽嚮閫夐」鍗″叏灞忔樉绀�
+    function activeTabMax() {
+        $('#content-main').toggleClass('max');
+        $('#ax_close_max').show();
+    }
+
+    $(window).keydown(function(event) {
+        if (event.keyCode == 27) {
+            $('#content-main').removeClass('max');
+            $('#ax_close_max').hide();
+        }
+    });
+
+    window.onhashchange = function() {
+        var hash = location.hash;
+        var url = hash.substring(1, hash.length);
+        $('a[href$="' + url + '"]').click();
+    };
+
+    // 鍙抽敭鑿滃崟瀹炵幇
+    $.contextMenu({
+        selector: ".menuTab",
+        trigger: 'right',
+        autoHide: true,
+        items: {
+            "close_current": {
+                name: "鍏抽棴褰撳墠",
+                icon: "fa-close",
+                callback: function(key, opt) {
+                    opt.$trigger.find('i').trigger("click");
+                }
+            },
+            "close_other": {
+                name: "鍏抽棴鍏朵粬",
+                icon: "fa-window-close-o",
+                callback: function(key, opt) {
+                    setActiveTab(this);
+                    tabCloseOther();
+                }
+            },
+            "close_left": {
+                name: "鍏抽棴宸︿晶",
+                icon: "fa-reply",
+                callback: function(key, opt) {
+                    setActiveTab(this);
+                    this.prevAll('.menuTab').not(":last").each(function() {
+                        if ($(this).hasClass('active')) {
+                            setActiveTab(this);
+                        }
+                        $('.RuoYi_iframe[data-id="' + $(this).data('id') + '"]').remove();
+                        $(this).remove();
+                    });
+                    $('.page-tabs-content').animate({ marginLeft: '0px' }, "fast");
+                }
+            },
+            "close_right": {
+                name: "鍏抽棴鍙充晶",
+                icon: "fa-share",
+                callback: function(key, opt) {
+                    setActiveTab(this);
+                    this.nextAll('.menuTab').each(function() {
+                        $('.RuoYi_iframe[data-id="' + $(this).data('id') + '"]').remove();
+                        $(this).remove();
+                    });
+                }
+            },
+            "close_all": {
+                name: "鍏ㄩ儴鍏抽棴",
+                icon: "fa-window-close",
+                callback: function(key, opt) {
+                    tabCloseAll();
+                }
+            },
+            "step": "---------",
+            "full": {
+                name: "鍏ㄥ睆鏄剧ず",
+                icon: "fa-arrows-alt",
+                callback: function(key, opt) {
+                    setActiveTab(this);
+                    var target = $('.RuoYi_iframe[data-id="' + this.data('id') + '"]');
+                    target.fullScreen(true);
+                }
+            },
+            "refresh": {
+                name: "鍒锋柊椤甸潰",
+                icon: "fa-refresh",
+                callback: function(key, opt) {
+                    setActiveTab(this);
+                    var target = $('.RuoYi_iframe[data-id="' + this.data('id') + '"]');
+                    var url = target.attr('src');
+                    $.modal.loading("鏁版嵁鍔犺浇涓紝璇风◢鍊�...");
+                    target.attr('src', url).on('load', function() {
+                    	$.modal.closeLoading();
+                    });
+                }
+            },
+            "open": {
+                name: "鏂扮獥鍙f墦寮�",
+                icon: "fa-link",
+                callback: function(key, opt) {
+                    var target = $('.RuoYi_iframe[data-id="' + this.data('id') + '"]');
+                    window.open(target.attr('src'));
+                }
+            },
+        }
+    });
+});
diff --git a/igds-dzhwk-web/src/main/resources/templates/dzhwk/sys.html b/igds-dzhwk-web/src/main/resources/templates/dzhwk/sys.html
index 1652811..a8830bf 100644
--- a/igds-dzhwk-web/src/main/resources/templates/dzhwk/sys.html
+++ b/igds-dzhwk-web/src/main/resources/templates/dzhwk/sys.html
@@ -31,7 +31,16 @@
             <div class="left-slide">
                 <div class="g-boxl1">
 
-                        <div class="row-opt" style="margin: 25px 0 72px 0;">
+                        <div class="row-opt" style="padding: 30px;margin: 0 0 30px 0;">
+                            <div class="m-tabopt">
+                                <ul class="ul-listopt TAB_CLICK" id=".tab1">
+                                    <li>
+                                        <a href="javascript:void(0)" onclick="toHome()" class="con">
+                                            <div class="txt">鍚庡彴绠$悊</div>
+                                        </a>
+                                    </li>
+                                </ul>
+                            </div>
                             <div class="m-contopt">
                                 <div class="tab1">
                                     <div class="m-opt1">
@@ -212,6 +221,10 @@
         timeFormate()
     }, 1000);
 
+    function toHome() {
+        window.location.href = "../home?bizType=sys";
+    }
+
     //鐩戝惉鎿嶄綔
     document.addEventListener('mousemove', resetTimeout);  //榧犳爣绉诲姩
     document.addEventListener('click', resetTimeout);      //榧犳爣鐐瑰嚮
diff --git a/igds-dzhwk-web/src/main/resources/templates/dzhwk/welcome.html b/igds-dzhwk-web/src/main/resources/templates/dzhwk/welcome.html
new file mode 100644
index 0000000..22f3cc8
--- /dev/null
+++ b/igds-dzhwk-web/src/main/resources/templates/dzhwk/welcome.html
@@ -0,0 +1,92 @@
+<!DOCTYPE html>
+<html lang="zh-cn" xmlns:th=http://www.thymeleaf.org>
+<head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="renderer" content="webkit">
+    <title>绯荤粺绠$悊-娆㈣繋椤�</title>
+    <meta name="description" content="鏅烘収绮簱缁煎悎绠$悊骞冲彴">
+
+    <link rel="stylesheet" th:href="@{/ajax/libs/layui/css/layui.css}"/>
+    <link th:href="@{/dzhwk/welcome/welcome.css}" rel="stylesheet" type="text/css">
+</head>
+
+<body>
+<div class="i-container ">
+    <div class="i-bodyBg">
+        <img th:src="@{/img/dzhwk/welcome/wel-body_03.png}"/>
+    </div>
+    <div class="wel-main">
+        <h2 class="wel-tit">
+            <img th:src="@{/img/dzhwk/welcome/title-sys.png}"/>
+        </h2>
+        <div class="wel-nav">
+            <div class="wel-item wel-item1">
+				<span class="wel-item-img">
+                    <img th:src="@{/img/dzhwk/welcome/sys-depot.png}"/>
+                </span>
+                <a href="javascript:;" onclick="open1()">
+                    <p>浠撳簱绠$悊</p>
+                </a>
+            </div>
+            <div class="wel-item wel-item2">
+                <span class="wel-item-img">
+                    <img th:src="@{/img/dzhwk/welcome/sys-grain.png}"/>
+                </span>
+                <a href="javascript:;" onclick="open2()">
+                    <p>绯荤粺鍙傛暟</p>
+                </a>
+            </div>
+            <div class="wel-item wel-item3">
+                <span class="wel-item-img">
+                    <img th:src="@{/img/dzhwk/welcome/sys-device.png}"/>
+                </span>
+                <a href="javascript:;" onclick="open3()">
+                    <p>浼佷笟缁勭粐</p>
+                </a>
+            </div>
+            <div class="wel-item wel-item4">
+                <span class="wel-item-img">
+                    <img th:src="@{/img/dzhwk/welcome/sys-url.png}"/>
+                </span>
+                <a href="javascript:;" onclick="open4()">
+                    <p>鑿滃崟绠$悊</p>
+                </a>
+            </div>
+            <div class="wel-item wel-item5">
+                <span class="wel-item-img">
+                    <img th:src="@{/img/dzhwk/welcome/sys-user.png}"/>
+                </span>
+                <a href="javascript:;" onclick="open5()">
+                    <p>鐢ㄦ埛绠$悊</p>
+                </a>
+            </div>
+        </div>
+    </div>
+    <!--wel-main end-->
+</div>
+
+<script type="text/javascript">
+    function open1() {
+        // window.parent.openTab("com.ld.igds.view.Depot.d", "浠撳簱绠$悊", "Depot");
+    };
+
+    function open2() {
+        // window.parent.openTab("com.ld.igds.view.SysConf.d", "绯荤粺鍙傛暟", "SysConf");
+    };
+
+    function open3() {
+        // window.parent.openTab("com.ld.igds.sys.Dept.d", "浼佷笟缁勭粐绠$悊", "Dept");
+    };
+
+    function open4() {
+        // window.parent.openTab("com.ld.igds.sys.UrlMaintain.d", "鑿滃崟绠$悊", "UrlMaintain");
+    };
+
+    function open5() {
+        // window.parent.openTab("com.ld.igds.sys.User.d", "鐢ㄦ埛绠$悊", "User");
+    };
+</script>
+</body>
+</html>
diff --git a/igds-dzhwk-web/src/main/resources/templates/home-static.html b/igds-dzhwk-web/src/main/resources/templates/home-static.html
new file mode 100644
index 0000000..a700941
--- /dev/null
+++ b/igds-dzhwk-web/src/main/resources/templates/home-static.html
@@ -0,0 +1,416 @@
+<!DOCTYPE html>
+<html lang="zh">
+<head>
+    <meta charset="utf-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <meta name="renderer" content="webkit">
+    <title>鑻ヤ緷绯荤粺棣栭〉</title>
+    <!-- 閬垮厤IE浣跨敤鍏煎妯″紡 -->
+    <meta http-equiv="X-UA-Compatible" content="IE=edge">
+    <link href="../static/favicon.ico" rel="shortcut icon"/>
+    <link href="../static/css/bootstrap.min.css" rel="stylesheet"/>
+    <link href="../static/css/jquery.contextMenu.min.css" rel="stylesheet"/>
+    <link href="../static/css/font-awesome.min.css" rel="stylesheet"/>
+    <link href="../static/css/animate.min.css" rel="stylesheet"/>
+    <link href="../static/css/style.min.css" rel="stylesheet"/>
+    <link href="../static/css/skins.css" rel="stylesheet"/>
+    <link href="../static/ruoyi/css/ry-ui.css?v=4.7.8" rel="stylesheet"/>
+</head>
+<body class="fixed-sidebar full-height-layout gray-bg" style="overflow: hidden">
+<div id="wrapper">
+
+    <!--宸︿晶瀵艰埅寮�濮�-->
+    <nav class="navbar-default navbar-static-side" role="navigation">
+        <div class="nav-close">
+            <i class="fa fa-times-circle"></i>
+        </div>
+        <a th:href="./home-static.html">
+            <li class="logo hidden-xs">
+                <span class="logo-lg">椋庢鑷磋繙杩愮淮绯荤粺</span>
+            </li>
+        </a>
+        <div class="sidebar-collapse">
+            <ul class="nav" id="side-menu">
+                <li>
+                    <div class="user-panel">
+                        <a class="menuItem noactive" title="涓汉涓績" href="./home-static.html">
+                            <div class="hide" th:text="涓汉涓績"></div>
+                            <div class="pull-left image">
+                                <img src="../static/img/profile.jpg" class="img-circle" alt="User Image">
+                            </div>
+                        </a>
+                        <div class="pull-left info">
+                            <p>绠$悊鍛�</p>
+                            <a href="javascript:;"><i class="fa fa-circle text-success"></i> 鍦ㄧ嚎</a>
+                            <a href="./home-static.html" style="padding-left:5px;"><i
+                                    class="fa fa-sign-out text-danger"></i> 娉ㄩ攢</a>
+                        </div>
+                    </div>
+                </li>
+
+                <!--棣栭〉鑿滃崟--->
+                <li>
+                    <a class="menuItem" href="./demo/form/button.html"><i class="fa fa-home"></i> <span
+                            class="nav-label">棣栭〉</span> </a>
+                </li>
+
+
+                <!--1鍜�2绾ц彍鍗�--->
+                <li>
+                    <a href="#" data-refresh="false">
+                        <i class="fa fa-bar-chart-o" class="fa fa-home"></i>
+                        <span class="nav-label">涓�绾ц彍鍗�</span>
+                        <span class="fa arrow"></span>
+                    </a>
+                    <ul class="nav nav-second-level collapse">
+                        <li>
+                            <a class="menuItem" href="./demo/form/button.html" data-refresh="false">浜岀骇鑿滃崟</a>
+							<a class="menuItem" href="./demo/form/button.html" data-refresh="false">浜岀骇鑿滃崟</a>
+							<a class="menuItem" href="./demo/form/button.html" data-refresh="false">浜岀骇鑿滃崟</a>
+							<a class="menuItem" href="./demo/form/button.html" data-refresh="false">浜岀骇鑿滃崟</a>
+							<a class="menuItem" href="./demo/form/button.html" data-refresh="false">浜岀骇鑿滃崟</a>
+							<a class="menuItem" href="./demo/form/button.html" data-refresh="false">浜岀骇鑿滃崟</a>
+							<a class="menuItem" href="./demo/form/button.html" data-refresh="false">浜岀骇鑿滃崟</a>
+							<a class="menuItem" href="./demo/form/button.html" data-refresh="false">浜岀骇鑿滃崟</a>
+                        </li>
+                    </ul>
+                </li>
+
+
+				<li>
+					<a href="#" data-refresh="false">
+						<i class="fa fa-bar-chart-o" class="fa fa-home"></i>
+						<span class="nav-label">涓�绾ц彍鍗�</span>
+						<span class="fa arrow"></span>
+					</a>
+					<ul class="nav nav-second-level collapse">
+						<li>
+							<a class="menuItem" href="./demo/form/button.html" data-refresh="false">浜岀骇鑿滃崟</a>
+							<a class="menuItem" href="./demo/form/button.html" data-refresh="false">浜岀骇鑿滃崟</a>
+							<a class="menuItem" href="./demo/form/button.html" data-refresh="false">浜岀骇鑿滃崟</a>
+							<a class="menuItem" href="./demo/form/button.html" data-refresh="false">浜岀骇鑿滃崟</a>
+							<a class="menuItem" href="./demo/form/button.html" data-refresh="false">浜岀骇鑿滃崟</a>
+							<a class="menuItem" href="./demo/form/button.html" data-refresh="false">浜岀骇鑿滃崟</a>
+							<a class="menuItem" href="./demo/form/button.html" data-refresh="false">浜岀骇鑿滃崟</a>
+							<a class="menuItem" href="./demo/form/button.html" data-refresh="false">浜岀骇鑿滃崟</a>
+						</li>
+					</ul>
+				</li>
+
+                <!--1鍜�2绾�3绾ц彍鍗�--->
+                <li>
+                    <a href="javascript:;"><i class="fa fa-desktop"></i><span class="nav-label">鍚笁绾ц彍鍗�</span><span
+                            class="fa arrow"></span></a>
+                    <ul class="nav nav-second-level collapse">
+                        <li><a>琛ㄥ崟<span class="fa arrow"></span></a>
+                            <ul class="nav nav-third-level">
+                                <li><a class="menuItem" href="./demo/form/button.html">鎸夐挳</a></li>
+                                <li><a class="menuItem" href="./demo/form/grid.html">鏍呮牸</a></li>
+                                <li><a class="menuItem" href="./demo/form/select.html">涓嬫媺妗�</a></li>
+                                <li><a class="menuItem" href="./demo/form/timeline.html">鏃堕棿杞�</a></li>
+                                <li><a class="menuItem" href="./demo/form/progress_bars.html">杩涘害鏉�</a></li>
+                                <li><a class="menuItem" href="./demo/form/basic.html">鍩烘湰琛ㄥ崟</a></li>
+                                <li><a class="menuItem" href="./demo/form/cards.html">鍗$墖鍒楄〃</a></li>
+                                <li><a class="menuItem" href="./demo/form/jasny.html">鍔熻兘鎵╁睍</a></li>
+                                <li><a class="menuItem" href="./demo/form/sortable.html">鎷栧姩鎺掑簭</a></li>
+                                <li><a class="menuItem" href="./demo/form/invoice.html">鍗曟嵁鎵撳嵃</a></li>
+                                <li><a class="menuItem" href="./demo/form/labels_tips.html">鏍囩 & 鎻愮ず</a></li>
+                                <li><a class="menuItem" href="./demo/form/tabs_panels.html">閫夐」鍗� & 闈㈡澘</a></li>
+                                <li><a class="menuItem" href="./demo/form/validate.html">琛ㄥ崟鏍¢獙</a></li>
+                                <li><a class="menuItem" href="./demo/form/wizard.html">琛ㄥ崟鍚戝</a></li>
+                                <li><a class="menuItem" href="./demo/form/upload.html">鏂囦欢涓婁紶</a></li>
+                                <li><a class="menuItem" href="./demo/form/datetime.html">鏃ユ湡鍜屾椂闂�</a></li>
+                                <li><a class="menuItem" href="./demo/form/summernote.html">瀵屾枃鏈紪杈戝櫒</a></li>
+                                <li><a class="menuItem" href="./demo/form/duallistbox.html">宸﹀彸浜掗�夌粍浠�</a></li>
+                                <li><a class="menuItem" href="./demo/form/autocomplete.html">鎼滅储鑷姩琛ュ叏</a></li>
+                                <li><a class="menuItem" href="./demo/form/cxselect.html">澶氱骇鑱斿姩涓嬫媺</a></li>
+                                <li><a class="menuItem" href="./demo/form/localrefresh.html">Ajax灞�閮ㄥ埛鏂�</a></li>
+                            </ul>
+                        </li>
+                        <li><a>琛ㄦ牸<span class="fa arrow"></span></a>
+                            <ul class="nav nav-third-level">
+                                <li><a class="menuItem" th:href="@{/demo/table/search}">鏌ヨ鏉′欢</a></li>
+                                <li><a class="menuItem" th:href="@{/demo/table/footer}">鏁版嵁姹囨��</a></li>
+                                <li><a class="menuItem" th:href="@{/demo/table/groupHeader}">缁勫悎琛ㄥご</a></li>
+                                <li><a class="menuItem" th:href="@{/demo/table/export}">琛ㄦ牸瀵煎嚭</a></li>
+                                <li><a class="menuItem" th:href="@{/demo/table/exportSelected}">瀵煎嚭閫夋嫨鍒�</a></li>
+                                <li><a class="menuItem" th:href="@{/demo/table/remember}">缈婚〉璁颁綇閫夋嫨</a></li>
+                                <li><a class="menuItem" th:href="@{/demo/table/pageGo}">璺宠浆鑷虫寚瀹氶〉</a></li>
+                                <li><a class="menuItem" th:href="@{/demo/table/params}">鑷畾涔夋煡璇㈠弬鏁�</a></li>
+                                <li><a class="menuItem" th:href="@{/demo/table/multi}">鍒濆澶氳〃鏍�</a></li>
+                                <li><a class="menuItem" th:href="@{/demo/table/button}">鐐瑰嚮鎸夐挳鍔犺浇琛ㄦ牸</a></li>
+                                <li><a class="menuItem" th:href="@{/demo/table/data}">鐩存帴鍔犺浇琛ㄦ牸鏁版嵁</a></li>
+                                <li><a class="menuItem" th:href="@{/demo/table/fixedColumns}">琛ㄦ牸鍐荤粨鍒�</a></li>
+                                <li><a class="menuItem" th:href="@{/demo/table/event}">鑷畾涔夎Е鍙戜簨浠�</a></li>
+                                <li><a class="menuItem" th:href="@{/demo/table/headerStyle}">琛ㄦ牸鏍囬鏍煎紡鍖�</a></li>
+                                <li><a class="menuItem" th:href="@{/demo/table/detail}">琛ㄦ牸缁嗚妭瑙嗗浘</a></li>
+                                <li><a class="menuItem" th:href="@{/demo/table/child}">琛ㄦ牸鐖跺瓙瑙嗗浘</a></li>
+                                <li><a class="menuItem" th:href="@{/demo/table/image}">琛ㄦ牸鍥剧墖棰勮</a></li>
+                                <li><a class="menuItem" th:href="@{/demo/table/curd}">鍔ㄦ�佸鍒犳敼鏌�</a></li>
+                                <li><a class="menuItem" th:href="@{/demo/table/reorderRows}">琛ㄦ牸琛屾嫋鎷芥搷浣�</a></li>
+                                <li><a class="menuItem" th:href="@{/demo/table/reorderColumns}">琛ㄦ牸鍒楁嫋鎷芥搷浣�</a></li>
+                                <li><a class="menuItem" th:href="@{/demo/table/resizable}">琛ㄦ牸鍒楀鎷栧姩</a></li>
+                                <li><a class="menuItem" th:href="@{/demo/table/editable}">琛ㄦ牸琛屽唴缂栬緫</a></li>
+                                <li><a class="menuItem" th:href="@{/demo/table/subdata}">涓诲瓙琛ㄦ彁浜�</a></li>
+                                <li><a class="menuItem" th:href="@{/demo/table/refresh}">琛ㄦ牸鑷姩鍒锋柊</a></li>
+                                <li><a class="menuItem" th:href="@{/demo/table/print}">琛ㄦ牸鎵撳嵃閰嶇疆</a></li>
+                                <li><a class="menuItem" th:href="@{/demo/table/dynamicColumns}">琛ㄦ牸鍔ㄦ�佸垪</a></li>
+                                <li><a class="menuItem" th:href="@{/demo/table/customView}">鑷畾涔夎鍥惧垎椤�</a></li>
+                                <li><a class="menuItem" th:href="@{/demo/table/asynTree}">寮傛鍔犺浇琛ㄦ牸鏍�</a></li>
+                                <li><a class="menuItem" th:href="@{/demo/table/other}">琛ㄦ牸鍏朵粬鎿嶄綔</a></li>
+                            </ul>
+                        </li>
+                        <li><a>寮规<span class="fa arrow"></span></a>
+                            <ul class="nav nav-third-level">
+                                <li><a class="menuItem" th:href="@{/demo/modal/dialog}">妯℃�佺獥鍙�</a></li>
+                                <li><a class="menuItem" th:href="@{/demo/modal/layer}">寮瑰眰缁勪欢</a></li>
+                                <li><a class="menuItem" th:href="@{/demo/modal/table}">寮瑰眰琛ㄦ牸</a></li>
+                            </ul>
+                        </li>
+                        <li><a>鎿嶄綔<span class="fa arrow"></span></a>
+                            <ul class="nav nav-third-level">
+                                <li><a class="menuItem" th:href="@{/demo/operate/table}">琛ㄦ牸</a></li>
+                                <li><a class="menuItem" th:href="@{/demo/operate/other}">鍏朵粬</a></li>
+                            </ul>
+                        </li>
+                        <li><a>鎶ヨ〃<span class="fa arrow"></span></a>
+                            <ul class="nav nav-third-level">
+                                <li><a class="menuItem" th:href="@{/demo/report/echarts}">鐧惧害ECharts</a></li>
+                                <li><a class="menuItem" th:href="@{/demo/report/peity}">peity</a></li>
+                                <li><a class="menuItem" th:href="@{/demo/report/sparkline}">sparkline</a></li>
+                                <li><a class="menuItem" th:href="@{/demo/report/metrics}">鍥捐〃缁勫悎</a></li>
+                            </ul>
+                        </li>
+                        <li><a>鍥炬爣<span class="fa arrow"></span></a>
+                            <ul class="nav nav-third-level">
+                                <li><a class="menuItem" th:href="@{/demo/icon/fontawesome}">Font Awesome</a></li>
+                                <li><a class="menuItem" th:href="@{/demo/icon/glyphicons}">Glyphicons</a></li>
+                            </ul>
+                        </li>
+                        <li>
+                            <a href="javascript:;"><i class="fa fa-sitemap"></i>鍥涘眰鑿滃崟<span class="fa arrow"></span></a>
+                            <ul class="nav nav-third-level collapse">
+                                <li>
+                                    <a href="javascript:;" id="damian">涓夌骇鑿滃崟1<span class="fa arrow"></span></a>
+                                    <ul class="nav nav-third-level">
+                                        <li>
+                                            <a href="javascript:;">鍥涚骇鑿滃崟1</a>
+                                        </li>
+                                        <li>
+                                            <a href="javascript:;">鍥涚骇鑿滃崟2</a>
+                                        </li>
+                                    </ul>
+                                </li>
+                                <li><a href="javascript:;">涓夌骇鑿滃崟2</a></li>
+                            </ul>
+                        </li>
+                    </ul>
+                </li>
+            </ul>
+        </div>
+    </nav>
+    <!--宸︿晶瀵艰埅缁撴潫-->
+
+    <!--鍙充晶閮ㄥ垎寮�濮�-->
+    <div id="page-wrapper" class="gray-bg dashbard-1">
+        <div class="row border-bottom">
+            <nav class="navbar navbar-static-top" role="navigation" style="margin-bottom: 0">
+                <div class="navbar-header">
+                    <a class="navbar-minimalize minimalize-styl-2" style="color:#FFF;" href="javascript:;" title="鏀惰捣鑿滃崟">
+                        <i class="fa fa-bars"></i>
+                    </a>
+                </div>
+                <ul class="nav navbar-top-links navbar-right welcome-message">
+                    <li><a data-toggle="tooltip" data-trigger="hover" data-placement="bottom" title="寮�鍙戞枃妗�"
+                           href="http://doc.ruoyi.vip/ruoyi" target="_blank"><i class="fa fa-question-circle"></i>
+                        鏂囨。</a></li>
+                    <li><a data-toggle="tooltip" data-trigger="hover" data-placement="bottom" title="閿佸畾灞忓箷"
+                           href="javascript:;" id="lockScreen"><i class="fa fa-lock"></i> 閿佸睆</a></li>
+                    <li><a data-toggle="tooltip" data-trigger="hover" data-placement="bottom" title="鍏ㄥ睆鏄剧ず"
+                           href="javascript:;" id="fullScreen"><i class="fa fa-arrows-alt"></i> 鍏ㄥ睆</a></li>
+                    <li class="dropdown user-menu">
+                        <a href="javascript:void(0)" class="dropdown-toggle" data-hover="dropdown">
+                            <img src="../static/img/profile.jpg" class="user-image">
+                            <span class="hidden-xs">绠$悊鍛�</span>
+                        </a>
+                        <ul class="dropdown-menu">
+                            <li class="mt5">
+                                <a th:href="./home-static.html" class="menuItem noactive">
+                                    <i class="fa fa-user"></i> 涓汉涓績</a>
+                            </li>
+                            <li>
+                                <a onclick="resetPwd()">
+                                    <i class="fa fa-key"></i> 淇敼瀵嗙爜</a>
+                            </li>
+                            <li>
+                                <a onclick="switchSkin()">
+                                    <i class="fa fa-dashboard"></i> 鍒囨崲涓婚</a>
+                            </li>
+                            <li>
+                                <a onclick="toggleMenu()">
+                                    <i class="fa fa-toggle-off"></i> 妯悜鑿滃崟</a>
+                            </li>
+                            <li class="divider"></li>
+                            <li>
+                                <a th:href="@{logout}">
+                                    <i class="fa fa-sign-out"></i> 閫�鍑虹櫥褰�</a>
+                            </li>
+                        </ul>
+                    </li>
+                </ul>
+            </nav>
+        </div>
+        <div class="row content-tabs" classappend="|hide|">
+            <button class="roll-nav roll-left tabLeft">
+                <i class="fa fa-backward"></i>
+            </button>
+            <nav class="page-tabs menuTabs">
+                <div class="page-tabs-content">
+                    <a href="javascript:;" class="active menuTab" data-id="http://www.fzzygf.com">棣栭〉</a>
+                </div>
+            </nav>
+            <button class="roll-nav roll-right tabRight">
+                <i class="fa fa-forward"></i>
+            </button>
+            <a href="javascript:void(0);" class="roll-nav roll-right tabReload"><i class="fa fa-refresh"></i> 鍒锋柊</a>
+        </div>
+
+        <a id="ax_close_max" class="ax_close_max" href="javascript:;" title="鍏抽棴鍏ㄥ睆"> <i class="fa fa-times-circle-o"></i>
+        </a>
+
+        <div class="row mainContent" id="content-main" classappend="mainClass">
+            <iframe class="RuoYi_iframe" name="iframe0" width="100%" height="100%" data-id="http://www.fzzygf.com"
+                    src="http://www.fzzygf.com" frameborder="0" seamless></iframe>
+        </div>
+
+        <div class="footer">
+            <div class="pull-right">漏 [2023 椋庢鑷磋繙鑲′唤] FZZY Copyright</div>
+        </div>
+    </div>
+    <!--鍙充晶閮ㄥ垎缁撴潫-->
+</div>
+<!-- 鍏ㄥ眬js -->
+<script src="../static/js/jquery.min.js"></script>
+<script src="../static/js/bootstrap.min.js"></script>
+<script src="../static/js/plugins/metisMenu/jquery.metisMenu.js"></script>
+<script src="../static/js/plugins/slimscroll/jquery.slimscroll.min.js"></script>
+<script src="../static/js/jquery.contextMenu.min.js"></script>
+<script src="../static/ajax/libs/blockUI/jquery.blockUI.js"></script>
+<script src="../static/ajax/libs/layer-ruoyi/layer.min.js"></script>
+<script src="../static/ruoyi/js/ry-ui.js?v=4.7.8"></script>
+<script src="../static/ruoyi/js/common.js?v=4.7.8"></script>
+<script src="../static/ruoyi/home.js?v=20201208"></script>
+<script src="../static/ajax/libs/fullscreen/jquery.fullscreen.js"></script>
+<script inline="javascript">
+    window.history.forward(1);
+    var ctx ="./";
+    var lockscreen = "lockscreen";
+    if (lockscreen) {
+        window.top.location = ctx + "lockscreen";
+    }
+    // 鐨偆缂撳瓨
+    var skin = storage.get("skin");
+    // history锛堣〃绀哄幓鎺夊湴鍧�鐨�#锛夊惁鍒欏湴鍧�浠�"#"褰㈠紡灞曠ず
+    var mode = "history";
+    // 鍘嗗彶璁块棶璺緞缂撳瓨
+    var historyPath = storage.get("historyPath");
+    // 鏄惁椤电涓庤彍鍗曡仈鍔�
+    var isLinkage = true;
+    // 鏄惁椤电鍒囨崲婊氬姩鍒伴《閮�
+    var isScrollToTop = true;
+
+    // 鏈湴涓婚浼樺厛锛屾湭璁剧疆鍙栫郴缁熼厤缃�
+    if ($.common.isNotEmpty(skin)) {
+        $("body").addClass(skin.split('|')[0]);
+        $("body").addClass(skin.split('|')[1]);
+    } else {
+        $("body").addClass([[${sideTheme}]]);
+        $("body").addClass([[${skinName}]]);
+    }
+
+    /* 鐢ㄦ埛绠$悊-閲嶇疆瀵嗙爜 */
+    function resetPwd() {
+        var url = ctx + 'system/user/profile/resetPwd';
+        $.modal.open("閲嶇疆瀵嗙爜", url, '770', '380');
+    }
+
+    /* 鍒囨崲涓婚 */
+    function switchSkin() {
+        layer.open({
+            type: 2,
+            shadeClose: true,
+            title: "鍒囨崲涓婚",
+            area: ["530px", "386px"],
+            content: [ctx + "system/switchSkin", 'no']
+        })
+    }
+
+    /* 鍒囨崲鑿滃崟 */
+    function toggleMenu() {
+        $.modal.confirm("纭瑕佸垏鎹㈡垚妯悜鑿滃崟鍚楋紵", function () {
+            $.get(ctx + 'system/menuStyle/topnav', function (result) {
+                window.location.reload();
+            });
+        })
+    }
+
+    /** 鍒锋柊鏃惰闂矾寰勯〉绛� */
+    function applyPath(url) {
+        $('a[href$="' + decodeURI(url) + '"]').click();
+        if (!$('a[href$="' + url + '"]').hasClass("noactive")) {
+            $('a[href$="' + url + '"]').parent("li").addClass("selected").parents("li").addClass("active").end().parents("ul").addClass("in");
+        }
+    }
+
+    $(function () {
+        var lockPath = storage.get('lockPath');
+        if ($.common.equals("history", mode) && window.performance.navigation.type == 1) {
+            var url = storage.get('publicPath');
+            if ($.common.isNotEmpty(url)) {
+                applyPath(url);
+            }
+        } else if ($.common.isNotEmpty(lockPath)) {
+            applyPath(lockPath);
+            storage.remove('lockPath');
+        } else {
+            var hash = location.hash;
+            if ($.common.isNotEmpty(hash)) {
+                var url = hash.substring(1, hash.length);
+                applyPath(url);
+            } else {
+                if ($.common.equals("history", mode)) {
+                    storage.set('publicPath', "");
+                }
+            }
+        }
+
+        /* 鍒濆瀵嗙爜鎻愮ず */
+        if ([[${isDefaultModifyPwd}]]) {
+            layer.confirm("鎮ㄧ殑瀵嗙爜杩樻槸鍒濆瀵嗙爜锛岃淇敼瀵嗙爜锛�", {
+                icon: 0,
+                title: "瀹夊叏鎻愮ず",
+                btn: ['纭', '鍙栨秷'],
+                offset: ['30%']
+            }, function (index) {
+                resetPwd();
+                layer.close(index);
+            });
+        }
+
+        /* 杩囨湡瀵嗙爜鎻愮ず */
+        if ([[${isPasswordExpired}]]) {
+            layer.confirm("鎮ㄧ殑瀵嗙爜宸茶繃鏈燂紝璇峰敖蹇慨鏀瑰瘑鐮侊紒", {
+                icon: 0,
+                title: "瀹夊叏鎻愮ず",
+                btn: ['纭', '鍙栨秷'],
+                offset: ['30%']
+            }, function (index) {
+                resetPwd();
+                layer.close(index);
+            });
+        }
+        $("[data-toggle='tooltip']").tooltip();
+    });
+</script>
+</body>
+</html>
diff --git a/igds-dzhwk-web/src/main/resources/templates/home-topnav.html b/igds-dzhwk-web/src/main/resources/templates/home-topnav.html
new file mode 100644
index 0000000..8f1e826
--- /dev/null
+++ b/igds-dzhwk-web/src/main/resources/templates/home-topnav.html
@@ -0,0 +1,447 @@
+<!DOCTYPE html>
+<html  lang="zh" xmlns:th="http://www.thymeleaf.org">
+<head>
+    <meta charset="utf-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <meta name="renderer" content="webkit">
+    <title>鑻ヤ緷绯荤粺棣栭〉</title>
+    <!-- 閬垮厤IE浣跨敤鍏煎妯″紡 -->
+ 	<meta http-equiv="X-UA-Compatible" content="IE=edge">
+    <link th:href="@{favicon.ico}" rel="shortcut icon"/>
+    <link th:href="@{/css/bootstrap.min.css}" rel="stylesheet"/>
+    <link th:href="@{/css/jquery.contextMenu.min.css}" rel="stylesheet"/>
+    <link th:href="@{/css/font-awesome.min.css}" rel="stylesheet"/>
+    <link th:href="@{/css/animate.min.css}" rel="stylesheet"/>
+    <link th:href="@{/css/style.min.css}" rel="stylesheet"/>
+    <link th:href="@{/css/skins.css?v=20200902}" rel="stylesheet"/>
+    <link th:href="@{/ruoyi/css/ry-ui.css?v=4.7.8}" rel="stylesheet"/>
+    <style type="text/css">.fixed-sidebar .nav:not(.navbar-toolbar)>li.active{border-left:0px!important;}</style>
+</head>
+<body class="fixed-sidebar full-height-layout gray-bg" th:classappend="${isMobile} ? 'canvas-menu'" style="overflow: hidden">
+<div id="wrapper">
+
+    <!--宸︿晶瀵艰埅寮�濮�-->
+    <nav class="navbar-default navbar-static-side" role="navigation">
+        <div class="nav-close">
+            <i class="fa fa-times-circle"></i>
+        </div>
+        <a th:href="@{/index}">
+            <li class="logo hidden-xs">
+                <span class="logo-lg">RuoYi</span>
+            </li>
+         </a>
+        <div class="sidebar-collapse tab-content" id="side-menu">
+			<div class="user-panel">
+				<a class="menuItem noactive" title="涓汉涓績" th:href="@{/system/user/profile}">
+					<div class="hide" th:text="涓汉涓績"></div>
+					<div class="pull-left image">
+						<img th:src="(${#strings.isEmpty(user.avatar)}) ? @{/img/profile.jpg} : @{${user.avatar}}" th:onerror="this.src='img/profile.jpg'" class="img-circle" alt="User Image">
+					</div>
+				</a>
+				<div class="pull-left info">
+				  <p>[[${user.loginName}]]</p>
+				  <a href="javascript:;"><i class="fa fa-circle text-success"></i> 鍦ㄧ嚎</a>
+				  <a th:href="@{logout}" style="padding-left:5px;"><i class="fa fa-sign-out text-danger"></i> 娉ㄩ攢</a>
+				</div>
+			</div>
+			
+            <!-- 宸︿晶鑿滃崟 -->
+			<th:block th:each="menu : ${menus}">
+			<div class="tab-pane fade height-full" th:id="|menu_${menu.menuId}|">
+			  <ul class="nav">
+                <li th:each="cmenu : ${menu.children}">
+			      <a class="menu-content" th:if="${#lists.isEmpty(cmenu.children)}" th:href="@{${cmenu.url}}" th:classappend="${#strings.isEmpty(cmenu.target)} ? |menuItem| : ${cmenu.target}" th:data-refresh="${cmenu.isRefresh == '0'}">
+			        <i th:class="${cmenu.icon} + ' fa-fw'"></i> <span class="nav-label">[[${cmenu.menuName}]]</span>
+			      </a>
+			      <a class="menu-content" th:if="${not #lists.isEmpty(cmenu.children)}" href="javascript:;">
+			        <i th:class="${cmenu.icon} + ' fa-fw'"></i>
+			        <span class="nav-label">[[${cmenu.menuName}]]</span>
+			        <span class="fa arrow"></span>
+                  </a>
+				  <ul th:if="${not #lists.isEmpty(cmenu.children)}" class="nav nav-second-level collapse">
+				    <li th:each="emenu : ${cmenu.children}">
+				      <a th:if="${#lists.isEmpty(emenu.children)}" th:href="@{${emenu.url}}" th:class="${#strings.isEmpty(emenu.target)} ? |menuItem| : ${emenu.target}" th:data-refresh="${emenu.isRefresh == '0'}">
+				        <i th:class="${emenu.icon} + ' fa-fw'"></i> 
+				        [[${emenu.menuName}]]
+				      </a>
+				      <a th:if="${not #lists.isEmpty(emenu.children)}" href="javascript:;">
+				        <i th:class="${emenu.icon} + ' fa-fw'"></i> 
+				        [[${emenu.menuName}]]
+				        <span class="fa arrow"></span>
+				      </a>
+				      <ul th:if="${not #lists.isEmpty(emenu.children)}" class="nav nav-third-level collapse">
+				        <li th:each="fmenu : ${emenu.children}"><a th:if="${#lists.isEmpty(fmenu.children)}" th:class="${#strings.isEmpty(fmenu.target)} ? |menuItem| : ${fmenu.target}" th:href="@{${fmenu.url}}" th:data-refresh="${fmenu.isRefresh == '0'}">[[${fmenu.menuName}]]</a></li>
+				      </ul>
+				    </li>
+				  </ul>
+                </li>
+			  </ul>
+			</div>
+			</th:block>
+			
+			<!-- 棣栭〉鑿滃崟 -->
+			<div class="tab-pane fade height-full" id="index">
+			  <ul class="nav">
+			    <li>
+			      <a class="menuItem" th:href="@{/system/main}">
+			      <i class="fa fa-home"></i> <span class="nav-label">棣栭〉</span></a>
+			    </li>
+			  </ul>
+			</div>
+			
+            <!-- 瀹炰緥婕旂ず鑿滃崟 -->
+			<div class="tab-pane fade height-full" id="demo" th:if="${demoEnabled}">
+			  <ul class="nav">
+			    <li>
+			      <a href="javascript:;"><i class="fa fa-edit"></i> <span class="nav-label">琛ㄥ崟</span><span class="fa arrow"></span></a>
+			      <ul class="nav nav-second-level collapse">
+					<li><a class="menuItem" th:href="@{/demo/form/button}">鎸夐挳</a></li>
+					<li><a class="menuItem" th:href="@{/demo/form/grid}">鏍呮牸</a></li>
+					<li><a class="menuItem" th:href="@{/demo/form/select}">涓嬫媺妗�</a></li>
+					<li><a class="menuItem" th:href="@{/demo/form/timeline}">鏃堕棿杞�</a></li>
+					<li><a class="menuItem" th:href="@{/demo/form/progress_bars}">杩涘害鏉�</a></li>
+					<li><a class="menuItem" th:href="@{/demo/form/basic}">鍩烘湰琛ㄥ崟</a></li>
+					<li><a class="menuItem" th:href="@{/demo/form/cards}">鍗$墖鍒楄〃</a></li>
+					<li><a class="menuItem" th:href="@{/demo/form/jasny}">鍔熻兘鎵╁睍</a></li>
+					<li><a class="menuItem" th:href="@{/demo/form/sortable}">鎷栧姩鎺掑簭</a></li>
+					<li><a class="menuItem" th:href="@{/demo/form/invoice}">鍗曟嵁鎵撳嵃</a></li>
+					<li><a class="menuItem" th:href="@{/demo/form/labels_tips}">鏍囩 & 鎻愮ず</a></li>
+					<li><a class="menuItem" th:href="@{/demo/form/tabs_panels}">閫夐」鍗� & 闈㈡澘</a></li>
+					<li><a class="menuItem" th:href="@{/demo/form/validate}">琛ㄥ崟鏍¢獙</a></li>
+					<li><a class="menuItem" th:href="@{/demo/form/wizard}">琛ㄥ崟鍚戝</a></li>
+					<li><a class="menuItem" th:href="@{/demo/form/upload}">鏂囦欢涓婁紶</a></li>
+					<li><a class="menuItem" th:href="@{/demo/form/datetime}">鏃ユ湡鍜屾椂闂�</a></li>
+					<li><a class="menuItem" th:href="@{/demo/form/summernote}">瀵屾枃鏈紪杈戝櫒</a></li>
+					<li><a class="menuItem" th:href="@{/demo/form/duallistbox}">宸﹀彸浜掗�夌粍浠�</a></li>
+					<li><a class="menuItem" th:href="@{/demo/form/autocomplete}">鎼滅储鑷姩琛ュ叏</a></li>
+					<li><a class="menuItem" th:href="@{/demo/form/cxselect}">澶氱骇鑱斿姩涓嬫媺</a></li>
+					<li><a class="menuItem" th:href="@{/demo/form/localrefresh}">Ajax灞�閮ㄥ埛鏂�</a></li>
+			      </ul>
+			    </li>
+			    <li>
+			      <a href="javascript:;"><i class="fa fa-table"></i> <span class="nav-label">琛ㄦ牸</span><span class="fa arrow"></span></a>
+			      <ul class="nav nav-second-level collapse">
+					<li><a class="menuItem" th:href="@{/demo/table/search}">鏌ヨ鏉′欢</a></li>
+					<li><a class="menuItem" th:href="@{/demo/table/footer}">鏁版嵁姹囨��</a></li>
+					<li><a class="menuItem" th:href="@{/demo/table/groupHeader}">缁勫悎琛ㄥご</a></li>
+					<li><a class="menuItem" th:href="@{/demo/table/export}">琛ㄦ牸瀵煎嚭</a></li>
+					<li><a class="menuItem" th:href="@{/demo/table/exportSelected}">瀵煎嚭閫夋嫨鍒�</a></li>
+					<li><a class="menuItem" th:href="@{/demo/table/remember}">缈婚〉璁颁綇閫夋嫨</a></li>
+					<li><a class="menuItem" th:href="@{/demo/table/pageGo}">璺宠浆鑷虫寚瀹氶〉</a></li>
+					<li><a class="menuItem" th:href="@{/demo/table/params}">鑷畾涔夋煡璇㈠弬鏁�</a></li>
+					<li><a class="menuItem" th:href="@{/demo/table/multi}">鍒濆澶氳〃鏍�</a></li>
+					<li><a class="menuItem" th:href="@{/demo/table/button}">鐐瑰嚮鎸夐挳鍔犺浇琛ㄦ牸</a></li>
+					<li><a class="menuItem" th:href="@{/demo/table/data}">鐩存帴鍔犺浇琛ㄦ牸鏁版嵁</a></li>
+					<li><a class="menuItem" th:href="@{/demo/table/fixedColumns}">琛ㄦ牸鍐荤粨鍒�</a></li>
+					<li><a class="menuItem" th:href="@{/demo/table/event}">鑷畾涔夎Е鍙戜簨浠�</a></li>
+					<li><a class="menuItem" th:href="@{/demo/table/headerStyle}">琛ㄦ牸鏍囬鏍煎紡鍖�</a></li>
+					<li><a class="menuItem" th:href="@{/demo/table/detail}">琛ㄦ牸缁嗚妭瑙嗗浘</a></li>
+					<li><a class="menuItem" th:href="@{/demo/table/child}">琛ㄦ牸鐖跺瓙瑙嗗浘</a></li>
+					<li><a class="menuItem" th:href="@{/demo/table/image}">琛ㄦ牸鍥剧墖棰勮</a></li>
+					<li><a class="menuItem" th:href="@{/demo/table/curd}">鍔ㄦ�佸鍒犳敼鏌�</a></li>
+					<li><a class="menuItem" th:href="@{/demo/table/reorderRows}">琛ㄦ牸琛屾嫋鎷芥搷浣�</a></li>
+					<li><a class="menuItem" th:href="@{/demo/table/reorderColumns}">琛ㄦ牸鍒楁嫋鎷芥搷浣�</a></li>
+					<li><a class="menuItem" th:href="@{/demo/table/resizable}">琛ㄦ牸鍒楀鎷栧姩</a></li>
+					<li><a class="menuItem" th:href="@{/demo/table/editable}">琛ㄦ牸琛屽唴缂栬緫</a></li>
+					<li><a class="menuItem" th:href="@{/demo/table/subdata}">涓诲瓙琛ㄦ彁浜�</a></li>
+					<li><a class="menuItem" th:href="@{/demo/table/refresh}">琛ㄦ牸鑷姩鍒锋柊</a></li>
+					<li><a class="menuItem" th:href="@{/demo/table/print}">琛ㄦ牸鎵撳嵃閰嶇疆</a></li>
+					<li><a class="menuItem" th:href="@{/demo/table/dynamicColumns}">琛ㄦ牸鍔ㄦ�佸垪</a></li>
+					<li><a class="menuItem" th:href="@{/demo/table/customView}">鑷畾涔夎鍥惧垎椤�</a></li>
+					<li><a class="menuItem" th:href="@{/demo/table/asynTree}">寮傛鍔犺浇琛ㄦ牸鏍�</a></li>
+					<li><a class="menuItem" th:href="@{/demo/table/other}">琛ㄦ牸鍏朵粬鎿嶄綔</a></li>
+			      </ul>
+			    </li>
+			    <li>
+			      <a href="javascript:;"><i class="fa fa-flask"></i> <span class="nav-label">寮规</span><span class="fa arrow"></span></a>
+			      <ul class="nav nav-second-level collapse">
+					<li><a class="menuItem" th:href="@{/demo/modal/dialog}">妯℃�佺獥鍙�</a></li>
+					<li><a class="menuItem" th:href="@{/demo/modal/layer}">寮瑰眰缁勪欢</a></li>
+					<li><a class="menuItem" th:href="@{/demo/modal/table}">寮瑰眰琛ㄦ牸</a></li>
+			      </ul>
+			    </li>
+			    <li>
+			      <a href="javascript:;"><i class="fa fa-wpforms"></i> <span class="nav-label">鎿嶄綔</span><span class="fa arrow"></span></a>
+			      <ul class="nav nav-second-level collapse">
+					<li><a class="menuItem" th:href="@{/demo/operate/table}">琛ㄦ牸</a></li>
+					<li><a class="menuItem" th:href="@{/demo/operate/other}">鍏朵粬</a></li>
+			      </ul>
+			    </li>
+			    <li>
+			      <a href="javascript:;"><i class="fa fa-bar-chart-o"></i> <span class="nav-label">鎶ヨ〃</span><span class="fa arrow"></span></a>
+			      <ul class="nav nav-second-level collapse">
+					<li><a class="menuItem" th:href="@{/demo/report/echarts}">鐧惧害ECharts</a></li>
+					<li><a class="menuItem" th:href="@{/demo/report/peity}">peity</a></li>
+					<li><a class="menuItem" th:href="@{/demo/report/sparkline}">sparkline</a></li>
+					<li><a class="menuItem" th:href="@{/demo/report/metrics}">鍥捐〃缁勫悎</a></li>
+			      </ul>
+			    </li>
+			    <li>
+			      <a href="javascript:;"><i class="fa fa-book"></i> <span class="nav-label">鍥炬爣</span><span class="fa arrow"></span></a>
+			      <ul class="nav nav-second-level collapse">
+					<li><a class="menuItem" th:href="@{/demo/icon/fontawesome}">Font Awesome</a></li>
+					<li><a class="menuItem" th:href="@{/demo/icon/glyphicons}">Glyphicons</a></li>
+			      </ul>
+			    </li>
+			    <li>
+			      <a href="javascript:;"><i class="fa fa-navicon"></i> <span class="nav-label">鍥涘眰鑿滃崟</span><span class="fa arrow"></span></a>
+			      <ul class="nav nav-second-level collapse">
+					<li>
+						<a href="javascript:;" id="damian">涓夌骇鑿滃崟1<span class="fa arrow"></span></a>
+						<ul class="nav nav-third-level collapse">
+							<li>
+								<a href="javascript:;">鍥涚骇鑿滃崟1</a>
+							</li>
+							<li>
+								<a href="javascript:;">鍥涚骇鑿滃崟2</a>
+							</li>
+						</ul>
+					</li>
+					<li><a href="javascript:;">涓夌骇鑿滃崟2</a></li>
+			      </ul>
+			    </li>
+			  </ul>
+			</div>
+        </div>
+    </nav>
+    <!--宸︿晶瀵艰埅缁撴潫-->
+
+    <!--鍙充晶閮ㄥ垎寮�濮�-->
+    <div id="page-wrapper" class="gray-bg dashbard-1">
+        <div class="row border-bottom">
+            <nav class="navbar navbar-static-top" role="navigation" style="margin-bottom: 0">
+                <div class="navbar-header">
+                    <a class="navbar-minimalize minimalize-styl-2" style="color:#FFF;" href="javascript:;" title="鏀惰捣鑿滃崟">
+                    	<i class="fa fa-bars"></i>
+                    </a>
+                </div>
+                <!-- 椤堕儴鏍� -->
+                <div id="navMenu">
+                  <ul class="nav navbar-toolbar nav-tabs navbar-left hidden-xs">
+                    
+                    <!-- 椤堕儴鑿滃崟鍒楄〃 -->
+	                <th:block th:each="menu : ${menus}">
+               	    <li role="presentation" th:id="|tab_${menu.menuId}|">
+               	        <a th:if="${#lists.isEmpty(menu.children)}" data-toggle="tab" th:class="@{${!#strings.isEmpty(menu.target) && menu.target == 'menuBlank'} ? 'menuBlank' : 'menuItem noactive'}" th:href="@{${menu.url}}">
+                            <i th:class="${menu.icon}"></i> <span>[[${menu.menuName}]]</span>
+                        </a>	
+                        <a th:if="${not #lists.isEmpty(menu.children)}" data-toggle="tab" th:class="@{${!#strings.isEmpty(menu.target) && menu.target == 'menuBlank'} ? 'menuBlank'}" th:href="@{${!#strings.isEmpty(menu.target) && menu.target == 'menuBlank'} ? @{${menu.url}} : |#menu_${menu.menuId}|}">
+                            <i th:class="${menu.icon}"></i> <span>[[${menu.menuName}]]</span>
+                        </a>
+                    </li>
+	                </th:block>
+	                
+	                <li role="presentation" id="tab_index">
+                      <a data-toggle="tab" href="#index">
+                        <i class="fa fa-area-chart"></i> <span>缁熻鎶ヨ〃</span>
+                      </a>
+                    </li>
+                    
+                    <li role="presentation" id="tab_demo" th:if="${demoEnabled}">
+                      <a data-toggle="tab" href="#demo">
+                        <i class="fa fa-desktop"></i> <span>瀹炰緥婕旂ず</span>
+                      </a>
+                    </li>
+				  </ul>
+				</div>
+                <!-- 鍙充晶鏍� -->
+                <ul class="nav navbar-top-links navbar-right welcome-message">
+                    <li><a data-toggle="tooltip" data-trigger="hover" data-placement="bottom" title="寮�鍙戞枃妗�" href="http://doc.ruoyi.vip/ruoyi" target="_blank"><i class="fa fa-question-circle"></i> 鏂囨。</a></li>
+                    <li><a data-toggle="tooltip" data-trigger="hover" data-placement="bottom" title="閿佸畾灞忓箷" href="javascript:;" id="lockScreen"><i class="fa fa-lock"></i> 閿佸睆</a></li>
+	                <li><a data-toggle="tooltip" data-trigger="hover" data-placement="bottom" title="鍏ㄥ睆鏄剧ず" href="javascript:;" id="fullScreen"><i class="fa fa-arrows-alt"></i> 鍏ㄥ睆</a></li>
+                
+                    <li class="dropdown user-menu">
+						<a href="javascript:void(0)" class="dropdown-toggle" data-hover="dropdown">
+							<img th:src="(${#strings.isEmpty(user.avatar)}) ? @{/img/profile.jpg} : @{${user.avatar}}" th:onerror="this.src='img/profile.jpg'" class="user-image">
+							<span class="hidden-xs">[[${#strings.defaultString(user.userName, '-')}]]</span>
+						</a>
+						<ul class="dropdown-menu">
+							<li class="mt5">
+								<a th:href="@{/system/user/profile}" class="menuItem noactive">
+								<i class="fa fa-user"></i> 涓汉涓績</a>
+							</li>
+							<li>
+								<a onclick="resetPwd()">
+								<i class="fa fa-key"></i> 淇敼瀵嗙爜</a>
+							</li>
+							<li>
+								<a onclick="switchSkin()">
+								<i class="fa fa-dashboard"></i> 鍒囨崲涓婚</a>
+							</li>
+							<li>
+								<a onclick="toggleMenu()">
+								<i class="fa fa-toggle-off"></i> 宸︿晶鑿滃崟</a>
+							</li>
+							<li class="divider"></li>
+							<li>
+								<a th:href="@{logout}">
+								<i class="fa fa-sign-out"></i> 閫�鍑虹櫥褰�</a>
+							</li>
+						</ul>
+					</li>
+                </ul>
+            </nav>
+        </div>
+        <div class="row content-tabs" th:classappend="${#bools.isFalse(tagsView)} ? |hide|">
+            <button class="roll-nav roll-left tabLeft">
+                <i class="fa fa-backward"></i>
+            </button>
+            <nav class="page-tabs menuTabs">
+                <div class="page-tabs-content">
+                    <a href="javascript:;" class="active menuTab" th:data-id="@{/system/main}">棣栭〉</a>
+                </div>
+            </nav>
+            <button class="roll-nav roll-right tabRight">
+                <i class="fa fa-forward"></i>
+            </button>
+            <a href="javascript:void(0);" class="roll-nav roll-right tabReload"><i class="fa fa-refresh"></i> 鍒锋柊</a>
+        </div>
+
+        <a id="ax_close_max" class="ax_close_max" href="javascript:;" title="鍏抽棴鍏ㄥ睆"> <i class="fa fa-times-circle-o"></i> </a>
+
+        <div class="row mainContent" id="content-main" th:classappend="${mainClass}">
+            <iframe class="RuoYi_iframe" name="iframe0" width="100%" height="100%" th:data-id="@{/system/main}"
+                th:src="@{/system/main}" frameborder="0" seamless></iframe>
+        </div>
+        
+        <div th:if="${footer}" class="footer">
+            <div class="pull-right">漏 [[${copyrightYear}]] RuoYi Copyright </div>
+        </div>
+    </div>
+    <!--鍙充晶閮ㄥ垎缁撴潫-->
+</div>
+<!-- 鍏ㄥ眬js -->
+<script th:src="@{/js/jquery.min.js}"></script>
+<script th:src="@{/js/bootstrap.min.js}"></script>
+<script th:src="@{/js/plugins/metisMenu/jquery.metisMenu.js}"></script>
+<script th:src="@{/js/plugins/slimscroll/jquery.slimscroll.min.js}"></script>
+<script th:src="@{/js/jquery.contextMenu.min.js}"></script>
+<script th:src="@{/ajax/libs/blockUI/jquery.blockUI.js}"></script>
+<script th:src="@{/ajax/libs/layer-ruoyi/layer.min.js}"></script>
+<script th:src="@{/ruoyi/js/ry-ui.js?v=4.7.8}"></script>
+<script th:src="@{/ruoyi/js/common.js?v=4.7.8}"></script>
+<script th:src="@{/ruoyi/home.js?v=20201208}"></script>
+<script th:src="@{/ajax/libs/fullscreen/jquery.fullscreen.js}"></script>
+<script th:src="@{/js/resize-tabs.js}"></script>
+<script th:inline="javascript">
+window.history.forward(1);
+var ctx = [[@{/}]]; 
+var lockscreen = [[${session.lockscreen}]]; 
+if(lockscreen){window.top.location=ctx+"lockscreen";}
+// 鐨偆缂撳瓨
+var skin = storage.get("skin");
+// history锛堣〃绀哄幓鎺夊湴鍧�鐨�#锛夊惁鍒欏湴鍧�浠�"#"褰㈠紡灞曠ず
+var mode = "history";
+// 鍘嗗彶璁块棶璺緞缂撳瓨
+var historyPath = storage.get("historyPath");
+// 鏄惁椤电涓庤彍鍗曡仈鍔�
+var isLinkage = true;
+// 鏄惁椤电鍒囨崲婊氬姩鍒伴《閮�
+var isScrollToTop = true;
+
+// 鏈湴涓婚浼樺厛锛屾湭璁剧疆鍙栫郴缁熼厤缃�
+if($.common.isNotEmpty(skin)){
+	$("body").addClass(skin.split('|')[0]);
+	$("body").addClass(skin.split('|')[1]);
+} else {
+	$("body").addClass([[${sideTheme}]]);
+	$("body").addClass([[${skinName}]]);
+}
+
+/* 鐢ㄦ埛绠$悊-閲嶇疆瀵嗙爜 */
+function resetPwd() {
+    var url = ctx + 'system/user/profile/resetPwd';
+    $.modal.open("閲嶇疆瀵嗙爜", url, '770', '380');
+}
+/* 鍒囨崲涓婚 */
+function switchSkin() {
+    layer.open({
+		type : 2,
+		shadeClose : true,
+		title : "鍒囨崲涓婚",
+		area : ["530px", "386px"],
+		content : [ctx + "system/switchSkin", 'no']
+	})
+}
+
+/* 鍒囨崲鑿滃崟 */
+function toggleMenu() {
+	$.modal.confirm("纭瑕佸垏鎹㈡垚宸︿晶鑿滃崟鍚楋紵", function() {
+		$.get(ctx + 'system/menuStyle/default', function(result) {
+            window.location.reload();
+	    });
+	})
+}
+
+/** 鍒锋柊鏃惰闂矾寰勯〉绛� */
+function applyPath(url) {
+	var $dataObj = $('a[href$="' + decodeURI(url) + '"]');
+	$dataObj.click();
+	if (!$dataObj.hasClass("noactive")) {
+	    $dataObj.parent("li").addClass("selected").parents("li").addClass("active").end().parents("ul").addClass("in");
+	}
+	// 椤堕儴鑿滃崟鍚屾澶勭悊
+    var tabStr = $dataObj.parents(".tab-pane").attr("id");
+    if ($.common.isNotEmpty(tabStr)) {
+        var sepIndex = tabStr.lastIndexOf('_');
+        var menuId = tabStr.substring(sepIndex + 1, tabStr.length);
+        $("#tab_" + menuId + " a").click();
+    }
+}
+
+$(function() {
+	var lockPath = storage.get('lockPath');
+	if($.common.equals("history", mode) && window.performance.navigation.type == 1) {
+		var url = storage.get('publicPath');
+	    if ($.common.isNotEmpty(url)) {
+	    	applyPath(url);
+	    } else {
+	    	$(".navbar-toolbar li a").eq(0).click();
+	    }
+	} else if($.common.isNotEmpty(lockPath)) {
+	    applyPath(lockPath);
+	    storage.remove('lockPath');
+	} else {
+		var hash = location.hash;
+	    if ($.common.isNotEmpty(hash)) {
+	        var url = hash.substring(1, hash.length);
+	        applyPath(url);
+	    } else {
+	    	if($.common.equals("history", mode)) {
+	    		storage.set('publicPath', "");
+	    	}
+	    	$(".navbar-toolbar li a").eq(0).click();
+	    }
+	}
+	
+	/* 鍒濆瀵嗙爜鎻愮ず */
+	if([[${isDefaultModifyPwd}]]) {
+		layer.confirm("鎮ㄧ殑瀵嗙爜杩樻槸鍒濆瀵嗙爜锛岃淇敼瀵嗙爜锛�", {
+			icon: 0,
+			title: "瀹夊叏鎻愮ず",
+			btn: ['纭'	, '鍙栨秷'],
+			offset: ['30%']
+		}, function (index) {
+			resetPwd();
+			layer.close(index);
+		});
+	}
+	
+	/* 杩囨湡瀵嗙爜鎻愮ず */
+	if([[${isPasswordExpired}]]) {
+		layer.confirm("鎮ㄧ殑瀵嗙爜宸茶繃鏈燂紝璇峰敖蹇慨鏀瑰瘑鐮侊紒", {
+			icon: 0,
+			title: "瀹夊叏鎻愮ず",
+			btn: ['纭'	, '鍙栨秷'],
+			offset: ['30%']
+		}, function (index) {
+			resetPwd();
+			layer.close(index);
+		});
+	}
+	
+	$("[data-toggle='tooltip']").tooltip();
+});
+</script>
+</body>
+</html>
diff --git a/igds-dzhwk-web/src/main/resources/templates/home.html b/igds-dzhwk-web/src/main/resources/templates/home.html
new file mode 100644
index 0000000..2281111
--- /dev/null
+++ b/igds-dzhwk-web/src/main/resources/templates/home.html
@@ -0,0 +1,304 @@
+<!DOCTYPE html>
+<html lang="zh" xmlns:th="http://www.thymeleaf.org">
+<head>
+    <meta charset="utf-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <meta name="renderer" content="webkit">
+    <title>鏅烘収绮簱缁煎悎绠$悊骞冲彴</title>
+    <!-- 閬垮厤IE浣跨敤鍏煎妯″紡 -->
+    <meta http-equiv="X-UA-Compatible" content="IE=edge">
+    <link th:href="@{favicon.ico}" rel="shortcut icon"/>
+    <link th:href="@{/css/bootstrap.min.css}" rel="stylesheet"/>
+    <link th:href="@{/css/jquery.contextMenu.min.css}" rel="stylesheet"/>
+    <link th:href="@{/css/font-awesome.min.css}" rel="stylesheet"/>
+    <link th:href="@{/css/animate.min.css}" rel="stylesheet"/>
+    <link th:href="@{/css/style.min.css}" rel="stylesheet"/>
+    <link th:href="@{/css/skins.css}" rel="stylesheet"/>
+    <link th:href="@{/ruoyi/css/ry-ui.css?v=4.7.8}" rel="stylesheet"/>
+</head>
+<body class="fixed-sidebar full-height-layout gray-bg" th:classappend="${isMobile} ? 'canvas-menu'"
+      style="overflow: hidden">
+<div id="wrapper">
+
+    <!--宸︿晶瀵艰埅寮�濮�-->
+    <nav class="navbar-default navbar-static-side" role="navigation">
+        <div class="nav-close">
+            <i class="fa fa-times-circle"></i>
+        </div>
+        <a th:href="@{/dzhwk/index}">
+            <li class="logo hidden-xs">
+                <span class="logo-lg">鐢靛瓙璐т綅鍗$郴缁�</span>
+            </li>
+        </a>
+        <div class="sidebar-collapse">
+            <ul class="nav" id="side-menu">
+                <li>
+                    <div class="user-panel">
+                        <a class="menuItem noactive" title="涓汉涓績" th:href="@{/system/user/profile}">
+                            <div class="hide" th:text="涓汉涓績"></div>
+                            <div class="pull-left image">
+                                <img th:src="(${#strings.isEmpty(user.avatar)}) ? @{/img/profile.jpg} : @{${user.avatar}}"
+                                     th:onerror="this.src='img/profile.jpg'" class="img-circle" alt="User Image">
+                            </div>
+                        </a>
+                        <div class="pull-left info">
+                            <p>[[${user.loginName}]]</p>
+                            <a href="javascript:;"><i class="fa fa-circle text-success"></i> 鍦ㄧ嚎</a>
+                            <a th:href="@{logout}" style="padding-left:5px;"><i class="fa fa-sign-out text-danger"></i>
+                                娉ㄩ攢</a>
+                        </div>
+                    </div>
+                </li>
+                <li th:each="menu : ${menus}">
+                    <a th:class="@{${!#strings.isEmpty(menu.url) && menu.url != '#'} ? ${menu.target}}"
+                       th:href="@{${#strings.isEmpty(menu.url)} ? |#| : ${menu.url}}"
+                       th:data-refresh="${menu.isRefresh == '0'}">
+                        <i class="fa fa-bar-chart-o" th:class="${menu.icon}"></i>
+                        <span class="nav-label" th:text="${menu.menuName}">涓�绾ц彍鍗�</span>
+                        <span th:class="${#strings.isEmpty(menu.url) || menu.url == '#'} ? |fa arrow|"></span>
+                    </a>
+                    <ul class="nav nav-second-level collapse">
+                        <li th:each="cmenu : ${menu.children}">
+                            <a th:if="${#lists.isEmpty(cmenu.children)}"
+                               th:class="${#strings.isEmpty(cmenu.target)} ? |menuItem| : ${cmenu.target}"
+                               th:utext="${cmenu.menuName}" th:href="@{${cmenu.url}}"
+                               th:data-refresh="${cmenu.isRefresh == '0'}">浜岀骇鑿滃崟
+                            </a>
+                            <a th:if="${not #lists.isEmpty(cmenu.children)}" href="javascript:;">[[${cmenu.menuName}]]
+                                <span class="fa arrow"></span>
+                            </a>
+                            <ul th:if="${not #lists.isEmpty(cmenu.children)}" class="nav nav-third-level">
+                                <li th:each="emenu : ${cmenu.children}">
+                                    <a th:if="${#lists.isEmpty(emenu.children)}"
+                                       th:class="${#strings.isEmpty(emenu.target)} ? |menuItem| : ${emenu.target}"
+                                       th:text="${emenu.menuName}" th:href="@{${emenu.url}}"
+                                       th:data-refresh="${emenu.isRefresh == '0'}">涓夌骇鑿滃崟
+                                    </a>
+                                    <a th:if="${not #lists.isEmpty(emenu.children)}" href="javascript:;">[[${emenu.menuName}]]
+                                        <span class="fa arrow"></span>
+                                    </a>
+                                    <ul th:if="${not #lists.isEmpty(emenu.children)}" class="nav nav-four-level">
+                                        <li th:each="fmenu : ${emenu.children}">
+                                            <a th:if="${#lists.isEmpty(fmenu.children)}"
+                                               th:class="${#strings.isEmpty(fmenu.target)} ? |menuItem| : ${fmenu.target}"
+                                               th:text="${fmenu.menuName}" th:href="@{${fmenu.url}}"
+                                               th:data-refresh="${fmenu.isRefresh == '0'}">鍥涚骇鑿滃崟
+                                            </a>
+                                        </li>
+                                    </ul>
+                                </li>
+                            </ul>
+                        </li>
+                    </ul>
+                </li>
+            </ul>
+        </div>
+    </nav>
+    <!--宸︿晶瀵艰埅缁撴潫-->
+
+    <!--鍙充晶閮ㄥ垎寮�濮�-->
+    <div id="page-wrapper" class="gray-bg dashbard-1">
+        <div class="row border-bottom">
+            <nav class="navbar navbar-static-top" role="navigation" style="margin-bottom: 0">
+                <div class="navbar-header">
+                    <a class="navbar-minimalize minimalize-styl-2" style="color:#FFF;" href="javascript:;"
+                       title="鏀惰捣鑿滃崟">
+                        <i class="fa fa-bars"></i>
+                    </a>
+                </div>
+                <ul class="nav navbar-top-links navbar-right welcome-message">
+                    <li><a data-toggle="tooltip" data-trigger="hover" data-placement="bottom" title="寮�鍙戞枃妗�"
+                           href="http://doc.ruoyi.vip/ruoyi" target="_blank"><i class="fa fa-question-circle"></i>
+                        鏂囨。</a></li>
+                    <li><a data-toggle="tooltip" data-trigger="hover" data-placement="bottom" title="閿佸畾灞忓箷"
+                           href="javascript:;" id="lockScreen"><i class="fa fa-lock"></i> 閿佸睆</a></li>
+                    <li><a data-toggle="tooltip" data-trigger="hover" data-placement="bottom" title="鍏ㄥ睆鏄剧ず"
+                           href="javascript:;" id="fullScreen"><i class="fa fa-arrows-alt"></i> 鍏ㄥ睆</a></li>
+                    <li class="dropdown user-menu">
+                        <a href="javascript:void(0)" class="dropdown-toggle" data-hover="dropdown">
+                            <img th:src="(${#strings.isEmpty(user.avatar)}) ? @{/img/profile.jpg} : @{${user.avatar}}"
+                                 th:onerror="this.src='img/profile.jpg'" class="user-image">
+                            <span class="hidden-xs">[[${#strings.defaultString(user.userName, '-')}]]</span>
+                        </a>
+                        <ul class="dropdown-menu">
+                            <li class="mt5">
+                                <a th:href="@{/system/user/profile}" class="menuItem noactive">
+                                    <i class="fa fa-user"></i> 涓汉涓績</a>
+                            </li>
+                            <li>
+                                <a onclick="resetPwd()">
+                                    <i class="fa fa-key"></i> 淇敼瀵嗙爜</a>
+                            </li>
+                            <li>
+                                <a onclick="switchSkin()">
+                                    <i class="fa fa-dashboard"></i> 鍒囨崲涓婚</a>
+                            </li>
+                            <li>
+                                <a onclick="toggleMenu()">
+                                    <i class="fa fa-toggle-off"></i> 妯悜鑿滃崟</a>
+                            </li>
+                            <li class="divider"></li>
+                            <li>
+                                <a th:href="@{logout}">
+                                    <i class="fa fa-sign-out"></i> 閫�鍑虹櫥褰�</a>
+                            </li>
+                        </ul>
+                    </li>
+                </ul>
+            </nav>
+        </div>
+        <div class="row content-tabs" th:classappend="${#bools.isFalse(tagsView)} ? |hide|">
+            <button class="roll-nav roll-left tabLeft">
+                <i class="fa fa-backward"></i>
+            </button>
+            <nav class="page-tabs menuTabs">
+                <div class="page-tabs-content">
+                    <a href="javascript:;" class="active menuTab" th:data-id="${welcomeUrl}">娆㈣繋</a>
+                </div>
+            </nav>
+            <button class="roll-nav roll-right tabRight">
+                <i class="fa fa-forward"></i>
+            </button>
+            <a href="javascript:void(0);" class="roll-nav roll-right tabReload"><i class="fa fa-refresh"></i> 鍒锋柊</a>
+        </div>
+
+        <a id="ax_close_max" class="ax_close_max" href="javascript:;" title="鍏抽棴鍏ㄥ睆"> <i
+                class="fa fa-times-circle-o"></i>
+        </a>
+
+        <div class="row mainContent" id="content-main" th:classappend="${mainClass}">
+            <iframe class="RuoYi_iframe" name="iframe0" width="100%" height="100%" th:data-id="${welcomeUrl}"
+                    th:src="${welcomeUrl}" frameborder="0" seamless></iframe>
+        </div>
+
+        <div th:if="${footer}" class="footer">
+            <div class="pull-right">漏 [[${copyrightYear}]]-[[${support}]]</div>
+        </div>
+    </div>
+    <!--鍙充晶閮ㄥ垎缁撴潫-->
+</div>
+<!-- 鍏ㄥ眬js -->
+<script th:src="@{/js/jquery.min.js}"></script>
+<script th:src="@{/js/bootstrap.min.js}"></script>
+<script th:src="@{/js/plugins/metisMenu/jquery.metisMenu.js}"></script>
+<script th:src="@{/js/plugins/slimscroll/jquery.slimscroll.min.js}"></script>
+<script th:src="@{/js/jquery.contextMenu.min.js}"></script>
+<script th:src="@{/ajax/libs/blockUI/jquery.blockUI.js}"></script>
+<script th:src="@{/ajax/libs/layer-ruoyi/layer.min.js}"></script>
+<script th:src="@{/ruoyi/js/ry-ui.js?v=4.7.8}"></script>
+<script th:src="@{/ruoyi/js/common.js?v=4.7.8}"></script>
+<script th:src="@{/ruoyi/home.js?v=20201208}"></script>
+<script th:src="@{/ajax/libs/fullscreen/jquery.fullscreen.js}"></script>
+<script th:inline="javascript">
+    window.history.forward(1);
+    var ctx = [[@{/}]];
+    var lockscreen = [[${session.lockscreen}]];
+    if (lockscreen) {
+        window.top.location = ctx + "lockscreen";
+    }
+    // 鐨偆缂撳瓨
+    var skin = storage.get("skin");
+    // history锛堣〃绀哄幓鎺夊湴鍧�鐨�#锛夊惁鍒欏湴鍧�浠�"#"褰㈠紡灞曠ず
+    var mode = "history";
+    // 鍘嗗彶璁块棶璺緞缂撳瓨
+    var historyPath = storage.get("historyPath");
+    // 鏄惁椤电涓庤彍鍗曡仈鍔�
+    var isLinkage = true;
+    // 鏄惁椤电鍒囨崲婊氬姩鍒伴《閮�
+    var isScrollToTop = true;
+
+    // 鏈湴涓婚浼樺厛锛屾湭璁剧疆鍙栫郴缁熼厤缃�
+    if ($.common.isNotEmpty(skin)) {
+        $("body").addClass(skin.split('|')[0]);
+        $("body").addClass(skin.split('|')[1]);
+    } else {
+        $("body").addClass([[${sideTheme}]]);
+        $("body").addClass([[${skinName}]]);
+    }
+
+    /* 鐢ㄦ埛绠$悊-閲嶇疆瀵嗙爜 */
+    function resetPwd() {
+        var url = ctx + 'system/user/profile/resetPwd';
+        $.modal.open("閲嶇疆瀵嗙爜", url, '770', '380');
+    }
+
+    /* 鍒囨崲涓婚 */
+    function switchSkin() {
+        layer.open({
+            type: 2,
+            shadeClose: true,
+            title: "鍒囨崲涓婚",
+            area: ["530px", "386px"],
+            content: [ctx + "system/switchSkin", 'no']
+        })
+    }
+
+    /* 鍒囨崲鑿滃崟 */
+    function toggleMenu() {
+        $.modal.confirm("纭瑕佸垏鎹㈡垚妯悜鑿滃崟鍚楋紵", function () {
+            $.get(ctx + 'system/menuStyle/topnav', function (result) {
+                window.location.reload();
+            });
+        })
+    }
+
+    /** 鍒锋柊鏃惰闂矾寰勯〉绛� */
+    function applyPath(url) {
+        $('a[href$="' + decodeURI(url) + '"]').click();
+        if (!$('a[href$="' + url + '"]').hasClass("noactive")) {
+            $('a[href$="' + url + '"]').parent("li").addClass("selected").parents("li").addClass("active").end().parents("ul").addClass("in");
+        }
+    }
+
+    $(function () {
+        var lockPath = storage.get('lockPath');
+        if ($.common.equals("history", mode) && window.performance.navigation.type == 1) {
+            var url = storage.get('publicPath');
+            if ($.common.isNotEmpty(url)) {
+                applyPath(url);
+            }
+        } else if ($.common.isNotEmpty(lockPath)) {
+            applyPath(lockPath);
+            storage.remove('lockPath');
+        } else {
+            var hash = location.hash;
+            if ($.common.isNotEmpty(hash)) {
+                var url = hash.substring(1, hash.length);
+                applyPath(url);
+            } else {
+                if ($.common.equals("history", mode)) {
+                    storage.set('publicPath', "");
+                }
+            }
+        }
+
+        /* 鍒濆瀵嗙爜鎻愮ず */
+        if ([[${isDefaultModifyPwd}]]) {
+            layer.confirm("鎮ㄧ殑瀵嗙爜杩樻槸鍒濆瀵嗙爜锛岃淇敼瀵嗙爜锛�", {
+                icon: 0,
+                title: "瀹夊叏鎻愮ず",
+                btn: ['纭', '鍙栨秷'],
+                offset: ['30%']
+            }, function (index) {
+                resetPwd();
+                layer.close(index);
+            });
+        }
+
+        /* 杩囨湡瀵嗙爜鎻愮ず */
+        if ([[${isPasswordExpired}]]) {
+            layer.confirm("鎮ㄧ殑瀵嗙爜宸茶繃鏈燂紝璇峰敖蹇慨鏀瑰瘑鐮侊紒", {
+                icon: 0,
+                title: "瀹夊叏鎻愮ず",
+                btn: ['纭', '鍙栨秷'],
+                offset: ['30%']
+            }, function (index) {
+                resetPwd();
+                layer.close(index);
+            });
+        }
+        $("[data-toggle='tooltip']").tooltip();
+    });
+</script>
+</body>
+</html>

--
Gitblit v1.9.3